{"version":3,"sources":["global/forms.js","global/icons.js","sessions/mfa.js","sessions/session.js","sessions/sessionAjax.js","components/actionNav.js","components/buttons.js","components/dropdowns.js","components/filters.js","components/form.js","components/inputs.js","components/map.js","components/multiDropdown.js","components/nav.js","components/overlay.js","components/popups.js","components/progress.js","components/tables.js","components/tabs.js","helpers/date-input.js","helpers/date.js","helpers/dom.js","helpers/markerCluster.js","helpers/scrollLock.js","helpers/speech.js","helpers/util.js","modules/Administration/resetPassword.js","modules/Administration/resetPasswordAjax.js","modules/Authorizations/assessmentHistory.js","modules/Authorizations/authorizationLanding.js","modules/Authorizations/authorizations.js","modules/Authorizations/authorizationsAjax.js","modules/Authorizations/newVendorInfo.js","modules/Authorizations/vendorCertification.js","modules/Authorizations/vendorGeneral.js","modules/Authorizations/vendorInfo.js","modules/Authorizations/vendorLocationReview.js","modules/Authorizations/vendorProviderType.js","modules/Authorizations/vendorServices.js","modules/Authorizations/vendorUCR.js","modules/CaseNotes/caseNotes.js","modules/CaseNotes/caseNotesData.js","modules/CaseNotes/caseNotesOverview.js","modules/CaseNotes/caseNotesPhrases.js","modules/CaseNotes/caseNotesReports.js","modules/CaseNotes/caseNotesReviewTable.js","modules/CaseNotes/caseNotesTimer.js","modules/CaseNotes/clipboard.js","modules/CaseNotesOld/caseNotes.js","modules/CaseNotesOld/caseNotesAjax.js","modules/CaseNotesOld/caseNotesTimer.js","modules/CaseNotesOld/documentationTimer.js","modules/CaseNotesOld/editPhrases.js","modules/ConsumerFinances/cfEditAccount.js","modules/ConsumerFinances/ConsumerFinanceAttachments.js","modules/ConsumerFinances/ConsumerFinances.js","modules/ConsumerFinances/ConsumerFinancesAjax.js","modules/ConsumerFinances/NewEntryConsumerFinances.js","modules/covid/checklist.js","modules/covid/checklistActions.js","modules/covid/checklistFields.js","modules/covid/covidAjax.js","modules/covid/covidLanding.js","modules/DayServices/dayServices.js","modules/DayServices/dayServicesAjax.js","modules/Dashboard/dashboard.js","modules/Dashboard/home.js","modules/Dashboard/homeAjax.js","modules/Dashboard/psiLogin.js","modules/ESignatures/esignatures.js","modules/ESignatures/esignaturesAjax.js","modules/Employment/addEditEmployers.js","modules/Employment/Employment.js","modules/Employment/EmploymentAjax.js","modules/Employment/EmploymentInformation.js","modules/Employment/NewEmployment.js","modules/Employment/PositionTask.js","modules/Employment/WagesBenefits.js","modules/Employment/WorkSchedule.js","modules/Forms/forms.js","modules/Forms/formsAjax.js","modules/IncidentTracking/incidentTracking.js","modules/IncidentTracking/incidentTrackingAjax.js","modules/Infal/infal.js","modules/Infal/infalAjax.js","modules/MultiTabs/multiTabs.js","modules/OneSpan/oneSpan.js","modules/OneSpan/oneSpanAjax.js","modules/OOD/employers.js","modules/OOD/OOD.js","modules/OOD/OODAjax.js","modules/Outcomes/addEditOutcomeServices.js","modules/Outcomes/addOutcomes.js","modules/Outcomes/addServicesForm.js","modules/Outcomes/outcomes.js","modules/Outcomes/outcomesAjax.js","modules/Reports/reports.js","modules/Reports/reportsAjax.js","modules/Roster/roster.js","modules/Roster/rosterAjax.js","modules/Roster/rosterWorkflow.js","modules/Scheduling/scheduling.js","modules/Scheduling/schedulingAjax.js","modules/Plan/plan.js","modules/Plan/planAjax.js","modules/Plan/planAttachments.js","modules/Plan/planData.js","modules/Plan/planDates.js","modules/Settings/defaults.js","modules/Settings/defaultsAjax.js","modules/Settings/help.js","modules/Settings/information.js","modules/SimpleMar/simpleMar.js","modules/SimpleMar/simpleMarAjax.js","modules/SingleEntry/timeEntry.js","modules/SingleEntry/timeEntryAjax.js","modules/SingleEntry/timeEntryDetailsPopup.js","modules/Transportation/transportationLanding.js","modules/Transportation/transportationLandingAjax.js","modules/WaitingList/waitingList.js","modules/WaitingList/waitingListAssessment.js","modules/WaitingList/waitingListData.js","modules/WaitingList/waitingListOverview.js","modules/Workflow/workflow.js","modules/Workshop/permissions.js","modules/Workshop/workshop.js","modules/Workshop/workshopAjax.js","helpers/chartJS/Chart.min.js","modules/CaseNotes/archive/Notifications.js","modules/CaseNotes/archive/Tutorial.js","modules/CaseNotes/archive/Validations.js","modules/CaseNotes/components/ConfirmationPopup.js","modules/CaseNotes/components/DateNav.js","modules/CaseNotes/components/RequestVisualizer.js","modules/CaseNotes/components/RosterCard.js","modules/CaseNotes/components/RosterPicker.js","modules/CaseNotes/components/WarningPopup.js","modules/CaseNotes/UI/Attachments.js","modules/CaseNotes/UI/Button.js","modules/CaseNotes/UI/Checkbox.js","modules/CaseNotes/UI/CheckboxGroup.js","modules/CaseNotes/UI/Dialog.js","modules/CaseNotes/UI/Form.js","modules/CaseNotes/UI/Icon.js","modules/CaseNotes/UI/Input.js","modules/CaseNotes/UI/Portrait.js","modules/CaseNotes/UI/Radio.js","modules/CaseNotes/UI/Select.js","modules/CaseNotes/UI/Spinner.js","modules/CaseNotes/UI/Table.js","modules/CaseNotes/UI/Textarea.js","modules/CaseNotes/UI/Toast.js","modules/CaseNotes/utils/DOM.js","modules/CaseNotes/utils/UTIL.js","modules/CaseNotesOld/note/cnAttachment.js","modules/CaseNotesOld/note/insertPhrases.js","modules/CaseNotesOld/note/newNote.js","modules/CaseNotesOld/note/newNoteSSA.js","modules/CaseNotesOld/note/note.js","modules/CaseNotesOld/note/noteSSA.js","modules/CaseNotesOld/note/reviewNote.js","modules/CaseNotesOld/overview/cnFilters.js","modules/CaseNotesOld/overview/notesOverview.js","modules/Dashboard/Absent/absent.js","modules/Dashboard/Absent/absentAjax.js","modules/Dashboard/AdminSingleEntry/adminSingleEntry.js","modules/Dashboard/AdminSingleEntry/adminSingleEntryAjax.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivity.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivityAjax.js","modules/Dashboard/CaseNotesRejected/caseNotesRejected.js","modules/Dashboard/CaseNotesRejected/caseNotesRejectedAjax.js","modules/Dashboard/ConsumerProgressNotes/consumerProgressNotes.js","modules/Dashboard/ConsumerFinances/ConsumerFinances.js","modules/Dashboard/ConsumerFinances/ConsumerFinancesAjax.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessages.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessagesAjax.js","modules/Dashboard/CNCaseLoad/cnCaseLoad.js","modules/Dashboard/CNCaseLoad/cnCaseLoadAjax.js","modules/Dashboard/DayServiceClockedIn/clockedIn.js","modules/Dashboard/DayServiceClockedIn/clockedInAjax.js","modules/Dashboard/HoursWorked/hoursWorked.js","modules/Dashboard/HoursWorked/hoursWorkedAjax.js","modules/Dashboard/IncidentTracking/incidentTracking.js","modules/Dashboard/IncidentTracking/incidentTrackingAjax.js","modules/Dashboard/InfalTimeClock/infalTimeClock.js","modules/Dashboard/InfalTimeClock/infalTimeClockAjax.js","modules/Dashboard/locationNotes/unreadLocationNotesWidget.js","modules/Dashboard/PlanToDoList/planWorkflowWidget.js","modules/Dashboard/RemainingDailyServices/remainingDailyServices.js","modules/Dashboard/RemainingDailyServices/remainingDailyServicesAjax.js","modules/Dashboard/RosterToDoList/RosterToDoList.js","modules/Dashboard/RosterToDoList/RosterToDoListAjax.js","modules/Dashboard/Signatures/missingSignatures.js","modules/Dashboard/Signatures/signaturesAjax.js","modules/Dashboard/Schedule/schedule.js","modules/Dashboard/Schedule/scheduleAjax.js","modules/Dashboard/TimeClock/timeClock.js","modules/Dashboard/TimeClock/timeClockAjax.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCount.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCountAjax.js","modules/IncidentTracking/incident/incident.js","modules/IncidentTracking/incident/newIncident.js","modules/IncidentTracking/incident/permissions.js","modules/IncidentTracking/incident/reviewIncident.js","modules/IncidentTracking/incidentCard/incidentCard.js","modules/IncidentTracking/overview/incidentOverview.js","modules/OOD/Form10/OODFormTransportation.js","modules/OOD/Form4/MonthlyPlacement.js","modules/OOD/Form4/MonthlySummary.js","modules/OOD/Form6/Tier1andJDPlan.js","modules/OOD/Form16/summerYouthWorkExperience.js","modules/OOD/Form16/summerYouthWorkExperienceSummary.js","modules/OOD/Form8/communityBasedAssessment.js","modules/OOD/Form8/communityBasedAssessmentSummary.js","modules/Roster/absent/absent.js","modules/Roster/absent/absentAjax.js","modules/Roster/groups/rosterGroupIndividuals.js","modules/Roster/groups/rosterGroups.js","modules/Roster/groups/rosterGroupsAjax.js","modules/Roster/info/consumerInfo.js","modules/Roster/info/demographics.js","modules/Roster/intellivue/intellivue.js","modules/Roster/notes/locationNotes.js","modules/Roster/notes/locationNotesAjax.js","modules/Roster/notes/progressNotes.js","modules/Roster/notes/progressNotesAjax.js","modules/Scheduling/ApproveRequestOff/schedulingApproveRequest.js","modules/Scheduling/Calendar/schedulingCalendar.js","modules/Scheduling/RequestOff/schedulingRequestTimeOff.js","modules/Plan/assessment/assessment.js","modules/Plan/assessment/assessmentAjax.js","modules/Plan/ISP/ISP.js","modules/Plan/PlanValidation/planValidation.js","modules/Plan/PlanValidation/planValidationAjax.js","modules/Plan/workflow/planWorkflow.js","modules/Settings/widget/widgetSettings.js","modules/Settings/widget/widgetSettingsAjax.js","modules/SingleEntry/Reports/reports.js","modules/SingleEntry/Reports/reportsAjax.js","modules/SingleEntry/Signature/signature.js","modules/SingleEntry/Signature/signatureAjax.js","modules/SingleEntry/TimeEntry/timeEntryCard.js","modules/SingleEntry/TimeEntry/timeEntryEdit.js","modules/SingleEntry/TimeEntry/timeEntryNew.js","modules/SingleEntry/TimeApproval/timeApproval.js","modules/SingleEntry/TimeReview/timeEntryReview.js","modules/Transportation/addRoute/addRoute.js","modules/Transportation/addRoute/addRouteAjax.js","modules/Transportation/manageRoutes/editRoute.js","modules/Transportation/manageRoutes/manageRoutes.js","modules/Transportation/manageRoutes/manageRoutesAjax.js","modules/Transportation/manageRoutes/manageRoutesFilter.js","modules/Transportation/manageRoutes/updatePopup.js","modules/Transportation/myRoutes/myRoute.js","modules/Transportation/myRoutes/myRouteAjax.js","modules/Transportation/myRoutes/selectedRoutePopup.js","modules/Transportation/vehicleInspection/inspectionLanding.js","modules/Transportation/vehicleInspection/reviewInspectionFilter.js","modules/Transportation/vehicleInspection/reviewInspections.js","modules/Transportation/vehicleInspection/vehicleInspection.js","modules/Transportation/vehicleInspection/vehicleInspectionAjax.js","modules/Workflow/Viewer/editResponsibleRelationships.component.js","modules/Workflow/Viewer/editWorkflowStep.component.js","modules/Workflow/Viewer/formsWorkflowStep.component.js","modules/Workflow/Viewer/workflow.component.js","modules/Workflow/Viewer/workflowDocument.component.js","modules/Workflow/Viewer/workflowGroup.component.js","modules/Workflow/Viewer/workflows.component.js","modules/Workflow/Viewer/workflowStep.component.js","modules/Workflow/Viewer/workflowViewer.ajax.js","modules/Workflow/Viewer/workflowViewer.component.js","modules/IncidentTracking/incidentCard/sections/consumerSectionNew.js","modules/IncidentTracking/incidentCard/sections/detailsSection.js","modules/IncidentTracking/incidentCard/sections/employeeSection.js","modules/IncidentTracking/incidentCard/sections/peopleSection.js","modules/Plan/assessment/assessmentCard/assessmentCard.js","modules/Plan/assessment/assessmentCard/questionsAndAnswers.js","modules/Plan/assessment/assessmentCard/tableOfContents.js","modules/Plan/ISP/ConsentAndSign/assignCaseload.js","modules/Plan/ISP/ConsentAndSign/consentAndSign.js","modules/Plan/ISP/ConsentAndSign/consentAndSignAjax.js","modules/Plan/ISP/ConsentAndSign/relationships.js","modules/Plan/ISP/ConsentAndSign/salesforce.js","modules/Plan/ISP/ConsentAndSign/signature.js","modules/Plan/ISP/ConsentAndSign/teamMember.js","modules/Plan/ISP/ConsentAndSign/vendor.js","modules/Plan/ISP/ContactInformation/contactInformation.js","modules/Plan/ISP/ContactInformation/contactInformationAjax.js","modules/Plan/ISP/ContactInformation/importantPeople.js","modules/Plan/ISP/ContactInformation/importantPlaces.js","modules/Plan/ISP/ContactInformation/inportantGroups.js","modules/Plan/ISP/Introduction/introduction.js","modules/Plan/ISP/Introduction/introductionAjax.js","modules/Plan/ISP/Outcome/outcomes.js","modules/Plan/ISP/Outcome/outcomesAjax.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasures.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasuresAjax.js","modules/Plan/ISP/ServicesSupports/servicesSupports.js","modules/Plan/ISP/ServicesSupports/servicesSupportsAjax.js","modules/Plan/ISP/Summary/Summary.js","modules/Plan/ISP/Summary/SummaryAjax.js","modules/Settings/widget/cnCaseLoadSettings/cnCaseLoadSettings.js","modules/Settings/widget/wfPlanSettings/wfPlanSettings.js","modules/Settings/widget/cnProductivitySettings/cnProductivitySettings.js","modules/Settings/widget/cnProductivitySettings/cnProductivitySettingsAjax.js","modules/Settings/widget/cnRejectedSettings/cnRejectedSettings.js","modules/Transportation/myRoutes/routeDocumentation/consumerCard.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentation.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentationAjax.js","modules/IncidentTracking/incidentCard/sections/consumerSection/consumersSection.js","modules/IncidentTracking/incidentCard/sections/consumerSection/consumerSubSections.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/behavior.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/followUp.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/injuries.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/intervention.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/involvement.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/reporting.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/review.js"],"names":["form","build","options","formInputs","formElements","document","createElement","forEach","fi","tag","INPUT","input","opts","appendChild","SELECT","dropdown","tmpReports","init","DOM","clearActionCenter","label","type","style","reportForm","formStyle","ACTIONCENTER","icons","attachment","absent","add","arrowBack","arrowNext","bell","calendar","camera","car","checkmark","clear","close","copy","edit","delete","deSelectAll","download","drag","eraser","error","ellipsis","filter","help","info","keyArrowRight","keyArrowLeft","keyArrowUp","keyArrowDown","message","multiSelect","no","note","openNew","outcomeNew","passwordShow","passwordHide","people","save","search","stamp","warning","refresh","selectAll","show","send","thumbUp","thumbDown","thumbUpDown","microphone","microphoneFilled","medicineBottle","peopleGroup","PDFForm","attachmentSmall","phone","Empty","Email","Delete","Gear","PDFFormWhite","workflow","mfa","mfaPopup","submitBtn","codeInput","messageArea","buildPopup","mainElement","getElementsByTagName","POPUP","header","id","hideX","button","text","callback","submitCode","cancelBtn","removeChild","overlay","hide","bodyScrollLock","enableBodyScroll","body","overflow","btnWrap","classList","disableBodyScroll","overlayElement","querySelector","zIndex","top","eventListeners","setTimeout","firstChild","focus","innerHTML","pleaseWait","textAlign","innerText","code","value","trim","authenticatedLogin","addEventListener","event","key","mfaReject","errorReason","clearUNPW","errorMessage","remove","errorBox","display","setAttribute","unInput","getElementById","pwInput","select","$","session","firstRunShit","ViewMyInformation","UpdateMyInformation","DayServiceView","DayServiceInsert","DayServiceUpdate","DayServiceDelete","DayServiceNonBillable","DayServiceOverRide","DenyStaffClockUpdate","DenyClockUpdate","DemographicsView","DemographicsUpdate","DemographicsBasicDataView","DemographicsRelationshipsView","DemographicsPictureUpdate","DemographicsPictureDelete","DemographicsNotesView","DemographicsViewAttachments","viewLocationSchedulesKey","DemographicsViewDOB","DemographicsViewMedicaid","DemographicsViewMedicare","DemographicsViewResident","DemographicsViewSSN","DemographicsViewLocalId","DemographicsViewConsumerNumber","GoalsView","GoalsUpdate","InsertOutcomes","UpdateOutcomes","InsertServices","UpdateServices","CaseNotesView","CaseNotesTablePermissionView","CaseNotesViewEntered","CaseNotesUpdate","CaseNotesUpdateEntered","CaseNotesCaseloadRestriction","CaseNotesSSANotes","SingleEntryView","SingleEntryUpdate","anywhereMainPermission","WorkshopView","WorkshopUpdate","isCurrentlySingleEntry","groupNoteId","caseNoteEditSecond","caseNoteLocationCodePreference","caseNoteLocationNamePreference","caseNoteNeedCodePreference","caseNoteNeedNamePreference","caseNoteServiceCodePreference","caseNoteServiceNeedPreference","caseNoteBillingCodeCodePreference","caseNoteBillingCodeNamePreference","caseNoteBillingCodeServiceFundingPreference","caseNoteDisplayGroupNoteDivPreference","caseNoteDisplayGroupNoteCheckedPreference","locationRequiredCheck","serviceRequiredCheck","needRequiredCheck","contactRequiredCheck","vendorRequiredCheck","caseNoteListResponse","vendorFlag","groupConsumerCount","consumersForGroupCounter","timeOverlapConsumers","overlapNoteIds","consumerIdArray","caseNoteConsumerId","caseNoteTimeCheck","groupNamesExist","existingGroupNoteIdForUpdate","startTimeForGroupNoteUpdateCompare","endTimeForGroupNoteUpdateCompare","serviceDateForGroupNoteUpdateCompare","serviceOrBillingCodeForGroupNoteUpdateCompare","caseNotePreferencesSet","consumerEditId","updateAllGroupDropDowns","isSingleEdit","changeFromSingleToGroupNote","editingConsumerId","dontLoadAppAfterDelete","consumerGroupCount","groupSaveCounter","editOnLoad","groupOverlapCheckCounter","overlapScreenLock","UpdateCaseNotesDocTime","batchedNoteEdit","groupNoteAttemptWithDocTime","sendToDODD","sendToPortal","dobString","defaultIncidentTrackingDaysBack","editNoteMileageOnLoadFlag","SEViewAdminWidget","ciBShow","singleEntry15minDoc","Roster","Name","LName","isAdmin","PeopleId","StaffLocId","UserId","Token","Error","ver","browser","browserVer","OS","locations","locationids","lastMenuSelection","Date","defaultDayServiceLocation","dsCertified","defaultDayServiceLocationFlag","defaultRosterLocation","defaultRosterLocationFlag","defaultStaffLocation","defaultDayServiceLocationName","defaultWorkshopLocation","defaultWorkshopLocationValue","defaultRosterLocationName","defaultRosterGroupValue","defaultDSTimeClockValue","defaultDSTimeClockName","defaultMoneyManagementLocation","defaultMoneyManagementLocationValue","areInSalesForce","RosterDeleteAbsent","defaultStaffLocationName","selectedLocation","strongPassword","selectedGroupId","deletedGroupId","changePasswordLinkSelected","advancedPasswordLength","dsLocationHistoryFlag","dsLocationHistoryValue","initialTimeOut","initialTimeIn","singleLoadedConsumerId","passwordSpecialCharacters","daysBackGoalsEdit","singleLoadedConsumerName","serviceStartDate","serviceEndDate","defaultCaseNoteReviewDays","defaultProgressNoteReviewDays","defaultProgressNoteChecklistReviewDays","countCheck","applicationName","viewableGoalTypeIds","outcomesPermission","dayServicesPermission","caseNotesPermission","singleEntryPermission","workshopPermission","intellivuePermission","passwordResetPermission","anywhereResetPasswordPermission","anywhereConsumerFinancesPermission","anywhereEmploymentPermission","selectedConsumerIdForGoalsDateBack","caseNoteEdit","consumerIdToEdit","planPeopleId","showDynamic","singleEntryUseServiceLocations","editCaseNoteId","updateEmail","tempServiceFunding","usePersonalPrefernces","defaultSeviceId","defaultSeviceName","useSessionFilterVariables","filterServiceStart","filterServiceEnd","filterDateEnteredStart","filterDateEnteredEnd","filterBillerId","filterBillerName","groupAddOnNames","intellivueSessionID","singleEntryApproveEnabled","anAdmin","ViewAdminSingleEntry","communityIntegrityRequired","singleEntryAddConsumersOnBillable","workshopBatchId","infiniteLoopFlag","incidentTrackingPermission","singleEntryLocationRequired","SingleEntryEditTimeEntry","singleEntryGottenById","singleEntrycrossMidnight","incidentTrackingView","incidentTrackingViewPerm","incidentTrackingReviewedBy","incidentTrackingUpdate","incidentTrackingInsert","incidentTrackingDelete","incidentTrackingViewCaseLoad","defaultIncidentTrackingReviewDays","incidentTrackingPopulateIncidentDate","incidentTrackingPopulateIncidentTime","incidentTrackingPopulateReportedDate","incidentTrackingPopulateReportedTime","incidentTrackingEmailIncident","infalHasConnectionString","isPSI","anywhereMinutestotimeout","useAbsentFeature","useProgressNotes","singleEntryEditLocationHack","HideProgressNotes","firstLoad","portraitPath","isASupervisor","seAdminRemoveMap","removeGoalsWidget","createTimeEntries","changeEmailSent","geoLocationPosition","evvDataCache","singleEntryShowConsumerSignature","singleEntryShowConsumerNote","schedulingUpdate","schedulingView","schedulingStartDayOfWeek","schedAllowCallOffRequests","schedRequestOpenShifts","hideAllScheduleButton","authorizationsView","authorizationsVendorInfoView","planUpdate","planDelete","planView","planInsertNewTeamMember","planAssignCaseload","downloadPlans","planSignatureUpdateDOB","planSignatureUpdateBuildingNumber","planClearSignature","waitingListInsert","waitingListView","waitingListUpdate","waitingListDelete","transportationUpdate","transportationView","transportationManageRoute","transportationAddRoute","emarView","sttEnabled","formsDelete","formsInsert","formsUpdate","formsView","formsCaseload","formsFormtype","OODDelete","OODInsert","OODUpdate","OODView","CFDelete","CFInsert","CFUpdate","CFView","CFADDPayee","CFEditAccountEntries","CFInsertAccounts","CFUpdateEditAccounts","CFViewEditAccounts","CFViewChecking","CFViewCraditCard","CFViewFoodStamp","CFViewPettyCash","CFViewShaving","CFViewChristmasClub","CFViewSystem20183A","CFViewSystem20183","CFViewOhioEBT","CFViewViewFoodStampDebitCardEBT","ResetPasswordView","ResetPasswordUpdate","EmploymentView","EmploymentUpdate","EmploymentDelete","InsertEmployers","UpdateEmployers","consumerId","sendWaitingListEmail","version","stateAbbreviation","deviceGUID","azureSTTApi","isActiveUsers","activeModule","billableTransportation","ohioEVVChangeDate","anyRequireEndTime","window","resize","setDefaultLoc","createCookie","saveDefaultLocationValueAjax","name","days","date","setTime","getTime","expires","toGMTString","test","escape","cookie","readCookie","nameEQ","ca","split","i","length","c","charAt","substring","indexOf","unescape","eraseCookie","setSessionVariables","cookieInnards","permissionString","tmpWindows","tmpWindow","window_name","tmpPerm","permission","tmpSpec","special_data","removeClass","push","replace","toLowerCase","ProductName","toUpperCase","informationMenuBtn","setSession","each","getUserPermissions","setInterval","tokenCheck","checkforErrors","xmlReturn","retVal","ErrorText","setCookieOnFail","location","href","checkForErrors","errorXml","css","customPasswordChangeClick","customPasswordChange","setUpPasswordResetMessages","res","success","html","r","reset","toResetPage","resetPasswordClick","backToLoginPage","reload","BrowserDetect","searchString","dataBrowser","searchVersion","navigator","userAgent","appVersion","dataOS","data","dataString","string","dataProp","prop","versionSearchString","versionSearch","identity","subString","index","parseFloat","vendor","opera","platform","convertMilitaryTimeToAMPM","inputTime","hour","minute","amPM","convertedTime","isNaN","x","String","overClicky","now","outStr","getHours","getMinutes","getSeconds","last","lastStr","compared","Math","abs","prototype","startsWith","str","IsPasswordStrong","password","preSpecialCharCheckString","replaceAll","specCharNoCommas","withCommas","join","separator","specChar","RegExp","match","checkChangePasswordLoginValues","user","pass","pass1","pass2","checkPass","specialCharDisplay","monthNames","getMonthName","getMonth","getShortMonthName","substr","setDefaultValue","stopPropagation","mySrc","srcElement","parents","typeName","switchCase","saveDefaultLocationNameAjax","getConsumerGroups","tabletFocus","inputId","target","customTextVersionWork","customText","checkVersions","updateVersionAjax","getFormattedTime1","fullDate","hours","toString","min","time","getAMPM","ampm","allowAccess","testInt","checkModulePermissions","addClass","disableModules","anywhereSchedulingPermission","covidPermission","transportationPermission","emarPermission","formsPermission","OODPermission","anywherePlanPermission","setUpAdminPermissions","generateURL","endPoint","webServer","protocol","address","port","serviceName","logIn","loginBtn","userId","val","localDeviceId","UTIL","LS","getStorage","insertData","hash","crypt","method","source","deviceId","ajax","url","JSON","stringify","contentType","beforeSend","dataType","response","status","xhr","resXML","getLogInResult","parseXml","windowName","count","loginWarningPopup","okButton","username","is","hasClass","complete","logInChangePassword","patchIt","strongPasswordValue","passwordInfo","setESignaturesMessage","sendCode","newCode","sendBtn","textContent","backgroundColor","position","Promise","resolve","reject","geolocation","getCurrentPosition","latitude","longitude","coords","generatedCodeSuccessfully","_UTIL","fetchData","tempUserId","generateAuthenticationCodeResult","updateHTMLAfterCodeSent","newCodeMessageDiv","popupMessageText","console","params","URLSearchParams","get","loginMessageData","redactedName","getSignerLoginMessageDataResult","maskedFirstName","maskedLastName","signerEmail","tempUserEmail","messageDiv","classNames","verifyCodeBtnWrap","sendCodeAgainBtn","verifyBtn","checkVerificationCode","passwordInput","hashedPassword","codeVerification","verifyESignLoginResult","esignatures","errorMessageDiv","getCustomLoginTextAndVersion","getCustomTextAndAnywhereVersionResult","changeIt","changeBtn","newPW","passwordChangeError","inactiveUser","passwordReuseError","activeElement","blur","passwordChangeConfPOPUP","okBtn","width","marginBottom","resetIt","postError","errNum","errMsg","errLvl","d","curr_month","strDate","getDate","getFullYear","locationId","locationName","checkLogin","checkInfalConnectionAjax","CheckInfalConnectionResult","infalOnly","dashboard","load","getUserPermissionsResult","caseNotesPerm","find","obj","supervisorPerm","docTimePerm","caseNoteDocTimePerm","adminSEPerm","featureLogging","appName","featureDescription","getDefaultAnywhereSettings","getDefaultAnywhereSettingsJSONResult","admistrator","setting_value","notes_days_back","incidentTracking_days_back","checklist_days_back","minutesToTimeout","removeSEAdminMap","watchingConnection","azureSttApi","reportSeconds","incidentTrackingShowCauseAndContributingFactors","incidentTrackingShowPreventionPlan","updateIncidentSummaryText","appendITSummary","updateIncidentActionText","appendITImmediateAction","updateIncidentPreventionText","appendITPreventionPlan","updateIncidentCauseText","appendITCause","planFormCarryover","application","schedulingPermission","webPermission","seShowConsumerSignature","seShowConsumerNote","singleEntryShowTransportation","seShowTransportation","allowCallOffRequests","requestOpenShifts","oneSpan","defaultrosterlocation","defaultrosterlocationname","defaultrostergroup","defaultdayservicelocation","defaultdayservicelocationname","defaulttimeclocklocation","defaulttimeclocklocationName","defaultworkshoplocation","defaultworkshoplocationname","defaultMoneyManagementLocationName","caseNotesWarningStartTime","warningStartTime","caseNotesWarningEndTime","warningEndTime","defaultRosterLocationValue","defaultDayServiceLocationValue","defaultTimeClockLocationValue","defaultTimeClockLocationName","defaulttimeclocklocationname","defaultWorkshopLocationName","defaultRosterGroupName","defaultrostergroupname","loadApp","userName","genKey","authenticatedLoginResult","setStorage","ACTION_NAV","nav","setColumns","populate","elements","ele","handleNavEvents","dataset","actionNav","actioncenter","activeSection","newNote","handleActionNavEvent","newNoteSSA","reviewNote","dayServices","outcomes","newIncident","rosterAbsent","rosterGroupIndividuals","roster","timeEntryCard","timeEntryReview","timeApproval","workshop","assessmentHistory","authorizations","plan","covidChecklist","TRANS_routeDocumentation","TRANS_manageEditRoute","TRANS_addRoute","forms","OOD","resetPassword","ConsumerFinances","CFEditAccount","Employment","miniRosterBtn","icon","iconPos","toggle","btnText","toggled","toggleText","Array","isArray","attributes","att","tabindex","tabIndex","dropdownId","className","readonly","wrap","e","selectedOption","selectedIndex","notch","inlineBuild","span","hiddenDropdown","hidOpt","defaultVal","option","a","groupingPopulate","opt","nonGroupedData","group","groupLabel","groupId","dropdownValues","charLimit","tab","accept","pointerEvents","callbackType","onBlurCallback","characterCount","undefined","initialLength","checkOverLimit","handleEvents","forceCharLimit","sttBtn","azureSTTConnection","stt","SPEECH","addSTTContinuousRecEvent","eyeBtn","preventDefault","togglePasswordVisibility","buildCheckbox","checkbox","isChecked","isDisabled","buildNativeCheckbox","buildRadio","radio","checked","disableInputField","element","inputEle","nodeName","parentElement","radios","querySelectorAll","enableInputField","removeAttribute","passwordToggleBtn","isVisible","getAttribute","GOOGLE_MAP","map","bounds","markerCluster","insertLocation","mapElement","clearMap","initMap","zoom","center","markers","google","maps","Map","maxZoom","fullscreenControl","latLngObj","markerArray","Marker","marker","infoWindow","InfoWindow","content","markerLabels","addListener","open","MarkerClusterer","imagePath","fitBounds","panToBounds","calcCenter","pos1","pos2","geometry","spherical","interpolate","createBoundry","array","LatLngBounds","pos","extend","createLatLngObj","LatLng","createMarkerArray","el","createMarkerLabel","displayText","MarkerLabel","multiDropdown","activeDropdownOptions","optionAddedFunction","optionRemovedFunction","optionAddedCallback","optionRemovedCallback","multiple","menu","contains","dd","noOptions","warn","multiOption","buildChip","chip","prepend","getActiveOptions","NAVIGATION","NAV_MOBILE","MODULE_MENU","UTIL_MENU","mobileNav","handleNavClick","moduleMenu","utilMenu","isNavItem","currentlyOpen","targetMenu","subMenu","slice","call","gridContainer","elementsWithClass","handleMenuClick","loadModule","simpleMar","simpleMarLogin","currToggleState","addAttr","removeAttr","utilMenuBtn","modalOverlay","getElementsByClassName","mainMenu","defaultsMenu","informationMenu","settings","widgetSettingsMenu","helpMenu","action","win","defaults","buildPage","widgetSettings","information","MINI_MODULE_MENU","menuClone","cloneNode","menuHeader","menuInner","insertBefore","multiTabs","newTabOpen","isIE","popup","parent","onChangeCallback","closePopBtn","closeCallback","modal","background","appendTo","removeFrom","successfulSave","noPopup","sspopup","asPopup","removeOverlay","successfulSavePopup","failSave","failSavePopup","pendingSave","spinnerWrap","spinnerMessage","spinnerBar","fulfill","PROGRESS","_show","progressBar","removeProperty","_hide","SPINNER","newSpinner","spinnerMessageElement","speed","PROGRESS__ANYWHERE","insertElement","containingElement","smallSpinnerWrap","smallSpinnerBar","PROGRESS__BTN","btnSpinnerWrap","buttonTextCache","btnElement","cache","set","clientWidth","table","tableBody","tableId","sortable","Sortable","handle","draggable","onSort","evt","onSortCallback","oldIndex","newIndex","row","item","plain","headline","headerRow","td","columnHeadings","heading","endIcon","endIconHeading","secondendIcon","secondendIconHeading","allowCopy","isSortable","disabled","overlap","hasError","onClick","cell","values","v","endIconCallback","secondendIconCallback","onCopyClick","addRows","rowData","updateRows","rowId","oldRow","newRow","replaceChild","deleteRow","getRowCount","tableRows","sortTableByHeader","headers","directions","from","sortColumn","transform","parse","direction","multiplier","rows","newRows","sort","rowA","rowB","cellA","childNodes","cellB","b","tabs","active","tabWrap","tabNav","tabBody","sections","sec","navItem","section","secClass","activeTab","targetSection","tabNavCallback","TABS","buildTabs","buildTabsNav","tabsNav","buildTabsBody","tabsBody","buildNavItem","navText","isActive","ISPValidationCheck","planValidation","returnIspValidation","assessmentValidationCheck","returnAssessmentValidationData","navAlertDiv","createTooltip","contactSectionComplete","summaryRisksValidation","buildTabSection","sectionMarkup","tabSection","tabsData","markup","targetTab","targetTabIndex","targetSectionId","navOnClick","toggleNavStatus","t","exports","module","define","amd","n","o","loaded","m","p","__esModule","addPickerToOtherInputs","supportsDateInput","addPickerToDateInputs","Object","defineProperty","self","Function","__g","hasOwnProperty","f","u","TypeError","Symbol","store","__e","s","l","F","G","h","S","y","P","B","W","g","arguments","apply","virtual","R","U","keys","enumerable","configurable","writable","random","concat","propertyIsEnumerable","ceil","floor","valueOf","M","w","O","D","k","T","_","A","E","j","C","N","entries","src","contentWindow","write","create","defineProperties","getOwnPropertyNames","getOwnPropertySymbols","setDate","getDay","getTimezoneOffset","setHours","masks","ddd","i18n","dayNames","dddd","mm","mmm","mmmm","yy","yyyy","hh","H","HH","MM","ss","L","round","tt","TT","Z","pop","shortDate","mediumDate","longDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","expiresHeaderFormat","locale","format","localeText","getLocaleText","valueAsDate","valueAsNumber","NaN","attachTo","keyCode","pingInput","sync","months","today","ja","thePicker","isOpen","container","year","createRangeSelect","setYear","refreshDaysMatrix","month","setMonth","setInput","daysHead","hasAttribute","parseInt","removeClickOut","parentNode","removeBlur","removeEventListener","onpopstate","getBoundingClientRect","height","documentElement","scrollTop","right","left","scrollLeft","refreshLocale","absoluteDate","Event","createEvent","initEvent","dispatchEvent","constructor","next","done","isExtensible","preventExtensions","NEED","KEY","fastKey","getWeak","onFreeze","getOwnPropertyDescriptor","getPrototypeOf","charCodeAt","max","_t","_i","_k","Arguments","J","I","Y","z","QObject","findChild","iterator","K","V","q","Q","X","et","nt","keyFor","useSetter","useSimple","refs","parts","media","sourceMap","insertAt","nextSibling","splice","rel","singleton","bind","URL","createObjectURL","revokeObjectURL","Blob","btoa","styleSheet","cssText","createTextNode","encodeURIComponent","head","Boolean","locals","dates","toDate","argument","argStr","toInteger","dirtyNumber","number","Number","cloneDate","isValid","dirtyDate","leadingZero","num","getTodaysDateObj","todaysDate","getTodaysDateISOString","getDaysInMonth","monthIndex","lastDayOfMonth","setFullYear","addDays","dirtyAmount","amount","addWeeks","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","addYears","subDays","subWeeks","subYears","endOfWeek","dirtyOptions","weekStartsOn","RangeError","day","diff","startDayOfWeek","util","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","isDateInCurrentWeek","currentDate","curentWeekStart","curentWeekEnd","isDateInFuture","checkFormat","dateString","isoFormatPattern","standardFormatPattern","formatISO","originalDate","representation","result","tzOffset","dateDelimiter","timeDelimiter","offset","absoluteOffset","hourOffset","minuteOffset","sign","second","formateToISO","splitBy","YYYY","DD","formateToStandard","joinBy","shorten","shortenYear","eachDayOfInterval","interval","startDate","start","endDate","end","endTime","step","convertFromMilitary","amPm","convertToMilitary","timeString","formatSecondsToFullTime","totalSeconds","minutes","seconds","padNumberWithZero","getMilitaryTimeDifference","startTime","timeDifference","totalMinutes","formattedTime","removeTimestamp","splitDate","BODY","GRID_CONTAINER","autosizeTextarea","textarea","textareas","area","scrollHeight","toggleHeaderOpacity","toggleNavLayout","isMobile","actionBtn","requestAnimFrame","cb","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","scrollToTopOfPage","opt_markers","opt_options","OverlayView","map_","MARKER_CLUSTER_IMAGE_PATH_","MARKER_CLUSTER_IMAGE_EXTENSION_","markers_","clusters_","sizes","styles_","ready_","zIndex_","MAX_ZINDEX","gridSize_","minClusterSize_","maxZoom_","imagePath_","imageExtension_","zoomOnClick_","averageCenter_","setupStyles_","setMap","prevZoom_","getZoom","that","minZoom","mapTypes","getMapTypeId","resetViewport","redraw","addMarkers","obj1","obj2","object","property","onAdd","setReady_","draw","size","fitMapToMarkers","getMarkers","getPosition","setZIndex","getZIndex","setStyles","styles","getStyles","isZoomOnClick","isAverageCenter","getTotalMarkers","setMaxZoom","getMaxZoom","calculator_","numStyles","dv","setCalculator","calculator","getCalculator","opt_nodraw","pushMarkerTo_","isAdded","repaint","addMarker","removeMarker_","removeMarker","removed","removeMarkers","markersCopy","ready","createClusters_","getTotalClusters","getMap","getGridSize","setGridSize","getMinClusterSize","setMinClusterSize","getExtendedBounds","projection","getProjection","tr","getNorthEast","lat","lng","bl","getSouthWest","trPix","fromLatLngToDivPixel","blPix","ne","fromDivPixelToLatLng","sw","isMarkerInBounds_","clearMarkers","opt_hide","cluster","oldClusters","distanceBetweenPoints_","p1","p2","dLat","PI","dLon","sin","cos","atan2","sqrt","addToClosestCluster_","distance","clusterToAddTo","getCenter","isMarkerInClusterBounds","newCluster","Cluster","mapBounds","getBounds","markerClusterer","markerClusterer_","center_","bounds_","clusterIcon_","ClusterIcon","isMarkerAlreadyAdded","calculateBounds_","len","updateIcon","getMarkerClusterer","getSize","mz","sums","setCenter","setSums","opt_padding","padding_","cluster_","div_","sums_","visible_","triggerClusterClick","clusterBounds","trigger","getPosFromLatLng_","createCss","panes","getPanes","overlayMouseTarget","addDomListener","latlng","width_","height_","onRemove","text_","index_","useStyle","url_","textColor_","anchor_","textSize_","backgroundPosition_","backgroundPosition","txtColor","txtSize","global","factory","mod","_toConsumableArray","arr","arr2","hasPassiveEvents","passiveTestOptions","passive","isIosDevice","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","some","lock","rawEvent","touches","setOverflowHidden","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","paddingRight","restoreOverflowSetting","isTargetElementTotallyScrolled","targetElement","clientHeight","handleScroll","clientY","targetTouches","ontouchstart","ontouchmove","_lock","clearAllBodyScrollLocks","speechConfig","audioConfig","textField","listening","continuousListening","recognizer","SpeechSDK","SpeechRecognizer","recognizing","recognized","reason","ResultReason","RecognizedSpeech","firstElementChild","bubbles","NoMatch","log","canceled","CancellationReason","errorCode","errorDetails","errorCB","startContinuousRecognitionAsync","stop","stopContinuousRecognitionAsync","observNode","config","observer","mutationList","mutation","attributeName","disconnect","MutationObserver","observe","SpeechConfig","fromSubscription","speechRecognitionLanguage","enableDictation","setServiceProperty","ServicePropertyChannel","UriQueryParameter","AudioConfig","fromDefaultMicrophoneInput","alert","abbreviateDateYear","dateArr","camelize","chr","capitalize","calculateTotalHours","dirtyStart","dirtyEnd","tempDate","timeDiff","hoursDiff","minutesDiff","toFixed","chunkArray","chunkSize","detectBrowser","ua","msie","trident","rv","versionNumber","edge","formatDateToIso","formatDateFromIso","formatDateFromDateObj","dirtyDateObj","dateObj","formatTimeString","formatPhoneNumber","phoneNumberString","cleaned","findAndSlice","itemFind","findIndex","getGeoLocation","handleSuccess","long","handleFirstRunError","handleSecondRunError","enableHighAccuracy","hostname","getFormattedDateFromDate","getDBDateNow","getTodaysDate","returnObj","getCurrentTime","getRange","isObject","iterationCopy","xmlString","parser","xmlDoc","DOMParser","parseFromString","removeDecimals","removeQuotes","removeNonIntegerCharactersFromString","inputString","validateTime","splitTime","validateDateFromInput","dateArray","inputDate","removeUnsavableNoteText","romanize","digits","roman","warningPopup","acceptBtn","rejectBtn","warningMessage","deromanize","validator","token","CM","CD","XC","XL","IX","IV","exec","state","localStorage","getItem","setItem","checkValidDateRange","toggleMenuItemHighlight","current","toggleHighlight","btn","SEARCH_WRAP","SEARCH_BTN","SEARCH_INPUT","INACTIVE_CHKBOX","userTableData","tempUserTableData","displayedUsers","userTable","changePasswordPopup","savePasswordBtn","cancelPasswordBtn","confirmPasswordInput","newPasswordInput","isCardDisabled","newPasswordValue","confirmPasswordValue","selectedUserID","topNav","buildRosterTopNav","buildTable","tableUserSearch","loadReviewPage","click","buildSearchBtn","changePasswordBtn","buildInactiveChkBox","setCheckForInactiveUser","buildActiveChkBox","tableOptions","buildChangePasswordPopup","userFirstName","UserLastName","popupClassNames","class","headerSpace","errortext","confirmMessage","setupChangePasswordEvents","messagetext","savePassword","checkPassword","confirmPW","resetPasswordAjax","changeUserPassword","UserID","results","populateTable","IsFirstLoad","userID","User_ID","LastName","Last_Name","FirstName","First_Name","Active","additionalInformation","activeCheckbox","outerHTML","setCheckUpdateUserStatus","wrap1","updateActiveInactiveUser","searchValue","consumer","firstName","lastName","fullName","fullNameReversed","matchesName","matchesNameReverse","consumerObj","getActiveInactiveUserlist","dataObj","getActiveInactiveUserDateJSONResult","getUserCredDateJSONResult","myObj","getPassword","filterRow","assessmentEntriesTable","filterPopup","selectedConsumers","selectedConsumersName","selectedConsumersId","filterValues","startDateFrom","startDateTo","endDateFrom","endDateTo","priorAuthApplFrom","priorAuthApplTo","priorAuthRecFrom","priorAuthRecTo","methodologyValuesBtnWrap","scoreValuesBtnWrap","startDateBtnWrap","endDateBtnWrap","priorAuthApplyBtnWrap","priorAuthRecBtnWrap","priorAuthAmtFromBtnWrap","priorAuthAmtToBtnWrap","HistoryData","groupedHistory","historyGroupCount","activeGroup","loadMoreHistory","chunkedArray","targetAction","roster2","getActiveConsumers","loadAssessmentHistoryLanding","authorizationLanding","miniRosterinit","landingPage","ConsumerFinancesAjax","getConsumerNameByID","getConsumerNameByIDResult","FullName","buildNewFilterBtn","filteredBy","buildFilteredBy","buildAssessmentEntriesTable","LOAD_MORE_BTN","buildLoadMoreBtn","loadAssessmentHistoryPage","assessmentEntries","authorizationsAjax","getAssessmentEntriesAsync","methodology","score","priorAuthAmtFrom","priorAuthAmtTo","getAssessmentEntriesResult","groupHistoryData","tableData","entry","moment","behaviorMod","medicalMod","DCMod","CCMod","priorAuthApplied","priorAuthReceived","priorAuthAmount","numberWithCommas","ID","pouplateHistory","history","chunkBy","vendorKeys","methodologyValues","scoreValues","filterButtonSet","maxWidth","filterBtn","buildFilterPopUp","methodologyValuesBtn","methodologyValuesCloseBtn","closeFilter","scoreValuesBtn","scoreValuesCloseBtn","startDateBtn","startDateCloseBtn","endDateBtn","endDateCloseBtn","priorAuthApplyBtn","priorAuthApplyCloseBtn","priorAuthRecBtn","priorAuthRecCloseBtn","priorAuthAmtFromBtn","priorAuthAmtFromCloseBtn","priorAuthAmtToBtn","priorAuthAmtToCloseBtn","IsShow","methodologyDropdown","scoreDropdown","APPLY_BTN","CANCEL_BTN","filterPopupCancelBtn","startDateWrap","endDateWrap","applDateWrap","recDateWrap","amtWrap","populateFilterDropdown","checkRequiredFieldsOfFilter","tmpMethodology","tmpScore","tmpStartDateFrom","tmpStartDateTo","tmpEndDateFrom","tmpEndDateTo","tmpPriorAuthApplFrom","tmpPriorAuthApplTo","tmpPriorAuthRecFrom","tmpPriorAuthRecTo","tmpPriorAuthAmtFrom","tmpPriorAuthAmtTo","populateScoreDropdown","minAmount","reg","includes","maxAmount","updateFilterData","newStartDateFrom","newStartDateTo","newEndDateFrom","newEndDateTo","newPriorAuthApplFrom","newPriorAuthApplTo","newPriorAuthRecFrom","newPriorAuthRecTo","newPriorAuthAmtFrom","newPriorAuthAmtTo","setBtnStatusOfFilter","hasErrors","methData","unshift","methodologyID","getScoreResult","Score","getScoreAsync","scoreData","scoreID","scoreDescription","setActiveModuleSectionAttribute","loadedApp","showMiniRoster","loadAuthorizationLanding","pasBtn","assessmentHistoryBtn","vendorInfoBtn","vendorInfo","setActiveModuleAttribute","authData","filterDropdownData","selectedConsumer","pageWrap","overviewTable","planTypeDropdown","vendorDropdown","matchSourceDropdown","completedDateStart","completedDateEnd","yearStartStart","yearStartEnd","yearEndStart","yearEndEnd","applyFilterBtn","plantypeBtnWrap","vendorBtnWrap","matchSourceBtnWrap","completedDateBtnWrap","yearStartBtnWrap","yearEndBtnWrap","newFilterValues","loadPage","clearAllData","completedDateStartInput","completedDateEndInput","yearStartStartInput","yearStartEndInput","yearEndStartInput","yearEndEndInput","groupChildData","pageDataChild","groupedChildren","reduce","child","pas_id","convertToCurrency","numberValue","Intl","NumberFormat","currency","getFreqName","freqObj","formatDate","initFilterValues","planType","matchSource","buildFilteredByData","currentFilterDisplay","getPlanTypeFullName","getVendorFullName","getMatchSourceName","showFilterPopup","plantypeBtn","plantypeCloseBtn","vendorBtn","vendorCloseBtn","matchSourceBtn","matchSourceCloseBtn","completedDateBtn","yearStartBtn","yearEndBtn","yearEndCloseBtn","applyFilter","checkFilterPopForErrors","errors","legnth","populatePlanTypeDropdown","populateVendorDropdown","planVendors","pv","vendorId","vendorName","populateMatchSourceDropdown","matchSources","ms","caption","filteredVendor","revisionNumber","filteredMatch","dateWrap","cancelFilterBtn","setupFilterEvents","spinner","getPageData","selectedConsumerId","planYearStartStart","planYearStartEnd","planYearEndStart","planYearEndEnd","buildOverviewTable","newfilteredByData","filteredByData","buildConsumerCard","card","mainHeading","pageDataParent","pasID","rowWrap","mainDataRow","CompletionDate","plan_year_start","plan_year_end","plantype","revisionNum","plVendorId","sourceAndCaption","subRowWrap","subHeading","itemnum","subDataRow","description","service_code","BeginDate","EndDate","MaxUnits","frequency","authCostFY1","authCostFY2","consumerCard","getFilterDropdownData","retrieveData","getAuthorizationPageDataResult","responseText","getVendorLandingPageInfoAsync","authorizationGetLandingPageDataResult","getAuthorizationFilterDataResult","consumerIds","MethodologyID","getVendorInfoAsync","DDNumber","localNumber","goodStanding","homeServices","takingNewReferrals","fundingSource","serviceCode","getVendorInfoResult","getVendorAsync","getFundingSourceAsync","getServiceCodeAsync","getVendorEntriesByIdAsync","vendorID","getVenderServicesEntriesAsync","getVenderUCREntriesAsync","getProviderTypeEntriesAsync","getVenderCertificationEntriesAsync","getVenderLocationReviewEntriesAsync","newVendorInfo","ispDiv","ispNav","ispBody","LocalNumber","Phone","title","vendorGeneral","getMarkup","vendorServices","vendorUCR","vendorProviderType","vendorCertification","vendorLocationReview","refreshVendor","DDNum","localNum","headingWrap","headingName","localNumberheading","ispWrap","BACK_BTN","vendorInfoLoad","newIspMarkup","toggleActiveNavItem","selectedNavItem","activeNavItem","toggleActiveSection","sectionId","buildNavigation","buildBody","certificationEntries","vendorCertificationWrap","importantTables","buildNewCertificationForm","vendorCertificationDiv","certificationEntriesTable","buildCertificationEntriesTable","column1","addNewCard","addNewCardBody","getVenderCertificationEntriesResult","Certifiction","oTable","vendorEntriesById","workScheduleWrap","buildVendorGeneralForm","employeeInfoDiv","nameInput","getVendorEntriesByIdResult","contactNameInput","contactName","contactPhoneInput","contactPhone","contactEmailInput","contactEmail","address1Input","address1","address2Input","address2","cityInput","city","stateInput","zipInput","zipCode","phoneInput","primaryPhone","firstNameInput","providerFirstName","lastNameInput","providerLastName","birthDateInput","providerBirthDate","buildingNumberInput","providerBuildingNumber","salesforceIDInput","salesforceId","DDStateNumberInput","DDStateNumber","einInput","ein","submitterInput","submitterId","localNumberInput","SSNInput","ssn","senderInput","sender","MHStateNumberInput","MHStateNumber","TDDStateNumberInput","TDDStateNumber","NPIInput","NPI","MHNPIInput","MHNPI","inGoodStandingchkBox","takingNewReferralschkBox","FSSVendorchkBox","FSSVendor","sanctionsAdministeredchkBox","sanctionsAdministered","inHomeServiceschkBox","consumerNameDisplay","dropWrap","dropWrap1","dropWrap2","consumerNameDisplay1","dropWrap3","dropWrap4","consumerNameDisplay2","dropWrap5","dropWrap6","consumerNameDisplay3","chkDiv","chkDiv1","chkDiv2","chkDiv3","chkDiv4","DDNumberBtnWrap","localNumberBtnWrap","goodStandingBtnWrap","homeServicesBtnWrap","takingNewReferralsBtnWrap","fundingSourceBtnWrap","serviceCodeBtnWrap","vendorsData","groupedVendors","vendorGroupCount","loadMoreVendors","fromFilter","handleVendorInfoTableEvents","contact","groupVendorData","DDNumberBtn","DDNumberBtn2","DDNumberCloseBtn","localNumberBtn","localNumberCloseBtn","goodStandingBtn","goodStandingCloseBtn","homeServicesBtn","homeServicesCloseBtn","takingNewReferralsBtn","takingNewReferralsCloseBtn","fundingSourceBtn","fundingSourceCloseBtn","serviceCodeBtn","serviceCodeCloseBtn","DDNumberInput","goodStandingDropdown","homeServicesDropdown","takingNewReferralsDropdown","fundingSourceDropdown","serviceCodeDropdown","tmpVendor","tmpDDNumber","tmpLocalNumber","tmpGoodStanding","tmpHomeServices","tmpTakingNewReferrals","tmpFundingSource","tmpServiceCode","getVendorResult","Vendor","vendorData","Description","getFundingSourceResult","FundingSource","fundingSourceData","getServiceCodeResult","ServiceCode","serviceCodeData","goodStandingData","homeServicesData","takingNewReferralsData","pouplateVendors","vendors","phoneNumber","phoneExt","phonebracket","phonenum","locationReviewEntries","locatationReviewWrap","buildNewVendorLocationReviewForm","locatationReviewDiv","locationReviewEntriesTable","buildLocationReviewEntriesTable","getVenderLocationReviewEntriesResult","reviewType","dueDate","completedDate","responsibleStaff","providerTypeEntries","vendorProviderWrap","buildNewVendorProviderTypeForm","vendorProviderDiv","providerTypeEntriesTable","buildProviderTypeEntriesTable","getProviderTypeEntriesResult","ProviderType","Notes","ServicesEntries","vendorServicesWrap","buildNewVendorServicesForm","vendorServicesDiv","serviceEntriesTable","buildServicesEntriesTable","getVenderServicesEntriesResult","serviceDescription","UCREntries","vendorUCRWrap","buildNewVendorUCRForm","vendorUCRDiv","UCREntriesTable","buildUCREntriesTable","getVenderUCREntriesResult","service","groupSize","serviceLocation","CDBCategory","assessmentAcuityScore","UCR","CaseNotes","caseNoteId","caseNoteGroupId","caseNoteEditData","caseNoteAttachmentsEditData","attachmentsForDelete","caseManagerId","selectedDate","selectedServiceCode","updatedInputs","allowGroupNotes","defaultServiceCode","isReadOnly","moduleWrap","cnHeader","cnDateNavWrap","cnFormWrap","cnRosterWrap","dateNavigation","rosterPicker","cnForm","cnOverview","cnPhrases","cnDocTimer","reqVisualizer","resetModuleData","_DOM","resetNoteData","resetModule","isNoteConfidential","setPermissions","checkServiceFundingADV","checkGroupNotesPermission","cnData","toggleMultiSelectOption","extractCaseNoteId","checkRequiredFields","isSaveDisabled","buttons","toggleDisabled","parseSessionTime","dirtyTime","timesWithinWorkHoursCheck","valuesToCheck","isWarningStartTimeValid","isWarningEndTimeValid","warnStart","warnEnd","validStart","validEnd","isFutureTime","isToday","selectedDateClone","isStartTimeBeforeEndTime","timeOverlapCheck","fetchTimeOverlapData","noteId","serviceDate","getOverlapData","deleteNote","deleteExistingCaseNoteResults","saveAttachments","attachmentsForSave","saveAttachmentPromises","promise","attachmentType","then","catch","saveAttachmentResults","allSettled","failedSaves","acc","saveGroup","savePromises","newGroupId","getGroupNoteIdResult","consumerid","serviceOrBillingCodeId","groupSaveResults","newGroup","saveNote","attachments","saveResponse","isNewGroup","saveCaseNoteResult","attachSaveResponse","fullfill","resp","areAllFormFieldsValid","invalidControls","checkFormForUnsavedChanges","inputName","newValue","originalNoteDataMap","mainbillingorservicecodeid","locationcode","servicelocationid","need","serviceneedcode","vendorid","contactcode","starttime","endtime","mileage","totalmiles","travelTime","traveltime","noteText","casenote","confidential","outcomeServiceMonitoring","cnFormToast","toggleFormButtonShowHide","toggleVisibility","toggleFormButtonsDisabled","updateVendorDropdownByConsumer","fetchVendorDropdownData","getVendorDropdownData","inputs","setValue","updateServiceLocationDropdownByConsumer","fetchServiceLocationDropdownData","servLocData","getServiceLocationDropdownData","formData","onServiceCodeChange","setConsumerRelatedDropdowns","canConsumerHaveMileage","onFileDelete","detail","onTimeChange","inputKey","startTimeVal","getValue","endTimeVal","isTimeFuture","setValidtyError","showError","isStartTimeFuture","isEndTimeFuture","isStartBeforeEnd","showWarning","clearErrorOrWarning","documentationTime","mileageRequired","isMileageRequired","isTravelTimeRequired","isDocTimeRequired","showAutoStartPopup","isServiceFunding","locationRequired","isLocationRequired","needRequired","isNeedRequired","contactRequired","isContactRequired","serviceRequired","isServiceRequired","toggleRequired","getLocationDropdownData","getServicesDropdownData","getNeedsDropdownData","getContactsDropdownData","onChangeCallbacks","hasDecimal","onFormChange","onKeyupCallbacks","words","textareaInput","fullscreen","textareaClone","disableCloseButon","InsertPhrases","onPhraseSelect","phraseText","textValue","updateCloneValue","setFocus","onFormKeyup","processAttachmentsForSave","attachmentDetails","getAttachmentDetails","onFormReset","setSelectedConsumers","onFormDelete","continueSave","deleteConfirmationPopup","onFormSubmit","submitter","buttonName","overlaps","overlapPopup","reviewRequiredData","fetchCaseManagerReviewData","saveData","caseNote","casenotemileage","casenotetraveltime","contactCode","corrected","locationCode","needCode","reviewRequired","serviceLocationCode","onConsumerSelect","onDateChange","newDate","RosterPicker","allowMultiSelect","consumerRequired","selectionDate","fetchConsumers","onOverviewCardDelete","onOverviewCardEdit","scrollToTop","getCaseNoteEditJSONResult","groupid","casemanagerid","totaldoctime","toggleRosterDisabled","servicecode","fetchAttachmentsGK","getAttachmentsList","addAttachments","credit","disableFormInputs","attachEvents","onChange","onKeyup","onDelete","onSubmit","onReset","populatePage","renderTo","loadPageSkeleton","initComponents","DateNavigation","allowFutureDate","Form","fields","hidden","required","getServiceBillCodeDropdownData","defaultValue","includeBlankOption","speechToText","styleType","Toast","CaseNotesPhrases","CaseNotesTimer","AsyncRequestVisualizer","ConfirmationPopup","WarningPopup","fromDashboard","CN_CaseLoadWidget","getCurrentlyselectedConsumerId","CaseNotesData","fetchDropdownData","getDefaultServiceCode","fetchConsumersThatCanHaveMileage","dealWithDropdownDataHugeString","decipherXML","billingCodes","bc","tmpServiceId","tmpServiceFunding","tmpServiceRequired","tmpLocationRequired","tmpNeedRequired","tmpContactRequired","tmpAllowGroupNotes","tmpMileageRequired","tmpDocTimeRequired","tmpTravelTimeRequired","contacts","services","needs","tmpObject","serviceId","serviceFunding","docTimeRequired","travelTimeRequired","loc","tmpLocName","tmpLocCode","locName","locCode","tmpContactName","tmpContactCode","tmpServiceName","tmpNeedName","tmpNeedCode","needName","beautifulObject","dropdownDataObj","caseLoadOnly","CaseNotesCaseloadRestrictions","viewEntered","caseLoadRestrictions","reviewGroups","reviewConsumers","dropdownData","vendorDropdownData","serviceLocationDropdownData","caseManagerReview","consumersThatCanHaveMileage","attachmentList","overlapData","populateDropdownDataResult","getConsumerSpecificVendorsJSONResult","getServiceLocationsForCaseNoteDropDownResult","getReviewRequiredForCaseManagerResult","reviewrequired","serviceid","getConsumersThatCanHaveMileageJSONResult","data2","getCaseNoteAttachmentsListForGroupNoteResult","caseNoteOverlapCheckResult","fetchReviewData","restrictionsResponse","getCaseLoadRestrictionResult","caseNoteReviewData","caseNotesFilteredSearchJSONResult","fetchNoteData","getReviewData","numberInGroup","groupnoteid","lastname","firstname","casenoteid","enteredByUser","enteredby","onCaseload","cl","isReviewRequired","getMainServiceCodeNameById","consumername","attachmentId","CaseNotesOverview","buildMostRecentUpdateElement","mostRecentUpdate","DateTimeFormat","weekday","buildEnteredByElement","enteredBy","originalUserFullName","buildStartTimeElement","buildEndTimeElement","buildTimeDiffElement","timDiff","buildConsumerElement","consumerFullName","consumerNameEle","portrait","Portrait","buildServiceInfoElement","mainService","buildNoteElement","showAllNotes","caseLoadReviewData","overviewWrap","overviewSearch","showAllNotesToggle","overviewCardsWrap","overviewCards","_init","_build","_setupEvents","showAllNotesLS","localStorageHandler","overviewHeader","Input","placeholder","Checkbox","debounce","_filterOverviewOnSearch","rd","searchFields","isMatch","combo","isConfidential","attachmentCountGK","attachcount","overviewCardWrap","overviewCard","mostRecentUpdateEle","mostrecentupdate","enteredByEle","editButton","Button","deleteButton","customEvent","CustomEvent","cancelable","startTimeEle","endTimeEle","timeDurationEle","serviceInfoEle","noteTextEle","filteredSearchResponse","billerId","billingCode","billed","dateEnteredStart","dateEnteredEnd","reviewStatus","onCardEdit","cbFunc","onCardDelete","node","Node","CaseNotesAddPhrases","phrasesInstance","dialog","addPhraseForm","PhrasesInstance","Dialog","maxlength","setupEvents","shortcut","phrase","makePublic","public","insertCustomPhraseResult","CaseNotesInsertPhrases","phrasesData","showAllPhrases","showAllPhrasesToggle","addPhraseButton","phraseWrap","sortedKeys","localeCompare","phraseEle","handleClick","AddPhrases","showAll","getCustomPhrasesResult","phrase_id","phrase_shortcut","CaseNotesReports","detailReportForm","timeAnalysisReportForm","generateDetailReport","generateTimeAnalysisReport","debounceTime","doesReportExist","reportScheduleId","viewReport","opacity","tokenInput","attachmentInput","submit","CaseNotesReviewTable","rootElement","reviewTable","Table","headings","InactivityWarningPopup","yesButton","noButton","messageEle","TimerAutoStartPopup","prevDocumentationTime","timeOffset","elapsedTimeInSeconds","intervalId","inactivityIntervalId","inactivityWarningDialog","timeDisplay","playButton","stopButton","inactivityWarningPopup","timerAutoStartPopup","inactivityTimeoutId","clearTimeout","continueTimer","autoStart","prevDocTime","additionalTimeInSeconds","clearInterval","currentTime","caseNotes","loadCaseNotesLanding","newBtn","newSSABtn","noteSSA","overviewBtn","notesOverview","editPhrasesBtn","cnEditPhrases","tryNewCaseNotes","caseNotesAjax","getFilteredCaseNotesList","submitData","serviceDateStart","serviceDateEnd","enteredDateStart","enteredDateEnd","getCaseNoteEdit","getGroupNoteId","getDropdownData","getConsumersThatCanHaveMileage","getBillersListForDropDown","getBillersListForDropDownJSONResult","getReviewRequiredForCaseManager","getCaseNoteAttachmentsList","getCaseNoteAttachmentsListResult","getConsumerSpecificVendors","getServiceLocationsForCaseNoteDropDown","caseNoteOverlapCheck","saveSingleCaseNote","serviceMonitoring","saveGroupCaseNote","saveAdditionalGroupCaseNote","updateGroupNoteValues","deleteExistingCaseNote","deleteExistingCaseNoteResult","addCaseNoteAttachment","desc","buf","binary","bytes","Uint8Array","byteLength","fromCharCode","abString","deleteCaseNoteAttachmentResult","deleteCaseNoteAttachment","viewCaseNoteAttachment","successFunction","getCustomPhrases","insertCustomPhrases","getCustomPhraseResult","getConsumersForCNFilter","getConsumersForCNFilterResult","generateCNDetailReport","billCodeText","consumerName","originallyEnteredStart","originallyEnteredEnd","generateCNDetailReportResult","generateCNTimeAnalysisReport","generateCNTimeAnalysisReportResult","checkIfCNReportExists","checkIfCNReportExistsResult","viewCaseNoteReport","getCNPopulateFilterDropdowns","serviceCodeId","getSSAServiceOptionsDropdown","getSSAServiceOptionsDropdownResult","getCaseLoadRestriction","getSSABillCodesFromService","servicePersonApproved","getSSABillCodesFromServiceResult","caseNotesTimer","clearTimerOnSave","inactTime","inactivityTime","documentTimeSeconds","onload","onmousemove","onkeypress","pauseTimer","fromInactive","inactiveTimeForClear","attr","displayDocTime","resetTimer","dontResetInactTimerFlag","logout","answer","confirm","startCaseNoteTimer","timeInSeconds","minutesLabel","documentationTimer","runningTime","saveTime","timer","startBtn","timerRunning","clearTimer","inactiveAlert","resetInactivityTimer","deltaMS","deltaS","newMinutes","minArea","getTimeFromInactivity","stopTimer","startPercisionTimer","prevTime","docTimerMutationObserver","prevTimeMS","startTimer","cardBody","shortcutInput","phraseInput","pubCheckbox","saveBtn","buildCard","cardHeader","buildInputs","savePhrase","checkForError","clipboardData","getData","CFConsumerBtns","consumerRow","consumerElement","accountId","BtnName","page","IsDisabledAccount","accountPermission","tempAccountPer","account","loadCFEditLanding","LineBr","getaccountPermission","resultAccount","getEditAccountAsync","getEditAccountResult","accountName","topButton","buildHeaderButton","border","importantAccountForm","buildAccountForm","populateAccountDropdown","buildButtonBar","buttonBar","maxHeight","minWidth","dropdownButtonBar","entryButtonBar","accountDropdown","entryBtn","marginLeft","disabledEnabledAccounts","classofAccount","dateClosed","lastReconciled","openingBalance","balance","dateOpened","nameTemp","numberTemp","typeTemp","statusTemp","classofAccountTemp","dateOpenedTemp","dateClosedTemp","openingBalanceTemp","descriptionTemp","getEditAccountInfoByIdAsync","getEditAccountInfoByIdResult","inputNumber","typeDropdown","statusDropdown","classDropdown","opendDate","closeDate","lastReconciledDate","inputOpeningBal","inputBal","inputDesc","SAVE_BTN","saveUpdateAccount","cancleAccount","drWrap","drWrap1","drWrap2","drWrap3","populateDropdown","checkRequiredFieldsOfAccountInfo","accounts","dataAccount","totalBalance","getAccountClassResult","classAccount","getAccountClassAsync","dataClass","accountClass","SystemClass","typeData","statusData","getRequiredFieldsOfAccountInfo","openDateVal","closeDateVal","nameVal","typeVal","statusVal","setBtnStatusOfAccountInfo","clearSelectedConsumers","clearActiveConsumers","insertEditRegisterAccountAsync","insertEditRegisterAccountResult","defaultCFLocation","getLocation","setLocation","hideDate","consumerFinanceAttachment","ConsumerFinanceAttachment","regId","IsDisabled","attachID","attachmentsForQuestion","IsDisabledBtn","buildAttachmentButton","attachmentButton","attachmentPopup","attachmentsToDelete","attachmentsAdded","populateExistingAttachments","reviewAttachmentList","fileContainer","attachmentID","removeAttachmentBtn","addRemoveAttachmentToDeleteList","file","viewCFAttachment","attachmentElement","currentDeleteStatus","fileValidation","fileType","files","reFileTypeTest","addNewAttachment","addRemoveAttachmentEventListener","fileInput","lastAttachment","lastChild","newFileContainer","attachmentContainer","saveAction","saveAttachmentsToDB","attachmentSaveArray","attachmentArray","saveProm","arrayBuffer","addCFAttachment","attSaveRes","all","deleteCFAttachment","attachmentInputs","attachmentProms","inputElement","attPromise","attachmentObj","attachmentFile","attachmentName","registerID","Response","addAttachmentBtn","cleanAttachmentLists","newAttachmentList","newAttachmentsHeader","attachmentsToAdd","attachmentsToRemove","attId","attach","isAttacExist","attachmentBtn","NewEntryCF","buildNewEntryForm","getConsumerFinanceAttachments","regID","retData","getCFAttachmentsList","ConsumerFinanceEntriesTable","activityStartDateBtnWrap","activityEndDateBtnWrap","minamountBtnWrap","maxamountBtnWrap","transectionTypeBtnWrap","accountNameBtnWrap","payeeBtnWrap","categoryBtnWrap","enteredByBtnWrap","isattachmentBtnWrap","selectedConsumerIds","loadConsumerFinanceLanding","buildConsumerFinanceEntriesTable","ConsumerFinancesEntries","getAccountTransectionEntriesAsync","activityStartDate","activityEndDate","payee","category","minamount","maxamount","checkNo","Balance","isattachment","transectionType","getAccountTransectionEntriesResult","activityDate","theMonth","formatActivityDate","checkno","isExpance","handleAccountTableEvents","registerId","AttachmentsID","getActiveAccountResult","getActiveAccountAsync","activityStartDateBtn","activityEndDateBtn","minamountBtn","maxamountBtn","transectionTypeBtn","transectionTypeCloseBtn","accountNameBtn","accountNameCloseBtn","payeeBtn","payeeCloseBtn","categoryBtn","categoryCloseBtn","enteredByBtn","enteredByCloseBtn","isattachmentBtn","isattachmentCloseBtn","fromDateInput","toDateInput","minAmountInput","maxAmountInput","transectionTypeFilterDropdown","accountFilterDropdown","payeeDropdown","categoryDropdown","lastUpdateDropdown","isAttachedDropdown","amountWrap","checkValidationOfFilter","tmpactivityStartDate","tmpactivityEndDate","tmpminAmount","tmpmaxAmount","tmpaccountName","tmpenteredBy","tmppayee","tmpcategory","tmpisattachment","tmptransectionType","fromDate","accountData","getPayeesResult","Payees","getPayeesAsync","payeeData","payees","CategoryID","categoryID","getCategoriesSubCategoriesResult","Category","getCategoriesSubCategoriesAsync","categoryData","CategoryDescription","getActiveUsedByResult","employees","getActiveEmployeesAsync","employee","condfidentialDropdownData","TransectionTypeDropdownData","ConsumersId","getCategoriesAsync","getSubCategoriesAsync","getCategoriesSubCategoriesByPayeeAsync","insertPayeeAsync","payeeName","payeeaddress1","payeeaddress2","payeecity","payeestate","payeezipcode","zipcode","insertAccountAsync","amountType","AccountID","subCategory","attachmentDesc","receipt","splitAmount","eventType","getAccountEntriesByIDAsync","deleteConsumerFinanceAccountAsync","addCFAttachmentResult","deletePlanAttachmentResult","getCFAttachmentsListResult","sectionInput","getSplitRegisterAccountEntriesByIDAsync","getSplitCategoriesSubCategoriesAsync","newDateInput","newAmountInput","newAccountDropdown","newPayeeDropdown","ADD_NEW_PAYEE_BTN","newCategoryDropdown","newSubCategoryDropdown","newCheckNoInput","newDescriptionInput","newReceiptInput","NEW_SAVE_BTN","NEW_CANCEL_BTN","prevAttachmentArray","lastUpdateBy","IsReconciled","IsAddNewPayDisable","IsSaveDisable","IsDeleteDisable","splitAmountInputN","splitCategoryDropdownN","splitDescriptionInputN","categoryOldVal","totalAmount","regTotalAmount","numberOfRows","splitTransPopup","tempAmountval","tempSplit","tempAmouts","totalAmountSaved","pageName","IsNewRefresh","getAccountEntriesByIdResult","accountID","accountType","reconciled","SplitDataresult","getSplitRegisterAccountEntriesByIDResult","sum","tempdate","tempamount","tempaccount","tempaccountType","temppayee","tempcategory","tempsubCategory","tempcheckNo","tempdescription","tempattachment","tempreceipt","column2","SPLIT_BTN","NEW_DELETE_BTN","expenseRadio","depositRadio","radioDiv","space","DisabledAllInputs","enableDisabledInputs","radioWrap","addRightCard","addRightHeader","addRightBody","questionAttachment","populatePayeeDropdown","populateCategoryDropdown","populateSubCategoryDropdown","checkRequiredFieldsOfNewEntry","getSplitdata","buildSplitTransectionPopUp","EnabledAllInputs","setBtnStatusOfNewEntry","buildNewPayeePopUp","saveNewAccount","deleteAccountPOPUP","errorPopup","getCategorySubCategorybyPayee","insertAccountResult","confirmPopup","YES_BTN","deleteAccount","NO_BTN","popupbtnWrap","getCategoriesSubCategoriesByPayeeResult","CategoriesSubCategory","SubCategoryDescription","getCatogoriesResult","getSubCatogoriesResult","SubCategory","payeeId","addPayeePopup","payeeInput","zipcodeInput","addPayeePopupDoneBtn","popUpEventHandlers","finalVal","setBtnStatus","insertPayeeResult","RegionID","duplicatePayeErrorPopup","duplicatePayeErrorConfPOPUP","btnWrapInputsN","regAmountTotalInput","amountTotalInput","totalBtnWrapInputs","saveSplitBtn","splitTransPopupSaveBtn","cancelSplitBtn","popUpSplitTransectionEventHandlers","populateSplitCategoryDropdown","splitAmountTotal","checkRequiredFieldsSplitTransection","SplitCategory","splitAmt","setBtnStatusSplitTransection","getSplitCategoriesSubCategoriesResult","categoryId","splitTransSaveData","errorConfPOPUP","yesBtn","noBtn","checklistTable","tableContainer","completedChecklistData","activeChecklistId","rosterLocations","checklistMode","typeOfChecklist","initialLoad","buildEmployeePage","checklistCard","mainSection","dateInput","timeInput","locationDropdown","settingInput","symptomHeading","symptomSection","symptomElements","otherInput","buttonDiv","buttonDiv2","deleteBtn","noEditWarning","populateLocationDropdown","buildEmployeeChecklistTable","peopleId","consumerChecklist","checklistResult","covidAjax","getCovidChecklists","getIndividualsCovidDetailsResult","displayDate","tableHeader","checklist","checklistData","assessmentTime","setting","settingType","cough","diarrhea","fever","malaise","nasalCong","nausea","tasteAndSmell","other","notes","shortnessBreath","soreThroat","assessmentId","covidChecklistActions","loadChecklist","rawLocations","covidLanding","defaultLocation","updateSelectedDate","insertUpdateChecklist","resetChecklist","cancel","deleteConfirmation","clearChecklist","deleteChecklist","deleteCovidChecklist","err","activeConsumer","removeConsumerFromActiveConsumers","covidChecklistElements","completedChecklists","checklistId","checklistType","assesmentDate","isConsumer","insertUpdateCovidChecklists","createInputs","symptoms","symptom","capSymptomNameArr","readableSymptomNameBaseArr","word","capWord","readableName","yesRadio","noRadio","symptomTitle","symptomContainer","assessmentDate","loadCovidLanding","myChecklist","consumerChecklists","rosterAjax","getRosterLocations","getLocationsJSONResult","multiDeleteRecordBtn","multiSelectAllBtn","multiSelectNoneBtn","multiOutRecordBtn","multiInRecordBtn","filterLocationDropdown","filterGroupDropdown","filterDateInput","fitlerApplyBtn","batchedMessageDisplay","mulitSelectBtn","multiSelectAllNoneArea","dsCardArea","groupDropdown","initRosterSelection","activeConsumers","rosterGroupResults","locationID","filterGroupID","filterGroupRetrieveID","temp__locationID","temp__groupID","temp__retrieveID","temp__serviceDate","locationBtnWrap","serviceDateBtnWrap","selectedGroupNameBtnWrap","displayedConsumers","enabledConsumers","noLocationSet","enabledConsumerString","currentLocationBatched","locationCache","activityCache","dsConsumers","dsGroupsCache","dsDropdownData","ciDropdownData","groupDropdownData","selectedDSType","selectedGroup","locationDropdownData","enableMultiEdit","IsSaveBtnDisable","dsTypes","dsType","dsText","formatConsumersForClockIn","consumerString","formatConsumersForClockOut","act","Stop_Time","Start_Time","checkIfBatched","dayServiceAjax","getDSIsLocationBatched","checkForNoLocation","getDayServiceActivity","tempDsConsumers","getConsumerDayServiceActivity","Acuity","AllowNonBillable","Day_Service_Type","Service_Date","ciStaffID","isBatched","dsGroupId","Day_service_group_id","dsConsumerMap","has","checkForCI","errorPopupText","searchDS","convertDSValueToText","newtext","newText","updateCurrentFilterDisplay","selectedGroupName","dayServicesFilterPopup","locationBtn","serviceDateBtn","selectedGroupNameBtn","selectedGroupNameCloseBtn","filterApplyAction","clockInOutChoicePopup","setupActionNav","multiSelectBtn","highlightedRows","multiDeleteRecord","selectedElms","highlightedHeaders","multiInOutRecord","populateFilterGroupDropdown","groupCodeObj","GroupCode","groupCode","groupName","GroupName","members","Members","RetrieveID","updateSelectedLocationId","rememberLastLocation","getDayServiceGetEnabledConsumers","allowedConsumers","consumer_id","setAllowedConsumers","doStuff","buildCards","getDayServiceGroups","groupDescription","handleDayServiceCardEvents","isRow","isHeader","rowPopup","textA","textB","cardBodyHeader","dsGroup","dsGroupValue","displayStartTime","displayEndTime","cardRow","dayServiceDisplay","placeholder1","placeholder2","placeholder3","placeholder4","enableMultiEditRows","multiBtn","recordsToDelete","inTime","deleteDSRecord","clockInOutActionPopup","groupID","newInTime","newOutTime","outTime","childElementCount","inTimeField","outTimeField","dsTypeDropdown","saveTypeAndCi","consumerDeleteString","consumerExistingDayServicePopup","consumerList","continueBtn","textArea","selectedDSTypeId","setBtnStatusOfSave","clockInBtn","idString","sc","clockedInConsumers","getDayServiceClockedInConsumers","consumerIdString","clockOutBtn","choice","inPopup","outPopup","timeInField","timeOutField","clockIn","clockOut","inCancelBtn","outCancelBtn","clockInConsumerString","selectedConsumerCount","dayServiceClockIn","overlapConsumers","accuityDisplay","clockOutConsumerString","updateDayServiceActivity","deleteDayServiceActivity","orgPopup","confPopup","confirmBtn","orgInTime","orgEndTime","ciStaffId","updateDSTypePromise","updateCIPromise","updateCIStaff","deleteCIPromise","deleteCIStaffId","buildPageComponents","allRows","allHeaders","getFilterValues","dayServiceLocation","dayServiceServiceDate","createMainReportButton","buttonsData","buttonData","generateReports","showReportsPopup","reportsBtn","filterSelectReportBtnWrap","toggleActionCenterChildrenVisiblity","initialPageBuild","ds","addEventListeners","customGroupsAjax","getConsumerGroupsJSONResult","retrieveid","initPageLoad","dsEnabledConsumers","checkCiPromise","getDateToCheckShowCI","ciDateToCompare","Setting_Value","getCiStaffPromise","getCiStaff","ci","getEnabledConsumersPromise","actObj","getGroupsPrommise","locationCheck","getDayServiceLocations","defaultDayServiceType","applyBtn","checkConsumersForDate","massUserCheckByDateJSONResult","getDayServiceGetEnabledConsumersResult","errorId","errorConsumerIds","tmpErrorCode","setErrorBox","dayServiceClockOut","stopTime","getDateToCheckShowCIResult","getExistingCIStaffId","resIn","ciButtonId","convertTimeToMilitary","staffId","getExistingCIStaffIDFromResponse","createCIDropdown","getDayServiceLocationsJSONResult","optionsHtml","first","showSelect","tmpName","tmpId","tmpId2","tmpRes","serviceLocationCount","locationIds","currentlocationId","resizeHeaderText","changeTheDSLocation","peopleList","retrieveId","getConsumerDayServiceActivityJSONResult","getCIStaffDropdownJSONResult","inputType","dayServiceType","getDSIsLocationBatchedResult","getDayServiceGroupsResult","getDayServiceClockedInConsumersResult","widgets","setupFuncs","widgetIds","caseNotesProductivity","caseNotesCaseLoad","caseNotesRejected","planWorkflow","customLinks","unreadLocationNotes","consumerProgressNotes","timeClock","hoursWorked","goals","clockedIn","singleEntry","adminSingleEntry","schedule","incidentTracking","missingSignatures","moneyManagement","infal","systemMessages","rosterToDoList","appendFilterButton","widgetId","btnId","headerSelector","widgetHeader","filtersSelector","widgetFilters","appendPDFButton","pdfBtn","passFilterValuesForReport","showWarningPopup","buildFilterPopup","initAbsentWidget","showHide","getWidgetSettings","loadAbsentWidget","div","absentWidget","initLinksAndMessagesWidget","showHideCustomLinks","loadSysMessagesAndCustomLinksWidget","div2","linksAndMessages","initSystemMessagesWidget","initSingleEntryWidget","loadAdminSingleEntryWidget","singleEntryCountWidget","initAdminSingleEntryWidget","loadSingleEntryWidget","adminSingleEntryWidget","initTimeClockWidget","loadEmployeeDayServicesWidget","initHoursWorkedWidget","loadHoursWorkedWidget","hoursWorkedWidget","initScheduleWidget","loadScheduleWidget","initDailyServicesWidget","loadDailyServicesWidget","widgetSetup","remainingDailyServicesWidget","initClockedInWidget","loadDayServicesWidget","clockedInWidget","initIncidentTrackingWidget","loadIncidentTrackingWidget","incidentTrackingWidget","initConsumerProgressNotesWidget","loadConsumerProgressNotesWidget","consumerProgresNotes","initLocationProgressNotesWidget","loadLocationProgressNotesWidget","initCaseNotesProductivityWidget","hasPerm","loadCaseNotesProdictivityWidget","CN_ProductivityWidget","initCaseNotesCaseLoadWidget","loadCaseNotesCaseLoadWidget","initCaseNotesRejectedWidget","CN_RejectedWidget","initPlanWorkflowWidget","loadPlanWorkflowWidget","planWorkflowWidget","initRosterToDoListWidget","loadRosterToDoListWidget","rosterToDoListWidget","initInfalWidget","anonymousFunction","infalTimeClockWidget","initSignaturesWidget","loadSignatureWidget","signatureWidget","initMoneyManagementWidget","loadMoneyManagementWidget","consumerFinancesWidget","loadDashboardWidgets","widgetSetting","getInvalidDefaultLocations","widgetName","IsSystemMessageAvailable","widget","func","settingForWidget","widgetConfig","widgetOrder","refreshWidgetSettings","widgetSettingsAjax","getUserWidgetSettingsResult","preLoadWidget","getSetting","outcomeType","displayTimeSelect","validateError","numberOfCards","pad","ticktock","current_time","anywhere","popCalendar","startMessage","swapMessageBoxes","showDownArrow","validTime","popDayStaffTimeBox","tagname","nonFormattedTime","originalText","setupTimeInputBox","validateStaffTime","valueText","rowid","timein","timeout","timeOverlapError","getTimeClockInput","objId","pushStr","change","textFieldEdit","showRemainingGoals","$goalsCount","$listTarget","$goalsConsumerCount","consumerCount","oid","first_name","last_name","names","li","append","displayChangeUser","HTMLresponse","replaceWith","getPSIUserOptionList","user_id","changeFromPSIAjax","psiLogin","isNumberKey","charCode","which","formatDateGFromDB","formatTimeFromDB","test2","convertTimeFromMilitary","identifier","removeBadNoteTextToDisplay","daysBetweenDates","checkDate","oneDay","changeDate","formatDateForDatabaseSave","convertTimeToMilitaryNew","AMPM","sHours","sMinutes","militaryTime","setSelectionRange","selectionStart","selectionEnd","createTextRange","range","collapse","moveEnd","moveStart","setCaretToPos","getDeviceLocation","setTimeToScreen","amOrPm","pmAM","timeDigitsEntered","originId","increment","fn","PSmodal","incrementMessage","immediate","closeOnBlur","displayTimeBox","mobile","bottom","timeBox","marginTop","clearTimepadInputField","convertDaysBack","daysBackIn","dateOffset","daysBackDate","dateToPass","convertDaysBackGoals","popupCalendar","minDate","maxDate","currVal","dateFormat","theme","accent","mode","preset","onSelect","inst","onShow","scroller","mobiscroll","openCaraSolva","enctype","scope","Anywhere","promptYesNo","yesCallback","noCallback","userPopup","userElemet","questions","esignerData","ssaDropdownData","providerDropdownData","paidSupportProviders","progressDiv","viewerContainer","formContainer","generateReportDownload","esignaturesAjax","downloadReportAfterSigning","_buffer","byteArray","blob","msSaveOrOpenBlob","fileURL","reports","handledProcessedReport","setSSADropdownInitialWidth","ssaDropdown","csChangeMindSSAPeopleId","ssaWidth","setVendorDropdownInitialWidth","vendorContactDropdown","csContactProviderVendorId","vendorWidth","updateSSADropdownWidth","hidden_opt","hidden_sel","updateVendorDropdownWidth","displayFormPopup","margin","buildDissentSection","dissentWrap","dissentTitle","dissentAreaDisagree","dissentHowToAddress","nonPaidSupportData","provider","paidSupportData","nonPaidSupportDropdownData","paidSupportDropdownData","paidSupport","nonPaidSupport","getSSADropdownData","ssa","populateDropdownSSA","csChangeMindQuestionDropdownData","populateDropdownVendor","contactQuestionDropdownData","nonGroupedDropdownData","paidSupportGroup","nonPaidSupportGroup","buildStandardQuestionSet","changeMindQuestion","csChangeMindQuestionText","csChangeMindQuestionDropdown","ssaPeopleId","validateForm","csChangeMindRadioContainer","csChangeMind","contactQuestion","contactQuestionText","csContactQuestionDropdown","csContactRadioContainer","csContact","standardQuestions","standardQuestionsWrap","question","questionContainer","questionText","questionRadioContainer","buildConsentSection","consentWrap","consentHeader","signatureInput","allFilled","updateQuestions","downloadExitPopup","paragraph","downloadPlanBtn","formPopup","teamMemberType","dissentingSection","signatureDisplay","openESignaturesPDFEditor","eSignerDataResult","getESignerDataResult","planId","csContactInput","csRightsReviewed","csAgreeToPlan","csFCOPExplained","csDueProcess","csResidentialOptions","csSupportsHealthNeeds","csTechnology","loadDropdownData","consentAndSignAjax","getPlanInformedConsentVendors","peopleid","getPlanInformedConsentSSAs","servicesSupports","getSelectedVendorIds","openESignaturesEditorResult","WebViewer","path","licenseKey","documentType","instance","FitMode","UI","setFitMode","FitWidth","disableElements","docViewer","Core","documentViewer","annotManager","annotationManager","setHeaderItems","img","binaryString","atob","loadDocument","filename","doc","getDocument","xfdfString","exportAnnotations","getFileData","tempUserIdInput","addEditEmployers","addNewEmployerBtn","rtnOODMainPageBtn","employerId","employerName","employeraddress1","employeraddress2","employercity","employerstate","employerzipcode","employerInput","openedPage","redirectInformation","BtnEventType","buildEmployerPopUp","loadEmploymentLanding","OODEmployersTable","buildEmployersTable","getActiveEmployersResult","activeEmployers","OODAjax","getActiveEmployersAsync","filteredActiveEmployers","employer","getEmployer","employerdata","postType","openpageName","redirectInfo","headingEmployer","editEmployerPopup","editEmployerPopupDoneBtn","employrInput","insertEmployerAsync","insertEmployerResult","employerID","NewEmployment","refreshEmployment","positionId","empName","posName","consumersName","consumersId","tabPositionIndex","updateEmployerAsync","updateEmployerResult","tableRow","deletepopup","deleteEmployerAsync","deleteEmployerResult","OKBtn","newFilterBtn","EmploymentEntriesTable","PositionBtns","employerBtnWrap","positionBtnWrap","positionStartDateBtnWrap","positionEndDateBtnWrap","jobStandingBtnWrap","reportValues","buildEmploymentEntriesTable","EmploymentsEntries","EmploymentAjax","getEmploymentEntriesAsync","positionStartDate","positionEndDate","jobStanding","getEmploymentEntriesResult","PeopleName","positionName","newPositionBtn","editEmployerBtn","getReportValues","EmployerID","positionID","jobStandingID","consumerID","employerBtn","employerCloseBtn","positionBtn","positionCloseBtn","positionStartDateBtn","positionEndDateBtn","positionEndDateCloseBtn","jobStandingBtn","jobStandingCloseBtn","positionDropdown","jobStandingDropdown","EmployerDropdown","tmpEmployer","tmpPosition","tmpJobStanding","tmpStartDate","tmpEndDate","tmpEmployerID","tmppositionID","tmpjobStandingID","getPositionsResult","Positions","getPositionsAsync","positionsData","positions","getEmployersResult","Employer","getEmployersAsync","getJobStandingsResult","JobStanding","getJobStandingsAsync","jobStandingData","jobStandingId","jobStandingName","getEmployeeInfoByIDAsync","insertEmploymentPathAsync","employmentPath","newStartDate","newEndDate","currentEndDate","peopleID","existingPathID","insertEmploymentInfoAsync","startDatePosition","endDatePosition","transportation","typeOfWork","selfEmployed","email","PositionId","typeOfEmployment","getJobStandingsDropDownAsync","getEmployerDropDownAsync","getPositionDropDownAsync","getTransportationDropDownAsync","getTypeOfWorkDropDownAsync","getTypeOfEmploymentDropDownAsync","getWagesEntriesAsync","getWagesCheckboxEntriesAsync","insertWagesAsync","hoursWeek","hoursWages","wagesID","saveCheckboxWagesAsync","chkboxName","IsChacked","textboxValue","getPositionTaskEntriesAsync","getInitialPerformanceDropdownAsync","insertPositionTaskAsync","task","initialPerformance","initialPerformanceNotes","employeeStandard","jobTaskID","getWorkScheduleEntriesAsync","isNewPositionEnableAsync","getEmployeementPathAsync","insertWorkScheduleAsync","dayOfWeek","WorkScheduleID","getLastTaskNumberAsync","deleteWagesBenefits","deleteWagesBenefitsResult","deleteWorkSchedule","deleteWorkScheduleResult","deletePostionTask","PositionID","deletePostionTaskResult","getEmployeeStatusDropDownAsync","createNewEmploymentPathAsync","currentStatus","pathToEmployment","pathToStartDate","EmploymentInformation","getEmployeeInfoByID","tempstartDatePosition","tempendDatePosition","tempposition","tempjobStanding","tempemployer","temptransportation","temptypeOfWork","tempselfEmployed","tempname","tempphone","tempemail","consumersID","getEmployeepath","existingEndDate","isNewPositionEnable","temptypeOfEmployment","PositionName","SelectedConsumersName","isNewPositionEnableResult","IsEmployeeEnable","employeeInforWrap","buildNewEmploymentForm","createEmploymentPathPopupBtn","getEmployeeInfoByIDResult","getEmployeementPathResult","existingStartDate","employerDropdown","transportationDropdown","typeOfWorkDropdown","typeOfEmploymentDropdown","isSelfEmployed","emailInput","saveEmployeeInfo","CancleValidate","UPDATE_BTN","updatePathPopupBtn","addEmployerBtn","messageHeading","msgWrap","infoWrap","populateDropdowns","checkRequiredFieldsOfEmployeeInfo","getRequiredFieldsOfEmployeeInfo","setBtnStatusOfEmployeeInfo","selectedConsumerOption","getPositionDropDownResult","getEmployerDropDownResult","getJobStandingsDropDownResult","getTransportationDropDownResult","Transportation","transportationData","transportationId","transportationName","getTypeOfWorkDropDownResult","TypeOfWork","typeOfWorkData","typeOfWorks","typeOfWorkId","typeOfWorkName","getTypeOfEmploymentDropDownResult","TypeOfEmployment","typeOfEmploymentData","typeOfEmployments","updatePathPopup","currentPathEndDate","newPathEmploymentDropdown","newPathStartDate","newPathEndDate","saveNewPathPopup","PopupEventListeners","populateNewPathEmploymentDropdown","checkRequiredFieldsOfEmploymentPath","newPathEmployment","CurrentEndDate","setBtnStatusOfEmploymentPath","pathName","insertEmploymentPathResult","pathId","insertEmploymentInfoResult","CancleEmploymentInfoPopup","createPathPopup","currentStatusDropdown","pathToEmploymentDropdown","pathToEmploymentStartDate","CONTINUE_BTN","createNewPath","CREATE_PATH_CANCEL_BTN","createEmploymentPathPopupEventListeners","populateEmploymentStatusDropdowns","checkRequiredFieldsOfCreateEmploymentPath","currentSts","pathToEmp","pathStartDt","setBtnStatusOfCreateEmploymentPath","getEmployeeStatusDropDownResult","EmpStatus","empStatus","empStatusId","empStatusName","createNewEmploymentPathResult","WagesBenefits","PositionTask","WorkSchedule","TabPosition","PositionEntriesTable","PositionEntries","LastTaskNumber","actualTaskNumber","positionWrap","buildNewPositionForm","positionDiv","NEW_POSITION_BTN","addPositionPopupBtn","buildPositionEntriesTable","getPositionTaskEntriesResult","jobTaskId","deletePositionTaskPOPUP","deletePositionTask","getLastTaskNumberResult","lastTaskNumber","initialPerformanceID","positionValue","addPositionPopup","taskInput","descriptionInput","initialPerformanceDropdown","initialPerformanceNotesInput","employeeStandardInput","checkRequiredFieldsOfPopup","saveNewPositionPopup","setBtnStatusOfPopup","getInitialPerformanceDropdownResult","InitialPerformance","initialPerformanceData","initialPerformanceId","initialPerformanceName","insertPositionTaskResult","WagesEntriesTable","CheckBoxEntries","vacationSickChk","retirementChk","medicialChk","DiscountChk","otherChk","otherValue","isOverLapRecord","eligibleBenefits","eligibleBenefitschkBox","vacationSickchkBox","medicalVisionchkbox","retirementchkBox","empDiscountchkBox","otherchkBox","wagesInfoWrap","buildNewWagesBenefitsForm","wagesDiv","otherInputText","getWagesCheckboxEntriesResult","vacationSick","retirement","medical","empDiscount","otherText","saveWagesChecked","checkBoxValidation","disableCheckBox","otherChecked","NEW_WAGES_BTN","addWagesPopupBtn","buildWagesEntriesTable","chk1Div","getWagesEntriesResult","hoursPerWeek","wagesPerHour","wagesId","deleteWagesBenefitsPOPUP","empValue","addWagesPopup","weekHours","wagesHours","saveNewWagesPopup","weekPerHour","insertWagesResult","saveCheckboxWagesResult","medicalVision","eligibleForBenifitConfirmPOPUP","workScheduleEntriesTable","ScheduleEntries","weekDaysSelection","nameOfEvent","toRemoveWeekName","getWorkScheduleEntriesResult","WorkScheduleId","timeInHours","totalHours","toHoursAndMinutes","padToTwoDigits","padStart","buildNewWorkScheduleForm","workScheduleDiv","NEW_SHIFT_BTN","addWorkSchedulePopupBtn","buildworkScheduleEntriesTable","deleteWorkSchedulePOPUP","eventName","workScheduleValue","addWorkSchedulePopup","checkboxlable","sundaylable","sundaychkBox","mondaylable","mondaychkBox","tuesdaylable","tuesdaychkBox","wednesdaylable","wednesdaychkBox","thursdaylable","thursdaychkBox","fridaylable","fridaychkBox","saturdaylable","saturdaychkBox","dayOfWeekDropdown","NewStartTime","NewEndTime","dayChkWrap","timebtnWrap","populateWeekDaysDropdown","weekDay","timeEnd","timeStart","sundaychk","mondaychk","tuesdaychk","wednesdaychk","thursdaychk","fridaychk","saturdaychk","chklable","dayOfWeekDropdownData","insertWorkScheduleResult","defaultval","displayfromBLOBBtn","documntId","newFormBtn","isFormLocked","templateId","templateDropdown","doneBtn","loadPDFFormsLanding","buildNewFormBtn","formsConsumer","hasAssignedFormTypes","getconsumerFormsResult","consumerForms","formsAjax","getconsumerFormsAsync","consumerForm","formCompleteDate","formatCompleteDate","formType","formDescription","formLastUpdated","formUserUpdated","formId","formEditPopup","isTemplate","documentEdited","isRefresh","createTemplatePopUp","selectTemplatePopup","thisCompleteDate","completeDateInput","templatePopupDoneBtn","doneButton","templatePopupCancelBtn","templateDropdownValidation","templateDropdownOptions","completeDate","getUserFormTemplatesResult","templates","getUserFormTemplatesAsync","uniqueForms","template","exists","formTemplateId","viewer","viewerWrap","checkFormsLockValue","checkFormsLock","openFormEditor","displayStepFormPopup","stepId","docOrder","formName","openStepFormEditor","displayWFStepFormPopup","templateName","documntEdited","openEditor","openPDFEditor","deleteConsumerFormAsync","deleteConsumerFormResult","formeditpopup","updateConsumerFormCompletionDateAsync","openEditorResult","WorkflowViewerAjax","insertStepDocumentAsync","insertWorkflowStepDocumentResult","documentId","newDocObj","newStepDocComponent","WorkflowDocumentComponent","render","stepsContainer","documentsList","Tools","Annotations","openPDFEditorResult","updateStepDocumentAsync","updateWorkflowStepDocumentResult","updatedDocument","closeDocument","getPDFDocData","documentNotAllowedSaveAlert","openFormEditorResult","formID","updateConsumerFormAsync","updateConsumerFormResult","insertConsumerFormAsync","insertConsumerFormResult","closewarningPopup","removeFormsLock","getPDFFormData","resultStepDoc","formtemplateid","formdata","formCompletionDate","closewarningpopup","continueNoSaveBtn","mustSaveBtn","checkFormsLockResult","removeFormsLockResult","involvementTypes","incidentLocations","categories","employeeNames","getInvolvementTypes","getLocations","getCategories","getEmployeeNames","getInvolvementTypesPromise","incidentTrackingAjax","getInvolvementTypeData","getIncidentCategoriesPromise","getIncidentCategories","getIncidentLocationDetailPromise","getIncidentLocationDetail","getEmployeesInvolvedEmployeeDropdownPromise","getEmployeesInvolvedEmployeeDropdown","loadLandingPage","newIncidentBtn","incidentOverview","sendNotification","notificationType","employeeId","incidentTypeDesc","incidentDate","incidentTime","subcategoryId","getITInvolvementTypeDataResult","getITIncidentCategoriesResult","getITIncidentLocationDetailResult","getConsumerServiceLocations","getITConsumerServiceLocationsResult","updateIncidentTrackingDaysBack","updatedReviewDays","updateIncidentTrackingDaysBackResult","getITReviewTableData","getITReviewTableDataResult","getReviewPageLocations","getLocationsIncidentTrackingReviewPageResult","getEmployeesInvolvedEmployeeDropdownResult","getITReviewPageEmployeeListAndSubList","supervisorId","getIncidentEditReviewDataAllObjects","incidentId","getIncidentEditReviewDataAllObjectsResult","deleteITIncident","saveUpdateITIncident","incidentData","notifyArr","notifyEmployeeString","employeeIdArr","employeeIdString","saveUpdate","saveUpdateITIncidentResult","getReviewedByDropdown","getReviewedByDropdownResult","getInjuryLocationsDropdown","getInjuryLocationsDropdownResult","getInjuryTypesDropdown","getInjuryTypesDropdownResult","getitConsumerFollowUpTypes","getitConsumerFollowUpTypesResult","getitConsumerBehaviorTypes","getitConsumerBehaviorTypesResult","getitReportingCategories","getitReportingCategoriesResult","getInterventionTypesDropdown","getInterventionTypesDropdownResult","getitConsumerInterventions","getitConsumerInterventionsResult","getitConsumerInjuries","getitConsumerInjuriesResult","getitConsumerReviews","getitConsumerReviewsResult","getitConsumerFollowUps","getitConsumerFollowUpsResult","getitConsumerReporting","getitConsumerReportingResult","getitConsumerBehavior","getitConsumerBehaviorsResult","itDeleteConsumerFollowUp","itConsumerFollowUpId","itDeleteConsumerFollowUpResult","saveUpdateITConsumerFollowUp","saveUpdateITConsumerFollowUpResult","saveUpdateITConsumerInjuries","saveUpdateITConsumerInjuriesResult","itDeleteConsumerInjuries","itConsumerInjuryId","itDeleteConsumerInjuriesResult","itDeleteConsumerInterventions","itConsumerInterventionId","itDeleteConsumerInterventionsResult","saveUpdateITConsumerInterventions","saveUpdateITConsumerInterventionsResult","itDeleteConsumerReporting","itConsumerReportingId","itDeleteConsumerReportingResult","saveUpdateITConsumerReporting","saveUpdateITConsumerReportingResult","itDeleteConsumerReviews","itConsumerReviewId","itDeleteConsumerReviewsResult","saveUpdateITConsumerReviews","saveUpdateITConsumerReviewsResult","itDeleteConsumerBehavior","itConsumerBehaviorId","itDeleteConsumerBehaviorsResult","saveUpdateITConsumerBehaviors","saveUpdateITConsumerBehaviorsResult","updateIncidentViewByUser","generateIncidentTrackingReport","generateIncidentTrackingReportResult","checkIfITReportExists","checkIfITReportExistsResult","sendIncidentTrackingReport","incidentTrackingEmailReportData","toAddresses","ccAddresses","bccAddresses","emailSubject","emailBody","sendIncidentTrackingReportResult","buildInfal","holder","headerText","InfalGetJobsAjax","getInfalUsernameDataSetter","empId","infalAjax","getInfalUserNameAjax","setInfalUserNameToScreen","InfalGetJobsResult","InfalGetClockInsAndOutsAjax","InfalGetClockInsAndOutsResult","InfalClockInAjax","resObj","InfalClockOutAjax","notifyOtherTabs","userActivityChannel","postMessage","BroadcastChannel","isOriginalTab","autoLogout","isPopupVisible","idleTime","logoutInterval","timerIncrement","timeLimit","logoutPopup","logoutMessage","unloadApp","newTabsPopup","handleLogoutButtonClick","oneSpanDocumentStatus","oneSpanDocumentData","checkOneSpanData","oneSpanAjax","oneSpanCheckDocumentStatus","signedStatus","oneSpanRetrieveData","packageId","assessmentID","oneSpanGetSignedDocuments","fireDataUpdateEvent","dataUpdateEvent","shouldBeDisabled","signatureTypeToCheck","updatedMemberData","getConsentAndSignData","signatureType","signature","buildPopupMessage","sendToOneSpanProgress","oneSpanPopup","sentStatus","oneSpanBuildSigners","pendingSavePopup","savePopup","failPopup","showOneSpanPopup","buildSendDocumentToOneSpanBtn","teamMemberData","sendDocumentToOneSpanBtn","versionID","extraSpace","isp","oneSpanBuildSignersResult","oneSpanGetSignedDocumentsResult","oneSpanCheckDocumentStatusResult","OODEmployers","loadOODLanding","isEmployerIdReferenced","serviceDateInput","CLEAREDSERVICEDATE","editEmployersBtn","createFormsBtn","newEntryBtn","newSummaryBtn","OODEntriesTable","OODConsumerBtns","serviceDateStartInput","serviceDateEndInput","employeeDropdown","servicesDropdown","referenceNumbersDropdown","serviceDateStartBtnWrap","serviceDateEndBtnWrap","employeeBtnWrap","serviceBtnWrap","referenceNumberBtnWrap","OODENTRIESFILTER","FORM4MONTHLYSUMMARYSERVICES","consumerServicesDropdown","consumerServicesDoneBtn","selectConsumerServicePopup","selectedConsumerServiceId","selectedConsumerReferenceNumber","selectedConsumerServiceType","selectedConsumerFormNumber","selectedConsumerServiceName","summaryServicesDropdown","summaryServicesDoneBtn","selectSummaryServicePopup","buildOODEntriesTable","getOODEntriesResult","OODEntries","getOODEntriesAsync","referenceNumber","formatServiceDate","userUpdated","formNumber","rowConsumer","OODReportType","getForm4MonthlyPlacementEditData","Id","OODForm4MonthlyPlacement","getForm4MonthlySummary","OODForm4MonthlySummary","getForm6Tier1andJDPLan","Tier1andJDPlanForm","getForm8CommunityBasedAssessment","communityBasedAssessmentForm","getForm8MonthlySummary","communityBasedAssessmentSummaryForm","getForm10TransportationData","OODFormTransportation","getForm16SummerYouthWorkExperience","summerYouthWorkExperienceForm","getForm16MonthlySummary","summerYouthWorkExperienceSummaryForm","buildEntryServicePopUp","btnType","summaryBtn","buildSummaryServicePopUp","buildEditEmployersBtn","buildCreateFormsBtn","oodBtnsWrap","getConsumerServiceCodesResult","consumerServices","getConsumerServiceCodesAsync","buildNoServicesPopup","populateConsumerServiceCodeDropdown","servicePopupCancelBtn","serviceDateInputRequired","consumerServicesDropDownRequired","servicePopupDoneBtn","todayDate","thisServiceDate","noServicesPopup","populateMonthlySummaryServiceCodeDropdown","summaryServicesDropDownRequired","selectServicePopup","thisConsumer","thisselectedConsumerServiceId","thisselectedConsumerReferenceNumber","thisselectedConsumerServiceType","thisselectedConsumerFormNumber","thisselectedConsumerServiceName","generateAndTrackFormProgress","generateForm4","generateForm6","generateForm8","generateForm10","generateForm16","formsPopup","buildIndividualFormBtn","formText","showCreateFormsPopup","form4Btn","form6Btn","form8Btn","form10Btn","form16Btn","filteredDate","serviceDateStartBtn","serviceDateEndBtn","employeeBtn","employeeCloseBtn","serviceBtn","serviceCloseBtn","referenceNumberBtn","referenceNumberCloseBtn","filterPopupDoneBtn","populateEmployeeDropdown","populateServiceCodeDropdown","populateReferenceNumberDropdown","getActiveEmployeesResult","getActiveServiceCodesResult","getActiveServiceCodesAsync","serviceType","getConsumerReferenceNumbersResult","referencenumbers","getConsumerReferenceNumbersAsync","referencenumber","getConsumerEmployersAsync","getEmployerJSONResult","serviceCodeType","getContactTypesAsync","getOutcomesAsync","getContactMethodsAsync","FormType","formtype","getIndicatorsAsync","getForm4MonthlyPlacementEditDataJSONResult","updateForm4MonthlyPlacementEditData","SAMLevel","contactType","jobSeekerPresent","outcome","TSCNotified","bilingualSupplement","interview","updateForm4MonthlyPlacementEditDataResult","insertForm4MonthlyPlacementEditData","insertForm4MonthlyPlacementEditDataResult","deleteOODFormEntryAsync","emReviewId","getForm4MonthlySummaryJSONResult","updateForm4MonthlySummary","emReviewDate","emReferenceNumber","emNextScheduledReview","emEmploymentGoal","emReferralQuestions","emIndivInputonSearch","emPotentialIssueswithProgress","emPlanGoalsNextMonth","emNumberofConsumerContacts","emNumberEmployerContactsbyConsumer","emNumberEmployerContactsbyStaff","emNumberMonthsJobDevelopment","updateForm4MonthlySummaryResult","insertForm4MonthlySummary","insertForm4MonthlySummaryResult","deleteFormMonthlySummaryAsync","getForm6Tier1andJDPLanResult","updateForm6Tier1andJDPLan","contactMethod","narrative","updateForm6Tier1andJDPLanResult","insertForm6Tier1andJDPLan","insertForm6Tier1andJDPLanResult","getForm8CommunityBasedAssessmentResult","updateForm8CommunityBasedAssessment","behavioralIndicators","jobTaskQualityIndicators","jobTaskQuantityIndicators","interventions","updateForm8CommunityBasedAssessmentResult","insertForm8CommunityBasedAssessment","insertForm8CommunityBasedAssessmentResult","getForm8MonthlySummaryResult","updateForm8MonthlySummary","emSummaryIndivSelfAssessment","emSummaryIndivEmployerAssessment","emSummaryIndivProviderAssessment","emSupportandTransition","emReviewVTS","updateForm8MonthlySummaryResult","insertForm8MonthlySummary","insertForm8MonthlySummaryResult","OODTransportationId","getForm10TransportationDataResult","updateForm10TransportationData","numberInVehicle","startLocation","endLocation","updateForm10TransportationDataResult","insertForm10TransportationData","insertForm10TransportationDataResult","getForm16SummerYouthWorkExperienceResult","updateForm16SummerYouthWorkExperience","updateForm16SummerYouthWorkExperienceResult","insertForm16SummerYouthWorkExperience","insertForm16SummerYouthWorkExperienceResult","getForm16MonthlySummaryResult","updateForm16MonthlySummary","emOfferedHoursNotWorkNumber","updateForm16MonthlySummaryResult","insertForm16MonthlySummary","insertForm16MonthlySummaryResult","deleteOODForm10TransportationEntry","onsubmit","userIdInput","referenceNumberInput","peopleIdInput","serviceCodeIdInput","startDateInput","endDateInput","addEditOutcomeServices","outcomeServicesData","addOutCome","backBtn","outcomeTypeDropdown","effectiveDateStart","effectiveDateEnd","outcomeTypeBtnWrap","effectiveDateBtnWrap","selectedConsume","buildNewOutcomeServices","backbtnWrap","addOutcomesButton","backButton","outcomesAjax","getOutcomeServicsPageData","outcomeTypeName","addOutcomes","backToOutcomeLoad","outcomeTypeBtn","outcomeTypeCloseBtn","effectiveDateBtn","effectiveDateEndInput","btnFilterWrap","populateOutcomeTypeDropdown","getOutcomeTypeDropDownResult","OutcomeType","getOutcomeTypeDropDownAsync","outcomeTypeData","outcomeTypes","Goal_Type_ID","goal_type_description","goalID","goal_id","toggleIcon","outcomeStatement","serviceTyp","serviceStatement","addServicesForm","objective_Id","currentTarget","goalId","buildNewOutcomes","importantOutcomeForm","buildOutComeForm","getGoalEntriesByIdAsync","getGoalEntriesByIdResult","outcomeDropdown","outcomeStatementInput","dateStart","dateEnd","saveUpdateOutcomes","populateOutcomeTypesDropdown","requiredFieldsOfAddOutcome","getLocationDropDownResult","locationDrop","getLocationDropDownAsync","locationData","locationDrops","locationDescription","checkRequiredFieldsOfAddOutcome","startDateVal","endDateVal","outcomeStatementVal","outComeVal","setBtnStatusOfAddOutcome","insertOutcomeInfoAsync","insertOutcomeInfoResult","servicesStatement","ServiceType","ServiceTypeName","frequencyModifier","frequencyPeriod","objectiveId","outcomeGoalId","duration","ObjectiveID","buildNewServicesForm","buildServicesForm","getObjectiveEntriesByIdAsync","getObjectiveEntriesByIdResult","objective_type","objective_method","success_determination","frequency_modifier","frequency_occurance","frequency_peroid","ServiceTypeDropdown","servicesStatementInput","methodInput","successInput","frequencyModifierDropdown","frequencyInput","frequencyPeriodDropdown","durationInput","saveUpdateOutcomesService","addNewServiceCard","addNewServiceCardBody","durationWrap","populateOutcomeDropdown","populatefrequencyModifierDropdown","RequiredFieldsOfAddServiceForm","getServiceFrequencyTypeDropDownResult","ServiceFrequency","getServiceFrequencyTypeDropDownAsync","ServiceFrequencyData","serviceFrequency","serviceFrequencyType_id","serviceFrequencyType_name","getOutcomeServiceDropDownResult","getOutcomeServiceDropDownAsync","goal_serviceStatement","ServiceFrequencyType","serviceFrequencyType","frequencyPeriodDropdownData","getRequiredFieldsOfAddServiceForm","servicesStatementVal","insertOutcomeServiceInfoAsync","insertOutcomeServiceInfoResult","OUTCOMES_SECTION","filterButton","serviceDropdown","applyButton","currDate","currService","currOutcome","currOutcomeId","selectedConsumerObj","outcomesDataObj","outcomesPrompts","outcomesLocations","detailsPopup","primaryLocationDropdown","secondaryLocationDropdown","resultsDropdown","promptsDropdown","attemptsDropdown","cIDropdown","timeInputs","noteInput","edit__lastEditedByDetails","ciData","successObj","successType","successDetails","currResult","currReason","currAttempts","currPrompt","currCI","currNote","currStartTime","currEndTime","defaultObjLocationId","defaultGoalLocationId","personId","activityId","objdate","goalnote","promptType","promptNumber","locationSecondaryId","goalStartTime","goalEndTime","goalCILevel","dateSpanMessage","daysBack","useConsumerLocation","defaultPrimaryLocation","currentSection","todaysDateToDisplay","firstDayOfWeek","lastDayOfWeek","firstDayOfMonth","yearOfCurrentDay","dailyAbsent","initLoad","tmpService","tmpOutcome","tmpOutcomeId","editOutcomeBtn","disableNewOutcomeFields","disableOutcomeFieldsOtherUser","clearBackCardValues","sortOutcomes","occurrence","Objective_Recurrance","nullHourDaySuccesses","weekSuccesses","monthSuccesses","yearSuccesses","sortOutcomeLocations","Secondary","sortSuccessTypes","unOrderedSuccessObj","st","Objective_Success_Description","getObjectiveActivities","objectiveRecurrance","activities","initSaveData","Objective_id","saveNewOutcome","getInputValues","newOutcomeData","saveGoals","resetOutcomeSaveData","getConsumersWithRemainingGoals","loadCardView","promptTypeInput","promptNumberInput","goalnoteInput","deleteObjectiveActivity","deleteGoal","applyOutComeFilter","showAttempts","Show_Attempts","showPrompts","Show_Prompts","showTime","Show_Time","showCI","Show_Community_Integration","attemptsRequired","Attempts_Required","promptsRequired","Prompt_Required","timeRequired","Times_Required","ciRequired","Community_Integration_Required","noteRequired","Notes_Required","errorFree","validateStartEndTimes","checkErrors","startInput","endInput","checkShowFields","selectedConsumersToEnabledList","outcomeModuleBtn","dashButton","afterSelectionRoster","resetFilter","getOutcomesPrompts","getGoalsCommunityIntegrationLevelDropdown","ciResults","getDaysBackForEditingGoalsAndUseConsumerLocation","outcomes_use_consumer_location","consumer_location","setUpOutcomesTabSpans","dateForCalculations","getOutcomeCompletion","recurrance","occurance","Frequency_Occurance","freqModifier","Frequency_Modifier","successArray","isComplete","filterOutcomes","filterByData","outcomeId","filteredOutcomesDataObj","filterObject","freqKeys","od","completion","tmpDate","getGoals","populateOutcomes","outcomeDd","outcomeTypeText","populateServiceDropdown","getOutcomeTypeForFilter","buildFuckingDateInput","dateinput","currDateCache","currDateCheck","daysBackDateCheck","loadOutcomesCards","clone","buildPrimaryLocationDropdown","locId","Primary","pl","Location_ID","rePopSecondaryLocationDropdown","filteredOutcomesLocations","sl","primaryLocId","buildSecondaryLocationDropdown","buildResultsDropdown","Objective_Success","buildPromptsDropdown","op","Code","Caption","buildAttemptsDropdown","attempt","buildCommunityIntegrationDropdown","ciLevel","captionname","buildTimeInputs","buildNoteInput","buildSaveButton","isEdit","buildDeleteButton","deleteIncident","buildCardDetails","editData","Objective_ID","lastEditedTime","Last_Update","lastEditHH","lastEditMM","lastEditedDate","lastEdited","Locations_Secondary_ID","objective_success_description","Prompt_Type","Prompt_Number","community_integration_level","start_time","end_time","submitted_by_user_id","Objective_Activity_Note","buildCardEnteredByDetails","timeWrap","buildActivityTracker","activityCount","activityLimit","isAbsent","frequencySeparator","pathColor","percentComplete","dashOffset","path2Style","circle","buildSuccessPopup","successPopupText","successText","buildMethodPopup","methodPopupText","methodText","buildObjectiveActivities","objectiveActivities","outcomeRecurrance","activity","getObjectiveActivity","getOutcomesSuccessTypes","successTypes","getOutcomesPrimaryAndSecondaryLocations","buildCardOverview","Objective_Statement","hasPermission","typeDescription","goalStatement","Success_Determination","Objective_Method","lastUpdatedBy","editIconBtn","statement","lastUpdated","activityTracker","objLocationId","successBtn","methodBtn","successMethodWrap","wrapEdit","lastUpdatedDate","txtArea","buildCardContainer","populateNoFreqOutcomes","oc","populateHourlyOutcomes","populateDailyOutcomes","populateWeeklyOutcomes","populateMonthlyOutcomes","populateYearlyOutcomes","outcomesData","sortOutcomesAlpha","noFreqOutcomes","hourlyOutcomes","dailyOutcomes","weeklyOutcomes","monthlyOutcomes","yearlyOutcomes","defaultActiveSection","outcomeTabs","dashHandler","myconsumerId","myval","topFilterDateWrap","date_Input","outcomesService","outcomesType","outcomesConsumer","outcomesDate","editOutcomesServicesButton","documentingForDiv","dayBackDateSpanWrap","daysBackDiv","outcomesTabs","occur","buildAllowedConsumersObj","userIdsWithGoals","userIdsWithRemainingGoals","remainingGoalsIds","every","userReminingGoal","showAlert","showAlertIcon","getUserIdPromise","getUserIdsWithGoalsByDate","getRemainingDailyGoalsPromise","getRemainingDailyGoals","getViewableGoalIdsByPermission","goalDate","getGoalsByDateNewResult","getGoalSpecificLocationInfo","getGoalSpecificLocationInfoJSONResult","getIdsWithGoals","getUserIdsWithGoalsJSONResult","goalsCheckDate","getUserIdsWithGoalsByDateJSONResult","getDaysBackForEditingGoalsJSONResult","getViewableGoalIdsByPermissionJSONResult","ashLikesThisLoop","getRemainingDailyGoalsJSONResult","getGoalsCommunityIntegrationLevelJSONResult","getGoalsCommunityIntegrationRequired","getGoalsCommunityIntegrationRequiredJSONResult","getOutcomeTypeForFilterJSONResult","saveGoalResult","objectiveActivityId","getObjectiveActivityResult","getOutcomesPromptsResult","goalTypeId","getOutcomesSuccessTypesResult","getOutcomesPrimaryAndSecondaryLocationsResult","getSuccessSymbols","getSuccessSymbolLookupResult","getOutcomeServicsPageDataResult","Type","reportRunning","reportType","generateReportsAjax","generateReport","checkIfReportIsReadyInterval","createIndividualReportButton","reportWarningPopup","intSeconds","checkIfReportExists","callReport","reportData","generateReportResult","checkIfReportExistsResult","rosterGroups","rosterConsumers","groupedRosterConsumers","absentConsumers","consumersWithUnreadNotes","locationsWithUnreadNotes","ROSTER_LIST","ROSTER_WRAP","ROSTER_SPINNER","FILTER_BTN","SELECT_ALL_BTN","DESELECT_ALL_BTN","LOCATION_NOTES_BTN","MASS_ABSENT_BTN","FILTER_POPUP","loadingRosterWrap","loadRosterSpinner","MINI_ROSTER_BTN","MINI_ROSTER_POPUP","MINI_ROSTER_DONE","MINI_ROSTER_CANCEL","selectedLocationName","selectedLocationId","selectedGroupCode","hideDateFilter","selectedActive","filteredDateBtnWrap","selectedLocationNameBtnWrap","selectedActiveBtnWrap","totalConsumerCountBtnWrap","rosterListSelectable","selectedConsumerCache","allowedConsumerIds","consumersWithAlerts","totalConsumerCount","rosterGroupCount","islocationDisabled","MASS_SELECT_ALL_BTN","MASS_DESELECT_ALL_BTN","locationHasUnreadNote","selectedConsumersToActiveList","addConsumerToSelectedConsumers","removeConsumerFromSelectedConsumers","getSelectedConsumers","getSelectedConsumersCache","getSelectedConsumersMiniRoster","getAllRosterConsumers","getRosterData","getRosterConsumersData","addConsumerToActiveConsumers","clearHighlightedConsumers","consumers","selectNoneHighlightedConsumers","removeMiniRosterBtn","getSelectedLocationObj","getSelectedDate","getConsumersWithUnreadNotes","setRosterGroups","rosterData","setSelectedGroupData","defaultRosterGroup","defaultRosterGroupCode","defaultRosterGroupID","setSelectedLocationData","selectedLocationObj","setCustomDefaultLocationData","idArray","searchRoster","rc","FN","LN","middleName","MN","rosterlists","rl","groupRosterConsumers","populateRoster","updateTotalConsumerCount","filteredBy1","filteredDateBtn","selectedLocationNameBtn","selectedLocationNameCloseBtn","selectedActiveBtn","totalConsumerCountBtn","groupResults","getConsumerGroupsData","toggleMassAbsentBtn","filterApply","buildDateInput","buildLocationDropdown","buildGroupDropdown","buildActiveDropdown","activeDropdown","DATE_INPUT","LOCATION_DROPDOWN","GROUP_DROPDOWN","ACTIVE_DROPDOWN","setupFilterEvent","populateGroupDropdown","populateActiveDropdown","defaultValName","Residence","hasUnreadLocationNote","loc_id","allOpt","activeDropdownData","oldDate","oldLocationName","oldLocationId","oldGroupCode","oldGroupId","oldGroupName","oldRosterGroups","locationDropdownEvent","toggleLocationNotesBtn","hasUnreadNote","hasunreadnote","filterUpdateDisplay","consumerInfo","toggleHideShowAbsentMenuSection","customGroups","customRosterApplyFilterEvent","useAbsent","buildFilterBtn","buildSelectAllBtn","buildDeSelectAllBtn","buildLocationNotesBtn","locationNotesBtnClassNames","buildMassAbsentSelectAllBtn","buildMassAbsentDeselectAllBtn","buildMassAbsentBtn","buildManageGroupsBtn","MANAGE_GROUPS_BTN","wrap2","wrap3","populateConsumerCardPortraits","consumerCards","consumerData","fName","lName","mName","serviceLocations","LId","primaryLocation","conL","ac","isSelected","hasAlert","cwa","dateOfBirth","dob","isInactive","IDa","statusCode","isAllowed","details","alertIcons","ICONS","iconsSVG","iconSVG","hideOrShow","actionCenterChildren","children","actionNavCallback","buildActioNav","getMiniRosterHeadline","consumercount","buildMiniRosterPopup","rosterMarkup","miniRosterWrap","showMiniRosterPopup","rosterOptions","getRosterLocationsData","locationDisabled","buildRoster","selectable","disabledLocation","toggleMiniRosterBtnVisible","showBtn","getLocationsWithUnreadNotesData","locationNotesAjax","getLocationsWithUnreadNotes","getLocationsWithUnreadNotesResult","getConsumersByGroupData","getConsumerByGroupData","getConsumersByGroup","getConsumersByGroupJSONResult","getConsumersWithUnreadNotesByEmployeeAndLocationData","progressNotesAjax","getConsumersWithUnreadNotesByEmployeeAndLocation","getConsumersWithUnreadNotesByEmployeeAndLocationResult","forceGroupFilter","seenIds","consumersWithUnreadNotesResults","progressNotes","createConsumersWithUnreadNotesObj","getAbsentConsumers","toggleRosterListLockdown","lockItDown","refreshRosterList","rosterEventSetup","showCard","isConsumerSelected","currentlySelectedConsumer","currentlySelectedConsumerId","groupCount","nextGroup","initMassAbsent","loadManageGroupsPage","locationNotes","loadAllNotesPage","loadingMore","rosterGroupKeys","otherOpts","loadRosterInfo","showActionNavCancel","forMiniRoster","consumerInfoCard","getIndividualAbsentData","checkForIndividualAbsentJSONResult","getAllAttachments","getAllAttachmentsResult","getConsumerDemographics","getConsumerDemographicsJSONResult","getConsumerRelationships","getConsumerRelationshipsJSONResult","getDemographicsNotes","getDemographicsNotesJSONResult","getConsumerScheduleLocation","getConsumerScheduleLocationResult","getConsumerSchedule","scheduleData","populateConsumerScheduleResult","updatePortrait","imageFile","getPSIUserOptionListJSONResult","updateConsumerDemographics","updateDemographicsRecordResult","removeConsumerPhoto","removeConsumerPhotoResult","verifyDefaultEmailClient","rosterWorkflow","displayWFwithMissingResponsibleParties","workflowIds","strWorkflowIds","convertedstrWorkFlowIds","getWFwithMissingResponsibleParties","constrWorkFlowIds","responsibleData","workflowNames","strWorkflowNames","missingResponsiblePartyAlert","alertPopup","alertbtnWrap","alertokBtn","alertMessage","showAddWorkflowPopup","selectedWorkflows","wfPopup","wfvData","getManualWorkflowList","processId","referenceId","notPlan","workflowList","wfvItem","workflowTemplateId","templateID","wf","wftemplateId","workflowId","copyWorkflowtemplateToRecord","newScreen","buildWorkflowScreen","onResetViewer","workflowViewer","WorkflowViewerComponent","addWorkflowBtn","getWorkflowScreen","onResetViewerFunc","workflowConsumerId","workflowConsumerName","scheduling","loadSchedulingLanding","schedulingCalendarBtn","schedulingCalendar","schedulingRequestTimeOffBtn","schedulingRequestTimeOff","schedulingApproveRequestBtn","schedulingApproveRequest","schedulingAjax","getLocationDropdownForSchedulingAjax","getLocationDropdownForSchedulingResult","getSchedulesForSchedulingModuleAjax","getSchedulesForSchedulingModuleResult","requestDaysOffSchedulingAjax","getCallOffDropdownReasonsAjax","getCallOffDropdownReasonsResult","getCallOffDropdownEmployeesAjax","shiftDate","getCallOffDropdownEmployeesResult","getRequestTimeOffDropdownEmployees","getRequestTimeOffDropdownEmployeesResult","saveSchedulingCallOffRequestAjax","saveSchedulingCallOffRequestResult","getDayOfWeekScheduleAjax","getDayOfWeekScheduleResult","getScheduleApptInformationAjax","getScheduleApptInformationResult","saveOpenShiftRequestSchedulingAjax","saveOpenShiftRequestSchedulingResult","getOverlapStatusforSelectedShiftAjax","shiftId","getOverlapDataforSelectedShiftAjax","cancelRequestOpenShiftSchedulingAjax","requestShiftId","cancelRequestOpenShiftSchedulingResult","approveDenyOpenShiftRequestSchedulingAjax","approveDenyOpenShiftRequestSchedulingResult","approveDenyCallOffRequestSchedulingAjax","approveDenyCallOffRequestSchedulingResult","approveDenyDaysOffRequestSchedulingAjax","approveDenyDaysOffRequestSchedulingResult","getScheduleMyApprovalDataAjax","getScheduleMyApprovalDataResult","newPlanBtn","assignCaseLoadBtn","planSetupPage","setupWrap","prevPlanTable","datesBoxDiv","addedMemberPopup","planHeader","planHeaderButtons","planHeaderGeneralInfoBar","morePopup","morePopupMenu","editDatesScreen","updateStatusScreen","deleteScreen","reactivateScreen","addWorkflowScreen","reportsScreen","reportsAttachmentScreen","DODDScreen","portalScreen","sendToDODDScreen","changePlanTypeScreen","generalInfoBar","previousPlansData","planStatus","planActiveStatus","sentToOnet","downloadedFromSalesforce","hasPreviousPlans","priorConsumerPlanId","thisPreviousPlanId","addWorkflowDoneBtn","planAttBody","workflowAttBody","signatureAttBody","portalPlanAttBody","portalWorkflowAttBody","portalSignatureAttBody","DODDplanAttBody","DODDsignAttBody","DODDworkflowAttBody","include","includeCheckbox","launchWorkflowViewer","WorkflowProcess","CONSUMER_PLAN_REVISION","CONSUMER_PLAN_ANNUAL","pId","pageLoadCallback","offsetTop","consumerFirstName","consumerLastName","plans","planAjax","getConsumerPlans","pd","consumerPlanId","assessmentData","assessment","getAssessmentData","effectiveStart","effectiveEnd","planDates","planYearStartDate","planYearStart","planYearEndDate","planYearEnd","effectiveStartDate","effectiveEndDate","planReviewDate","reviewDate","buildPlanPage","checkForSalesForce","getConsumerPeopleId","getSelectedConsumer","getCurrentPlanId","getCurrentPlanType","getPlanStatus","getPlanActiveStatus","getPlanDropdownData","getHasPreviousPlans","getISPValidation","setSelectedConsumer","setPlanId","newPlanId","setPlanType","newPlanType","setPlanStatus","newPlanStatus","setRevisionNumber","revNum","setPlanActiveStatus","newActiveStatus","clearAllDataKeepConsumer","clearData","assessmentCard","clearPlanId","refreshMoreMenu","newMorePopupMenu","buildMorePopupMenu","menuInnerWrap","buildEditDatesScreen","screen","validDates","updateBtn","dateBoxDiv","buildDatesBox","updatePlanDates","successDiv","refreshGeneralInfo","refreshAssessmentCard","ISP","refreshISP","resetPlanDatesToOriginal","updateBoxDateValues","buildUpdateStatusScreen","newStatus","updateConsumerPlanSetStatus","finalizeBtn","buildDeleteScreen","getEffectiveStartDate","formatedDate","splitFormatedDate","esDate","getConsumerNameFromCard","deletePlan","isNew","newOutcome","planOutcomesAjax","deletePlanOutcome","buildReactivateScreen","updateConsumerPlanReactivate","buildAddWorkflowScreen","populateAddWorkflowScreen","getProcessId","getWorkflowList","list","buildWorkflowList","buildReportsScreen","attachmentsWrap","attachHeading","planAttWrap","workflowAttWrap","signatureAttWrap","planHeading","workflowHeading","signHeading","buildReportsAttachmentsScreen","buildDODDScreen","DODDplanAttWrap","DODDsignatureAttWrap","DODDworkflowAttWrap","buildPortalScreen","portalPlanAttWrap","portalWorkflowAttWrap","portalSignatureAttWrap","buildSendToDODDScreen","buildChangePlanTypeScreen","origDateCache","origType","newType","previousPlansTable","newPlan","newPlanData","currentType","buildPreviousPlansTable","selectedPlan","planData","setRevisionPlanDates","previouslySeletedRow","resetPlanDatesFromChangeTypeMenu","updatePlanType","prevPlanId","getPlanYearStartDate","getPlanYearEndDate","getEffectiveEndDate","getPlanReviewDate","typeSelect","getAttachmentIds","getwfstepdocIds","workflowstepdocId","runReportScreen","selectedAttachmentsPlan","selectedAttachmentsWorkflow","selectedAttachmentsSignature","getPlanAndWorkFlowAttachments","order","sigAttachmentId","whereFrom","isSuccess","screenInner","checkboxArea","planAttachmentIds","wfAttachmentIds","sigAttachmentIds","generateReportWithAttachments","checkboxText","runPortalScreen","sendSuccess","transeferPlanReportToONET","sendToPortalAlert","runDODDScreen","assessmentAjax","sendSelectedAttachmentsToDODD","statusText","sendtoDODDSuccessMessage","sendtoDODDGeneralErrorMessage","sendtoDODDResponse","generalMessagePopup","generalBtnWrap","closeBtnWrap","clipboard","writeText","showOKPopup","displayDetailBtn","sendtoDODDDetailErrorMessage","closeBtn","generalMessage","detailMessagePopup","detailBtnWrap","displayGeneralBtn","detailMessage","OKPopup","OKBtnWrap","OKMessage","sendtoDODDSuccessPopup","sendtoDODDSuccessMesssage","sendtoPortalResponse","morepopupmenu","reportBtn","reportBtn2","reportSignatureBtn","reportBtn3","sendtoPortalBtn","sendToDODDBtn","editDatesBtn","statusBtn","reactivateBtn","changeTypeBtn","sentToOnetPDiv","targetScreen","targetScreenElement","showMorePopup","splitStringSentence","sentence","splitsentence","firstPart","secondPart","handleReportStream","report","mapResultsObj","rest","showFinalizePopup","currScreen","checkboxesSelected","finalizationResults","includeInAssessment","finalizePopup","screen1","screen2","screen3","heading1","heading2","selectedCheckboxes","selectAllCheck","finalizationActions","emailAddresses","selectedEmails","checkBoxes","toONET","signatureOnly","downloadReportCheck","resultsObj","actions","sendToDODDStatus","sendToOhioNetStatus","downloadReportStatus","emailReportStatus","DODD","sendToDODDStatusIcon","sendToOhioNetStatusIcon","ONET","downloadReportStatusIcon","REPORT","emailReportStatusIcon","EMAIL","sendToDODDCheck","sendToOhioNetCheck","emailReportCheck","emails","getDefaultEmailsForFinalization","checkboxWrap","addEmailBtn","autoIncrementId","deleteEmail","attachWraper","includeInAssessmentCheck","buildGeneralInfoBar","firstName2","lastName2","PlanStartDate","PlanEndDate","EffectiveStartDate","EffectiveEndDate","formatedDate2","splitFormatedDate2","edDate","formatedDate3","splitFormatedDate3","starDate","formatedDate4","splitFormatedDate4","dateSpan","dateSpanEff","typeAndNum","moreBtn","buildPlanHeader","getWorkflowMarkup","workflowMarkup","addWorkflowPopup","loadingOrder","workflowDashboardCallback","loadingBar","planAttachment","getAttachments","assessmentWrap","workflowWrap","firstToLoad","defaultActiveTab","loadedAppPage","workflowLoadingBar","newWorkflowMarkup","assessmentMarkup","mainAssessment","markUnansweredQuestions","tableOfContents","showUnansweredQuestionCount","sortPreviousPlans","aStart","bStart","handleTypeChange","setAnnualPlanDates","handleDoneBtnClick","createNewPlan","workflowCallback","selectedwfForms","wfvPopup","thisannual_plan","wfFormsData","getWorkFlowFormsfromPreviousPlan","selectedWFTemplateIds","previousPlanId","wfFormsPopup","linebr","selectedPreviousWfForms","getselectedWorkFlowForms","wf_template_selected","buildWorkflowFormList","showWorkflowListPopup","getSelectedConsumerName","currentPlanId","insertedSSA","wfDocIds","salesForceCaseManagerId","getStateCaseManagerforConsumer","planYearReviewDate","returnString","insertAnnualPlan","insertRevisedPlan","useLatestPlanVersion","thiswfForms","thiswfFormslist","WFtemplateId","wantedFormAttachmentIds","priorReferenceId","autoworkflowIds","insertAutomatedWorkflows","autoWFIds","showAddedToTeamMemberNoCasemanagerFoundPopup","addedMemberNoCaseManagerPopup","showAddedToTeamMemberPopup","forChangeType","callbackForChangeType","prevPlan","toggleNewPlanDoneBtn","disable","buildNewPlanSetupPage","showInvalidSalesForceWarningPopup","buildNewPlanBtn","isValidSalesforce","validateConsumerForSalesForceId","buildAssignCaseloadBtn","csAssignCaseload","showAssignCaseLoadPopup","buildDownloadPlanBtn","downloadPlanFromSalesforceProgress","downloadPlanFromSalesforce","downloadedDate","downloadDate","sentToDODD","dateSentDODD","userSentDODD","setReviewPlanDates","aDate","bDate","aDateObj","bDateObj","loadLanding","getConsumerPlansResult","getConsumerPlanYearInfo","getConsumerPlanYearInfoResult","getServiceAndSupportsDataResult","getPlanAndWorkFlowAttachmentsResult","insertConsumerPlanAnnualResult","insertConsumerPlanRevisionResult","insertAutomatedWorkflowsResult","addSelectedAttachmentsToReport","addSelectedAttachmentsToReportResult","updateConsumerPlanReactivateResult","updateConsumerPlanSetStatusResult","updateConsumerPlanSetAnnualDates","updateConsumerPlanSetAnnualDatesResult","updateConsumerPlanSetRevisionEffectiveDates","updateConsumerPlanSetRevisionEffectiveDatesResult","updateConsumerPlanReviewDate","updateConsumerPlanReviewDateResult","uploadPlanToDODD","uploadPlanToDODDResult","switchPlanTypeResult","deleteConsumerPlanResult","viewPlanAttachment","addPlanAttachment","addPlanAttachmentResult","deletePlanAttachment","getPlanAttachmentsList","getPlanAttachmentsListResult","getConsumerPeopleIdResult","getConsumerPeopleIdAsync","updatePlanSectionApplicable","updatePlanSectionApplicableResult","checkForSalesForceResult","runReOrderSQL","runReOrderSQLResult","downloadPlanFromSalesforceResult","PlanAttachment","questionId","ro","planAttachmentId","attArray","newAttachmentBtn","oldAttachmentBtn","attachmentParent","newList","planID","ispData","dropdowns","characterLimits","consentAndSign","contactInfo","moreDetail","restrictiveMeasures","rmKeepSelfSafe","rmFadeRestriction","rmWhatCouldHappenGood","rmWhatCouldHappenBad","rmOtherWayHelpGood","rmOtherWayHelpBad","introduction","likeAdmire","thingsImportantTo","thingsImportantFor","howToSupport","carryOverReason","whatNeedsToHappen","howItShouldHappen","whenHowOften","whenHowOftenOther","whatWillHappen","whenToCheckIn","scopeOfService","fundingSourceOther","howOftenHowMuch","howOftenOther","whatSupportLooksLike","reasonForReferral","summary","aloneTime","importantTo","importantFor","skillsAndAbilities","whatIsRisk","getISPCharacterLimits","getAllISPcharacterLimts","getAssessmentCharacterLimits","removeDupRelationships","relationships","unique","flag","removeDups","flagN","setDropdownData","defaultDropdowns","serviceTypes","showWith","newOrExisting","howOftenHowMuchFrequency","whenHowOftenFrequency","howOFtenExperiences","communicationType","dailyLifeDropdownType","levelsOfSupervision","outcomeStatus","relationshipsWithDups","refreshDropdownData","planSummary","planOutcomes","contactInformation","getRelationshipNameById","contactId","endsWith","supportData","getSelectedVendors","filteredService","providerId","providerName","populateRelationshipDropdown","dropdownEle","includeSupports","teamMemberGroup","nonTeamMemberGroup","paidSupportsGroup","signatureId","ps","populateOutcomesReviewWhoDropdown","locationsGroup","theseVendors","member","theseLocations","effectiveStartDateInput","effectiveEndDateInput","reviewDateInput","dateErrorMessage","planYearInfo","dateChanged","reviewDateChanged","origPlanYearStartDate","origPlanYearEndDate","origEffectiveStartDate","origEffectiveEndDate","origPlanReviewDate","priorPlanYearEndDate","priorPlanYearStartDate","priorEffectiveStartDate","reviewDateOpts","showReviewDateWarningPopup","warningPop","cachedDates","cahce","previousPlans","startDay","startMonth","latestActivePlan","previousPlanStartDate","previousPlanCreatedOnDate","planStartDate","planEndDate","newReviewDate","activeConsumerPlans","createdOn","currentYear","newPlanReviewDate","newPlanYearStartDate","newPlanYearStart","newEffectiveStartDate","newEffectiveEndDate","newEffectiveStart","newEffectiveEnd","toggleDateInputDisable","forMoreMenu","effectiveStartInput","effectiveEndInput","validateAnnualDates","planStartTime","templateStartDate","validateRevisionDates","priorEffectiveStartTime","priorStartTime","planEndTime","effectiveStartTime","effectiveEndTime","startTimeError","endTimeError","handleDateBoxChange","isValidDate","isBeforeEnd","isAfterStart","reviewInput","fieldsValid","startDateOpts","endDateOpts","effectiveStartDateOpts","effectiveEndDateOpts","formatedSD","formatedESD","formatedED","formatedEED","formatedRD","endDateIinput","rosterLocationDropdown","rosterGroupDropdown","dayServicesLocationDropdown","timeClockLocationDropdown","WorkshopLocationDropdown","moneyManagementLocationDropdown","rosterRLLCheckBox","dayServicesRLLCheckBox","timeClockRLLCheckBox","WorkshopRLLCheckBox","moneyManagementRLLCheckBox","itDaysBackInput","caseNotesDaysBackInput","progressNotesDaysBackInput","rosterLocation","rosterGroup","rosterGroupName","dayServicesLocation","timeClockLocation","WorkshopLocation","moneyManagementLocation","rosterRLL","dayServicesRLL","timeClockRLL","workshopRLL","moneyManagementRLL","defaultRosterLocationFixed","dayServiceDropdownData","workshopDropdownData","moneyManagementDropdownData","timeClockDropdownData","rosterLocDropdownData","rosterGroupDropdownData","defaultsAjax","saveDefaultLocationValue","setRememberLastLocation","saveDefaultLocationName","getGroup","setGroup","dayServiceLocationPromise","workshopLocationPromise","workshopAjax","WorkshopLocations","timeClockLocationPromise","rosterLocPromise","rosterGroupPromise","moneyManagementLocationPromise","repopulateRosterGroupDropdown","defaultsPage","currMenu","rosterSection","rosterSectionHeader","dayServiceSection","dayServiceSectionHeader","timeClockSection","timeClockSectionHeader","WorkshopSection","WorkshopSectionHeader","incidentTrackingSection","incidentTrackingSectionHeader","moneyManagementSection","moneyManagementSectionHeader","caseNotesSection","caseNotesSectionHeader","rosterChecboxDiv","dayServicesChecboxDiv","timeClockChecboxDiv","workshopChecboxDiv","moneyManagementChecboxDiv","checkInitialRememberLastLocation","newVal","updateConsumerNotesDaysBack","groupDropdownOptions","updateCaseNotesDaysBack","invalidDefaults","getInvalidDefaults","invalidDefaultNotificationPopup","listHeader","def","listItem","moduleDefault","getInvalidDefaultsResult","updateConsumerNotesChecklistDaysBack","updatedChecklistDays","updatedDaysBack","updateCaseNotesReviewDaysResult","helpPage","linkButton","demographicInfo","updateData","mobileCarriersData","emailError","infoPage","carrierDropdown","getStaffDemographicInformation","GetDemographicInformationResult","updateStaffDemographicInformation","mergeUpdateWithDemo","UpdateDemographicInformationResult","getMobileCarrierDropdown","getMobileCarrierDropdownResult","updateInformationData","newDemoInfo","emailSectionBody","errorEle","updatedKeys","saveEle","addressOne","addressTwo","mobilePhone","getValidateEmailInformation","GetValidateEmailInformationResult","emailValidation","isEmailExist","emailDuplicationPopUp","emailDuplicationPOPUP","splitNumber","formatZipCode","zip","setCaretPosition","elem","caretPos","move","stringAdd","newSubStr","populateCarrierDropdown","carrier","carrierId","carrierName","buildAddressSection","addressSection","stateZipWrap","buildNumbersSection","validPhone","numberSection","saveValue","buildEmailSection","emailSection","updateButton","phoneNumberSection","simpleMarModuleButton","showEMARfailurePopup","signOnFailerPop","simpleMarAjax","loginURL","simpleMarLoginResult","timeEntry","adminPayPeriods","payPeriods","currentAdminPayPeriod","currentPayPeriod","currentAdminDate","residenceLocations","workCodes","evvReasonCodes","crossmidnightisadminedit","crossmidnightpayperiod","saveAndSubmit","requiredFields","isDestinationRequired","isNoteRequired","isOdometerRequired","isLicensePlateRequired","isReasonRequired","supervisorApproval","reconfigImportFile","useFiveCharWorkCode","overlapLocationsPopup","overlapLocationsDropdown","overlapLocationsDoneBtn","duplicateconsumerIds","consumerswithUniqueLocations","consumerswithMultipleLocations","overlapconsumerlocationdata","selectedOverlapLocIds","getEntryData","keyStartStop","saveAndSubmitBool","singleEntryAjax","singleEntryOverlapCheck","showOverlapPopup","showMultipleEntriesPopup","getSaveUpdateData","saveEntryData","saveData1","checkHours","crossMidnightCheckHours","day1TotalHours","defaultStartTimeChanged","evvReason","checkDeviceType","deviceType","saveData2","day2TotalHours","destination","licensePlateNumber","odometerEnd","odometerStart","transportationReimbursable","transportationUnits","dateOfService","nextDay","defaultEndTimeChanged","insertSingleEntryNew","entryId","updateObj","singleEntryIdString","updateSingleEntryStatus","clearAllGlobalVariables","newTimeEntry","results2","entryId2","updateObj2","getSelectedConsumerLocations","preInsertSingleEntry","singleEntryId","displayOverlapLocationsPopup","updateSingleEntry","isAdminEdit","payPeriod","refreshPage","saveAndUpdateEntryForMidnightCross","updateResults","updateObj1","saveResults","updateEntry","deleteEntry","deleteSingleEntryRecord","updateorsave","messageText","enableSaveButtons","popup2","message2","yesBtn2","noBtn2","getConsumerswithOverlappingLocations","consumerlocatons","checkOverlapPopupForErrors","erros","populateOverlapLocationsDropdown","locDrop","thisconsumersLocations","buildOverlapLocationsDropdown","overlappedLocationsEntriesMessage","seletedOverlapLocId","overlapConsumerlist","listofSingleEntryIdsSaved","saveSingleEntrywithLocationOverlaps","enableSaveButton","selectedOverlapConsumerId","savedLocationsSingleEntryPairs","overlapSavedLocationsSingleEntryPairs","duplocationIds","listofDuplicateLocationIds","duplocatId","nonoverlapconsumerswithsamelocation","strConsumerIds","locationid","singleentryid","nonoverlapconsumerswithUniqueLocations","foundlocation","seletedOverlapLocationId","insertConsumerforSavedSingleEntry","saveOverlapLocationasSingleEntry","concatsavedLocationsSingleEntryPairs","getSingleEntryConsumersPresentAsync","numberOfConsumersPresent","singleEntryIdArray","setRequiredFields","destinationrequired","noterequired","odometerrequired","licenseplaterequired","reasonrequired","supervisorapproval","reconfigimportfile","use5characterworkcode","setSelectedPayPeriod","tmpStart","tmpEnd","sortPayPeriods","adminDatesSet","datesSet","adminDefaultDates","defaultDates","anywhereClosed","anywhereclosed","sendEvvData","sendevvdata","startdate","enddate","startDateIso","endDateIso","newObj","startDateObj","endDateObj","getPayPeriods","admin","getCurrentPayPeriod","getCurrentDate","getEvvReasonCodes","getResidenceLocations","getWorkCodes","useAllWorkCodes","allWorkCodes","getWorkCodesAsync","getRequiredFields","getInitialData","promises","getSingleEntryPayPeriods","getSingleEntryLocations","getRequiredSingleEntryFields","getLocationsAndResidences","checkLocationServicesEnabled","locationsWarningpopup","loadNewTimeEntryPage","getExistingTimeEntry","getExistingTimeEntryResult","endDateWarningPopup","loadTimeEntryReviewPage","loadTimeEntryApprovalPage","loadSingleEntryLanding","timeEntryBtn","timeReviewBtn","timeApprovalBtn","getSingleEntryConsumersPresent","getSingleEntryConsumersPresentJSONResult","getSubEmployeeListAndCountInfo","getSubEmployeeListAndCountInfoJSONResult","getSingleEntryPayPeriodsJSONResult","getRequiredSingleEntryFieldsJSONResult","getWorkCodesJSONResult","getAllWorkCodes","getSingleEntryLocationsJSONResult","getSingleEntryUsersByLocation","seDate","getSingleEntryByDate","statusIn","getSingleEntryByDateJSONResult","getSingleEntryById","getSingleEntryByIdJSONResult","signatureAjax","getConsumersSignaturesAndNotes","savedSingleEntryId","saveSignatureAndNote","preInsertSingleEntryResult","consumersWithLocIdZero","filteredResults","getSelectedConsumerLocationsResult","singleEntryOverlapCheckJSONResult","updateSingleEntryResult","adminUpdateSingleEntryStatus","adminStatusData","approveSingleEntryRecord","getSingleEntryEmployees","getSingleEntrySupervisorsJSONResult","getSingleEntrySupervisors","getEmployeeListAndCountInfoJSONResult","getAdminSingleEntryLocations","getAdminSingleEntryLocationsJSONResult","singleEntryFilterAdminList","filterData","singleEntryFilterAdminListJSONResult","getAddressByLatLong","googleMapAPI","formatted_address","getUserSingleEntryLocationsForPayPeriod","getSingleEntryUsersWC","getUserData","getSingleEntryUsersWCJSONResult","getLocationsAndResidencesJSONResult","getSingleEntryEvvReasonCodesJSONResult","getEvvEligibility","entryDate","getSingleEntryEvvEligibilityJSONResult","getEvvEligibilityAsync","timeEntryDetailsPopup","consumerSection","loadingSection","transportationSection","buildConsumerSection","consumerArr","consumerDiv","buildTransportationSection","ed","entryData","Transportation_Units","trans_type","Transportation_reimbursable","trans_milage","trans_odStart","odometerstart","trans_odEnd","odometerend","trans_destination","trans_licenseplate","trans_reason","consumersPresent","getSEData","getSEConsumers","resConsumers","TRANS_mainLanding","drivers","inspectionCategories","vehicles","altAddresses","loadTransportationLanding","myRoutesBtn","TRANS_myRoute","manageRoutesBtn","TRANS_manageRoutes","newRouteBtn","vehicleInspectionBtn","TRANS_vehicleInspectionLanding","getVehicles","getAlternateAddress","updateAltAddress","TRANS_mainLandingAjax","getAltAddresses","tempAltAddresses","getAlternateAddressesResult","tempAltAddressesMap","addArr","getAllDrivers","catEndDate","catStartDate","termDate","driverLookup","vehicleLookup","ret","locationLookup","vehicleFilteredLookup","gatherComplete","tmpDrivers","getDriversResult","tempCategories","getInspectionCategoriesResult","tempVehicles","getVehicleDropdownResult","tempLocations","tmpDriversMap","tempCategoriesMap","tempVehiclesMap","tempLocationsMap","driver","Person_ID","allowNA","vehicle","vehicleInformationId","driversProm","getDrivers","categoryProm","TRANS_vehicleInspectionAjax","getInspectionCategories","vehicleProm","locationProm","altAddressProm","WaitingList","unload","WaitingListAssessment","moduleWrapEle","moduleHeaderEle","moduleBodyEle","WaitingListOverview","moduleHeader","moduleBody","isNewAssessment","wlData","wlLinkID","wlCircID","wlNeedID","wlDocuments","wlParticipants","maxQueueSize","isFormComplete","isAssessmentComplete","contributingCircumstancesWrap","needsWrap","tocLinks","doucmentsList","updateQueue","wlForms","participantsTable","sendEmailButton","sendEmailPopup","sendEmailForm","documentsButton","documentsForm","documentsPopup","waitingListInfo","dbtable","enabled","participants","conditions","currentAvailableServices","contributingCircumstances","primaryCaregiver","behavioral","physical","riskMitigation","icfDischarge","intermittentSupports","childProtectionAgency","adultDayEmployment","dischargePlan","immediateNeeds","currentNeeds","waiverEnrollment","conclusion","sectionResets","forceSendUpdates","findFieldTypeById","targetId","fieldtype","addNewDocumentToList","fileName","documentItem","deleteIcon","Icon","getIcon","toggleTocLinksDisabledStatus","links","link","updateFormCompletionStatus","requiredInputs","checkValidity","checkIsAssessmentComplete","incompleteSections","toggleSendEmailDisabledStatus","setAnswerValueForInsertUpdate","getLinkIdForInsertUpdate","updateOrInsert","getFundingSources","fundingSources","getWaitingListFundingSourcesResult","fs","fundingSourceId","saveDocument","attachDetails","waitingListInformationId","includeOnEmail","addWLSupportingDocumentResult","supportingDocumentId","insertNewWaitingListAssessment","linkId","propertyName","valueTwo","insertOrUpdate","insertUpdateWaitingListValueResult","updateAssessmentData","insertAssessmentData","insertUpdateAssessmentData","wlFormInfo","newRecordId","addUpdate","mapDataBySection","wlInfoId","circumstanceId","needId","participantData","particpant","conditionId","activeServiceId","primaryCaregiverId","riskId","physicalNeedId","medicalNeedId","riskMitigationId","icfDischargeId","intermitentSupportsId","childProtectionId","requireWaiverFundingId","dischargePlanId","immediateNeedId","unmetNeedId","waiverEnrollmentId","personCompleting","personCompletingTitle","currentLivingArrangement","livingArrangementOther","areasPersonNeedsHelp","interviewDate","otherThanMentalHealth","before22","isConditionIndefinite","isCountyBoardFunding","isOhioEarlyInterventionService","isBCMHService","isFCFCService","isODEService","isOODService","isChildrenServices","isMedicaidStatePlanHomeHealthAideservice","isMedicaidStatePlanHomeHealthNursingService","isMedicaidStatePlanService","isOhioHomeCareWaiverservice","isPassportWaiverService","isAssistedLivingWaiverService","isMYCarewaiverService","isSelfWaiverService","isLevelOneWaiverService","isOtherService","otherDescription","isPrimaryCaregiverUnavailable","unavailableDocumentation","isActionRequiredIn30Days","actionRequiredDescription","isIndividualSkillsDeclined","declinedSkillsDocumentation","declinedSkillsDescription","additionalCommentsForUnavailable","risksIsNone","risksIsRiskToSelf","risksIsPhysicalAggression","risksIsSelfInjury","risksIsFireSetting","risksIsElopement","risksIsSexualOffending","risksIsOther","risksFrequencyDescription","risksHasNoDocument","risksHasPoliceReport","risksHasIncidentReport","risksHasBehaviorTracking","risksHasPsychologicalAssessment","risksHasOtherDocument","risksOtherDocumentDescription","physicalNeedsIsPhysicalCareNeeded","physicalNeedsIsNone","physicalNeedsIsPersonalCareNeeded","physicalNeedsIsRiskDuringPhysicalCare","physicalNeedsIsOther","physicalNeedsDescription","medicalNeedsIsLifeThreatening","medicalNeedsIsNone","medicalNeedsIsFrequentEmergencyVisit","medicalNeedsIsOngoingMedicalCare","medicalNeedsIsSpecializedCareGiveNeeded","medicalNeedsIsOther","medicalNeedsDescription","needsIsActionRequiredRequiredIn30Days","needsIsContinuousSupportRequired","rMIsSupportNeeded","rMIsNone","rMIsAdultProtectiveServiceInvestigation","rMIsCountyBoardInvestigation","rMIsLawEnforcementInvestigation","rMIsOtherInvestigation","rMdescription","rMIsActionRequiredIn3oDays","icfDetermination","icfIsICFResident","icfIsNoticeIssued","icfIsActionRequiredIn30Days","intSupDetermination","intSupIsSupportNeededIn12Months","intSupIsStayingLivingArrangement","intSupIsActionRequiredIn30Days","cpaDetermination","cpaIsReleasedNext12Months","cpaAnticipateDate","cpaHasUnaddressableNeeds","rwfWaiverFundingRequired","rwfNeedsMoreFrequency","rwfNeedsServiceNotMetIDEA","rwfNeedsServicesNotMetOOD","dischargeDetermination","dischargeIsICFResident","dischargeIsInterestedInMoving","dischargeHasDischargePlan","immNeedsRequired","immNeedsDescription","unmetNeedsHas","unmetNeedsSupports","unmetNeedsDescription","waivEnrollWaiverEnrollmentIsRequired","waivEnrollWaiverEnrollmentDescription","conclusionUnmetNeeds","conclusionResult","conclusionWaiverFunded12Months","conclusionDoesNotRequireWaiver","conclusionNotEligibleForWaiver","conclussionDeterminedBy","conclusionDeterminedByTitle","conclusionDeterminedOn","fieldType","enableSectionsForReview","isOtherThanMentalHealthYes","isBefore22Yes","isConditionIndefiniteYes","pgActionRequiredIn30Days","pgUnavailable","needOtherActionRequired","rmActionRequired","isAdultProtectiveServiceInvestigationChecked","isCountyBoardInvestigationChecked","isLawEnforcementInvestigationChecked","isOtherInvestigationChecked","enableInputsForReview","hasCheckBehavioral","hasCheckBehavioralDocs","hasCheckPhysical","hasCheckMedical","hasCheckRisksMitigation","showHideNeedsPages","showPages","properties","showHideRiskMitigation","isNeedsActionRequired","showRM","showHidePagesRelatedToICF","icfAnyNo","showHideICFDischarge","isRisksActionRequired","showICF","showHideImmediateNeeds","isRMChecked","isAnyCheckboxCheckedRiskMitigation","isActionRequiredRM","isActionRequiredOther","isPGActionRequiredIn30Days","noticeIssuedICF","isActionRequiredICF","isResidentICF","isAllYesICF","showImmediateNeeds","showHideCurrentNeeds","isAnyNoICF","showCurrentNeeds","isConditionInputsAllYes","isAnyCheckboxCheckedBehaviors","isAnyCheckboxCheckedBehaviorsDocs","isAnyCheckboxCheckedPhysical","isAnyCheckboxCheckedMedical","needsOtherCheck","hasCheckBehaviorOne","hasCheckBehaviorTwo","needsIsActionEnabled","intermittentSupportsDetermination","allHaveCheck","currentNeedsDetermination","icfDischargeDetermination","childProtectionAgencyDetermination","adultDayEmploymentDetermination","dischargePlanDetermination","updateTo","condition","immediateNeedsDetermination","setConclusion","conditionPageAllYes","waiverEnrollRequired","enableIsIndividualSkillsDeclined","risksIs","isNotAppChecked","hasCheck","hasCheckDocs","risksIsRiskToSelfInputId","risksHas","physicalNeeds","isPhysicalCareNeededInputId","medicalNeeds","isNeedsActionRequiredYes","rMIs","cleardNotApp","hasOtherCheck","isRequired","onChangeCallbacksFormWatch","formsToDelete","checkboxGroupId","closest","waitingListId","generateWaitingListAssessmentReportResult","intervalSeconds","intervalMilliseconds","reportExists","resp2","truncateFilename","participantsForm","participantName","participantRelationship","participantId","onRowClick","onRowDelete","primaryButtonWrap","isContributingCircumstancesSubSection","isNeedsSubSection","tocSection","tocSectionLink","statusIcon","sectionWrap","sectionHeader","convertCamelCaseToTitle","hideAllButtons","initFormInfo","columnSortable","allowDelete","RosterCard","AsyncQueue","responses","docResp","getWLSupportingDocumentListResult","WaitingListData","insertWaitingListAssessment","getReviewDataByConsumer","getLandingPageForConsumerResult","conclusionDate","selectedRow","selectedRowId","wlReviewTable","deleteWarningPopup","conclusionResults","alreadyHasAssessmentForToday","dateA","dateB","populateReviewTable","newAssessmentBtn","isNewAssessmentBtnDisabled","idkyet","waitingListAssessmentId","getWaitingListAssessmentResult","populateDeleteWarningPopup","confirmButton","cancelButton","removeRow","viewerBtnOpts","viewerBtn","defaultWorkshopLocationId","jobDropdown","supervisorDropdown","clockOutNavBtn","consumerListBtn","locationFilterDropdownData","jobDropdownData","updateJobFilterDropdownData","jobFilterDropdownData","supervisorDropdownData","selectedBatchId","multiConsumerSelect","minStart","minDateIso","maxDateIso","maxEnd","displayDateIso","workshopFilterListData","jobStepId","batchId","filterCache","locationSelectedOpt","jobStepSelectedOpt","mainTableData","mainJobData","mainLocationData","initalRosterLoad","activeModulesConsumers","jobStepBtnWrap","compareSupList","nameA","nameB","comparison","checkOpenBatches","WorkshopPreBatchLoad","openBatches","batchPickerPopup","batchDropdown","defaultId","findCorrectDates","exitBtn","breakDownConsumerList","consumerArray","consumerIdList","buildSelectionFields","dateSelection","initialData","getEnabledConsumersForWorkshop","employee_id","filteredConsumer","WorkshopGetSupervisors","WorkshopGetJobCode","jobstepid","activityType","activitytype","jobString","shortdescription","customercode","jobcode","jobstep","updateJobDropdown","forFilter","updateJobDropdownData","buildWorkshopTable","workshopLocation","workshopJob","workshopDate","workshopStartDate","workshopEndDate","workshopTableOpts","jobactid","quantity","isPieceRate","trimedHour","supervisor","handleWorkshopTableEvents","workshopTable","jobAct","jobActivity","tableRowPopup","startTimeField","endTimeField","quantityField","tableRowApplyChange","deleteEntryBtn","deleteWorkshopEntry","changedStartTime","enteredEndTime","updateWorkshopClockIn","changedStartTimeDISPLAY","clockoutWorkshopSingle","enteredEndTimeDISPLAY","updateWorkshopQuantity","tableFilterPopup","filterApplyBtn","locationDropdownSelect","jobDropdownSelect","WorkshopFilterList","locationCloseBtn","jobStepBtn","jobStepCloseBtn","locationDisplay","dateDisplay","timeClockJobDropdown","timeClockJobDropdownField","supervisorID","jobStepIdInt","supervisorSelect","supSelectedIndex","inData","consumerids","jobActType","startOrEnd","WorkshopClockIn","overlapErrorPopup","outData","WorkshopClockOut","overlapRecords","inOutString","overlapDescriptionWrap","overlapRecord","correctBtn","overlapCorrection","miniRoster","sitenav","jobActid","timeEntered","singleClockOutData","jobActivityId","jobActId","deleteData","getDeleteWorkshopEntryResult","getWorkshopBatchById","getEnabledConsumersForWorkshopResult","updateClockInData","getUpdateWorkshopQuantityResult","absenceDate","WorkshopPreBatchLoadResult","dateSelected","WorkshopLocationsResult","getWorkshopSupervisorsResult","queryData","getWorkshopJobCodeResult","getWorkshopFilterListDataResult","GetWorkshopOverlapsResult","require","Chart","default","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","pow","conversion","raw","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","valid","alpha","setValues","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","contrast","level","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","mix","toJSON","spaces","maxes","getValues","Color","noop","uid","isNullOrUndef","isFinite","valueOrDefault","valueAtIndexOrDefault","arrayEquals","_merger","merge","_mergerIf","mergeIf","merger","assign","inherits","__super__","_deprecated","callCallback","getValueOrDefault","getValueAtIndexOrDefault","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","effects","easingEffects","ctx","clearRect","roundedRect","moveTo","arc","closePath","rect","drawPoint","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","clipArea","clip","unclipArea","steppedLine","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","drawRoundedRectangle","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","toLineHeight","toPadding","_parseFont","fontSize","family","fontFamily","lineHeight","fontStyle","weight","cacheable","_factorize","log10","LOG10E","getRtlAdapter","setWidth","xPlus","leftForLtr","overrideTextDirection","canvas","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","easing","math","rtl","initialize","_type","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","isNumber","chart","currentStep","numSteps","onAnimationProgress","onAnimationComplete","animation","onProgress","onComplete","animations","request","addAnimation","animating","cancelAnimation","startDigest","advance","_chartjs","listeners","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","getDataset","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","addElementAndReset","updateElement","buildOrUpdateElements","resyncElements","_configure","_config","_cachedDataOpts","update","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","borderColor","custom","datasetIndex","hover","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","insertElements","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","it","at","startAngle","endAngle","pixelMargin","outerRadius","innerRadius","rt","borderAlign","lineWidth","lineJoin","fullCircles","ot","inLabelRange","radius","hoverRadius","inRange","getAngleFromPoint","angle","getCenterPoint","getArea","circumference","fillStyle","strokeStyle","lt","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","ut","spanGaps","_children","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","dt","ht","ct","hitRadius","point","pointStyle","ft","inXRange","inYRange","padding","rotation","gt","pt","mt","base","vt","bt","borderSkipped","horizontal","xt","rectangle","yt","outer","inner","fillRect","kt","wt","Mt","St","Arc","Line","Point","Rectangle","Ct","Pt","At","barThickness","stackCount","pixels","_length","getTicks","getPixelForTick","scale","categoryPercentage","barPercentage","chunk","ratio","gridLines","offsetGridLines","bar","Dt","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","getBasePixel","isHorizontal","calculateBarValuePixels","calculateBarIndexPixels","_getStacks","_getMatchingVisibleMetas","stacked","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","_parseValue","chartArea","Tt","It","tooltips","callbacks","xLabel","yLabel","Ft","getPixelForDecimal","_options","Lt","Ot","Rt","zt","animateRotate","animateScale","legendCallback","legend","generateLabels","controller","cutoutPercentage","Nt","getRingIndex","isDatasetVisible","_getRingWeight","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","offsetX","offsetY","total","calculateTotal","_getRingWeightOffset","calculateCircumference","axis","horizontalBar","Bt","Et","Wt","Vt","Ht","ticks","reverse","jt","qt","Ut","_showLine","showLine","lineTension","_scale","updateBezierControlPoints","calculatePointY","stepped","getRightValue","_getSortedVisibleDatasetMetas","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","previous","Yt","angleLines","circular","pointLabels","beginAtZero","Gt","_starts","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","getDistanceFromCenterForValue","doughnut","Xt","Kt","Zt","getPointPositionForValue","scatter","$t","bubble","polarArea","pie","radar","Jt","native","getRelativePosition","Qt","te","ee","POSITIVE_INFINITY","ie","intersect","ae","modes","single","nearest","re","oe","where","se","le","ue","box","maxPadding","getPadding","outerWidth","outerHeight","de","he","fullWidth","ce","layout","fe","ge","addBox","boxes","_layers","removeBox","configure","leftAndTop","rightAndBottom","vertical","availableWidth","vBoxMaxWidth","hBoxMaxHeight","pe","__proto__","me","ve","be","xe","ye","_e","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","ke","we","Me","Se","Ce","Pe","Ae","resizer","_reset","maintainAspectRatio","renderProxy","animationName","reflow","offsetParent","De","Te","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","containsStyles","host","acquireContext","getContext","initial","aspectRatio","releaseContext","proxies","addEvent","removeEvent","Ie","Fe","plugins","Le","_plugins","_cacheId","register","unregister","getAll","notify","descriptors","plugin","$plugins","_invalidate","Oe","constructors","registerScaleType","getScaleConstructor","getScaleDefaults","updateScaleDefaults","addScalesToLayout","Re","ze","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","Ne","average","distanceBetweenPoints","Be","Ee","We","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","Ve","He","je","_lastActive","getTitle","getBeforeBody","getBody","before","lines","after","getAfterBody","getFooter","_active","caretX","caretY","_eventPosition","getLabelForIndex","itemSort","labelColors","labelTextColors","dataPoints","measureText","font","fontString","drawCaret","getCaretPosition","x1","y1","x2","y2","x3","y3","drawTitle","textBaseline","fillText","drawBody","strokeRect","drawFooter","drawBackground","quadraticCurveTo","globalAlpha","handleEvent","getElementsAtEventForMode","qe","Ue","positioners","Ye","Ge","Xe","Ke","ensureScalesHaveIDs","buildOrUpdateScales","tooltip","Ze","$e","Je","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Qe","construct","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","initToolTip","getMaximumWidth","getMaximumHeight","onResize","dtype","dposition","isDefault","mergeTicksOptions","buildOrUpdateControllers","destroyDatasetMeta","resetElements","lazy","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","meta","drawDatasets","_drawTooltip","_getSortedDatasetMetas","drawDataset","easingValue","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","tn","Controller","types","configMerge","scaleMerge","en","nn","formats","startOf","endOf","_create","override","an","_date","rn","formatters","toExponential","logarithmic","on","sn","ln","un","dn","hn","major","minor","gc","widest","highest","cn","drawTicks","tickMarkLength","gn","color","fontColor","pn","mn","vn","drawBorder","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","bn","zeroLineIndex","paddingLeft","paddingTop","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","sampleSize","margins","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","minSize","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","_isVisible","labelRotation","_getLabelSizes","toDegrees","toRadians","handleMargins","isFullWidth","_getScaleLabel","getValueForPixel","getDecimalForPixel","getBaseValue","maxTicksLimit","_tickSize","_computeGridLineItems","_alignPixel","tx1","ty1","tx2","ty2","ticksLength","borderValue","_computeLabelItems","textOffset","_drawGrid","_drawLabels","_drawTitle","_draw","xn","yn","_n","minIndex","maxIndex","_startValue","_valueRange","kn","_defaults","wn","Mn","Sn","handleTickRangeOptions","suggestedMin","suggestedMax","getTickLimit","stepSize","_computeTickLimit","handleDirectionalChanges","maxTicks","precision","fixedStepSize","niceNum","_decimalPlaces","almostWhole","almostEquals","ticksAsNumbers","_endValue","Cn","Pn","neg","relativePoints","An","Dn","NEGATIVE_INFINITY","Tn","In","Fn","Ln","On","Rn","minNotZero","tickValues","_getFirstTickValue","_valueOffset","zn","Nn","Bn","En","Wn","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","Vn","Hn","jn","qn","Un","Yn","Gn","drawingArea","_pointLabelSizes","getPointPosition","longestText","getIndexAngle","setReductions","setCenterPoint","getBasePosition","Xn","Kn","Zn","$n","Jn","MIN_SAFE_INTEGER","Qn","MAX_SAFE_INTEGER","ti","millisecond","common","steps","week","quarter","ei","ni","ii","ai","ri","lo","hi","oi","_adapter","si","ui","di","adapters","displayFormats","unit","_table","_timestamps","getLabelCapacity","distribution","minUnit","unitStepSize","isoWeekday","_unit","_majorUnit","_offsets","factor","tooltipFormat","datetime","tickFormatFunction","getPixelForOffset","_getLabelSize","getLabelWidth","displayFormat","radialLinear","_id","filler","propagate","gi","boundary","pi","mi","cx","cy","scaleBottom","scaleTop","scaleZero","vi","visible","bi","xi","yi","ki","afterDatasetsUpdate","$filler","mapper","beforeDatasetsDraw","wi","Mi","Si","Ci","usePointStyle","boxWidth","align","onLeave","lineDash","Pi","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","lineWidths","columnWidths","columnHeights","SQRT2","_getLegendItemAt","Ai","Di","_element","beforeInit","afterEvent","Ti","Ii","Fi","titleBlock","Li","Oi","Ri","zi","Ni","helpers","defaultView","_getParentNode","getComputedStyle","findNextWhere","findPreviousWhere","aliasPixel","currentDevicePixelRatio","EPSILON","model","deltaK","mK","oRequestAnimationFrame","originalEvent","clientX","getConstraintWidth","getConstraintHeight","_calculatePadding","currentStyle","garbageCollect","numberOfLabelLines","CanvasGradient","CanvasPattern","_adapters","Animation","animationService","controllers","DatasetController","Element","Interaction","layouts","Scale","scaleService","Ticks","Tooltip","Bi","Legend","Title","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","Notifications","DEFAULT_OPTIONS","mergeObjects","notifications","itemEle","Tutorial","mergOptionsWithDefaults","userOptions","TutorialState","initialState","totalSteps","observers","subscribe","observerFunction","unsubscribe","setState","newState","back","tutorialState","tutorial","VallidationController","items","validationWrap","errorsWrap","warningsWrap","addWarning","itemInstance","ValidationMessage","addError","toggleErrorStatus","isError","displayStatus","callbackFunction","DAYS","DatePicker","parentEle","labelEle","for","showPicker","weekStart","weekEnd","eachDayOfWeek","isCurrentWeek","navigationEle","weekWrapEle","prevWeekNavBtn","nextWeekNavBtn","customDatePicker","isDateCurrentlySelected","classArray","dateWrapEle","toDateString","dayOfWeekEle","dateEle","currentSelectedDate","newDateValue","messagePending","messageSuccess","messageError","iconWrap","clickOutToClose","Spinner","showPending","showSuccess","asyncSetTimeout","fragment","DocumentFragment","filterDate","failedImageCache","Set","rosterWrapEle","rosterSearchInput","rosterCaseLoadInput","rosterInActiveInput","messageEleIcon","_buildMobileButton","mobileRosterBtn","_updateMessage","tagName","_filterConsumersOnSearch","nameCombinations","cardEle","_scrollToTop","newIcon","cv","gridAnimationWrapper","inActive","rosterCard","pinCardIcon","forceAll","isLocked","lockdown","cid","Attachments","File","separateHTMLAttribrutes","inputGroup","filenamelength","targetID","forbiddenTypes","isFileTypeValid","validateFileType","newInputId","newInputInstance","insertAdjacentElement","_viewAttachment","newAttachments","newAttachment","classes","textNode","isDisbled","isHidden","updateText","inputWrap","inputNote","readOnly","setCustomValidity","updateLableValue","stringContainsHTML","CheckboxGroup","groupLabelEle","field","inputInstance","Confirmation","Alert","isModal","dialogDimensions","onClose","showModal","RadioGroup","tmpFix","Select","Textarea","submitButton","newButton","FormData","fromEntries","svg","arrowRight","arrowLeft","chevron","densitySmall","densityMedium","exitFullScreen","openFullScreen","micOn","micOff","pin","play","getIconButton","showcount","countMarkup","inputCount","dateformat","imgSource","defaultImgSource","image","onerror","loading","Radio","DEFAULT_OPTIONS_2","checkedInputId","sortByProperty","optionEle","onOff","removeElement","getNodeIndex","checkDateFormat","rowSortable","selectedRows","tableNav","tBodies","_multiSelect","newCheckbox","checkboxInput","th","tHead","cells","_columnSort","colIndex","lastDirection","lastHeading","clonedTableBody","_rowSort","newSort","rowEle","initRowSort","SpeechToText","textareaInstance","isSpeechInitialized","isListening","initSpeechRecognizer","mutationObserver","speechRecognizer","currValue","startSpeechRecognizer","stopSpeechRecognizer","closeSpeechRecognizer","FullscreenTextarea","fullScreenDialog","fullScreenCloseBtn","dupShowModalBtn","fullScreenShowBtn","inputClone","speechToTextBtn","autoClose","waitDuration","closeToastButton","tempDiv","htmlFragment","byte","isReferenceFree","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","props","matching","leftover","sectionName","regExp","scrollTo","behavior","regex","timeoutId","apiEndpoint","onSendComplete","queue","queueLength","failedUpdates","isSending","sendUpdates","forceUpdate","updatesToSend","sendPromises","setSendCompleteCallback","camelCaseStr","spacedStr","connectionWatch","statusPopup","statusMessage","wait","executedFunction","args","context","later","URL_BASE","fetch","ok","json","getDeviceType","isTablet","storedValue","updatedValue","baseObject","mergeObject","sortProp","aValue","bValue","splitObjectByPropNames","dirtyObj","maxLength","fileExtension","maxMainLength","firstPartLength","secondPartLength","watchVariable","initialValue","forbiddenTypesPattern","cnAttachment","cnId","reviewAttachmentArray","isSSANote","allowedFileTypes","onchange","deleteExistingAttachment","remAttachment","addAttachmentsToCN","reviewAttachments","populateNewAttachments","removeAttachmentFromTempAttachmentArray","cnBatched","SSANote","cnInsertPhrases","phraseDropdown","allPhraseCheckbox","phraseNoteTextInput","insertPhraseBtn","fullPhraseDisplay","customPhrases","selectedPhraseId","currentNote","cursorSelection","cn_PhraseLS","createPopup","getPhrases","phrasesPopup","insertPhrase","phraseDone","allPhraseRadioDiv","initialCheckRadio","myPhraseRadio","allPhraseRadio","fullPhrase","trimedPhrase","insertPoint","noteStart","noteInsert","noteEnd","cnNoteField","cnPhrasesDone","moveConsumerToConsumerSection","enableCard","saveAndNew","saveAttachmentPromArray","groupSavePromises","cId","handleOverlapCheck","uniqueConsumers","warningText","saveSingle","saveResponseDoc","nodeValue","isGroup","handleGettingGroupNoteId","warningBtnFunction","checkMicError","NUSAI_popup","dashboardConsumer","noConsumerMessage","noteCard","buildCaseNoteCard","consumersList","buildConsumersList","disableCard","consumerNameArr","consumerFN","consumerLN","consumerobj","caseNoteCard","startTimeInput","endTimeInput","noteTextInput","mileageInput","serviceLocationDropdown","needDropdown","contactDropdown","myPhrasesBtn","deleteNoteBtn","cancelNoteBtn","timerStartBtn","timerStopBtn","attachmentsBtn","saveAndNewNoteBtn","confidentialCheckbox","serviceMonitoringCheckbox","docTimeMinutesField","travelTimeMinutesField","groupNoteDisplay","dropdownDataKeys","billers","pageLoaded","groupData","groupConsumers","billerDropdownData","gkLocationRequired","gkNeedRequired","gkContactRequired","gkServiceRequired","gkAllowGroupNotes","gkMileageRequired","serviceLocationId","tempAttachmentArray","attachmentCount","reviewData","reviewResults","reviewRejectReason","correctedCheckbox","isGroupNote","convertToGroupNote","viewOnly","advLocationRequired","advServiceRequired","advNeedRequired","advContactRequired","continueFunc","cancelFunc","hide_X","validateTimesWhenDateChange","isTimeValid","checkIfSameDates","dateEntered","getMilliseconds","setNoteValues","noteid","servicedate","reviewresults","rejectionreason","lastupdate","originaluserid","batched","originalUserName","originaluserfullname","checkIfCredit","isCaseNoteReadOnly","showTimeWarningPopup","timeWarningPop","noteSaveUpdate","vendorInput","locationInput","serviceInput","needInput","contactInput","singleNoteToGroupNote","updateOverlapData","updateNote","checkServiceFunding","populateBillerDropdown","populateBillerRelatedDropdowns","checkGKRequiredFields","populateLocationDrodown","dropDownDisplay","populateServicesDrodown","populateContactsDrodown","populateNeedsDrodown","dropDown","populateServiceLocations","serviceLocData","newSelectedConsumers","sConsumer","checkConsumerForMileage","aConsumer","filteredConsumers","nsc","isTrue","selectedConsumerName","buildDocTime","docTimeHeader","docTimeHeaderText","docTimeBody","docTime","minutesDisplay","docTimeMinVal","parseSessionTimes","isAMorPM","checkTimesAreWithinWorkHours","buildCardDetailsSection","saveBtnAction","preSave","listeningNodes","saveNoteBtn","hoursAreWithinWorkHours","cnPhrasesPopup","btnWrap2","grid_col_1","grid_col_2","lastUpdatedDisplay","lastUpdatedMessage","correctedCheckboxDiv","reviewText","reviewMessage","setupCardEvents","checkADVRequiredFields","cardDetails","docTimeRequiredPopup","docTimePopup","popupText","calledAction","serviceCodeDropdownOptions","docTimeDisplay","timerButtons","removeAllConsumersFromNote","tmpMileage","validObj","sameDate","tempServiceDate","mileageAllowed","cards","setGroupData","splitName","setInputstoReadOnly","checkConfidential","dashConsumer","advPromises","gkPromises","dropdownDataPromise","getBillersListPromise","getConsumersThatCanHaveMileagePromise","getReviewRequiredForCaseManagerPromise","getAttachmentsPromise","pageToLoad","reviewNoteData","gd","consumerFromDash","selectedConsumerID","suppressDocTimePopup","serviceCodeName","servicename","mainbillingorservicecodename","ConsumerId","personApproved","defaultinlist","localservicePersonApproved","serviceCodeDDL","servicepersonapproved","person","filteredResult","arrItem","noteType","service_id","displayDocTimeSection","clearBillerRelatedDropdowns","alphabetizeDDL","controlWrap","chkboxWrap","btnAttachWrap","mileageInputField","emptydata","endtimeInput","updateGroup","cIdOfNote","updateSingle","overlapResults","batchedMessage","creditMessage","cnCredit","IsSSANote","cnFilters","billersDropdown","consumerDropdown","billingCodeDropdown","reviewStatusDropdown","correctedDropdown","enteredDateStartInput","enteredDateEndInput","additionalFilterContainer","locationFilterCbox","serviceFiltercCbox","needFiltercCbox","contactFiltercCbox","confidentialFiltercCbox","showOverlapscCbox","billedFiltercCbox","attachmentsFiltercCbox","noteTextFiltercCbox","selectAllFilterCbox","confidentialDropdown","outcomeServiceMonitoringDropdown","billedDropdown","attachmentsDropdown","noteTextDropdown","activeAdditionalFilters","billerBtnWrap","consumerBtnWrap","billingServiceBtnWrap","reviewStatusBtnWrap","correctedBtnWrap","outcomeServiceMonitoringBtnWrap","serviceDatesBtnWrap","createdDatesBtnWrap","needBtnWrap","contactBtnWrap","confidentialBtnWrap","billedBtnWrap","attachmentsBtnWrap","showOverlapsBtnWrap","noteTextBtnWrap","consumerDropdownData","serviceBillingCodes","needDropdownData","serviceDropdownData","contactDropdownData","checkOverlaps","createFilterElements","createMoreFilterOptionElements","setCheckForOverLaps","setNewFilterValues","setFilterValFromPopup","moreFilterOptBtn","moreFilterOptionPopup","filterBtnWrap","addAdditionalFilters","serviceDateWrap","createDateWrap","moreFilterPopup","checkAdditionalFilters","cBoxContainer","getServiceDepententData","populateStaticFilters","reviewStatusDropdownData","billedDropdownData","attachmentDropdownData","correctedDropdownData","outcomeServiceMonitoringDropdownData","noteTextDropdownData","noteTextDefault","populateConsumerFilter","populateDropdownData","populateBillersDropdown","billerName","populateDropdownsBasedOnServiceCode","selectedServiceBillCode","rawDropdownData","getCNPopulateFilterDropdownsResult","sortRawDropdownData","getConsumerDropdownData","getBillersDropdownData","note_code","reviewStatusText","correctedText","outcomeServiceMonitoringText","locationText","serviceText","needText","contactText","confidentialText","billedText","attachmentsText","showOverlapsText","noteTextText","dispalyServiceDateStart","dispalyServiceDateEnd","displayDateEnteredStart","dispalyDatesEnteredEnd","ShowHideFilter","noteTextValue","displayConsumerName","billerBtn","billerCloseBtn","consumerBtn","consumerCloseBtn","billingServiceCodeBtn","billingServiceCodeCloseBtn","reviewStatusBtn","reviewStatusCloseBtn","correctedBtn","correctedCloseBtn","outcomeServiceMonitoringBtn","outcomeServiceMonitoringCloseBtn","serviceDatesBtn","createdDatesBtn","needBtn","needCloseBtn","contactBtn","contactCloseBtn","confidentialBtn","confidentialCloseBtn","attachmentsCloseBtn","billedBtn","billedCloseBtn","showOverlapsBtn","noteTextBtn","noteTextCloseBtn","overviewFilterValues","consumerPromise","billerPromise","race","caseLoadRestriction","groups","tableConsumers","caseloadOnly","datesEnteredStart","datesEnteredEnd","reviewConsumerId","selectedRosterId","noteIds","overLapIds","btnWrapFilter","getServiceDateDefaultValues","buildMutationObserver","resetFilterValues","showCNReportsPopup","detailBtn","passFilterValuesForDetailReport","checkIfCNReportIsReadyInterval","passFilterValuesForTimeEntryReport","checkCNReportExists","callCNReport","initFilterDisplay","biller","buildTopBtns","newNoteBtn","cnReportBtn","cnADVReportBtn","handleTableEvents","isssanote","getTableData","filteredData","fd","permissions_Table","groupCounts","hasOverlap","originalupdateTrim","originalupdate","originalUpdate","lastupdatedby","thisendIcon","GKendIcon","ADVendIcon","isParentRow","testNoteId","thiscolumnheadings","GKcolumnheadings","ADVcolumnheadings","tableConsumerSearch","newTable","tDi","cIdx","mainEventListeners","disableMiniRosterBtn","promArray","caseloadRestrictionPromise","dashHandeler","viewEnteredWidgetSetting","setInitFilterValues","absentWidgetDate","absentWidgetLocationId","absentWidgetLocationName","absentWidgetGroupId","absentWidgetGroupName","absentWidgetGroupCode","widgetBody","totalConsumers","applyFiltersBtn","widgetFilter","eventSetup","oldAbsentDate","oldGoupCode","absentDate","absentWidgetAjax","getLocationsForDashboardAbsent","populateAbsentWidgetLocations","getConsumerGroupsForDashboardAbsent","populateAbsentWidgetGroups","getAbsentWidgetFilterDataAjax","absentLocationId","absentGroupCode","custGroupId","populateAbsentWidgetResults","allFiterData","displayFilteredBy","absentObj","totalAbsentCount","totalAbsent","absentLocationsArray","getAbsentWidgetFilterDataResult","statuses","cachedResults","cachedResults_locations","selectedLocationDescription","entriesObj","consumerNames","populateConsumerDropdown","populateLocationsDropDown","locationNames","oldSelectedConsumerId","oldSelectedConsumerName","oldSelectedLocationId","oldSelectedLocationDescription","selectedLocationOption","groupCountInfo","populateCountInfo","pendingSection","approvalSection","rejectedSection","entryGroups","dateRanges","buildWidgetTabs","widgetTabs","tabOptions","Anywhere_Status","People_ID","adminSingleEntryWidgetAjax","getSingleEntryAdminLocations","getSingleEntryAdminApprovalNumbers","getSingleEntryAdminApprovalNumbersJSONResult","getSingleEntryAdminLocationsResult","cnProductivityChart","groupNotes","timeObj","daysBackWidgetSetting","getDates","addChartData","CN_ProductivityWidgetAjax","getCaseNoteProductivity","getDashboardCaseNoteProductivityResult","preBuildDataObj","originalEnteredDate","Original_Update","Case_Note_Group_ID","calculateDocTime","noteTime","diffMinutes","Travel_Time","Total_Doc_Time","noteID","initChart","caseNoteData","orgDate","calculateBackgroundColor","productivityPercentage","productivityThreshold","colors","reconfigureDataForChart","workHoursPerDay","minForProductivity","noteTimeDataset","travelTimeDataset","docTimeDataset","totalTime","colorArr","stepSixe","setDefaultIfConfigNull","setWidgetSettingConfig","rejectedNotes","strgroupids","objgroups","groupids","getRejectedData","CN_RejectedWidgetAjax","getCaseNotesRejected","Case_Note_ID","cnGroupId","first_Name","Service_Code","End_Time","lastUpdate","getRejectedcnGroups","getGroupsIds","getGroupCaseNotes","objgroupids","grpconsumer","grpconsumerObj","populateRejectedWidget","rejectedTable","tmpstartTime","frmtStartTime","tmpendTime","frmtEndTime","updateDate","cleanSettings","getDashboardCaseNotesRejectedResult","groupNoteIds","getDashboardGroupCaseNoteConsumerNamesResult","consumerProgresNoteslocationDropdown","progressNoteList","locationObject","locationLookupObject","tmpSelectedLocation","filteredLocation","filteredLocationExists","getNotesFiltered","getConsumersWithUnreadNotesByEmployeeAndLocationPermission","populateProgressNoteWidgetResult","progNote","noteTitle","populateLocationLookup","getlocations","getlocationsWithConsumersWithUnreadNotes","cfWidgetLocationId","cfWidgetLocationName","cfWidgetConsumerName","cfWidgetSortOrderId","cfWidgetSortOrderName","sortOrderDropdown","tempCFWidgetLocationName","tempCFWidgetConsumerName","tempCFWidgetSortOrderName","ConsumerFinancesWidgetAjax","getConsumerFinanceWidgetEntriesDataAjax","sortOrderName","populateConsumerFinanceResults","populateCFWidgetLocations","populateCFWidgetConsumers","populateCFWidgetDropdowns","sortData","cfTable","cfTableData","lastTransaction","getCFWidgetConsumers","getCFWidgetConsumersResult","getConsumerFinanceWidgetEntriesDataResult","linksWidget","messagesWidget","messages","loadCustomLinks","linksList","linkaddress","linkname","linktarget","linksAndMessagesWidgetAjax","loadCaraSolva","loadSystemMessages","messageList","separateLinksAndMessages","getSystemMessagesAndCustomLinks","linkError","getSystemMessagesAndCustomLinksJSONResult","CaraSolvaURLResult","caseLoad","consumerCountlbl","currentRowConsumerId","viewNotesDaysBack","lastNoteEnteredDaysBack","viewEnteredByOtherUsers","lastNoteEnteredDaysBackDate","showSendReportPopup","emailData","to","cc","bcc","subject","sendReportPopup","emailTo","emailCC","emailBCC","showReportPopup","showReportDownloadPopup","createReportPopup","quickPrintPopup","createReportBtn","sendReportBtn","displayConsumerCount","populateCaseLoadWidget","caseLoadTable","caseLoadTableBody","resNumber","residentNumber","lastNoteDate","dateDisp","addressBlock","addressone","addresstwo","mailcity","mailstate","mailzipcode","contactInfoBlock","tempPrimaryPhone","primaryphone","tempSecondaryPhone","secondaryphone","pPhoneNumber","sPhoneNumber","pPhoneType","sPhoneType","pPhone","sPhone","reviewNotesBtn","getCaseLoadData","last_note_datetime","getDaysBackDate","CN_CaseLoadWidgetAjax","clockedInStaff","asOfTime","populateLocations","populateCurrentClockInTime","populateConsumersNames","clockedinconsumername","consumersSorted","populateStaffNames","totalEmployees","staffclockedinname","employeeCount","clockedInWidgetAjax","getClockedInConsumerNamesDayServicesAjax","getClockedInStaffNamesDayServicesAjax","staffNames","getLocationsForDashboardDayServices","getDashboardDayServicesLocationsJSONResult","getClockedInConsumerNamesDayServicesJSONResult","getClockedInStaffNamesDayServicesJSONResult","hoursWorkedList","selectedWeekView","selectedWeekRange","selectedWeekRangeTxt","hoursList","weeksDropdown","populateWeeksDropdown","currStart","curr_start_date","currEnd","curr_end_date","prevStart","prev_start_date","prevEnd","prev_end_date","newCurrStart","newCurrEnd","newPrevStart","newPrevEnd","populateHoursWorkedList","workdate","check_hours","newHours","overlapDisclaimer","weekRange","dateText","isoWeek","oldSelectedWeekView","oldSelectedWeekRange","oldSelectedWeekRangeTxt","hoursWorkedWidgetAjax","getWorkWeeks","workWeeks","getHoursWorked","getWorkWeeksResult","getCompanyWorkWeekAndHoursResult","defaultShow","tempShow","incidentTrackingWidgetObj","showDropdown","populateIncidentTrackingWidget","showValue","showDropdownData","itTable","incidents","dupName","viewedBy","o1","o2","removeArray","viewedOn","orginUser","originallyEnteredBy","userHasViewed","showBold","incidentCategory","reviewIncident","incidentTrackingWidgetAjax","getITDashboardWidgetDataAjax","getITDashboardWidgetDataResult","tempID","jobs","timeData","timeDataLookup","currentJob","currentTimeRecord","infalPunchClockButton","infalTimeClockTable","jobSelectionSection","timeMessageSection","clockedInStatusMessage","setInfalId","idObj","App_Username","getJobs","returnJobs","populateJobDropDown","cacheTimeDataForLookup","getTimePunches","Job_Description_No","timeClockTable","clockedInRecord","record","OutTime","getCurrentRecord","Emp_Job_Description","InTime","Job_Description","selectedJob","selectedJobDescription","calcPosition","restOfStuff","inDate","startAMPM","empIdString","jobIdString","latInString","longInString","StartTime","StartAMPM","InfalClockInResult","updateTimeData","outDate","EndTime","EndTimeAMPM","recIdString","latOutString","longOutString","Memo","memoPopup","timeRecord","clearBtn","memoInput","Emp_Job_Id","buildComponents","infalTimeClockAjax","createJobButtonsHtml","infalClockInDataSetUp","EmpId","jobId","LatIn","LongIn","clockInData","checkClockInResult","infalClockOutDataSetUp","recId","LatOut","LongOut","memo","clockOutData","checkClockOutResult","checkAnticipo","locationNoteslocationDropdown","locationNoteList","locationNoteLocationObj","locationNoteLocationLookupObject","getLocationProgressNotesAndPermission","populateLocationProgressNoteWidgetResult","datecreated","Location","getLocationsWithUnreadNotesAndPermission","planWorkflows","planTasks","tasks","dueDateRange","dueDateFrom","dueDateTo","consumerMiddleName","workflowStepDescription","setFilterDueDates","dateRangeText","dueDates","populatePlanWorkflowWidget","buildHtmlFromData","showCustomDates","dueDateDropDownValue","fromDateInputValue","toDateInputValue","consumersDropDownValue","tasksDropDownValue","dueDateDropDown","consumersDropdown","tasksDropdown","dueDateRangeDropDownData","taskDropdownData","workflowStepDueDate","buildPlanWorkflowHTML","buildWorkflowStepHTML","stepHTML","planTypeContainerHtml","planTypeHtml","dueDateLabelHtml","planEffectiveStart","planRevisionNumber","responsiblePartyId","workflowStepId","consumerPlanInfo","annualPlans","revisionPlans","filterConsumerBy","getFilteredConsumer","getPlanWorkflowWidgetDataResult","getPlanWorkflowWidgetData","goalsWidgetDate","populateFilteredList","totalServices","serviceCount","populateOutcomeTypesFilter","dataArr","defaultOutcome","outcomesWidgetOutcomeTypeId","outcomesWidgetOutcomeTypeName","populateLocationsFilter","outcomeWidgetLocationId","outcomeWidgetLocationName","populateGroupsFilter","defaultGroup","outcomesWidgetGroupId","outcomesWidgetGroupName","oldFilter","oldOutcomesWidgetGoalsDate","oldOutcomesWidgetOutcomeTypeId","oldOutcomesWidgetOutcomeTypeName","oldOutcomeWidgetLocationId","oldOutcomeWidgetLocationName","oldOutcomesWidgetGroupId","oldOutcomesWidgetGroupName","goalsDate","oldGoalsDate","OutcomesWidgetOutcomeTypeId","OutcomesWidgetOutcomeTypeName","OutcomeWidgetLocationId","OutcomeWidgetLocationName","OutcomesWidgetGroupId","OutcomesWidgetGroupName","remainingDailyServicesWidgetAjax","outcomesWidgetgoalsDate","widgetBodyNav","makeAjaxCall","todaydate","outcomesWidgetLocationId","populateOutcomeTypesRemainingServicesWidgetFilterResult","populateLocationsRemainingServicesWidgetFilterResult","populateGroupsRemainingServicesWidgetFilterResult","remainingServicesWidgetFilterResult","rosterWorkflows","workflowName","getRosterToDoListWidgetDataResult","rosterToDoListWidgetAjax","getRosterToDoListWidgetData","missingSignatureData","signaturePlanStatus","signatureWidgetGroupId","signatureWidgetGroupName","signatureWidgetGroupCode","signatureWidgetLocationId","signatureWidgetLocationName","missingSignaturesList","planStatusDropdown","populatePlanStatusDropdown","locData","oldSignaturePlanStatus","oldSignatureWidgetGroupId","oldSignatureWidgetGroupName","oldSignatureWidgetGroupCode","oldSignatureWidgetLocationId","oldSignatureWidgetLocationName","filteredSignatures","populateMissingSignatures","statusName","aname","individual","bname","newId","activeStatus","sigTable","missingSignatureAjax","getMissingPlanSignatures","getMissingPlanSignaturesResult","getGroupsDropdownData","weeks","scheduleObj","selectedWeek","selectedStart","selectedEnd","buildScheduleObj","service_date","difftime","timeSpan","initials","populateSchedule","filterBy","dataByDate","locationDates","locationDateEvents","timeKeys","scheduleList","divOne","divTwo","times","timeFrame","oldSelectedWeek","oldSelectedStart","oldSelectedEnd","oldMyscheduleWidgetLocationText","myscheduleWidgetLocationText","scheduleAjax","getSchedulingPeriodsDetailsAjax","currentWeek","getSchedulingPeriodsAjax","getSchedulingPeriodsResult","start_date","end_date","is_curr_date","getSchedulingPeriodsDetailsResult","widgetResults","clockInOutBtn","rowdataPopup","currentLocationId","currentStartTime","currentEndTime","giveInvalidTimeError","timeError","timeClockError","widgetError","punchClock","clockAction","timeClockAjax","clockInStaff","clockOutStaff","updateStaffTimeClock","updateKeys","newLocationData","newStartTimeData","newEndTimeData","newLocationId","newTime","updateStaffClockTime","getStaffActivity","processStaffActivity","populateLocationsDropdown","displayRowData","locationsDropdown","applyChanges","showTimeClockDeleteWarning","timeClockDeleteWarningPop","orgTime","isStartTime","checkedAgainstTime","lastClockOutTime","Staff_ID","location_code","resultsRow","jqXHR","timeClockDate","getStaffActivityJSONResult","getEntryInfo","dateRange","populateSingleEntryCountInfo","groupSingleEntryCountInfo","singleEntryCountWidgetAjax","getSingleEntryCountInfo","getSingleEntryCountInfoJSONResult","incident","incidentTypeId","reportedDate","reportedTime","locationDetailId","prevention","contributingFactor","includeInCount","involvementId","consumerIncidentLocationIdString","consumerInvolvedIdString","employeeInvolvementIdString","othersInvolvedNameString","othersInvolvedCompanyString","othersInvolvedAddress1String","othersInvolvedAddress2String","othersInvolvedCityString","othersInvolvedStateString","othersInvolvedZipCodeString","othersInvolvedPhoneString","othersInvolvedInvolvementTypeIdString","othersInvolvedInvolvementDescriptionString","updateIncidentId","isNewIncident","consumersInvolvedIds","newConsumersInvolvedIds","clearUpdateData","datakeys","getIncidentId","setNewConsumerInvolvedIds","involvementIds","ids","involvedId","setUpdateIncidentId","getConsumersInvolvedUpdateData","consumerInvolvementIds","itConsumerSection","getConsumersInvolvedIds","consumerInvolvement","consumerIdKeys","consumerInvolvementId","getEmployeesInvolvedUpdateData","employeeRows","employeeIds","toNotify","employeeNameDropdown","involvementDropdown","notifyCheckbox","notifyInput","employeeNameDropdownSelectedValue","employeeid","involvement","getPeopleInvolvedUpdateData","peopleRows","companies","addresses1","addresses2","cities","states","zips","phones","involevmentTypes","involevmentDescriptions","companyInput","company","getIncidentDetailsUpdateData","iDate","iTime","rDate","rTime","factors","updateIncidentSaveEditData","saveIncident","saveConsumerData","deleteConsumerData","deleteIncidentWarningPopup","cancelIncident","followUpData","consumerFollowUp","injuryData","consumerInjuries","interventionsData","consumerIntervention","consumerReview","consumerReporting","behaviorData","consumerBehavior","fupPromises","saveConsumerFollowUps","injPromises","saveConsumerInjuries","intPromises","saveConsumerInterventions","revPromises","saveConsumerReviews","repPromises","saveConsumerReports","behavPromises","saveConsumerBehaviors","consumerDataSavePromises","consumerInvolvedId","consumerFollowUpIdArray","followUpTypeIdArray","personResponsibleArray","dueDateArray","completedDateArray","notesArray","idKeys","idKey","fuData","updated","followUpTypeId","personResponsible","dateCompleted","savePromise","itConsumerInjuryIdArray","checkedByNurseArray","checkedDateArray","detailsArray","itInjuryLocationIdArray","itInjuryTypeIdArray","treatmentArray","iData","checkedByNurse","checkedDate","injuryDetails","injuryLocationId","injuryTypeId","injuryTreatment","itConsumerInterventionIdArray","aversiveArray","itConsumerInterventionTypeIdArray","startTimeArray","stopTimeArray","timeLengthArray","aversive","interventionType","interventionNotes","timeLength","itConsumerReviewIdArray","reviewedByArray","reviewedDateArray","noteArray","rData","reviewedBy","reviewedDate","consumerReportIdArray","reportDateArray","reportTimeArray","reportingCategoryIdArray","reportToArray","reportByArray","reportMethodArray","itConsumerReportId","dateReported","timeReported","reportingCategoryID","reportTo","reportBy","reportMethod","consumerBehaviorIdArray","behaviorTypeIdArray","endTimeArray","occurrencesArray","behaviorTypeId","occurrences","followUpDeletes","getDeleteData","injuryDeletes","interventionDeletes","reviewDeletes","reportDeletes","behaviorDeletes","fuKeys","fuKey","injKeys","injKey","intKeys","intKey","revKeys","revKey","repKeys","repKey","bhKeys","addConsumers","newIncidentCard","incidentCard","incidentPermissions","incidentDetails","nonEditableText","updatedText","popupElement","resetValue","permissions","originallyEnteredByUserId","incidentTrackingCard","itReviewData","consumersSection","detailsSection","employeeSection","peopleSection","nextBtn","prevBtn","cardActionBtns","itConsumerInvolved","itEmployeesInvolved","itOthersInvolved","currentSectionNumber","toggleSaveBtnStatus","disableBtn","toggleActionBtns","toggleNavBtns","showSection","currentlyVisibleSection","targetSectionSelector","nextSectionName","buildNav","buildActionBtns","buildSections","pageNumber","itDetailsSection","itEmployeeSection","itPeopleSection","cardNav","cardSections","consumerSectionHasError","checkforRequiredConsumer","selectedErroredConsumers","hasNoErrors","checkEntireIncidentCardforErrors","detailSectionHasErrors","peopleSectionHasErrors","consumerSectionHasErrors","toggleSave","incidentTrackingEmailData","alphaDropdown","betaDropdown","supervisorBtnWrap","fromDateBtnWrap","toDateBtnWrap","alphaName","beta","betaName","categoryName","changedSelectedAlphaBetas","alphaBetaData","selectedAlphaId","selectedBetaData","viewCaseLoad","populateSelectedFilterValues","selectedFilters","showBtnWrap","supervisorBtn","showCloseBtn","fromDateBtn","toDateBtn","populateOverviewTable","saveFilterData","alphaId","betaId","populateFilterDropdowns","populateCategoriesDropdown","populateUserAndEmployeeDropdowns","getFromDateValue","getToDateValue","filterDropdownEventSetup","setupFiltering","filterAndReportsBtnsWrap","ITLocation","ITConsumer","ITFromDate","ITToDate","tmpAlphaId","tmpAlphaName","tmpBetaId","tmpBetaName","tmpLocationId","tmpLocationName","tmpConsumerId","tmpConsumerName","tmpCategoryId","tmpCategoryName","tmpToDate","tmpFromDate","tmpShow","betas","populateBetas","toDateVal","populateAlphas","alphas","defaultOption","filteredBetas","allEmployees","getITReviewPageEmployeeListAndSubListResult","employeeobjectArray","employeeObject","alphaNode","betasNode","betaNode","alphaAndBeta","defaultAlpha","populateConsumersDropdown","showIncidentEmailPopup","incidentEmailPopup","toAddress","inputField","ccAddress","bccAddress","checkIfITReportIsReadyInterval","mainWrap","checkITReportExists","callITReport","supervisorName","consumersInvolved","incidentEmailBtn","dateOne","dateTwo","newDateOne","newDateTwo","timeOne","timeTwo","updateNoteBtn","formReadOnly","currentEntryUserId","OODTransportationData","currentConsumer","currentRecordUserId","selectedServiceDate","clickSource","numberInVehicleInput","startLocationInput","endLocationInput","insertFormData","updateFormData","myconsumer","inputContainer0","updatecontainer","updatemessage","btnRow","numInVehicleInput","startLocInput","endLocInput","checkServiceDateInput","checkStartInputTime","checkEndInputTime","myservicedate","isDateBefore","currentserviceDate","checkTimeForAfterNow","isEndAfterStartTime","isEndTimeValid","isStartTimeValid","enteredTime","tempNow","nowHour","nowMinuet","saveType","deleteOODForm10TransportationEntryResult","SAMLevelDropdown","contactMethodDropdown","jobSeekerPresentDropdown","TSCNotifiedDropdown","applicationSubmittedDropdown","interviewDropdown","bilingualSupplementDropdown","narrativeOutcomeInput","inputContainer1","inputContainer2","populateStaticDropDowns","populateConsumerEmployersDropdown","populateContactTypeDropdown","currentConsumerId","employers","employr","filtereddata","getContactTypesResult","contactTypes","contactCaption","getOutcomesResult","outcomeCode","outcomeCaption","SAMLevelDropdownData","yesNoDropdownData","deleteOODFormEntryResult","monthYearDropdown","referenceNumberDropdown","nextScheduledReviewInput","employmentGoalInput","referralQuestionsInput","individualsInputInput","issuesConcernswithProgressInput","planGoalsNextMonthInput","numberConsumerContactsInput","numberEmployerContactsbyConsumerInput","numberEmployerContactsbyStaffInput","numberMonthsinJobDevelopmentInput","emReviewDateDBValue","saveAndNewBtn","reviewStartDate","reviewEndDate","FORMNUMBER","OODMonthlySummariesTable","emReviewData","selectedServiceId","todaysdate","thisMonthFirstDay","getShortDate","LineBr2","LineBr3","thisDate","thisShortDate","setReviewStartandEndDates","displaynoReferenceNumberPopup","dateparts","thisMonth","daysinMonth","thisYear","noReferenceNumberPopup","mydate","arrayDates","firstDay","partialdate","fulldate","employmentGoalInpt","referralQuestionsInpt","individualsInputInpt","issuesConcernswithProgressInpt","planGoalsNextMonthInpt","numberConsumerContactsInpt","numberEmployerContactsbyConsumerInpt","numberEmployerContactsbyStaffInpt","numberMonthsinJobDevelopmentInpt","checknextScheduledReviewDateInput","thisNextReviewDate","updatedFullDate","buildOODMonthlySummariesTable","getReviewDate","DBValue","deleteFormMonthlySummaryResult","narrativeInput","populateContactMethodDropdown","getContactMethodsResult","contactMethods","interventionsInput","groupSizeInput","populatePositionDropdown","populateIndicatorsDropdown","getOODPositionsResult","defaultGroupSize","getIndicatorsResult","indicators","indicator","numgroupSizeInput","interventionInpt","selfAssessmentInput","providerAssessmentInput","reviewVTSDropdown","wasOfferedHoursNotWorkedDropdown","offeredHoursNotWorkedInput","offeredHoursNotWorked","nextScheduledReviewInputDIV","selfAssessmentLabel","providerAssessmentLabel","reviewVTSDropdownLabel","wasOfferedHoursNotWorkedDropdownLabel","selfAssessmentInpt","providerAssessmentInpt","numofferedHoursNotWorkedInput","visibility","behavioralIndicatorsDropdown","jobTaskQualityIndicatorsDropdown","jobTaskQuantityIndicatorsDropdown","employerAssessmentInput","supportAndTransitionInput","employerAssessmentLabel","supportAndTransitionLabel","employerAssessmentInpt","supportAndTransitionInpt","absentReasons","notificationTypes","MASS_ABSENT_POPUP","CONSUMERS_SELECTED_INPUT","DATE_OF_ABSENSE_INPUT","DATE_REPORTED_INPUT","LOCATION_INPUT","NOTIFICATION_DROPDOWN","REPORTED_BY_INPUT","REASON_DROPDOWN","TIME_REPORTED_INPUT","SAVE_ABSENT_BTN","DELETE_ABSENT_BTN","CANCEL_ABSENT_BTN","absentLocation","notificationId","reportedBy","resonId","absentRecordId","doPreSaveCheck","showPreSaveWarningPopup","preSaveWarningPopup","saveSingleAbsent","singleSaveData","absentReasonId","absentNotificationId","preSaveData","updateAbsents","checkAbsentPreSave","absentAjax","oneLocationAbsentSave","absentPreSaveCheck","saveMassAbsent","getConsumersByLocationAbsentResults","getConsumersByLocationAbsent","getConsumersByLocationAbsentResult","absentConsumerIds","createAbsentConsumersObj","getAbsentFormDropdownData","selectAbsentNotificationTypes","selectAbsentReasons","setSaveData","absentData","tempLocation","tempLocationName","tempLocationId","tempDateOfAbsense","dateOfAbsence","tempReportedBy","reportedby","tempDatereported","tempTimereported","timereported","tempReasonId","reasonId","tempNotifiId","recordid","populateAbsentFormDropdowns","defaultValues","notifValue","notif","reasonValue","notificationTypeData","notifid","notifdesc","reasonsData","reasonid","reasondesc","setupFormEvents","selectedOpt","deleteAbsent","buildAbsentForm","dateOfAbsent","absentForm","ABSENT_BTN_WRAP","showAbsentPopup","setConsumerIdString","toggleActionNavBtns","buildAbsentActionNav","selectData","absentPreSaveResult","allLocationSaveAbsent","allLocationSaveAbsentResult","absentId","oneLocationAbsentTableSaveResult","selectAbsentNotificationTypesResult","selectAbsentReasonsResult","selectAbsent","selectAbsentResult","selectedConsumerIDs","addConsumerToCustomGroup","newGroupID","GROUP_ADMIN_POPUP","GROUP_LIST","customGroupData","newGroupName","updateCustomGroupData","showGroupDeleteWarningPopup","groupDeleteWarningPop","removeCustomGroup","populateGroupList","groupCheckboxEvent","inputEl","checkboxEl","addConsumerToGroup","removeConsumerFromGroup","groupDeleteEvent","addToGroupEvent","cg","groupMembers","isConsumerGroupMember","gm","itemAction","manageConsumerAction","buildGroupList","showAddNewGroupPopup","newGroupPop","addNewGroupInput","addNewGroupBtn","addCustomGroup","CustomGroupID","manageGroupPopup","buildManageGroupsPage","groupsPage","topSection","backToRoster","locationLabel","groupsList","manageGroupsPage","addCustomGroupJSONResult","consumerIDs","menuNewList","currentScreen","previousScreen","nextScreen","getImageOrientation","reader","FileReader","view","DataView","getUint16","getUint32","little","tags","readAsArrayBuffer","formatPortraitPath","splitPath","newPath","sp","updatePhotoToDefault","targetConsumerId","consumerCardFromRosterList","rosterPic","infoCardPic","updateConsumerPhoto","pic2","pic1","imageObj","Image","srcData","orientation","imageObjSrcVal","orderScheduleData","Sun","Mon","Tues","Wed","Thur","Fri","Sat","menulist","absentMenuItem","downloadAttachment","attachmentid","menuItem","locationObj","setConsumerToCard","rosterList","closeCard","backwordBtn","forwardBtn","visibleSection","visibleSubSection","menuList","showCardSection","showCardSubSection","targetSubSection","currentlyVisibleSubSection","handleBackButtonClick","isMenuListHidden","sectionBackBtn","clearAllGlobalVariablesOnBack","isSubSection0Visible","subSec0","cardClone","populateAbsentSection","sectionInner","populatePhotoSection","removePhotoBtn","photoInput","populateGroupSection","groupList","populateNotesSection","noteDate","populateProgressNotesSection","viewAllNotesSection","buildViewAllNotesSection","addNoteSection","buildAddNoteSection","viewSingleNoteSection","buildViewSingleNoteSection","addMessageSection","buildAddMessageSection","populateAttachmentsSection","attachmentsList","showRelationshipDetails","companyName","detailWrap","donebtn","populateRelationshipsSection","relationshipTable","relationshipHeader","subDataRowPrimaryPhone","secondaryPhone","subDataRowSecondaryPhone","cellularPhone","subDataRowCellularPhone","subDataRowEmail","populateWorkflowSection","populateScheduleTable","showWeekOne","isWeekOneEmpty","showWeekTwo","isWeekTwoEmpty","tableWrap","scheduleTable1","scheduleTable2","table1Data","weekOne","table2Data","weekTwo","scheduleResults","scheduleResultsObj","scheduleResultsObjKeys","newkey","populateScheduleSection","al","populateIntellivueSection","applicationList","lineBR","appId","intellivue","getViewURL","cardInner","buildMenu","cardMenuList","menuItems","itemTitle","cardMenu","infoTask","setupCard","arraynumber","statusDate","getConsumerNotes","locationResults","demographics","getApplicationListHostedWithUser","navBtnWrap","cardHeading","demoData","unEditabled","gkOnly","sectionLoad","dataLoad","consumerIDLoad","clearCurrentEdit","currentEdit","saveIcons","formatName","middle","formatMaritalStatus","formatDOB","formatSSN","SSN","formatOrganizationAddress","add1","add2","setInputType","pattern","getAgeFromDOB","birthDate","age","monthDiff","formatLabelText","splitText","formatViewInnerHTML","checkAlphabets","char","formatDataForDisplay","formattedPrimaryPhone","formattedSecondaryPhone","cellPhone","cellphone","DOB","socialSecurityNumber","medicaidNumber","MedicaidNumber","medicareNumber","MedicareNumber","ResidentNumber","consumerNumber","localID","county","County","organization","orgName","organizationAddress","orgAdd1","orgAdd2","orgCity","orgState","orgZipCode","formattedOrganizationPhone","orgPrimaryPhone","organizationPhone","middlename","generation","maritalStatus","gender","primaryLanguage","language","educationLevel","additional","demographic","buildInputGroupWrap","buildInputGroup","viewElement","editElement","phoneNumberEndIndex","phoneNumberStartIndex","saveIcon","validateEmail","validSocial","social","populateDemographicsSection","viewEle","buildPathToEmployment","groupWrap","buildAddressInfo","propValue","buildContactInfo","buildAdditionalInfo","viewElements","showDetailsoBtn","buildOrganizationInfo","buildDemographicInfo","isGK","addressInfo","additionalInfo","organizationInfo","redirectPopup","getLoginCredentials","getIntellivueAppIdResult","getApplicationListHostedWithUserResult","applicationobjectArray","Applications","refId","getIntellivueViewURLResult","showIntellivueRedirectWarning","allNotesPage","allNotesList","singleNotePage","singleNotesList","allNotesData","singleNoteData","formatTime","datecreatedArray","sortDataByDate","dateArrayA","dateArrayB","Date_Entered","buildNoteImage","buildNoteAuthorName","buildNoteDateTime","buildNoteTitle","buildNoteText","buildNoteDetails","dateTime","buildNoteMessageg","notePreview","buildNote","buildTitleInput","buildTextInput","buildSendBtn","getSingleNoteData","selectLocationNote","handleReplyToNoteBtnClick","notePopup","sendNoteBtn","updateLocationNote","loadSingleNotePage","populateSingleNotePage","noteAuthor","notetitle","emp_id","backToNotesMain","buildSingleNotePage","getLocationNotesData","getLocationProgressNotes","handleNewNoteBtnClick","noteTitleInput","insertLocationNote","populateAllNotesPage","noteRead","is_read","MainAuthor","updateLocationNoteDateRead","buildAllNotesPage","deleteLocationNote","doesLocationHaveUnreadNotes","datum","checkIfLocationHasUnreadNotesResult","getLocationsWithUnreadNotesAndPermissionResult","selectNotesByLocationResult","selectNotesByLocationAndPermissionResult","selectLocationNoteResult","VIEW_ALL_NOTES_SECTION","VIEW_SINGLE_NOTE_SECTION","ADD_NOTE_SECTION","ADD_MESSAGE_SECTION","ADD_NOTE_BTN","ADD_MESSAGE_BTN","selectedNoteId","newNoteTitle","newNoteText","newMessageText","consumerNotes","addNewNote","hideNote","insertConsumerNote","populateViewNotesSection","addNewMessage","updateConsumerNote","populateViewSingleNoteSection","cacheNotes","selectNotesByConsumerAndLocation","cacheSingleNoteData","selectConsumerNote","markNoteAsRead","noteElement","updateConsumerNoteDateRead","noteMenuItem","shortenNotePreview","noteString","shortenedNote","c_id","titleInput","messageInput","singleNoteList","dateTimeArray","timeArray","hidenote","hasBeenRead","hideNoteCheckbox","hidenotedetail","clickableNoteAreas","tmpHideNote","updateHideNote","sendButton","addNoteBtn","notesList","deleteConsumerNote","getConsumersWithUnreadNotesByEmployeeAndLocationPermissionResult","selectNotesByConsumerAndLocationResult","selectConsumerNoteResult","getlocationsWithConsumersWithUnreadNotesResult","daysOffTable","callOffTable","openShiftTable","overlapWrap","overlapsExist","overlapApprovalData","overlapIds","daysOffOverlapConfirmed","areConsecutiveDates","date1","date2","buildApproveRequestPage","populateApprovalPage","selectedShiftCounter","requestData","daysOff","callOff","openShift","requestType","daysOffTableOpts","cycleApprovalStatus","openShiftTableOpts","callOffTableOpts","renderDaysOffSectionBody","dataForCallOffandOpenShifts","noRequestsMessage","approvalStatus","shifts","idA","idB","groupedShifts","lastSubArray","areDatesConsecutive","consecutiveReason","fromTime","toTime","shiftIds","dayOffId","reasonName","messageElement","submitApproveDenyRequest","displayApprovedOverlapPopup","overlapAlert","displayOverlapPopup","overlapApprovedShifts","openShiftRequests","openShiftRequestList","decision","selectedShifts","approvedShift","openShiftRequest","selectedStartTime","selectedEndTime","existingStartTime","existingEndTime","overlapIntro","overlapOKBtn","openShiftTableBody","callOffTableBody","callOffRequests","daysOffTableBody","daysOffRequests","getOverlapDataforSelectedShiftResult","overlapWithExistingShiftData","requestedShiftId","overlapShiftData","callOffShiftId","approveDenyResponse","daysOffIdString","requestDataText","parentDiv","nestedDivs","nestedDivsObject","nestedDiv1","nestedDiv2","nestedDiv3","paragraphs","_scheduleArray","_schedules","_appointments","_locationsArr","_reasonsArr","_startDay","_currentWeekHours","_scheduleView","_currentView","detailsLocationId","shiftDateForCall","appendModuleContainer","moduleName","actionCenter","moduleContainer","removeInnerHtml","elementId","addMilliseconds","timestamp","addMinutes","MILLISECONDS_IN_MINUTE","getServiceDate","dateScheduled","serviceDateObj","serviceYear","serviceMonth","serviceMonthName","serviceDay","setStartDay","dayObj","weekDays","Day_of_Week","eachDateOfInterval","dirtyInterval","isWithinInterval","getTotalHours","startTimeDate","endTimeDate","startTimeMilliseconds","endTimeMilliseconds","milliseconds","midnightNextDay","timeArr","dirtyHours","dirtyMinutes","renderLocationDropdown","calContainer","scheduleViewWrap","populateSchedules","renderDetailsPopup","shiftDetails","openShiftDetails","pendingOpenShiftDetails","pendingCallOffDetails","appointmentDetails","appointmentId","medTrackingId","renderShiftDetails","renderOpenShiftDetails","renderPendingOpenShiftDetails","renderPendingCallOffDetails","renderAppointmentDetails","timeScheduled","shiftNotes","shiftType","workCode","workCodeDescription","callOffBtn","renderRequestOffPopup","requestShiftBtn","notifiedEmployeeId","getOverlapStatusforSelectedShiftResult","overlapWithExistingShift","renderSendShiftRequestPopup","existingShiftLocationName","overlapCancelBtn","sendRequestBtn","populateEmployeesDropdown","cancelRequestBtn","requestedById","populateReasonsDropdown","employeeName","employeeData","eventId","reasonDropdown","notesInput","toggleView","scheduleView","renderScheduleViewBtn","scheduleViewBtn","populateShiftTotalHours","getDateRangeFromCalTitle","calTitle","dateString1","dateString2","calcWeekTotalHours","dateRangeObj","myShifts","withinInterval","doesIdMatch","personID","hoursScheduled","wrapMarkup","populateAppointments","allDay","takenToApptBy","timeRegEx","groupPos","callOffStatus","requestShiftStatus","drawCalendar","ical","Web2Cal","loadEvents","onNewEvent","startOfWeek","removeStuffWeDontWant","renderCalFooter","setupCalendarEvents","allday","defaultPlugins","rzCloseAddEvent","closeAddEvent","setupDateHeadingEvent","dateHeadings","monthBtn","weekBtn","dayBtn","eventDetails","appointmenttDetails","appointment","navWrap","leftNav","inliner1","inliner2","calNav","agendaBtn","workshiftBtn","resourceBtn","groupsBtn","calicon","collapseWrap","submitRequest","dateInterval","areDatesValid","fromTimeVal","toTimeVal","areTimesValid","employeeNotifiedId","requestResult","requestDaysOffSchedulingResult","buildRequestTimeOff","fromTimeInput","toTimeInput","submitRequestBtn","fromDateField","toDateField","reasonDropdownField","employeeDropdownField","sectionData","subsectionData","questionSetData","questionData","conditionalQuestionData","applicableSections","getApplicableSections","showApplicableWarningMessage","toggleIsSectionApplicable","isApplicable","applicable","toggleApplicability","getConditionalQuestions","conditionalQuestionId","getQuestionDataById","sortAssessmentDetails","answerData","subsectionId","questionSetId","otherData","sectionOrder","isAssessment","subsectionOrder","subsectionName","questionSetOrder","setType","questionSetType","allowRowInsert","questionSetAllowMultirowInserts","defaultAnswer","questionDefaultAnswer","answerRow","questionOrder","answerId","answerText","answerStyle","questionAnswerStyle","answerOptions","questionAnswerOptions","prompt","questionPrompt","requiredAnswer","questionRequiresAnswer","questionTag","skipped","conditionalAnswerText","questionConditionalAnswerText","questionConditionalQuestionId","getConsumerAssessment","getConsumerAssessmentResult","getConsumerRelationshipsData","getConsumerRelationshipsResult","getConsumerNameInfoData","getConsumerNameInfo","getConsumerNameInfoResult","getServiceAndSupportsData","getPlanAssessmentReport","getPlanAssessmentReportResult","DODDFlag","toDODD","getPlanAssessmentReportWithAttachments","successMessage","insertPlanReportToBeTranferredToONET","insertPlanReportToBeTranferredToONETResult","insertAssessmentGridRowAnswers","assessmentQuestionSetId","newRowData","insertAssessmentGridRowAnswersResult","deleteGridRows","rowsToDelete","deleteAssessmentGridRowAnswers","deleteAssessmentGridRowAnswersResult","getSentToONETDate","getSentToONETDateResult","transeferPlanReportToONETResult","sendSelectedAttachmentsToDODDResult","getDefaultEmailsForFinalizationResult","finalizationActionsResult","assessmentIDInput","versionIDInput","extraSpaceInput","toONETInput","ispInput","oneSpanInput","signatureOnlyInput","includeInput","planAttachmentIdsInput","wfAttachmentIdsInput","sigAttachmentIdsInput","updateConsumerAssessmentAnswers","updateConsumerAssessmentAnswer","answerObject","answers","updateAssessmentAnswersResult","transferPlanReportToONET","updateAssessmentAnswerRowOrder","validationCheck","planRestrictiveMeasures","planConsentAndSign","getSectionMarkup","planIntroduction","servicesSupportsAjax","getServicesAndSupports","anywAssessmentId","ISPValidation","showDeleteWarning","deleteWarning","closeWarningBtn","summaryAlertDiv","returnSummaryRisksValidation","outcomesAlertDiv","missingExperiences","missingReviews","contactsAlertDiv","contactValidationCheck","getContactValidation","importantPeople","importantPlaces","bestWayToConnect","isPlanComplete","isPlanActive","hasUpdatePermission","workingSectionCase","workingNotWorking","sectionsApplicable","servicesAndSupports","servicesAndSupportsChecked","noSupport","naturalSupport","technology","communitResource","professionalReferral","potentialOutcome","hasASectionApplicable","workingSectionComplete","servicesAndSupportsError","IspValidationCheck","planProgressSummary","selectedProviders","paidSupportsProviders","invalidProviders","contactsValidation","servicesAndSupportsQuestionIds","noSupportQuestionIds","paidSupportQuestionIds","professionalReferralQuestionIds","potentialOutcomeQuestionIds","additionalSupportQuestionIds","naturalSupportQuestionIds","technologyQuestionIds","communityQuestionIds","attachedDiv","tooltipText","getAssessmentValidation","servicesAndSupportsData","planValidationAjax","getAssessmentValidationData","workingSectionCheck","additionalSupportCounts","countOccurrences","additionalSupport","paidSupportCounts","professionalReferralCounts","potentialOutcomeCounts","assessmentOutcomes","allAssessmentAreasComplete","updatedAssessmenteValidation","workingAlertDivCase1","workingAlertDivCase2","tocAlertDiv","tocMobileAlertDiv","tocAssessmentCheck","servicesAndSupportsAllVisibleSectionsCheck","updateTocSectionHeaders","groupedByRow","hasValue605Array","hasValue606Array","hasValue605","hasValue606","hasValue607","questionNumber","returnWorkingSectionCaseValue","updateAnswerWorkingSection","check","tocSectionHeader","paidSupportCount","additionalSupportCount","potentialOutcomeCount","communityResource","servicesAndSupportsBtnCheck","idsToCheck","paidSupportBtn","additionalSupportBtn","profRefBtn","outcomesBtn","paidSupportChecked","additionalSupportChecked","professionalReferralChecked","potentialOutcomeChecked","checkboxChecked","errorText","allSections","findQuestionIdCategory","counts","assessmentAreaId","updateSectionApplicability","sectionID","applied","matchingIndex","updateAssessmentValidationSection","updateAssessmentValidationProperty","questionIdCategory","getPlanSpecificOutcomes","planOutcomeExperiences","responsibility","planExperienceResponsibilities","responsibleProvider","paidSupportsIds","paidSupports","isSalesforceLocation","uniqueOutcomeIds","planOutcome","planReviews","outcomeExperienceOutcomeIds","outcomeReviewOutcomeIds","missingOutcomeExperiences","missingOutcomeReviews","progressSummary","checkAllOutcomesComplete","ispValidationContactCheck","summaryRisksValidationCheck","updatedIspOutcomesSetAlerts","ISPAlertDiv","outcomesNav","updateOutcomeDetails","emptyString","updateOutcome","reviewsValidationCheck","alertDiv","experiencesValidationCheck","checkResponsibleProvider","outcomeID","presetArray","planOutcomeExperience","experienceResponsibility","invalidProvidersCheck","contactsValidationCheck","contactData","getContactValidationData","importantPeopleData","importantPeopleType","typeOther","importantPeopleTypeOther","importantPlacesData","importantPlacesType","importantPlacesTypeOther","checkImportantPeople","checkImportantPlaces","checkBestWayToConnect","checkContactsValidation","place","bestWayToConnectAlertDiv","checkExperienceProviders","secondValues","checkExperiencesAfterAddingNewPaidSupport","divs","matches","summaryValidationData","getSummaryRiskValidationData","groupedByQuestionSetId","QuestionSetId","hasNullOrEmptyAnswer","Answer","hasNonEmptyAnswer","QuestionText","hasNullOrEmpty","setSummaryRiskValidation","alertCheckSummaryRisksValidation","isEverythingComplete","getAssessmentValidationDataResult","getContactValidationDataResult","getSummaryRiskValidationDataResult","selectedWorkflowForms","workflowListData","formListData","workflowFormList","formHeader","wfName","formItem","WFTemplateId","workflowID","WFTemplateID","workflowDiv","widgetSettingsPage","sectionreorder","updatedListOrder","widgetsContainer","saveID","group1","group2","percentSymb","daysBackInput","productivityThresholdPercentage","newDaysBack","newProductivity","newWorkHours","configString","viewNotesByOtherUsersCheckBox","lastNoteDaysBackInput","reviewNotesDaysBackInput","newViewNotesDaysBack","newLastNoteEnteredDaysBack","newViewEnteredByOthers","dueDateDropdown","setWidgetSettings","buildWidgetBodyInnerHTML","settingHTML","buildTeamMemberTable","sectionBody","teamMemberTable","allElmnts","setWidgetSettingOrder","sortedProducts","IsBuild","tableOBJ","control","reportCurrentlyProcessing","reportPopup","showTimeEntryReport","reportsAjax","getEmpSingleEntryDetailReportAjax","showOverlapReport","getOverlapSingleEntryDetailReportAjax","overlapBtn","BasicSingleEntryReportResult","SingleEntryOverLapReportResult","emptySignatureDataURL","clearSavedSignaturesAndNotes","removeConsumerFromEVVCache","savedSignaturesAndNotes","currerntConsumer","_consumerID","_signatureDataUrl","_noteDataString","signatureImage","evvEntry","singleEntrySaveSignatureAndNote","validateEVV","signRequired","consumersArray","isValidEVV","hasSignature","hasNote","consumerEVV","EVV","_actionBtn","_evvContainer","_fromSave","fromSave","_signaturePad","signatureDataUrl","noteDataString","_consumerSECard","_consumerCard","_signatureImageMarkup","_signatureMarkup","_noteMarkup","_evvActionMarkup","_tempSigData","_renderEVVMarkup","_renderEVVActionMarkup","_initSignaturePad","_popupEvents","_signatureEvents","SignaturePad","_dataURLToBlob","dataURL","rawLength","uInt8Array","_saveSignatureData","isEmpty","dataUrl","_saveNoteData","_saveEVVInstance","_renderSignatureMarkup","_renderSignatureImageMarkup","_renderNoteMarkup","savebtn","evvDiv","_evvSave","_saveSignature","_saveNote","_evvCancel","fromData","saveButton","_undoSignature","toData","_clearSignature","clearButton","undoButton","editInit","populatePopup","showSignature","showNote","getConsumersSignaturesAndNotesResult","evvOptions","evv","getSpecificConsumerSignatureAndNote","signOrNote","signatureAndNoteData","payPeriodData","workCodeData","crossMidnightTimeData","saveUserId","rejectedTime","payPeriodDropdown","workCodeDropdown","locationTypeDropdown","totalHoursInput","rejectionReasonInput","transportationBtn","transportationPopup","licenseplateInput","odometerStartInput","odometerEndInput","odometerTotalInput","destinationInput","reasonInput","saveTransBtn","deleteTransBtn","cancelTransBtn","saveOrUpdate","nowMinutes","rejectionReason","evvReasonCodeObj","evvReasonCode","locationTypeCode","wcServiceType","reasonRequired","eligibleConsumersObj","endTimeClicks","evvAttest","evvCommunity","defaultTimesChanged","timeOverlap","isBillable","startLatitude","startLongitude","endLatitude","endLongitude","transportationSaved","isTransportationValid","transportationType","tmpTransportationType","tmpTransportationReimbursable","tmpOdometerStart","tmpOdometerEnd","tmpTransportationUnits","tmpDestination","tmpReason","tmpLicenseplate","isEVVSingleEntry","reasonCodeValue","eVVChangeDate","isEndTimeChangePermission","moveConsumersToTimeCard","disableInput","enableInput","saveorupdate","consumer_Ids","deviceOS","updaterId","inComments","workCodeID","attest","attestCheckbox","community","communityCheckbox","evvLocationType","updateEVVReason","setStartTimeLocation","setEndTimeLocation","setTotalHours","hoursInput","totalHours1","totalHours2","day1StartTime","day1EndTime","day2StartTime","day2EndTime","updateDateValMinMax","resetDate","setEditDataValues","Single_Entry_ID","Date_of_Service","Work_Code_ID","Check_Hours","Comments","Number_Consumers_Present","billable","keytimes","rejected_time","clearCard","reasonCodeDropdown","clearConsumerSection","checkPermissions","getAllowedConsumersBasedOffResidence","residence","getAllowedConsumersBasedOffServiceLocations","getSingleEntryUsersByLocationJSONResult","showConsumerExtras","consumercard","extras","extrasBtn","removeConsumerFromTimeCard","evvCheckConsumerEligibility","consumerWarningPopup","consumerWrap","evvCheckRemainingConsumers","saveTransportation","deleteTransportation","clearTransportationValues","calculateMileage","startVal","endVal","checkTransportationRequiredFields","checkOdometer","odoTotal","odoStartVal","odoEndVal","odoTotalVal","isStartValid","isEndValid","checkStartVal","checkEndVal","setToalMiles","totalMiles","startValue","endValue","totalValue","checkTotalMiles","totalMilesVal","checkReason","reasonVal","checkDestination","destinationVal","checkLicensePlate","licenseplateVal","setupTransportationEvents","oldTransportationType","oldlicenseplate","oldTransportationReimbursable","oldOdometerStart","oldOdometerEnd","oldTransportationUnits","oldDestination","oldReason","populateTransportationDropdown","buildTransportationPopup","buildTransportationBtn","checkDates","payPeriodStart","payPeriodEnd","newEntryDate","isDateAfter","isDateAfterToday","checkWorkcodes","workCodeSelect","currentValue","checkLocation","locationSelect","checkTimeAndHours","checkStartTimeInputsForAfterNow","convertedToday","splitServiceDate","entryDateObj","checkConsumers","consumerError","checkNote","checkEvv","reasonSelect","saveAndSumbitBtn","editSingleEntryCardStatus","sendevv","showDeleteEntryWarningPopup","checkAttestStatus","workCodeDropdownEvent","evvCheckConsumerEligibilityExistingConsumers","origStartTime","evvCheck","setEndTimeOnClick","origEndTime","systemDefaultForCheckEnd","insertType","saveAndUpdate","servicetype","tempEndTime","endTimeHour","endTimeMinute","populatePayPeriodDropdown","pp","startDateAbbr","endDateAbbr","populateWorkCodeDropdown","wcData","wc","workcodeid","workcodename","keyTimes","populateReasonCodeDropdown","reasonCode","reasonDescription","populateLocationTypeDropdown","locationTypeDropdownData","populateCard","showEvv","wcObj","ppObj","disableCardFields","buildPayPeriodDropdown","buildWorkCodeDropdown","buildEVVReasonDropdown","buildLocationTypeDropdown","buildEVVReasontext","buildStartTimeInput","buildEndTimeInput","buildTotalHoursInput","buildRejectionReasonInput","buildAttestCheckbox","buildCommunityCheckbox","buildTimeEntrySection","wrap4","wrap5","wrap6","wrap7","consumerSectionError","cp","buildSaveDeleteCancelButtons","payperiod","isOnlyEndTimeChangePermission","timeEntrySection","saveDeleteCancel","editTimeEntry","timeCard","seActivityElement","timeEntryData","isOrginUser","tx","recordActivityElement","Anywhere_Closed","dateofService","borderBottom","Work_Code_Name","rejectionReasonText","supervisors","payPeriodText","statusBtnWrap","workCodeBtnWrap","tmpSupervisorId","tmpSupervisorName","tmpEmployeeId","tmpEmployeeName","tmpStatus","tmpStatusText","selectAllBtn","mapBtn","payPeriodsDropdown","approveNavBtn","rejectNavBtn","submitNavBtn","workCodeId","workCodeName","tmpWorkCodeId","tmpWorkCodeName","statusLookup","workCodeLookup","enableSelectAll","sortedSelectedRows","rejectOrApprove","showMap","IsFilterDisable","sortSelectedRowsForUpdate","sr","updateSelectAllStatus","updatePromiseArray","selectedRowKeys","statusUpdateData","updatePromise","getReviewTableData","updateEntryStatus","setApproveOrReject","approveOrReject","buildStatusChangePopupMessage","pCount","aCount","messageBody","pMessageContainer","pMessageWrap","pMessage","aMessageContainer","aMessageWrap","aMessage","aMessage2Wrap","aMessage2","aMessageBtnWrap","approveBtn","showStatusChangePopup","reviewTableData","actionNavEvent","dataMessage","notifyBtn","statusCloseBtn","workCodeBtn","workCodeCloseBtn","buildSupervisorDropdown","sup","aNameSplit","bNameSplit","aName","bName","buildEmployeeDropdown","emp","repopulateEmployeeDropdown","shortDescription","buildStatusDropdown","checkDateValidation","setBtnStatusOfApplyFilter","getDataForTimeEntryEdit","showRowDetails","entryStatus","rowName","rowDate","rowStartTime","rowEndTime","rowWorkCode","editBtn","showSubmitError","showRejectionPopup","workCodeText","consumerDisplay","loadingDisplay","transportationDisplay","enableSelectAllRows","handleReviewTableEvents","Anywhere_status","Location_Name","workcode","WCCode","comments","transportation_units","iconsBox","commentsBox","svgElement","buildHoursWorked","buildSERecordActivity","lastRow","lastRowHour","seData","seID","rejected","dateVal","timeVal","submittedUser","submit_date","approved_time","approvedUser","rejectedUser","buildTopNav","buildReviewPage","addMap","fitleredBy","startPeriod","endPeriod","dashStatus","markerLabelDate","markerLabelStartTime","markerLabelEndTime","markerLabelText","recordCnt","splitStartDate","splitEndDate","wcAbbreviation","entriesByDate","payPeriodBtnWrap","locationNameBtnWrap","workCodeNameBtnWrap","submitEntries","statusDataObj","deleteEntries","deletePromises","submitEntry","payPeriodBtn","locationNameBtn","locationNameCloseBtn","workCodeNameBtn","workCodeNameCloseBtn","SE_Trans_Reimbursable","setupFilterEventListeners","dropdownID","wcCode","abbStatus","buildReportButton","fromEdit","routeNameInput","driverDropdown","otherRiderDropdown","vehicleDropdown","milesRadio","tripsRadio","consumerSectionBody","noConsumerWarning","consumersOnRecord","routeInfoCard","routeInfoCardBody","autocomplete","saveRoute","consumerSectionCard","consumerSectionHeader","checkRequiredFieldsOfAddRoute","routeName","setBtnStatusOfAddRoute","vehicleDropdownData","driverDropdownData","otherRiderDropdownData","vehicleNumber","resetPageForNewDate","consumerRemoveAction","updateConsumerData","retrieveConsumerData","consumerDetails","TRANS_routeDocumentationAjax","getConsumerDetails","getConsumerDetailsResult","transportationCard","TRANS_consumerDocCard","createCard","driverddElement","otherRiderElement","otherRider","vehicleElement","locationElement","billingType","tripName","driverId","tripCompletedId","TRANS_addRouteAjax","insertTrip","insertTripCompletedResult","dbCallArr","alternateAddress","completedDetailId","pickupOrder","riderStatus","scheduledTime","specialInstructions","totalTravelTime","consumerDetailSubmit","tripDetailId","tripsCompletedId","insertUpdateTripConsumers","saveRoutePopup","tripDate","vehicleId","documentBtn","routeID","vehicleInfoId","TRANS_vehicleInspection","enterPath","vId","rId","routeDate","docLaterBtn","routeStartOdo","routeEndOdo","routeStartInput","routeEndInput","tripInfo","consumersToRemove","isAddHoc","selectedRouteId","selectedRouteName","vehicleInspection","deleteInspection","notTodeleteConsumers","selectedRouteInformation","readableDate","batchedWarninig","odometerStop","timeDiv","odometerDiv","deleteRoute","buildConsumerCards","odoCheck","dif","loadData","cleanData","getTripInformationResult","getTripConsumersResult","routeInfo","getRouteInformation","getRouteConsumers","deleteRouteAccept","deleteProms","deleteVehicleInspection","TRANS_manageRoutesAjax","deleteTrip","odoStart","odoEnd","tripData","otherRiderId","updateManageTripDetails","IsSameInsertedConsumerFind","deleteConsumerFromTrip","routeId","addHocRoute","vehicleInspectionId","routesTable","selectedRoutes","filteredRoutes","filterOpts","tripsStatus","multiEditEnabled","multiSelRoutes","updateDriverBtn","updateVehicleBtn","filteredDateStart","filteredDateStop","selectedDriver","selectedRouteStatus","totalRouteCount","selectedVehicle","filteredDateStartBtnWrap","selectedDriverBtnWrap","selectedLocationBtnWrap","selectedRouteStatusBtnWrap","selectedVehicleBtnWrap","totalRouteCountBtnWrap","serviceDateStop","routeStatus","filteredByDisplay","batchNumber","tripId","odoStop","tripInspection","driverDisp","readDate","readStartTime","readEndTime","readOdoStart","readOdoStop","rowValues","batchWarnEl","TRANS_manageRoutesFilter","filteredDateStartBtn","selectedDriverBtn","selectedDriverCloseBtn","selectedLocationBtn","selectedLocationCloseBtn","selectedRouteStatusBtn","selectedRouteStatusCloseBtn","totalRouteCountBtn","selectedVehicleBtn","selectedVehicleCloseBtn","locationPermissions","tmpRoutes","getTrips","getTripsResult","routeMap","route","determineTripStatus","filterTripStatus","tripsWithFilteredStatus","tempFilteredRoutes","TRANS_updatePopup","updateType","massUpdateCallback","MouseEvent","tempStatusMap","tripType","totalConsumersOnRecord","consumerNoStatus","massUpdateDriverVehicle","routeStatusDropdown","routeStatusDropdownData","IsFilterShow","updateDropdown","currentDisplay","routes","createPopupElements","createCurrentDisplay","updateDescription","routeDisp","vehicleDisp","eventListener","routeIdConcat","newUpdateVal","routeIdString","updateVal","routeSection","warningDisp","trips","buildRouteBtn","routeBtn","inspIcon","inspColor","TRANS_selectedRoutePopup","tripsResp","TRANS_myRotueAjax","tempTrips","trip","tripInspectionEnteredBy","inspectionTime","inspectionNote","futureDate","warnDisp","vehicleInspBtn","batchedRoute","inspectionId","enteredById","inspectionDate","loadVehicleInspectionLanding","newInspectionBtn","reviewInspectionsBtn","TRANS_inspectionReview","TRANS_reviewInspectionFilter","enteredByDropdown","enteredByDropdownData","updateDates","inspectionTable","defaultFromDate","vehicleNumberBtnWrap","tmpInsp","getCompletedInspections","getCompletedInspectionsResult","inspMap","insp","inspections","readTime","vehicleNumberBtn","vehicleNumberCloseBtn","selectedRoute","selectedRouteDate","inspectionQuestionBody","questionResponses","enteredByOtherUser","inspectionEnterPath","routeInspection","currentlySelectedVehicle","allQuestionsAnswered","inspectionTIme","inspectionInfoCard","inspectionInfoBody","saveInspection","col1","col2","routeNameDisp","otherUserDisp","dtWrap","inspectionQuestionCard","inspectionQuestionHeader","buildInspectionQuestions","checkForAllRequiredFields","completedStatus","getInspectionDetailsForEdit","questionTitle","passCheck","failCheck","naCheck","passRadio","failRadio","checkAllQuestionsAnswered","allowNARadio","completedDetails","getVehicleInspectionDetails","getVehicleInspectionDetailsResult","completedDetailsMap","cat","inspectionCategory","categoryStatus","inspectionStatus","vddElement","mainData","updateVehicleInspection","insertVehicleInspection","insertVehicleInspectionResult","detailData","inspectionCatString","inspectionStatusString","insertUpdateVehicleInspectionDetails","acceptDelete","clearVar","EditResponsibleRelationshipsComponent","editResponsibleRelationshipsFinished","wfStepPopup","editResponsibleRelationshipsCancelled","enableButton","enable","containsErrors","getResponsibleParties","getWFResponsibleParties","dropDownList","responsiblePartyType","original","modified","originalvalues","modifiedvalue","clickedddl","ddl","ddlobjects","raiseError","errorMsg","clearError","isMaxLengthExceeded","maxChars","inputValue","EditWorkflowStepComponent","populateResponsiblePartyClassificationDropdown","editWorkflowStepFinished","editWorkflowStepCancelled","doneDate","descriptionCharLimit","descriptionTextInput","validateDescription","combinedText","allowStepEdit","dueDateInput","changed","wfeventid","isChanged","eventTypeId","doneDateInput","responsiblePartyClassificationDropdown","typeID","poplateResponsibleDropDownbyTypeID","responsibleDropdown","commentsTextInput","responsibleParty","getResponsiblePartyIdforThisEditStep","responsiblePartyClassification","getResponsiblePartyClassification","responsiblePartyClassificationData","getPeopleNamesResult","getPeopleNamesAsync","FormsWorkflowStepComponent","formsWorkflowStepFinished","activeConsumerId","formsWorkflowStepCancelled","templateddl","formddl","fullNameArray","userFormDropdown","getTemplates","usrForm","WorkflowComponent","responsiblePeople","processName","currentStatusId","setStatusAsync","statusId","getFirstAndLastName","workflowContainer","workflowSummaryContainer","workflowNameContainer","workflowDescriptionPopop","workFlowDescription","responsiblePartyContainer","ddlcache","workflowResponsibilityType","updateRelationshipResponsiblePartyID","workflowSteps","responsiblestep","statusContainer","setStatus","processEvent","processStepEventsAsync","wfActionsCompleted","processWorkflowStepEventResult","displaySteps","wfActionCompleted","StepId","ActionId","ActionDate","workflowProcessContainer","workflowDeleteContainer","appendWorkflowDeleteContainer","isWorkflowAutoCreatedAsync","isWorkflowAutoCreatedResult","workflowDetailContainer","innertHtml","WorkflowGroupComponent","deleteWorkflowAsync","deleteWorkflowResult","workflowsRemaining","workflowsContainer","documentDescription","documentDeleteBtn","documentDragBtn","docDesc","slug","slugify","myString","deleteDocumentAsync","deleteWorkflowStepDocumentResult","groupContainer","groupHeaderGrid","groupGridColumn1","groupExpandButton","groupGridColumn2","addStepBtnOpts","WorkflowStepComponent","stepOrder","editedData","insertStepAsync","insertWorkflowStepResult","groupNode","slideDown","groupBntAddStep","stepGrid","slideToggle","stepContainer","toggleClass","groupSteps","orderArray","setStepOrderAsync","WorkflowsComponent","workflows","workflowsComponent","isChecklist","responsiblePartytype","documents","isExpanded","isAttachmentValid","addStepDocument","stepActionsCompleted","stepsGrid","stepsGridColumn1","stepExpandButton","stepsGridColumn2","stepSummaryContainer","stepDescriptionContainer","stepCompleteCheckbox","stepDescription","summaryComponent","stepDetailContainer","editBtnOpts","updateStepAsync","existingNode","stepobjt","stepobject","stepActionData","stepActionObj","wfStatusId","stepBtnEdit","deleteBtnOpts","deleteStepAsync","stepBtnDelete","reponsiblePartyContainer","commentsContainer","documentsContainer","addDocBtnOpts","addFormBtnOpts","newDocumentComponent","attachmentLabelAddDoc","addDocumentBtn","addFormBtn","attachmentLabelAddForm","actionContainer","stepsGridColumn3","setStepDoneDateAsync","doneDateElement","stepDocuments","setDocumentOrderAsync","attachmentFileName","TypeId","getFormTemplatesAsync","getWorkflowsAsync","stepData","setStepDueDateAsync","documentOrderArray","stepOrderArray","thisEvent","getManualWorkflowListResult","getWorkFlowFormsfromPreviousPlanResult","copyWorkflowtemplateToRecordResult","getWFwithMissingResponsiblePartiesResult","getResponsiblePartyIdforThisEditStepResult","getWFResponsiblePartiesResult","WFID","getResponsiblePartyClassificationResult","formTemplates","buildWorkflowComponents","getWorkflowData","getWorkflowsResult","getFormTemplatesResult","workflowData","getWorkflowDataForRoster","fromRoster","viewerContent","buildViewer","ref_id","initializeViewer2","loadData2","getWorkflowData2","buildWorkflowComponents2","consumersWrap","consumerSections","consumerInvolvedIdArray","getConsumersInvolved","showConsumersWrap","displayCount","countHolder","checkForRequiredConsumer","removeConsumerErrors","cardHasErrors","showConsumerError","cardId","moveConsumersToConsumersInvolved","initPromises","actConsumer","buildConsumer","initPromise","initConsumerData","removeConsumerFromConsumersInvolved","populateConsumersWrap","checkInvolvedRequirements","involvementDataLookup","involvementSec","checkOneHasPPI","cardWrap","consumerSubSections","showMenu","buildSection","consumersInvolvedData","removeConsumer","sectionsContainer","sectionsTopBar","sectionsMenu","followUpSection","injuriesSection","interventionSection","involvementSection","reportingSection","reviewSection","behaviorSection","visibleSectionHome","hideBackBtn","showBackBtn","showSectionMenu","populateSection","buildTopBar","topBar","oldCard","sectionItem","targetSectionName","sectionsInner","followUpHome","newFollowUpBtn","followUpReviewTable","followUpForm","followUpTypeDropdown","personResponsibleInput","completedDateInput","formButtons","followUpsData","followUpsDeleteData","followUpTypes","selectedFollowUpId","followUpNote","lastUpdatedOn","getDataForSave","getDataForDelete","clearFormDataDefaults","clearReviewTable","removedConsumerData","newFollowUpsData","deleteConsumerFollowUpData","deletedFollowUp","followUpTypeSelect","setFormDataDefaults","tmpFollowUpTypeId","tmpPersonResponsible","tmpDueDate","tmpCompletedDate","tmpNote","buildFollowUpTypeDropdown","followUptypeDrop","fu","itFollowUpTypeId","followUpTypeName","buildPersonResponsibleInput","personInput","buildDueDateInput","inputOptions","buildCompletedDateInput","buildNotesInput","buildFormBtns","buildDeleteBtn","buildNewFollowUpForm","showForm","isedit","filterFollowUpTypes","followUpType","buildReviewTable","buildAddNewFollowUpBtn","dateTimeCompleted","dueDateTime","injuriesHome","newInjuryBtn","injuriesReviewTable","injuryLocationDropdown","injuryTypeDropdown","checkedByNurseCheckbox","detailsInput","treatmentInput","dateCheckedInput","injuryDeleteData","injuryLocations","injuryTypes","selectedInjuryId","treatment","dateChecked","newInjuryData","deleteConsumerInjuryData","deletedInjury","injuryLocationSelect","injuryTypeSelect","tmpInjuryLocation","tmpInjuryType","tmpCheckedBy","tmpDetails","tmpTreatment","tmpDateChecked","buildInjuryLocationDropdown","iLocDrop","injuryLocation","buildInjuryTypeDropdown","iTypeDrop","injuryType","buildCheckedByCheckbox","buildDetailsInput","dInput","buildTreatmentInput","tInput","buildDateCheckedInput","dcInput","buildNewInjuryForm","injuryForm","filteredLocations","iLoc","filteredTypes","iType","nurseChecked","buildAddNewInjuryBtn","interventionHome","newInterventionBtn","interventionReviewTable","interventionTypeDropdown","totalTimeInput","aversiveCheckbox","interventionData","interventionDeleteData","interventionTypes","selectedInterventionId","interventionTypeId","calculateTimeLength","stInput","etInput","ttInput","sTime","eTime","newInterventionData","deleteConsumerInterventionData","deletedIntervention","interventionTypeSelect","tTime","tmpInterventionType","tmpStartTime","tmpEndTime","tmpTimeLength","tmpAversive","buildInterventionTypeDropdown","buildTotalTimeInput","buildAversiveCheckbox","nInput","buildNewInterventionForm","interventionForm","filteredInterventionTypes","buildAddNewInterventionBtn","ppiCheckbox","actionBtns","involvementsData","consumerLocationData","removedConsumer","newInvolvementsData","setInvolvementsData","initConsumerInvolvementData","toggleSaveDisabled","allHaveLocation","oneHasPPI","doesAnotherConsumerHavePPIChecked","otherConsumerHasPPI","tmpInvolvementId","tmpPpi","setInvolvmentDropdownValue","involvmentSelect","setPPICheckboxValue","ppiCheckboxInput","buildInvolvementDropdown","iDropdown","lDropdown","buildBtns","saveText","reportingHome","newReportingBtn","reportingReviewTable","reportingCategoryDropdown","reportedByInput","reportedToInput","reportMethodInput","reportDateInput","reportTimeInput","reportNotesInput","reportingData","reportingDeleteData","reportingCategories","selectedReportId","reportTime","reportingCategoryId","reportNotes","newReportingData","deleteConsumerReportingData","deletedReport","reportCatSelect","tmpReportingCategoryId","tmpReportedBy","tmpReportedTo","tmpReportMethod","tmpReportDate","tmpReportTime","buildReportingCategoryDropdown","rCatDrop","itReportingCategoryId","itReportingCategoryName","buildReportedByInput","rbInput","buildReportedToInput","rtInput","buildReportMethodInput","rmInput","buildReportedDateInput","rdInput","buildReportedTimeInput","buildNewReportingForm","reportingForm","filteredCategories","rCat","reportedCategory","reviewsHome","newReviewBtn","reviewsReviewTable","reviewedByDropdown","reviewDeleteData","reviewedByDropdownData","selectedReviewId","reviewedById","reviewNotes","newReviewData","deleteConsumerReviewData","deletedReview","tmpReviewDate","tmpReviewedBy","currentReviewedBy","buildReviewDateInput","buildReviewedByDropdown","rbDrop","rb","buildNewReviewForm","reviewForm","dateReviewed","buildAddNewReviewBtn","summaryText","actionText","preventionText","factorsText","incidentDateInput","incidentTimeInput","reportedDateInput","reportedTimeInput","summaryTextarea","actionTextarea","preventionTextarea","causeTextarea","locationDetailDropdown","getSectionData","setSectionValues","defaultCategory","buildDateTimeInputs","incidentDateTimeWrap","reportedDateTimeWrap","incidentDateTime","reportedDateTime","buildDropdowns","dropdownWrap","itLocationId","defaultDropdownOption","buildTextAreas","cause","dateTimeInputs","textAreas","incidentDateInpt","detailshasErrors","employeesInvolved","addNewEmployeeRow","employeeCard","buildEmployeeCard","notifyEmployee","involvementType","involvementTypeId","employeeInvolvementTypeId","buildNameDropdown","nameDropdown","buildInvolvmentDropdown","involvmentTypeDropdown","checkedValue","employeeRow","delteBtn","addEmployeeBtn","othersInvolved","addNewPersonRow","peopleCard","buildOtherPersonCard","otherPeopleRow","involvementDropdownData","addPeopleBtn","assessmentContainer","assessmentNav","tocMarkup","tableOfContentsBtn","unansweredQuestionToggleBtn","assessmentGeneralInfo","newAssessmentMarkup","handleNavbarEvents","innerTextValue","toggleUnansweredQuestionFilter","buildTopNavBar","navBar","addSections","sectionIdKeys","addSection","addSubSections","subsectionIdKeys","addSubSection","addQuestions","questionSetIdKeys","qsKey","addQuestionSet","buildAssessment","assessmentNavMarkupWrap","generalInfo","customSectionIds","subSections","questionSectionSets","questionSubSectionSets","sectionQuestionCount","subSectionsWithAttachments","additionalSummaryData","assessmentDropdownData","colNameDropdownMap","AssessmentArea","ProviderName","ServiceName","NewOrExisting","charLimits","deleteRowsActive","checkArrayConsistency","firstElement","updateRowOrderAfterDelete","grid","gridBody","answerIds","addAnswer","getSectionQuestionCount","relationshipDropdownData","toggleIntentionallyBlankCheckbox","setID","toggleConditionalQuestion","conditionalQuestions","questionSet","setId","answered","sectionKeys","sectionKey","questionSetKeys","tableQuestionSets","questionSetKey","questionKeys","questionKey","rowOrder","leaveblank","questionDiv","rowElement","atLeastOneColumnAnswered","tableQuestionSetsKeys","setKey","tableHasAtLeastOneRowAnsered","tableElement","rowOrderKeys","rowOrderKey","tables","handleAssessmentChangeEvents","isForRow","isforrow","answerid","questionid","setid","sectionid","textAreaInput","questionSetGridRows","questionSetActionButtons","rowCells","cellInput","questionRowId","sectionDiv","questionSetDiv","isCustomSection","radioLabelText","hideCheckbox","setGrid","buildSectionMarkup","sectionHeading","sectionHeadingInner","applicableCheckbox","sectionTitle","sectionPrompt","buildSectionFooter","showAddNewOutcomePopup","showAddPaidSupportPopup","popupData","fromAssessment","showAddAdditionalSupportPopup","showAddProfessionalReferralPopup","buildSubSectionMarkup","subSection","subSectionHeading","deleteSelectedRows","successfulDelete","buildGridHeaderRow","gridHeaderRow","buildGridHeaderCell","gridHeaderCell","buildGridRow","rok","gridRow","buildGridRowCell","colName","gridCell","questionInput","hasStaticText","textAreaCharLimit","colKey","dataKey","dID","dText","buildQuestionGridMarkup","addRowBtn","deleteRowsBtn","cancelDeleteRowsBtn","areAllGridAnswersEmpty","questionIds","COL_NAME_MAP","tableRowData","rowIndex","rowKey","rowQuestions","cellData","cellId","columnName","inputData","gridCells","cellIds","oldPos","newPos","isLeftBlankCheckboxChecked","questionOrderKeys","qok","questionIndex","gridActionRow","currentRowOrder","gridRows","isSeleted","prevSelectedRow","nrd","hideOnAssessment","isAnswered","firstCol","colInput","qId","isGridEmptyNow","intentionallyBlankCheckbox","questionInputMarkup","parentQuestion","parentAnswerText","buildTextareaInput","buildCheckboxInput","buildRadioInput","btnOpts","radioInput","buildQuestionMarkup","subSectionId","addAttachmentButton","buildQuestionSetMarkup","setData","questionSetWrap","qoKey","questionWrap","questionGrid","placeOnPathDropdown","summaryAjax","updatePlaceOnPath","placeId","placeOnPath","belongsToSection","addSectionQuestions","questionSectionSetsOrderKeys","qssoKey","questionSetMarkup","addSubSectionQuestions","subSectionOrderKeys","ssoKey","subSectionMarkup","questionSubSectionSetsOrderKeys","subSectionTitle","footerMarkup","sectionOrderKeys","soKey","AdditionalSummaryData","getAdditionalAssessmentSummaryQuestions","aloneTimeAmount","providerBackUp","toc","tocInner","sectionGroup","validateTableHasAtLeastOneRowAnswered","tableQuestions","questionCountObj","sectionUnawnseredQuestions","numOfQuestionsUnawnseredWrapDiv","numOfQuestionsUnawnseredDiv","numOfQuestionsUnawnsered","isWorkingSectionComplete","sectionNumber","tocSectionAlertDiv","workingSectionCaseValue","tocHeader","tocMain","tocToggle","tocClose","consumerswithSaleforceIds","caseManagersfromOptionsTable","assignmentResults","currentCaseManagerSelected","currentconsumersSelected","assignCaseLoadPopup","assignBtn","toggleAssignButton","showConfirmationPopup","selectedConsumerObjs","confirmCaseLoadPopup","assignedConsumerList","assignStateCaseManagertoConsumers","processedStateConsumerObjs","filteredStateConsumers","assignresult","getCaseManagersfromOptionsTable","getConsumerswithSaleforceIds","popupMessage","innerWrap","caseManagersContainer","cmHeading","CM_SEARCH_BTN","CM_SEARCH_WRAP","CM_SEARCH_INPUT","CM_filterBtn","multiSelectBodyCM","caseManager","existing","CM_btnWrap","caseManagerSearch","consumersContainer","cHeading","C_SEARCH_BTN","C_SEARCH_WRAP","C_SEARCH_INPUT","C_filterBtn","multiSelectBodyC","cs","C_btnWrap","consumerSearch","displayedCaseManagers","thisCaseManager","effStartDate","effEndDate","csSSAPeopleIdGlobal","csrVendorIdGlobal","csContactInputGlobal","getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds","teamMember","isSigned","dateSigned","planStatusChange","addMemberBtn","refreshTable","getConsentGlobalValues","SSA","VENDOR","CONTACT","isTeamMemberConsentable","isTeamMemberGuardian","getNames","getTeamMemberData","insertNewTeamMember","selectedMemberData","participated","parentOfMinor","relationship","salesForceId","buildingNumber","useExisting","relationshipImport","createRelationship","hasWetSignature","stuff","insertTeamMember","isMemberConsentable","shouldUpdateSSA","shouldUpdateVendor","shouldUpdateContact","updateTeamMebersGlobals","newSSA","newVendor","newContact","updateTeamMember","clearSignature","vendorRel","csVendor","getSelectedVendorRel","updatePlanConsentStatements","idToIgnore","deleteTeamMember","teamMemberPopup","deleteAccept","getSSAById","ssaId","filteredSSA","buildChangeMindRadios","radioContainer","buildChangeMindQuestion","changeMindRadios","buildContactRadios","buildContactQuestion","contactInputValue","oldTable","updateTableRowOrder","inPersonSignature","relationshipType","cleanName","csTeamMember","getSignatureTypeByID","showPopup","isNewMember","memberData","currentTeamMemberData","csSignature","dissentDate","addVendorBtn","showESignaturesPopup","ESignaturesPopup","webpageURL","origin","pathname","lastIndexOf","eSignatureTeamMemberData","successfulSend","sendESignaturesEmailPopup","saveReportAndSendESignEmailResult","checkboxCheck","requestESignaturesBtn","filteredTeamMemberData","doesIdExistInVendors","mergedData","filteredValue","invalidContactProviderVendorIdCheck","checkOneSpan","getAllActiveVendors","getSignaturesResult","getPlanInformedConsentSSAsResult","getPlanInformedConsentVendorsResult","getAllActiveVendorsResult","GetSalesForceId","GetSalesForceIdResult","getTeamMemberListFromState","getTeamMemberListFromStateResult","getStateGuardiansforConsumer","peopleIdData","getStateGuardiansforConsumerResult","getStateCaseManagerforConsumerResult","assignStateCaseManagertoConsumersResult","getTeamMemberBySalesForceId","getTeamMemberBySalesForceIdResult","getConsumerOrganizationId","getConsumerOrganizationIdResult","getCaseManagersfromOptionsTableResult","getConsumerswithSaleforceIdsResult","getLocationswithSalesforceId","getLocationswithSalesforceIdResult","insertPlanTeamMemberResult","updatePlanTeamMemberResult","updatePlanConsentStatementsResult","updatePlanSignatureOrderResult","deletePlanSignatureResult","setSalesForceIdForTeamMemberUpdate","setSalesForceIdForTeamMemberUpdateResult","validateConsumerForSalesForceIdResult","csRelationship","selectedRelationship","gkRelationships","importPopup","existingRelationshipPopup","relationshipsWrap","buildExistingPopupMessage","showExistingPopup","uniqueArray","removeExisting","teamMembers","teamMemberIDs","tm","buildRelationship","pplID","salesforceID","contactID","adress","relationshipDiv","nameEle","dobEle","addressEle","relationshipTypeEle","currSelected","showMainPopup","filteredMember","applySelectedRelationship","csSalesforce","salesforceRelationships","selectedSalesforce","salesforceWrap","relType","Role","relationshipEle","linkToSalesForce","showConsentStatments","signaturePopup","signatureSection","changeMindQ","complaintQ","sigPad","sigBody","sigCanvas","allowSignClear","prevDissentData","checkSignautrePopupForErrors","parseSignatureData","saveFromSignature","sigPadData","insertSuccess","checkForAllowClearSignature","activePlan","clearInputsOnSignatureClear","dissentAreaInput","dissentHowToInput","allRadios","clearMemberDataOnClear","resizeSigCanvas","sigWrap","offsetWidth","showClearConfirmationPopup","confirmPop","updatedSignatureSection","buildSignatureSection","signatureWrap","signatureTitle","signDate","sigDiv","sigImage","clearSignatureBtn","dbVal","getChangeMindMarkup","getContactMarkup","prevDateSigned","dissentSection","consentSection","cancelText","saveCancelWrap","insertAllowed","importedFromRelationship","stateGuardiansObj","selectedStateGuardian","selectedStateGuardianSalesForceId","DBteamMemberswithStateSalesForceId","currentTeamMemberList","linkToRelationshipBtn","linkToSalesforceBtn","teamMemberDropdown","stateGuardianDropdown","lNameInput","dateOfBirthInput","relationshipTypeInput","signatureTypeDropdown","radioDiv2","participatedYesRadio","participatedNoRadio","parentOfMinorYesRadio","parentOfMinorNoRadio","saveTeamMemberBtn","checkTeamMemberPopupForErrors","isConsentable","populateTeamMemberDropdown","populateSignatureTypeDropdown","populateGuardiansDropDown","guarddata","calculateAge","dobStr","monthDifference","isDateBefore1900","relData","saveTeamMember","selectedSalesforceId","continueGuardianSave","continueSaveofGuardianTeamMember","existingPeopleId","usePerson","hasSalesForceIdBeenUsed","Scenario1ConfirmText","Scenario3ConfirmText","Scenario4ConfirmText","updatesuccess","selectedSalesForceID","isSaleForceIdUsed","buildParticipationRadios","radioContainerTitle","buildParentOfMinorRadios","isNoChecked","isYesChecked","buildDateSignedDisplay","dateSignedDisplay","dateSignedParsed","btnWrap3","orgId","selectedOptions","selectedTeamMember","isMinor","showStateGuardians","complaintQuestion","setStateofPopupFields","insertingConditionalFieldsintoPopup","checkIfDateBefore1900","isSelectedTeamMemberConsentable","insertingFieldsBasedonConsentable","isSelectedTeamMemberGuardian","insertingFieldsBasedonGuardian","globals","participationRadios","validEmail","parentOfMinorRadios","btns","csVendorPopup","checkcsVendorPopupForErrors","cleanedVendorName","selectedVendorData","selectedVendor","vendorAddress","removeV","populateVendorDropdownData","summaryVendors","outcomesVendors","servicesVendors","selectedVendors","facilitiesGroup","vendorGroup","nonVendorGroup","buildingNumberInputValue","mainCIData","bestWayToConnectData","uniqueFundingSources","allFundingSources","fundingSourceList","importantGroupsData","gkDemographicsData","prefNameInput","addressInput","cityStateZipInput","countyInput","sexInput","maritalStatusInput","newDropdownData","populateBestWayToConnectDropdown","buildContactInputs","inputSection","dateFundingSoureContainer","ispDatesSection","ispDatesHeader","ispFundingSuourcesSection","ispFundingSuourcesHeader","fsContainer","bestWayToConnectDropdown","otherTextInput","updateBestWayToConnect","bestWayId","updateMoreDetail","bestWayToConnectBtnAlertDiv","bestWaytoConnectAlertDiv","combinedName","cleanAddress","addNewLine","combinedAddress","cleanCityStateZip","cityStateZip","updateInputsWithDeomgraphicsData","nickName","sex","ph","formatPhone","disp","validatePhone","genTelRegEx","phNum","phoneDigits","rawNumber","pos3","pos4","updateFundingSources","contactInformationAjax","getPlanContactFundingSources","fsSort","getFundingSourceById","onlyUnique","contactSection","refreshWrap","refreshBtn","importExistingContactInfo","toTimeString","lastrefresh","importantPeopleSection","isp_ci_importantPeople","importantGroupsSection","isp_ci_importantGroups","importantPlacesSection","isp_ci_importantPlaces","contactInformationSection","pID","getPlanContactInformation","gkDemographicsDataProm","importantPeopleDataProm","getPlanImportantPeople","importantGroupsDataProm","getPlanImportantGroups","importantPlacesDataProm","getPlanImportantPlaces","fundingSourceProm","getPlanContactResult","importExistingContactInfoResult","getConsumerRelationshipsCIResult","getPlanContactImportantPeopleResult","getPlanContactImportantPlacesResult","getPlanContactImportantGroupsResult","getPlanContactFundingSourcesResult","insertPlanContactImportantPeople","insertPlanContactImportantPeopleResult","insertPlanContactImportantGroup","insertPlanContactImportantGroupResult","insertPlanContactImportantPlaces","insertPlanContactImportantPlacesResult","updatePlanContactImportantPeople","updatePlanContactImportantPeopleResult","updatePlanContactImportantGroup","updatePlanContactImportantGroupResult","updatePlanContactImportantPlaces","updatePlanContactImportantPlacesResult","updatePlanContactImportantOrder","updatePlanContactImportantOrderResult","updatePlanContact","updatePlanContactResult","deletePlanContactImportant","cID","rawPeopleTableData","relationshipInput","phoneInput2","phone2Ext","typeOtherInput","popFromRelationships","mainPopup","relationshipSection","relationshipDisp","applyGKRelationship","popFromSignatures","signaturesSection","signatureNames","joinedAddress","phoneDisp","tablePopup","typeDD","relationshipVal","addressVal","phoneVal","phoneVal2","extVal","extVal2","emailVal","typeOtherVal","thisPhone","thisPhone2","phone2","importantPersonId","typeValueUpdate","typeValValidated","importantId","typeDropdownValues","importFromRelationshipsBtn","importFromSignaturesBtn","phoneWrap","phoneWrap2","phnDisp","slicedValue","buildTableMarkup","peopleTable","typeValidated","ipSection","addPersonBtn","rawPlacesTableData","scheduleVal","acuityVal","acuity","insertId","importantPlacesId","scheduleInput","acuityInput","placesTable","addPlaceBtn","rawGroupsTableData","statusDD","meetingInfoVal","whoHelpsVal","meetingInfo","whoHelps","importantGroupId","statusDropdownValues","meetingInfoInput","whoHelpsInput","igSection","addGroupBtn","usePlanImage","consumerIdForPhoto","consumerImage","consumerImageURL","updateIntroduction","planIntroductionAjax","updatePlanIntroduction","buildIntroduction","noPhotoRadio","fullpath","imgElement","displayNoPhoto","demoPhotoRadio","displayDemographicsPhoto","customPhotoRadio","planIntroductionData","getPlanIntroduction","displayPlanIntroductionPhoto","photoObj","photoFile","photoName","photoType","refreshPlanIntroductionPhoto","imageTitle","imageContainer","radioDiv1","radioDiv3","imageframe","photoSelectDiv","likeAdmireInput","thingsImportantToInput","thingsImportantForInput","howToSupportInput","customPhotoRadio2","myImage","noPhotoRadio1","urlCreator","webkitURL","myImage2","myImage3","getPlanIntroductionResult","updatePlanIntroductionResult","progressSummaryId","outcomesWrap","outcomesProgressSummary","addOutcomeBtn","addExpTableBtn","hasPreviousPlan","responseIdCache","mapOutcomesDetails","outcomeOrder","experiences","reviews","experienceId","experienceIds","experienceOrder","whatHappened","howHappened","responsibilities","responsibilityIds","responsibilityId","responsibleContact","whenHowOftenValue","whenValue","whenFrequency","whenHowOftenText","whenOther","outcomeReviewId","whoReview","who","reviewIds","whoResponsible","reviewOrder","sortOutcomesByOrder","outcomeData","objA","objB","checkIfSummaryRequired","populateAssessmentAreaDropdown","assessmentAreas","assessmentArea","populateStatusDropdown","populateExperiencesHowOftenDropdown","populateReviewsWhoDropdown","populateResponsibleProviderDropdown","serviceVendors","getPlanOutcomesPaidSupportProvidersResult","getPlanOutcomesPaidSupportProviders","selectedVendorIds","tempData","saveUpdateProvider","populateResponsibleContactDropdown","getWhenHowOFtenFrequencyById","filteredFrequency","getWhoTypeById","filteredWho","isSalesforceLocationTrue","insertOutcome","insertPlanOutcome","updatePlanOutcome","deleteOutcome","exp","respId","toggleAddNewOutcomePopupDoneBtn","inputsWithErrors","hasInitialErros","outcomeText","detailsText","historyText","newOutcomePopup","assessmentAreaDropdown","carryoverInput","outcomeTextInput","detailsTextInput","historyTextInput","insertOutcomeExperience","expTableWrap","newTableData","insertPlanOutcomesExperience","respData","respIds","insertPlanOutcomeExperienceResponsibility","getColTextForWhoResponsible","getColTextForWhenHowOften","showExperiencesPopup","experiencesTable","experiencesDummyTable","onEnd","updatePlanOutcomesExperienceOrder","newDraggableIndex","oldDraggableIndex","updateOutcomeExperience","respPartysToDelete","updatePlanOutcomesExperience","isRespPartyForDelete","deletePlanOutcomeExperienceResponsibility","updatePlanOutcomeExperienceResponsibility","newExperiencesTable","oldExperiencesTable","deleteOutcomeExperience","deletePlanOutcomeExperience","outcomeDiv","expTable","freq","filteredRelationship","toggleExperiencesPopupDoneBtn","saveUpdateData","experiencesPopup","whatHappenedInput","howHappenedInput","buildResponsiblePartyInputs","saveUpdateDataRef","dataRefKey","inputsWrap","whoReponsibleWrap","wrapHeading","responsiblePersonDropdown","responsibleProviderDropdown","respDropdown","whenHowOftenValueInput","whenHowOftenFrequencyDropdown","whenHowOftenTextInputField","whenHowOftenTextInput","textInput","respPartyWrap","respParty","addRespPartyBtn","respLength","expTables","mainBtns","whoReponsibleInput","addExperienceTable","buildExperiencesTables","experiencesDiv","respObj","experienceBtnAlertDiv","experienceAlertDiv","insertOutcomeReview","reviewId","insertPlanOutcomesReview","tableID","showReviewsPopup","updateOutcomeReview","updatePlanOutcomesReview","deleteOutcomeReview","deletePlanOutcomeReview","toggleReviewsPopupDoneBtn","reviewsPopup","whatWillHappenInput","whoReviewDropdown","isCaseManager","whenToCheckinDropdown","populatewhenToCheckinDropdown","addReviewRow","buildReviewsTable","reviewsDiv","reviewsTable","updateOutcomesReviewOrder","reviewsBtnAlertDiv","reviewAlertDiv","buildQuestion","awnser","buildOutcome","outcomesUpdateData","deleteOutcomeBtn","assessmentPlanValidation","orderDiv","outcomeInput","historyInput","topRow","outcomesDataValues","textForSave","updatePlanOutcomeProgressSummary","sortedOutcomes","pyid","planOutcomesData","summaryId","insertPlanOutcomeProgressSummary","ddData","targetAssessmentVersionId","getPlanSpecificOutcomesResult","insertPlanOutcomeProgressSummaryResult","insertPlanOutcomeResult","insertPlanOutcomesExperienceResult","insertPlanOutcomeExperienceResponsibilityResult","insertPlanOutcomesReviewResult","updatePlanOutcomeProgressSummaryResult","updatePlanOutcomeResult","updatePlanOutcomesExperienceResult","updatePlanOutcomeExperienceResponsibilityResult","updatePlanOutcomesReviewResult","deletePlanOutcomeProgressSummary","deletePlanOutcomeProgressSummaryResult","deletePlanOutcomeResult","deletePlanOutcomeExperienceResult","deletePlanOutcomeExperienceResponsibilityResult","deletePlanOutcomeReviewResult","updatePlanOutcomesOrder","updatePlanOutcomesReviewOrderResult","updatePlanOutcomesExperienceOrderResult","rmData","rmDataArray","rmMainWrap","addSectionBtn","updateRMResponse","restrictiveMeasuresAjax","updatePlanRestrictiveMeasures","deleteRMData","rmId","informedConsentId","deletePlanRestrictiveMeasures","toggleRestrictiveMeasureQuestionsVisiblity","restrictiveMeasuresSectionID","insertPlanRestrictiveMeasures","newSection","createNewSection","isFirstSection","rmSections","buildRestrictiveMeasureQuestions","rmQuestionSection","rmHrcApprovalDate","rmHRCDate","rmKeepSelfSafeQuestion","rmKeepSelfSafeQuestionText","rmKeepSelfSafeQuestionResp","rmFadeRestrictionQuestion","rmFadeRestrictionQuestionText","rmFadeRestrictionQuestionResp","rmWhatCouldHappenQuestion","rmWhatCouldHappenQuestionText","rmWhatCouldHappenQuestionContainer","rmWhatCouldHappenQuestionGoodResp","rmWhatCouldHappenQuestionBadResp","rmOtherWayHelpQuestion","rmOtherWayHelpQuestionText","rmOtherWayHelpQuestionContainer","rmOtherWayHelpQuestionGoodResp","rmOtherWayHelpQuestionBadResp","buildToggleQuestions","rmSection","rmRestrictionsIdentifiedQuestion","rmRestrictionsIdentifiedQuestionText","rmRestrictionsIdentifiedRadioContainer","rmRestrictionsIdentifiedYesRadio","rmIdentified","rmRestrictionsIdentifiedNoRadio","rmItem","insertedRMID","rmQuestions","createAddSectionButton","toggleQuestion","getPlanRestrictiveMeasures","getPlanRestrictiveMeasuresResult","insertPlanRestrictiveMeasuresResult","updatePlanRestrictiveMeasuresResult","deletePlanRestrictiveMeasuresResult","modificationsId","servicesSupportsData","selectedFundingSources","hasPaidSupports","paidSupportsTable","additionalSupportsTable","professionalReferralsTable","selectedPaidSupportIds","selectedPaidSupportRows","multiEditBtn","multiEditUpdateBtn","multiEditCancelBtn","fundingSourceDropdownSelectedText","servicesDropdownSelectedText","servicesOtherDropdownSelectedText","providerDropdownSelectedText","hcbsSelected","mapPaidSupportDataForTable","serviceNameId","serviceNameOther","scopeOfservice","howOftenValue","howOftenFrequency","howOftenText","fundingSourceText","paidSupportsId","beginDate","eDate","getAssessmentAreaById","getProviderNameById","getServiceNameById","serviceOtherName","getOtherServiceNameById","fundingSourceDesc","howOftenFrequencyText","getHowOftenHowMuchFrequencyById","howOften","funding","tableValues","psData","mapAdditionalSupportDataForTable","as","whoSupports","whoSupportsText","whatSupportsLookLike","additionalSupportsId","whenHowOftenDesc","getWhenHowOftenFrequencyById","asData","mapProfessionalReferralDataForTable","pr","professionalReferralId","newExisting","prData","getNumberOfPaidSupports","getNumberOfAdditionalSupports","additionalSupportsCount","getNumberOfProfessionalReferrals","professionalReferralsCount","getHasPaidSupports","setInitialSelectedVendorIds","setInitialFundingSourceNames","getSelectedFudningSourceNames","populateFundingSourceDropdown","populateServiceNameDropdown","fundingSourceVal","populateOtherServiceTypesDropdown","serviceTypesOther","serviceTypeDescription","populateMultiSelectServiceVendorsDropdown","thisSelectedArray","thisfundingSourceSelectedText","thisServiceNameSelectedText","completeVendorList","fundingSourceName","getPaidSupportsVendorsResult","vendorNumbers","getPaidSupportsVendors","test6","test7","test8","test9","duplicateVendors","minOccurancePaidSupports","removeDuplicatesBasedOnCount","minOccurancePaidSupportsFiltered","removeDuplicateObjects","vendorArray","thisVendorObject","populateServiceVendorsDropdown","ignoreGuardClauses","thisVendorDropDownData","populateHowOftenHowMuchFrequencyDropdown","populateWhenHowOftenFrequencyDropdown","populateNewOrExistingDropdown","filteredAssessment","filteredProvider","filteredFunding","insertPaidSupport","paidSupportId","insertPaidSupports","parsedId","isCopy","rowNode","copiedData","numPaidSupports","checkForPaidSupports","updatePaidSupport","updatePaidSupports","deletePaidSupport","deletePaidSupports","updatePaidSupportsRowFromMultiEdit","multiSaveUpdateData","checkForMatchingFundingSourceAndSeriviceNames","paidSupportRows","psRow","toggleMultiEditUpdateBtn","showMultiEditPopup","multiEditPopup","thisSelectedPaidSupportItems","thisfundingSource","thisserviceName","thisSelectedObject","matchingRows","providerNameDropdown","beginDateInput","updateMultiPaidSupports","buildMultiRowEdit","togglePaidSupportDoneBtn","availableServiceTypes","servicesDropdownSelected","paidSupportPopup","serviceNameDropdown","serviceNameOtherDropdown","fundingSourceInputField","fundingSourceInput","validateServicesDropdown","validateProviderDropdown","servicesDropdownSelect","servicesOtherDropdownSelect","providerDropdown","scopeOfserviceInput","howOftenHowMuchValueInput","howOftenHowMuchFrequencyDropdown","howOftenHowMuchTextInputField","howOftenHowMuchTextInput","vendorIds","addPaidSupportRow","getPaidSupportsMarkup","paidSupportsDiv","supportId","updatePaidSupportsRowOrder","mutliEditBtnWrap","insertAdditionalSupport","additionalSupportId","insertAdditionalSupports","updateAdditionalSupport","updateAdditionalSupports","deleteAdditionalSupport","additionalSupportData","deleteAdditionalSupports","toggleAdditionalSupportDoneBtn","additionalSupportPopup","whoSupportsDropdown","whatSupportLooksLikeInput","addAdditionalSupportRow","getAdditionalSupportsMarkup","additionalSupportsDiv","updateAdditionalSupportsRowOrder","addSupportId","insertProfessionalReferral","profRefId","updateProfessionalReferral","deleteProfessionalReferral","toggleProfessionalReferralDoneBtn","professionalReferralPopup","newOrExistingDropdown","reasonForReferralInput","addProfessionalReferralRow","getProfessionalReferralsMarkup","professionalReferralsDiv","updateServiceReferralRowOrder","referralId","insertSSModification","insertSSModifications","updateSSModification","updateSSModifications","deleteSSModification","ssId","getSSModificationsMarkup","supportModification","medicalRate","behaviorRate","icfRate","complexRate","developmentalRate","childIntensiveRate","modificationDiv","tagline","checkboxGroup","medicalRateCheckbox","behaviorRateCheckbox","icfRateCheckbox","complexRateCheckbox","developmentalRateCheckbox","childIntensiveRateCheckbox","checkboxes","cbi","uniqueIds","isDuplicate","servicesSupportsDiv","paidSec","additionalSec","profRefSec","modsSec","getServicesAndSupportsResult","insertSSModificationsResult","insertProfessionalReferralResult","insertAdditionalSupportsResult","insertPaidSupportsResult","updateSSModificationsResult","updateProfessionalReferralResult","updateAdditionalSupportsResult","updatePaidSupportsResult","updateMultiPaidSupportsResult","updatePaidSupportsRowOrderResult","updateAdditionalSupportsRowOrderResult","updateServiceReferralRowOrderResult","deleteSSModifications","deleteSSModificationsResult","deleteProfessionalReferralResult","deleteAdditionalSupportsResult","deletePaidSupportsResult","summaryData","sectionIdMap","sectionOrderMap","questionIdMap","questionSetIdMap","tablesToHide","amountOfTimeQuestion","backupPlanQuestion","mapSummaryData","dataName","questionCol","importantTableData","skillsTableData","risksTableData","deleteTableRow","dataSection","SummaryData","getAssessmentSummaryQuestions","rowToDelete","rowsLeftOver","rowIdText","updateRowOrder","questionsetid","answerids","populateDailyLifeDropdown","populateLevelsOfSupervisionDropdown","getLevelOfSupervisionById","getCommicationById","getDailyLifeById","addImportantTableRow","secTitle","rowOrderFromID","showImportantTablePopup","updateImportantTableRow","toggleImportantDoneBtn","importantToAnswerId","importantForAnswerId","importantPopup","importantToTextarea","importantForTextarea","upateSingleEmptyRowInsteadOfAddingNew","tableDataKeys","impToAnswer","impForAnswer","insertAssessmentSummaryAnswers","anywQuestionIds","updateAssessmentSummaryAnswers","anywAnswerIds","rowCount","buildImportTableBySection","importantTable","getImportantTablesMarkup","importantDiv","addSkillsTableRow","skillAbility","colText","showSkillsTablePopup","updateSkillsTableRow","toggleSkillsDoneBtn","skillAbilityId","communicationId","communication","dailyLifeId","dailyLife","skillsPopup","defaultTextInput","skillAbilityAnswer","buildSkillsTableBySection","skillsTable","getSkillsTablesMarkup","skillsDiv","questionsWrap","addRisksTableRow","riskSupervision","whoResponsibleText","levelOfSupervision","showRisksTablePopup","updateRisksTableRow","oldData","toggleRisksDoneBtn","dataCache","whatIsRiskId","whatSupportLooksLikeId","riskSupervisionId","whoResponsibleId","risksPopup","whatIsRiskTextarea","whatSupportLooksLikeTextarea","levelsOfSupervisionDropdown","whoResponsibleDropdown","riskAnswer","whatIsRiskAnswer","supportAnswer","whoResponsibleAnswer","buildRisksTableBySection","risksTable","isRowEmpty","sectionHasErrors","buildDropdownLegend","getRisksTablesMarkup","risksWrap","dropdownLegend","risksDiv","numOfPaidSupports","getAdditionalSummaryQuestionMarkup","additionalQuestionDiv","amountOfTimeWrap","amountOfTimePrompt","updateAdditionalAssessmentSummaryAnswers","backupPlanWrap","backupPlanPrompt","summaryWrap","skillsTables","risksTables","additionalSummaryMarkup","mappedSummaryData","getAssessmentSummaryQuestionsResult","getAdditionalAssessmentSummaryQuestionsResult","insertAssessmentSummaryAnswersResult","updateAssessmentSummaryAnswersResult","updateAdditionalAssessmentSummaryAnswerResult","updateBestWayToConnectResult","updatePlaceOnPathResult","updateMoreDetailResult","cnCaseLoadSettings","CN_CASELOAD_SETTINGS","showHideCheckBox","viewNotesEnteredByOtherUsersCheckBox","getSettings","buildCNCaseLoadSettings","setSettings","getInputFieldValues","styleSaveBtnOnSave","wfPlanSettings","WF_PLAN_SETTINGS","buildWfPlanSettings","cnProductivitySettings","CN_PRODUCTIVITY_SETTINGS","buildCNProductivity","cnProductivitySettingsAjax","getCaseNoteProductivitySettings","cnRejectedSettings","CN_REJECTED_SETTINGS","buildCNRejectedSettings","scheduledTimeInput","travelMinInput","addressDropdown","directionsBtn","specialInstructionsBtn","cardData","middleI","hasDirections","hasSpecialInstructions","hasAltAddress","cardContainer","portraitContainer","altAddressWarning","nameContainer","expandBtn","expandCard","attendanceIcon","attendanceBtn","updateRiderStatus","billableCheckbox","setDefaultCheckForBillable","setCheckForBillable","headerButtons","googleAddress","createGoogleAddress","addressDiv","dirSpecInsPopup","dirSpecBtnWrap","travelContainer","pickupOrderInput","deleteConsumerBtn","removeConsumerCard","deleteConsumerBtnWrap","populateAddressDropdown","altAddressEventListener","addressCode","dir","specInstr","altAddress","altAddressInfo","getSectionConsumerData","updateSectionConsumerData","textinput","saveCallback","altAddressCode","addresses","addressChangeAction","expanded","accpetCallback","consumerDocCardBody","routeVehicle","routeVehicleDisplay","vehicleOnRoute","vehicleDescription","routeDocCard","routeDocCardBody","consumerDocCard","saveCloseBtn","once","closeTrip","tripDetailSubmit","updateTripDetails","behaviorHome","newBehaviorBtn","behaviorReviewTable","behaviorTypeDropdown","occurrencesInput","behaviorDeleteData","behaviorTypes","selectedBehaviorId","behaviorType","newBehaviorData","deleteConsumerBehaviorData","deletedBehavior","getTimeLength","parseStartTime","splittime","tmpBehaviorTypeId","tmpOccurrences","buildBehaviorTypeDropdown","behaviortypeDrop","itBehaviorTypeId","behaviorTypeName","buildOccurrencesInput","buildNewBehaviorForm","behaviorForm","behaviorDATA","filterBehaviorTypes","occurrencesNum","buildAddNewBehaviorBtn"],"mappings":"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ZC,iBAAiB,EAAE,EAjBP;IAkBZC,eAAe,EAAE,EAlBL;IAmBZC,KAAK,EAAE,IAnBK;IAoBZC,cAAc,EAAE,EApBJ;IAqBZC,cAAc,EAAE;EArBJ,CAAhB,CALyB,CA6BzB;;EACA,IAAItwG,IAAI,GAAG;IACP3e,MAAM,EAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KATe;IAUP0uH,gBAAgB,EAAG;AAC3B;AACA;AACA;AACA;AACA,KAfe;IAgBPR,WAAW,EAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAvBe;IAwBPM,SAAS,EAAG;AACpB;AACA;AACA;AACA;AACA,KA7Be;IA8BPD,KAAK,EAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAzCe;IA0CPD,WAAW,EAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAjDe;IAkDPM,gBAAgB,EAAG;AAC3B;AACA;AACA;AACA;AACA,KAvDe;IAwDPG,KAAK,EAAG;AAChB;AACA;AACA;AACA;AACA;AACA,KA9De;IA+DPV,SAAS,EAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAxEe;IAyEPM,QAAQ,EAAG;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,KAhFe;IAiFPF,WAAW,EAAG;AACtB;AACA;AACA;AACA;AACA,KAtFe;IAuFPO,cAAc,EAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,KA9Fe;IA+FPZ,qBAAqB,EAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAtGe;IAuGPD,mBAAmB,EAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,KA9Ge;IA+GPL,qBAAqB,EAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,KAtHe;IAuHPC,iBAAiB,EAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,KA9He;IA+HPC,iBAAiB,EAAG;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,KAtIe;IAuIPC,YAAY,EAAG;AACvB;AACA;AACA;AACA;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;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5RA,MAAMh+D,gBAAgB,GAAI,YAAY;EACpC;EACA;EACA,IAAIpwR,OAAJ;EACA,IAAIy2Z,YAAJ;EACA,IAAIC,cAAJ;EACA,IAAIC,mBAAJ,CANoC,CAOpC;;EACA,IAAIC,oBAAJ;EACA,IAAI5oK,cAAJ;EACA,IAAIC,YAAJ;EACA,IAAI4oK,gBAAJ;EACA,IAAIvsD,W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uC;UACrC8wP,YAAY,CAAC9wP,kBAAD,CAAZ,GAAmC,EAAnC;QACD;;QAED,IAAI,CAAC8wP,YAAY,CAAC9wP,kBAAD,CAAZ,CAAiC75C,CAAC,CAAC8+H,oBAAnC,CAAL,EAA+D;UAC7D6rK,YAAY,CAAC9wP,kBAAD,CAAZ,CAAiC75C,CAAC,CAAC8+H,oBAAnC,IAA2D9+H,CAA3D;UACA2qS,YAAY,CAAC9wP,kBAAD,CAAZ,CAAiC75C,CAAC,CAAC8+H,oBAAnC,EAAyDstK,OAAzD,GAAmE,KAAnE;QACD;MACF,CATD;IAUD;;IAEDo5E,gBAAgB;IAChB5pK,mBAAmB;EACpB;;EAED,OAAO;IACLjqO,KADK;IAEL4zB,QAFK;IAGLqjK,SAHK;IAILohI,kBAJK;IAKLv4N,OAAO,EAAE4zS,cALJ;IAMLx1E,aAAa,EAAEy1E;EANV,CAAP;AAQD,CA/iBwB,EAAzB;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"bundle.js","sourcesContent":["var form = (function() {\r\n function build(options) {\r\n // options = {\r\n // formElements = [\r\n // {\r\n // tag: input || textarea || select || button,\r\n // opts: options needed for above build func\r\n // }\r\n // ]\r\n // }\r\n\r\n // setting options\r\n var formInputs = options.formElements;\r\n // build form\r\n var form = document.createElement('div');\r\n\r\n formInputs.forEach(fi => {\r\n var tag = fi.tag;\r\n switch(tag) {\r\n case 'input': {\r\n var INPUT = input.build(fi.opts);\r\n form.appendChild(INPUT);\r\n break;\r\n }\r\n case 'select': {\r\n var SELECT = dropdown.build(fi.opts);\r\n form.appendChild(SELECT);\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return form;\r\n\r\n }\r\n\r\n return {\r\n build\r\n }\r\n})();\r\n\r\nvar tmpReports = (function() {\r\n function init() {\r\n DOM.clearActionCenter();\r\n\r\n var formElements = [\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Provider Name',\r\n type: 'text',\r\n style: 'secondary',\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Address',\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Fiscal Telephone',\r\n type: 'tel',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Fiscal Email',\r\n type: 'email',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Fiscal Fax',\r\n type: 'tel',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Authorization #',\r\n type: 'num',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: 'Provider Invoice #',\r\n type: 'num',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Individual's Name`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Direct Service Staff Name(s)`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Person Completing Report`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `VR Counselor/Contractor`,\r\n type: 'text',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Invoice Date`,\r\n type: 'date',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'select',\r\n opts: {\r\n label: `Invoice Status`,\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Service Start Date`,\r\n type: 'date',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Service End Date`,\r\n type: 'date',\r\n style: 'secondary'\r\n }\r\n },\r\n {\r\n tag: 'input',\r\n opts: {\r\n label: `Service Description`,\r\n type: 'textarea',\r\n style: 'secondary'\r\n }\r\n },\r\n ];\r\n\r\n var reportForm = form.build({\r\n formElements,\r\n formStyle: 'secondary'\r\n });\r\n\r\n DOM.ACTIONCENTER.appendChild(reportForm);\r\n }\r\n return {\r\n init\r\n }\r\n})();","const icons = {\r\n // paperclip\r\n attachment: `\r\n \r\n \r\n `,\r\n // location symbol with !\r\n absent: `\r\n \r\n \r\n `,\r\n // plus sign *Adding/inserting records\r\n add: `\r\n \r\n \r\n `,\r\n arrowBack: `\r\n \r\n \r\n `,\r\n arrowNext: `\r\n \r\n \r\n `,\r\n // notification bell\r\n bell: `\r\n \r\n \r\n `,\r\n // calendar *USAGE: Scheduling Module\r\n calendar: `\r\n \r\n \r\n `,\r\n camera: `\r\n \r\n \r\n \r\n `,\r\n car: `\r\n \r\n \r\n `,\r\n // checkmark *USAGE: Done, Apply\r\n checkmark: `\r\n \r\n \r\n `,\r\n //Circle with horizontal line through center USAGE: clearing input fields\r\n clear: `\r\n \r\n \r\n `,\r\n close: `\r\n \r\n \r\n `,\r\n copy: `\r\n \r\n \r\n `,\r\n edit: `\r\n \r\n \r\n `,\r\n // trashcan\r\n delete: `\r\n \r\n \r\n `,\r\n // person with +\r\n deSelectAll: `\r\n \r\n \r\n `,\r\n //Half Square with arrow pointing down into it. USAGE: Downloads\r\n download: `\r\n \r\n \r\n `,\r\n drag: `\r\n \r\n \r\n `,\r\n edit: `\r\n \r\n \r\n `,\r\n eraser: `\r\n \r\n `,\r\n //Filled in circle with !\r\n error: `\r\n \r\n `,\r\n ellipsis: `\r\n \r\n \r\n `,\r\n filter: `\r\n \r\n \r\n `,\r\n // circle with '?'\r\n help: `\r\n \r\n \r\n `,\r\n info: `\r\n \r\n \r\n `,\r\n keyArrowRight: `\r\n \r\n `,\r\n keyArrowLeft: `\r\n \r\n `,\r\n keyArrowUp: `\r\n \r\n `,\r\n keyArrowDown: `\r\n \r\n `,\r\n // quote box\r\n message: `\r\n \r\n \r\n `,\r\n multiSelect: `\r\n \r\n \r\n `,\r\n // circle with slash\r\n no: `\r\n \r\n \r\n `,\r\n note: `\r\n \r\n \r\n `,\r\n openNew: `\r\n \r\n \r\n `,\r\n // icon for new outcome button\r\n outcomeNew: `\r\n \r\n \r\n `,\r\n passwordShow: `\r\n \r\n \r\n `,\r\n passwordHide: `\r\n \r\n \r\n `,\r\n people: `\r\n \r\n \r\n `,\r\n //Floppy Disk *USAGE: Saving or Updating Records\r\n save: `\r\n \r\n \r\n `,\r\n // search icon\r\n search: `\r\n \r\n \r\n `,\r\n // stamp icon/aproval\r\n stamp: `\r\n \r\n `,\r\n //Filled in triangle with ! in center\r\n warning: `\r\n \r\n `,\r\n refresh: `\r\n \r\n \r\n \r\n `,\r\n selectAll: `\r\n \r\n \r\n `,\r\n // Eyeball\r\n show: `\r\n \r\n \r\n `,\r\n //Paper airplane (send email type of icon) USAGE: Data updates that notify users\r\n send: `\r\n \r\n \r\n \r\n \r\n `,\r\n // Thumbs up\r\n thumbUp: `\r\n \r\n \r\n `,\r\n // Thumbs down\r\n thumbDown: `\r\n \r\n \r\n `,\r\n // Thumbs Up and Down next to each other\r\n thumbUpDown: `\r\n \r\n \r\n `,\r\n // Mic - Speech to text\r\n microphone: `\r\n \r\n \r\n `,\r\n // Mic that has its mic filled in - Speech to text\r\n microphoneFilled: `\r\n \r\n \r\n `,\r\n // Medicine bottle - eMAR module icon\r\n medicineBottle: `\r\n \r\n \r\n \r\n `,\r\n // Group of people - used in responsible party\r\n peopleGroup: `\r\n \r\n \r\n `,\r\n // PDF Icon - used in Forms Module\r\n PDFForm: `\r\n \r\n \r\n `,\r\n attachmentSmall: ` \r\n \r\n \r\n `,\r\n phone: `\r\n \r\n `,\r\n Empty: ` \r\n \r\n `,\r\n Email: ` \r\n \r\n \r\n `,\r\n Delete: `\r\n \r\n \r\n `,\r\n Gear: `\r\n \r\n \r\n `,\r\n PDFFormWhite: `\r\n \r\n \r\n `,\r\n workflow: `\r\n \r\n \r\n `,\r\n};\r\n","const mfa = (function() {\r\n let mfaPopup, submitBtn, codeInput, messageArea;\r\n\r\n function buildPopup() {\r\n const mainElement = document.getElementsByTagName(\"main\")[0];\r\n mfaPopup = POPUP.build({\r\n header: \"Please enter your verification code below\",\r\n id: \"mfaPopup\",\r\n hideX: true\r\n });\r\n codeInput = input.build({\r\n id: \"codeInput\",\r\n label: \"Code\"\r\n });\r\n submitBtn = button.build({\r\n id: \"submitBtn\",\r\n text: \"Submit\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: () => submitCode()\r\n });\r\n const cancelBtn = button.build({\r\n id: \"cancleBtn\",\r\n text: \"Cancel\",\r\n callback: () => {\r\n mainElement.removeChild(mfaPopup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(mfaPopup);\r\n document.body.style.overflow = \"visible\";\r\n }\r\n });\r\n messageArea = document.createElement('div')\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n mfaPopup.appendChild(codeInput);\r\n btnWrap.appendChild(submitBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n mfaPopup.appendChild(btnWrap);\r\n mfaPopup.appendChild(messageArea)\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(mfaPopup);\r\n // show overlay\r\n const overlayElement = document.querySelector(\".overlay\");\r\n overlayElement.style.zIndex = \"2\";\r\n mfaPopup.style.zIndex = \"3\";\r\n mfaPopup.style.top = \"40%\";\r\n overlay.show();\r\n eventListeners()\r\n mainElement.appendChild(mfaPopup);\r\n setTimeout(() => {codeInput.firstChild.focus();}, 500)\r\n }\r\n\r\n function submitCode() {\r\n messageArea.innerHTML = ''\r\n submitBtn.classList.add('disabled')\r\n const pleaseWait = document.createElement('p')\r\n pleaseWait.style.textAlign = 'center'\r\n pleaseWait.innerText = 'Please Wait'\r\n messageArea.appendChild(pleaseWait)\r\n const code = codeInput\r\n .querySelector(\".input-field__input\")\r\n .value.trim();\r\n authenticatedLogin(code);\r\n }\r\n\r\n function eventListeners() {\r\n codeInput.addEventListener('keyup', event => {\r\n if (event.key === 'Enter') {\r\n submitCode()\r\n }\r\n })\r\n }\r\n\r\n function mfaReject(errorReason) {\r\n\r\n let clearUNPW = false; \r\n let errorMessage;\r\n switch (errorReason) {\r\n case \"Too many failed attempts\":\r\n clearUNPW = true;\r\n errorMessage = \"Too many failed attempts. Your account has been disabled. Please contact a system administrator.\"\r\n break;\r\n case \"Expired key\":\r\n clearUNPW = true;\r\n errorMessage = \"The verification code entered has expired. Please go back to the login screen and enter your credentials to generate a new code.\"\r\n break;\r\n default:\r\n errorMessage = \"Invalid Code. Please try again.\";\r\n submitBtn.classList.remove('disabled');\r\n break;\r\n }\r\n\r\n messageArea.innerHTML = ''\r\n const errorBox = document.createElement(\"div\");\r\n errorBox.classList.add(\"error\");\r\n errorBox.style.display = \"block\";\r\n errorBox.setAttribute(\"id\", \"mfaErrorBox\");\r\n errorBox.innerHTML = `

${errorMessage}

`;\r\n messageArea.appendChild(errorBox);\r\n\r\n if (clearUNPW) {\r\n const unInput = document.getElementById('username');\r\n const pwInput = document.getElementById('password1');\r\n unInput.value = '';\r\n pwInput.value = '';\r\n }\r\n codeInput.firstChild.focus()\r\n codeInput.firstChild.select()\r\n }\r\n\r\n function init() {\r\n overlay.init();\r\n buildPopup();\r\n }\r\n return {\r\n init,\r\n mfaReject\r\n };\r\n})();\r\n","$.session = {};\r\n$.session.firstRunShit = true;\r\n$.session.ViewMyInformation = false;\r\n$.session.UpdateMyInformation = false;\r\n//$.session.firstRunShitLocationAbsentWidget = true;\r\n$.session.DayServiceView = false;\r\n$.session.DayServiceInsert = false;\r\n$.session.DayServiceUpdate = false;\r\n$.session.DayServiceDelete = false;\r\n$.session.DayServiceNonBillable = false;\r\n$.session.DayServiceOverRide = false;\r\n$.session.DenyStaffClockUpdate = false;\r\n$.session.DenyClockUpdate = false;\r\n$.session.DemographicsView = false;\r\n$.session.DemographicsUpdate = false;\r\n$.session.DemographicsBasicDataView = false;\r\n$.session.DemographicsRelationshipsView = false;\r\n$.session.DemographicsPictureUpdate = false;\r\n$.session.DemographicsPictureDelete = false;\r\n$.session.DemographicsNotesView = false;\r\n$.session.DemographicsViewAttachments = false;\r\n$.session.viewLocationSchedulesKey = false;\r\n$.session.DemographicsViewDOB = false;\r\n$.session.DemographicsViewMedicaid = false;\r\n$.session.DemographicsViewMedicare = false;\r\n$.session.DemographicsViewResident = false;\r\n$.session.DemographicsViewSSN = false;\r\n$.session.DemographicsViewLocalId = false;\r\n$.session.DemographicsViewConsumerNumber = false;\r\n$.session.GoalsView = false;\r\n$.session.GoalsUpdate = false;\r\n$.session.InsertOutcomes = false;\r\n$.session.UpdateOutcomes = false;\r\n$.session.InsertServices = false;\r\n$.session.UpdateServices = false;\r\n$.session.CaseNotesView = false;\r\n$.session.CaseNotesTablePermissionView = false;\r\n$.session.CaseNotesViewEntered = false;\r\n$.session.CaseNotesUpdate = false;\r\n$.session.CaseNotesUpdateEntered = false;\r\n$.session.CaseNotesCaseloadRestriction = false;\r\n$.session.CaseNotesSSANotes = false;\r\n$.session.SingleEntryView = false;\r\n$.session.SingleEntryUpdate = false;\r\n$.session.anywhereMainPermission = false;\r\n$.session.WorkshopView = false;\r\n$.session.WorkshopUpdate = false;\r\n$.session.isCurrentlySingleEntry = false;\r\n$.session.groupNoteId = '';\r\n$.session.caseNoteEditSecond = false;\r\n$.session.caseNoteLocationCodePreference = '';\r\n$.session.caseNoteLocationNamePreference = '';\r\n$.session.caseNoteNeedCodePreference = '';\r\n$.session.caseNoteNeedNamePreference = '';\r\n$.session.caseNoteServiceCodePreference = '';\r\n$.session.caseNoteServiceNeedPreference = '';\r\n$.session.caseNoteBillingCodeCodePreference = '';\r\n$.session.caseNoteBillingCodeNamePreference = '';\r\n$.session.caseNoteBillingCodeServiceFundingPreference = '';\r\n$.session.caseNoteDisplayGroupNoteDivPreference = false;\r\n$.session.caseNoteDisplayGroupNoteCheckedPreference = false;\r\n$.session.locationRequiredCheck = false;\r\n$.session.serviceRequiredCheck = false;\r\n$.session.needRequiredCheck = false;\r\n$.session.contactRequiredCheck = false;\r\n$.session.vendorRequiredCheck = false;\r\n$.session.caseNoteListResponse = '';\r\n$.session.vendorFlag = false;\r\n$.session.groupConsumerCount = 0;\r\n$.session.consumersForGroupCounter = 0;\r\n$.session.timeOverlapConsumers = [];\r\n$.session.overlapNoteIds = [];\r\n$.session.consumerIdArray = [];\r\n$.session.caseNoteConsumerId = '';\r\n$.session.caseNoteTimeCheck = 'pass';\r\n$.session.groupNamesExist = false;\r\n$.session.existingGroupNoteIdForUpdate = '';\r\n$.session.startTimeForGroupNoteUpdateCompare = '';\r\n$.session.endTimeForGroupNoteUpdateCompare = '';\r\n$.session.serviceDateForGroupNoteUpdateCompare = '';\r\n$.session.serviceOrBillingCodeForGroupNoteUpdateCompare = '';\r\n$.session.caseNotePreferencesSet = false;\r\n$.session.consumerEditId = '';\r\n$.session.updateAllGroupDropDowns = false;\r\n$.session.isSingleEdit = false;\r\n$.session.changeFromSingleToGroupNote = false;\r\n$.session.editingConsumerId = '';\r\n$.session.dontLoadAppAfterDelete = false;\r\n$.session.consumerGroupCount = 0;\r\n$.session.groupSaveCounter = 0;\r\n$.session.editOnLoad = false;\r\n$.session.groupOverlapCheckCounter = 1;\r\n$.session.overlapScreenLock = false;//\r\n$.session.UpdateCaseNotesDocTime = false;\r\n$.session.batchedNoteEdit = false;\r\n$.session.groupNoteAttemptWithDocTime = false;\r\n$.session.sendToDODD = false;\r\n$.session.sendToPortal = false;\r\n\r\n$.session.dobString = '';\r\n//remove section when ready for testing. Forcing all features on.\r\n//$.session.CaseNotesView = true;\r\n//$.session.CaseNotesTablePermissionView = true;\r\n//$.session.CaseNotesUpdate = true;\r\n//$.session.CaseNotesCaseloadRestriction = true;\r\n$.session.defaultIncidentTrackingDaysBack = '7';\r\n$.session.editNoteMileageOnLoadFlag = false;\r\n$.session.SEViewAdminWidget = false;\r\n$.session.ciBShow = false;\r\n$.session.singleEntry15minDoc = 'N';\r\n$.session.Roster = false;\r\n$.session.Name = '';\r\n$.session.LName = '';\r\n$.session.isAdmin = false;\r\n$.session.PeopleId = '';\r\n$.session.StaffLocId = '';\r\n$.session.UserId = '';\r\n$.session.Token = '';\r\n$.session.Error = '';\r\n$.session.ver = '';\r\n$.session.browser = '';\r\n$.session.browserVer = '';\r\n$.session.OS = '';\r\n$.session.locations = [];\r\n$.session.locationids = [];\r\n$.session.lastMenuSelection = new Date(); //keeps menu's from double popping for people that are jackrabbits on the touchscreen.\r\n\r\n//DEFAULT SESSION VALUES --- Getting set in sessionsajax\r\n$.session.defaultDayServiceLocation;\r\n$.session.dsCertified; //True = Day Service Certified False = Not DS Certified\r\n$.session.defaultDayServiceLocationFlag = true;\r\n$.session.defaultRosterLocation;\r\n$.session.defaultRosterLocationFlag = false;\r\n$.session.defaultStaffLocation = 0;\r\n$.session.defaultDayServiceLocationName;\r\n$.session.defaultWorkshopLocation;\r\n$.session.defaultWorkshopLocationValue;\r\n$.session.defaultRosterLocationName;\r\n$.session.defaultRosterGroupValue;\r\n$.session.defaultDSTimeClockValue;\r\n$.session.defaultDSTimeClockName;\r\n$.session.defaultMoneyManagementLocation;\r\n$.session.defaultMoneyManagementLocationValue;\r\n\r\n//////////\r\n$.session.areInSalesForce = false;\r\n$.session.RosterDeleteAbsent = false;\r\n$.session.defaultStaffLocationName = 0;\r\n$.session.selectedLocation = ['0', 'defaultlocation'];\r\n// $.session.height = 0;\r\n// $.session.width = 0;\r\n$.session.strongPassword = 'Y'; //variable that tells whether or not a strong password is required.Default is Y to keep expired password rules the same.\r\n$.session.errorMessage = '';\r\n$.session.selectedGroupId = 0;\r\n$.session.deletedGroupId = 0; //Added to handle the delete group issue when deleting from the page where you are in the group to be deleted\r\n$.session.changePasswordLinkSelected = '';\r\n$.session.advancedPasswordLength = '';\r\n$.session.dsLocationHistoryFlag = false;\r\n$.session.dsLocationHistoryValue = 0;\r\n$.session.initialTimeOut = '';\r\n$.session.initialTimeIn = '';\r\n$.session.singleLoadedConsumerId = '';\r\n$.session.passwordSpecialCharacters = '';\r\n$.session.daysBackGoalsEdit = '';\r\n$.session.singleLoadedConsumerName = '';\r\n$.session.serviceStartDate = '';\r\n$.session.serviceEndDate = '';\r\n$.session.defaultCaseNoteReviewDays = '';\r\n$.session.defaultProgressNoteReviewDays = '';\r\n$.session.defaultProgressNoteChecklistReviewDays = '';\r\n$.session.countCheck = 0;\r\n$.session.applicationName = '';\r\n$.session.viewableGoalTypeIds = [];\r\n$.session.outcomesPermission = '';\r\n$.session.dayServicesPermission = '';\r\n$.session.caseNotesPermission = '';\r\n$.session.singleEntryPermission = '';\r\n$.session.workshopPermission = '';\r\n$.session.workshopPermission = '';\r\n$.session.intellivuePermission = '';\r\n$.session.passwordResetPermission = '';\r\n// $.session.formsPermission = '';\r\n// $.session.OODPermission = '';\r\n$.session.anywhereResetPasswordPermission = '';\r\n$.session.anywhereConsumerFinancesPermission = '';\r\n$.session.anywhereEmploymentPermission = '';\r\n$.session.selectedConsumerIdForGoalsDateBack = '';\r\n$.session.caseNoteEdit = false;\r\n$.session.consumerIdToEdit = '';\r\n$.session.planPeopleId = '';\r\n$.session.showDynamic = true;\r\n$.session.singleEntryUseServiceLocations = false;\r\n$.session.editCaseNoteId = '';\r\n$.session.updateEmail = false;\r\n//$.session.groupCaseNoteId = '';\r\n$.session.tempServiceFunding = 'N';\r\n$.session.usePersonalPrefernces = 'N';\r\n$.session.defaultSeviceId = '';\r\n$.session.defaultSeviceName = '';\r\n//Added to save session filters\r\n$.session.useSessionFilterVariables = false;\r\n$.session.filterServiceStart = '';\r\n$.session.filterServiceEnd = '';\r\n$.session.filterDateEnteredStart = '';\r\n$.session.filterDateEnteredEnd = '';\r\n$.session.filterBillerId = '';\r\n$.session.filterBillerName = '';\r\n$.session.groupAddOnNames = [];\r\n$.session.intellivueSessionID = '';\r\n$.session.singleEntryApproveEnabled = '';\r\n$.session.anAdmin = false;\r\n$.session.ViewAdminSingleEntry = false;\r\n$.session.communityIntegrityRequired = 'n/a';\r\n$.session.singleEntryAddConsumersOnBillable = 'N';\r\n$.session.workshopBatchId = '';\r\n$.session.infiniteLoopFlag == false;\r\n//$.session.singleEntryReportCurrentlyProcessing = false;\r\n$.session.viewLocationSchedulesKey = false;\r\n$.session.incidentTrackingPermission = '';\r\n$.session.singleEntryLocationRequired = '';\r\n$.session.SingleEntryEditTimeEntry = false; // MAT changed\r\n$.session.singleEntryGottenById = false;\r\n$.session.singleEntrycrossMidnight = false;\r\n//Incident Tracking\r\n$.session.incidentTrackingView = false;\r\n$.session.incidentTrackingViewPerm = [];\r\n$.session.incidentTrackingReviewedBy = false;\r\n$.session.incidentTrackingUpdate = false;\r\n$.session.incidentTrackingInsert = false;\r\n$.session.incidentTrackingDelete = false;\r\n$.session.incidentTrackingViewCaseLoad = false;\r\n$.session.defaultIncidentTrackingReviewDays = '';\r\n$.session.incidentTrackingPopulateIncidentDate = '';\r\n$.session.incidentTrackingPopulateIncidentTime = '';\r\n$.session.incidentTrackingPopulateReportedDate = '';\r\n$.session.incidentTrackingPopulateReportedTime = '';\r\n$.session.incidentTrackingEmailIncident = '';\r\n/////////\r\n$.session.infalHasConnectionString = false;\r\n$.session.isPSI = false;\r\n$.session.anywhereMinutestotimeout = '';\r\n$.session.useAbsentFeature = 'Y';\r\n$.session.useProgressNotes = 'Y';\r\n$.session.singleEntryEditLocationHack = '';\r\n$.session.HideProgressNotes = false;\r\nvar firstLoad = true;\r\n$.session.portraitPath = '';\r\n$.session.isASupervisor = false;\r\n$.session.seAdminRemoveMap = false;\r\n$.session.removeGoalsWidget = false;\r\n$.session.createTimeEntries = false;\r\n//Login\r\n$.session.changeEmailSent = false;\r\n// Single Entry Geo Location Position\r\n$.session.geoLocationPosition = '';\r\n// Single Entry Signautre, Note and ____ Instances\r\n$.session.evvDataCache = {};\r\n$.session.singleEntryShowConsumerSignature = 'N';\r\n$.session.singleEntryShowConsumerNote = 'N';\r\n//Scheduling\r\n$.session.schedulingUpdate = false;\r\n$.session.schedulingView = false;\r\n$.session.schedulingStartDayOfWeek = 0;\r\n$.session.schedAllowCallOffRequests = 'N';\r\n$.session.schedRequestOpenShifts = 'N';\r\n$.session.hideAllScheduleButton = false;\r\n// Authorizations\r\n$.session.authorizationsView = false;\r\n$.session.authorizationsVendorInfoView = false;\r\n//Plan\r\n$.session.planUpdate = false;\r\n$.session.planDelete = false;\r\n$.session.planView = false;\r\n$.session.planInsertNewTeamMember = false;\r\n$.session.planAssignCaseload = false;\r\n$.session.downloadPlans = false;\r\n$.session.planSignatureUpdateDOB = false;\r\n$.session.planSignatureUpdateBuildingNumber = false;\r\n$.session.planClearSignature = false;\r\n// Waiting List\r\n$.session.waitingListInsert = false;\r\n$.session.waitingListView = false;\r\n$.session.waitingListUpdate = false;\r\n$.session.waitingListDelete = false;\r\n// Transportation\r\n$.session.transportationUpdate = false;\r\n$.session.transportationView = false;\r\n$.session.transportationManageRoute = false;\r\n$.session.transportationAddRoute = false;\r\n// eMAR\r\n$.session.emarView = false;\r\n// Speech To Text\r\n$.session.sttEnabled = false;\r\n// Forms\r\n$.session.formsDelete = false;\r\n$.session.formsInsert = false;\r\n$.session.formsUpdate = false;\r\n$.session.formsView = false;\r\n$.session.formsCaseload = false;\r\n$.session.formsFormtype = false;\r\n\r\n// OOD\r\n$.session.OODDelete = false;\r\n$.session.OODInsert = false;\r\n$.session.OODUpdate = false;\r\n$.session.OODView = false;\r\n\r\n// Consumer Finance\r\n$.session.CFDelete = false;\r\n$.session.CFInsert = false;\r\n$.session.CFUpdate = false;\r\n$.session.CFView = false;\r\n$.session.CFADDPayee = false; //\r\n$.session.CFEditAccountEntries = false;\r\n$.session.CFInsertAccounts = false;\r\n$.session.CFUpdateEditAccounts = false;\r\n$.session.CFViewEditAccounts = false;\r\n\r\n$.session.CFViewChecking = false;\r\n$.session.CFViewCraditCard = false;\r\n$.session.CFViewFoodStamp = false;\r\n$.session.CFViewPettyCash = false;\r\n$.session.CFViewShaving = false;\r\n\r\n$.session.CFViewChristmasClub = false;\r\n$.session.CFViewSystem20183A = false;\r\n$.session.CFViewSystem20183 = false;\r\n$.session.CFViewOhioEBT = false;\r\n$.session.CFViewViewFoodStampDebitCardEBT = false;\r\n\r\n\r\n// Reset Password\r\n$.session.ResetPasswordView = false;\r\n$.session.ResetPasswordUpdate = false;\r\n\r\n// Employment\r\n$.session.EmploymentView = false;\r\n$.session.EmploymentUpdate = false;\r\n$.session.EmploymentDelete = false;\r\n$.session.InsertEmployers = false;\r\n$.session.UpdateEmployers = false;\r\n\r\n$.session.consumerId = '';\r\n\r\n//Waiting List\r\n$.session.sendWaitingListEmail = false;\r\n// $.session.sttCaseNotesEnabled = false; Will be a system setting, setting true for now for dev\r\n\r\n//Needs updated for every release.\r\n$.session.version = '2024.2';\r\n//State Abbreviation\r\n$.session.stateAbbreviation = '';\r\n// temp holder for the device GUID when logging in\r\n$.session.deviceGUID = '';\r\n//API Keys\r\n$.session.azureSTTApi = '';\r\n$.session.isActiveUsers = true; // to get active and inactive user both\r\n\r\n$.session.activeModule = '';\r\n$.session.billableTransportation = 'N';\r\n$.session.ohioEVVChangeDate = '';\r\n$.session.anyRequireEndTime = '';\r\n$(window).resize(function () {\r\n //resizeActionCenter();\r\n});\r\n\r\nfunction setDefaultLoc(type, value) {\r\n //alert(\"setDefaultLoc \" + type + \" \" + value + \" \" + $.session.defaultStaffLocation);\r\n\r\n if (type == 1) {\r\n $.session.defaultStaffLocation = value;\r\n //alert(\"setDefaultLoc \" + type + \" \" + value + \" \" + $.session.StaffLocId);\r\n createCookie('defaultStaffLocation', value, 7);\r\n }\r\n\r\n if (type == 2) {\r\n //createCookie('defaultRosterLocation', value, 7);\r\n saveDefaultLocationValueAjax('2', value);\r\n if (value == 0) {\r\n createCookie('defaultRosterLocationFlag', true, 7);\r\n } else {\r\n createCookie('defaultRosterLocationFlag', false, 7);\r\n }\r\n }\r\n\r\n if (type == 3) {\r\n if ($.session.defaultDayServiceLocationFlag == 'true' || $.session.defaultDayServiceLocationFlag == null) {\r\n //createCookie('defaultDayServiceLocationNameValue', value, 7);\r\n saveDefaultLocationValueAjax('3', value);\r\n }\r\n if ($.session.dsLocationHistoryFlag == true) {\r\n $.session.defaultDayServiceLocation = value;\r\n }\r\n }\r\n}\r\n\r\nfunction createCookie(name, value, days) {\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n var expires = '; expires=' + date.toGMTString();\r\n } else var expires = '';\r\n var test = escape(value);\r\n document.cookie = escape(name) + '=' + escape(value) + expires + '; path=/';\r\n}\r\n\r\nfunction readCookie(name) {\r\n var nameEQ = escape(name) + '=';\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));\r\n }\r\n return null;\r\n}\r\n\r\nfunction eraseCookie(name) {\r\n createCookie(name, '', -1);\r\n}\r\n\r\nfunction setSessionVariables() {\r\n var cookieInnards = $.session.permissionString;\r\n\r\n var tmpWindows = {};\r\n\r\n cookieInnards.forEach(cookie => {\r\n tmpWindow = cookie.window_name;\r\n tmpPerm = cookie.permission;\r\n tmpSpec = cookie.special_data;\r\n tmpWindows[tmpWindow] = tmpWindow;\r\n\r\n if (tmpWindow == 'IsAnAdmin') {\r\n if (tmpPerm == 'Y') $.session.isAdmin = true;\r\n }\r\n\r\n if (tmpWindow == 'SEShowServiceLocations') {\r\n if (tmpPerm == 'Y') {\r\n //Require a consumer to be picked\r\n $.session.singleEntryUseServiceLocations = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'SEAddConsumerOnBillable') {\r\n if (tmpPerm == 'P') {\r\n //Require a consumer to be picked\r\n $.session.singleEntryAddConsumersOnBillable = 'P';\r\n } else if (tmpPerm == 'Y') {\r\n //Do not require a consumer to be picked, but give a warning\r\n $.session.singleEntryAddConsumersOnBillable = 'Y';\r\n } else {\r\n //Do not require a consumerto be picked, and give no warning\r\n $.session.singleEntryAddConsumersOnBillable = 'N';\r\n }\r\n }\r\n\r\n if (tmpWindow == 'SEDocumentTime') {\r\n if (tmpPerm == 'Y') {\r\n //Enable 15 minutes intervals\r\n $.session.singleEntry15minDoc = 'Y';\r\n } else {\r\n //Do not enable/disable 15 minute document intervals\r\n $.session.singleEntry15minDoc = 'N';\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Day Services') {\r\n if (tmpPerm == 'View') {\r\n $.session.DayServiceView = true;\r\n $.session.Roster = true;\r\n $('#dayservicesettingsbutton').removeClass('disabledModule');\r\n }\r\n\r\n if (tmpPerm == 'Override location requirement') {\r\n $.session.DayServiceOverRide = true;\r\n }\r\n\r\n if (tmpPerm == 'Update') {\r\n $.session.DayServiceUpdate = true;\r\n }\r\n\r\n if (tmpPerm == 'Delete') {\r\n $.session.DayServiceDelete = true;\r\n }\r\n\r\n if (tmpPerm == 'Insert') {\r\n $.session.DayServiceInsert = true;\r\n }\r\n\r\n if (tmpPerm == 'Deny TimeClock Change') {\r\n $.session.DenyClockUpdate = true;\r\n }\r\n }\r\n\r\n //Goals Permissions\r\n if (tmpWindow == 'Anywhere Service Activity') {\r\n if (tmpPerm == 'View') {\r\n $.session.GoalsView = true;\r\n $('#goalssettingsbutton').removeClass('disabledModule');\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.GoalsUpdate = true;\r\n }\r\n if (tmpPerm == 'Insert Outcomes') {\r\n $.session.InsertOutcomes = true;\r\n }\r\n if (tmpPerm == 'Update Outcomes') {\r\n $.session.UpdateOutcomes = true;\r\n }\r\n if (tmpPerm == 'Insert Services') {\r\n $.session.InsertServices = true;\r\n }\r\n if (tmpPerm == 'Update Services') {\r\n $.session.UpdateServices = true;\r\n }\r\n }\r\n\r\n //Single Entry Permissions\r\n if (tmpWindow == 'Anywhere Single Entry') {\r\n if (tmpPerm == 'View') {\r\n $.session.SingleEntryView = true;\r\n $('#singleentrybutton').removeClass('disabledModule');\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.SingleEntryUpdate = true;\r\n }\r\n if (tmpPerm == 'Edit Time Entry') {\r\n $.session.SingleEntryEditTimeEntry = true;\r\n }\r\n }\r\n\r\n //Workshop Module\r\n if (tmpWindow == 'Anywhere Workshop') {\r\n if (tmpPerm == 'View') {\r\n $.session.WorkshopView = true;\r\n $('#workshopbutton').removeClass('disabledModule');\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.WorkshopUpdate = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Case Notes') {\r\n if (tmpPerm == 'View') {\r\n $('#casenotessettingsdiv').removeClass('disabledModule');\r\n $.session.CaseNotesView = true;\r\n }\r\n if (tmpPerm == 'View Entered') {\r\n $.session.CaseNotesViewEntered = true;\r\n }\r\n if (tmpPerm == 'Update Entered') {\r\n $.session.CaseNotesUpdateEntered = true;\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.CaseNotesUpdate = true;\r\n }\r\n if (tmpPerm == 'Caseload Only') {\r\n $.session.CaseNotesCaseloadRestriction = true;\r\n }\r\n if (tmpPerm == 'SSA Notes') {\r\n $.session.CaseNotesSSANotes = true;\r\n }\r\n }\r\n\r\n //Absent and progress notes/\r\n if (tmpWindow == 'Anywhere Roster') {\r\n if (tmpPerm == 'Delete Absent') {\r\n $.session.RosterDeleteAbsent = true;\r\n }\r\n if (tmpPerm == 'Hide Progress Notes') {\r\n $.session.HideProgressNotes = true;\r\n }\r\n }\r\n //Demographics\r\n if (tmpWindow == 'Anywhere Demographics') {\r\n if (tmpPerm == 'View') {\r\n $.session.DemographicsView = true;\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.DemographicsUpdate = true;\r\n }\r\n\r\n if (tmpPerm == 'View Relationships') {\r\n $.session.DemographicsRelationshipsView = true;\r\n }\r\n\r\n if (tmpPerm == 'View General') {\r\n $.session.DemographicsBasicDataView = true;\r\n }\r\n\r\n if (tmpPerm == 'Update Picture') {\r\n $.session.DemographicsPictureUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete Picture') {\r\n $.session.DemographicsPictureDelete = true;\r\n }\r\n\r\n if (tmpPerm == 'View Notes') {\r\n $.session.DemographicsNotesView = true;\r\n }\r\n\r\n if (tmpPerm == 'View Attachments') {\r\n $.session.DemographicsViewAttachments = true;\r\n }\r\n\r\n if (tmpPerm == 'View Location Schedule') {\r\n $.session.viewLocationSchedulesKey = true;\r\n }\r\n if (tmpPerm == 'View DOB') {\r\n $.session.DemographicsViewDOB = true;\r\n }\r\n if (tmpPerm == 'View Medicaid Number') {\r\n $.session.DemographicsViewMedicaid = true;\r\n }\r\n if (tmpPerm == 'View Medicare Number') {\r\n $.session.DemographicsViewMedicare = true;\r\n }\r\n if (tmpPerm == 'View Resident Number') {\r\n $.session.DemographicsViewResident = true;\r\n }\r\n if (tmpPerm == 'View SSN') {\r\n $.session.DemographicsViewSSN = true;\r\n }\r\n if (tmpPerm == 'View Consumer Number') {\r\n $.session.DemographicsViewConsumerNumber = true;\r\n }\r\n if (tmpPerm == 'View Local ID') {\r\n $.session.DemographicsViewLocalId = true;\r\n }\r\n }\r\n\r\n //Incident Tracking Permissons\r\n if (tmpWindow == 'Anywhere Incident Tracking') {\r\n if (tmpPerm == 'View Case Load') {\r\n $.session.incidentTrackingViewCaseLoad = true;\r\n } else if (tmpPerm == 'Delete') {\r\n $.session.incidentTrackingDelete = true;\r\n } else if (tmpPerm == 'Insert') {\r\n $.session.incidentTrackingInsert = true;\r\n } else if (tmpPerm == 'Update') {\r\n $.session.incidentTrackingUpdate = true;\r\n } else if (tmpPerm == 'View') {\r\n $.session.incidentTrackingView = true;\r\n } else if (tmpPerm == 'Reviewed By User') {\r\n $.session.incidentTrackingReviewedBy = true;\r\n } else if (tmpPerm == 'Email Incident') {\r\n $.session.incidentTrackingEmailIncident = true;\r\n } else {\r\n $.session.incidentTrackingViewPerm.push(tmpPerm.replace('View ', '').toLowerCase());\r\n }\r\n }\r\n\r\n //Anywhere Plan\r\n if (tmpWindow == 'Anywhere Plan' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.planUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete Plan' || $.session.isPSI == true) {\r\n $.session.planDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.planView = true;\r\n }\r\n if (tmpPerm == 'Send to DODD' || $.session.isPSI == true) {\r\n $.session.sendToDODD = true;\r\n }\r\n if (tmpPerm == 'Send to Portal' || $.session.isPSI == true) {\r\n $.session.sendToPortal = true;\r\n }\r\n if (tmpPerm == 'Insert New Team Member' || $.session.isPSI == true) {\r\n $.session.planInsertNewTeamMember = true;\r\n }\r\n if (tmpPerm == 'Assign Case Load' || $.session.isPSI == true) {\r\n $.session.planAssignCaseload = true;\r\n }\r\n if (tmpPerm == 'Update DOB' || $.session.isPSI == true) {\r\n $.session.planSignatureUpdateDOB = true;\r\n }\r\n if (tmpPerm == 'Update Building Number' || $.session.isPSI == true) {\r\n $.session.planSignatureUpdateBuildingNumber = true;\r\n }\r\n if (tmpPerm == 'Clear Signatures' || $.session.isPSI == true) {\r\n $.session.planClearSignature = true;\r\n }\r\n if (tmpPerm == 'Download Plans' || $.session.isPSI == true) {\r\n $.session.downloadPlans = true;\r\n }\r\n if (tmpPerm == 'Update Email' || $.session.isPSI == true) {\r\n $.session.updateEmail = true;\r\n }\r\n }\r\n if (tmpWindow == 'Anywhere Authorizations' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.authorizationsView = true;\r\n }\r\n if (tmpPerm == 'View Vendor Info' || $.session.isPSI == true) {\r\n $.session.authorizationsVendorInfoView = true;\r\n }\r\n }\r\n //Waiting List\r\n if (tmpWindow == 'Anywhere Waiting List Assessment' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.waitingListInsert = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.waitingListView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.waitingListUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.waitingListDelete = true;\r\n }\r\n }\r\n //AeMAR\r\n if (tmpWindow == 'Anywhere eMAR' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.emarView = true;\r\n }\r\n }\r\n //Anywhere Transportation\r\n if (tmpWindow == 'Anywhere Transportation' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update') {\r\n $.session.transportationUpdate = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.transportationView = true;\r\n }\r\n if (tmpPerm == 'Manage Routes' || $.session.isPSI == true) {\r\n $.session.transportationManageRoute = true;\r\n }\r\n if (tmpPerm == 'Add Routes' || $.session.isPSI == true) {\r\n $.session.transportationAddRoute = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Scheduling' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update') {\r\n $.session.schedulingUpdate = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.schedulingView = true;\r\n }\r\n }\r\n\r\n // Anywhere Forms\r\n if (tmpWindow == 'Anywhere Forms' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.formsUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.formsDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.formsView = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.formsInsert = true;\r\n }\r\n if (tmpPerm == 'Case Load') {\r\n $.session.formsCaseload = true;\r\n }\r\n if ($.session.isPSI == true) {\r\n $.session.formsCaseload = false;\r\n }\r\n }\r\n\r\n if (tmpPerm.length > 9) {\r\n if (tmpPerm.substring(0, 9) == 'Form Type') {\r\n $.session.formsFormtype = true;\r\n if (tmpWindow == 'IsAnAdmin') {\r\n if (tmpPerm == 'Y') $.session.isAdmin = true;\r\n }\r\n }\r\n }\r\n\r\n // OOD\r\n if (tmpWindow == 'Anywhere OOD' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.OODUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.OODDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $.session.OODView = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.OODInsert = true;\r\n }\r\n }\r\n\r\n // Consumer Finance\r\n if (tmpWindow == 'Anywhere Consumer Finances' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.CFUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.CFDelete = true;\r\n }\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#cfAccountDiv').removeClass('disabledModule');\r\n $('#consumerfinancessettingsdiv').removeClass('disabledModule');\r\n $.session.CFView = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.CFInsert = true;\r\n }\r\n if (tmpPerm == 'Add Payee' || $.session.isPSI == true) {\r\n $.session.CFADDPayee = true;\r\n }\r\n if (tmpPerm == 'Edit Account Entries' || $.session.isPSI == true) {\r\n $.session.CFEditAccountEntries = true;\r\n }\r\n if (tmpPerm == 'Insert Accounts' || $.session.isPSI == true) {\r\n $.session.CFInsertAccounts = true;\r\n }\r\n if (tmpPerm == 'Update Edit Accounts' || $.session.isPSI == true) {\r\n $.session.CFUpdateEditAccounts = true;\r\n }\r\n if (tmpPerm == 'View Edit Accounts' || $.session.isPSI == true) {\r\n $('#cfEditAccountDiv').removeClass('disabledModule');\r\n $('#consumerfinancessettingsdiv').removeClass('disabledModule');\r\n $.session.CFViewEditAccounts = true;\r\n }\r\n\r\n if (tmpPerm == 'View Checking' || $.session.isPSI == true) {\r\n $.session.CFViewChecking = true;\r\n }\r\n\r\n if (tmpPerm == 'View Credit Card' || $.session.isPSI == true) {\r\n $.session.CFViewCraditCard = true;\r\n }\r\n\r\n if (tmpPerm == 'View Food Stamps' || $.session.isPSI == true) {\r\n $.session.CFViewFoodStamp = true;\r\n }\r\n\r\n if (tmpPerm == 'View Petty Cash' || $.session.isPSI == true) {\r\n $.session.CFViewPettyCash = true;\r\n }\r\n\r\n if (tmpPerm == 'View Savings' || $.session.isPSI == true) {\r\n $.session.CFViewShaving = true;\r\n }\r\n if (tmpPerm == 'View Christmas Club' || $.session.isPSI == true) {\r\n $.session.CFViewChristmasClub = true;\r\n }\r\n if (tmpPerm == 'View System 2018.3A' || $.session.isPSI == true) {\r\n $.session.CFViewSystem20183A = true;\r\n }\r\n if (tmpPerm == 'View System 2018.3' || $.session.isPSI == true) {\r\n $.session.CFViewSystem20183 = true;\r\n }\r\n if (tmpPerm == 'View Ohio EBT' || $.session.isPSI == true) {\r\n $.session.CFViewOhioEBT = true;\r\n }\r\n if (tmpPerm == 'View Food Stamp Debit Card EBT' || $.session.isPSI == true) {\r\n $.session.CFViewViewFoodStampDebitCardEBT = true;\r\n }\r\n }\r\n\r\n //Reset Password\r\n if (tmpWindow == 'Anywhere Reset Passwords') {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#Adminsettingdiv').removeClass('disabledModule');\r\n $.session.ResetPasswordView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.ResetPasswordUpdate = true;\r\n }\r\n }\r\n\r\n //Employment\r\n if (tmpWindow == 'Anywhere Employment' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#Employmentsettingsdiv').removeClass('disabledModule');\r\n $.session.EmploymentView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.EmploymentUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.EmploymentDelete = true;\r\n }\r\n if (tmpPerm == 'Insert Employers' || $.session.isPSI == true) {\r\n $.session.InsertEmployers = true;\r\n }\r\n if (tmpPerm == 'Update Employers' || $.session.isPSI == true) {\r\n $.session.UpdateEmployers = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere User Home') {\r\n if (tmpPerm == 'Deny Staff TimeClock Change') {\r\n $.session.DenyStaffClockUpdate = true;\r\n }\r\n if (tmpPerm == 'View My Information') {\r\n $.session.ViewMyInformation = true;\r\n }\r\n if (tmpPerm == 'Update My Information') {\r\n $.session.UpdateMyInformation = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'admin') {\r\n $.session.DayServiceView = true;\r\n $.session.DayServiceInsert = true;\r\n $.session.DayServiceUpdate = true;\r\n $.session.DayServiceDelete = true;\r\n $.session.DayServiceNonBillable = true;\r\n $.session.DayServiceOverRide = true;\r\n $.session.Roster = true;\r\n $.session.DenyClockUpdate = false;\r\n $.session.DenyClockUpdate = false;\r\n }\r\n\r\n if (tmpWindow == 'Name') {\r\n $.session.Name = tmpPerm;\r\n $.session.UserId = tmpSpec;\r\n }\r\n\r\n if (tmpWindow == 'LName') {\r\n $.session.LName = tmpPerm;\r\n $.session.PeopleId = tmpSpec;\r\n }\r\n\r\n if (tmpWindow == 'Token') {\r\n $.session.Token = tmpSpec;\r\n }\r\n\r\n if (tmpWindow == 'ProductName') {\r\n $.session.ProductName = tmpPerm.toUpperCase();\r\n }\r\n\r\n if (tmpWindow == 'stafflocation') {\r\n $.session.locations.push(tmpPerm);\r\n $.session.locationids.push(tmpSpec);\r\n }\r\n\r\n if (tmpWindow == 'Default Staff Location') {\r\n $.session.defaultStaffLocation = tmpPerm;\r\n }\r\n\r\n if (tmpWindow == 'Default Roster Location') {\r\n //not sure what this was intended for. Was breaking roster location save\r\n // $.session.defaultRosterLocation = tmpPerm;\r\n }\r\n\r\n if (tmpWindow == 'Default Day Service Location') {\r\n $.session.defaultDayServiceLocation = tmpPerm;\r\n }\r\n });\r\n\r\n if ($.session.UserId === 'ash' || $.session.UserId === 'mike') {\r\n $.session.ViewMyInformation = true;\r\n $.session.UpdateMyInformation = true;\r\n $.session.authorizationsView = true;\r\n $.session.planView = true;\r\n //console.table(tmpWindows);\r\n }\r\n // TODO-ASH: move this somewhere else eventually\r\n if (!$.session.ViewMyInformation) {\r\n const informationMenuBtn = document.querySelector(`[data-menu='information']`);\r\n informationMenuBtn.style.display = 'none';\r\n }\r\n}\r\n\r\nfunction setSession(callback) {\r\n var cookieInnards = readCookie('psi');\r\n\r\n //sets token from cookie. This is needed for ajax call getUserPermissions(). Other session variables set in setSessionVariables()\r\n $('permissions', cookieInnards).each(function () {\r\n tmpWindow = $('window_name', this).text();\r\n tmpPerm = $('permission', this).text();\r\n tmpSpec = $('special_data', this).text();\r\n\r\n if (tmpWindow == 'Token') {\r\n $.session.Token = tmpSpec;\r\n }\r\n });\r\n getUserPermissions(callback);\r\n\r\n setInterval(function () {\r\n tokenCheck();\r\n }, 60000);\r\n}\r\n\r\nfunction checkforErrors(xmlReturn) {\r\n //check for Errors\r\n var retVal = 0;\r\n //alert(\"checkForErrors\" + xmlReturn);\r\n var ErrorText = $('Error', xmlReturn).text();\r\n //alert('Error text: ' + ErrorText);\r\n //session didn't exist\r\n if (ErrorText == 'Error:606') {\r\n //setCookieOnFail(\"Please log in again.\");\r\n errorMessage = 'Please log in again.';\r\n retVal = -1;\r\n }\r\n //session expired\r\n if (ErrorText == 'Error:607') {\r\n //setCookieOnFail(\"Session has timed out, please log in again.\");\r\n errorMessage = 'Session has timed out, please log in again.';\r\n retVal = -1;\r\n }\r\n //session didn't exist\r\n if (ErrorText == 'Error:608') {\r\n //setCookieOnFail(\"This user name does not exist in demographics.\");\r\n errorMessage = 'This user name does not exist in demographics.';\r\n retVal = -1;\r\n }\r\n if (ErrorText == 'Error:609') {\r\n //setCookieOnFail(\"Password has expired\");\r\n errorMessage = 'Password has expired.';\r\n retVal = -1;\r\n }\r\n if (ErrorText == 'Error:610') {\r\n //setCookieOnFail(\"Previous Password is invalid\");\r\n errorMessage = 'Previous Password is invalid.';\r\n retVal = -1;\r\n }\r\n return retVal;\r\n}\r\n\r\nfunction setCookieOnFail(xmlReturn) {\r\n createCookie('psi', xmlReturn, 1);\r\n $.session.Token = '';\r\n if (xmlReturn.indexOf('Password has expired') > -1) {\r\n // do nothing\r\n } else {\r\n document.location.href = 'login.html';\r\n }\r\n}\r\n\r\nfunction checkForErrors() {\r\n var errorXml = readCookie('psi');\r\n $('#errortext').text($('Error', errorXml).text());\r\n\r\n if ($('#errortext').text().length > 0) {\r\n $('#error').css('display', 'block'); //show error\r\n\r\n if ($('#errortext').text().indexOf('expired') !== -1) {\r\n // if error is not expired password\r\n $('#login').css('display', 'none');\r\n $('#change').css('display', 'block');\r\n $('#changePassword').css('display', 'none');\r\n }\r\n } else {\r\n $('#error').css('display', 'none'); //hide error\r\n\r\n $('#login').css('display', 'block');\r\n $('#change').css('display', 'none');\r\n $('#changePassword').css('display', 'none');\r\n }\r\n}\r\n\r\nfunction customPasswordChangeClick() {\r\n // Called off of link to change password. Used to set sesson variable for checking against later.\r\n $.session.changePasswordLinkSelected = 'Y';\r\n customPasswordChange();\r\n $('#loginInfal').css('opacity', '-1');\r\n}\r\n\r\nfunction setUpPasswordResetMessages(res) {\r\n var error = '';\r\n var success = '';\r\n $('results', res).each(function () {\r\n error = $('Error', this).text();\r\n success = $('Success', this).text();\r\n });\r\n if (error.indexOf('808') != -1) {\r\n $('#confirmResetMessage').html(\r\n 'A temporary password has been sent to your email address on file. If you do not receive an email please contact your System Administrator.',\r\n );\r\n $('#confirmResetMessage').css('color', '#f13c6e');\r\n $('#resetButton').text('Change Password');\r\n $.session.changeEmailSent = true;\r\n } else if (error.indexOf('888') != -1) {\r\n $('#confirmResetMessage').html('Forgot password functionality is not offered by your company.');\r\n $('#confirmResetMessage').css('color', '#f13c6e');\r\n } else {\r\n //var reset = true;\r\n //customPasswordChange(reset);\r\n $('#confirmResetMessage').html(\r\n 'A temporary password has been sent to your email address on file. If you do not receive an email please contact your System Administrator.',\r\n );\r\n $('#confirmResetMessage').css('color', '#f13c6e');\r\n $('#resetButton').text('Change Password');\r\n r = document.getElementById('resetButton');\r\n r.addEventListener('click', () => customPasswordChange(reset), false);\r\n $.session.changeEmailSent = true;\r\n }\r\n}\r\n\r\nfunction toResetPage() {\r\n customPasswordChange(reset);\r\n}\r\n\r\nfunction resetPasswordClick() {\r\n // hide other forms\r\n $('#login').css('display', 'none');\r\n $('#change').css('display', 'none');\r\n\r\n // hide password help options\r\n $('#changePassword').css('display', 'none');\r\n $('#resetPassword').css('display', 'none');\r\n $('#loginInfal').css('opacity', '-1');\r\n\r\n // hide error and custom login text\r\n $('#error').css('display', 'none');\r\n $('#customLoginText').css('display', 'none');\r\n\r\n // display reset form and back to login button\r\n $('#reset').css('display', 'block');\r\n $('#backToLogin').css('display', 'flex');\r\n}\r\n\r\nfunction backToLoginPage() {\r\n $('#customLoginText').css('display', 'block');\r\n location.reload();\r\n}\r\n\r\n//Custom password change code\r\nfunction customPasswordChange(reset) {\r\n // hide other forms\r\n $('#login').css('display', 'none');\r\n $('#reset').css('display', 'none');\r\n\r\n // hide password help options\r\n $('#resetPassword').css('display', 'none');\r\n $('#changePassword').css('display', 'none');\r\n\r\n // hide error and custom login text\r\n $('#error').css('display', 'none');\r\n $('#customLoginText').css('display', 'none');\r\n\r\n // display change form and back to login button\r\n $('#change').css('display', 'block');\r\n $('#backToLogin').css('display', 'flex');\r\n\r\n if ($.session.changePasswordLinkSelected === '') {\r\n $('#confirmMessage').text('Your password has expired. Please enter and confirm a new password.');\r\n } else if (reset) {\r\n $('#confirmMessage').text('Your message has been sent. Please reset password.');\r\n } else {\r\n $('#confirmMessage').text('Please enter and confirm a new password.');\r\n }\r\n}\r\n\r\nvar BrowserDetect = {\r\n init: function () {\r\n this.browser = this.searchString(this.dataBrowser) || 'An unknown browser';\r\n this.version =\r\n this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || 'an unknown version';\r\n this.OS = this.searchString(this.dataOS) || 'an unknown OS';\r\n },\r\n searchString: function (data) {\r\n for (var i = 0; i < data.length; i++) {\r\n var dataString = data[i].string;\r\n var dataProp = data[i].prop;\r\n this.versionSearchString = data[i].versionSearch || data[i].identity;\r\n if (dataString) {\r\n if (dataString.indexOf(data[i].subString) != -1) return data[i].identity;\r\n } else if (dataProp) return data[i].identity;\r\n }\r\n },\r\n searchVersion: function (dataString) {\r\n var index = dataString.indexOf(this.versionSearchString);\r\n if (index == -1) return;\r\n return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));\r\n },\r\n dataBrowser: [\r\n {\r\n string: navigator.userAgent,\r\n subString: 'Chrome',\r\n identity: 'Chrome',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'OmniWeb',\r\n versionSearch: 'OmniWeb/',\r\n identity: 'OmniWeb',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'Apple',\r\n identity: 'Safari',\r\n versionSearch: 'Version',\r\n },\r\n {\r\n prop: window.opera,\r\n identity: 'Opera',\r\n versionSearch: 'Version',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'iCab',\r\n identity: 'iCab',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'KDE',\r\n identity: 'Konqueror',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'Firefox',\r\n identity: 'Firefox',\r\n },\r\n {\r\n string: navigator.vendor,\r\n subString: 'Camino',\r\n identity: 'Camino',\r\n },\r\n {\r\n // for newer Netscapes (6+)\r\n string: navigator.userAgent,\r\n subString: 'Netscape',\r\n identity: 'Netscape',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'MSIE',\r\n identity: 'Explorer',\r\n versionSearch: 'MSIE',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'Gecko',\r\n identity: 'Mozilla',\r\n versionSearch: 'rv',\r\n },\r\n {\r\n // for older Netscapes (4-)\r\n string: navigator.userAgent,\r\n subString: 'Mozilla',\r\n identity: 'Netscape',\r\n versionSearch: 'Mozilla',\r\n },\r\n ],\r\n dataOS: [\r\n {\r\n string: navigator.platform,\r\n subString: 'Win',\r\n identity: 'Windows',\r\n },\r\n {\r\n string: navigator.platform,\r\n subString: 'Mac',\r\n identity: 'Mac',\r\n },\r\n {\r\n string: navigator.userAgent,\r\n subString: 'iPhone',\r\n identity: 'iPhone/iPod',\r\n },\r\n {\r\n string: navigator.platform,\r\n subString: 'Linux',\r\n identity: 'Linux',\r\n },\r\n ],\r\n};\r\n\r\n//if browser hasn't been filled in for this session fill it in.\r\nif ($.session.browser == '') {\r\n BrowserDetect.init();\r\n $.session.browser = BrowserDetect.browser;\r\n $.session.OS = BrowserDetect.OS;\r\n $.session.browserVer = BrowserDetect.version;\r\n}\r\n\r\nfunction convertMilitaryTimeToAMPM(inputTime) {\r\n var hour = '';\r\n var minute = '';\r\n var amPM = '';\r\n var convertedTime = '';\r\n if (inputTime.length < 5 && inputTime != '') {\r\n inputTime = '0' + inputTime;\r\n }\r\n // Parse the input time into hours and minutes:\r\n for (var i = 0; i < inputTime.length; i++) {\r\n if (isNaN(inputTime.charAt(i)) == false && inputTime.charAt(i) != ' ') {\r\n if (i < 2) {\r\n hour = hour + inputTime.charAt(i);\r\n }\r\n\r\n if (i == 3 || i == 4) {\r\n minute = minute + inputTime.charAt(i);\r\n }\r\n }\r\n }\r\n\r\n // Default to AM:\r\n amPM = 'AM';\r\n\r\n // If the hour = \"00\":\r\n if (hour == '00') {\r\n hour = '12';\r\n } else {\r\n // If the hour = \"12\":\r\n if (hour == '12') {\r\n // Set to PM:\r\n amPM = 'PM';\r\n }\r\n }\r\n\r\n // If the time is greater than Noon:\r\n if (hour > '12') {\r\n var x = +hour;\r\n x = x - 12;\r\n hour = String(x);\r\n\r\n // Set to PM:\r\n amPM = 'PM';\r\n }\r\n\r\n if (hour.length == 1) hour = '0' + hour;\r\n\r\n if (minute.length == 1) minute = '0' + minute;\r\n\r\n // Create the converted time:\r\n convertedTime = hour + ':' + minute + ' ' + amPM;\r\n\r\n return convertedTime;\r\n}\r\n\r\nfunction overClicky() {\r\n var now = new Date();\r\n var outStr = now.getHours() + now.getMinutes() + now.getSeconds();\r\n var last = $.session.lastMenuSelection;\r\n var lastStr = last.getHours() + last.getMinutes() + last.getSeconds();\r\n var compared = outStr - lastStr;\r\n\r\n compared = Math.abs(compared);\r\n\r\n if (compared < 2) return true;\r\n return false;\r\n}\r\n\r\nif (typeof String.prototype.startsWith != 'function') {\r\n // see below for better implementation!\r\n String.prototype.startsWith = function (str) {\r\n return this.indexOf(str) == 0;\r\n };\r\n}\r\n\r\nfunction IsPasswordStrong(password) {\r\n let preSpecialCharCheckString = $.session.passwordSpecialCharacters;\r\n // Remove the escapes, and re-add escapes after the string has been re-joined with commas.\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\\\\`, `\\\\`);\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\"`, `\"`);\r\n const specCharNoCommas = preSpecialCharCheckString.split('');\r\n let withCommas = specCharNoCommas.join((separator = ','));\r\n // Add in escapes\r\n withCommas = withCommas.replaceAll(`\\\\`, `\\\\\\\\`);\r\n withCommas = withCommas.replaceAll(`/`, `\\\\/`);\r\n withCommas = withCommas.replaceAll(`-`, `\\\\-`);\r\n withCommas = withCommas.replaceAll(`]`, `\\\\]`);\r\n withCommas = withCommas.replaceAll(`[`, `\\\\[`);\r\n const specChar = new RegExp(`[${withCommas}]`, 'g');\r\n\r\n if (password.length < $.session.advancedPasswordLength) return 0;\r\n if (!password.match(/[a-z]/) || !password.match(/[A-Z]/)) return 0;\r\n if (!password.match(specChar)) return 0;\r\n if (/\\d/.test(password) === false) return 0;\r\n\r\n return 1;\r\n}\r\n\r\nfunction checkChangePasswordLoginValues() {\r\n var user = document.getElementById('username2');\r\n var pass = document.getElementById('password2');\r\n var pass1 = document.getElementById('newpassword1');\r\n var pass2 = document.getElementById('newpassword2');\r\n\r\n if (user.value === '' || pass.value === '') {\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else if (pass1 === '' || pass2.value === '') {\r\n document.getElementById('changebutton').classList.add('disabled');\r\n } else {\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n }\r\n}\r\n\r\nfunction checkPass() {\r\n var user = document.getElementById('username2');\r\n var pass = document.getElementById('password2');\r\n var pass1 = document.getElementById('newpassword1');\r\n var pass2 = document.getElementById('newpassword2');\r\n var message = document.getElementById('confirmMessage');\r\n strongPassword = $.session.strongPassword;\r\n // PW Can't contain more than one backslash in a row\r\n if (pass1.value.match(/\\\\{2,}/g)) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text(`Your password can't contain more than one \\\\ in a row.`);\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else {\r\n $('#error').css('opacity', '0');\r\n $('#error').css('display', 'none');\r\n $('#errortext').text(``);\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n }\r\n\r\n //Extra condition for whether or not a strong password is required\r\n if (strongPassword === 'N') {\r\n if (pass1.value === '' || pass2.value === '' || user.value === '' || pass.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n return 1;\r\n }\r\n } else {\r\n //if both are null\r\n if (pass1.value.length === 0 && pass2.value.length === 0 && $.session.changePasswordLinkSelected === '') {\r\n message.innerHTML = 'Your password has expired, please enter and confirm a new password.';\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //is password strong?\r\n if (IsPasswordStrong(pass1.value) !== 1) {\r\n // specialCharDisplay. Remove the escape from backslash and quote.\r\n let specialCharDisplay = $.session.passwordSpecialCharacters.replaceAll(`\\\\\\\\`, `\\\\`);\r\n specialCharDisplay = specialCharDisplay.replaceAll(`\\\\\"`, `\"`);\r\n message.innerHTML = `\r\n Passwords must meet all of the following requirements: Be at least ${$.session.advancedPasswordLength} characters long, \r\n have a special character (${specialCharDisplay}), have a number, and include upper and lower case letters.\r\n `;\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //passwords match?\r\n if (pass1.value === '' || pass2.value === '' || user.value === '' || pass.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n }\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('changebutton').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('changebutton').classList.remove('disabled');\r\n return 1;\r\n }\r\n }\r\n}\r\n\r\nDate.prototype.monthNames = [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n];\r\n\r\nDate.prototype.getMonthName = function () {\r\n return this.monthNames[this.getMonth()];\r\n};\r\nDate.prototype.getShortMonthName = function () {\r\n return this.getMonthName().substr(0, 3);\r\n};\r\n\r\n// function loadSettings() {\r\n// \tvar settingsBox = $(\"#settingsbox\");\r\n// \tvar helpBox = $(\"#helpbox\");\r\n\r\n// \tif (settingsBox[0].style.display === 'none') {\r\n// \t\thelpBox.css(\"display\", \"none\");\r\n// \t\tsettingsBox.css(\"display\", \"block\");\r\n// \t} else {\r\n// \t\tsettingsBox.css(\"display\", \"none\");\r\n// \t}\r\n\r\n// $(\"#consumerclockinhelp\").remove();\r\n// $(\".consumerclockinhelptriangle\").remove();\r\n// $(\"#goalshelp\").remove();\r\n// $(\".hrtriangleright\").remove();\r\n// firstLoad = false;\r\n// }\r\n\r\n// function loadHelp() {\r\n// $(\"#settingsbox\").css(\"display\", \"none\");\r\n// $(\"#helpbox\").css(\"display\", \"block\");\r\n// $(\"#consumerclockinhelp\").remove();\r\n// $(\".consumerclockinhelptriangle\").remove();\r\n// $(\"#goalshelp\").remove();\r\n// $(\".hrtriangleright\").remove();\r\n// }\r\n\r\nfunction setDefaultValue(type, value, event, name) {\r\n event.stopPropagation();\r\n var mySrc = $(event.srcElement);\r\n mySrc.parents('locationpopupbox').hide();\r\n var typeName = '';\r\n var switchCase = 0;\r\n switch (type) {\r\n case 1:\r\n typeName = 'Default Staff Location';\r\n $('#0').text(event.srcElement.text);\r\n break;\r\n case 2:\r\n typeName = 'Default Roster Location';\r\n $('#1').text(event.srcElement.text);\r\n createCookie('defaultRosterGroupName', 'Everyone', 7);\r\n createCookie('defaultRosterGroupValue', 'ALL', 7);\r\n saveDefaultLocationNameAjax('6', 'Everyone');\r\n saveDefaultLocationValueAjax('6', 'ALL');\r\n $('#rostergroup6').text('Everyone');\r\n if (value != 0 && name != null) {\r\n getConsumerGroups(value, name);\r\n $.session.defaultRosterLocation = value;\r\n createCookie('defaultRosterLocationName', name, 7);\r\n saveDefaultLocationNameAjax('2', name);\r\n } else {\r\n createCookie('defaultRosterLocationName', 'Remember Last Location', 7);\r\n saveDefaultLocationNameAjax('2', 'Remember Last Location');\r\n }\r\n break;\r\n case 3:\r\n typeName = 'Default Day Service Location';\r\n $('#2').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultDayServiceLocationName', name, 7);\r\n createCookie('defaultDayServiceLocationNameValue', value, 7);\r\n createCookie('defaultDayServiceLocationFlag', false, 7);\r\n saveDefaultLocationNameAjax('3', name);\r\n saveDefaultLocationValueAjax('3', value);\r\n $.session.defaultDayServiceLocationFlag = 'false';\r\n $.session.dsLocationHistoryFlag = false;\r\n } else {\r\n var test = $(this).text();\r\n saveDefaultLocationNameAjax('3', 'Remember Last Location');\r\n if (name == null) {\r\n createCookie('defaultDayServiceLocationFlag', true, 7);\r\n $.session.defaultDayServiceLocationFlag = 'true';\r\n }\r\n }\r\n break;\r\n case 4:\r\n typeName = 'Default Time Clock Location';\r\n $('#timeclock4').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultTimeClockLocationName', name, 7);\r\n createCookie('defaultTimeClockLocationValue', value, 7);\r\n saveDefaultLocationNameAjax('4', name);\r\n saveDefaultLocationValueAjax('4', value);\r\n } else {\r\n }\r\n //New way to save to the database\r\n switchCase = '4';\r\n saveDefaultLocationValueAjax(switchCase, value);\r\n break;\r\n case 5:\r\n typeName = 'Default Workshop Location';\r\n $('#workshop5').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultWorkshopLocationName', name, 7);\r\n createCookie('defaultWorkshopLocationValue', value, 7);\r\n saveDefaultLocationNameAjax('5', name);\r\n saveDefaultLocationValueAjax('5', value);\r\n } else {\r\n createCookie('defaultWorkshopLocationName', 'Remember Last Location', 7);\r\n saveDefaultLocationNameAjax('5', 'Remember Last Location');\r\n }\r\n break;\r\n case 6:\r\n typeName = 'Default Roster Group';\r\n $('#rostergroup6').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultRosterGroupName', name, 7);\r\n createCookie('defaultRosterGroupValue', value, 7);\r\n saveDefaultLocationNameAjax('6', name);\r\n saveDefaultLocationValueAjax('6', value);\r\n } else {\r\n createCookie('defaultRosterGroupName', 'Everyone', 7);\r\n saveDefaultLocationNameAjax('6', 'Everyone');\r\n }\r\n break;\r\n case 7:\r\n typeName = 'Default MoneyManagement Location';\r\n $('#moneyManagement7').text(event.srcElement.text);\r\n if (value != 0 && name != null) {\r\n createCookie('defaultMoneyManagementLocationName', name, 7);\r\n createCookie('defaultMoneyManagementLocationValue', value, 7);\r\n saveDefaultLocationNameAjax('7', name);\r\n saveDefaultLocationValueAjax('7', value);\r\n } else {\r\n createCookie('defaultMoneyManagementLocationName', 'Remember Last Location', 7);\r\n saveDefaultLocationNameAjax('7', 'Remember Last Location');\r\n }\r\n break;\r\n }\r\n\r\n setDefaultLoc(type, value);\r\n}\r\n\r\nfunction tabletFocus(event) {\r\n var inputId;\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n inputId = event.srcElement.id;\r\n } else {\r\n inputId = event.target.id;\r\n }\r\n $('#' + inputId).focus();\r\n}\r\n\r\n// function browserSpecificEnabled() {\r\n// //this code is to add css classes for browser specific css\r\n// //not sure why ie11 says its mozilla and not msie??\r\n// if ($.browser.mozilla && $.browser.version == 11) {\r\n// $(\"html\").addClass(\"ie11\");\r\n// }\r\n// if ($.browser.msie && $.browser.version == 10) {\r\n// $(\"html\").addClass(\"ie10\");\r\n// }\r\n// }\r\n\r\nfunction customTextVersionWork(res) {\r\n var customText = '';\r\n $('results', res).each(function () {\r\n customText = $('customtext', this).text();\r\n $.session.ver = $('anywhereversion', this).text();\r\n });\r\n $(ver).text($.session.ver);\r\n if (customText != '') {\r\n $('#customLoginText').text(customText);\r\n } else {\r\n $('#customLoginText').text(\r\n 'Primary Solutions, in conjunction with amazing people like you, has built a new product from the ground up that ' +\r\n \"focuses on ease of use so that you can focus on what's really important.\",\r\n );\r\n }\r\n}\r\n\r\nfunction checkVersions() {\r\n if ($.session.ver != $.session.version) {\r\n updateVersionAjax($.session.version);\r\n }\r\n}\r\n\r\nfunction getFormattedTime1(fullDate) {\r\n hours = fullDate.getHours();\r\n if (hours.toString().length == 1) {\r\n hours = '0' + hours;\r\n }\r\n min = fullDate.getMinutes();\r\n if (min.toString().length == 1) {\r\n min = '0' + min;\r\n }\r\n time = hours + ':' + min;\r\n time = convertMilitaryTimeToAMPM(time);\r\n time = time.replace('AM', '').replace('PM', '').replace(' ', '');\r\n return time;\r\n}\r\n\r\nfunction getAMPM(fullDate) {\r\n var ampm = '';\r\n hours = fullDate.getHours();\r\n if (hours.toString().length == 1) {\r\n hours = '0' + hours;\r\n }\r\n time = hours + ':' + fullDate.getMinutes();\r\n time = convertMilitaryTimeToAMPM(time);\r\n if (time.indexOf('AM') != -1) {\r\n ampm = 'AM';\r\n } else {\r\n ampm = 'PM';\r\n }\r\n return ampm;\r\n}\r\n\r\n//This is the function that was allowing access to the site. Going to probably need changed now.\r\nfunction allowAccess(res) {\r\n var testInt = 0;\r\n $('result', res).each(function () {\r\n testInt = $('id', this).text();\r\n });\r\n if (testInt > 0) {\r\n eraseCookie('id');\r\n createCookie('id', testInt, 1);\r\n document.location.href = 'infalAnywhere.html';\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n}\r\n\r\nfunction checkModulePermissions() {\r\n if ($.session.DayServiceView == false) {\r\n $('#dayservicesettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.GoalsView == false) {\r\n $('#goalssettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.CaseNotesView == false || $.session.CaseNotesTablePermissionView == false) {\r\n $('#casenotessettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.SingleEntryView == false) {\r\n $('#singleentrysettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.WorkshopView == false) {\r\n $('#workshopsettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.incidentTrackingView == false) {\r\n $('#incidenttrackingsettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.schedulingView == false) {\r\n $('#schedulersettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.authorizationsView == false) {\r\n $('#authorizationsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.planView == false) {\r\n $('#plansettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.transportationView == false) {\r\n $('#transportationsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.emarView == false) {\r\n $('#emarsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.formsView == false) {\r\n $('#PDFFormssettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.OODView == false) {\r\n $('#OODsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.ResetPasswordView == false) {\r\n $('#Adminsettingdiv').addClass('disabledModule');\r\n }\r\n if ($.session.EmploymentView == false) {\r\n $('#Employmentsettingsdiv').addClass('disabledModule');\r\n }\r\n if ($.session.CFView == false) {\r\n $('#cfAccountDiv').addClass('disabledModule');\r\n }\r\n if ($.session.CFViewEditAccounts == false) {\r\n $('#cfEditAccountDiv').addClass('disabledModule');\r\n }\r\n\r\n if ($.session.CFView == false && $.session.CFViewEditAccounts == false) {\r\n $('#consumerfinancessettingsdiv').addClass('disabledModule');\r\n }\r\n\r\n $('#adminsingleentrysettingsdiv').hide();\r\n if ($.session.ViewAdminSingleEntry === true) {\r\n if ($.session.SEViewAdminWidget === true) {\r\n $('#adminsingleentrysettingsdiv').show();\r\n }\r\n }\r\n}\r\n\r\nfunction disableModules() {\r\n if ($.session.applicationName == 'Gatekeeper') {\r\n $('#singleentrysettingsdiv').css('display', 'none');\r\n $('#adminsingleentrysettingsdiv').css('display', 'none');\r\n $('#transportationsettingsdiv').css('display', 'none');\r\n $('#OODsettingsdiv').css('display', 'none');\r\n\r\n $('#customlinks').css('display', 'none');\r\n }\r\n\r\n if ($.session.applicationName == 'Advisor') {\r\n $('#authorizationsdiv').css('display', 'none');\r\n $('#waitingListdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.dayServicesPermission == 'Anywhere_DayServices') {\r\n // leave module on\r\n } else {\r\n $('#dayservicesettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.outcomesPermission == 'Anywhere_Outcomes') {\r\n // leave module on\r\n } else {\r\n $('#goalssettingsdiv').css('display', 'none');\r\n //MAT - commented this out because it is in wrong spot.\r\n //$(\"#singlebuttondiv\").css(\"display\", \"none\");\r\n }\r\n\r\n if ($.session.workshopPermission == 'Anywhere_Workshop') {\r\n // leave module on\r\n } else {\r\n $('#workshopsettingsdiv').hide();\r\n }\r\n\r\n if ($.session.intellivuePermission == 'Intellivue') {\r\n // leave module on\r\n } else {\r\n $('#intellivuesettingsdiv').hide();\r\n }\r\n\r\n if ($.session.caseNotesPermission == 'Anywhere_CaseNotes') {\r\n // leave module on\r\n } else {\r\n $('#casenotessettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.singleEntryPermission == 'Anywhere_SingleEntry') {\r\n // leave module on\r\n } else {\r\n $('#singleentrysettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.singleEntryApproveEnabled == 'Y') {\r\n //Leave module on\r\n } else {\r\n //$(\"#adminsingleentrysettingsdiv\").css(\"display\", \"none\");\r\n }\r\n\r\n if ($.session.incidentTrackingPermission == 'Anywhere_Incident_Tracking') {\r\n //Leave module on\r\n } else {\r\n $('#incidenttrackingsettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereSchedulingPermission == 'Anywhere_Scheduling') {\r\n //Leave module on\r\n } else {\r\n $('#schedulersettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.covidPermission == 'COVID_19') {\r\n //Leave module on\r\n } else {\r\n $('#covidchecklistsettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.transportationPermission == 'Anywhere_Transportation') {\r\n //Leave module on\r\n } else {\r\n $('#transportationsettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.emarPermission == 'Anywhere_eMAR') {\r\n //Leave module on\r\n } else {\r\n $('#emarsettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.formsPermission == 'Anywhere_Forms') {\r\n //Leave module on\r\n } else {\r\n $('#PDFFormssettingsdiv').css('display', 'none');\r\n }\r\n if ($.session.OODPermission == 'Anywhere_OOD') {\r\n //Leave module on\r\n } else {\r\n $('#OODsettingsdiv').css('display', 'none');\r\n }\r\n //if (($.session.passwordResetPermission = 'Anywhere')) {\r\n // //\r\n // //Leave module on\r\n //} else {\r\n // $('#Adminsettingdiv').css('display', 'none');\r\n //}\r\n // TODO: ASH\r\n // if ($.session.anywhereAuthorizationsPermission == 'Anywhere_Authorizations') {\r\n // //Leave module on\r\n // } else {\r\n // $('#authorizationsdiv').css('display', 'none');\r\n // }\r\n if ($.session.anywherePlanPermission == 'Anywhere_Plan') {\r\n //Leave module on\r\n } else {\r\n $('#plansettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereResetPasswordPermission == 'Anywhere_Administration') {\r\n //Leave module on\r\n } else {\r\n $('#Adminsettingdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereConsumerFinancesPermission == 'Anywhere_Consumer_Finances') {\r\n //Leave module on\r\n } else {\r\n $('#consumerfinancessettingsdiv').css('display', 'none');\r\n }\r\n\r\n if ($.session.anywhereEmploymentPermission == 'Anywhere_Employment') {\r\n //Leave module on\r\n } else {\r\n $('#Employmentsettingsdiv').css('display', 'none');\r\n }\r\n}\r\n\r\nfunction setUpAdminPermissions() {\r\n $.session.DayServiceView = true;\r\n $.session.DayServiceInsert = true;\r\n $.session.DayServiceUpdate = true;\r\n $.session.DayServiceDelete = true;\r\n $.session.DayServiceNonBillable = true;\r\n $.session.DayServiceOverRide = true;\r\n $.session.DenyStaffClockUpdate = false;\r\n $.session.DenyClockUpdate = false;\r\n $.session.DemographicsView = true;\r\n $.session.DemographicsBasicDataView = true;\r\n $.session.DemographicsRelationshipsView = true;\r\n $.session.DemographicsPictureUpdate = true;\r\n $.session.DemographicsNotesView = true;\r\n $.session.GoalsView = true;\r\n $.session.GoalsUpdate = true;\r\n $.session.CaseNotesView = true;\r\n $.session.CaseNotesTablePermissionView = true;\r\n $.session.CaseNotesUpdate = true;\r\n $.session.CaseNotesCaseloadRestriction = false;\r\n $.session.SingleEntryView = true;\r\n $.session.SingleEntryUpdate = true;\r\n $.session.caseNoteEditSecond = true;\r\n $.session.caseNoteDisplayGroupNoteDivPreference = true;\r\n $.session.caseNoteDisplayGroupNoteCheckedPreference = true;\r\n $.session.updateAllGroupDropDowns = true;\r\n $.session.changeFromSingleToGroupNote = true;\r\n $.session.UpdateCaseNotesDocTime = true;\r\n $.session.anAdmin = true;\r\n $.session.ViewAdminSingleEntry = true;\r\n $.session.CaseNotesViewEntered = false;\r\n $.session.CaseNotesSSANotes = false;\r\n $.session.schedulingUpdate = true;\r\n $.session.schedulingView = true;\r\n $.session.schedulingStartDayOfWeek = 0;\r\n $.session.schedAllowCallOffRequests = 'N';\r\n $.session.schedRequestOpenShifts = 'N';\r\n}\r\n","function generateURL(endPoint) {\r\n return `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/${endPoint}/`;\r\n}\r\n\r\nfunction logIn() {\r\n const loginBtn = document.getElementById('loginBtn');\r\n loginBtn.classList.add('disabled');\r\n //need to check if code exists on device, pass either it or empty string\r\n const userId = $('#username').val().trim();\r\n const localDeviceId = UTIL.LS.getStorage('device', userId);\r\n const insertData = {\r\n userId: userId,\r\n hash: $().crypt({\r\n method: 'md5',\r\n source: $('#password1').val().trim()\r\n }),\r\n deviceId: localDeviceId ? localDeviceId : ''\r\n };\r\n var success = false;\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLogIn/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n beforeSend: function () {\r\n // show gif here, eg:\r\n $('body').css('cursor', 'wait');\r\n },\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n loginBtn.classList.remove('disabled');\r\n const res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tPlease enter a valid username. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n const resXML = response.getLogInResult && UTIL.parseXml(response.getLogInResult);\r\n if (resXML) {\r\n const windowName = resXML.getElementsByTagName('window_name')[0];\r\n if (windowName && windowName.innerHTML === 'Failed attempts') {\r\n const count = resXML.getElementsByTagName('special_data')[0].innerHTML;\r\n // $('#error').css('opacity', '1');\r\n // $('#error').css('display', 'block');\r\n // $('#errortext').text('Invalid username/password combination');\r\n\r\n const overlay = document.querySelector('.overlay');\r\n const loginWarningPopup = POPUP.build({\r\n id: 'loginPopup',\r\n hideX: true\r\n });\r\n const okButton = button.build({\r\n text: 'ok',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n overlay.classList.remove('visible');\r\n document.body.removeChild(loginWarningPopup);\r\n document.getElementById('password1').value = '';\r\n document.getElementById('password1').focus();\r\n }\r\n });\r\n const message = document.createElement('p');\r\n switch (count) {\r\n case '1':\r\n {\r\n message.innerHTML = `Invalid user name or password.`;\r\n break;\r\n }\r\n case '2':\r\n {\r\n message.innerHTML = `This is your second failed login attempt. If you have one more failed attempt your account will become inactive. Please use the Forgot Password link below to reset your password.`;\r\n break;\r\n }\r\n case '3':\r\n {\r\n message.innerHTML = `Your account is inactive due to the number of failed login attempts. Please contact your System Administrator to enable your account.`;\r\n break;\r\n }\r\n default:\r\n {\r\n message.innerHTML = `Your account is inactive due to the number of failed login attempts. Please contact your System Administrator to enable your account.`;\r\n }\r\n }\r\n loginWarningPopup.appendChild(message);\r\n loginWarningPopup.appendChild(okButton);\r\n overlay.classList.add('visible');\r\n document.body.appendChild(loginWarningPopup);\r\n okButton.focus();\r\n } else if (windowName && windowName.innerHTML === 'Not active') {\r\n const overlay = document.querySelector('.overlay');\r\n const loginWarningPopup = POPUP.build({\r\n id: 'loginPopup',\r\n hideX: true\r\n });\r\n const okButton = button.build({\r\n text: 'ok',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n overlay.classList.remove('visible');\r\n document.body.removeChild(loginWarningPopup);\r\n //document.getElementById(\"username\").value = '';\r\n document.getElementById('password1').value = '';\r\n document.getElementById('username').focus();\r\n }\r\n });\r\n const message = document.createElement('p');\r\n message.innerHTML = `Your account is inactive. Please contact your System Administrator to enable your account.`;\r\n loginWarningPopup.appendChild(message);\r\n loginWarningPopup.appendChild(okButton);\r\n overlay.classList.add('visible');\r\n document.body.appendChild(loginWarningPopup);\r\n okButton.focus();\r\n } else if (windowName && windowName.innerHTML === 'Invalid username') {\r\n const overlay = document.querySelector('.overlay');\r\n const loginWarningPopup = POPUP.build({\r\n id: 'loginPopup',\r\n hideX: true\r\n });\r\n const username = document.getElementById('username').value;\r\n const okButton = button.build({\r\n text: 'ok',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n overlay.classList.remove('visible');\r\n document.body.removeChild(loginWarningPopup);\r\n //document.getElementById(\"username\").value = '';\r\n document.getElementById('password1').value = '';\r\n document.getElementById('username').focus();\r\n }\r\n });\r\n const message = document.createElement('p');\r\n message.innerHTML = `Invalid user name or password.`;\r\n loginWarningPopup.appendChild(message);\r\n loginWarningPopup.appendChild(okButton);\r\n overlay.classList.add('visible');\r\n document.body.appendChild(loginWarningPopup);\r\n okButton.focus();\r\n } else {\r\n if (windowName && windowName.innerHTML === '2FA') {\r\n //Call below method from the popup. insertData must userName and genKey\r\n const deviceId = resXML.getElementsByTagName('special_data')[0].innerHTML;\r\n //const deviceId = JSON.parse(response.getLogInResult)[0]['@deviceGUID'];\r\n if (localDeviceId !== deviceId) {\r\n // UTIL.LS.setStorage('device', deviceId, userId);\r\n $.session.deviceGUID = deviceId;\r\n mfa.init();\r\n } else {\r\n eraseCookie('psiuser');\r\n var overlay = document.createElement('div');\r\n if ($('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n }\r\n }\r\n //authenticatedLogin();\r\n } else if (windowName && windowName.innerHTML === 'Invalid username') {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('Invalid username/password combination');\r\n } else if (res.indexOf('Invalid password') != -1) {\r\n //never will be hit, needs removed\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('Invalid password attempt 1');\r\n } else if (windowName && windowName.innerHTML === 'No demographics record') {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n $('#errortext').text('There is no Name in Demographics defined for your user. Please contact your system administrator to login to Anywhere.');\r\n } else if (windowName && windowName.innerHTML === 'No recipient') {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n Two-Factor authentication is enabled for your organization.\r\n There was no valid email address or cell phone number found for your account.\r\n Please contact your system administrator to login to Anywhere. \r\n `;\r\n $('#errortext').text(message);\r\n } else if (windowName && windowName.innerHTML === 'Expired password') {\r\n customPasswordChange();\r\n } else {\r\n //errorMessage = \"\";\r\n //alert('success: ' + res);\r\n eraseCookie('psiuser');\r\n var overlay = document.createElement('div');\r\n if ($('permissions', res).is('*') && $('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if (res.indexOf('609') > -1) {\r\n //$(\"#error\").css(\"display\", \"block\");\r\n //checkForErrors();\r\n customPasswordChange();\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else if (res.indexOf('608') > -1) {\r\n $('#errortext').text('This user name does not exist in demographics.');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n },\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n }\r\n });\r\n //postError(\"100\", \"This is a tricky error\", \"DEBUG\");\r\n}\r\n\r\n//Shared functionality of log in for use with change password, because of the ids for username and password on the forms\r\nfunction logInChangePassword() {\r\n var success = false;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLogIn/',\r\n data:\r\n '{\"userId\":\"' +\r\n $('#username2').val() +\r\n '\", \"hash\":\"' +\r\n $().crypt({\r\n method: 'md5',\r\n source: $('#newpassword2').val(),\r\n }) +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n beforeSend: function () {\r\n // show gif here, eg:\r\n $('body').css('cursor', 'wait');\r\n },\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //errorMessage = \"\";\r\n //alert('success: ' + res);\r\n eraseCookie('psiuser');\r\n var overlay = document.createElement('div');\r\n if ($('permissions', res).is('*') && $('#username2').val().toUpperCase() == 'PSI') {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n createCookie('psiuser', res, 1);\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n },\r\n error: function (xhr, status, error) {},\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n },\r\n });\r\n //postError(\"100\", \"This is a tricky error\", \"DEBUG\");\r\n}\r\n\r\nfunction patchIt() {\r\n logIn();\r\n}\r\n\r\n//Added to get value as to whether or not a strong password is required and the length of password required\r\nfunction strongPasswordValue() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStrongPassword/',\r\n data: '{}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //Had to do this way because both fields are in database under same column name in system settings\r\n var passwordInfo = $('results', res);\r\n $.session.strongPassword = passwordInfo[0].innerText;\r\n $.session.passwordSpecialCharacters = passwordInfo[1].innerText;\r\n $.session.advancedPasswordLength = passwordInfo[2].innerText;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\nasync function setESignaturesMessage() {\r\n // Function to handle sending the code\r\n async function sendCode(newCode) {\r\n sendBtn.textContent = 'Sending code...';\r\n sendBtn.style.backgroundColor = '#cccccc'; \r\n \r\n try {\r\n // Retrieve user's current position\r\n const position = await new Promise((resolve, reject) => {\r\n navigator.geolocation.getCurrentPosition(resolve, reject);\r\n });\r\n \r\n const { latitude, longitude } = position.coords;\r\n\r\n //sends the code to the signers email with latitude and longitude\r\n const generatedCodeSuccessfully = await _UTIL.fetchData('generateAuthenticationCode', { tempUserId, latitude, longitude });\r\n\r\n // Update the html on the login page\r\n if (generatedCodeSuccessfully.generateAuthenticationCodeResult === 'success') {\r\n updateHTMLAfterCodeSent();\r\n\r\n if (newCode) {\r\n const newCodeMessageDiv = document.getElementById('eSignErrorMessage');\r\n newCodeMessageDiv.innerText = 'A new code has been sent to your email';\r\n }\r\n } else {\r\n popupMessageText.textContent = 'Incorrect Code: Please try again.';\r\n }\r\n } catch (error) {\r\n // Handle errors when accessing geolocation\r\n console.error('Error accessing geolocation:', error.message);\r\n }\r\n}\r\n\r\n\r\n const params = new URLSearchParams(window.location.search);\r\n\r\n // Get the value of the \"TempUser\" parameter\r\n const tempUserId = params.get('tempUser');\r\n\r\n const loginMessageData = await _UTIL.fetchData('getSignerLoginMessageData', { tempUserId });\r\n let redactedName = loginMessageData.getSignerLoginMessageDataResult.maskedFirstName + ' ' + loginMessageData.getSignerLoginMessageDataResult.maskedLastName;\r\n let signerEmail = loginMessageData.getSignerLoginMessageDataResult.tempUserEmail;\r\n\r\n let messageDiv = document.getElementById('redactedNamesMessage');\r\n\r\n let popupMessageText = document.createElement('p')\r\n popupMessageText.textContent = \r\n `The document shared with you contains information about ${redactedName}. To confirm your identity\r\n we'll send a code to ${signerEmail}.`;\r\n\r\n const sendBtn = button.build({\r\n id: 'sendCodeBtn',\r\n text: 'Send Code',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn-login'],\r\n callback: () => {\r\n sendCode();\r\n },\r\n });\r\n\r\n messageDiv.appendChild(popupMessageText);\r\n messageDiv.appendChild(sendBtn);\r\n\r\n // Function to update HTML after sending the code\r\n function updateHTMLAfterCodeSent() {\r\n // Update the inner HTML\r\n messageDiv.innerHTML =\r\n `

\r\n The document shared with you contains information about ${redactedName}. To open the document, enter the code we just emailed to ${signerEmail}.\r\n

\r\n

\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n // Get the verifyCodeBtnWrap div\r\n const verifyCodeBtnWrap = document.querySelector('.verifyCodeBtnWrap');\r\n\r\n // Create and append the buttons\r\n\r\n const sendCodeAgainBtn = button.build({\r\n id: 'sendCodeBtn',\r\n text: 'Send Code Again',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: [],\r\n callback: () => {\r\n sendCode(true);\r\n },\r\n });\r\n verifyCodeBtnWrap.appendChild(sendCodeAgainBtn);\r\n\r\n const verifyBtn = button.build({\r\n id: 'verifyCodeBtn',\r\n text: 'Verify',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn-login'],\r\n callback: () => {\r\n checkVerificationCode(tempUserId);\r\n },\r\n });\r\n\r\n verifyCodeBtnWrap.appendChild(verifyBtn);\r\n }\r\n\r\n}\r\n\r\nasync function checkVerificationCode(tempUserId) {\r\n const passwordInput = document.getElementById('verificationCode').value;\r\n\r\n // Hash the value using MD5\r\n const hashedPassword = $().crypt({\r\n method: 'md5',\r\n source: passwordInput\r\n });\r\n const codeVerification = await _UTIL.fetchData('verifyESignLogin', { tempUserId, hashedPassword });\r\n \r\n if (codeVerification.verifyESignLoginResult === 'Success') {\r\n document.querySelector('main').innerHTML = '';\r\n // open the E-Signature form \r\n esignatures.init(tempUserId); \r\n } else {\r\n // Display the error or reason for failure\r\n const errorMessageDiv = document.getElementById('eSignErrorMessage');\r\n errorMessageDiv.innerText = codeVerification.verifyESignLoginResult;\r\n }\r\n}\r\n\r\nfunction getCustomLoginTextAndVersion(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCustomTextAndAnywhereVersion/',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomTextAndAnywhereVersionResult.replace(/\\r/g, '').replace(/\\n/g, '
');\r\n //var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n $('#customLoginText').text(\r\n 'Primary Solutions, in conjunction with amazing people like you, has built a new product from the ground up that ' +\r\n \"focuses on ease of use so that you can focus on what's really important.\",\r\n );\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\nfunction changeIt() {\r\n const changeBtn = document.getElementById('changebutton');\r\n changeBtn.classList.add('disabled');\r\n if (checkPass() == 0) return;\r\n //changeBtn.classList.add('disabled');\r\n let newPW = $('#newpassword1').val();\r\n newPW = newPW.replaceAll(`\\\\`, `\\\\\\\\`);\r\n newPW = newPW.replaceAll(`\"`, `\\\\\"`);\r\n newPW = newPW.replaceAll(`'`, `''`);\r\n var success = false;\r\n let passwordChangeError = false;\r\n let inactiveUser = false;\r\n let passwordReuseError = false;\r\n // blur focus to prevent messages from getting removed too quickly\r\n document.activeElement.blur();\r\n //alert('patchIt');\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/changeLogIn/',\r\n data: '{\"userId\":\"' + $('#username2').val() + '\", \"hash\":\"' + $().crypt({\r\n method: 'md5',\r\n source: $('#password2').val()\r\n }) + '\", \"newPassword\":\"' + newPW + '\", \"changingToHashPassword\":\"' + $().crypt({\r\n method: 'md5',\r\n source: $('#newpassword1').val()\r\n }) + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n passwordChangeError = true;\r\n return;\r\n }\r\n //alert('success: ' + res);\r\n if (res.indexOf('Not active') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n inactiveUser = true;\r\n return;\r\n }\r\n if (res.indexOf('Error:611') > -1) {\r\n passwordReuseError = true;\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour new password does not meet your organizations password reuse rules. Please use a different password.\r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n } else if (res.indexOf('Error:610') > -1) {\r\n passwordChangeError = true;\r\n $('#error').addClass('userInputError');\r\n $('#error').removeClass('hippaRestriction');\r\n } else {\r\n $('#error').removeClass('hippaRestriction');\r\n $('#error').removeClass('userInputError');\r\n }\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n complete: function () {\r\n changeBtn.classList.remove('disabled');\r\n if (inactiveUser || passwordReuseError) {\r\n return;\r\n }\r\n if (passwordChangeError) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tInvalid user name or password. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n overlay.init();\r\n $('#password1').val($('#newpassword1').val());\r\n const mainElement = document.getElementsByTagName('main')[0];\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n mainElement.removeChild(passwordChangeConfPOPUP);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(passwordChangeConfPOPUP);\r\n document.body.style.overflow = 'visible';\r\n backToLoginPage();\r\n }\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'Password has been changed. You may now log in with your new password.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(passwordChangeConfPOPUP);\r\n // show overlay\r\n const overlayElement = document.querySelector('.overlay');\r\n overlayElement.style.zIndex = '2';\r\n passwordChangeConfPOPUP.style.zIndex = '3';\r\n passwordChangeConfPOPUP.style.top = '40%';\r\n overlay.show();\r\n mainElement.appendChild(passwordChangeConfPOPUP);\r\n // focus on ok button\r\n okBtn.focus();\r\n }\r\n });\r\n}\r\n\r\nfunction resetIt() {\r\n if ($.session.changeEmailSent) {\r\n return;\r\n }\r\n $('#resetButton').prop('disabled', true);\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/setupPasswordResetEmail/',\r\n data: '{\"userName\":\"' + $('#username3').val() + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tPlease enter a valid username. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n if (res.indexOf('Inactive user') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n if (res.indexOf('No recipient') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tThere was no valid email address found for your account.\r\n\t\t\t\tPlease contact your system administrator to login to Anywhere. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n setUpPasswordResetMessages(res);\r\n $('#resetButton').prop('disabled', false);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n }\r\n });\r\n}\r\n\r\nfunction tokenCheck() {\r\n var success = false;\r\n //alert('checking token');\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/tokenCheck/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //alert('success: ' + res);\r\n if (res.indexOf('607') > -1 || res.indexOf('606') > -1) {\r\n document.location.href = 'login.html';\r\n } else {\r\n success = true;\r\n }\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction postError(errNum, errMsg, errLvl) {\r\n var d = new Date();\r\n var curr_month = d.getMonth() + 1; //Months are zero based\r\n var strDate = d.getDate() + '-' + curr_month + '-' + d.getFullYear() + ' ' + d.getHours() + ':' + d.getMinutes();\r\n var dataString =\r\n 't=' +\r\n strDate +\r\n '&l=' +\r\n 'client' +\r\n '&u=' +\r\n $.session.Name +\r\n ' ' +\r\n $.session.LName +\r\n '&en=' +\r\n errNum +\r\n '&em=' +\r\n errMsg +\r\n '&s=' +\r\n errLvl;\r\n //$.ajax({\r\n // type: \"POST\",\r\n // url: http://anyerr.primarysolutions.net/Default.aspx, //$.webServer.anyerr,\r\n // data: dataString,\r\n // success: function() {\r\n // }\r\n //});\r\n}\r\n\r\nfunction saveDefaultLocationValueAjax(switchCase, locationId) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveDefaultLocationValue/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction saveDefaultLocationNameAjax(switchCase, locationName) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveDefaultLocationName/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationName\":\"' + locationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction updateVersionAjax() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateVersion/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"version\":\"' + $.session.version + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\n//Infal login. Will look differently and possibly be moved. Putting here for functionality tests.\r\nfunction checkLogin() {\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/ValidateLogin/',\r\n data: '{\"id\":\"' + $('#userIDInfal').val() + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n allowAccess(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\n//Going to call on login to see if a connection for Infal exists in the webconfig\r\nfunction checkInfalConnectionAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/CheckInfalConnection/',\r\n data: '{}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (response.CheckInfalConnectionResult == 'Connection') {\r\n $.session.infalHasConnectionString = true;\r\n }\r\n if ($.session.infalOnly) {\r\n dashboard.load();\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n}\r\n\r\n//Gets user permissions pertaining to what modules they can see.\r\nfunction getUserPermissions(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserPermissions/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n\r\n $.session.permissionString = response.getUserPermissionsResult;\r\n\r\n const caseNotesPerm = $.session.permissionString.find(obj => obj.window_name === 'EnableCaseNotes');\r\n const supervisorPerm = $.session.permissionString.find(obj => obj.window_name === 'Supervisor');\r\n const docTimePerm = $.session.permissionString.find(obj => obj.window_name === 'UpdateDocTime');\r\n const caseNoteDocTimePerm = $.session.permissionString.find(obj => obj.window_name === 'Anywhere Case Notes');\r\n const adminSEPerm = $.session.permissionString.find(obj => obj.window_name === 'SESupervisorApprove');\r\n\r\n $.session.CaseNotesTablePermissionView = caseNotesPerm && caseNotesPerm.permission === 'Y' ? true : false;\r\n $.session.ViewAdminSingleEntry = supervisorPerm && supervisorPerm.permission === 'Y' ? true : false;\r\n $.session.UpdateCaseNotesDocTime =\r\n docTimePerm &&\r\n caseNoteDocTimePerm &&\r\n docTimePerm.permission === 'Update Doc Time' &&\r\n caseNoteDocTimePerm.permission === 'Update Doc Time'\r\n ? true\r\n : false;\r\n $.session.SEViewAdminWidget = adminSEPerm && adminSEPerm.permission === 'Y' ? true : false;\r\n\r\n setSessionVariables();\r\n\r\n //check to see which modules should be disabled\r\n checkModulePermissions();\r\n\r\n if (callback) callback();\r\n\r\n $('#userName').text($.session.Name);\r\n $('#firstName').text($.session.Name);\r\n $('#lastName').text($.session.LName);\r\n },\r\n });\r\n}\r\n\r\nfunction featureLogging(appName) {\r\n if (appName != 'roster') {\r\n var featureDescription = 'Anywhere ' + appName;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/featureLogging/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"featureDescription\":\"' + featureDescription + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction getDefaultAnywhereSettings() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDefaultAnywhereSettingsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n res = response.getDefaultAnywhereSettingsJSONResult;\r\n res = res[0];\r\n\r\n $.session.anAdmin = res.admistrator;\r\n $.session.defaultCaseNoteReviewDays = res.setting_value === '' ? '7' : res.setting_value;\r\n $.session.defaultProgressNoteReviewDays = res.notes_days_back === '' ? '99' : res.notes_days_back;\r\n $.session.defaultIncidentTrackingDaysBack =\r\n res.incidentTracking_days_back === '' ? '7' : res.incidentTracking_days_back;\r\n $.session.defaultProgressNoteChecklistReviewDays = res.checklist_days_back === '' ? '7' : res.checklist_days_back;\r\n $.session.anywhereMinutestotimeout = res.minutesToTimeout === '' ? '15' : res.minutesToTimeout;\r\n $.session.removeGoalsWidget = res.removeGoalsWidget === 'Y' ? true : false;\r\n $.session.seAdminRemoveMap = res.removeSEAdminMap === 'Y' ? true : false;\r\n $.session.isASupervisor = res.isASupervisor === '' ? false : true;\r\n $.session.sttEnabled = res.sttEnabled === 'Y' ? true : false;\r\n $.session.watchingConnection = '';\r\n $.session.azureSTTApi = res.azureSttApi;\r\n $.session.reportSeconds = res.reportSeconds;\r\n $.session.incidentTrackingPopulateIncidentDate = res.incidentTrackingPopulateIncidentDate;\r\n $.session.incidentTrackingPopulateIncidentTime = res.incidentTrackingPopulateIncidentTime;\r\n $.session.incidentTrackingPopulateReportedDate = res.incidentTrackingPopulateReportedDate;\r\n $.session.incidentTrackingPopulateReportedTime = res.incidentTrackingPopulateReportedTime;\r\n\r\n $.session.incidentTrackingShowCauseAndContributingFactors =\r\n res.incidentTrackingShowCauseAndContributingFactors === 'Y' ? true : false;\r\n $.session.incidentTrackingShowPreventionPlan = res.incidentTrackingShowPreventionPlan === 'Y' ? true : false;\r\n\r\n $.session.updateIncidentSummaryText = res.appendITSummary === 'Y' ? true : false;\r\n $.session.updateIncidentActionText = res.appendITImmediateAction === 'Y' ? true : false;\r\n $.session.updateIncidentPreventionText = res.appendITPreventionPlan === 'Y' ? true : false;\r\n $.session.updateIncidentCauseText = res.appendITCause === 'Y' ? true : false;\r\n $.session.planFormCarryover = res.planFormCarryover === 'Y' ? true : false;\r\n //Waiting List\r\n $.session.sendWaitingListEmail = true;// res.sendWaitingListEmail === 'Y' ? true : false;\r\n //Hide stuff\r\n $.session.useAbsentFeature = res.useAbsentFeature;\r\n $.session.billableTransportation = res.billableTransportation;\r\n $.session.ohioEVVChangeDate = res.ohioEVVChangeDate; \r\n $.session.anyRequireEndTime = res.anyRequireEndTime;\r\n $.session.useProgressNotes = res.useProgressNotes;\r\n $.session.applicationName = res.application;\r\n $.session.portraitPath = res.portraitPath;\r\n $.session.anywhereMainPermission = res.anywhereMainPermission;\r\n $.session.outcomesPermission = res.outcomesPermission;\r\n $.session.dayServicesPermission = res.dayServicesPermission;\r\n $.session.caseNotesPermission = res.caseNotesPermission;\r\n $.session.incidentTrackingPermission = res.incidentTrackingPermission;\r\n $.session.singleEntryPermission = res.singleEntryPermission;\r\n $.session.workshopPermission = res.workshopPermission;\r\n $.session.intellivuePermission = res.intellivuePermission;\r\n $.session.schedulingPermission = res.schedulingPermission;\r\n $.session.anywhereSchedulingPermission = res.anywhereSchedulingPermission;\r\n $.session.covidPermission = res.covidPermission;\r\n $.session.webPermission = res.webPermission; //Should be set equal to Web when true\r\n $.session.transportationPermission = res.transportationPermission;\r\n $.session.emarPermission = res.emarPermission;\r\n $.session.formsPermission = res.formsPermission;\r\n $.session.OODPermission = res.OODPermission;\r\n // TODO: ASH\r\n //$.session.anywhereAuthorizationsPermission = res.anywhereAuthorizationsPermission;\r\n $.session.anywherePlanPermission = res.anywherePlanPermission;\r\n $.session.singleEntryApproveEnabled = res.singleEntryApproveEnabled;\r\n $.session.singleEntryLocationRequired = res.singleEntryLocationRequired;\r\n $.session.singleEntryShowConsumerSignature = res.seShowConsumerSignature;\r\n $.session.singleEntryShowConsumerNote = res.seShowConsumerNote;\r\n $.session.singleEntryShowTransportation = res.seShowTransportation;\r\n $.session.schedAllowCallOffRequests = res.allowCallOffRequests;\r\n $.session.schedRequestOpenShifts = res.requestOpenShifts;\r\n $.session.oneSpan = res.oneSpan;\r\n\r\n $.session.anywhereResetPasswordPermission = res.anywhereResetPasswordPermission;\r\n $.session.anywhereConsumerFinancesPermission = res.anywhereConsumerFinancesPermission;\r\n $.session.anywhereEmploymentPermission = res.anywhereEmploymentPermission;\r\n //Default Work\r\n //.session.\r\n $.session.defaultRosterLocation = res.defaultrosterlocation;\r\n $.session.defaultRosterLocationName = res.defaultrosterlocationname;\r\n $.session.defaultRosterGroupValue = res.defaultrostergroup;\r\n $.session.defaultDayServiceLocation =\r\n res.defaultdayservicelocation === 'notDSCertified' ? '' : res.defaultdayservicelocation;\r\n $.session.defaultDayServiceLocationName = res.defaultdayservicelocationname;\r\n $.session.dsCertified = res.defaulttimeclocklocation === 'notDSCertified' ? false : true;\r\n $.session.defaultDSTimeClockValue = res.defaulttimeclocklocation;\r\n $.session.defaultDSTimeClockName = res.defaulttimeclocklocationName;\r\n $.session.defaultWorkshopLocationValue = res.defaultworkshoplocation;\r\n $.session.defaultWorkshopLocation = res.defaultworkshoplocationname;\r\n $.session.defaultMoneyManagementLocationValue = res.defaultMoneyManagementLocation;\r\n $.session.defaultMoneyManagementLocation = res.defaultMoneyManagementLocationName; \r\n //$.session.defaultDSTimeClockName = res.defaulttimeclocklocationname;\r\n //database state - Indiana or Ohio\r\n $.session.stateAbbreviation = res.stateAbbreviation;\r\n //Set session peopleId for use in ADV Plan\r\n $.session.planPeopleId = res.planPeopleId;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n $.session.caseNotesWarningStartTime = res.warningStartTime;\r\n $.session.caseNotesWarningEndTime = res.warningEndTime;\r\n }\r\n\r\n /////////\r\n defaultRosterLocationValue = res.defaultrosterlocation;\r\n defaultRosterLocationName = res.defaultrosterlocationname;\r\n defaultDayServiceLocationValue = res.defaultdayservicelocation;\r\n defaultDayServiceLocationName = res.defaultdayservicelocationname;\r\n defaultTimeClockLocationValue = res.defaulttimeclocklocation;\r\n defaultTimeClockLocationName = res.defaulttimeclocklocationname;\r\n defaultWorkshopLocationValue = res.defaultworkshoplocation;\r\n defaultWorkshopLocationName = res.defaultworkshoplocationname;\r\n defaultRosterGroupValue = res.defaultrostergroup;\r\n defaultRosterGroupName = res.defaultrostergroupname;\r\n $.session.defaultWorkshopLocation = defaultWorkshopLocationName;\r\n\r\n //setDefaultCookies(\r\n //\tdefaultRosterLocationValue,\r\n //\tdefaultRosterLocationName,\r\n //\tdefaultDayServiceLocationValue,\r\n //\tdefaultDayServiceLocationName,\r\n //\tdefaultTimeClockLocationValue,\r\n //\tdefaultTimeClockLocationName,\r\n //\tdefaultWorkshopLocationValue,\r\n //\tdefaultWorkshopLocationName,\r\n //\tdefaultRosterGroupValue,\r\n //\tdefaultRosterGroupName\r\n //);\r\n\r\n $('#casenotesdaysback').val($.session.defaultCaseNoteReviewDays);\r\n $('#progressnotesdaysback').val($.session.defaultProgressNoteReviewDays);\r\n $('#progressnoteschecklistdaysback').val($.session.defaultProgressNoteChecklistReviewDays);\r\n $('#incidenttrackingdaysback').val($.session.defaultIncidentTrackingDaysBack);\r\n\r\n disableModules();\r\n loadApp('home');\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\n//function setDefaultCookies(\r\n//\tdefaultRosterLocationValue,\r\n//\tdefaultRosterLocationName,\r\n//\tdefaultDayServiceLocationValue,\r\n//\tdefaultDayServiceLocationName,\r\n//\tdefaultTimeClockLocationValue,\r\n//\tdefaultTimeClockLocationName,\r\n//\tdefaultWorkshopLocationValue,\r\n//\tdefaultWorkshopLocationName,\r\n//\tdefaultRosterGroupValue,\r\n//\tdefaultRosterGroupName\r\n//) {\r\n//\tcreateCookie('defaultDayServiceLocation', defaultDayServiceLocationValue, 7);\r\n//\tcreateCookie('defaultDayServiceLocationName', defaultDayServiceLocationName, 7);\r\n//\tcreateCookie('defaultDayServiceLocationNameValue', defaultDayServiceLocationValue, 7);\r\n\r\n//\tif (defaultDayServiceLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultDayServiceLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultDayServiceLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tcreateCookie('defaultRosterLocation', defaultRosterLocationValue, 7);\r\n//\tcreateCookie('defaultRosterLocationName', defaultRosterLocationName, 7);\r\n\r\n//\tif (defaultRosterLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultRosterLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultRosterLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tif (defaultWorkshopLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultWorkshopLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultWorkshopLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tcreateCookie('defaultTimeClockLocationName', defaultTimeClockLocationName, 7);\r\n//\tcreateCookie('defaultTimeClockLocationValue', defaultTimeClockLocationValue, 7);\r\n//\tcreateCookie('defaultWorkshopLocationName', defaultWorkshopLocationName, 7);\r\n//\tcreateCookie('defaultWorkshopLocationValue', defaultWorkshopLocationValue, 7);\r\n//\tcreateCookie('defaultRosterGroupName', defaultRosterGroupName, 7);\r\n//\tcreateCookie('defaultRosterGroupValue', defaultRosterGroupValue, 7);\r\n//}\r\n\r\nfunction authenticatedLogin(key) {\r\n //insertData must userName and genKey\r\n const insertData = {\r\n userName: $('#username').val().trim(),\r\n genKey: key,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/authenticatedLogin/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (\r\n response.authenticatedLoginResult === 'Invalid key' ||\r\n response.authenticatedLoginResult === 'Too many failed attempts' ||\r\n response.authenticatedLoginResult === 'Expired key'\r\n ) {\r\n mfa.mfaReject(response.authenticatedLoginResult);\r\n return;\r\n }\r\n var res = JSON.stringify(response);\r\n eraseCookie('psiuser');\r\n if ($('permissions', res).is('*') && $('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n UTIL.LS.setStorage('device', $.session.deviceGUID, $('#username').val());\r\n $.session.deviceGUID = '';\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if (res.indexOf('609') > -1) {\r\n customPasswordChange();\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else if (res.indexOf('608') > -1) {\r\n $('#errortext').text('This user name does not exist in demographics.');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n },\r\n error: function (xhr, status, error) {},\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n },\r\n });\r\n}\r\n","var ACTION_NAV = (function () {\r\n var nav;\r\n // Private\r\n function setColumns(count) {\r\n switch (count) {\r\n case 1: {\r\n nav.classList.remove('twoCol');\r\n nav.classList.remove('threeCol');\r\n break;\r\n }\r\n case 2: {\r\n nav.classList.add('twoCol');\r\n nav.classList.remove('oneCol');\r\n nav.classList.remove('threeCol');\r\n break;\r\n }\r\n case 3: {\r\n nav.classList.add('threeCol');\r\n nav.classList.remove('oneCol');\r\n nav.classList.remove('twoCol');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Public\r\n function hide() {\r\n nav.classList.remove('visible');\r\n }\r\n function show() {\r\n nav.classList.add('visible');\r\n }\r\n function clear() {\r\n nav.innerHTML = '';\r\n }\r\n function populate(elements) {\r\n clear();\r\n setColumns(elements.length);\r\n\r\n elements.forEach(ele => {\r\n nav.appendChild(ele);\r\n });\r\n\r\n show();\r\n }\r\n\r\n // Action Nav Brains\r\n async function handleNavEvents(event) {\r\n var target = event.target;\r\n\r\n if (!target.dataset.actionNav) return;\r\n\r\n var activeModule = actioncenter.dataset.activeModule;\r\n var activeSection = actioncenter.dataset.activeSection;\r\n\r\n switch (activeModule) {\r\n case 'home': {\r\n break;\r\n }\r\n case 'casenotes': {\r\n if (activeSection === 'caseNotes-new') {\r\n newNote.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'caseNotesSSA-new') {\r\n newNoteSSA.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'caseNotes-review') {\r\n reviewNote.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'dayservices': {\r\n if (activeSection === 'dayServices') {\r\n dayServices.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'outcomes': {\r\n outcomes.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'incidenttracking': {\r\n if (activeSection === 'incidentTracking-new') {\r\n newIncident.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'roster': {\r\n if (activeSection === 'roster-absent') {\r\n rosterAbsent.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n else if (activeSection === 'roster-GroupIndividuals') {\r\n rosterGroupIndividuals.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n } else {\r\n roster.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'schedule': {\r\n break;\r\n }\r\n case 'timeEntry': {\r\n if (activeSection === 'timeEntry-new') {\r\n timeEntryCard.handleActionNavEvent(target, true);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'timeEntry-edit') {\r\n timeEntryCard.handleActionNavEvent(target, false);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'timeEntry-review') {\r\n timeEntryReview.handleActionNavEvent(target);\r\n }\r\n if (activeSection === 'timeEntry-approval') {\r\n timeApproval.handleActionNavEvent(target);\r\n }\r\n break;\r\n }\r\n case 'workshop': {\r\n if (activeSection === 'workshop') {\r\n workshop.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'authorizations': {\r\n if (activeSection === 'assessmentHistory') {\r\n await assessmentHistory.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'authorizations') {\r\n await authorizations.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'plan': {\r\n await plan.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'covid': {\r\n covidChecklist.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'transportation': {\r\n if (activeSection === 'routeDocumentation') {\r\n TRANS_routeDocumentation.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'editRoute') {\r\n TRANS_manageEditRoute.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'addroute') {\r\n TRANS_addRoute.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'forms': {\r\n forms.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'OOD': {\r\n OOD.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'resetPassword': {\r\n resetPassword.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'ConsumerFinances': {\r\n ConsumerFinances.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n } \r\n case 'CFEditAccount': {\r\n CFEditAccount.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'Employment': {\r\n Employment.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n }\r\n\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn && activeSection !== 'caseNotes-new') {\r\n miniRosterBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function init() {\r\n nav = document.querySelector('.action__nav');\r\n\r\n nav.addEventListener('click', handleNavEvents);\r\n }\r\n\r\n return {\r\n clear,\r\n hide,\r\n show,\r\n populate,\r\n init,\r\n };\r\n})();\r\n","var button = (function() {\r\n /**\r\n * See {@link https://git.primarysolutions.net/anywhere/anywhere-4/-/wikis/Anywhere/Elements/Buttons GitLab Wiki}\r\n * for button examples\r\n * @function build\r\n * @param {object} options \r\n * @param {string} [options.id] - sets button elemnet id\r\n * @param {(string|string[])} [options.classNames] - Single string or array of strings that set the class names for the button element.\r\n * @param {object[]} [options.attributes] - sets key value pair of data attributes to the button.\r\n * @param {string} options.attributes.key - data attribute name\r\n * @param {string} options.attributes.value - data attribute value\r\n * @param {string} [options.text] - Text to display in the button. Can be left blank when creating an 'icon' button.\r\n * @param {string} options.style - secondary - button main color is blue \r\n * - primary - button main color is white\r\n * - danger - button is red with white text\r\n * @param {string} options.type - contained - button is filled in with its style color\r\n * - outlined - button is not filled in and is outlined with is style color\r\n * - text - no fill no outline. Text is style color\r\n * @param {string} [options.icon] - icon svg from global\\icons.js\r\n * @param {string} [options.iconPos=left] - icon position of text (left, right, top bottom).\r\n * @param {boolean} [options.toggle] - true - button is a toggable button when clicked it will now become highlighted once clicked again.\r\n * @param {string} [options.toggleText] - If it is a toggle button you can specify text here to change the button text to once it is toggled.\r\n * @param {string} [options.tabindex] - Customize the tab order of elements. set to -1 to remove button from tab order. Useful for buttons that are hidden off screen.\r\n * @param {function} options.callback - action to perform when clicked\r\n * @returns {HTMLButtonElement} Returns the button element with the given options.\r\n */\r\n function build(options) {\r\n var button = document.createElement('button');\r\n if (options.id) button.id = options.id;\r\n // Button Icons\r\n if (options.icon) {\r\n button.classList.add('btn-icon');\r\n if (options.iconPos) {\r\n var iconPos = `icon-${options.iconPos}`;\r\n button.classList.add(iconPos);\r\n }\r\n if (options.text) {\r\n button.innerHTML = `\r\n ${icons[options.icon]}\r\n ${options.text.toLowerCase()}\r\n `;\r\n } else {\r\n button.innerHTML = icons[options.icon];\r\n }\r\n } else {\r\n button.classList.add('btn');\r\n if (options.text) {\r\n button.innerHTML = options.text.toLowerCase();\r\n }\r\n }\r\n // Button Coloring\r\n if (options.style) {\r\n if (options.style === 'primary') {\r\n button.classList.add('btn--primary');\r\n }\r\n if (options.style === 'secondary') {\r\n button.classList.add('btn--secondary');\r\n }\r\n if (options.style === 'danger') {\r\n button.classList.add('btn--danger');\r\n }\r\n } else {\r\n button.classList.add('btn--primary');\r\n }\r\n \r\n // Button Styling\r\n if (options.type) {\r\n if (options.type === 'text') {\r\n button.classList.add('btn--text');\r\n }\r\n if (options.type === 'contained') {\r\n button.classList.add('btn--contained');\r\n }\r\n if (options.type === 'outlined') {\r\n button.classList.add('btn--outlined');\r\n }\r\n } else {\r\n button.classList.add('btn--contained');\r\n }\r\n \r\n // toggle button?\r\n if (options.toggle) {\r\n button.classList.add('btn--toggle');\r\n button.setAttribute('data-toggled', false);\r\n // Toggle Event\r\n button.addEventListener('click', event => {\r\n if (options.icon) {\r\n var btnText = button.querySelector('span');\r\n } else {\r\n var btnText = button;\r\n }\r\n \r\n if (event.target.dataset.toggled === 'true') {\r\n button.setAttribute('data-toggled', false);\r\n btnText.innerHTML = options.text;\r\n } else {\r\n button.setAttribute('data-toggled', true);\r\n if (options.toggleText) {\r\n btnText.innerHTML = options.toggleText;\r\n }\r\n }\r\n });\r\n }\r\n // Button additional class names\r\n if (options.classNames) {\r\n if (Array.isArray(options.classNames)) {\r\n options.classNames.forEach(c => {\r\n button.classList.add(c);\r\n });\r\n } else {\r\n button.classList.add(options.classNames)\r\n }\r\n }\r\n // Button additional attributes\r\n if (options.attributes) {\r\n options.attributes.forEach(att => {\r\n button.setAttribute(att.key, att.value);\r\n });\r\n }\r\n // Button Callback\r\n if (options.callback) {\r\n button.addEventListener('click', options.callback);\r\n }\r\n // Button TabIndex\r\n if (options.tabindex) {\r\n button.tabIndex = options.tabindex;\r\n };\r\n\r\n return button;\r\n }\r\n\r\n return {\r\n build\r\n }\r\n})();","var dropdown = (function () {\r\n /**\r\n * Anywhere dropdown element\r\n * @typedef {HTMLDivElement} DropdownElement\r\n * @param {object} options options to define the dropdown\r\n * @param {string} [options.dropdownId] - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {string} options.label - Text to label the dropdown\r\n * @param {string} options.style - primary - blue background for the dropdown. White text and outline.\r\n * - secondary - will be used the most. black outline white backbround\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @param {function} options.callback - callback to be called on change\r\n * @returns {HTMLDivElement} Returns a dropdown element with the given options.\r\n */\r\n // asdfasdf\r\n function build(options) {\r\n var dropdownId = options.dropdownId;\r\n var className = options.className;\r\n var label = options.label;\r\n var style = options.style;\r\n var readonly = options.readonly;\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('dropdown');\r\n\r\n // Dropdown Coloring\r\n if (style === 'primary') {\r\n wrap.classList.add('dropdown--primary');\r\n }\r\n if (style === 'secondary') {\r\n wrap.classList.add('dropdown--secondary');\r\n }\r\n\r\n // build select\r\n var select = document.createElement('select');\r\n select.classList.add('dropdown__select');\r\n if (dropdownId) select.id = dropdownId;\r\n if (className) select.classList.add(className);\r\n if (readonly) select.setAttribute('disabled', 'true');\r\n\r\n if (options.callback) {\r\n wrap.addEventListener('change', e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n options.callback(e, selectedOption);\r\n });\r\n }\r\n\r\n // build notch\r\n var notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n if (label && label !== '') {\r\n notch.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n } else {\r\n notch.innerHTML = `\r\n
\r\n
\r\n `;\r\n }\r\n\r\n wrap.appendChild(select);\r\n wrap.appendChild(notch);\r\n\r\n wrap.innerHTML += `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n return wrap;\r\n }\r\n\r\n /**\r\n *\r\n * @param {object} options options to define the dropdown\r\n * @param {string} [options.dropdownId] - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @returns\r\n */\r\n function inlineBuild(options) {\r\n const dropdownId = options.dropdownId;\r\n const className = options.className;\r\n const readonly = options.readonly;\r\n\r\n const span = document.createElement('span');\r\n span.classList.add('inlineDropdown');\r\n\r\n const select = document.createElement('select');\r\n\r\n select.classList.add('inlineDropdown__select');\r\n select.id = dropdownId;\r\n if (className) select.classList.add(className);\r\n if (readonly) select.setAttribute('disabled', 'true');\r\n\r\n const hiddenDropdown = document.createElement('select');\r\n hiddenDropdown.id = `${dropdownId}__width_tmp_select`;\r\n const hidOpt = document.createElement('option');\r\n hidOpt.id = `${dropdownId}__width_tmp_option`;\r\n hiddenDropdown.appendChild(hidOpt);\r\n\r\n span.appendChild(select);\r\n span.appendChild(hiddenDropdown);\r\n span.innerHTML += `\r\n \r\n \r\n \r\n `;\r\n return span;\r\n }\r\n /**\r\n * Populates the given dropdown\r\n * @param {DropdownElement} dropdown - Dropdown element from dropdown.build\r\n * @param {Object[]} data - Data array to populate the dropdown\r\n * @param {string} [data.id] - Dropdown data element id\r\n * @param {string} data.text - Dropdown data element text that is displayed\r\n * @param {string} data.value - Dropdown data element value\r\n * @param {Object[]} [data.attributes] - Dropdown data element data attributes\r\n * @param {string} data.attributes.key - data attribute key\r\n * @param {string} data.attributes.value - data attribute value\r\n * @param {string} defaultVal - default to set the dropdown to. Use the 'Value' data option.\r\n */\r\n\r\n function populate(dropdown, data, defaultVal) {\r\n if (typeof dropdown === 'string') {\r\n var dropdown = document.getElementById(dropdown);\r\n } else {\r\n var dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n data.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n var option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n /**\r\n * Populates the given dropdown using option grouping\r\n * @param {Object} opt - Options\r\n * @param {DropdownElement} opt.dropdown - Dropdown element from dropdown.build\r\n * @param {Object[]} opt.data - Data array to populate the dropdown\r\n * @param {string} opt.data.groupLabel - Label for the option grouping\r\n * @param {string} [opt.data.groupId] - Label for the option grouping\r\n * @param {Object[]} opt.data.dropdownValues - Dropdown Options\r\n * @param {string} [opt.data.dropdownValues.id] - Dropdown data element id\r\n * @param {string} opt.data.dropdownValues.text - Dropdown data element text that is displayed\r\n * @param {string} opt.data.dropdownValues.value - Dropdown data element value\r\n * @param {Object[]} [opt.nonGroupedData] - Dropdown Data that doesn't get grouped\r\n * @param {string} [opt.nonGroupedData.id] - Dropdown data element id\r\n * @param {string} opt.nonGroupedData.text - Dropdown data element text that is displayed\r\n * @param {string} opt.nonGroupedData.value - Dropdown data element value\r\n * @param {Object[]} [opt.data.dropdownValues.attributes] - Dropdown data element data attributes\r\n * @param {string} opt.data.dropdownValues.attributes.key - data attribute key\r\n * @param {string} opt.data.dropdownValues.attributes.value - data attribute value\r\n * @param {string} opt.defaultVal - default to set the dropdown to. Use the 'Value' data option.\r\n */\r\n\r\n function groupingPopulate(opt) {\r\n let dropdown = opt.dropdown;\r\n const data = opt.data;\r\n const nonGroupedData = opt.nonGroupedData;\r\n const defaultVal = opt.defaultVal;\r\n\r\n if (typeof dropdown === 'string') {\r\n dropdown = document.getElementById(dropdown);\r\n } else {\r\n dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n if (nonGroupedData) {\r\n nonGroupedData.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n const option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n }\r\n\r\n data.forEach(d => {\r\n const group = document.createElement('optgroup');\r\n group.label = d.groupLabel;\r\n if (d.groupId) group.id = d.groupId;\r\n dropdown.appendChild(group);\r\n\r\n d.dropdownValues.forEach(d => {\r\n // value and text are required\r\n // dropdownValues = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n const option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n group.appendChild(option);\r\n });\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n\r\n return {\r\n build,\r\n inlineBuild,\r\n populate,\r\n groupingPopulate,\r\n };\r\n})();\r\n","","// const FORM = (() => {\r\n// // make a form component that takes care of everything\r\n// // create event listener on form no for handeling data\r\n// })();\r\n","const input = (function () {\r\n function build(opts) {\r\n // opts = {\r\n // id = \"\",\r\n // label = \"\",\r\n // type = \"\",\r\n // style = \"\",\r\n // value = \"\",\r\n // accept = \"\",\r\n // readonly = bool,\r\n // classNames = \"\" || [],\r\n // callback = () => {},\r\n // callbackType = \"\", ex: change, input, click\r\n // onBlurCallback = () => {},\r\n // attributes = [{key, value}]\r\n // charLimit = int > 0,\r\n // forceCharLimit = bool\r\n // initialLength = int >= 0,\r\n // tabindex = int,\r\n // stt = bool,\r\n // }\r\n // comment\r\n var id = opts.id;\r\n var label = opts.label;\r\n var type = opts.type;\r\n var value = opts.value;\r\n var charLimit = opts.charLimit;\r\n var tab = opts.tabindex;\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('input-field');\r\n // Button Coloring\r\n if (opts.style === 'primary') {\r\n wrap.classList.add('input-field--primary');\r\n }\r\n if (opts.style === 'secondary') {\r\n wrap.classList.add('input-field--secondary');\r\n }\r\n\r\n // build input\r\n if (type === 'textarea') {\r\n var input = document.createElement('textarea');\r\n wrap.classList.add('textarea');\r\n } else {\r\n var input = document.createElement('input');\r\n if (type) input.type = type;\r\n }\r\n\r\n input.classList.add('input-field__input');\r\n if (value && value !== '') input.value = value;\r\n if (id) input.id = id;\r\n\r\n if (type === 'file') {\r\n input.setAttribute('accept', opts.accept);\r\n }\r\n\r\n if (type === 'date') {\r\n input.setAttribute('max', '9999-12-31');\r\n }\r\n\r\n if (type === 'password') {\r\n input.setAttribute('autocomplete', 'new-password');\r\n }\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n if (opts.readonly) {\r\n input.setAttribute('readonly', true);\r\n input.style.pointerEvents = 'none';\r\n }\r\n\r\n if (opts.classNames) {\r\n if (Array.isArray(opts.classNames)) {\r\n opts.classNames.forEach(c => {\r\n input.classList.add(c);\r\n });\r\n } else {\r\n input.classList.add(opts.classNames);\r\n }\r\n }\r\n\r\n // input event callback\r\n if (opts.callback) {\r\n if (opts.callbackType) {\r\n input.addEventListener(opts.callbackType, e => {\r\n opts.callback(e);\r\n });\r\n } else {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n }\r\n if (opts.onBlurCallback) {\r\n input.addEventListener('blur', e => {\r\n opts.onBlurCallback(e);\r\n });\r\n }\r\n\r\n //Character Count. Updates on keyup. If the input value is changed programitically\r\n // you will need to dispatchEvent(new Event('keyup')) on the input field to update the count\r\n let characterCount = null;\r\n if (\r\n charLimit &&\r\n charLimit > 0 &&\r\n (type === 'textarea' || type === 'text' || type === undefined)\r\n ) {\r\n let initialLength = 0;\r\n\r\n if (opts.initialLength && opts.initialLength > 0) {\r\n initialLength = opts.initialLength;\r\n } else {\r\n initialLength = value ? value.length : 0;\r\n }\r\n\r\n characterCount = document.createElement('h5');\r\n characterCount.classList.add('inputCharCount');\r\n characterCount.innerText = `(${initialLength}/${charLimit})`;\r\n\r\n const checkOverLimit = length => {\r\n if (length > charLimit) {\r\n characterCount.classList.add('overLimit');\r\n } else {\r\n characterCount.classList.remove('overLimit');\r\n }\r\n };\r\n\r\n checkOverLimit(initialLength);\r\n\r\n // if (opts.forceCharLimit) {\r\n // input.setAttribute('maxlength', `${charLimit}`);\r\n // }\r\n\r\n const handleEvents = e => {\r\n const length = e.target.value.length;\r\n\r\n if (opts.forceCharLimit) {\r\n if (length > charLimit) {\r\n const subString = e.target.value.substring(0, charLimit);\r\n e.target.value = subString;\r\n characterCount.innerText = `(${subString.length}/${charLimit})`;\r\n }\r\n }\r\n\r\n if (!opts.forceCharLimit || length <= charLimit) {\r\n characterCount.innerText = `(${length}/${charLimit})`;\r\n checkOverLimit(length);\r\n return;\r\n }\r\n };\r\n // input.addEventListener('keyup', handleEvents);\r\n input.addEventListener('input', handleEvents);\r\n input.addEventListener('paste', handleEvents);\r\n }\r\n\r\n if (opts.tabindex) {\r\n input.tabIndex = tab;\r\n }\r\n\r\n // Add Speech to Text. Only add to text fields.\r\n let sttBtn = null;\r\n let azureSTTConnection = false;\r\n if (opts.stt && (type === 'textarea' || type === undefined)) {\r\n sttBtn = button.build({\r\n text: '',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'sttInputIcon',\r\n icon: 'microphone',\r\n });\r\n azureSTTConnection = SPEECH.init();\r\n if (azureSTTConnection) SPEECH.addSTTContinuousRecEvent(sttBtn, wrap); // Change wrap to input and change SPEECH file\r\n }\r\n\r\n if (type === 'password') {\r\n eyeBtn = button.build({\r\n text: '',\r\n id: 'toggle' + input.id,\r\n style: 'outlined',\r\n type: 'text',\r\n classNames: 'eyeInputIcon',\r\n icon: 'passwordShow',\r\n attributes: [{ key: 'data-visible-password', value: 'false' }],\r\n callback: () => {\r\n event.preventDefault();\r\n togglePasswordVisibility(input.id);\r\n },\r\n });\r\n }\r\n\r\n // build notch\r\n var notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n notch.innerHTML = `\r\n
\r\n
\r\n ${label ? `` : ``}\r\n
\r\n
\r\n `;\r\n\r\n wrap.appendChild(input);\r\n wrap.appendChild(notch);\r\n if (characterCount) wrap.appendChild(characterCount);\r\n if (sttBtn && azureSTTConnection) wrap.appendChild(sttBtn);\r\n if (type === 'password') wrap.appendChild(eyeBtn);\r\n return wrap;\r\n }\r\n\r\n function buildCheckbox(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // isChecked = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n var checkbox = document.createElement('label');\r\n checkbox.classList.add('checkbox', 'checkbox-mtd');\r\n\r\n var input = document.createElement('input');\r\n input.type = 'checkbox';\r\n if (opts.id) input.id = opts.id;\r\n if (opts.isChecked) input.setAttribute('checked', true);\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n checkbox.classList.add(c);\r\n });\r\n } else {\r\n checkbox.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n var text = document.createElement('span');\r\n if (opts.text) text.innerHTML = opts.text;\r\n\r\n checkbox.appendChild(input);\r\n checkbox.appendChild(text);\r\n\r\n return checkbox;\r\n }\r\n function buildNativeCheckbox(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // isChecked = boolean,\r\n // isDisabled = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('input-field');\r\n wrap.classList.add('checkbox');\r\n\r\n var input = document.createElement('input');\r\n input.classList.add('input-field__input');\r\n input.type = 'checkbox';\r\n\r\n if (opts.id) input.id = opts.id;\r\n if (opts.isChecked) input.setAttribute('checked', true);\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n wrap.classList.add(c);\r\n });\r\n } else {\r\n wrap.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n wrap.appendChild(input);\r\n\r\n return wrap;\r\n }\r\n function buildRadio(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // name = \"\",\r\n // isChecked = boolean,\r\n // isDisabled = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n var radio = document.createElement('label');\r\n radio.classList.add('radio');\r\n\r\n var input = document.createElement('input');\r\n input.type = 'radio';\r\n if (opts.isChecked) input.checked = true;\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n if (opts.id) input.id = opts.id;\r\n\r\n if (opts.name) input.setAttribute('name', opts.name);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n radio.classList.add(c);\r\n });\r\n } else {\r\n radio.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n var text = document.createElement('span');\r\n if (opts.text) text.innerHTML = opts.text;\r\n\r\n radio.appendChild(input);\r\n radio.appendChild(text);\r\n\r\n return radio;\r\n }\r\n\r\n function disableInputField(element) {\r\n let inputEle;\r\n\r\n switch (element.nodeName) {\r\n case 'INPUT':\r\n case 'TEXTAREA':\r\n case 'SELECT': {\r\n inputEle = element;\r\n element.parentElement.classList.add('disabled');\r\n break;\r\n }\r\n default: {\r\n element.classList.add('disabled');\r\n\r\n inputEle = element.querySelector('input');\r\n if (!inputEle) inputEle = element.querySelector('textarea');\r\n if (!inputEle) inputEle = element.querySelector('select');\r\n }\r\n }\r\n\r\n if (inputEle.type !== 'radio') {\r\n inputEle.setAttribute('tabindex', '-1');\r\n return;\r\n }\r\n\r\n const radios = [...element.querySelectorAll('input')];\r\n radios.forEach(radio => {\r\n radio.setAttribute('tabindex', '-1');\r\n });\r\n }\r\n function enableInputField(element) {\r\n let inputEle;\r\n\r\n switch (element.nodeName) {\r\n case 'INPUT':\r\n case 'TEXTAREA':\r\n case 'SELECT': {\r\n inputEle = element;\r\n element.parentElement.classList.remove('disabled');\r\n break;\r\n }\r\n default: {\r\n element.classList.remove('disabled');\r\n\r\n inputEle = element.querySelector('input');\r\n if (!inputEle) inputEle = element.querySelector('textarea');\r\n if (!inputEle) inputEle = element.querySelector('select');\r\n }\r\n }\r\n\r\n if (inputEle.type !== 'radio') {\r\n inputEle.removeAttribute('tabindex', '-1');\r\n return;\r\n }\r\n\r\n const radios = [...element.querySelectorAll('input')];\r\n radios.forEach(radio => {\r\n radio.removeAttribute('tabindex', '-1');\r\n });\r\n }\r\n\r\n function togglePasswordVisibility(id) {\r\n var passwordInput = '';\r\n var passwordToggleBtn = '';\r\n\r\n passwordInput = document.getElementById(id);\r\n passwordToggleBtn = document.getElementById('toggle' + id);\r\n\r\n var isVisible = passwordToggleBtn.getAttribute('data-visible-password');\r\n\r\n if (isVisible === 'false') {\r\n passwordToggleBtn.innerHTML = icons.passwordHide;\r\n passwordToggleBtn.setAttribute('data-visible-password', 'true');\r\n passwordInput.type = 'text';\r\n } else {\r\n passwordToggleBtn.innerHTML = icons.passwordShow;\r\n passwordToggleBtn.setAttribute('data-visible-password', 'false');\r\n passwordInput.type = 'password';\r\n }\r\n }\r\n\r\n return {\r\n build,\r\n buildCheckbox,\r\n buildNativeCheckbox,\r\n buildRadio,\r\n disableInputField,\r\n enableInputField,\r\n };\r\n})();\r\n","const GOOGLE_MAP = (function() {\r\n \r\n let map = null;\r\n let bounds = null;\r\n let markerCluster = null;\r\n\r\n function createElement(insertLocation) {\r\n let mapElement = document.createElement(\"div\");\r\n mapElement.setAttribute(\"id\", \"map\");\r\n mapElement.classList.add(\"googleMap\");\r\n insertLocation.appendChild(mapElement);\r\n }\r\n\r\n function clearMap() {\r\n // document.getElementById(\"map\").innerHTML = \"\";\r\n let mapElement = document.getElementById(\"map\");\r\n if (mapElement) mapElement.remove();\r\n map = null;\r\n }\r\n\r\n\r\n function initMap(zoom = 10, center, markers) {\r\n map = new google.maps.Map(document.getElementById(\"map\"), {\r\n zoom: zoom,\r\n center: center,\r\n maxZoom: 18,\r\n fullscreenControl: false,\r\n // mapTypeControl: false,\r\n });\r\n\r\n if (markers.latLngObj.length > 0) {\r\n markerArray = markers.latLngObj.map((location, i) => {\r\n return new google.maps.Marker({\r\n position: location\r\n })\r\n })\r\n\r\n markerArray.forEach((marker, i) => {\r\n let infoWindow = new google.maps.InfoWindow({\r\n content: markers.markerLabels[i]\r\n })\r\n marker.addListener('click', function() {\r\n infoWindow.open(marker.get('map'), marker)\r\n })\r\n })\r\n \r\n markerCluster = new MarkerClusterer(map, markerArray,\r\n {\r\n imagePath: '/webroot/dist/assets/icons/google_maps/m',\r\n });\r\n }\r\n map.fitBounds(bounds)\r\n map.panToBounds(bounds)\r\n }\r\n\r\n //Calculates the center of the map for two given points\r\n function calcCenter(pos1, pos2) {\r\n return google.maps.geometry.spherical.interpolate(pos1, pos2, 0.5);\r\n }\r\n \r\n function createBoundry(array) {\r\n bounds = new google.maps.LatLngBounds();\r\n array.forEach(pos => {\r\n bounds.extend(pos)\r\n })\r\n }\r\n\r\n function createLatLngObj(pos) {\r\n return new google.maps.LatLng(pos);\r\n }\r\n\r\n function createMarkerArray(array, markerLabels) {\r\n latLngObj = array.map(el => {\r\n return createLatLngObj(el);\r\n });\r\n\r\n return {\r\n latLngObj,\r\n markerLabels\r\n };\r\n }\r\n\r\n function createMarkerLabel(text) {\r\n let displayText = \"\"\r\n text.forEach(el => {\r\n displayText += el + \"
\"\r\n })\r\n return new google.maps.MarkerLabel({text: displayText})\r\n }\r\n\r\n return {\r\n initMap,\r\n clearMap,\r\n createElement,\r\n createMarkerArray,\r\n createMarkerLabel,\r\n createBoundry,\r\n calcCenter\r\n };\r\n})();\r\n","const multiDropdown = (function() {\r\n let activeDropdownOptions = {};\r\n let optionAddedFunction = {};\r\n let optionRemovedFunction = {};\r\n\r\n /**\r\n * Anywhere multi select dropdown element\r\n * @typedef {HTMLDivElement} MultiSelectDropdownElement\r\n * @param {object} options options to define the dropdown\r\n * @param {string} options.dropdownId - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {string} options.label - Text to label the dropdown\r\n * @param {string} [options.optionAddedCallback] - Called when a option is selected for the dropdown\r\n * @param {string} [options.optionRemovedCallback] - Called when an option is removed from the dropdown\r\n * @param {string} options.style - primary - blue background for the dropdown. White text and outline.\r\n * - secondary - will be used the most. black outline white backbround\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @returns {HTMLDivElement} Returns a dropdown element with the given options.\r\n */\r\n function build(opts) {\r\n const dropdownId = opts.dropdownId;\r\n const label = opts.label; \r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('multi', 'dropdown');\r\n wrap.id = dropdownId\r\n\r\n // Dropdown Coloring\r\n if (opts.style === 'primary') {\r\n wrap.classList.add('dropdown--primary');\r\n }\r\n if (opts.style === 'secondary') {\r\n wrap.classList.add('dropdown--secondary');\r\n }\r\n activeDropdownOptions[dropdownId] = []\r\n optionAddedFunction[dropdownId] = opts.optionAddedCallback\r\n optionRemovedFunction[dropdownId] = opts.optionRemovedCallback\r\n\r\n // build select\r\n const select = document.createElement('select');\r\n select.classList.add('dropdown__select');\r\n select.multiple = true;\r\n select.name = dropdownId;\r\n \r\n if (opts.className) select.classList.add(opts.className);\r\n if (opts.readonly) select.setAttribute('disabled', 'true');\r\n\r\n // build notch\r\n const notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n notch.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n\r\n const menu = document.createElement('div');\r\n menu.classList.add('multiMenu', 'hidden');\r\n menu.tabIndex = '-1';\r\n\r\n wrap.appendChild(select);\r\n wrap.appendChild(menu);\r\n wrap.appendChild(notch);\r\n\r\n wrap.innerHTML += `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n wrap.addEventListener('click', () => {\r\n \tif (wrap.querySelector('.multiMenu').classList.contains('hidden')) {\r\n \twrap.querySelector('.multiMenu').classList.replace('hidden', 'visible')\r\n } else {\r\n \twrap.querySelector('.multiMenu').classList.replace('visible', 'hidden')\r\n }\r\n })\r\n menu.addEventListener('blur', () => {\r\n \tif (wrap.querySelector('.multiMenu').classList.contains('hidden')) {\r\n \twrap.querySelector('.multiMenu').classList.replace('hidden', 'visible')\r\n } else {\r\n \twrap.querySelector('.multiMenu').classList.replace('visible', 'hidden')\r\n }\r\n })\r\n\r\n return wrap;\r\n\r\n }\r\n\r\n function populate(dd, data) {\r\n //data.value\r\n //data.text\r\n let multiDropdown;\r\n let dropdown\r\n if (typeof dd === 'string') {\r\n let wrap = document.getElementById(dd);\r\n dd = wrap;\r\n dropdown = wrap.querySelector('.dropdown__select')\r\n multiDropdown = wrap.querySelector('.multiMenu')\r\n } else {\r\n dropdown = dd.querySelector('select');\r\n multiDropdown = dd.querySelector('.multiMenu')\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n multiDropdown.innerHTML = '';\r\n \r\n if (data.length === 0) {\r\n const noOptions = document.createElement('div');\r\n noOptions.innerHTML = `

There are no dropdown options.

`\r\n multiDropdown.appendChild(noOptions)\r\n console.warn(`\r\n No data was passed into dropdown.populate for dropdown \r\n element: ${dd.id}. This could be due the user's filter selection,\r\n or a database call that did not return any data.`)\r\n }\r\n\r\n data.forEach(d => {\r\n const option = document.createElement('option');\r\n const multiOption = document.createElement('div');\r\n if (d.id) {\r\n option.id = d.id;\r\n multiOption.id = d.id\r\n }\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n multiOption.setAttribute('data-value', d.value);\r\n multiOption.innerText = d.text;\r\n dropdown.appendChild(option);\r\n \r\n multiOption.classList.add('item')\r\n multiOption.addEventListener('click', event => {\r\n multiOption.style.display = 'none';\r\n const option = multiOption.getAttribute('data-value')\r\n buildChip({value: option, text: multiOption.innerText}, dd, multiOption)\r\n const dropdownId = dd.id\r\n activeDropdownOptions[dropdownId].push({value: option, text: multiOption.innerText})\r\n const callback = optionAddedFunction[dropdownId]\r\n if (callback) {\r\n callback()\r\n }\r\n event.stopPropagation()\r\n })\r\n multiDropdown.appendChild(multiOption);\r\n })\r\n }\r\n\r\n function buildChip(option, dropdown, multiOption) {\r\n const text = option.text;\r\n const value = option.value\r\n const chip = document.createElement('a');\r\n chip.classList.add('multiChip');\r\n chip.setAttribute('data-value', value);\r\n // chip.innerText = text;\r\n chip.innerHTML = `
${text}
${icons.close}`;\r\n\r\n chip.addEventListener('click', event => {\r\n multiOption.style.display = 'block';\r\n const dropdownId = dropdown.id\r\n const callback = optionRemovedFunction[dropdownId]\r\n activeDropdownOptions[dropdownId] = activeDropdownOptions[dropdownId].filter(opt => opt.value !== value);\r\n chip.remove();\r\n if (callback) callback();\r\n event.stopPropagation();\r\n })\r\n dropdown.prepend(chip)\r\n }\r\n\r\n // Pass dropdown ID string, or element created with multiDropdown.build\r\n function getActiveOptions(dd) {\r\n let dropdown\r\n if (typeof dd === 'string') {\r\n dropdown = dd.getElementById(dropdown);\r\n } else {\r\n dropdown = dd;\r\n }\r\n return [...activeDropdownOptions[dropdown.id]]\r\n }\r\n return {\r\n build,\r\n populate,\r\n getActiveOptions\r\n }\r\n})();","const NAVIGATION = (() => {\r\n function init() {\r\n NAV_MOBILE.init();\r\n MODULE_MENU.init();\r\n UTIL_MENU.init();\r\n }\r\n\r\n return { init };\r\n})();\r\n\r\nconst NAV_MOBILE = (function () {\r\n let mobileNav;\r\n\r\n function handleNavClick(event) {\r\n const moduleMenu = document.querySelector('.module-menu');\r\n const utilMenu = document.querySelector('.util-menu');\r\n const isNavItem = event.target.classList.contains('nav__item');\r\n if (!isNavItem) return;\r\n\r\n const currentlyOpen = document.querySelector('.menu.menu-visible');\r\n const targetMenu = event.target.dataset.menu === 'module' ? moduleMenu : utilMenu;\r\n\r\n if (currentlyOpen) {\r\n if (targetMenu === currentlyOpen) {\r\n const subMenu = [].slice.call(document.querySelectorAll('.submenu.menu-visible'));\r\n if (subMenu && subMenu.length) {\r\n subMenu[0].classList.remove('menu-visible');\r\n }\r\n\r\n currentlyOpen.classList.remove('menu-visible');\r\n } else {\r\n currentlyOpen.classList.remove('menu-visible');\r\n targetMenu.classList.add('menu-visible');\r\n }\r\n } else {\r\n targetMenu.classList.add('menu-visible');\r\n }\r\n }\r\n\r\n function init() {\r\n mobileNav = document.querySelector('.nav__mobile');\r\n if (mobileNav) mobileNav.addEventListener('click', handleNavClick);\r\n }\r\n\r\n return { init };\r\n})();\r\n\r\nconst MODULE_MENU = (function () {\r\n const gridContainer = document.querySelector('.grid-container');\r\n const actionNav = document.querySelector('.action__nav');\r\n const utilMenu = document.querySelector('.util-menu');\r\n let moduleMenu;\r\n\r\n const elementsWithClass = document.querySelectorAll('.route-link');\r\n\r\n // Add an event listener to each element\r\n elementsWithClass.forEach(element => {\r\n element.addEventListener('click', event => {\r\n event.preventDefault();\r\n });\r\n });\r\n \r\n async function handleMenuClick(event) {\r\n const target = event.target;\r\n\r\n if (target.classList.contains('menu__button')) {\r\n /* eMAR:\r\n currently eMAR just opens a link to https://login.simplemar.com/\r\n Don't want to do any other module related switching with the emar button,\r\n so after opening the url, we will just leave the module menu open and not do anything else.\r\n */\r\n if (target.dataset.loadModule === 'emar') {\r\n simpleMar.simpleMarLogin();\r\n return;\r\n }\r\n\r\n moduleMenu.classList.remove('menu-visible');\r\n bodyScrollLock.enableBodyScroll(moduleMenu);\r\n loadApp(target.dataset.loadModule);\r\n\r\n // Get a reference to the overlay element\r\n const overlay = document.querySelector('.overlay');\r\n\r\n if (overlay.classList.contains('visible')) {\r\n overlay.classList.remove('visible');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (target.classList.contains('menu__toggle')) {\r\n const currToggleState = target.dataset.toggle === 'open' ? 'open' : 'closed';\r\n\r\n if (currToggleState === 'open') {\r\n target.dataset.toggle = 'closed';\r\n moduleMenu.classList.add('toggleClosed');\r\n gridContainer.classList.add('toggleClosed');\r\n actionNav.classList.add('toggleClosed');\r\n utilMenu.classList.add('toggleClosed');\r\n target.innerHTML = icons.keyArrowRight;\r\n addAttr();\r\n \r\n } else {\r\n target.dataset.toggle = 'open';\r\n moduleMenu.classList.remove('toggleClosed');\r\n gridContainer.classList.remove('toggleClosed');\r\n actionNav.classList.remove('toggleClosed');\r\n utilMenu.classList.remove('toggleClosed');\r\n target.innerHTML = icons.keyArrowLeft;\r\n removeAttr();\r\n }\r\n }\r\n }\r\n\r\n function init() { \r\n moduleMenu = document.querySelector('.module-menu');\r\n if (moduleMenu) moduleMenu.addEventListener('click', handleMenuClick);\r\n }\r\n\r\n function removeAttr() {\r\n document.getElementById('singlebutton').removeAttribute(\"title\");\r\n document.getElementById('rostersettingsbutton').removeAttribute(\"title\");\r\n document.getElementById('dayservicesettingsbutton').removeAttribute(\"title\");\r\n document.getElementById('goalssettingsbutton').removeAttribute(\"title\");\r\n document.getElementById('casenotesbutton').removeAttribute(\"title\");\r\n document.getElementById('singleentrybutton').removeAttribute(\"title\");\r\n document.getElementById('workshopbutton').removeAttribute(\"title\");\r\n document.getElementById('incidenttrackingbutton').removeAttribute(\"title\");\r\n document.getElementById('scheduleButton').removeAttribute(\"title\");\r\n document.getElementById('authorizationsButton').removeAttribute(\"title\");\r\n document.getElementById('planButton').removeAttribute(\"title\");\r\n document.getElementById('covidButton').removeAttribute(\"title\");\r\n document.getElementById('transportationButton').removeAttribute(\"title\");\r\n document.getElementById('emarButton').removeAttribute(\"title\");\r\n document.getElementById('PDFFormsButton').removeAttribute(\"title\");\r\n document.getElementById('EmploymentButton').removeAttribute(\"title\");\r\n document.getElementById('OODButton').removeAttribute(\"title\");\r\n document.getElementById('CFButton').removeAttribute(\"title\");\r\n document.getElementById('AdminButton').removeAttribute(\"title\");\r\n document.getElementById('resetButton').removeAttribute(\"title\");\r\n document.getElementById('accountButton').removeAttribute(\"title\");\r\n document.getElementById('editaccountButton').removeAttribute(\"title\");\r\n }\r\n\r\n function addAttr() {\r\n document.getElementById('singlebutton').setAttribute(\"title\", \"Dashboard\");\r\n document.getElementById('rostersettingsbutton').setAttribute(\"title\", \"Roster\");\r\n document.getElementById('dayservicesettingsbutton').setAttribute(\"title\", \"Day Services\");\r\n document.getElementById('goalssettingsbutton').setAttribute(\"title\", \"Outcomes\");\r\n document.getElementById('casenotesbutton').setAttribute(\"title\", \"Case Notes\");\r\n document.getElementById('singleentrybutton').setAttribute(\"title\", \"Time Entry\");\r\n document.getElementById('workshopbutton').setAttribute(\"title\", \"Workshop\");\r\n document.getElementById('incidenttrackingbutton').setAttribute(\"title\", \"Incident Tracking\");\r\n document.getElementById('scheduleButton').setAttribute(\"title\", \"Scheduling\");\r\n document.getElementById('authorizationsButton').setAttribute(\"title\", \"Authorizations\");\r\n document.getElementById('planButton').setAttribute(\"title\", \"Plan\");\r\n document.getElementById('covidButton').setAttribute(\"title\", \"COVID Checklist\");\r\n document.getElementById('transportationButton').setAttribute(\"title\", \"Transportation\");\r\n document.getElementById('emarButton').setAttribute(\"title\", \"eMAR\");\r\n document.getElementById('PDFFormsButton').setAttribute(\"title\", \"Forms\");\r\n document.getElementById('EmploymentButton').setAttribute(\"title\", \"Employment\");\r\n document.getElementById('OODButton').setAttribute(\"title\", \"OOD\");\r\n document.getElementById('CFButton').setAttribute(\"title\", \"Money Management\");\r\n document.getElementById('AdminButton').setAttribute(\"title\", \"Administration\");\r\n document.getElementById('resetButton').setAttribute(\"title\", \"Reset Passwords\");\r\n document.getElementById('accountButton').setAttribute(\"title\", \"Account Register\");\r\n document.getElementById('editaccountButton').setAttribute(\"title\", \"Edit Account\");\r\n }\r\n\r\n return { init };\r\n})();\r\n\r\nconst UTIL_MENU = (function () {\r\n function init() {\r\n const utilMenu = document.querySelector('.util-menu');\r\n const utilMenuBtn = document.querySelector('.desktopUtilMenuBtn');\r\n const modalOverlay = document.querySelector('.overlay');\r\n\r\n utilMenuBtn.addEventListener('click', () => {\r\n if (utilMenu.classList.contains('menu-visible')) {\r\n var subMenu = document.getElementsByClassName('submenu menu-visible');\r\n utilMenu.classList.remove('menu-visible');\r\n utilMenuBtn.classList.remove('menu-visible');\r\n modalOverlay.classList.remove('modal');\r\n if (subMenu && subMenu.length) subMenu[0].classList.remove('menu-visible');\r\n bodyScrollLock.enableBodyScroll(utilMenu);\r\n } else {\r\n // Add event listener to overlay close the menu when clicking outside of it\r\n modalOverlay.addEventListener('click', function (event) {\r\n var subMenu = document.getElementsByClassName('submenu menu-visible');\r\n utilMenu.classList.remove('menu-visible');\r\n utilMenuBtn.classList.remove('menu-visible');\r\n modalOverlay.classList.remove('modal');\r\n if (subMenu && subMenu.length) subMenu[0].classList.remove('menu-visible');\r\n bodyScrollLock.enableBodyScroll(utilMenu);\r\n });\r\n utilMenu.classList.add('menu-visible');\r\n utilMenuBtn.classList.add('menu-visible');\r\n modalOverlay.classList.add('modal');\r\n bodyScrollLock.disableBodyScroll(utilMenu);\r\n }\r\n });\r\n\r\n if (utilMenu) {\r\n const mainMenu = document.querySelector('.util-menu__main');\r\n const defaultsMenu = document.querySelector('.util-menu__defaults');\r\n const informationMenu = document.querySelector('.util-menu__info');\r\n const settings = document.querySelector('.util-menu__settings');\r\n const widgetSettingsMenu = document.querySelector('.util-menu__widgetSettings');\r\n const helpMenu = document.querySelector('.util-menu__help');\r\n\r\n utilMenu.addEventListener('click', function (event) {\r\n if (event.target.dataset.action === 'back') {\r\n document.querySelector('.submenu.menu-visible').classList.remove('menu-visible');\r\n return;\r\n }\r\n if (event.target.dataset.action === 'trainingVideos') { \r\n const url =\r\n $.session.applicationName === 'Advisor'\r\n ? 'https://primarysolutions.net/technology/advisor-support/'\r\n : 'https://primarysolutions.net/technology/gatekeeper-support/';\r\n\r\n const win = window.open(url, '_blank');\r\n win.focus();\r\n }\r\n\r\n let targetMenu;\r\n\r\n switch (event.target.dataset.menu) {\r\n case 'defaults':\r\n targetMenu = defaultsMenu;\r\n defaults.init();\r\n break;\r\n case 'help':\r\n targetMenu = helpMenu;\r\n help.buildPage();\r\n break;\r\n case 'settings': {\r\n //Currently settings window goes straight ot widget settings\r\n targetMenu = widgetSettingsMenu;\r\n widgetSettings.init();\r\n break;\r\n }\r\n case 'information': {\r\n targetMenu = informationMenu;\r\n information.init();\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n try {\r\n targetMenu.classList.add('menu-visible');\r\n } catch (error) {}\r\n });\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n\r\nconst MINI_MODULE_MENU = (function () {\r\n var actioncenter;\r\n var menuClone;\r\n\r\n function show() {\r\n DOM.clearActionCenter();\r\n actioncenter.appendChild(menuClone);\r\n }\r\n function hide() {\r\n actioncenter = document.getElementById('actioncenter');\r\n actioncenter.removeChild(menuClone);\r\n }\r\n\r\n function build() {\r\n actioncenter = document.getElementById('actioncenter');\r\n var moduleMenu = document.querySelector('.module-menu');\r\n\r\n if (!menuClone) {\r\n menuClone = moduleMenu.cloneNode(true);\r\n menuClone.classList.add('menuAsCard');\r\n // build header\r\n var menuHeader = document.createElement('h2');\r\n menuHeader.classList.add('menu__header');\r\n menuHeader.innerHTML = 'Please select one of these modules from the left.';\r\n\r\n var menuInner = menuClone.querySelector('.menu__inner');\r\n\r\n menuClone.insertBefore(menuHeader, menuInner);\r\n\r\n menuClone.addEventListener('click', e => {\r\n const appName = e.target.dataset.loadModule;\r\n loadApp(appName);\r\n });\r\n }\r\n\r\n show();\r\n }\r\n\r\n return {\r\n show,\r\n hide,\r\n build,\r\n };\r\n})();\r\n","var overlay = (function() {\r\n var overlay;\r\n\r\n function hide() {\r\n overlay.classList.remove('visible');\r\n }\r\n function show() {\r\n overlay.classList.add('visible');\r\n }\r\n function init() {\r\n multiTabs.newTabOpen();\r\n overlay = document.querySelector('.overlay');\r\n overlay.addEventListener('click', event => {\r\n // Special code for IE\r\n if (isIE) return;\r\n //---- end ie code ----------\r\n \r\n // if you don't want the click on overlay to hide popup remove class visible from your popup\r\n var popup = document.querySelector('.visible[data-popup=\"true\"]');\r\n\r\n if (!popup) return;\r\n \r\n if (popup.classList.contains('popup--static')) {\r\n popup.classList.remove('visible'); \r\n } else {\r\n // if popup is not static, remove it from DOM\r\n var parent = popup.parentElement;\r\n parent.removeChild(popup);\r\n }\r\n // hide overlay\r\n hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n });\r\n }\r\n\r\n return {\r\n hide,\r\n show,\r\n init\r\n }\r\n})();","// WORK IN PROGRESS\r\n/**\r\n * Popups\r\n * - POPUP.build() creates the popup element.\r\n * - POPUP.show() shows the popup.\r\n * - POPUP.hide() hides the popup.\r\n */\r\nconst POPUP = (function () {\r\n /**\r\n * Anywhere Popup Element\r\n * @typedef {HTMLDivElement} PopupElement\r\n * @param {Object} opts - Options to define the popup.\r\n * @param {Object[]} [opts.attributes] - Can define popup element data attributes.\r\n * @param {string} opts.attributes.key - Data attribute key.\r\n * @param {string} opts.attributes.value - Data attribute value.\r\n * @param {(string|string[])} [opts.classNames] - Single string or array of strings that set the class names for the popup element.\r\n * @param {string} [opts.header] - Heading at the top of the popup.\r\n * @param {string} [opts.id] - Sets popup elemnet id.\r\n * @param {boolean} [opts.hideX] - True = hide the x close button to close the popup.\r\n * @param {function} [opts.closeCallback] - Action to perform when x close button is clicked.\r\n * @param {function} [opts.onChangeCallback] - Action to perform when an input is changed\r\n * - X close button removes the popup so only include actions you want performed after the popup\r\n * is closed to this callback\r\n * @returns {PopupElement} Returns the popup element with the given options.\r\n */\r\n function build(opts) {\r\n const popup = document.createElement('div');\r\n popup.classList.add('popup');\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n // add heading\r\n if (opts.header) {\r\n popup.innerHTML = `

${opts.header}

`;\r\n }\r\n // set id\r\n if (opts.id) {\r\n popup.setAttribute('id', opts.id);\r\n }\r\n\r\n // set attributes\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n popup.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // set class\r\n if (opts.classNames) {\r\n if (Array.isArray(opts.classNames)) {\r\n opts.classNames.forEach(c => {\r\n popup.classList.add(c);\r\n });\r\n } else {\r\n popup.classList.add(opts.classNames);\r\n }\r\n }\r\n\r\n // onchange event\r\n if (opts.onChangeCallback) {\r\n popup.addEventListener('change', e => opts.onChangeCallback(e));\r\n }\r\n\r\n // add 'x' for alternative popup closing abilities\r\n const closePopBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closePopupBtn',\r\n callback: function (e) {\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n document.body.style.overflow = 'visible';\r\n if (opts.closeCallback) opts.closeCallback(e);\r\n },\r\n });\r\n\r\n if (!opts.hideX) popup.appendChild(closePopBtn);\r\n \r\n // Check if modal is enabled\r\n if (opts.modal) {\r\n // Create a background div for closing the popup\r\n const background = document.createElement('div');\r\n background.classList.add('popup__background');\r\n background.addEventListener('click', () => {\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n DOM.ACTIONCENTER.removeChild(background);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n document.body.style.overflow = 'visible';\r\n if (opts.closeCallback) opts.closeCallback();\r\n });\r\n \r\n // Append the background div and popup to ACTIONCENTER\r\n DOM.ACTIONCENTER.appendChild(background);\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n }\r\n \r\n return popup;\r\n }\r\n /**\r\n * Used to show a popup created with POPUP.build()\r\n * @param {PopupElement} popup - Popup from POPUP.build()\r\n * @param {HTMLDivElement} [appendTo] - Can specify a specific element where you would like the popup do be appended to.\r\n * - If undefined, popup appends to the action center.\r\n */\r\n function show(popup, appendTo) {\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(popup);\r\n // show overlay\r\n overlay.show();\r\n // show popup\r\n if (appendTo) {\r\n appendTo.appendChild(popup);\r\n } else {\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n }\r\n }\r\n /**\r\n * Used to hide a popup created with POPUP.build()\r\n * @param {PopupElement} popup - Popup from POPUP.build()\r\n * @param {HTMLDivElement} [removeFrom] - If you used appendTo in above show function add it here as well\r\n * - If undefined, popup appends to the action center.\r\n */\r\n function hide(popup, removeFrom) {\r\n // enable scrolling\r\n bodyScrollLock.enableBodyScroll(popup);\r\n document.body.style.overflow = 'auto';\r\n // hide overlay\r\n overlay.hide();\r\n // hide popup\r\n if (removeFrom) {\r\n removeFrom.removeChild(popup);\r\n } else {\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n }\r\n }\r\n\r\n return {\r\n build,\r\n show,\r\n hide,\r\n };\r\n})();\r\n\r\nconst successfulSave = (function () {\r\n /**\r\n * Build save checkmark with message\r\n * @param {string} message\r\n * @param {boolean} noPopup - True = return w/o popup classname\r\n */\r\n function build(message, noPopup) {\r\n const sspopup = document.createElement('div');\r\n sspopup.classList.add('successfulSavePopup');\r\n if (!noPopup) sspopup.classList.add('popup');\r\n sspopup.innerHTML = `\r\n ${icons['checkmark']}\r\n ${message ? `

${message}

` : ''}\r\n `;\r\n\r\n return sspopup;\r\n }\r\n /**\r\n * Returns popup as dom node\r\n * @param {string} message\r\n */\r\n function get(message, asPopup) {\r\n return build(message, asPopup);\r\n }\r\n /**\r\n * Displays successful save popup to actioncenter\r\n * @param {string} message\r\n */\r\n function show(message = 'SAVED') {\r\n const sspopup = build(message, false);\r\n overlay.show();\r\n DOM.ACTIONCENTER.appendChild(sspopup);\r\n }\r\n\r\n /**\r\n * Hides successful save popup\r\n */\r\n function hide(removeOverlay = true) {\r\n const successfulSavePopup = document.querySelector('.successfulSavePopup');\r\n if (removeOverlay) overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(successfulSavePopup);\r\n }\r\n\r\n return {\r\n get,\r\n show,\r\n hide,\r\n };\r\n})();\r\nconst failSave = (function () {\r\n /**\r\n * Build save checkmark with message\r\n * @param {string} message\r\n * @param {boolean} noPopup - True = return w/o popup classname\r\n */\r\n function build(message, noPopup) {\r\n if (!message) message = 'SAVED';\r\n const sspopup = document.createElement('div');\r\n sspopup.classList.add('failSavePopup');\r\n if (!noPopup) sspopup.classList.add('popup');\r\n sspopup.innerHTML = `\r\n ${icons['close']}\r\n

${message}

\r\n `;\r\n\r\n return sspopup;\r\n }\r\n /**\r\n * Returns popup as dom node\r\n * @param {string} message\r\n */\r\n function get(message, asPopup) {\r\n return build(message, asPopup);\r\n }\r\n /**\r\n * Displays successful save popup to actioncenter\r\n * @param {string} message\r\n */\r\n function show(message) {\r\n const sspopup = build(message, false);\r\n overlay.show();\r\n DOM.ACTIONCENTER.appendChild(sspopup);\r\n }\r\n\r\n /**\r\n * Hides successful save popup\r\n */\r\n function hide(removeOverlay = true) {\r\n const failSavePopup = document.querySelector('.failSavePopup');\r\n if (removeOverlay) overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(failSavePopup);\r\n }\r\n\r\n return {\r\n get,\r\n show,\r\n hide,\r\n };\r\n})();\r\n/** Shows a 'saving in progress' popup, that doesn't go away until fulfill is called\r\n * - Call pendingSave.show() to show data is curently being saved\r\n * - Call pendingSave.fulfill() once the data has been saved successfully.\r\n * @todo Should also add a 'reject' function to handle errors saving to the DB\r\n */\r\nconst pendingSave = (function () {\r\n /**\r\n * Shows the saving in progress popup with the given message.\r\n * @param {string} [message='SAVING'] - Message to display when saving is still in progress\r\n */\r\n function show(message = 'SAVING') {\r\n // build\r\n // PROGRESS.SPINNER.init()\r\n var popup = document.createElement('div');\r\n popup.classList.add('pendingSavePopup', 'popup');\r\n\r\n //SPINNER\r\n spinnerWrap = document.createElement('div');\r\n spinnerWrap.classList.add('spinner');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message');\r\n var spinnerBar = document.createElement('div');\r\n spinnerBar.classList.add('spinner__bar');\r\n spinnerMessage.innerHTML = `

${message}

`;\r\n spinnerWrap.appendChild(spinnerBar);\r\n spinnerWrap.appendChild(spinnerMessage);\r\n\r\n popup.appendChild(spinnerWrap);\r\n // show\r\n overlay.show();\r\n // PROGRESS.SPINNER.show()\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n }\r\n /**\r\n * Call this when your data has been saved.\r\n * @param {string} message - Successful saved message to display\r\n */\r\n function fulfill(message) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n // PROGRESS.SPINNER.hide()\r\n successfulSave.show(message);\r\n }\r\n function reject(message) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n // PROGRESS.SPINNER.hide()\r\n failSave.show(message);\r\n }\r\n\r\n function hide(removeOverlay = true) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n if (removeOverlay) overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n }\r\n\r\n return {\r\n show,\r\n fulfill,\r\n reject,\r\n hide,\r\n };\r\n})();\r\n","var PROGRESS = (function () {\r\n var actioncenter;\r\n\r\n function _show(progressBar) {\r\n DOM.clearActionCenter();\r\n actioncenter.appendChild(progressBar);\r\n progressBar.style.removeProperty('display');\r\n }\r\n function _hide(progressBar, spinnerMessage) {\r\n var parent = progressBar.parentElement;\r\n parent.removeChild(progressBar);\r\n parent.removeChild(spinnerMessage);\r\n }\r\n\r\n var SPINNER = (function () {\r\n var spinnerWrap;\r\n var spinnerMessage;\r\n let spinnerBar;\r\n\r\n function show(message) {\r\n if (message) {\r\n spinnerMessage.innerHTML = message;\r\n spinnerMessage.classList.add('visible');\r\n }\r\n _show(spinnerWrap);\r\n }\r\n function hide() {\r\n _hide(spinnerBar, spinnerMessage);\r\n }\r\n function build() {\r\n spinnerWrap = document.createElement('div');\r\n spinnerWrap.classList.add('spinner');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message');\r\n spinnerBar = document.createElement('div');\r\n spinnerBar.classList.add('spinner__bar');\r\n spinnerWrap.appendChild(spinnerMessage);\r\n spinnerWrap.appendChild(spinnerBar);\r\n }\r\n function get(message) {\r\n const newSpinner = spinnerWrap.cloneNode(true);\r\n if (message) {\r\n const spinnerMessageElement = newSpinner.querySelector('.spinner__message')\r\n spinnerMessageElement.innerHTML = message\r\n spinnerMessageElement.classList.add('visible');\r\n }\r\n return newSpinner;\r\n }\r\n\r\n function init() {\r\n speed = 0;\r\n build();\r\n }\r\n\r\n return {\r\n init,\r\n show,\r\n hide,\r\n get,\r\n };\r\n })();\r\n\r\n function init() {\r\n actioncenter = document.getElementById('actioncenter');\r\n SPINNER.init();\r\n }\r\n\r\n return {\r\n SPINNER,\r\n init,\r\n };\r\n})();\r\n\r\n//PROGRESS__ANYWHERE USE:\r\n//1) PROGRESS__ANYWHERE.init()\r\n//2) PROGRESS__ANYWHERE.SPINNER.show(ELEMENT YOU WANT THE PROGRESS BAR TO BE ADDED TO, MESSAGE);\r\n//3) PROGRESS__ANYWHERE.SPINNER.hide(ELEMENT YOU ADDED PROGRESS BAR TO)\r\n\r\n/**\r\n * Placing a progress bar anywhere. Example is in\r\n * Unread Progress and Location Note Widget.\r\n * 1) SPINNER.init\r\n * 2) SPINNER.show\r\n * 3) SPINNER.hide\r\n */\r\n\r\nconst PROGRESS__ANYWHERE = (function () {\r\n let insertElement;\r\n\r\n function _show(progressBar, insertElement) {\r\n insertElement.appendChild(progressBar);\r\n }\r\n function _hide(progressBar, spinnerMessage, containingElement) {\r\n if (containingElement) {\r\n progressBar = containingElement.querySelector('.spinner__bar', '.small');\r\n spinnerMessage = containingElement.querySelector('.spinner__message', '.small');\r\n }\r\n var parent = progressBar.parentElement;\r\n parent.removeChild(progressBar);\r\n parent.removeChild(spinnerMessage);\r\n }\r\n\r\n /**\r\n * Main spinner functions\r\n */\r\n const SPINNER = (function () {\r\n let smallSpinnerWrap;\r\n let spinnerMessage;\r\n let smallSpinnerBar;\r\n /**\r\n * Shows the spinner until hide function is called.\r\n * @param {HTMLElement} element the html element where you would like the spinner to be placed\r\n * @param {string} message what you want the spinner to say\r\n */\r\n function show(element, message) {\r\n insertElement = element;\r\n if (message) {\r\n spinnerMessage.innerHTML = message;\r\n spinnerMessage.classList.add('visible');\r\n }\r\n _show(smallSpinnerWrap, insertElement);\r\n }\r\n /**\r\n * Hides the spinner from spinner.show\r\n * @param {HTMLElement} parentElement html element that contains the spinner. Use the same element that was passed in SPINNER.show\r\n */\r\n function hide(parentElement) {\r\n _hide(smallSpinnerBar, spinnerMessage, parentElement);\r\n }\r\n function build() {\r\n smallSpinnerWrap = document.createElement('div');\r\n smallSpinnerWrap.classList.add('spinner__small');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message', 'small');\r\n smallSpinnerBar = document.createElement('div');\r\n smallSpinnerBar.classList.add('spinner__bar', 'small');\r\n smallSpinnerWrap.appendChild(spinnerMessage);\r\n smallSpinnerWrap.appendChild(smallSpinnerBar);\r\n }\r\n /**\r\n * Call this before spinner.show. Creates all necessary spinner elements.\r\n */\r\n function init() {\r\n speed = 0;\r\n build();\r\n }\r\n\r\n return {\r\n init,\r\n show,\r\n hide,\r\n };\r\n })();\r\n\r\n function init() {\r\n SPINNER.init();\r\n }\r\n\r\n return {\r\n SPINNER,\r\n init,\r\n };\r\n})();\r\n\r\n/*\r\nPROGRESS__BTN USE: \r\nLike Progress anywhere but to use with buttons that are awaiting a response\r\n1) PROGRESS__ANYWHERE.SPINNER.show(BTN, MESSAGE, true/false);\r\n2) PROGRESS__ANYWHERE.SPINNER.hide(BTN)\r\n*/\r\n\r\n/**\r\n * Placing a progress bar anywhere. Example is in\r\n * Unread Progress and Location Note Widget.\r\n * 1) SPINNER.show\r\n * 2) SPINNER.hide\r\n */\r\nconst PROGRESS__BTN = (function () {\r\n let insertElement;\r\n\r\n function _show(progressBar, insertElement) {\r\n insertElement.appendChild(progressBar);\r\n }\r\n function _hide(progressBar, spinnerMessage, containingElement) {\r\n if (containingElement) {\r\n progressBar = containingElement.querySelector('.spinner__bar', '.small_btn');\r\n spinnerMessage = containingElement.querySelector('.spinner__message', '.small_btn');\r\n }\r\n var parent = progressBar.parentElement;\r\n parent.removeChild(progressBar);\r\n parent.removeChild(spinnerMessage);\r\n }\r\n\r\n const SPINNER = (function () {\r\n let btnSpinnerWrap;\r\n let spinnerMessage;\r\n let smallSpinnerBar;\r\n const buttonTextCache = new Map();\r\n\r\n /**\r\n * Shows the spinner until hide function is called.\r\n * @param {HTMLElement|string} btnElement the btn element where you would like the spinner to be placed\r\n * @param {string} message what you want the spinner to say\r\n * @param {boolean} cache cache the message and corresponding element for hiding progress.\r\n */\r\n function show(btnElement, message, cache = true) {\r\n //Move INIT to show\r\n speed = 0;\r\n build();\r\n //\r\n if (typeof(btnElement) === 'string') btnElement = document.getElementById(btnElement)\r\n insertElement = btnElement;\r\n if (cache) buttonTextCache.set(btnElement, btnElement.innerText);\r\n if (message) {\r\n spinnerMessage.innerHTML = message;\r\n spinnerMessage.classList.add('visible');\r\n }\r\n btnElement.classList.add('disabled')\r\n btnElement.style.width = btnElement.clientWidth + 'px';\r\n btnElement.innerHTML = '';\r\n _show(btnSpinnerWrap, insertElement);\r\n }\r\n /**\r\n * Hides the spinner from spinner.show\r\n * @param {HTMLElement|string} btnElement html element, OR id of button in string form that contains the spinner. Use the same element that was passed in SPINNER.show\r\n */\r\n function hide(btnElement) {\r\n if (typeof(btnElement) === 'string') btnElement = document.getElementById(btnElement)\r\n btnElement.classList.remove('disabled')\r\n btnElement.style.removeProperty('width');\r\n _hide(smallSpinnerBar, spinnerMessage, btnElement);\r\n btnElement.innerText = buttonTextCache.get(btnElement);\r\n buttonTextCache.delete(btnElement);\r\n }\r\n function build() {\r\n btnSpinnerWrap = document.createElement('div');\r\n btnSpinnerWrap.classList.add('spinner__btn');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message', 'small_btn');\r\n smallSpinnerBar = document.createElement('div');\r\n smallSpinnerBar.classList.add('spinner__bar', 'small_btn', 'faster');\r\n btnSpinnerWrap.appendChild(spinnerMessage);\r\n btnSpinnerWrap.appendChild(smallSpinnerBar);\r\n }\r\n return {\r\n show,\r\n hide,\r\n };\r\n })();\r\n\r\n return {\r\n SPINNER,\r\n };\r\n})();","var table = (function () {\r\n var opts;\r\n\r\n function build(options) {\r\n // options = {\r\n // plain=true?false\r\n // tableId=''\r\n // headline=''\r\n // columnHeadings=[]\r\n // callback=function\r\n //* NEW SORTABLE OPTIONS\r\n // sortable=true?false\r\n // onSortCallback=function\r\n //* END ICON OPTIONS\r\n // endIcon=true?false\r\n //* SECOND END ICON OPTIONS\r\n // secondendIcon=true?false\r\n //* COPY OPTIONS\r\n // allowCopy=true?false\r\n // }\r\n opts = options;\r\n // Create Base Elements\r\n var table = document.createElement('div');\r\n var tableBody = document.createElement('div');\r\n // Set Attributes\r\n if (opts.tableId) table.id = options.tableId;\r\n tableBody.classList.add('table__body');\r\n\r\n // Set Sortable\r\n if (options.sortable) {\r\n new Sortable(tableBody, {\r\n handle: '.dragHandle',\r\n draggable: '>.table__row',\r\n onSort: function (evt) {\r\n options.onSortCallback({\r\n oldIndex: evt.oldIndex,\r\n newIndex: evt.newIndex,\r\n row: evt.item,\r\n });\r\n },\r\n });\r\n\r\n table.classList.add('sortableTable');\r\n }\r\n\r\n // plain table?\r\n if (opts.plain) {\r\n table.classList.add('table', 'table__plain');\r\n } else {\r\n table.classList.add('table');\r\n }\r\n\r\n // Add Headline\r\n if (opts.headline) {\r\n var headline = document.createElement('div');\r\n headline.classList.add('table__headline');\r\n headline.innerHTML = `

${opts.headline}

`;\r\n table.appendChild(headline);\r\n }\r\n\r\n // Build Header Row\r\n var headerRow = document.createElement('div');\r\n headerRow.classList.add('table__row', 'header');\r\n\r\n // add emtpy cell for drag handle\r\n if (options.sortable) {\r\n var td = document.createElement('div');\r\n td.classList.add('dragHandle');\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // populate column row\r\n options.columnHeadings.forEach(heading => {\r\n var td = document.createElement('div');\r\n td.innerHTML = heading;\r\n headerRow.appendChild(td);\r\n });\r\n \r\n // add empty cell for endIcon\r\n if (options.endIcon) {\r\n var td = document.createElement('div');\r\n td.classList.add('endIcon');\r\n if (options.endIconHeading == undefined) {\r\n options.endIconHeading = '';\r\n }\r\n td.innerHTML = options.endIconHeading;\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // add empty cell for secondendIcon\r\n if (options.secondendIcon) {\r\n var td = document.createElement('div');\r\n td.classList.add('secondendIcon');\r\n if (options.secondendIconHeading == undefined) {\r\n options.secondendIconHeading = '';\r\n }\r\n td.innerHTML = options.secondendIconHeading;\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // add empty cell for copyIcon\r\n if (options.allowCopy) {\r\n var td = document.createElement('div');\r\n td.classList.add('copyIcon');\r\n headerRow.appendChild(td);\r\n }\r\n\r\n // append row to table\r\n table.appendChild(headerRow);\r\n\r\n // Putting it all together\r\n table.appendChild(tableBody);\r\n\r\n if (opts.callback) {\r\n table.addEventListener('click', opts.callback);\r\n }\r\n\r\n return table;\r\n }\r\n\r\n function populate(table, data, isSortable, disabled) {\r\n // table can be element or tableID\r\n // data = [{ id=\"\", values=[], attributes=[{}], onClick}] = oneRow\r\n // isSortable = sortable=true?false\r\n \r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n \r\n const tableBody = table.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n \r\n data.forEach(d => {\r\n // build row\r\n const row = document.createElement('div');\r\n row.classList.add('table__row');\r\n if (d.overlap !== null) {\r\n if (d.overlap === true) {\r\n row.classList.add('yellowbackground'); //\r\n }\r\n }\r\n // set id & attributes\r\n if (d.id) row.id = d.id;\r\n if (d.attributes) {\r\n d.attributes.forEach(a => {\r\n row.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n // Add error class to row if there is an error\r\n if (d.hasError) {\r\n row.classList.add('errorRow');\r\n }\r\n\r\n // set onclick\r\n if (d.onClick && !disabled) {\r\n row.addEventListener('click', async e => {\r\n if (e.target === row) {\r\n e.target.classList.add('noPointerEvents');\r\n await d.onClick(e);\r\n e.target.classList.remove('noPointerEvents');\r\n }\r\n });\r\n row.classList.add('customLink');\r\n }\r\n if (!disabled) {\r\n row.classList.add('disabledRow');\r\n }\r\n \r\n // add drag handle\r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n \r\n row.appendChild(cell);\r\n }\r\n \r\n // populate row cells\r\n d.values.forEach(v => {\r\n const cell = document.createElement('div');\r\n cell.innerHTML = v;\r\n row.appendChild(cell);\r\n });\r\n \r\n if (d.endIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('endIcon');\r\n cell.innerHTML = d.endIcon;\r\n cell.addEventListener('click', d.endIconCallback);\r\n row.appendChild(cell);\r\n }\r\n \r\n if (d.secondendIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('secondendIcon');\r\n cell.innerHTML = d.secondendIcon;\r\n cell.addEventListener('click', d.secondendIconCallback);\r\n row.appendChild(cell);\r\n }\r\n \r\n if (disabled !== true) {\r\n if (d.onCopyClick) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('copyIcon');\r\n cell.innerHTML = icons.copy;\r\n cell.addEventListener('click', d.onCopyClick);\r\n row.appendChild(cell);\r\n }\r\n }\r\n \r\n tableBody.appendChild(row);\r\n });\r\n }\r\n\r\n function addRows(table, rowData, isSortable) {\r\n // table can be element or tableID\r\n // data = [{ id=\"\", values=[], attributes=[{}], onClick, hasError }] = oneRow\r\n // isSortable = true/false\r\n \r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n \r\n const tableBody = table.querySelector('.table__body');\r\n \r\n rowData.forEach(d => {\r\n // build row\r\n const row = document.createElement('div');\r\n row.classList.add('table__row');\r\n \r\n if (d.id) row.id = d.id;\r\n if (d.attributes) {\r\n d.attributes.forEach(a => {\r\n row.setAttribute(a.key, a.value);\r\n });\r\n }\r\n \r\n // Add errorRow class if hasError is true\r\n if (d.hasError) {\r\n row.classList.add('errorRow');\r\n }\r\n \r\n if (d.onClick) {\r\n row.addEventListener('click', e => {\r\n if (e.target === row) {\r\n d.onClick(e);\r\n }\r\n });\r\n row.classList.add('customLink');\r\n }\r\n \r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n row.appendChild(cell);\r\n }\r\n \r\n // populate row cells\r\n d.values.forEach(v => {\r\n const cell = document.createElement('div');\r\n cell.innerHTML = v;\r\n row.appendChild(cell);\r\n });\r\n if (d.endIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('endIcon');\r\n cell.innerHTML = d.endIcon;\r\n cell.addEventListener('click', d.endIconCallback);\r\n row.appendChild(cell);\r\n }\r\n \r\n if (d.onCopyClick) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('copyIcon');\r\n cell.innerHTML = icons.copy;\r\n cell.addEventListener('click', d.onCopyClick);\r\n row.appendChild(cell);\r\n }\r\n \r\n tableBody.appendChild(row);\r\n });\r\n }\r\n \r\n\r\n function updateRows(table, rowData, isSortable) {\r\n // table can be element or tableID\r\n // data = [{ id=\"\", values=[], attributes=[{}], onClick, hasError }] = oneRow\r\n // isSortable = true/false\r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n \r\n const tableBody = table.querySelector('.table__body');\r\n \r\n rowData.forEach(d => {\r\n // get & clear row\r\n const rowId = `#${d.id}`;\r\n const oldRow = tableBody.querySelector(rowId);\r\n oldRow.innerHTML = '';\r\n const newRow = oldRow.cloneNode(true);\r\n tableBody.replaceChild(newRow, oldRow);\r\n \r\n // Remove errorRow class if it exists and hasError is false\r\n if (!d.hasError) {\r\n newRow.classList.remove('errorRow');\r\n }\r\n \r\n // Add errorRow class if hasError is true and the class is not already on the row\r\n if (d.hasError && !newRow.classList.contains('errorRow')) {\r\n newRow.classList.add('errorRow');\r\n }\r\n \r\n if (d.onClick) {\r\n newRow.addEventListener('click', e => {\r\n if (e.target === newRow) {\r\n d.onClick(e);\r\n }\r\n });\r\n newRow.classList.add('customLink');\r\n }\r\n \r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n newRow.appendChild(cell);\r\n }\r\n \r\n // populate row cells\r\n d.values.forEach(v => {\r\n const cell = document.createElement('div');\r\n cell.innerHTML = v;\r\n newRow.appendChild(cell);\r\n });\r\n \r\n if (d.endIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('endIcon');\r\n cell.innerHTML = d.endIcon;\r\n cell.addEventListener('click', d.endIconCallback);\r\n newRow.appendChild(cell);\r\n }\r\n \r\n if (d.onCopyClick) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('copyIcon');\r\n cell.innerHTML = icons.copy;\r\n cell.addEventListener('click', d.onCopyClick);\r\n newRow.appendChild(cell);\r\n }\r\n });\r\n }\r\n \r\n\r\n function deleteRow(rowId) {\r\n const row = document.getElementById(rowId);\r\n row.remove();\r\n }\r\n\r\n function clear(table) {\r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n\r\n const tableBody = table.querySelector('.table__body');\r\n if (tableBody) tableBody.innerHTML = '';\r\n }\r\n\r\n function getRowCount(table) {\r\n if (typeof table === 'string') {\r\n var table = document.getElementById(table);\r\n }\r\n\r\n const tableBody = table.querySelector('.table__body');\r\n\r\n const tableRows = [...tableBody.querySelectorAll('.table__row')];\r\n\r\n return tableRows.length;\r\n }\r\n\r\n // Add the ability to click a header on the the table to sort the table\r\n function sortTableByHeader(table) {\r\n // Query the headers\r\n const headers = table.querySelectorAll('.header div');\r\n\r\n // Track sort directions\r\n const directions = Array.from(headers).map(function (header) {\r\n return '';\r\n });\r\n\r\n // Loop over the headers\r\n [].forEach.call(headers, function (header, index) {\r\n header.addEventListener('click', function () {\r\n // This function will sort the column\r\n sortColumn(index);\r\n });\r\n });\r\n\r\n // Transform the content of given cell in given column\r\n const transform = function (index, content) {\r\n // Get the data type of column\r\n const type = headers[index].getAttribute('data-type');\r\n switch (type) {\r\n case 'number':\r\n return parseFloat(content);\r\n case 'date':\r\n return Date.parse(content);\r\n case 'string':\r\n default:\r\n return content;\r\n }\r\n };\r\n\r\n const sortColumn = function (index) {\r\n //Loop over the headers, removing the sort order class\r\n [].forEach.call(headers, function (header) {\r\n header.classList.remove('headersortup');\r\n header.classList.remove('headersortdown');\r\n });\r\n\r\n // Get the current direction\r\n const direction = directions[index] || 'asc';\r\n\r\n // A factor based on the direction\r\n const multiplier = direction === 'asc' ? 1 : -1;\r\n\r\n // Query all rows\r\n const tableBody = table.querySelector('.table__body');\r\n const rows = [...tableBody.querySelectorAll('.table__row')];\r\n\r\n // Clone the rows\r\n const newRows = Array.from(rows);\r\n\r\n // Sort rows by the content of cells\r\n newRows.sort(function (rowA, rowB) {\r\n // Get the content of cells\r\n const cellA = rowA.childNodes[index].innerText;\r\n const cellB = rowB.childNodes[index].innerText;\r\n\r\n // Transform the content of cells\r\n var a = transform(index, cellA);\r\n var b = transform(index, cellB);\r\n\r\n // Make string comparison case insensitive\r\n const type = headers[index].getAttribute('data-type');\r\n if (type === 'string') {\r\n a = a.toLowerCase();\r\n b = b.toLowerCase();\r\n }\r\n\r\n // And compare them\r\n switch (true) {\r\n case a > b:\r\n return 1 * multiplier;\r\n case a < b:\r\n return -1 * multiplier;\r\n case a === b:\r\n return 0;\r\n }\r\n });\r\n\r\n // Reverse the direction\r\n directions[index] = direction === 'asc' ? 'desc' : 'asc';\r\n\r\n // Assign the appropriate sort direction class\r\n if (direction === 'asc') {\r\n headers[index].classList.remove('headersortup');\r\n headers[index].classList.add('headersortdown');\r\n } else if (direction === 'desc') {\r\n headers[index].classList.remove('headersortdown');\r\n headers[index].classList.add('headersortup');\r\n }\r\n\r\n // Remove old rows\r\n [].forEach.call(rows, function (row) {\r\n tableBody.removeChild(row);\r\n });\r\n\r\n // Append new row\r\n newRows.forEach(function (newRow) {\r\n tableBody.appendChild(newRow);\r\n });\r\n };\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n addRows,\r\n updateRows,\r\n deleteRow,\r\n clear,\r\n getRowCount,\r\n sortTableByHeader,\r\n };\r\n})();\r\n","var tabs = (function () {\r\n function build(options) {\r\n var active = options.active ? options.active : 0;\r\n // options = {sections=[], active=num, tabNavCallback}\r\n var tabWrap = document.createElement('div');\r\n var tabNav = document.createElement('div');\r\n var tabBody = document.createElement('div');\r\n tabWrap.classList.add('tabs');\r\n tabNav.classList.add('tabs__nav');\r\n tabBody.classList.add('tabs__body');\r\n\r\n options.sections.forEach((sec, index) => {\r\n // build nav item\r\n var navItem = document.createElement('div');\r\n navItem.classList.add('tabs__nav--item');\r\n navItem.setAttribute('section', sec.toLowerCase());\r\n navItem.innerHTML = sec;\r\n // build tab section\r\n var section = document.createElement('div');\r\n var secClass = `${sec.toLowerCase().replace(/ /g, '')}-section`;\r\n section.classList.add('tabs__body--section', secClass);\r\n section.id = sec.toLowerCase();\r\n if (index === active) {\r\n navItem.classList.add('active');\r\n section.classList.add('active');\r\n }\r\n // append them\r\n tabNav.appendChild(navItem);\r\n tabBody.appendChild(section);\r\n });\r\n\r\n tabWrap.appendChild(tabNav);\r\n tabWrap.appendChild(tabBody);\r\n\r\n tabNav.addEventListener('click', event => {\r\n if (!event.target.classList.contains('tabs__nav--item')) return;\r\n\r\n var activeTab = tabNav.querySelector('.active');\r\n var activeSection = tabBody.querySelector('.active');\r\n var targetSection = `.${event.target.innerHTML.toLowerCase().replace(/ /g, '')}-section`;\r\n targetSection = tabBody.querySelector(targetSection);\r\n\r\n activeTab.classList.remove('active');\r\n event.target.classList.add('active');\r\n activeSection.classList.remove('active');\r\n targetSection.classList.add('active');\r\n\r\n if (options.tabNavCallback)\r\n options.tabNavCallback({\r\n activeSection: event.target.innerHTML,\r\n });\r\n });\r\n\r\n return tabWrap;\r\n }\r\n\r\n return {\r\n build,\r\n };\r\n})();\r\n\r\nconst TABS = (function () {\r\n const buildTabs = () => {\r\n const tabs = document.createElement('div');\r\n tabs.classList.add('tabs');\r\n return tabs;\r\n };\r\n const buildTabsNav = () => {\r\n const tabsNav = document.createElement('div');\r\n tabsNav.classList.add('tabsNav');\r\n return tabsNav;\r\n };\r\n const buildTabsBody = () => {\r\n const tabsBody = document.createElement('div');\r\n tabsBody.classList.add('tabsBody');\r\n return tabsBody;\r\n };\r\n const buildNavItem = (navText, isActive, index) => {\r\n let ISPValidationCheck = planValidation.returnIspValidation();\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('tabsNav__item');\r\n navItem.id = `tabNav${index}`;\r\n navItem.innerHTML = `

${navText}

`;\r\n\r\n // create alert div\r\n const navAlertDiv = document.createElement('div');\r\n navAlertDiv.classList.add('tocAlertDiv');\r\n navAlertDiv.id = `navAlert${navText}`;\r\n navAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(navAlertDiv);\r\n\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n navAlertDiv,\r\n );\r\n\r\n navAlertDiv.style.display = 'none';\r\n\r\n if (isActive) navItem.classList.add('active');\r\n\r\n // Display Assessment Nav Validation if their are validation errors\r\n if (navText === 'Assessment' && assessmentValidationCheck.complete === false) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n\r\n // DIsplay ISP Nav Validation if their are validation errors in the ISP or ISP contact section\r\n if (navText === 'ISP' && (ISPValidationCheck.complete === false || ISPValidationCheck.contactSectionComplete === false || ISPValidationCheck.summaryRisksValidation === false)) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n\r\n return navItem;\r\n };\r\n const buildTabSection = (sectionMarkup, isActive, index) => {\r\n const tabSection = document.createElement('div');\r\n tabSection.classList.add('tabsBody__sec');\r\n tabSection.id = `tab${index}`;\r\n tabSection.appendChild(sectionMarkup);\r\n if (isActive) tabSection.classList.add('active');\r\n\r\n return tabSection;\r\n };\r\n\r\n // PUBLIC\r\n //============================================\r\n const build = (options, tabsData) => {\r\n // options = {\r\n // navOnClick: function()\r\n // }\r\n // tabsData = [\r\n // {\r\n // heading: 'Tab 1',\r\n // markup: 'tab 1 markup',\r\n // },\r\n // ];\r\n const active = options.active ? options.active : 0;\r\n\r\n const tabs = buildTabs();\r\n const tabsNav = buildTabsNav();\r\n const tabsBody = buildTabsBody();\r\n\r\n tabsData.forEach((td, index) => {\r\n const isActive = index === active;\r\n const navItem = buildNavItem(td.heading, isActive, index);\r\n const tabSection = buildTabSection(td.markup, isActive, index);\r\n\r\n tabsNav.appendChild(navItem);\r\n tabsBody.appendChild(tabSection);\r\n });\r\n\r\n tabsNav.addEventListener('click', e => {\r\n if (!e.target.classList.contains('tabsNav__item') || tabsNav.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n const targetTab = e.target;\r\n const targetTabIndex = targetTab.id.replace('tabNav', '');\r\n const targetSectionId = `#tab${targetTabIndex}`;\r\n const targetSection = document.querySelector(targetSectionId);\r\n const activeTab = tabsNav.querySelector('.active');\r\n const activeSection = tabsBody.querySelector('.tabsBody > .active');\r\n\r\n activeTab.classList.remove('active');\r\n activeSection.classList.remove('active');\r\n\r\n targetTab.classList.add('active');\r\n targetSection.classList.add('active');\r\n\r\n options.navOnClick(targetTabIndex);\r\n });\r\n\r\n tabsNav.classList.add('disabled');\r\n\r\n tabs.appendChild(tabsNav);\r\n tabs.appendChild(tabsBody);\r\n\r\n return tabs;\r\n };\r\n const toggleNavStatus = (tabs, status) => {\r\n const tabsNav = tabs.querySelector('.tabsNav');\r\n\r\n if (status === 'enable') {\r\n tabsNav.classList.remove('disabled');\r\n } else {\r\n tabsNav.classList.add('disabled');\r\n }\r\n };\r\n\r\n return {\r\n build,\r\n toggleNavStatus,\r\n };\r\n})();\r\n","!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)(\"object\"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}n(84);var o=n(41),i=r(o),a=function(){i[\"default\"].addPickerToOtherInputs(),i[\"default\"].supportsDateInput()||i[\"default\"].addPickerToDateInputs()};a(),document.addEventListener(\"DOMContentLoaded\",function(){a()}),document.querySelector(\"body\").addEventListener(\"mousedown\",function(){a()})},function(t,e,n){t.exports=!n(11)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(9),o=n(32),i=n(25),a=Object.defineProperty;e.f=n(1)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(u){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(59),o=n(16);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(4),o=n(14);t.exports=n(1)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(23)(\"wks\"),o=n(15),i=n(2).Symbol,a=\"function\"==typeof i,u=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};u.store=r},function(t,e){var n=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var r=n(12);t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var r=n(2),o=n(8),i=n(56),a=n(6),u=\"prototype\",s=function(t,e,n){var c,l,f,d=t&s.F,p=t&s.G,h=t&s.S,y=t&s.P,m=t&s.B,v=t&s.W,b=p?o:o[e]||(o[e]={}),g=b[u],x=p?r:h?r[e]:(r[e]||{})[u];p&&(n=e);for(c in n)l=!d&&x&&void 0!==x[c],l&&c in b||(f=l?x[c]:n[c],b[c]=p&&\"function\"!=typeof x[c]?n[c]:m&&l?i(f,r):v&&x[c]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(f):y&&\"function\"==typeof f?i(Function.call,f):f,y&&((b.virtual||(b.virtual={}))[c]=f,t&s.R&&g&&!g[c]&&a(g,c,f)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var r=n(38),o=n(17);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e){t.exports={}},function(t,e){t.exports=!0},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(4).f,o=n(3),i=n(7)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(23)(\"keys\"),o=n(15);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(2),o=\"__core-js_shared__\",i=r[o]||(r[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(12);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,n){var r=n(2),o=n(8),i=n(19),a=n(27),u=n(4).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});\"_\"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},function(t,e,n){e.f=n(7)},function(t,e){\"use strict\";e.__esModule=!0,e[\"default\"]=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}e.__esModule=!0;var o=n(45),i=r(o);e[\"default\"]=function(){function t(t,e){for(var n=0;n\";for(e.style.display=\"none\",n(58).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),c=t.F;r--;)delete c[s][i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u[s]=r(t),n=new u,u[s]=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(4),o=n(9),i=n(13);t.exports=n(1)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,s=0;u>s;)r.f(t,n=a[s++],e[n]);return t}},function(t,e,n){var r=n(38),o=n(17).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(3),o=n(5),i=n(55)(!1),a=n(22)(\"IE_PROTO\");t.exports=function(t,e){var n,u=o(t),s=0,c=[];for(n in u)n!=a&&r(u,n)&&c.push(n);for(;e.length>s;)r(u,n=e[s++])&&(~i(c,n)||c.push(n));return c}},function(t,e,n){t.exports=n(6)},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}function o(t,e){for(t=String(t),e=e||2;t.length0?\"-\":\"+\")+o(100*Math.floor(Math.abs(w)/60)+Math.abs(w)%60,4),S:[\"th\",\"st\",\"nd\",\"rd\"][h%10>3?0:(h%100-h%10!=10)*h%10],W:S,N:O};return s.replace(t,function(t){return t in D?D[t]:t.slice(1,t.length-1)})}}();l.masks={\"default\":\"ddd mmm dd yyyy HH:MM:ss\",shortDate:\"m/d/yy\",mediumDate:\"mmm d, yyyy\",longDate:\"mmmm d, yyyy\",fullDate:\"dddd, mmmm d, yyyy\",shortTime:\"h:MM TT\",mediumTime:\"h:MM:ss TT\",longTime:\"h:MM:ss TT Z\",isoDate:\"yyyy-mm-dd\",isoTime:\"HH:MM:ss\",isoDateTime:\"yyyy-mm-dd'T'HH:MM:sso\",isoUtcDateTime:\"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\",expiresHeaderFormat:\"ddd, dd mmm yyyy HH:MM:ss Z\"},l.i18n={dayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],monthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},e[\"default\"]=l},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(44),i=r(o),a=n(28),u=r(a),s=n(29),c=r(s),l=n(43),f=r(l),d=n(42),p=r(d),h=n(40),y=r(h),m=function(){function t(e){var n=this;(0,u[\"default\"])(this,t),this.element=e,this.element.setAttribute(\"data-has-picker\",\"\"),this.locale=this.element.getAttribute(\"lang\")||document.body.getAttribute(\"lang\")||\"en\",this.format=this.element.getAttribute(\"date-format\")||document.body.getAttribute(\"date-format\")||this.element.getAttribute(\"data-date-format\")||document.body.getAttribute(\"data-date-format\")||\"yyyy-mm-dd\",this.localeText=this.getLocaleText(),(0,i[\"default\"])(this.element,{valueAsDate:{get:function(){if(!n.element.value)return null;var t=n.format||\"yyyy-mm-dd\",e=n.element.value.match(/(\\d+)/g),r=0,o={};return t.replace(/(yyyy|dd|mm)/g,function(t){o[t]=r++}),new Date(e[o.yyyy],e[o.mm]-1,e[o.dd])},set:function(t){n.element.value=(0,y[\"default\"])(t,n.format)}},valueAsNumber:{get:function(){return n.element.value?n.element.valueAsDate.valueOf():NaN},set:function(t){n.element.valueAsDate=new Date(t)}}});var r=function(t){var e=n.element;e.locale=n.localeText,f[\"default\"].attachTo(e)};this.element.addEventListener(\"focus\",r),this.element.addEventListener(\"mouseup\",r),this.element.addEventListener(\"keydown\",function(t){var e=new Date;switch(t.keyCode){case 9:case 27:f[\"default\"].hide();break;case 38:n.element.valueAsDate&&(e.setDate(n.element.valueAsDate.getDate()+1),n.element.valueAsDate=e,f[\"default\"].pingInput());break;case 40:n.element.valueAsDate&&(e.setDate(n.element.valueAsDate.getDate()-1),n.element.valueAsDate=e,f[\"default\"].pingInput())}f[\"default\"].sync()}),this.element.addEventListener(\"keyup\",function(t){f[\"default\"].sync()})}return(0,c[\"default\"])(t,[{key:\"getLocaleText\",value:function(){var t=this.locale.toLowerCase();for(var e in p[\"default\"]){var n=e.split(\"_\");if(n.map(function(t){return t.toLowerCase()}),~n.indexOf(t)||~n.indexOf(t.substr(0,2)))return p[\"default\"][e]}}}],[{key:\"supportsDateInput\",value:function(){var t=document.createElement(\"input\");t.setAttribute(\"type\",\"date\");var e=\"not-a-date\";return t.setAttribute(\"value\",e),!(t.value===e)}},{key:\"addPickerToDateInputs\",value:function(){var e=document.querySelectorAll('input[type=\"date\"]:not([data-has-picker])'),n=e.length;if(!n)return!1;for(var r=0;r\"],n=0,r=this.locale.days.length;n'+this.locale.days[n]+\"\");this.daysHead.innerHTML=e.join(\"\"),t.createRangeSelect(this.month,0,11,this.locale.months)}},{key:\"refreshDaysMatrix\",value:function(){this.refreshLocale();for(var e=this.date.getFullYear(),n=this.date.getMonth(),r=new Date(e,n,1).getDay(),o=new Date(this.date.getFullYear(),n+1,0).getDate(),i=t.absoluteDate(this.input.valueAsDate)||!1,a=i&&e===i.getFullYear()&&n===i.getMonth(),u=[],s=0;s\":\"\")+\"\\n \\n \"),s+1<=r)u.push(\"\");else{var c=s+1-r,l=a&&i.getDate()===c;u.push(\"\\n \"+c+\"\\n \")}this.days.innerHTML=u.join(\"\")}},{key:\"pingInput\",value:function(){var t=void 0,e=void 0;try{t=new Event(\"input\"),e=new Event(\"change\")}catch(n){t=document.createEvent(\"KeyboardEvent\"),t.initEvent(\"input\",!0,!1),e=document.createEvent(\"KeyboardEvent\"),e.initEvent(\"change\",!0,!1)}this.input.dispatchEvent(t),this.input.dispatchEvent(e)}}],[{key:\"createRangeSelect\",value:function(t,e,n,r){t.innerHTML=\"\";for(var o=e;o<=n;++o){var i=document.createElement(\"option\");t.appendChild(i);var a=r?r[o-e]:o;i.text=a,i.value=o}return t}},{key:\"absoluteDate\",value:function(t){return t&&new Date(t.getTime()+60*t.getTimezoneOffset()*1e3)}}]),t}();window.thePicker=new s,e[\"default\"]=window.thePicker},function(t,e,n){t.exports={\"default\":n(49),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(50),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(51),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(52),__esModule:!0}},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}e.__esModule=!0;var o=n(47),i=r(o),a=n(46),u=r(a),s=\"function\"==typeof u[\"default\"]&&\"symbol\"==typeof i[\"default\"]?function(t){return typeof t}:function(t){return t&&\"function\"==typeof u[\"default\"]&&t.constructor===u[\"default\"]?\"symbol\":typeof t};e[\"default\"]=\"function\"==typeof u[\"default\"]&&\"symbol\"===s(i[\"default\"])?function(t){return\"undefined\"==typeof t?\"undefined\":s(t)}:function(t){return t&&\"function\"==typeof u[\"default\"]&&t.constructor===u[\"default\"]?\"symbol\":\"undefined\"==typeof t?\"undefined\":s(t)}},function(t,e,n){n(73);var r=n(8).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){n(74);var r=n(8).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){n(77),n(75),n(78),n(79),t.exports=n(8).Symbol},function(t,e,n){n(76),n(80),t.exports=n(27).f(\"iterator\")},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports=function(){}},function(t,e,n){var r=n(5),o=n(70),i=n(69);t.exports=function(t){return function(e,n,a){var u,s=r(e),c=o(s.length),l=i(a,c);if(t&&n!=n){for(;c>l;)if(u=s[l++],u!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(53);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(13),o=n(37),i=n(20);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),s=i.f,c=0;u.length>c;)s.call(t,a=u[c++])&&e.push(a);return e}},function(t,e,n){t.exports=n(2).document&&document.documentElement},function(t,e,n){var r=n(30);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},function(t,e,n){var r=n(30);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,e,n){\"use strict\";var r=n(34),o=n(14),i=n(21),a={};n(6)(a,n(7)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+\" Iterator\")}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(13),o=n(5);t.exports=function(t,e){for(var n,i=o(t),a=r(i),u=a.length,s=0;u>s;)if(i[n=a[s++]]===e)return n}},function(t,e,n){var r=n(15)(\"meta\"),o=n(12),i=n(3),a=n(4).f,u=0,s=Object.isExtensible||function(){return!0},c=!n(11)(function(){return s(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:\"O\"+ ++u,w:{}}})},f=function(t,e){if(!o(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!i(t,r)){if(!s(t))return\"F\";if(!e)return\"E\";l(t)}return t[r].i},d=function(t,e){if(!i(t,r)){if(!s(t))return!0;if(!e)return!1;l(t)}return t[r].w},p=function(t){return c&&h.NEED&&s(t)&&!i(t,r)&&l(t),t},h=t.exports={KEY:r,NEED:!1,fastKey:f,getWeak:d,onFreeze:p}},function(t,e,n){var r=n(20),o=n(14),i=n(5),a=n(25),u=n(3),s=n(32),c=Object.getOwnPropertyDescriptor;e.f=n(1)?c:function(t,e){if(t=i(t),e=a(e,!0),s)try{return c(t,e)}catch(n){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(5),o=n(36).f,i={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&\"[object Window]\"==i.call(t)?u(t):o(r(t))}},function(t,e,n){var r=n(3),o=n(71),i=n(22)(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(24),o=n(16);t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),s=r(n),c=u.length;return s<0||s>=c?t?\"\":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):i:t?u.slice(s,s+2):(i-55296<<10)+(a-56320)+65536)}}},function(t,e,n){var r=n(24),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(24),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(16);t.exports=function(t){return Object(r(t))}},function(t,e,n){\"use strict\";var r=n(54),o=n(62),i=n(18),a=n(5);t.exports=n(33)(Array,\"Array\",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):\"keys\"==e?o(0,n):\"values\"==e?o(0,t[n]):o(0,[n,t[n]])},\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(t,e,n){var r=n(10);r(r.S+r.F*!n(1),\"Object\",{defineProperties:n(35)})},function(t,e,n){var r=n(10);r(r.S+r.F*!n(1),\"Object\",{defineProperty:n(4).f})},function(t,e){},function(t,e,n){\"use strict\";var r=n(68)(!0);n(33)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){\"use strict\";var r=n(2),o=n(3),i=n(1),a=n(10),u=n(39),s=n(64).KEY,c=n(11),l=n(23),f=n(21),d=n(15),p=n(7),h=n(27),y=n(26),m=n(63),v=n(57),b=n(60),g=n(9),x=n(5),M=n(25),w=n(14),S=n(34),O=n(66),D=n(65),T=n(4),_=n(13),A=D.f,k=T.f,E=O.f,j=r.Symbol,C=r.JSON,N=C&&C.stringify,L=\"prototype\",P=p(\"_hidden\"),F=p(\"toPrimitive\"),J={}.propertyIsEnumerable,H=l(\"symbol-registry\"),I=l(\"symbols\"),Y=l(\"op-symbols\"),R=Object[L],z=\"function\"==typeof j,U=r.QObject,B=!U||!U[L]||!U[L].findChild,W=i&&c(function(){return 7!=S(k({},\"a\",{get:function(){return k(this,\"a\",{value:7}).a}})).a})?function(t,e,n){var r=A(R,e);r&&delete R[e],k(t,e,n),r&&t!==R&&k(R,e,r)}:k,Z=function(t){var e=I[t]=S(j[L]);return e._k=t,e},G=z&&\"symbol\"==typeof j.iterator?function(t){return\"symbol\"==typeof t}:function(t){return t instanceof j},K=function(t,e,n){return t===R&&K(Y,e,n),g(t),e=M(e,!0),g(n),o(I,e)?(n.enumerable?(o(t,P)&&t[P][e]&&(t[P][e]=!1),n=S(n,{enumerable:w(0,!1)})):(o(t,P)||k(t,P,w(1,{})),t[P][e]=!0),W(t,e,n)):k(t,e,n)},V=function(t,e){g(t);for(var n,r=v(e=x(e)),o=0,i=r.length;i>o;)K(t,n=r[o++],e[n]);return t},q=function(t,e){return void 0===e?S(t):V(S(t),e)},Q=function(t){var e=J.call(this,t=M(t,!0));return!(this===R&&o(I,t)&&!o(Y,t))&&(!(e||!o(this,t)||!o(I,t)||o(this,P)&&this[P][t])||e)},X=function(t,e){if(t=x(t),e=M(e,!0),t!==R||!o(I,e)||o(Y,e)){var n=A(t,e);return!n||!o(I,e)||o(t,P)&&t[P][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=E(x(t)),r=[],i=0;n.length>i;)o(I,e=n[i++])||e==P||e==s||r.push(e);return r},tt=function(t){for(var e,n=t===R,r=E(n?Y:x(t)),i=[],a=0;r.length>a;)!o(I,e=r[a++])||n&&!o(R,e)||i.push(I[e]);return i};z||(j=function(){if(this instanceof j)throw TypeError(\"Symbol is not a constructor!\");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===R&&e.call(Y,n),o(this,P)&&o(this[P],t)&&(this[P][t]=!1),W(this,t,w(1,n))};return i&&B&&W(R,t,{configurable:!0,set:e}),Z(t)},u(j[L],\"toString\",function(){return this._k}),D.f=X,T.f=K,n(36).f=O.f=$,n(20).f=Q,n(37).f=tt,i&&!n(19)&&u(R,\"propertyIsEnumerable\",Q,!0),h.f=function(t){return Z(p(t))}),a(a.G+a.W+a.F*!z,{Symbol:j});for(var et=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),nt=0;et.length>nt;)p(et[nt++]);for(var et=_(p.store),nt=0;et.length>nt;)y(et[nt++]);a(a.S+a.F*!z,\"Symbol\",{\"for\":function(t){return o(H,t+=\"\")?H[t]:H[t]=j(t)},keyFor:function(t){if(G(t))return m(H,t);throw TypeError(t+\" is not a symbol!\")},useSetter:function(){B=!0},useSimple:function(){B=!1}}),a(a.S+a.F*!z,\"Object\",{create:q,defineProperty:K,defineProperties:V,getOwnPropertyDescriptor:X,getOwnPropertyNames:$,getOwnPropertySymbols:tt}),C&&a(a.S+a.F*(!z||c(function(){var t=j();return\"[null]\"!=N([t])||\"{}\"!=N({a:t})||\"{}\"!=N(Object(t))})),\"JSON\",{stringify:function(t){if(void 0!==t&&!G(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return e=r[1],\"function\"==typeof e&&(n=e),!n&&b(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!G(e))return e}),r[1]=e,N.apply(C,r)}}}),j[L][F]||n(6)(j[L],F,j[L].valueOf),f(j,\"Symbol\"),f(Math,\"Math\",!0),f(r.JSON,\"JSON\",!0)},function(t,e,n){n(26)(\"asyncIterator\")},function(t,e,n){n(26)(\"observable\")},function(t,e,n){n(72);for(var r=n(2),o=n(6),i=n(18),a=n(7)(\"toStringTag\"),u=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],s=0;s<5;s++){var c=u[s],l=r[c],f=l&&l.prototype;f&&!f[a]&&o(f,a,c),i[c]=i.Array}},function(t,e,n){e=t.exports=n(82)(),e.push([t.id,\"date-input-polyfill{background:#fff;color:#000;text-shadow:none;border:0;padding:0;height:auto;width:auto;line-height:normal;font-family:sans-serif;font-size:14px;position:absolute!important;text-align:center;box-shadow:0 3px 10px 1px rgba(0,0,0,.22);cursor:default;z-index:1;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden;display:block}date-input-polyfill[data-open=false]{visibility:hidden;z-index:-100!important;top:0}date-input-polyfill[data-open=true]{visibility:visible}date-input-polyfill select,date-input-polyfill table,date-input-polyfill td,date-input-polyfill th{background:#fff;color:#000;text-shadow:none;border:0;padding:0;height:auto;width:auto;line-height:normal;font-family:sans-serif;font-size:14px;box-shadow:none;font-family:Lato,Helvetica,Arial,sans-serif}date-input-polyfill button,date-input-polyfill select{border:0;border-radius:0;border-bottom:1px solid #dadfe1;height:24px;vertical-align:top;-webkit-appearance:none;-moz-appearance:none}date-input-polyfill .monthSelect-wrapper{width:55%;display:inline-block}date-input-polyfill .yearSelect-wrapper{width:25%;display:inline-block}date-input-polyfill select{width:100%}date-input-polyfill select:first-of-type{border-right:1px solid #dadfe1;border-radius:5px 0 0 0;-moz-border-radius:5px 0 0 0;-webkit-border-radius:5px 0 0 0}date-input-polyfill button{width:20%;background:#dadfe1;border-radius:0 5px 0 0;-moz-border-radius:0 5px 0 0;-webkit-border-radius:0 5px 0 0}date-input-polyfill button:hover{background:#eee}date-input-polyfill table{border-collapse:separate!important;border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;overflow:hidden;max-width:280px;width:280px}date-input-polyfill td,date-input-polyfill th{width:32px;padding:4px;text-align:center;box-sizing:content-box}date-input-polyfill td[data-day]{cursor:pointer}date-input-polyfill td[data-day]:hover{background:#dadfe1}date-input-polyfill [data-selected]{font-weight:700;background:#d8eaf6}\",\"\"]);\r\n},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e=0&&g.splice(e,1)}function u(t){var e=document.createElement(\"style\");return e.type=\"text/css\",i(t,e),e}function s(t){var e=document.createElement(\"link\");return e.rel=\"stylesheet\",i(t,e),e}function c(t,e){var n,r,o;if(e.singleton){var i=b++;n=v||(v=u(e)),r=l.bind(null,n,i,!1),o=l.bind(null,n,i,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=s(e),r=d.bind(null,n),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=u(e),r=f.bind(null,n),o=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}function l(t,e,n,r){var o=n?\"\":r.css;if(t.styleSheet)t.styleSheet.cssText=x(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function f(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute(\"media\",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function d(t,e){var n=e.css,r=e.sourceMap;r&&(n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var o=new Blob([n],{type:\"text/css\"}),i=t.href;t.href=URL.createObjectURL(o),i&&URL.revokeObjectURL(i)}var p={},h=function(t){var e;return function(){return\"undefined\"==typeof e&&(e=t.apply(this,arguments)),e}},y=h(function(){return/msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase())}),m=h(function(){return document.head||document.getElementsByTagName(\"head\")[0]}),v=null,b=0,g=[];t.exports=function(t,e){e=e||{},\"undefined\"==typeof e.singleton&&(e.singleton=y()),\"undefined\"==typeof e.insertAt&&(e.insertAt=\"bottom\");var n=o(t);return r(n,e),function(t){for(var i=[],a=0;a 1) return num;\r\n return `0${num}`;\r\n }\r\n\r\n // PUBLIC\r\n //------------------------------------\r\n // GET\r\n function getTodaysDateObj() {\r\n const todaysDate = new Date();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n return todaysDate;\r\n }\r\n function getTodaysDateISOString() {\r\n const todaysDate = new Date();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n const dd = todaysDate.getDate();\r\n const mm = todaysDate.getMonth() + 1;\r\n const yyyy = todaysDate.getFullYear();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n function getDaysInMonth(dirtyDate) {\r\n var date = cloneDate(dirtyDate);\r\n var year = date.getFullYear();\r\n var monthIndex = date.getMonth();\r\n var lastDayOfMonth = new Date(0);\r\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\r\n lastDayOfMonth.setHours(0, 0, 0, 0);\r\n return lastDayOfMonth.getDate();\r\n }\r\n // ADD\r\n function addDays(dirtyDate, dirtyAmount) {\r\n var date = cloneDate(dirtyDate);\r\n var amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n function addWeeks(date, amount) {\r\n const days = amount * 7;\r\n return addDays(date, days);\r\n }\r\n function addMonths(dirtyDate, dirtyAmount) {\r\n var date = cloneDate(dirtyDate);\r\n var amount = toInteger(dirtyAmount);\r\n var desiredMonth = date.getMonth() + amount;\r\n var dateWithDesiredMonth = new Date(0);\r\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\r\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\r\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\r\n // Set the last day of the new month\r\n // if the original date was the last day of the longer month\r\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\r\n return date;\r\n }\r\n function addYears(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addMonths(dirtyDate, amount * 12);\r\n }\r\n // SUB\r\n function subDays(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addDays(dirtyDate, -amount);\r\n }\r\n function subWeeks(date, amount) {\r\n return addWeeks(date, -amount);\r\n }\r\n function subYears(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addYears(dirtyDate, -amount);\r\n }\r\n // WEEKS\r\n function endOfWeek(dirtyDate, dirtyOptions) {\r\n //Get the end of the week for given date\r\n /**\r\n * @name endOfWeek\r\n * @param {Date|Number} dirtyDate\r\n * @param {Object} dirtyOptions\r\n * @param {0|1|2|3|4|5|6} [weekStartsOn=0]\r\n */\r\n\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n let options = dirtyOptions || {};\r\n\r\n const weekStartsOn =\r\n options.weekStartsOn === null || options.weekStartsOn === undefined ? 0 : UTIL.toInteger(options.weekStartsOn);\r\n\r\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\r\n throw new RangeError(`weekStartsOn must be between 0 and 6 inclusively`);\r\n }\r\n\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\r\n\r\n date.setDate(date.getDate() + diff);\r\n date.setHours(23, 59, 59, 999);\r\n return date;\r\n }\r\n function startDayOfWeek(dirtyDate, dirtyOptions) {\r\n //Get the start date of week\r\n /**\r\n * @name startOfWeek\r\n * @param {Date|Number} dirtyDate\r\n * @param {Object} dirtyOptions\r\n * @param {0|1|2|3|4|5|6} [weekStartsOn=0]\r\n */\r\n\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n let options = dirtyOptions || {};\r\n\r\n const weekStartsOn =\r\n options.weekStartsOn === null || options.weekStartsOn === undefined ? 0 : util.toInteger(options.weekStartsOn);\r\n\r\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\r\n throw new RangeError(`weekStartsOn must be between 0 and 6 inclusively`);\r\n }\r\n\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n // COMPARE\r\n function isAfter(dirtyDate, dirtyDateToCompare) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var date = cloneDate(dirtyDate);\r\n var dateToCompare = cloneDate(dirtyDateToCompare);\r\n return date.getTime() > dateToCompare.getTime();\r\n }\r\n function isBefore(dirtyDate, dirtyDateToCompare) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var date = cloneDate(dirtyDate);\r\n var dateToCompare = cloneDate(dirtyDateToCompare);\r\n return date.getTime() < dateToCompare.getTime();\r\n }\r\n function isEqual(dirtyLeftDate, dirtyRightDate) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var dateLeft = cloneDate(dirtyLeftDate);\r\n var dateRight = cloneDate(dirtyRightDate);\r\n return dateLeft.getTime() === dateRight.getTime();\r\n }\r\n function isDateInCurrentWeek(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n const curentWeekStart = startDayOfWeek(currentDate);\r\n const curentWeekEnd = endOfWeek(currentDate);\r\n\r\n if (isAfter(date, curentWeekStart) && isBefore(date, curentWeekEnd)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n function isDateInFuture(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n if (isAfter(date, currentDate)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n // FORMAT\r\n function checkFormat(dateString) {\r\n // Regex pattern for ISO date format (YYYY-MM-DD)\r\n const isoFormatPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n // Adjusted Regex pattern for Standard format (M/D/YYYY or MM/DD/YYYY)\r\n const standardFormatPattern = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;\r\n\r\n if (isoFormatPattern.test(dateString)) {\r\n return 'iso';\r\n } else if (standardFormatPattern.test(dateString)) {\r\n return 'standard';\r\n } else {\r\n return '';\r\n }\r\n }\r\n function formatISO(dirtyDate, dirtyOptions) {\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n const originalDate = cloneDate(dirtyDate);\r\n\r\n if (!isValid(originalDate)) {\r\n throw new RangeError('Invalid time value');\r\n }\r\n\r\n const options = dirtyOptions || {};\r\n const format = options.format == null ? 'extended' : String(options.format);\r\n const representation = options.representation == null ? 'complete' : String(options.representation);\r\n\r\n if (format !== 'extended' && format !== 'basic') {\r\n throw new RangeError(\"format must be 'extended' or 'basic'\");\r\n }\r\n\r\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\r\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\r\n }\r\n\r\n let result = '';\r\n let tzOffset = '';\r\n\r\n const dateDelimiter = format === 'extended' ? '-' : '';\r\n const timeDelimiter = format === 'extended' ? ':' : '';\r\n\r\n // Representation is either 'date' or 'complete'\r\n if (representation !== 'time') {\r\n const day = UTIL.leadingZero(originalDate.getDate(), 2);\r\n const month = UTIL.leadingZero(originalDate.getMonth() + 1, 2);\r\n const year = UTIL.leadingZero(originalDate.getFullYear(), 4);\r\n\r\n // yyyyMMdd or yyyy-MM-dd.\r\n result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\r\n }\r\n\r\n // Representation is either 'time' or 'complete'\r\n if (representation !== 'date') {\r\n // Add the timezone.\r\n const offset = originalDate.getTimezoneOffset();\r\n\r\n if (offset !== 0) {\r\n const absoluteOffset = Math.abs(offset);\r\n const hourOffset = UTIL.leadingZero(Math.floor(absoluteOffset / 60), 2);\r\n const minuteOffset = UTIL.leadingZero(absoluteOffset % 60, 2);\r\n // If less than 0, the sign is +, because it is ahead of time.\r\n const sign = offset < 0 ? '+' : '-';\r\n\r\n tzOffset = `${sign}${hourOffset}:${minuteOffset}`;\r\n } else {\r\n tzOffset = 'Z';\r\n }\r\n\r\n const hour = UTIL.leadingZero(originalDate.getHours(), 2);\r\n const minute = UTIL.leadingZero(originalDate.getMinutes(), 2);\r\n const second = UTIL.leadingZero(originalDate.getSeconds(), 2);\r\n\r\n // If there's also date, separate it with time with 'T'\r\n const separator = result === '' ? '' : 'T';\r\n\r\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\r\n const time = [hour, minute, second].join(timeDelimiter);\r\n\r\n // HHmmss or HH:mm:ss.\r\n result = `${result}${separator}${time}${tzOffset}`;\r\n }\r\n\r\n return result;\r\n }\r\n function formateToISO(dirtyDate) {\r\n if (!dirtyDate) return;\r\n\r\n let splitBy;\r\n\r\n if (dirtyDate.indexOf('/') !== -1) {\r\n splitBy = '/';\r\n } else if (dirtyDate.indexOf('-') !== -1) {\r\n splitBy = '-';\r\n } else {\r\n return 'Invalid Date String';\r\n }\r\n\r\n const date = dirtyDate.split(splitBy);\r\n\r\n if (date[0].length === 4) {\r\n return dirtyDate;\r\n }\r\n\r\n const YYYY = date[2];\r\n const MM = leadingZero(date[0]);\r\n const DD = leadingZero(date[1]);\r\n\r\n return `${YYYY}-${MM}-${DD}`;\r\n }\r\n function formateToStandard(dirtyDate, joinBy, opts) {\r\n var shorten = opts ? opts.shortenYear : false;\r\n var date = dirtyDate.split('-');\r\n var MM = leadingZero(date[1]);\r\n var DD = leadingZero(date[2]);\r\n var YYYY = shorten ? date[0].substring(0, 2) : date[0];\r\n\r\n if (joinBy) {\r\n return `${MM}${joinBy}${DD}${joinBy}${YYYY}`;\r\n }\r\n\r\n return `${MM}/${DD}/${YYYY}`;\r\n }\r\n // INTERVALS\r\n function eachDayOfInterval(interval, options) {\r\n const startDate = toDate(interval.start);\r\n const endDate = toDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\r\n if (!(startDate.getTime() <= endTime)) {\r\n throw new RangeError('Invalid interval');\r\n }\r\n\r\n const dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n const step = options?.step ?? 1;\r\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(toDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + step);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n // TIME\r\n //----------------------------------------------------------------\r\n /**\r\n * Converts a 24hr time to 12hr standard time.\r\n *\r\n * @function\r\n * @param {string} time Time you would like to convert\r\n * @returns {string} Converted time\r\n */\r\n function convertFromMilitary(time) {\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(':');\r\n var hh = parseInt(time[0]);\r\n var mm = parseInt(time[1]);\r\n var amPm = hh <= 11 ? 'AM' : 'PM';\r\n\r\n if (hh === 0) hh = 12;\r\n if (amPm === 'PM' && hh !== 12) hh -= 12;\r\n\r\n return `${hh}:${leadingZero(mm)} ${amPm}`;\r\n }\r\n /**\r\n * Converts a 12hr time to 24hr military time.\r\n *\r\n * @function\r\n * @param {string} time Time you would like to convert\r\n * @returns {string} Converted time\r\n */\r\n function convertToMilitary(time) {\r\n // time format must be hh:mm am/pm\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(' ');\r\n timeString = time[0].split(':');\r\n\r\n var amPM = time[1].toLowerCase();\r\n var hh = parseInt(timeString[0]);\r\n var mm = parseInt(timeString[1]);\r\n\r\n if (amPM === 'pm' && hh !== 12) hh += 12;\r\n if (amPM === 'am' && hh === 12) hh = 0;\r\n\r\n return `${leadingZero(hh)}:${leadingZero(mm)}:00`;\r\n }\r\n /**\r\n * Formats the time as HH:MM:SS from a given number of seconds.\r\n *\r\n * @param {number} totalSeconds - The total number of seconds to format.\r\n * @return {string} - The formatted time string.\r\n */\r\n function formatSecondsToFullTime(totalSeconds) {\r\n if (!totalSeconds) return '00:00:00';\r\n var hours = Math.floor(totalSeconds / 3600);\r\n var minutes = Math.floor((totalSeconds - hours * 3600) / 60);\r\n var seconds = totalSeconds % 60;\r\n\r\n return [_UTIL.padNumberWithZero(hours), _UTIL.padNumberWithZero(minutes), _UTIL.padNumberWithZero(seconds)].join(\r\n ':',\r\n );\r\n }\r\n /**\r\n * Calculates the time difference between two military time values.\r\n *\r\n * @param {string} startTime - The start time in military format (e.g., \"14:00\").\r\n * @param {string} endTime - The end time in military format (e.g., \"16:30\").\r\n * @param {boolean} [format=true] - If true, returns the time difference formatted as a string with hours and minutes.\r\n * If false, returns only the total minutes as a formatted string.\r\n * @returns {string} The time difference as a formatted string. If `format` is true, the difference is returned\r\n * in terms of hours and minutes (e.g., \"2 hrs 30 mins\"). If `format` is false, the difference\r\n * is returned as total minutes (e.g., \"150 mins\").\r\n *\r\n * @example\r\n * // Returns \"2 hrs 30 mins\"\r\n * getMilitaryTimeDifference(\"14:00\", \"16:30\", true);\r\n *\r\n * @example\r\n * // Returns \"150 mins\"\r\n * getMilitaryTimeDifference(\"14:00\", \"16:30\", false);\r\n */\r\n function getMilitaryTimeDifference(startTime, endTime, format = true) {\r\n const startDate = new Date(`1970-01-01T${startTime}`);\r\n const endDate = new Date(`1970-01-01T${endTime}`);\r\n\r\n const timeDifference = endDate - startDate;\r\n\r\n // Calculate total time in minutes\r\n const totalMinutes = Math.floor(timeDifference / 60000);\r\n\r\n if (format) {\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n\r\n const formattedTime = [];\r\n if (hours > 0) {\r\n formattedTime.push(`${hours} ${hours === 1 ? 'hr' : 'hrs'}`);\r\n }\r\n if (minutes > 0) {\r\n formattedTime.push(`${minutes} ${minutes === 1 ? 'min' : 'mins'}`);\r\n }\r\n\r\n return formattedTime.join(' ');\r\n } else {\r\n // Return total minutes in formatted string\r\n return `${totalMinutes} ${totalMinutes === 1 ? 'min' : 'mins'}`;\r\n }\r\n }\r\n /**\r\n *\r\n * @param {*} date\r\n * @returns\r\n */\r\n function removeTimestamp(date) {\r\n const splitDate = date.split(' ');\r\n return `${splitDate[0]}`;\r\n }\r\n\r\n return {\r\n getTodaysDateObj,\r\n getTodaysDateISOString,\r\n getDaysInMonth,\r\n addDays,\r\n addWeeks,\r\n addMonths,\r\n addYears,\r\n subDays,\r\n subWeeks,\r\n subYears,\r\n endOfWeek,\r\n startDayOfWeek,\r\n isAfter,\r\n isBefore,\r\n isEqual,\r\n isDateInCurrentWeek,\r\n isDateInFuture,\r\n checkFormat,\r\n formatISO,\r\n formateToISO,\r\n formateToStandard,\r\n eachDayOfInterval,\r\n // TIME\r\n convertFromMilitary,\r\n convertToMilitary,\r\n formatSecondsToFullTime,\r\n getMilitaryTimeDifference,\r\n removeTimestamp,\r\n };\r\n})();\r\n","// Layout API\r\n// Handles DOM Manipulation\r\nconst DOM = (function () {\r\n var BODY = document.body;\r\n var GRID_CONTAINER = document.querySelector('.grid-container');\r\n var ACTIONCENTER = document.getElementById('actioncenter');\r\n\r\n function autosizeTextarea(textarea) {\r\n // autosizeTextarea() takes a callback incase you need to call\r\n // a function after the textarea has been resized.\r\n // ---------------------------------------------------------------\r\n // if (textarea) {\r\n // textarea.style.height = textarea.scrollHeight + 'px';\r\n // textarea.addEventListener('input', () => {\r\n // textarea.style.height = 'auto';\r\n // textarea.style.height = textarea.scrollHeight + 'px';\r\n // });\r\n // return;\r\n // }\r\n\r\n var textareas = [].slice.call(document.querySelectorAll('textarea.autosize'));\r\n textareas.forEach(area => {\r\n area.style.height = area.scrollHeight + 'px';\r\n area.addEventListener('input', () => {\r\n area.style.height = 'auto';\r\n area.style.height = area.scrollHeight + 'px';\r\n });\r\n });\r\n }\r\n\r\n function clearActionCenter() {\r\n var actioncenter = document.getElementById('actioncenter');\r\n actioncenter.innerHTML = '';\r\n }\r\n\r\n function toggleHeaderOpacity() {\r\n var header = document.querySelector('.site-header');\r\n header.classList.toggle('fadeOut');\r\n }\r\n\r\n function toggleNavLayout() {\r\n if (isMobile) {\r\n // only for mobile navigation\r\n var actionBtn = document.querySelector('.floatingActionBtn');\r\n var nav = document.querySelector('.nav__mobile');\r\n if (actionBtn && !actionBtn.classList.contains('hidden')) {\r\n nav.classList.add('actionBtnActive');\r\n } else {\r\n nav.classList.remove('actionBtnActive');\r\n }\r\n }\r\n }\r\n\r\n function requestAnimFrame(cb) {\r\n return (\r\n window.requestAnimationFrame(cb) ||\r\n window.webkitRequestAnimationFrame(cb) ||\r\n window.mozRequestAnimationFrame(cb) ||\r\n window.msRequestAnimationFrame(cb) ||\r\n function (cb) {\r\n setTimeout(cb, 0);\r\n }\r\n );\r\n }\r\n\r\n function scrollToTopOfPage() {\r\n document.body.scrollTop = 0; // Safari\r\n document.documentElement.scrollTop = 0; // Chrome & IE\r\n }\r\n\r\n return {\r\n // dome elements\r\n BODY,\r\n GRID_CONTAINER,\r\n ACTIONCENTER,\r\n // functions\r\n autosizeTextarea,\r\n clearActionCenter,\r\n toggleHeaderOpacity,\r\n toggleNavLayout,\r\n requestAnimFrame,\r\n scrollToTopOfPage,\r\n };\r\n})();\r\n","/**\r\n * Copyright 2019 Google LLC. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @name MarkerClusterer for Google Maps v3\r\n * @author Luke Mahe\r\n * @fileoverview\r\n * The library creates and manages per-zoom-level clusters for large amounts of\r\n * markers.\r\n */\r\n\r\n/**\r\n * A Marker Clusterer that clusters markers.\r\n *\r\n * @param {google.maps.Map} map The Google map to attach to.\r\n * @param {Array.=} opt_markers Optional markers to add to\r\n * the cluster.\r\n * @param {Object=} opt_options support the following options:\r\n * 'gridSize': (number) The grid size of a cluster in pixels.\r\n * 'maxZoom': (number) The maximum zoom level that a marker can be part of a\r\n * cluster.\r\n * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a\r\n * cluster is to zoom into it.\r\n * 'imagePath': (string) The base URL where the images representing\r\n * clusters will be found. The full URL will be:\r\n * {imagePath}[1-5].{imageExtension}\r\n * Default: '../images/m'.\r\n * 'imageExtension': (string) The suffix for images URL representing\r\n * clusters will be found. See _imagePath_ for details.\r\n * Default: 'png'.\r\n * 'averageCenter': (boolean) Whether the center of each cluster should be\r\n * the average of all markers in the cluster.\r\n * 'minimumClusterSize': (number) The minimum number of markers to be in a\r\n * cluster before the markers are hidden and a count\r\n * is shown.\r\n * 'zIndex': (number) the z-index of a cluster.\r\n * Default: google.maps.Marker.MAX_ZINDEX + 1\r\n * 'styles': (object) An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition': (string) The position of the backgound x, y.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n */\r\n\r\nclass MarkerClusterer {\r\n constructor(map, opt_markers, opt_options) {\r\n this.extend(MarkerClusterer, google.maps.OverlayView);\r\n this.map_ = map;\r\n \r\n /**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\n this.MARKER_CLUSTER_IMAGE_PATH_ = \"../images/m\";\r\n \r\n /**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\n this.MARKER_CLUSTER_IMAGE_EXTENSION_ = \"png\";\r\n /**\r\n * @type {Array.}\r\n * @private\r\n */\r\n this.markers_ = [];\r\n \r\n /**\r\n * @type {Array.}\r\n */\r\n this.clusters_ = [];\r\n \r\n this.sizes = [53, 56, 66, 78, 90];\r\n \r\n /**\r\n * @private\r\n */\r\n this.styles_ = [];\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.ready_ = false;\r\n \r\n var options = opt_options || {};\r\n \r\n /**\r\n * @type {number}\r\n */\r\n this.zIndex_ = options[\"zIndex\"] || google.maps.Marker.MAX_ZINDEX + 1;\r\n \r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.gridSize_ = options[\"gridSize\"] || 60;\r\n \r\n /**\r\n * @private\r\n */\r\n this.minClusterSize_ = options[\"minimumClusterSize\"] || 2;\r\n \r\n /**\r\n * @type {?number}\r\n * @private\r\n */\r\n this.maxZoom_ = options[\"maxZoom\"] || null;\r\n \r\n this.styles_ = options[\"styles\"] || [];\r\n \r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imagePath_ = options[\"imagePath\"] || this.MARKER_CLUSTER_IMAGE_PATH_;\r\n \r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imageExtension_ =\r\n options[\"imageExtension\"] || this.MARKER_CLUSTER_IMAGE_EXTENSION_;\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.zoomOnClick_ = true;\r\n \r\n if (options[\"zoomOnClick\"] != undefined) {\r\n this.zoomOnClick_ = options[\"zoomOnClick\"];\r\n }\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.averageCenter_ = false;\r\n \r\n if (options[\"averageCenter\"] != undefined) {\r\n this.averageCenter_ = options[\"averageCenter\"];\r\n }\r\n \r\n this.setupStyles_();\r\n \r\n this.setMap(map);\r\n \r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.prevZoom_ = this.map_.getZoom();\r\n \r\n // Add the map event listeners\r\n var that = this;\r\n google.maps.event.addListener(this.map_, \"zoom_changed\", function() {\r\n // Determines map type and prevent illegal zoom levels\r\n var zoom = that.map_.getZoom();\r\n var minZoom = that.map_.minZoom || 0;\r\n var maxZoom = Math.min(\r\n that.map_.maxZoom || 100,\r\n that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom\r\n );\r\n zoom = Math.min(Math.max(zoom, minZoom), maxZoom);\r\n \r\n if (that.prevZoom_ != zoom) {\r\n that.prevZoom_ = zoom;\r\n that.resetViewport();\r\n }\r\n });\r\n \r\n google.maps.event.addListener(this.map_, \"idle\", function() {\r\n that.redraw();\r\n });\r\n \r\n // Finally, add the markers\r\n if (\r\n opt_markers &&\r\n (opt_markers.length || Object.keys(opt_markers).length)\r\n ) {\r\n this.addMarkers(opt_markers, false);\r\n }\r\n }\r\n \r\n /**\r\n * Extends a objects prototype by anothers.\r\n *\r\n * @param {Object} obj1 The object to be extended.\r\n * @param {Object} obj2 The object to extend with.\r\n * @return {Object} The new extended object.\r\n * @ignore\r\n */\r\n extend(obj1, obj2) {\r\n return function(object) {\r\n for (var property in object.prototype) {\r\n this.prototype[property] = object.prototype[property];\r\n }\r\n return this;\r\n }.apply(obj1, [obj2]);\r\n }\r\n \r\n /**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\n onAdd() {\r\n this.setReady_(true);\r\n }\r\n \r\n /**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\n draw() {}\r\n \r\n /**\r\n * Sets up the styles object.\r\n *\r\n * @private\r\n */\r\n setupStyles_() {\r\n if (this.styles_.length) {\r\n return;\r\n }\r\n \r\n for (var i = 0, size; (size = this.sizes[i]); i++) {\r\n this.styles_.push({\r\n url: this.imagePath_ + (i + 1) + \".\" + this.imageExtension_,\r\n height: size,\r\n width: size\r\n });\r\n }\r\n }\r\n \r\n /**\r\n * Fit the map to the bounds of the markers in the clusterer.\r\n */\r\n fitMapToMarkers() {\r\n var markers = this.getMarkers();\r\n var bounds = new google.maps.LatLngBounds();\r\n for (var i = 0, marker; (marker = markers[i]); i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n \r\n this.map_.fitBounds(bounds);\r\n }\r\n \r\n /**\r\n * @param {number} zIndex\r\n */\r\n setZIndex(zIndex) {\r\n this.zIndex_ = zIndex;\r\n }\r\n \r\n /**\r\n * @return {number}\r\n */\r\n getZIndex() {\r\n return this.zIndex_;\r\n }\r\n \r\n /**\r\n * Sets the styles.\r\n *\r\n * @param {Object} styles The style to set.\r\n */\r\n setStyles(styles) {\r\n this.styles_ = styles;\r\n }\r\n \r\n /**\r\n * Gets the styles.\r\n *\r\n * @return {Object} The styles object.\r\n */\r\n getStyles() {\r\n return this.styles_;\r\n }\r\n \r\n /**\r\n * Whether zoom on click is set.\r\n *\r\n * @return {boolean} True if zoomOnClick_ is set.\r\n */\r\n isZoomOnClick() {\r\n return this.zoomOnClick_;\r\n }\r\n \r\n /**\r\n * Whether average center is set.\r\n *\r\n * @return {boolean} True if averageCenter_ is set.\r\n */\r\n isAverageCenter() {\r\n return this.averageCenter_;\r\n }\r\n \r\n /**\r\n * Returns the array of markers in the clusterer.\r\n *\r\n * @return {Array.} The markers.\r\n */\r\n getMarkers() {\r\n return this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the number of markers in the clusterer\r\n *\r\n * @return {Number} The number of markers.\r\n */\r\n getTotalMarkers() {\r\n return this.markers_.length;\r\n }\r\n \r\n /**\r\n * Sets the max zoom for the clusterer.\r\n *\r\n * @param {number} maxZoom The max zoom level.\r\n */\r\n setMaxZoom(maxZoom) {\r\n this.maxZoom_ = maxZoom;\r\n }\r\n \r\n /**\r\n * Gets the max zoom for the clusterer.\r\n *\r\n * @return {number} The max zoom level.\r\n */\r\n getMaxZoom() {\r\n return this.maxZoom_;\r\n }\r\n \r\n /**\r\n * The function for calculating the cluster icon image.\r\n *\r\n * @param {Array.} markers The markers in the clusterer.\r\n * @param {number} numStyles The number of styles available.\r\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\r\n * @private\r\n */\r\n calculator_(markers, numStyles) {\r\n var index = 0;\r\n var count = markers.length;\r\n var dv = count;\r\n while (dv !== 0) {\r\n dv = parseInt(dv / 10, 10);\r\n index++;\r\n }\r\n \r\n index = Math.min(index, numStyles);\r\n return {\r\n text: count,\r\n index: index\r\n };\r\n }\r\n \r\n /**\r\n * Set the calculator function.\r\n *\r\n * @param {function(Array, number)} calculator The function to set as the\r\n * calculator. The function should return a object properties:\r\n * 'text' (string) and 'index' (number).\r\n *\r\n */\r\n setCalculator(calculator) {\r\n this.calculator_ = calculator;\r\n }\r\n \r\n /**\r\n * Get the calculator function.\r\n *\r\n * @return {function(Array, number)} the calculator function.\r\n */\r\n getCalculator() {\r\n return this.calculator_;\r\n }\r\n \r\n /**\r\n * Add an array of markers to the clusterer.\r\n *\r\n * @param {Array.} markers The markers to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\n addMarkers(markers, opt_nodraw) {\r\n if (markers.length) {\r\n for (let i = 0, marker; (marker = markers[i]); i++) {\r\n this.pushMarkerTo_(marker);\r\n }\r\n } else if (Object.keys(markers).length) {\r\n for (let marker in markers) {\r\n this.pushMarkerTo_(markers[marker]);\r\n }\r\n }\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n }\r\n \r\n /**\r\n * Pushes a marker to the clusterer.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\n pushMarkerTo_(marker) {\r\n marker.isAdded = false;\r\n if (marker[\"draggable\"]) {\r\n // If the marker is draggable add a listener so we update the clusters on\r\n // the drag end.\r\n var that = this;\r\n google.maps.event.addListener(marker, \"dragend\", function() {\r\n marker.isAdded = false;\r\n that.repaint();\r\n });\r\n }\r\n this.markers_.push(marker);\r\n }\r\n \r\n /**\r\n * Adds a marker to the clusterer and redraws if needed.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\n addMarker(marker, opt_nodraw) {\r\n this.pushMarkerTo_(marker);\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n }\r\n \r\n /**\r\n * Removes a marker and returns true if removed, false if not\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove\r\n * @return {boolean} Whether the marker was removed or not\r\n * @private\r\n */\r\n removeMarker_(marker) {\r\n var index = -1;\r\n if (this.markers_.indexOf) {\r\n index = this.markers_.indexOf(marker);\r\n } else {\r\n for (var i = 0, m; (m = this.markers_[i]); i++) {\r\n if (m == marker) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n \r\n if (index == -1) {\r\n // Marker is not in our list of markers.\r\n return false;\r\n }\r\n \r\n marker.setMap(null);\r\n \r\n this.markers_.splice(index, 1);\r\n \r\n return true;\r\n }\r\n \r\n /**\r\n * Remove a marker from the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n * @return {boolean} True if the marker was removed.\r\n */\r\n removeMarker(marker, opt_nodraw) {\r\n var removed = this.removeMarker_(marker);\r\n \r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n \r\n /**\r\n * Removes an array of markers from the cluster.\r\n *\r\n * @param {Array.} markers The markers to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n */\r\n removeMarkers(markers, opt_nodraw) {\r\n // create a local copy of markers if required\r\n // (removeMarker_ modifies the getMarkers() array in place)\r\n var markersCopy = markers === this.getMarkers() ? markers.slice() : markers;\r\n var removed = false;\r\n \r\n for (var i = 0, marker; (marker = markersCopy[i]); i++) {\r\n var r = this.removeMarker_(marker);\r\n removed = removed || r;\r\n }\r\n \r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n }\r\n }\r\n \r\n /**\r\n * Sets the clusterer's ready state.\r\n *\r\n * @param {boolean} ready The state.\r\n * @private\r\n */\r\n setReady_(ready) {\r\n if (!this.ready_) {\r\n this.ready_ = ready;\r\n this.createClusters_();\r\n }\r\n }\r\n \r\n /**\r\n * Returns the number of clusters in the clusterer.\r\n *\r\n * @return {number} The number of clusters.\r\n */\r\n getTotalClusters() {\r\n return this.clusters_.length;\r\n }\r\n \r\n /**\r\n * Returns the google map that the clusterer is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\n getMap() {\r\n return this.map_;\r\n }\r\n \r\n /**\r\n * Sets the google map that the clusterer is associated with.\r\n *\r\n * @param {google.maps.Map} map The map.\r\n */\r\n setMap(map) {\r\n this.map_ = map;\r\n }\r\n \r\n /**\r\n * Returns the size of the grid.\r\n *\r\n * @return {number} The grid size.\r\n */\r\n getGridSize() {\r\n return this.gridSize_;\r\n }\r\n \r\n /**\r\n * Sets the size of the grid.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\n setGridSize(size) {\r\n this.gridSize_ = size;\r\n }\r\n \r\n /**\r\n * Returns the min cluster size.\r\n *\r\n * @return {number} The grid size.\r\n */\r\n getMinClusterSize() {\r\n return this.minClusterSize_;\r\n }\r\n \r\n /**\r\n * Sets the min cluster size.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\n setMinClusterSize(size) {\r\n this.minClusterSize_ = size;\r\n }\r\n \r\n /**\r\n * Extends a bounds object by the grid size.\r\n *\r\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\r\n * @return {google.maps.LatLngBounds} The extended bounds.\r\n */\r\n getExtendedBounds(bounds) {\r\n var projection = this.getProjection();\r\n \r\n // Turn the bounds into latlng.\r\n var tr = new google.maps.LatLng(\r\n bounds.getNorthEast().lat(),\r\n bounds.getNorthEast().lng()\r\n );\r\n var bl = new google.maps.LatLng(\r\n bounds.getSouthWest().lat(),\r\n bounds.getSouthWest().lng()\r\n );\r\n \r\n // Convert the points to pixels and the extend out by the grid size.\r\n var trPix = projection.fromLatLngToDivPixel(tr);\r\n trPix.x += this.gridSize_;\r\n trPix.y -= this.gridSize_;\r\n \r\n var blPix = projection.fromLatLngToDivPixel(bl);\r\n blPix.x -= this.gridSize_;\r\n blPix.y += this.gridSize_;\r\n \r\n // Convert the pixel points back to LatLng\r\n var ne = projection.fromDivPixelToLatLng(trPix);\r\n var sw = projection.fromDivPixelToLatLng(blPix);\r\n \r\n // Extend the bounds to contain the new bounds.\r\n bounds.extend(ne);\r\n bounds.extend(sw);\r\n \r\n return bounds;\r\n }\r\n \r\n /**\r\n * Determins if a marker is contained in a bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\r\n * @return {boolean} True if the marker is in the bounds.\r\n * @private\r\n */\r\n isMarkerInBounds_(marker, bounds) {\r\n return bounds.contains(marker.getPosition());\r\n }\r\n \r\n /**\r\n * Clears all clusters and markers from the clusterer.\r\n */\r\n clearMarkers() {\r\n this.resetViewport(true);\r\n \r\n // Set the markers a empty array.\r\n this.markers_ = [];\r\n }\r\n \r\n /**\r\n * Clears all existing clusters and recreates them.\r\n * @param {boolean} opt_hide To also hide the marker.\r\n */\r\n resetViewport(opt_hide) {\r\n // Remove all the clusters\r\n for (let i = 0, cluster; (cluster = this.clusters_[i]); i++) {\r\n cluster.remove();\r\n }\r\n \r\n // Reset the markers to not be added and to be invisible.\r\n for (let i = 0, marker; (marker = this.markers_[i]); i++) {\r\n marker.isAdded = false;\r\n if (opt_hide) {\r\n marker.setMap(null);\r\n }\r\n }\r\n \r\n this.clusters_ = [];\r\n }\r\n \r\n /**\r\n *\r\n */\r\n repaint() {\r\n var oldClusters = this.clusters_.slice();\r\n this.clusters_.length = 0;\r\n this.resetViewport();\r\n this.redraw();\r\n \r\n // Remove the old clusters.\r\n // Do it in a timeout so the other clusters have been drawn first.\r\n setTimeout(function() {\r\n for (var i = 0, cluster; (cluster = oldClusters[i]); i++) {\r\n cluster.remove();\r\n }\r\n }, 0);\r\n }\r\n \r\n /**\r\n * Redraws the clusters.\r\n */\r\n redraw() {\r\n this.createClusters_();\r\n }\r\n \r\n /**\r\n * Calculates the distance between two latlng locations in km.\r\n * @see http://www.movable-type.co.uk/scripts/latlong.html\r\n *\r\n * @param {google.maps.LatLng} p1 The first lat lng point.\r\n * @param {google.maps.LatLng} p2 The second lat lng point.\r\n * @return {number} The distance between the two points in km.\r\n * @private\r\n */\r\n distanceBetweenPoints_(p1, p2) {\r\n if (!p1 || !p2) {\r\n return 0;\r\n }\r\n \r\n var R = 6371; // Radius of the Earth in km\r\n var dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\r\n var dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\r\n var a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos((p1.lat() * Math.PI) / 180) *\r\n Math.cos((p2.lat() * Math.PI) / 180) *\r\n Math.sin(dLon / 2) *\r\n Math.sin(dLon / 2);\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c;\r\n return d;\r\n }\r\n \r\n /**\r\n * Add a marker to a cluster, or creates a new cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\n addToClosestCluster_(marker) {\r\n var distance = 40000; // Some large number\r\n var clusterToAddTo = null;\r\n for (var i = 0, cluster; (cluster = this.clusters_[i]); i++) {\r\n var center = cluster.getCenter();\r\n if (center) {\r\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\r\n if (d < distance) {\r\n distance = d;\r\n clusterToAddTo = cluster;\r\n }\r\n }\r\n }\r\n \r\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\r\n clusterToAddTo.addMarker(marker);\r\n } else {\r\n var newCluster = new Cluster(this);\r\n newCluster.addMarker(marker);\r\n this.clusters_.push(newCluster);\r\n }\r\n }\r\n \r\n /**\r\n * Creates the clusters.\r\n *\r\n * @private\r\n */\r\n createClusters_() {\r\n if (!this.ready_) {\r\n return;\r\n }\r\n \r\n // Get our current map view bounds.\r\n // Create a new bounds object so we don't affect the map.\r\n var mapBounds = new google.maps.LatLngBounds(\r\n this.map_.getBounds().getSouthWest(),\r\n this.map_.getBounds().getNorthEast()\r\n );\r\n var bounds = this.getExtendedBounds(mapBounds);\r\n \r\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\r\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\r\n this.addToClosestCluster_(marker);\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * A cluster that contains markers.\r\n *\r\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\r\n * cluster is associated with.\r\n * @constructor\r\n * @ignore\r\n */\r\n class Cluster {\r\n constructor(markerClusterer) {\r\n this.markerClusterer_ = markerClusterer;\r\n this.map_ = markerClusterer.getMap();\r\n this.gridSize_ = markerClusterer.getGridSize();\r\n this.minClusterSize_ = markerClusterer.getMinClusterSize();\r\n this.averageCenter_ = markerClusterer.isAverageCenter();\r\n this.center_ = null;\r\n this.markers_ = [];\r\n this.bounds_ = null;\r\n this.clusterIcon_ = new ClusterIcon(\r\n this,\r\n markerClusterer.getStyles(),\r\n markerClusterer.getGridSize()\r\n );\r\n }\r\n \r\n /**\r\n * Determins if a marker is already added to the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker is already added.\r\n */\r\n isMarkerAlreadyAdded(marker) {\r\n if (this.markers_.indexOf) {\r\n return this.markers_.indexOf(marker) != -1;\r\n } else {\r\n for (var i = 0, m; (m = this.markers_[i]); i++) {\r\n if (m == marker) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * Add a marker the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @return {boolean} True if the marker was added.\r\n */\r\n addMarker(marker) {\r\n if (this.isMarkerAlreadyAdded(marker)) {\r\n return false;\r\n }\r\n \r\n if (!this.center_) {\r\n this.center_ = marker.getPosition();\r\n this.calculateBounds_();\r\n } else {\r\n if (this.averageCenter_) {\r\n var l = this.markers_.length + 1;\r\n var lat =\r\n (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\r\n var lng =\r\n (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\r\n this.center_ = new google.maps.LatLng(lat, lng);\r\n this.calculateBounds_();\r\n }\r\n }\r\n \r\n marker.isAdded = true;\r\n this.markers_.push(marker);\r\n \r\n var len = this.markers_.length;\r\n if (len < this.minClusterSize_ && marker.getMap() != this.map_) {\r\n // Min cluster size not reached so show the marker.\r\n marker.setMap(this.map_);\r\n }\r\n \r\n if (len == this.minClusterSize_) {\r\n // Hide the markers that were showing.\r\n for (var i = 0; i < len; i++) {\r\n this.markers_[i].setMap(null);\r\n }\r\n }\r\n \r\n if (len >= this.minClusterSize_) {\r\n marker.setMap(null);\r\n }\r\n \r\n this.updateIcon();\r\n return true;\r\n }\r\n \r\n /**\r\n * Returns the marker clusterer that the cluster is associated with.\r\n *\r\n * @return {MarkerClusterer} The associated marker clusterer.\r\n */\r\n getMarkerClusterer() {\r\n return this.markerClusterer_;\r\n }\r\n \r\n /**\r\n * Returns the bounds of the cluster.\r\n *\r\n * @return {google.maps.LatLngBounds} the cluster bounds.\r\n */\r\n getBounds() {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n var markers = this.getMarkers();\r\n for (var i = 0, marker; (marker = markers[i]); i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n return bounds;\r\n }\r\n \r\n /**\r\n * Removes the cluster\r\n */\r\n remove() {\r\n this.clusterIcon_.remove();\r\n this.markers_.length = 0;\r\n delete this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the number of markers in the cluster.\r\n *\r\n * @return {number} The number of markers in the cluster.\r\n */\r\n getSize() {\r\n return this.markers_.length;\r\n }\r\n \r\n /**\r\n * Returns a list of the markers in the cluster.\r\n *\r\n * @return {Array.} The markers in the cluster.\r\n */\r\n getMarkers() {\r\n return this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {google.maps.LatLng} The cluster center.\r\n */\r\n getCenter() {\r\n return this.center_;\r\n }\r\n \r\n /**\r\n * Calculated the extended bounds of the cluster with the grid.\r\n *\r\n * @private\r\n */\r\n calculateBounds_() {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\r\n }\r\n \r\n /**\r\n * Determines if a marker lies in the clusters bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker lies in the bounds.\r\n */\r\n isMarkerInClusterBounds(marker) {\r\n return this.bounds_.contains(marker.getPosition());\r\n }\r\n \r\n /**\r\n * Returns the map that the cluster is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\n getMap() {\r\n return this.map_;\r\n }\r\n \r\n /**\r\n * Updates the cluster icon\r\n */\r\n updateIcon() {\r\n var zoom = this.map_.getZoom();\r\n var mz = this.markerClusterer_.getMaxZoom();\r\n \r\n if (mz && zoom > mz) {\r\n // The zoom is greater than our max zoom so show all the markers in cluster.\r\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\r\n marker.setMap(this.map_);\r\n }\r\n return;\r\n }\r\n \r\n if (this.markers_.length < this.minClusterSize_) {\r\n // Min cluster size not yet reached.\r\n this.clusterIcon_.hide();\r\n return;\r\n }\r\n \r\n var numStyles = this.markerClusterer_.getStyles().length;\r\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\r\n this.clusterIcon_.setCenter(this.center_);\r\n this.clusterIcon_.setSums(sums);\r\n this.clusterIcon_.show();\r\n }\r\n }\r\n \r\n /**\r\n * A cluster icon\r\n *\r\n * @param {Cluster} cluster The cluster to be associated with.\r\n * @param {Object} styles An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition: (string) The background postition x, y.\r\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n * @ignore\r\n */\r\n class ClusterIcon {\r\n constructor(cluster, styles, opt_padding) {\r\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\r\n \r\n this.styles_ = styles;\r\n this.padding_ = opt_padding || 0;\r\n this.cluster_ = cluster;\r\n this.center_ = null;\r\n this.map_ = cluster.getMap();\r\n this.div_ = null;\r\n this.sums_ = null;\r\n this.visible_ = false;\r\n \r\n this.setMap(this.map_);\r\n }\r\n \r\n /**\r\n * Triggers the clusterclick event and zoom's if the option is set.\r\n */\r\n triggerClusterClick() {\r\n var clusterBounds = this.cluster_.getBounds();\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n \r\n // Trigger the clusterclick event.\r\n google.maps.event.trigger(\r\n markerClusterer.map_,\r\n \"clusterclick\",\r\n this.cluster_\r\n );\r\n \r\n if (markerClusterer.isZoomOnClick()) {\r\n // Zoom into the cluster.\r\n this.map_.fitBounds(clusterBounds);\r\n this.map_.setCenter(clusterBounds.getCenter());\r\n }\r\n }\r\n \r\n /**\r\n * Adding the cluster icon to the dom.\r\n * @ignore\r\n */\r\n onAdd() {\r\n this.div_ = document.createElement(\"DIV\");\r\n if (this.visible_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.cssText = this.createCss(pos);\r\n this.div_.innerHTML = this.sums_.text;\r\n }\r\n \r\n var panes = this.getPanes();\r\n panes.overlayMouseTarget.appendChild(this.div_);\r\n \r\n var that = this;\r\n google.maps.event.addDomListener(this.div_, \"click\", function() {\r\n that.triggerClusterClick();\r\n });\r\n }\r\n \r\n /**\r\n * Returns the position to place the div dending on the latlng.\r\n *\r\n * @param {google.maps.LatLng} latlng The position in latlng.\r\n * @return {google.maps.Point} The position in pixels.\r\n * @private\r\n */\r\n getPosFromLatLng_(latlng) {\r\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\r\n pos.x -= parseInt(this.width_ / 2, 10);\r\n pos.y -= parseInt(this.height_ / 2, 10);\r\n return pos;\r\n }\r\n \r\n /**\r\n * Draw the icon.\r\n * @ignore\r\n */\r\n draw() {\r\n if (this.visible_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.top = pos.y + \"px\";\r\n this.div_.style.left = pos.x + \"px\";\r\n }\r\n }\r\n \r\n /**\r\n * Hide the icon.\r\n */\r\n hide() {\r\n if (this.div_) {\r\n this.div_.style.display = \"none\";\r\n }\r\n this.visible_ = false;\r\n }\r\n \r\n /**\r\n * Position and show the icon.\r\n */\r\n show() {\r\n if (this.div_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.cssText = this.createCss(pos);\r\n this.div_.style.display = \"\";\r\n }\r\n this.visible_ = true;\r\n }\r\n \r\n /**\r\n * Remove the icon from the map\r\n */\r\n remove() {\r\n this.setMap(null);\r\n }\r\n \r\n /**\r\n * Implementation of the onRemove interface.\r\n * @ignore\r\n */\r\n onRemove() {\r\n if (this.div_ && this.div_.parentNode) {\r\n this.hide();\r\n this.div_.parentNode.removeChild(this.div_);\r\n this.div_ = null;\r\n }\r\n }\r\n \r\n /**\r\n * Set the sums of the icon.\r\n *\r\n * @param {Object} sums The sums containing:\r\n * 'text': (string) The text to display in the icon.\r\n * 'index': (number) The style index of the icon.\r\n */\r\n setSums(sums) {\r\n this.sums_ = sums;\r\n this.text_ = sums.text;\r\n this.index_ = sums.index;\r\n if (this.div_) {\r\n this.div_.innerHTML = sums.text;\r\n }\r\n \r\n this.useStyle();\r\n }\r\n \r\n /**\r\n * Sets the icon to the the styles.\r\n */\r\n useStyle() {\r\n var index = Math.max(0, this.sums_.index - 1);\r\n index = Math.min(this.styles_.length - 1, index);\r\n var style = this.styles_[index];\r\n this.url_ = style[\"url\"];\r\n this.height_ = style[\"height\"];\r\n this.width_ = style[\"width\"];\r\n this.textColor_ = style[\"textColor\"];\r\n this.anchor_ = style[\"anchor\"];\r\n this.textSize_ = style[\"textSize\"];\r\n this.backgroundPosition_ = style[\"backgroundPosition\"];\r\n }\r\n \r\n /**\r\n * Sets the center of the icon.\r\n *\r\n * @param {google.maps.LatLng} center The latlng to set as the center.\r\n */\r\n setCenter(center) {\r\n this.center_ = center;\r\n }\r\n \r\n /**\r\n * Create the css text based on the position of the icon.\r\n *\r\n * @param {google.maps.Point} pos The position.\r\n * @return {string} The css style text.\r\n */\r\n createCss(pos) {\r\n var style = [];\r\n style.push(\"z-index:\" + this.cluster_.markerClusterer_.getZIndex() + \";\");\r\n style.push(\"background-image:url(\" + this.url_ + \");\");\r\n var backgroundPosition = this.backgroundPosition_\r\n ? this.backgroundPosition_\r\n : \"0 0\";\r\n style.push(\"background-position:\" + backgroundPosition + \";\");\r\n \r\n if (typeof this.anchor_ === \"object\") {\r\n if (\r\n typeof this.anchor_[0] === \"number\" &&\r\n this.anchor_[0] > 0 &&\r\n this.anchor_[0] < this.height_\r\n ) {\r\n style.push(\r\n \"height:\" +\r\n (this.height_ - this.anchor_[0]) +\r\n \"px; padding-top:\" +\r\n this.anchor_[0] +\r\n \"px;\"\r\n );\r\n } else {\r\n style.push(\r\n \"height:\" + this.height_ + \"px; line-height:\" + this.height_ + \"px;\"\r\n );\r\n }\r\n if (\r\n typeof this.anchor_[1] === \"number\" &&\r\n this.anchor_[1] > 0 &&\r\n this.anchor_[1] < this.width_\r\n ) {\r\n style.push(\r\n \"width:\" +\r\n (this.width_ - this.anchor_[1]) +\r\n \"px; padding-left:\" +\r\n this.anchor_[1] +\r\n \"px;\"\r\n );\r\n } else {\r\n style.push(\"width:\" + this.width_ + \"px; text-align:center;\");\r\n }\r\n } else {\r\n style.push(\r\n \"height:\" +\r\n this.height_ +\r\n \"px; line-height:\" +\r\n this.height_ +\r\n \"px; width:\" +\r\n this.width_ +\r\n \"px; text-align:center;\"\r\n );\r\n }\r\n \r\n var txtColor = this.textColor_ ? this.textColor_ : \"black\";\r\n var txtSize = this.textSize_ ? this.textSize_ : 11;\r\n \r\n style.push(\r\n \"cursor:pointer; top:\" +\r\n pos.y +\r\n \"px; left:\" +\r\n pos.x +\r\n \"px; color:\" +\r\n txtColor +\r\n \"; position:absolute; font-size:\" +\r\n txtSize +\r\n \"px; font-family:Arial,sans-serif; font-weight:bold\"\r\n );\r\n return style.join(\"\");\r\n }\r\n }\r\n \r\n// export default MarkerClusterer;","(function (global, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(['exports'], factory);\r\n } else if (typeof exports !== \"undefined\") {\r\n factory(exports);\r\n } else {\r\n var mod = {\r\n exports: {}\r\n };\r\n factory(mod.exports);\r\n global.bodyScrollLock = mod.exports;\r\n }\r\n})(this, function (exports) {\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n function _toConsumableArray(arr) {\r\n if (Array.isArray(arr)) {\r\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\r\n arr2[i] = arr[i];\r\n }\r\n\r\n return arr2;\r\n } else {\r\n return Array.from(arr);\r\n }\r\n }\r\n\r\n // Older browsers don't support event options, feature detect it.\r\n\r\n // Adopted and modified solution from Bohdan Didukh (2017)\r\n // https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\r\n\r\n var hasPassiveEvents = false;\r\n if (typeof window !== 'undefined') {\r\n var passiveTestOptions = {\r\n get passive() {\r\n hasPassiveEvents = true;\r\n return undefined;\r\n }\r\n };\r\n window.addEventListener('testPassive', null, passiveTestOptions);\r\n window.removeEventListener('testPassive', null, passiveTestOptions);\r\n }\r\n\r\n var isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && /iP(ad|hone|od)/.test(window.navigator.platform);\r\n\r\n\r\n var locks = [];\r\n var documentListenerAdded = false;\r\n var initialClientY = -1;\r\n var previousBodyOverflowSetting = void 0;\r\n var previousBodyPaddingRight = void 0;\r\n\r\n // returns true if `el` should be allowed to receive touchmove events\r\n var allowTouchMove = function allowTouchMove(el) {\r\n return locks.some(function (lock) {\r\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n };\r\n\r\n var preventDefault = function preventDefault(rawEvent) {\r\n var e = rawEvent || window.event;\r\n\r\n // For the case whereby consumers adds a touchmove event listener to document.\r\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\r\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\r\n // the touchmove event on document will break.\r\n if (allowTouchMove(e.target)) {\r\n return true;\r\n }\r\n\r\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom)\r\n if (e.touches.length > 1) return true;\r\n\r\n if (e.preventDefault) e.preventDefault();\r\n\r\n return false;\r\n };\r\n\r\n var setOverflowHidden = function setOverflowHidden(options) {\r\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\r\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\r\n setTimeout(function () {\r\n // If previousBodyPaddingRight is already set, don't set it again.\r\n if (previousBodyPaddingRight === undefined) {\r\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\r\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\r\n\r\n if (_reserveScrollBarGap && scrollBarGap > 0) {\r\n previousBodyPaddingRight = document.body.style.paddingRight;\r\n document.body.style.paddingRight = scrollBarGap + 'px';\r\n }\r\n }\r\n\r\n // If previousBodyOverflowSetting is already set, don't set it again.\r\n if (previousBodyOverflowSetting === undefined) {\r\n previousBodyOverflowSetting = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n });\r\n };\r\n\r\n var restoreOverflowSetting = function restoreOverflowSetting() {\r\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\r\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\r\n setTimeout(function () {\r\n if (previousBodyPaddingRight !== undefined) {\r\n document.body.style.paddingRight = previousBodyPaddingRight;\r\n\r\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\r\n // can be set again.\r\n previousBodyPaddingRight = undefined;\r\n }\r\n\r\n if (previousBodyOverflowSetting !== undefined) {\r\n document.body.style.overflow = previousBodyOverflowSetting;\r\n\r\n // Restore previousBodyOverflowSetting to undefined\r\n // so setOverflowHidden knows it can be set again.\r\n previousBodyOverflowSetting = undefined;\r\n }\r\n });\r\n };\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\r\n var isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\r\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\r\n };\r\n\r\n var handleScroll = function handleScroll(event, targetElement) {\r\n var clientY = event.targetTouches[0].clientY - initialClientY;\r\n\r\n if (allowTouchMove(event.target)) {\r\n return false;\r\n }\r\n\r\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\r\n // element is at the top of its scroll\r\n return preventDefault(event);\r\n }\r\n\r\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\r\n // element is at the top of its scroll\r\n return preventDefault(event);\r\n }\r\n\r\n event.stopPropagation();\r\n return true;\r\n };\r\n\r\n var disableBodyScroll = exports.disableBodyScroll = function disableBodyScroll(targetElement, options) {\r\n if (isIosDevice) {\r\n // targetElement must be provided, and disableBodyScroll must not have been\r\n // called on this targetElement before.\r\n if (!targetElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\r\n return;\r\n }\r\n\r\n if (targetElement && !locks.some(function (lock) {\r\n return lock.targetElement === targetElement;\r\n })) {\r\n var lock = {\r\n targetElement: targetElement,\r\n options: options || {}\r\n };\r\n\r\n locks = [].concat(_toConsumableArray(locks), [lock]);\r\n\r\n targetElement.ontouchstart = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n // detect single touch\r\n initialClientY = event.targetTouches[0].clientY;\r\n }\r\n };\r\n targetElement.ontouchmove = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n // detect single touch\r\n handleScroll(event, targetElement);\r\n }\r\n };\r\n\r\n if (!documentListenerAdded) {\r\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n documentListenerAdded = true;\r\n }\r\n }\r\n } else {\r\n setOverflowHidden(options);\r\n var _lock = {\r\n targetElement: targetElement,\r\n options: options || {}\r\n };\r\n\r\n locks = [].concat(_toConsumableArray(locks), [_lock]);\r\n }\r\n };\r\n\r\n var clearAllBodyScrollLocks = exports.clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\r\n if (isIosDevice) {\r\n // Clear all locks ontouchstart/ontouchmove handlers, and the references\r\n locks.forEach(function (lock) {\r\n lock.targetElement.ontouchstart = null;\r\n lock.targetElement.ontouchmove = null;\r\n });\r\n\r\n if (documentListenerAdded) {\r\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n documentListenerAdded = false;\r\n }\r\n\r\n locks = [];\r\n\r\n // Reset initial clientY\r\n initialClientY = -1;\r\n } else {\r\n restoreOverflowSetting();\r\n locks = [];\r\n }\r\n };\r\n\r\n var enableBodyScroll = exports.enableBodyScroll = function enableBodyScroll(targetElement) {\r\n if (isIosDevice) {\r\n if (!targetElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\r\n return;\r\n }\r\n\r\n targetElement.ontouchstart = null;\r\n targetElement.ontouchmove = null;\r\n\r\n locks = locks.filter(function (lock) {\r\n return lock.targetElement !== targetElement;\r\n });\r\n\r\n if (documentListenerAdded && locks.length === 0) {\r\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n\r\n documentListenerAdded = false;\r\n }\r\n } else {\r\n locks = locks.filter(function (lock) {\r\n return lock.targetElement !== targetElement;\r\n });\r\n if (!locks.length) {\r\n restoreOverflowSetting();\r\n }\r\n }\r\n };\r\n});\r\n","const SPEECH = (function () {\r\n let speechConfig;\r\n let audioConfig;\r\n\r\n // function addSTTSingleShotEvent(btnElement, textField) {\r\n // function eventFunction() {\r\n // const recognizer = new SpeechSDK.SpeechRecognizer(\r\n // speechConfig,\r\n // audioConfig,\r\n // );\r\n // recognizer.recognizeOnceAsync(result => {\r\n // btnElement.classList.remove('disabled');\r\n // switch (result.reason) {\r\n // case SpeechSDK.ResultReason.RecognizedSpeech:\r\n // textField.firstElementChild.value += `${result.text} `;\r\n // break;\r\n // case SpeechSDK.ResultReason.NoMatch:\r\n // console.log('NOMATCH: Speech could not be recognized.');\r\n // break;\r\n // case SpeechSDK.ResultReason.Canceled:\r\n // const cancellation = CancellationDetails.fromResult(result);\r\n // console.log(`CANCELED: Reason=${cancellation.reason}`);\r\n\r\n // if (cancellation.reason == CancellationReason.Error) {\r\n // console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);\r\n // console.log(\r\n // `CANCELED: ErrorDetails=${cancellation.errorDetails}`,\r\n // );\r\n // console.log('CANCELED: Did you update the subscription info?');\r\n // }\r\n // break;\r\n // }\r\n // recognizer.close();\r\n // recognizer = undefined;\r\n // });\r\n // }\r\n // btnElement.addEventListener('click', event => {\r\n // btnElement.classList.add('disabled');\r\n // eventFunction();\r\n // });\r\n // }\r\n\r\n function addSTTContinuousRecEvent(btnElement, textField) {\r\n let listening = false;\r\n\r\n const continuousListening = (function () {\r\n const recognizer = new SpeechSDK.SpeechRecognizer(speechConfig, audioConfig);\r\n\r\n recognizer.recognizing = (s, e) => {};\r\n\r\n recognizer.recognized = (s, e) => {\r\n if (e.result.reason == SpeechSDK.ResultReason.RecognizedSpeech) {\r\n textField.firstElementChild.value += `${e.result.text} `;\r\n textField.firstChild.dispatchEvent(new Event('keyup', { bubbles: true }));\r\n // input event for autosize\r\n textField.firstChild.dispatchEvent(new Event('input', { bubbles: true }));\r\n } else if (e.result.reason == SpeechSDK.ResultReason.NoMatch) {\r\n console.log('NOMATCH: Speech could not be recognized.');\r\n }\r\n };\r\n\r\n recognizer.canceled = (s, e) => {\r\n console.log(`CANCELED: Reason=${e.reason}`);\r\n\r\n if (e.reason == CancellationReason.Error) {\r\n console.log(`\"CANCELED: ErrorCode=${e.errorCode}`);\r\n console.log(`\"CANCELED: ErrorDetails=${e.errorDetails}`);\r\n console.log('CANCELED: Did you update the subscription info?');\r\n }\r\n };\r\n\r\n function start(callback, errorCB) {\r\n recognizer.startContinuousRecognitionAsync(callback, errorCB);\r\n }\r\n function stop(callback, errorCB) {\r\n recognizer.stopContinuousRecognitionAsync(callback, errorCB);\r\n }\r\n function close() {\r\n recognizer.close();\r\n }\r\n return {\r\n start,\r\n stop,\r\n close,\r\n };\r\n })();\r\n\r\n btnElement.addEventListener('click', () => {\r\n listening = !listening;\r\n if (listening) {\r\n continuousListening.start(\r\n () => {\r\n btnElement.classList.add('stt_listening');\r\n btnElement.innerHTML = icons.microphoneFilled;\r\n },\r\n error => console.log(error),\r\n );\r\n } else {\r\n continuousListening.stop(\r\n () => {\r\n btnElement.classList.remove('stt_listening');\r\n btnElement.innerHTML = icons.microphone;\r\n },\r\n error => console.log(error),\r\n );\r\n }\r\n });\r\n\r\n //--------------\r\n // Mutation Observer for leaving section to disconnect STT API Call\r\n const observNode = document.getElementById('actioncenter');\r\n const config = { attributes: true };\r\n let observer;\r\n const callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n continuousListening.close();\r\n }\r\n }\r\n }\r\n };\r\n observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n //-------------------\r\n }\r\n\r\n function init() {\r\n try {\r\n speechConfig = SpeechSDK.SpeechConfig.fromSubscription($.session.azureSTTApi, 'eastus');\r\n speechConfig.speechRecognitionLanguage = 'en-US';\r\n speechConfig.enableDictation();\r\n speechConfig.setServiceProperty('punctuation', 'explicit', SpeechSDK.ServicePropertyChannel.UriQueryParameter);\r\n audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n return true;\r\n } catch (error) {\r\n switch (error.message) {\r\n case 'throwIfNullOrWhitespace:subscriptionKey':\r\n alert(\r\n 'Error initalizing Speech to Text. No API Key found, or API Key has been entered incorrectly. Please contact system administrator to add Azure Speech API Key.',\r\n );\r\n break;\r\n default:\r\n alert(\r\n 'Error initalizing Speech to Text. Please contact system administrator to make sure you have a valid Speech to Text connection.',\r\n );\r\n break;\r\n }\r\n console.error(error);\r\n return false;\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n //addSTTSingleShotEvent,\r\n addSTTContinuousRecEvent,\r\n };\r\n})();\r\n","const UTIL = (function () {\r\n function abbreviateDateYear(dateString) {\r\n // shortens year\r\n var dateArr = dateString.split('/');\r\n var month = dateArr[0];\r\n var day = dateArr[1];\r\n var year = dateArr[2].split('');\r\n year = `${year[2]}${year[3]}`;\r\n\r\n return `${leadingZero(month)}/${leadingZero(day)}/${year}`;\r\n }\r\n\r\n function camelize(str) {\r\n if (!str) return;\r\n return str.replace(/\\W+(.)/g, (match, chr) => {\r\n return chr.toUpperCase();\r\n });\r\n }\r\n\r\n function capitalize(str) {\r\n if (typeof str !== 'string') return '';\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n\r\n function convertFromMilitary(time) {\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(':');\r\n var hh = parseInt(time[0]);\r\n var mm = parseInt(time[1]);\r\n var amPm = hh <= 11 ? 'AM' : 'PM';\r\n\r\n if (hh === 0) hh = 12;\r\n if (amPm === 'PM' && hh !== 12) hh -= 12;\r\n\r\n return `${hh}:${leadingZero(mm)} ${amPm}`;\r\n }\r\n\r\n /**\r\n * Converts a 12hr time to 24hr military time.\r\n * @param {string} time - Time you would like to convert. Must be in this format: 'HH:MM am|pm'\r\n * @returns {string} Converted time\r\n */\r\n function convertToMilitary(time) {\r\n // time format must be hh:mm am/pm\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(' ');\r\n timeString = time[0].split(':');\r\n\r\n var amPM = time[1].toLowerCase();\r\n var hh = parseInt(timeString[0]);\r\n var mm = parseInt(timeString[1]);\r\n\r\n if (amPM === 'pm' && hh !== 12) hh += 12;\r\n if (amPM === 'am' && hh === 12) hh = 0;\r\n\r\n return `${leadingZero(hh)}:${leadingZero(mm)}:00`;\r\n }\r\n\r\n /**\r\n * Calculates the total number of hours between the start and end\r\n * @param {string} dirtyStart Start Time (24hr military time)\r\n * @param {string} dirtyEnd End Time (24hr military time)\r\n * @returns {string} Total number of hours\r\n */\r\n function calculateTotalHours(dirtyStart, dirtyEnd, format) {\r\n // must be military time\r\n if (dirtyStart === '' || dirtyEnd === '' || !dirtyStart || !dirtyEnd) {\r\n return;\r\n }\r\n\r\n var startTime = dirtyStart.split(':');\r\n var endTime = dirtyEnd.split(':');\r\n\r\n var tempDate = new Date();\r\n var year = tempDate.getFullYear();\r\n var month = tempDate.getMonth();\r\n var day = tempDate.getDate();\r\n\r\n var startDate = new Date(year, month, day, startTime[0], startTime[1]);\r\n var endDate;\r\n if (dirtyEnd === '00:00') {\r\n endDate = new Date(year, month, day + 1, endTime[0], endTime[1]);\r\n } else {\r\n endDate = new Date(year, month, day, endTime[0], endTime[1]);\r\n }\r\n\r\n var timeDiff = endDate - startDate;\r\n var hoursDiff = Math.floor((timeDiff % 86400000) / 3600000);\r\n var minutesDiff = Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n\r\n if (format === 'hh:mm') {\r\n return `${hoursDiff}:${minutesDiff}`;\r\n }\r\n\r\n return (parseInt(hoursDiff, 10) + parseFloat((minutesDiff / 60).toFixed(2))).toFixed(2);\r\n }\r\n /**\r\n * Splits the given array into a new array of the array broken into multiple chunks.\r\n * @example\r\n * // returns [[a,b,c],[d,e,f],[g,h,i]]\r\n * UTIL.chunkArray([a,b,c,d,e,f,g,h,i], 3)\r\n * @param {array} arr Array you would like to split into smaller arrays\r\n * @param {number} chunkSize Number value you would like the size of the array chunks to be split into\r\n * @returns {array[]} Returns an array of the split up array.\r\n */\r\n function chunkArray(arr, chunkSize) {\r\n var R = [];\r\n for (var i = 0, len = arr.length; i < len; i += chunkSize) R.push(arr.slice(i, i + chunkSize));\r\n return R;\r\n }\r\n\r\n function detectBrowser() {\r\n var ua = window.navigator.userAgent;\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n var ver = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n return true;\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n var versionNumber = parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n return true;\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n var versionNumber = parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n return true;\r\n }\r\n\r\n // other browser\r\n return false;\r\n }\r\n\r\n /**\r\n * Converts the given date to ISO format\r\n * @example\r\n * // returns 2020-01-01\r\n * UTIL.formatDateToIso('01/01/2020')\r\n * @param {string} dirtyDate Date you would like to be converted to ISO format. Acceptable formats are:\r\n * - MM/DD/YYYY\r\n * - MM-DD-YYYY\r\n * @returns {string} Returns the string of the date in ISO Format\r\n */\r\n function formatDateToIso(dirtyDate) {\r\n if (!dirtyDate) return;\r\n\r\n let splitBy;\r\n\r\n if (dirtyDate.indexOf('/') !== -1) {\r\n splitBy = '/';\r\n } else if (dirtyDate.indexOf('-') !== -1) {\r\n splitBy = '-';\r\n } else {\r\n return 'Invalid Date String';\r\n }\r\n\r\n const date = dirtyDate.split(splitBy);\r\n\r\n if (date[0].length === 4) {\r\n return dirtyDate;\r\n }\r\n\r\n const YYYY = date[2];\r\n const MM = leadingZero(date[0]);\r\n const DD = leadingZero(date[1]);\r\n\r\n return `${YYYY}-${MM}-${DD}`;\r\n }\r\n /**\r\n * Converts the given ISO date to a more readable format\r\n * @example\r\n * // returns 01-01-2020\r\n * UTIL.formatDateFromIso('2020-01-01', '-')\r\n * @example\r\n * // returns 01/01/2020\r\n * UTIL.formatDateFromIso('2020-01-01')\r\n * @param {string} dirtyDate - Date you would like to be converted from ISO format\r\n * - Must be YYYY-MM-DD\r\n * @param {string} [joinBy='/'] - Character you would like to seperate the MM DD and YYYY\r\n * @returns {string} Returns the cleaned date\r\n */\r\n function formatDateFromIso(dirtyDate, joinBy, opts) {\r\n var shorten = opts ? opts.shortenYear : false;\r\n var date = dirtyDate.split('-');\r\n var MM = leadingZero(date[1]);\r\n var DD = leadingZero(date[2]);\r\n var YYYY = shorten ? date[0].substring(0, 2) : date[0];\r\n\r\n if (joinBy) {\r\n return `${MM}${joinBy}${DD}${joinBy}${YYYY}`;\r\n }\r\n\r\n return `${MM}/${DD}/${YYYY}`;\r\n }\r\n\r\n /**\r\n * Converts a date object created from Date() into ISO format (YYYY-MM-DD).\r\n * @deprecated Use getFormattedDateFromDate() instead. It allows you to specify how you would like the\r\n * date to be outputted.\r\n * @param {object} dirtyDateObj - date object created from Date()\r\n * @returns {string} Returns the ISO format of the given date object\r\n */\r\n function formatDateFromDateObj(dirtyDateObj) {\r\n var dateObj = new Date(dirtyDateObj);\r\n var year = dateObj.getFullYear();\r\n var month = dateObj.getMonth();\r\n var day = dateObj.getDate();\r\n month = month + 1;\r\n\r\n return `${year}-${leadingZero(month)}-${leadingZero(day)}`;\r\n }\r\n\r\n /**\r\n * Converts a time with Hour Min and Seconds to 12hr time\r\n * @example\r\n * // returns 2:30 PM\r\n * UTIL.formatTimeString('14:30:29')\r\n * @param {string} timeString - Time you would like converted to AM PM time.\r\n * - HH:MM:SS\r\n * @returns {string} Returns the time into an Am Pm time, and strips the seconds.\r\n */\r\n function formatTimeString(timeString) {\r\n if (timeString === '') return timeString;\r\n // removes seconds and strips leading zeros then converts to standard\r\n var time = timeString.split(':');\r\n var hh = time[0].split('')[0] === '0' ? time[0].split('')[1] : time[0];\r\n var mm = time[1];\r\n\r\n return UTIL.convertFromMilitary(`${hh}:${mm}`);\r\n }\r\n\r\n /**\r\n * Converts a phone number string into a more readable format of the phone number\r\n * @example\r\n * returns 614-222-3322\r\n * UTIL.formatPhoneNumber('6142223322')\r\n * @param {string} phoneNumberString - Phone Number\r\n * @returns {string} Returs a more readable format of the phone number\r\n */\r\n function formatPhoneNumber(phoneNumberString) {\r\n var cleaned = ('' + phoneNumberString).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return `${match[1]}-${match[2]}-${match[3]}`;\r\n }\r\n return phoneNumberString;\r\n }\r\n\r\n function findAndSlice(array, value, property) {\r\n function itemFind(item) {\r\n // Check for array of objects\r\n if (typeof array[0] === 'object' && property) {\r\n return item[property] === value;\r\n } else {\r\n return item === value;\r\n }\r\n }\r\n array.splice(array.findIndex(itemFind), 1);\r\n }\r\n\r\n /**\r\n * Gets lat and long from browsers Location API\r\n * @param {function} callback Action to perform once location is found\r\n * @returns {object} Returs the position latitude and longitude\r\n */\r\n function getGeoLocation(callback) {\r\n function handleSuccess(position) {\r\n var pos = {\r\n lat: position.coords.latitude,\r\n long: position.coords.longitude,\r\n };\r\n\r\n $.session.geoLocationPosition = pos;\r\n\r\n if (callback) callback(pos);\r\n }\r\n function handleFirstRunError(error) {\r\n navigator.geolocation.getCurrentPosition(handleSuccess, handleSecondRunError, {\r\n enableHighAccuracy: false,\r\n });\r\n }\r\n function handleSecondRunError(error) {\r\n alert('Location blocked by device or browser.');\r\n }\r\n\r\n if (location.protocol === 'https:' || location.hostname === 'localhost') {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(handleSuccess, handleFirstRunError, {\r\n enableHighAccuracy: true,\r\n });\r\n } else {\r\n alert('Your browser does not support geolocation.');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Converts a date object from Date() into a date string for either display or to use in DB calls.\r\n * @param {object} date - Date object from Date()\r\n * @param {object} [options] - Options for formating the Date\r\n * @param {string} [options.separator='/'] - Seperation character for between month day and year\r\n * @param {string} [options.format] - Choose how you would like the date output to be formated:\r\n * - pass 'iso' for an ISO format (YYYY-MM-DD)\r\n * - pass 'nonIso' to have a display formated output (MM/DD/YYYY or options.separator)\r\n * @returns {string} Returns a string date with the given formating options\r\n */\r\n function getFormattedDateFromDate(date, options) {\r\n var separator = options && options.separator ? options.separator : '/';\r\n var year = date.getFullYear();\r\n\r\n var month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n var day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n var date = `${month}${separator}${day}${separator}${year}`;\r\n\r\n if (options) {\r\n if (!options.format || options.format === 'nonIso') {\r\n return date;\r\n }\r\n\r\n if (options.format === 'iso') {\r\n return formatDateToIso(date);\r\n }\r\n } else {\r\n return date;\r\n }\r\n }\r\n\r\n /** @deprecated Use getTodaysDate()\t */\r\n function getDBDateNow() {\r\n var d = new Date();\r\n return [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');\r\n }\r\n\r\n /**\r\n * Gets todays date\r\n * @param {boolean} [returnObj] - If True, function will return a Date() object rather than an ISO formated date\r\n * @returns {string|object} Returns either a date object or ISO formated string\r\n */\r\n function getTodaysDate(returnObj) {\r\n // returns iso format date\r\n var today = new Date();\r\n if (returnObj) return today;\r\n var dd = leadingZero(today.getDate());\r\n var mm = leadingZero(today.getMonth() + 1);\r\n var yyyy = today.getFullYear();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n\r\n /**\r\n * Gets the current time 24hr military time (HH:MM).\r\n * @returns {string} Returns a time string in 24hr military time.\r\n */\r\n function getCurrentTime() {\r\n var today = new Date();\r\n var hours = today.getHours();\r\n var minutes = today.getMinutes();\r\n hours = hours < 10 ? '0' + hours : hours;\r\n minutes = minutes < 10 ? '0' + minutes : minutes;\r\n var now = `${hours}:${minutes}`;\r\n return now;\r\n }\r\n\r\n function getRange(start, stop) {\r\n if (stop === undefined) {\r\n stop = start || 1;\r\n start = 0;\r\n }\r\n let arr = [];\r\n for (let i = start; i < stop; i++) {\r\n arr.push(i);\r\n }\r\n return arr;\r\n }\r\n\r\n function isObject(obj) {\r\n var type = typeof obj;\r\n return type === 'function' || (type === 'object' && !!obj);\r\n }\r\n /**\r\n * Creates a deep copy of the passed object\r\n * @param {object} src Object to copy\r\n * @returns {object} Returns the coppied object\r\n */\r\n function iterationCopy(src) {\r\n // copys an object\r\n let target = {};\r\n for (let prop in src) {\r\n if (src.hasOwnProperty(prop)) {\r\n // if the value is a nested object, recursively copy all it's properties\r\n if (isObject(src[prop])) {\r\n target[prop] = iterationCopy(src[prop]);\r\n } else {\r\n target[prop] = src[prop];\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n /**\r\n * Adds a leading 0 to the passed number.\r\n * - ONLY adds a 0 if the number is 1 character long.\r\n * - Primarly used to make numbers saveable to the DB.\r\n * @example\r\n * // returns '03'\r\n * UTIL.leadingZero(3)\r\n * // returns '11'\r\n * UTIL.leadingZero(11)\r\n * @param {number} number Number to add leading 0 to\r\n * @returns {string} Returns a string version of the number with\r\n * the number plus a 0 before it (if number is more than 1 character)\r\n */\r\n function leadingZero(number) {\r\n var num = String(number);\r\n if (num.length > 1) return num;\r\n return `0${num}`;\r\n }\r\n /**\r\n * Converts an XML string into an XMLDocument that can be accessed more easly using standard JS DOM selectors.\r\n * @param {string} xmlString An XML string\r\n * @returns {XMLDocument} Returns XMLDocument\r\n */\r\n function parseXml(xmlString) {\r\n var parser, xmlDoc, hasError;\r\n parser = new DOMParser();\r\n xmlString = xmlString.replace(/@/g, '');\r\n //xmlDoc = parser.parseFromString(xmlString, 'text/xml');\r\n try {\r\n xmlDoc = parser.parseFromString(xmlString, 'text/xml');\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n // Parse Error Check\r\n hasError = xmlDoc.documentElement.nodeName === 'parsererror' ? true : false;\r\n if (hasError) {\r\n console.error('error while parsing');\r\n } else {\r\n return xmlDoc;\r\n }\r\n }\r\n\r\n function removeDecimals(num) {\r\n if (typeof num === 'number') {\r\n return Math.floor(num);\r\n } else {\r\n return Math.floor(parseInt(num));\r\n }\r\n }\r\n\r\n function removeQuotes(string) {\r\n return string.replace(/\\\\['\\\\]|'/g, function (s) {\r\n return s === \"'\" ? '' : s;\r\n });\r\n }\r\n\r\n function toInteger(dirtyNumber) {\r\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\r\n return NaN;\r\n }\r\n\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n function removeNonIntegerCharactersFromString(inputString) {\r\n // Use a regular expression to remove non-integer characters from string\r\n return inputString.replace(/[^\\d]/g, '');\r\n}\r\n\r\n function validateTime(time) {\r\n const splitTime = time.split('.'); //Edge Chromium adds milliseconds to end of time when using time picker\r\n return /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(splitTime[0]);\r\n }\r\n\r\n function validateDateFromInput(dateString) {\r\n const dateArray = dateString.split('-');\r\n let inputDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2], 0);\r\n inputDate = formatDateFromDateObj(inputDate);\r\n\r\n return dateString == inputDate ? true : false;\r\n }\r\n\r\n /**\r\n * Removes and replaces certain characters that can't be saved into the DB.\r\n * @param {string} note Text that needs to be converted to a format that will save in the DB.\r\n * @returns {string} Returns the note that can now be saved into the DB.\r\n */\r\n function removeUnsavableNoteText(note) {\r\n if (note === null || note === undefined) return;\r\n if (note === '') return '';\r\n\r\n //if (note.indexOf(\"\\\"\") != -1) {\r\n // note = note.replace(/\\\"/g, \"\");\r\n //}\r\n if (note.indexOf('\\\\') != -1) {\r\n note = note.replace(/\\\\/g, '');\r\n }\r\n\r\n if (note.indexOf('\"') != -1) {\r\n //note = note.replace(/\\\"/g, \"\");\r\n note = note.replace(/\\\"/g, '\"');\r\n }\r\n if (note.indexOf(\"'\") != -1) {\r\n note = note.replace(/'/g, \"''\");\r\n }\r\n\r\n if (note.indexOf('\\n') != -1) {\r\n //note = note.replace(/\\n/g, \"\\\\\\\\x0a\");\r\n // note = note.replace(/\\n/g, \"\\\\r\\\\n\");\r\n }\r\n\r\n note = note.replace(' ', '');\r\n note = note.replace('\\t', '');\r\n note = note.replace(/\\t/g, '');\r\n note = note;\r\n return note;\r\n }\r\n\r\n function romanize(num) {\r\n if (!+num) return false;\r\n var digits = String(+num).split(''),\r\n key = [\r\n '',\r\n 'C',\r\n 'CC',\r\n 'CCC',\r\n 'CD',\r\n 'D',\r\n 'DC',\r\n 'DCC',\r\n 'DCCC',\r\n 'CM',\r\n '',\r\n 'X',\r\n 'XX',\r\n 'XXX',\r\n 'XL',\r\n 'L',\r\n 'LX',\r\n 'LXX',\r\n 'LXXX',\r\n 'XC',\r\n '',\r\n 'I',\r\n 'II',\r\n 'III',\r\n 'IV',\r\n 'V',\r\n 'VI',\r\n 'VII',\r\n 'VIII',\r\n 'IX',\r\n ],\r\n roman = '',\r\n i = 3;\r\n while (i--) roman = (key[+digits.pop() + i * 10] || '') + roman;\r\n return Array(+digits.join('') + 1).join('M') + roman;\r\n }\r\n /**\r\n * Builds and appends a warning popup\r\n * @param {object} opts Options For the Popup\r\n * @param {string} opts.message What do you want the warning to say\r\n * @param {boolean} [opts.hideX=false] True: X button is hidden\r\n * @param {object} opts.accept Accept options\r\n * @param {string} opts.accept.text Accept option button text\r\n * @param {function} opts.accept.callback Accept option button callback\r\n * @param {object} [opts.reject] Reject options (optional)\r\n * @param {string} [opts.reject.text] Reject option button text\r\n * @param {function} [opts.reject.callback] Reject option button callback\r\n */\r\n function warningPopup(opts) {\r\n const { message, hideX = false, accept, reject } = opts;\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: hideX,\r\n classNames: 'warning',\r\n });\r\n const acceptBtn = button.build({\r\n text: accept.text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (accept.callback) accept.callback();\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(acceptBtn);\r\n\r\n if (reject) {\r\n const rejectBtn = button.build({\r\n text: reject.text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (reject.callback) reject.callback();\r\n },\r\n });\r\n btnWrap.appendChild(rejectBtn);\r\n }\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = message;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function deromanize(str) {\r\n var str = str.toUpperCase(),\r\n validator = /^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/,\r\n token = /[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,\r\n key = {\r\n M: 1000,\r\n CM: 900,\r\n D: 500,\r\n CD: 400,\r\n C: 100,\r\n XC: 90,\r\n L: 50,\r\n XL: 40,\r\n X: 10,\r\n IX: 9,\r\n V: 5,\r\n IV: 4,\r\n I: 1,\r\n },\r\n num = 0,\r\n m;\r\n if (!(str && validator.test(str))) return false;\r\n while ((m = token.exec(str))) num += key[m[0]];\r\n return num;\r\n }\r\n /**\r\n * LS Stored as object like:\r\n * - anywstata_userid = {storage_key1:storage_value,storage_key2:value}\r\n * @function LS\r\n */\r\n const LS = (function () {\r\n /**\r\n * Returns the value of local storage for key that is passed.\r\n * @param {string} key - Local Storage Key.\r\n * @param {string} [user=$.session.UserId] - User for the key. Defaults to session user.\r\n * @returns {string} Value for key that is passed. Returns nothing if key does not exist.\r\n */\r\n function getStorage(key, user = $.session.UserId) {\r\n //\r\n const state = JSON.parse(localStorage.getItem(`anywstate_${user}`));\r\n if (state) {\r\n return state[key];\r\n } else return;\r\n }\r\n /**\r\n * Set LocalStorage key/value pair for user.\r\n * @param {string} key - Descriptive name of key. Use this same key in getStorage to get the LS value.\r\n * @param {string} value - Value you would like to set\r\n * @param {string} [user=$.session.UserId] - User for the key. Defaults to session user.\r\n */\r\n function setStorage(key, value, user = $.session.UserId) {\r\n let state = JSON.parse(localStorage.getItem(`anywstate_${user}`));\r\n if (!state) state = {};\r\n state[key] = value;\r\n return localStorage.setItem(`anywstate_${user}`, JSON.stringify(state));\r\n }\r\n return {\r\n getStorage: getStorage,\r\n setStorage: setStorage,\r\n };\r\n })();\r\n\r\n /**\r\n * Checks if the dates passed are valid and do not overlap each other\r\n * @param {string} start ISO formated date\r\n * @param {string} end ISO formated date\r\n * @returns {boolean} True = valid date range | False = date range invalid or error parsing date\r\n */\r\n function checkValidDateRange(start, end) {\r\n const startDate = Date.parse(start);\r\n const endDate = Date.parse(end);\r\n if (isNaN(startDate)) {\r\n console.error('Start date is not formatted correctly');\r\n return false;\r\n }\r\n if (isNaN(endDate)) {\r\n console.error('End date is not formatted correctly');\r\n return false;\r\n }\r\n return endDate.getTime() >= startDate.getTime();\r\n }\r\n\r\n /**\r\n * Highlights the module in the hamburger menu or side menu, signifying the module is active.\r\n * @param {string} appName Proper module name\r\n */\r\n function toggleMenuItemHighlight(appName) {\r\n var current = document.querySelector('.menu__button.active');\r\n var target;\r\n\r\n function toggleHighlight() {\r\n if (target === current) return;\r\n if (current) current.classList.remove('active');\r\n var btn = target.querySelector('.menu__button');\r\n btn.classList.add('active');\r\n }\r\n\r\n switch (appName) {\r\n case 'home': {\r\n target = document.getElementById('singlebuttondiv');\r\n break;\r\n }\r\n case 'casenotes': {\r\n target = document.getElementById('casenotessettingsdiv');\r\n break;\r\n }\r\n case 'dayservices': {\r\n target = document.getElementById('dayservicesettingsdiv');\r\n break;\r\n }\r\n case 'outcomes': {\r\n target = document.getElementById('goalssettingsdiv');\r\n break;\r\n }\r\n case 'incidenttracking': {\r\n target = document.getElementById('incidenttrackingsettingsdiv');\r\n break;\r\n }\r\n case 'roster': {\r\n target = document.getElementById('rostersettingsdiv');\r\n break;\r\n }\r\n case 'schedule': {\r\n target = document.getElementById('schedulersettingsdiv');\r\n break;\r\n }\r\n case 'timeEntry': {\r\n target = document.getElementById('singleentrysettingsdiv');\r\n break;\r\n }\r\n case 'workshop': {\r\n target = document.getElementById('workshopsettingsdiv');\r\n break;\r\n }\r\n case 'reportForms': {\r\n break;\r\n }\r\n case 'authorizations': {\r\n target = document.getElementById('authorizationsdiv');\r\n break;\r\n }\r\n case 'plan': {\r\n target = document.getElementById('plansettingsdiv');\r\n break;\r\n }\r\n case 'workflow': {\r\n target = document.getElementById('workflowsettingsdiv');\r\n break;\r\n }\r\n case 'covid': {\r\n target = document.getElementById('covidchecklistsettingsdiv');\r\n break;\r\n }\r\n case 'transportation': {\r\n target = document.getElementById('transportationsettingsdiv');\r\n break;\r\n }\r\n case 'forms': {\r\n target = document.getElementById('PDFFormssettingsdiv');\r\n break;\r\n }\r\n case 'employment': {\r\n target = document.getElementById('Employmentsettingsdiv');\r\n break;\r\n }\r\n case 'OOD': {\r\n target = document.getElementById('OODsettingsdiv');\r\n break;\r\n }\r\n case 'resetPassword': {\r\n target = document.getElementById('resetPw');\r\n break;\r\n }\r\n case 'ConsumerFinances': {\r\n target = document.getElementById('cfAccountDiv');\r\n break;\r\n }\r\n case 'CFEditAccount': {\r\n target = document.getElementById('cfEditAccountDiv');\r\n break;\r\n }\r\n case 'waitingList': {\r\n target = document.getElementById('waitingListdiv');\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n toggleHighlight();\r\n }\r\n\r\n return {\r\n abbreviateDateYear,\r\n camelize,\r\n capitalize,\r\n convertFromMilitary,\r\n convertToMilitary,\r\n calculateTotalHours,\r\n chunkArray,\r\n checkValidDateRange,\r\n detectBrowser,\r\n formatDateToIso,\r\n formatDateFromIso,\r\n formatDateFromDateObj,\r\n formatTimeString,\r\n formatPhoneNumber,\r\n findAndSlice,\r\n getGeoLocation,\r\n getFormattedDateFromDate,\r\n getDBDateNow,\r\n getTodaysDate,\r\n getCurrentTime,\r\n getRange,\r\n iterationCopy,\r\n leadingZero,\r\n parseXml,\r\n removeDecimals,\r\n removeQuotes,\r\n toInteger,\r\n removeNonIntegerCharactersFromString,\r\n validateTime,\r\n validateDateFromInput,\r\n warningPopup,\r\n removeUnsavableNoteText,\r\n romanize,\r\n deromanize,\r\n LS,\r\n toggleMenuItemHighlight,\r\n };\r\n})();\r\n","const resetPassword = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let INACTIVE_CHKBOX;\r\n let userTableData = [];\r\n let tempUserTableData = [];\r\n let displayedUsers = [];\r\n\r\n var userTable;\r\n var changePasswordPopup;\r\n var savePasswordBtn;\r\n var cancelPasswordBtn;\r\n var confirmPasswordInput;\r\n var newPasswordInput;\r\n var isCardDisabled = false;\r\n var newPasswordValue = null;\r\n var confirmPasswordValue = null;\r\n var selectedUserID;\r\n var isChecked;\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n \r\n DOM.ACTIONCENTER.appendChild(topNav); \r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n \r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n isChecked = $.session.isActiveUsers;\r\n loadReviewPage(isChecked);\r\n document.getElementById('searchBtn').click(); \r\n }\r\n\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n\r\n function changePasswordBtn() {\r\n return button.build({\r\n text: 'Change Password',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n }\r\n\r\n function buildInactiveChkBox() {\r\n return input.buildCheckbox({\r\n text: 'Show Inactives',\r\n id: 'chkInacive',\r\n callback: () => setCheckForInactiveUser(event.target),\r\n isChecked: $.session.isActiveUsers,\r\n });\r\n }\r\n\r\n function buildActiveChkBox(checked) {\r\n return input.buildCheckbox({\r\n isChecked: checked === 'Y' ? true : false,\r\n callback: () => setCheckForInactiveUser(event.target),\r\n });\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n columnHeadings: ['User Name', 'Last Name', 'First Name'],\r\n endIcon: true,\r\n secondendIconHeading: 'Active',\r\n secondendIcon: true,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n function buildChangePasswordPopup(userId, userFirstName, UserLastName) {\r\n selectedUserID = userId;\r\n var popupClassNames = isCardDisabled\r\n ? ['resetPasswordPopup', 'popup--filter', 'disabled']\r\n : ['resetPasswordPopup', 'popup--filter'];\r\n\r\n changePasswordPopup = POPUP.build({\r\n classNames: popupClassNames,\r\n hideX: true,\r\n });\r\n\r\n newPasswordInput = input.build({\r\n id: 'newPasswordInput',\r\n label: 'New Password',\r\n type: 'password',\r\n style: 'secondary',\r\n value: newPasswordValue,\r\n });\r\n\r\n confirmPasswordInput = input.build({\r\n id: 'confirmPasswordInput',\r\n label: 'Confirm Password',\r\n type: 'password',\r\n style: 'secondary',\r\n class: 'input-field__input',\r\n value: confirmPasswordValue,\r\n });\r\n\r\n savePasswordBtn = button.build({\r\n id: 'savePasswordBtn',\r\n text: 'Change',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n\r\n cancelPasswordBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n classNames: 'cancelTransBtn',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(savePasswordBtn);\r\n btnWrap.appendChild(cancelPasswordBtn);\r\n\r\n var header = document.createElement('h3');\r\n header.innerHTML = userId + ` - ` + userFirstName + ' ' + UserLastName;\r\n var headerSpace = document.createElement('h3');\r\n headerSpace.innerHTML = '';\r\n\r\n var errortext = document.createElement('div');\r\n errortext.innerHTML = `

`;\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

`;\r\n \r\n changePasswordPopup.appendChild(header);\r\n changePasswordPopup.appendChild(headerSpace);\r\n changePasswordPopup.appendChild(newPasswordInput);\r\n changePasswordPopup.appendChild(confirmPasswordInput);\r\n changePasswordPopup.appendChild(errortext);\r\n changePasswordPopup.appendChild(confirmMessage);\r\n changePasswordPopup.appendChild(btnWrap);\r\n setupChangePasswordEvents();\r\n POPUP.show(changePasswordPopup);\r\n document.getElementById('newPasswordInput').focus(); \r\n \r\n strongPassword = $.session.strongPassword;\r\n if (strongPassword === 'Y') {\r\n //is password strong? \r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n let specialCharDisplay = $.session.passwordSpecialCharacters.replaceAll(`\\\\\\\\`, `\\\\`);\r\n specialCharDisplay = specialCharDisplay.replaceAll(`\\\\\"`, `\"`);\r\n messagetext.innerHTML = `Passwords must meet all of the following requirements: Be at least ${$.session.advancedPasswordLength} characters long, \r\n have a special character(${specialCharDisplay}), have a number, and include upper and lower case letters.`;\r\n messagetext.classList.remove('password-error');\r\n }\r\n }\r\n\r\n function setupChangePasswordEvents() {\r\n savePasswordBtn.addEventListener('click', () => {\r\n savePassword();\r\n });\r\n cancelPasswordBtn.addEventListener('click', () => {\r\n POPUP.hide(changePasswordPopup);\r\n });\r\n newPasswordInput.addEventListener('keyup', event => {\r\n checkPassword();\r\n });\r\n confirmPasswordInput.addEventListener('keyup', event => {\r\n checkPassword();\r\n });\r\n }\r\n\r\n function savePassword() {\r\n const changeBtn = document.getElementById('savePasswordBtn');\r\n if (checkPassword() == 0) return;\r\n changeBtn.classList.add('disabled');\r\n\r\n let newPW = $('#newPasswordInput').val();\r\n let confirmPW = $('#confirmPasswordInput').val();\r\n newPW = newPW.replaceAll(`\\\\`, `\\\\\\\\`);\r\n newPW = newPW.replaceAll(`\"`, `\\\\\"`);\r\n newPW = newPW.replaceAll(`'`, `''`);\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n let passwordChangeError = false;\r\n let inactiveUser = false;\r\n let passwordReuseError = false;\r\n // blur focus to prevent messages from getting removed too quickly\r\n document.activeElement.blur();\r\n\r\n resetPasswordAjax.changeUserPassword(\r\n {\r\n UserID: selectedUserID,\r\n newPW: newPW,\r\n confirmPW: confirmPW,\r\n },\r\n function (results, error) {\r\n // success\r\n if (results.indexOf('Not active') != -1) {\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n inactiveUser = true;\r\n return;\r\n }\r\n if (results.indexOf('Error:611') > -1) {\r\n passwordReuseError = true;\r\n messagetext.innerHTML = 'Your new password does not meet your organizations password reuse rules. Please use a different password.';\r\n messagetext.classList.add('password-error');\r\n return;\r\n } else if (results.indexOf('Error:610') > -1) {\r\n passwordChangeError = true;\r\n } else {\r\n passwordChangeError = false;\r\n }\r\n\r\n changeBtn.classList.remove('disabled');\r\n\r\n if (inactiveUser || passwordReuseError) {\r\n return;\r\n }\r\n if (passwordChangeError) {\r\n const message = `Invalid user name or password. `;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(passwordChangeConfPOPUP);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'Password has been successfully changed for the selected user.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.hide(changePasswordPopup);\r\n POPUP.show(passwordChangeConfPOPUP);\r\n },\r\n );\r\n }\r\n\r\n function checkPassword() {\r\n var pass1 = document.getElementById('newPasswordInput');\r\n var pass2 = document.getElementById('confirmPasswordInput');\r\n var message = document.getElementById('confirmMessage');\r\n\r\n message.innerHTML = ``;\r\n $('#errortext').text(``);\r\n strongPassword = $.session.strongPassword;\r\n // PW Can't contain more than one backslash in a row\r\n if (pass1.value.match(/\\\\{2,}/g)) {\r\n $('#errortext').text(`Your password can't contain more than one \\\\ in a row.`);\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n } else {\r\n $('#errortext').text(``);\r\n }\r\n\r\n //Extra condition for whether or not a strong password is required\r\n if (strongPassword === 'N') {\r\n if (pass1.value === '' || pass2.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n }\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('savePasswordBtn').classList.remove('disabled');\r\n return 1;\r\n }\r\n } else {\r\n //if both are null\r\n if (\r\n pass1.value.length === 0 &&\r\n pass2.value.length === 0 &&\r\n $.session.changePasswordLinkSelected === ''\r\n ) {\r\n message.innerHTML = 'Please enter and confirm a new password.';\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n }\r\n\r\n //is password strong?\r\n if (IsPasswordStrong(pass1.value) !== 1) {\r\n // specialCharDisplay. Remove the escape from backslash and quote.\r\n let specialCharDisplay = $.session.passwordSpecialCharacters.replaceAll(`\\\\\\\\`, `\\\\`);\r\n specialCharDisplay = specialCharDisplay.replaceAll(`\\\\\"`, `\"`);\r\n message.innerHTML = `Passwords must meet all of the following requirements: Be at least ${$.session.advancedPasswordLength} characters long, \r\n have a special character(${specialCharDisplay}), have a number, and include upper and lower case letters.`;\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n message.classList.add('password-error');\r\n return 0;\r\n }\r\n\r\n //passwords match?\r\n if (pass1.value === '' || pass2.value === '') {\r\n message.innerHTML = 'Please enter and confirm a new password.'; \r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n }\r\n //passwords match?\r\n if (pass1.value !== pass2.value) {\r\n message.innerHTML = 'Passwords Do Not Match!';\r\n message.classList.add('password-error');\r\n document.getElementById('savePasswordBtn').classList.add('disabled');\r\n return 0;\r\n } else {\r\n message.innerHTML = '';\r\n message.classList.remove('password-error');\r\n document.getElementById('savePasswordBtn').classList.remove('disabled');\r\n return 1;\r\n }\r\n }\r\n document.getElementById('savePasswordBtn').classList.remove('disabled');\r\n return 1;\r\n }\r\n\r\n function IsPasswordStrong(password) {\r\n let preSpecialCharCheckString = $.session.passwordSpecialCharacters;\r\n // Remove the escapes, and re-add escapes after the string has been re-joined with commas.\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\\\\`, `\\\\`);\r\n preSpecialCharCheckString = preSpecialCharCheckString.replaceAll(`\\\\\"`, `\"`);\r\n const specCharNoCommas = preSpecialCharCheckString.split('');\r\n let withCommas = specCharNoCommas.join((separator = ','));\r\n // Add in escapes\r\n withCommas = withCommas.replaceAll(`\\\\`, `\\\\\\\\`);\r\n withCommas = withCommas.replaceAll(`/`, `\\\\/`);\r\n withCommas = withCommas.replaceAll(`-`, `\\\\-`);\r\n withCommas = withCommas.replaceAll(`]`, `\\\\]`);\r\n withCommas = withCommas.replaceAll(`[`, `\\\\[`);\r\n const specChar = new RegExp(`[${withCommas}]`, 'g');\r\n\r\n if (password.length < $.session.advancedPasswordLength) return 0;\r\n if (!password.match(/[a-z]/) || !password.match(/[A-Z]/)) return 0;\r\n if (!password.match(specChar)) return 0;\r\n if (/\\d/.test(password) === false) return 0;\r\n\r\n return 1;\r\n }\r\n\r\n //populate\r\n function populateTable(results, IsFirstLoad) {\r\n userTableData = results.map(td => {\r\n var userID = td.User_ID;\r\n var LastName = td.Last_Name;\r\n var FirstName = td.First_Name;\r\n var Active = td.Active;\r\n\r\n const additionalInformation = changePasswordBtn();\r\n additionalInformation.innerHTML = 'CHANGE PASSWORD';\r\n\r\n additionalInformation.style = 'margin-top: -10px; width: 200px;';\r\n const activeCheckbox = buildActiveChkBox(Active);\r\n activeCheckbox.style = \"padding-top: 2px; margin-left: 10px;\"; \r\n if ($.session.ResetPasswordUpdate) { \r\n activeCheckbox.classList.remove('disabled'); \r\n additionalInformation.classList.remove('disabled');\r\n } else {\r\n activeCheckbox.classList.add('disabled');\r\n additionalInformation.classList.add('disabled');\r\n }\r\n\r\n return {\r\n id: userID,\r\n endIcon: additionalInformation.outerHTML,\r\n secondendIcon: activeCheckbox.outerHTML,\r\n FirstName: FirstName,\r\n LastName: LastName,\r\n Active: Active,\r\n values: [userID, LastName, FirstName],\r\n attributes: [\r\n { key: 'data-status', value: Active },\r\n { key: 'data-consumer-id', value: userID },\r\n ],\r\n endIconCallback: e => {\r\n if ($.session.ResetPasswordUpdate) {\r\n buildChangePasswordPopup(userID, FirstName, LastName);\r\n }\r\n },\r\n secondendIconCallback: e => {\r\n if ($.session.ResetPasswordUpdate) {\r\n setCheckUpdateUserStatus(Active, userID); \r\n } \r\n },\r\n };\r\n });\r\n if (IsFirstLoad) {\r\n tempUserTableData = userTableData;\r\n }\r\n table.populate(userTable, userTableData, false, true);\r\n }\r\n\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n SEARCH_BTN = buildSearchBtn(); \r\n INACTIVE_CHKBOX = buildInactiveChkBox();\r\n\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search users');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n INACTIVE_CHKBOX.classList.add('chkBoxStyle'); \r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap1.appendChild(INACTIVE_CHKBOX);\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n INACTIVE_CHKBOX.addEventListener('change', event => {\r\n isChecked = event.target.checked;\r\n $.session.isActiveUsers = isChecked;\r\n });\r\n\r\n btnWrap.appendChild(wrap1);\r\n return btnWrap;\r\n }\r\n\r\n function setCheckForInactiveUser(input) {\r\n if (input.checked) {\r\n isChecked = true;\r\n } else {\r\n isChecked = false;\r\n }\r\n loadReviewPage(isChecked);\r\n }\r\n\r\n function setCheckUpdateUserStatus(active, id) {\r\n resetPasswordAjax.updateActiveInactiveUser(\r\n {\r\n isActive: active == 'Y' ? 'N' : 'Y',\r\n userId: id,\r\n },\r\n function (results, error) {\r\n populateTable(results, true);\r\n },\r\n );\r\n\r\n\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(passwordChangeConfPOPUP);\r\n loadReviewPage(isChecked);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n if (active == 'Y') {\r\n message.innerText = 'The user has been de-activated and can no longer login to the website.';\r\n } else {\r\n message.innerText = 'The user has been reactivated and can login to the website.';\r\n }\r\n\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(passwordChangeConfPOPUP);\r\n }\r\n\r\n function tableUserSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n tempUserTableData.forEach(consumer => {\r\n var firstName = consumer.FirstName.toLowerCase();\r\n var lastName = consumer.LastName.toLowerCase();\r\n var userId = consumer.id.toLowerCase();\r\n var fullName = `${firstName} ${lastName} ${userId}`;\r\n var fullNameReversed = `${lastName} ${firstName} ${userId}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n consumerObj = {\r\n User_ID: consumer.id,\r\n First_Name: consumer.FirstName,\r\n Last_Name: consumer.LastName,\r\n Active: consumer.Active,\r\n };\r\n displayedUsers.push(consumerObj);\r\n }\r\n });\r\n populateTable(displayedUsers, false);\r\n }\r\n\r\n // load\r\n function loadReviewPage(active) {\r\n active = document.getElementById('chkInacive').checked;\r\n resetPasswordAjax.getActiveInactiveUserlist(\r\n {\r\n isActive: active == true ? 'N' : 'Y',\r\n },\r\n function (results, error) {\r\n populateTable(results, true);\r\n },\r\n );\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const resetPasswordAjax = (function () {\r\n\r\n function getActiveInactiveUserlist(dataObj, callback) {\r\n // dataObj = {IsInActive}\r\n // This gets data for reset password page to populate the user table\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getActiveInactiveUserDateJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"isActive\":\"' +\r\n dataObj.isActive +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getActiveInactiveUserDateJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function changeUserPassword(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getUserCredDateJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"userId\":\"' +\r\n dataObj.UserID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserCredDateJSONResult;\r\n myObj = JSON.parse(res)\r\n getPassword = myObj[0].password;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/resetPassword/',\r\n data:\r\n '{\"userId\":\"' +\r\n dataObj.UserID +\r\n '\", \"hash\":\"' +\r\n $().crypt({\r\n method: 'md5',\r\n source: getPassword,\r\n }) +\r\n '\", \"newPassword\":\"' +\r\n dataObj.newPW +\r\n '\", \"changingToHashPassword\":\"' +\r\n $().crypt({\r\n method: 'md5',\r\n source: dataObj.confirmPW,\r\n }) +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n },\r\n });\r\n }\r\n\r\n function updateActiveInactiveUser(dataObj, callback) {\r\n // dataObj = {IsInActive,userId}\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateActiveInactiveUser/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"isActive\":\"' +\r\n dataObj.isActive +\r\n '\",\"userId\":\"' +\r\n dataObj.userId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getActiveInactiveUserDateJSONResult;\r\n //callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n return {\r\n getActiveInactiveUserlist,\r\n changeUserPassword,\r\n updateActiveInactiveUser\r\n }\r\n})();","const assessmentHistory = (() => {\r\n //Inputs\r\n let filterRow;\r\n let assessmentEntriesTable;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let filterValues;\r\n\r\n let startDateFrom;\r\n let startDateTo;\r\n let endDateFrom;\r\n let endDateTo;\r\n let priorAuthApplFrom;\r\n let priorAuthApplTo;\r\n let priorAuthRecFrom;\r\n let priorAuthRecTo;\r\n\r\n\r\n let btnWrap;\r\n let methodologyValuesBtnWrap;\r\n let scoreValuesBtnWrap;\r\n let startDateBtnWrap;\r\n let endDateBtnWrap;\r\n let priorAuthApplyBtnWrap;\r\n let priorAuthRecBtnWrap;\r\n let priorAuthAmtFromBtnWrap;\r\n let priorAuthAmtToBtnWrap;\r\n let HistoryData;\r\n let groupedHistory;\r\n let historyGroupCount;\r\n let activeGroup;\r\n let loadMoreHistory = [];\r\n let chunkedArray;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n filterValues = undefined;\r\n await loadAssessmentHistoryLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n authorizationLanding.load();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build AssessmentHistory Module Landing Page \r\n async function loadAssessmentHistoryLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[0].FullName;\r\n buildNewFilterBtn();\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n landingPage.appendChild(filterRow);\r\n assessmentEntriesTable = await buildAssessmentEntriesTable();\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n landingPage.appendChild(assessmentEntriesTable);\r\n landingPage.appendChild(LOAD_MORE_BTN);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n loadAssessmentHistoryPage();\r\n\r\n }\r\n\r\n // build the listing of Assessment Entries (based off of filter settings)\r\n async function buildAssessmentEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'assessmentHistoryTable',\r\n headline: 'Consumer: ' + selectedConsumersName,\r\n columnHeadings: ['Start Date', 'End Date', 'Methodology', 'Score', 'Behavior Mod?', 'Medical Mod?', 'DC Mod?', 'CC Mod?', 'Prior Auth Applied', 'Prior Auth Received', 'Prior Auth Amount'],\r\n endIcon: false,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n async function loadAssessmentHistoryPage() {\r\n let assessmentEntries = await authorizationsAjax.getAssessmentEntriesAsync(\r\n selectedConsumersId,\r\n filterValues.methodology,\r\n filterValues.score,\r\n filterValues.startDateFrom,\r\n filterValues.startDateTo,\r\n filterValues.endDateFrom,\r\n filterValues.endDateTo,\r\n filterValues.priorAuthApplFrom,\r\n filterValues.priorAuthApplTo,\r\n filterValues.priorAuthRecFrom,\r\n filterValues.priorAuthRecTo,\r\n filterValues.priorAuthAmtFrom,\r\n filterValues.priorAuthAmtTo,\r\n );\r\n HistoryData = assessmentEntries.getAssessmentEntriesResult;\r\n groupHistoryData();\r\n }\r\n\r\n function populateTable(results) {\r\n let tableData = results.map((entry) => ({\r\n values: [entry.startDate == '' || entry.startDate == undefined ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' || entry.endDate == undefined ? '' : moment(entry.endDate).format('MM/DD/YYYY'),\r\n entry.methodology, entry.score, entry.behaviorMod, entry.medicalMod, entry.DCMod, entry.CCMod, entry.priorAuthApplied == '' ? '' : moment(entry.priorAuthApplied).format('MM/DD/YYYY'),\r\n entry.priorAuthReceived == '' ? '' : moment(entry.priorAuthReceived).format('MM/DD/YYYY'), entry.priorAuthAmount == '' ? '' : '$' + numberWithCommas(entry.priorAuthAmount)],\r\n attributes: [{ key: 'Id', value: entry.ID }],\r\n }));\r\n table.populate(assessmentEntriesTable, tableData); \r\n if (!groupedHistory[activeGroup + 1]) {\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n }\r\n else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n }\r\n }\r\n\r\n function pouplateHistory() {\r\n loadMoreHistory = loadMoreHistory.concat(groupedHistory[activeGroup]);\r\n populateTable(loadMoreHistory);\r\n }\r\n\r\n async function groupHistoryData(history) {\r\n const chunkBy = 50;\r\n chunkedArray = history ? UTIL.chunkArray(history, chunkBy) : UTIL.chunkArray(HistoryData, chunkBy);\r\n groupedHistory = {};\r\n chunkedArray.forEach((a, index) => (groupedHistory[index] = a));\r\n const vendorKeys = Object.keys(groupedHistory);\r\n historyGroupCount = vendorKeys && vendorKeys.length;\r\n activeGroup = 0;\r\n loadMoreHistory = groupedHistory[activeGroup];\r\n populateTable(loadMoreHistory);\r\n }\r\n\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreVendorBtn');\r\n const btn = button.build({\r\n id: 'loadMoreBtn',\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n pouplateHistory();\r\n },\r\n });\r\n btnWrap.appendChild(btn);\r\n return btnWrap;\r\n }\r\n\r\n function numberWithCommas(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n // build Filter button, which filters the data displayed on the Assessment History Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n methodology: '%',\r\n score: '%',\r\n startDateFrom: '%',//UTIL.formatDateFromDateObj(dates.subDays(new Date(), 730)), \r\n startDateTo: '%',\r\n endDateFrom: '%',\r\n endDateTo: '%',\r\n priorAuthApplFrom: '%',\r\n priorAuthApplTo: '%',\r\n priorAuthRecFrom: '%',\r\n priorAuthRecTo: '%',\r\n priorAuthAmtFrom: '',\r\n priorAuthAmtTo: '',\r\n methodologyValues: '%',\r\n scoreValues: '%',\r\n }\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n startDateFrom = filterValues.startDateFrom == '%' ? 'ALL' : moment(filterValues.startDateFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n startDateTo = filterValues.startDateTo == '%' ? 'ALL' : moment(filterValues.startDateTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n endDateFrom = filterValues.endDateFrom == '%' ? 'ALL' : moment(filterValues.endDateFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n endDateTo = filterValues.endDateTo == '%' ? 'ALL' : moment(filterValues.endDateTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthApplFrom = filterValues.priorAuthApplFrom == '%' ? 'ALL' : moment(filterValues.priorAuthApplFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthApplTo = filterValues.priorAuthApplTo == '%' ? 'ALL' : moment(filterValues.priorAuthApplTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthRecFrom = filterValues.priorAuthRecFrom == '%' ? 'ALL' : moment(filterValues.priorAuthRecFrom, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n priorAuthRecTo = filterValues.priorAuthRecTo == '%' ? 'ALL' : moment(filterValues.priorAuthRecTo, 'YYYY-MM-DD').format('MM/DD/YYYY');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.methodologyValues === '%' || filterValues.methodologyValues === 'ALL') {\r\n btnWrap.appendChild(methodologyValuesBtnWrap);\r\n btnWrap.removeChild(methodologyValuesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(methodologyValuesBtnWrap);\r\n }\r\n\r\n if (filterValues.scoreValues === '%' || filterValues.scoreValues === 'ALL') {\r\n btnWrap.appendChild(scoreValuesBtnWrap);\r\n btnWrap.removeChild(scoreValuesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(scoreValuesBtnWrap);\r\n }\r\n\r\n if (startDateFrom == 'ALL' && startDateTo == 'ALL') {\r\n btnWrap.appendChild(startDateBtnWrap);\r\n btnWrap.removeChild(startDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(startDateBtnWrap);\r\n }\r\n\r\n if (endDateFrom === 'ALL' && endDateTo === 'ALL') {\r\n btnWrap.appendChild(endDateBtnWrap);\r\n btnWrap.removeChild(endDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(endDateBtnWrap);\r\n }\r\n\r\n if (priorAuthApplFrom === 'ALL' && priorAuthApplTo === 'ALL') {\r\n btnWrap.appendChild(priorAuthApplyBtnWrap);\r\n btnWrap.removeChild(priorAuthApplyBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthApplyBtnWrap);\r\n }\r\n\r\n if (priorAuthRecFrom === 'ALL' && priorAuthRecTo === 'ALL') {\r\n btnWrap.appendChild(priorAuthRecBtnWrap);\r\n btnWrap.removeChild(priorAuthRecBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthRecBtnWrap);\r\n }\r\n\r\n if (filterValues.priorAuthAmtFrom === '') {\r\n btnWrap.appendChild(priorAuthAmtFromBtnWrap);\r\n btnWrap.removeChild(priorAuthAmtFromBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthAmtFromBtnWrap);\r\n }\r\n\r\n if (filterValues.priorAuthAmtTo === '') {\r\n btnWrap.appendChild(priorAuthAmtToBtnWrap);\r\n btnWrap.removeChild(priorAuthAmtToBtnWrap);\r\n } else {\r\n btnWrap.appendChild(priorAuthAmtToBtnWrap);\r\n }\r\n\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n methodologyValuesBtn = button.build({\r\n id: 'methodologyValuesBtn',\r\n text: 'Methodology: ' + filterValues.methodologyValues,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('methodologyValuesBtn') },\r\n });\r\n methodologyValuesCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('methodologyValuesBtn') },\r\n });\r\n\r\n scoreValuesBtn = button.build({\r\n id: 'scoreValuesBtn',\r\n text: 'Score: ' + filterValues.scoreValues,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('scoreValuesBtn') },\r\n });\r\n scoreValuesCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('scoreValuesBtn') },\r\n });\r\n\r\n startDateBtn = button.build({\r\n id: 'startDateBtn',\r\n text: 'Start Date: ' + startDateFrom + '-' + startDateTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('startDateBtn') },\r\n });\r\n startDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('startDateBtn') },\r\n });\r\n\r\n endDateBtn = button.build({\r\n id: 'endDateBtn',\r\n text: 'End Date: ' + endDateFrom + '-' + endDateTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('endDateBtn') },\r\n });\r\n endDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('endDateBtn') },\r\n });\r\n\r\n priorAuthApplyBtn = button.build({\r\n id: 'priorAuthApplyBtn',\r\n text: 'Prior Auth Applied: ' + priorAuthApplFrom + '-' + priorAuthApplTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthApplyBtn') },\r\n });\r\n priorAuthApplyCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthApplyBtn') },\r\n });\r\n\r\n priorAuthRecBtn = button.build({\r\n id: 'priorAuthRecBtn',\r\n text: 'Prior Auth Received: ' + priorAuthRecFrom + '-' + priorAuthRecTo,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthRecBtn') },\r\n });\r\n priorAuthRecCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthRecBtn') },\r\n });\r\n\r\n priorAuthAmtFromBtn = button.build({\r\n id: 'priorAuthAmtFromBtn',\r\n text: 'Prior Auth Amount From: $' + numberWithCommas(filterValues.priorAuthAmtFrom),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthAmtFromBtn') },\r\n });\r\n priorAuthAmtFromCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthAmtFromBtn') },\r\n });\r\n\r\n priorAuthAmtToBtn = button.build({\r\n id: 'priorAuthAmtToBtn',\r\n text: 'Prior Auth Amount To: $' + numberWithCommas(filterValues.priorAuthAmtTo),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('priorAuthAmtToBtn') },\r\n });\r\n priorAuthAmtToCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('priorAuthAmtToBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n methodologyValuesBtnWrap = document.createElement('div');\r\n methodologyValuesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n methodologyValuesBtnWrap.appendChild(methodologyValuesBtn);\r\n methodologyValuesBtnWrap.appendChild(methodologyValuesCloseBtn);\r\n btnWrap.appendChild(methodologyValuesBtnWrap);\r\n\r\n scoreValuesBtnWrap = document.createElement('div');\r\n scoreValuesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n scoreValuesBtnWrap.appendChild(scoreValuesBtn);\r\n scoreValuesBtnWrap.appendChild(scoreValuesCloseBtn);\r\n btnWrap.appendChild(scoreValuesBtnWrap);\r\n\r\n startDateBtnWrap = document.createElement('div');\r\n startDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n startDateBtnWrap.appendChild(startDateBtn);\r\n startDateBtnWrap.appendChild(startDateCloseBtn);\r\n btnWrap.appendChild(startDateBtnWrap);\r\n\r\n endDateBtnWrap = document.createElement('div');\r\n endDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n endDateBtnWrap.appendChild(endDateBtn);\r\n endDateBtnWrap.appendChild(endDateCloseBtn)\r\n btnWrap.appendChild(endDateBtnWrap);\r\n\r\n priorAuthApplyBtnWrap = document.createElement('div');\r\n priorAuthApplyBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthApplyBtnWrap.appendChild(priorAuthApplyBtn);\r\n priorAuthApplyBtnWrap.appendChild(priorAuthApplyCloseBtn);\r\n btnWrap.appendChild(priorAuthApplyBtnWrap);\r\n\r\n priorAuthRecBtnWrap = document.createElement('div');\r\n priorAuthRecBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthRecBtnWrap.appendChild(priorAuthRecBtn);\r\n priorAuthRecBtnWrap.appendChild(priorAuthRecCloseBtn);\r\n btnWrap.appendChild(priorAuthRecBtnWrap);\r\n\r\n priorAuthAmtFromBtnWrap = document.createElement('div');\r\n priorAuthAmtFromBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthAmtFromBtnWrap.appendChild(priorAuthAmtFromBtn);\r\n priorAuthAmtFromBtnWrap.appendChild(priorAuthAmtFromCloseBtn)\r\n btnWrap.appendChild(priorAuthAmtFromBtnWrap);\r\n\r\n priorAuthAmtToBtnWrap = document.createElement('div');\r\n priorAuthAmtToBtnWrap.classList.add('filterSelectionBtnWrap');\r\n priorAuthAmtToBtnWrap.appendChild(priorAuthAmtToBtn);\r\n priorAuthAmtToBtnWrap.appendChild(priorAuthAmtToCloseBtn);\r\n btnWrap.appendChild(priorAuthAmtToBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n\r\n if (closeFilter == 'methodologyValuesBtn') {\r\n filterValues.methodologyValues = '%';\r\n filterValues.methodology = '%';\r\n }\r\n if (closeFilter == 'scoreValuesBtn') {\r\n filterValues.scoreValues = '%';\r\n filterValues.score = '%';\r\n }\r\n if (closeFilter == 'priorAuthApplyBtn') {\r\n filterValues.priorAuthApplFrom = '%';\r\n filterValues.priorAuthApplTo = '%';\r\n }\r\n if (closeFilter == 'priorAuthRecBtn') {\r\n filterValues.priorAuthRecFrom = '%';\r\n filterValues.priorAuthRecTo = '%';\r\n }\r\n if (closeFilter == 'endDateBtn') {\r\n filterValues.endDateFrom = '%';\r\n filterValues.endDateTo = '%';\r\n }\r\n if (closeFilter == 'priorAuthAmtFromBtn') {\r\n filterValues.priorAuthAmtFrom = '';\r\n }\r\n if (closeFilter == 'priorAuthAmtToBtn') {\r\n filterValues.priorAuthAmtTo = '';\r\n }\r\n if (closeFilter == 'startDateBtn') {\r\n filterValues.startDateFrom = '%';\r\n filterValues.startDateTo = '%';\r\n }\r\n\r\n\r\n\r\n loadAssessmentHistoryLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs \r\n methodologyDropdown = dropdown.build({\r\n id: 'methodologyDropdown',\r\n label: \"Methodology\",\r\n dropdownId: \"methodologyDropdown\",\r\n });\r\n\r\n scoreDropdown = dropdown.build({\r\n id: 'scoreDropdown',\r\n label: \"Score\",\r\n dropdownId: \"scoreDropdown\",\r\n });\r\n\r\n startDateFrom = input.build({\r\n id: 'startDateFrom',\r\n type: 'date',\r\n label: 'Start Date From',\r\n style: 'secondary',\r\n value: filterValues.startDateFrom,\r\n });\r\n\r\n startDateTo = input.build({\r\n id: 'startDateTo',\r\n type: 'date',\r\n label: 'Start Date To',\r\n style: 'secondary',\r\n value: filterValues.startDateTo,\r\n });\r\n\r\n endDateFrom = input.build({\r\n id: 'endDateFrom',\r\n type: 'date',\r\n label: 'End Date From',\r\n style: 'secondary',\r\n value: filterValues.endDateFrom,\r\n });\r\n\r\n endDateTo = input.build({\r\n id: 'endDateTo',\r\n type: 'date',\r\n label: 'End Date To',\r\n style: 'secondary',\r\n value: filterValues.endDateTo,\r\n });\r\n\r\n priorAuthApplFrom = input.build({\r\n id: 'priorAuthApplFrom',\r\n type: 'date',\r\n label: 'Prior Auth Appl From',\r\n style: 'secondary',\r\n value: filterValues.priorAuthApplFrom,\r\n });\r\n\r\n priorAuthApplTo = input.build({\r\n id: 'priorAuthApplTo',\r\n type: 'date',\r\n label: 'Prior Auth Appl To',\r\n style: 'secondary',\r\n value: filterValues.priorAuthApplTo,\r\n });\r\n\r\n priorAuthRecFrom = input.build({\r\n id: 'priorAuthRecFrom',\r\n type: 'date',\r\n label: 'Prior Auth Rec From',\r\n style: 'secondary',\r\n value: filterValues.priorAuthRecFrom,\r\n });\r\n\r\n priorAuthRecTo = input.build({\r\n id: 'priorAuthRecTo',\r\n type: 'date',\r\n label: 'Prior Auth Rec To',\r\n style: 'secondary',\r\n value: filterValues.priorAuthRecTo,\r\n });\r\n\r\n priorAuthAmtFrom = input.build({\r\n id: 'priorAuthAmtFrom',\r\n type: 'text',\r\n label: 'Prior Auth Amt From',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.priorAuthAmtFrom) ? filterValues.priorAuthAmtFrom : ''),\r\n });\r\n\r\n priorAuthAmtTo = input.build({\r\n id: 'priorAuthAmtTo',\r\n type: 'text',\r\n label: 'Prior Auth Amt To',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.priorAuthAmtTo) ? filterValues.priorAuthAmtTo : ''),\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n var startDateWrap = document.createElement('div');\r\n startDateWrap.classList.add('dateWrap');\r\n startDateWrap.appendChild(startDateFrom);\r\n startDateWrap.appendChild(startDateTo);\r\n\r\n var endDateWrap = document.createElement('div');\r\n endDateWrap.classList.add('dateWrap');\r\n endDateWrap.appendChild(endDateFrom);\r\n endDateWrap.appendChild(endDateTo);\r\n\r\n var applDateWrap = document.createElement('div');\r\n applDateWrap.classList.add('dateWrap');\r\n applDateWrap.appendChild(priorAuthApplFrom);\r\n applDateWrap.appendChild(priorAuthApplTo);\r\n\r\n var recDateWrap = document.createElement('div');\r\n recDateWrap.classList.add('dateWrap');\r\n recDateWrap.appendChild(priorAuthRecFrom);\r\n recDateWrap.appendChild(priorAuthRecTo);\r\n\r\n var amtWrap = document.createElement('div');\r\n amtWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthAmtFromBtn')\r\n amtWrap.appendChild(priorAuthAmtFrom);\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthAmtToBtn')\r\n amtWrap.appendChild(priorAuthAmtTo);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'methodologyValuesBtn')\r\n filterPopup.appendChild(methodologyDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'scoreValuesBtn')\r\n filterPopup.appendChild(scoreDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'startDateBtn')\r\n filterPopup.appendChild(startDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'endDateBtn')\r\n filterPopup.appendChild(endDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthApplyBtn')\r\n filterPopup.appendChild(applDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'priorAuthRecBtn')\r\n filterPopup.appendChild(recDateWrap);\r\n\r\n filterPopup.appendChild(amtWrap);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(filterPopup);\r\n eventListeners();\r\n populateFilterDropdown();\r\n checkRequiredFieldsOfFilter();\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n var tmpMethodology;\r\n var tmpScore;\r\n var tmpStartDateFrom;\r\n var tmpStartDateTo;\r\n var tmpEndDateFrom;\r\n var tmpEndDateTo;\r\n var tmpPriorAuthApplFrom;\r\n var tmpPriorAuthApplTo;\r\n var tmpPriorAuthRecFrom;\r\n var tmpPriorAuthRecTo;\r\n var tmpPriorAuthAmtFrom;\r\n var tmpPriorAuthAmtTo;\r\n\r\n methodologyDropdown.addEventListener('change', event => {\r\n tmpMethodology = event.target.value;\r\n filterValues.methodologyValues = event.target.options[event.target.selectedIndex].innerHTML;\r\n populateScoreDropdown(tmpMethodology)\r\n });\r\n scoreDropdown.addEventListener('change', event => {\r\n tmpScore = event.target.value;\r\n filterValues.scoreValues = event.target.options[event.target.selectedIndex].innerHTML;\r\n });\r\n\r\n startDateFrom.addEventListener('change', event => {\r\n tmpStartDateFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n startDateTo.addEventListener('change', event => {\r\n tmpStartDateTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n endDateFrom.addEventListener('change', event => {\r\n tmpEndDateFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n endDateTo.addEventListener('change', event => {\r\n tmpEndDateTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthApplFrom.addEventListener('change', event => {\r\n tmpPriorAuthApplFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n priorAuthApplTo.addEventListener('change', event => {\r\n tmpPriorAuthApplTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthRecFrom.addEventListener('change', event => {\r\n tmpPriorAuthRecFrom = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n priorAuthRecTo.addEventListener('change', event => {\r\n tmpPriorAuthRecTo = event.target.value;\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthAmtFrom.addEventListener('input', event => {\r\n minAmount = event.target.value;\r\n tmpPriorAuthAmtFrom = minAmount.trim().replace('$', '');\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount)) {\r\n document.getElementById('priorAuthAmtFrom').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n else if (minAmount.includes('.') && (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('priorAuthAmtFrom').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n priorAuthAmtTo.addEventListener('input', event => {\r\n maxAmount = event.target.value;\r\n tmpPriorAuthAmtTo = maxAmount.trim().replace('$', '');\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(maxAmount)) {\r\n document.getElementById('priorAuthAmtTo').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n else if (maxAmount.includes('.') && (maxAmount.match(/\\./g).length > 1 || maxAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('priorAuthAmtTo').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsOfFilter();\r\n });\r\n\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpMethodology,\r\n tmpScore,\r\n tmpStartDateFrom,\r\n tmpStartDateTo,\r\n tmpEndDateFrom,\r\n tmpEndDateTo,\r\n tmpPriorAuthApplFrom,\r\n tmpPriorAuthApplTo,\r\n tmpPriorAuthRecFrom,\r\n tmpPriorAuthRecTo,\r\n tmpPriorAuthAmtFrom,\r\n tmpPriorAuthAmtTo\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n loadAssessmentHistoryLanding();\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfFilter() {\r\n\r\n var newStartDateFrom = startDateFrom.querySelector('#startDateFrom');\r\n var newStartDateTo = startDateTo.querySelector('#startDateTo');\r\n var newEndDateFrom = endDateFrom.querySelector('#endDateFrom');\r\n var newEndDateTo = endDateTo.querySelector('#endDateTo');\r\n var newPriorAuthApplFrom = priorAuthApplFrom.querySelector('#priorAuthApplFrom');\r\n var newPriorAuthApplTo = priorAuthApplTo.querySelector('#priorAuthApplTo');\r\n var newPriorAuthRecFrom = priorAuthRecFrom.querySelector('#priorAuthRecFrom');\r\n var newPriorAuthRecTo = priorAuthRecTo.querySelector('#priorAuthRecTo');\r\n var newPriorAuthAmtFrom = parseInt(priorAuthAmtFrom.querySelector('#priorAuthAmtFrom').value.replace('$', ''));\r\n var newPriorAuthAmtTo = parseInt(priorAuthAmtTo.querySelector('#priorAuthAmtTo').value.replace('$', ''));\r\n\r\n if (newStartDateTo.value != '' && newStartDateFrom.value > newStartDateTo.value) {\r\n startDateTo.classList.add('errorPopup');\r\n } else {\r\n startDateTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newEndDateTo.value != '' && newEndDateFrom.value > newEndDateTo.value) {\r\n endDateTo.classList.add('errorPopup');\r\n } else {\r\n endDateTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newPriorAuthApplTo.value != '' && newPriorAuthApplFrom.value > newPriorAuthApplTo.value) {\r\n priorAuthApplTo.classList.add('errorPopup');\r\n } else {\r\n priorAuthApplTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newPriorAuthRecTo.value != '' && newPriorAuthRecFrom.value > newPriorAuthRecTo.value) {\r\n priorAuthRecTo.classList.add('errorPopup');\r\n } else {\r\n priorAuthRecTo.classList.remove('errorPopup');\r\n }\r\n\r\n if (newPriorAuthAmtTo != '' && newPriorAuthAmtFrom > newPriorAuthAmtTo) {\r\n priorAuthAmtTo.classList.add('errorPopup');\r\n } else {\r\n priorAuthAmtTo.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfFilter();\r\n }\r\n\r\n function setBtnStatusOfFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpMethodology) filterValues.methodology = data.tmpMethodology;\r\n if (data.tmpScore) filterValues.score = data.tmpScore;\r\n if (data.tmpStartDateFrom != undefined) filterValues.startDateFrom = data.tmpStartDateFrom;\r\n if (data.tmpStartDateTo != undefined) filterValues.startDateTo = data.tmpStartDateTo;\r\n if (data.tmpEndDateFrom != undefined) filterValues.endDateFrom = data.tmpEndDateFrom;\r\n if (data.tmpEndDateTo != undefined) filterValues.endDateTo = data.tmpEndDateTo;\r\n if (data.tmpPriorAuthApplFrom != undefined) filterValues.priorAuthApplFrom = data.tmpPriorAuthApplFrom;\r\n if (data.tmpPriorAuthApplTo != undefined) filterValues.priorAuthApplTo = data.tmpPriorAuthApplTo;\r\n if (data.tmpPriorAuthRecFrom != undefined) filterValues.priorAuthRecFrom = data.tmpPriorAuthRecFrom;\r\n if (data.tmpPriorAuthRecTo != undefined) filterValues.priorAuthRecTo = data.tmpPriorAuthRecTo;\r\n if (data.tmpPriorAuthAmtFrom != undefined) filterValues.priorAuthAmtFrom = data.tmpPriorAuthAmtFrom;\r\n if (data.tmpPriorAuthAmtTo != undefined) filterValues.priorAuthAmtTo = data.tmpPriorAuthAmtTo;\r\n\r\n if (data.tmpStartDateFrom == '') filterValues.startDateFrom = '%';\r\n if (data.tmpStartDateTo == '') filterValues.startDateTo = '%';\r\n if (data.tmpEndDateFrom == '') filterValues.endDateFrom = '%';\r\n if (data.tmpEndDateTo == '') filterValues.endDateTo = '%';\r\n if (data.tmpPriorAuthApplFrom == '') filterValues.priorAuthApplFrom = '%';\r\n if (data.tmpPriorAuthApplTo == '') filterValues.priorAuthApplTo = '%';\r\n if (data.tmpPriorAuthRecFrom == '') filterValues.priorAuthRecFrom = '%';\r\n if (data.tmpPriorAuthRecTo == '') filterValues.priorAuthRecTo = '%';\r\n }\r\n\r\n function populateFilterDropdown() {\r\n const methData = ([\r\n { id: 1, value: 'D', text: 'Day Services' },\r\n { id: 2, value: 'L', text: 'Level One Waiver' },\r\n { id: 3, value: 'S', text: 'Self Waiver' },\r\n { id: 4, value: 'W', text: 'Waiver Reimbursement' },\r\n ]);\r\n methData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate(\"methodologyDropdown\", methData, filterValues.methodology);\r\n populateScoreDropdown(filterValues.methodology);\r\n }\r\n\r\n async function populateScoreDropdown(methodologyID) {\r\n const {\r\n getScoreResult: Score,\r\n } = await authorizationsAjax.getScoreAsync(methodologyID);\r\n let scoreData = Score.map((score) => ({\r\n id: score.scoreID,\r\n value: score.scoreDescription,\r\n text: score.scoreDescription\r\n }));\r\n scoreData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"scoreDropdown\", scoreData, filterValues.score);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('assessmentHistory');\r\n $.loadedApp = 'assessmentHistory';\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadAssessmentHistoryLanding,\r\n };\r\n})(); \r\n","var authorizationLanding = (function () {\r\n function loadAuthorizationLanding() {\r\n let pasBtn = button.build({\r\n text: 'PAS',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: authorizations.init\r\n });\r\n\r\n let assessmentHistoryBtn = button.build({\r\n text: 'ASSESSMENT HISTORY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: assessmentHistory.init\r\n });\r\n let vendorInfoBtn = button.build({\r\n text: 'VENDOR INFO',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: vendorInfo.init \r\n });\r\n\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(pasBtn);\r\n btnWrap.appendChild(assessmentHistoryBtn);\r\n if ($.session.authorizationsVendorInfoView)\r\n btnWrap.appendChild(vendorInfoBtn); \r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n $.loadedApp = 'authorizations';\r\n setActiveModuleAttribute('authorizations');\r\n DOM.clearActionCenter();\r\n loadAuthorizationLanding();\r\n }\r\n\r\n return {\r\n load: init,\r\n }\r\n})();","const authorizations = (function () {\r\n // DATA\r\n let authData;\r\n let filterDropdownData;\r\n let selectedConsumer;\r\n let filterValues;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n //--\r\n let filterPopup;\r\n let planTypeDropdown;\r\n let vendorDropdown;\r\n let matchSourceDropdown;\r\n let completedDateStart;\r\n let completedDateEnd;\r\n let yearStartStart;\r\n let yearStartEnd;\r\n let yearEndStart;\r\n let yearEndEnd;\r\n let applyFilterBtn;\r\n\r\n let btnWrap;\r\n let plantypeBtnWrap;\r\n let vendorBtnWrap;\r\n let matchSourceBtnWrap;\r\n let completedDateBtnWrap;\r\n let yearStartBtnWrap;\r\n let yearEndBtnWrap;\r\n\r\n let newFilterValues;\r\n\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n DOM.clearActionCenter();\r\n loadPage();\r\n DOM.toggleNavLayout();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n authorizationLanding.load();\r\n break;\r\n }\r\n }\r\n }\r\n function clearAllData() {\r\n // DATA\r\n authData = undefined;\r\n filterDropdownData = undefined;\r\n selectedConsumer = undefined;\r\n filterValues = undefined;\r\n pageWrap = undefined;\r\n overviewTable = undefined;\r\n filterPopup = undefined;\r\n planTypeDropdown = undefined;\r\n vendorDropdown = undefined;\r\n matchSourceDropdown = undefined;\r\n completedDateStartInput = undefined;\r\n completedDateEndInput = undefined;\r\n yearStartStartInput = undefined;\r\n yearStartEndInput = undefined;\r\n yearEndStartInput = undefined;\r\n yearEndEndInput = undefined;\r\n applyFilterBtn = undefined;\r\n }\r\n function groupChildData() {\r\n if (!authData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = authData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.pas_id]) {\r\n obj[child.pas_id] = [];\r\n obj[child.pas_id].push(child);\r\n } else {\r\n obj[child.pas_id].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n authData.pageDataChild = { ...groupedChildren };\r\n }\r\n function convertToCurrency(dirtyNumber) {\r\n const numberValue = parseFloat(dirtyNumber);\r\n\r\n return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(\r\n numberValue,\r\n );\r\n }\r\n function getFreqName(key) {\r\n const freqObj = {\r\n W: 'Week',\r\n S: 'Span',\r\n D: 'Day',\r\n M: 'Month',\r\n N: 'None',\r\n };\r\n\r\n return freqObj[key];\r\n }\r\n function formatDate(date) {\r\n if (!date) return '';\r\n\r\n return UTIL.abbreviateDateYear(UTIL.formatDateFromIso(date.split('T')[0]));\r\n }\r\n\r\n // Filter Popup\r\n //----------------------------------------\r\n function initFilterValues() {\r\n filterValues = {\r\n planType: '%',\r\n vendor: '%',\r\n matchSource: '%',\r\n completedDateStart: dates\r\n .formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 2))\r\n .slice(0, 10),\r\n completedDateEnd: dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n yearStartStart: dates\r\n .formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 2))\r\n .slice(0, 10),\r\n yearStartEnd: dates\r\n .formatISO(dates.addYears(new Date(new Date().setHours(0, 0, 0, 0)), 1))\r\n .slice(0, 10),\r\n yearEndStart: '', //dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n yearEndEnd: '', //dates.formatISO(dates.addYears(new Date(new Date().setHours(0, 0, 0, 0)), 1)).slice(0, 10),\r\n };\r\n }\r\n function buildFilteredByData() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n completedDateStart = `${formatDate(filterValues.completedDateStart)}`;\r\n completedDateEnd = `${formatDate(filterValues.completedDateEnd)}`;\r\n yearStartStart = `${formatDate(filterValues.yearStartStart)}`;\r\n yearStartEnd = `${formatDate(filterValues.yearStartEnd)}`;\r\n yearEndStart = `${formatDate(filterValues.yearEndStart)}`;\r\n yearEndEnd = `${formatDate(filterValues.yearEndEnd)}`;\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n if (getPlanTypeFullName(filterValues.planType) === 'All') {\r\n btnWrap.appendChild(plantypeBtnWrap);\r\n btnWrap.removeChild(plantypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(plantypeBtnWrap);\r\n if (document.getElementById('plantypeBtn') != null)\r\n document.getElementById('plantypeBtn').innerHTML = 'Plan Type: ' + getPlanTypeFullName(filterValues.planType);\r\n }\r\n\r\n if (getVendorFullName(filterValues.vendor) === 'All') {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n btnWrap.removeChild(vendorBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n if (document.getElementById('vendorBtn') != null)\r\n document.getElementById('vendorBtn').innerHTML = 'PL Vendor: ' + getVendorFullName(filterValues.vendor);\r\n }\r\n\r\n if (getMatchSourceName(filterValues.matchSource) === 'All') {\r\n btnWrap.appendChild(matchSourceBtnWrap);\r\n btnWrap.removeChild(matchSourceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(matchSourceBtnWrap);\r\n if (document.getElementById('matchSourceBtn') != null)\r\n document.getElementById('matchSourceBtn').innerHTML = 'Match Source: ' + getMatchSourceName(filterValues.matchSource);\r\n }\r\n\r\n if (completedDateStart == '' && completedDateEnd == '') {\r\n btnWrap.appendChild(completedDateBtnWrap);\r\n btnWrap.removeChild(completedDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(completedDateBtnWrap);\r\n if (document.getElementById('completedDateBtn') != null)\r\n document.getElementById('completedDateBtn').innerHTML = 'Completed Dates: ' + completedDateStart + '-' + completedDateEnd;\r\n }\r\n\r\n if (yearStartStart === '' && yearStartEnd === '') {\r\n btnWrap.appendChild(yearStartBtnWrap);\r\n btnWrap.removeChild(yearStartBtnWrap);\r\n } else {\r\n btnWrap.appendChild(yearStartBtnWrap);\r\n if (document.getElementById('yearStartBtn') != null)\r\n document.getElementById('yearStartBtn').innerHTML = 'Year Start: ' + yearStartStart + '-' + yearStartEnd;\r\n }\r\n\r\n if (yearEndStart === '' && yearEndEnd === '') {\r\n btnWrap.appendChild(yearEndBtnWrap);\r\n btnWrap.removeChild(yearEndBtnWrap);\r\n } else {\r\n btnWrap.appendChild(yearEndBtnWrap);\r\n if (document.getElementById('yearEndBtn') != null)\r\n document.getElementById('yearEndBtn').innerHTML = 'Year End: ' + yearEndStart + '-' + yearEndEnd;\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n plantypeBtn = button.build({\r\n id: 'plantypeBtn',\r\n text: 'Plan Type: ' + getPlanTypeFullName(filterValues.planType),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('plantypeBtn') },\r\n });\r\n plantypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('plantypeBtn') },\r\n });\r\n\r\n vendorBtn = button.build({\r\n id: 'vendorBtn',\r\n text: 'PL Vendor: ' + getVendorFullName(filterValues.vendor),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('vendorBtn') },\r\n });\r\n vendorCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('vendorBtn') },\r\n });\r\n\r\n matchSourceBtn = button.build({\r\n id: 'matchSourceBtn',\r\n text: 'Match Source: ' + getMatchSourceName(filterValues.matchSource),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('matchSourceBtn') },\r\n });\r\n matchSourceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('matchSourceBtn') },\r\n });\r\n\r\n completedDateBtn = button.build({\r\n id: 'completedDateBtn',\r\n text: 'Completed Dates: ' + completedDateStart + '-' + completedDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('completedDateBtn') },\r\n });\r\n\r\n yearStartBtn = button.build({\r\n id: 'yearStartBtn',\r\n text: 'Year start: ' + yearStartStart + '-' + yearStartEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('yearStartBtn') },\r\n });\r\n\r\n yearEndBtn = button.build({\r\n id: 'yearEndBtn',\r\n text: 'Year End: ' + yearEndStart + '-' + yearEndEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('yearEndBtn') },\r\n });\r\n yearEndCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('yearEndBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n plantypeBtnWrap = document.createElement('div');\r\n plantypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n plantypeBtnWrap.appendChild(plantypeBtn);\r\n plantypeBtnWrap.appendChild(plantypeCloseBtn);\r\n btnWrap.appendChild(plantypeBtnWrap);\r\n\r\n vendorBtnWrap = document.createElement('div');\r\n vendorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vendorBtnWrap.appendChild(vendorBtn);\r\n vendorBtnWrap.appendChild(vendorCloseBtn);\r\n btnWrap.appendChild(vendorBtnWrap);\r\n\r\n matchSourceBtnWrap = document.createElement('div');\r\n matchSourceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n matchSourceBtnWrap.appendChild(matchSourceBtn);\r\n matchSourceBtnWrap.appendChild(matchSourceCloseBtn);\r\n btnWrap.appendChild(matchSourceBtnWrap);\r\n\r\n completedDateBtnWrap = document.createElement('div');\r\n completedDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n completedDateBtnWrap.appendChild(completedDateBtn);\r\n btnWrap.appendChild(completedDateBtnWrap);\r\n\r\n yearStartBtnWrap = document.createElement('div');\r\n yearStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n yearStartBtnWrap.appendChild(yearStartBtn);\r\n btnWrap.appendChild(yearStartBtnWrap);\r\n\r\n yearEndBtnWrap = document.createElement('div');\r\n yearEndBtnWrap.classList.add('filterSelectionBtnWrap');\r\n yearEndBtnWrap.appendChild(yearEndBtn);\r\n yearEndBtnWrap.appendChild(yearEndCloseBtn);\r\n btnWrap.appendChild(yearEndBtnWrap);\r\n\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'plantypeBtn') {\r\n filterValues.planType = '%';\r\n newFilterValues.planType = '%';\r\n }\r\n if (closeFilter == 'vendorBtn') {\r\n filterValues.vendor = '%';\r\n newFilterValues.vendor = '%';\r\n }\r\n\r\n if (closeFilter == 'matchSourceBtn') {\r\n filterValues.matchSource = '%';\r\n newFilterValues.matchSource = '%';\r\n }\r\n\r\n if (closeFilter == 'yearEndBtn') {\r\n filterValues.yearEndStart = '';\r\n filterValues.yearEndEnd = '';\r\n newFilterValues.yearEndStart = '';\r\n newFilterValues.yearEndEnd = '';\r\n }\r\n\r\n applyFilter();\r\n\r\n }\r\n\r\n function checkFilterPopForErrors() {\r\n const errors = [...filterPopup.querySelectorAll('.error')];\r\n const hasErrors = errors.legnth > 0 ? true : false;\r\n\r\n if (hasErrors) {\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populatePlanTypeDropdown() {\r\n const data = [\r\n { value: '%', text: 'All' },\r\n { text: 'Final', value: 'F' },\r\n { text: 'Initial', value: 'I' },\r\n { text: 'Revision', value: 'V' },\r\n { text: 'Redetermination', value: 'R' },\r\n ];\r\n dropdown.populate(planTypeDropdown, data, filterValues.planType);\r\n }\r\n function populateVendorDropdown() {\r\n const data = filterDropdownData.planVendors.map(pv => {\r\n return {\r\n value: pv.vendorId,\r\n text: pv.vendorName,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n data.sort((a, b) => {\r\n if (a.vendorName < b.vendorName) {\r\n return -1;\r\n }\r\n if (a.vendorName > b.vendorName) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n dropdown.populate(vendorDropdown, data, filterValues.vendor);\r\n }\r\n function populateMatchSourceDropdown() {\r\n const data = filterDropdownData.matchSources.map(ms => {\r\n return {\r\n value: ms.code,\r\n text: ms.caption,\r\n };\r\n });\r\n data.sort((a, b) => {\r\n if (a.caption < b.caption) {\r\n return -1;\r\n }\r\n if (a.caption > b.caption) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(matchSourceDropdown, data, filterValues.matchSource);\r\n }\r\n function getVendorFullName(id) {\r\n if (id === '') return '';\r\n if (id === '%') return 'All';\r\n\r\n const filteredVendor = filterDropdownData.planVendors.filter(pv => {\r\n return pv.vendorId === id;\r\n });\r\n\r\n if (filteredVendor.length > 0) {\r\n return filteredVendor[0].vendorName;\r\n }\r\n }\r\n function getPlanTypeFullName(value, revisionNumber) {\r\n switch (value) {\r\n case 'F': {\r\n return 'Final';\r\n }\r\n case 'I': {\r\n return 'Initial';\r\n }\r\n case 'V': {\r\n return revisionNumber ? `Revision ${revisionNumber}` : 'Revision';\r\n }\r\n case 'R': {\r\n return 'Redetermination';\r\n }\r\n default: {\r\n return 'All';\r\n }\r\n }\r\n }\r\n function getMatchSourceName(id) {\r\n if (id === '%') return 'All';\r\n\r\n const filteredMatch = filterDropdownData.matchSources.filter(ms => {\r\n return ms.code === code;\r\n });\r\n\r\n if (filteredMatch.length > 0) {\r\n return filteredMatch[0].caption;\r\n }\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: 'authorizationsReviewFilterPopup',\r\n });\r\n\r\n // Dropdowns\r\n planTypeDropdown = dropdown.build({\r\n dropdownId: 'planTypeDropdown',\r\n label: 'Plan Type',\r\n style: 'secondary',\r\n });\r\n vendorDropdown = dropdown.build({\r\n dropdownId: 'vendorDropdown',\r\n label: 'PL Vendor',\r\n style: 'secondary',\r\n });\r\n matchSourceDropdown = dropdown.build({\r\n dropdownId: 'matchSourceDropdown',\r\n label: 'Match Source',\r\n style: 'secondary',\r\n });\r\n\r\n // Date Inputs\r\n const dateWrap = document.createElement('div');\r\n completedDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Completed Date (Start)',\r\n style: 'secondary',\r\n value: filterValues.completedDateStart,\r\n });\r\n completedDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Completed Date (End)',\r\n style: 'secondary',\r\n value: filterValues.completedDateEnd,\r\n });\r\n yearStartStartInput = input.build({\r\n type: 'date',\r\n label: 'Year Start (Start)',\r\n style: 'secondary',\r\n value: filterValues.yearStartStart,\r\n });\r\n yearStartEndInput = input.build({\r\n type: 'date',\r\n label: 'Year Start (End)',\r\n style: 'secondary',\r\n value: filterValues.yearStartEnd,\r\n });\r\n yearEndStartInput = input.build({\r\n type: 'date',\r\n label: 'Year End (Start)',\r\n style: 'secondary',\r\n value: filterValues.yearEndStart,\r\n });\r\n yearEndEndInput = input.build({\r\n type: 'date',\r\n label: 'Year End (End)',\r\n style: 'secondary',\r\n value: filterValues.yearEndEnd,\r\n });\r\n if (IsShow == 'ALL' || IsShow == 'completedDateBtn') {\r\n dateWrap.appendChild(completedDateStartInput);\r\n dateWrap.appendChild(completedDateEndInput);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'yearStartBtn') {\r\n dateWrap.appendChild(yearStartStartInput);\r\n dateWrap.appendChild(yearStartEndInput);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'yearEndBtn') {\r\n dateWrap.appendChild(yearEndStartInput);\r\n dateWrap.appendChild(yearEndEndInput);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n const cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(filterPopup);\r\n },\r\n });\r\n btnWrap.appendChild(applyFilterBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'plantypeBtn')\r\n filterPopup.appendChild(planTypeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'vendorBtn')\r\n filterPopup.appendChild(vendorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'matchSourceBtn')\r\n filterPopup.appendChild(matchSourceDropdown);\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(filterPopup);\r\n\r\n populatePlanTypeDropdown();\r\n populateVendorDropdown();\r\n populateMatchSourceDropdown();\r\n\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n planTypeDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.planType = selectedOption.value;\r\n });\r\n vendorDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.vendor = selectedOption.value;\r\n });\r\n matchSourceDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.matchSource = selectedOption.value;\r\n });\r\n completedDateStartInput.addEventListener('change', e => {\r\n newFilterValues.completedDateStart = e.target.value;\r\n if (e.target.value === '') {\r\n completedDateStartInput.classList.add('error');\r\n } else {\r\n completedDateStartInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n completedDateEndInput.addEventListener('change', e => {\r\n newFilterValues.completedDateEnd = e.target.value;\r\n if (e.target.value === '') {\r\n completedDateEndInput.classList.add('error');\r\n } else {\r\n completedDateEndInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n yearStartStartInput.addEventListener('change', e => {\r\n newFilterValues.yearStartStart = e.target.value;\r\n if (e.target.value === '') {\r\n yearStartStartInput.classList.add('error');\r\n } else {\r\n yearStartStartInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n yearStartEndInput.addEventListener('change', e => {\r\n newFilterValues.yearStartEnd = e.target.value;\r\n if (e.target.value === '') {\r\n yearStartEndInput.classList.add('error');\r\n } else {\r\n yearStartEndInput.classList.remove('error');\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n yearEndStartInput.addEventListener('change', e => {\r\n newFilterValues.yearEndStart = e.target.value;\r\n });\r\n yearEndEndInput.addEventListener('change', e => {\r\n newFilterValues.yearEndEnd = e.target.value;\r\n });\r\n applyFilterBtn.addEventListener('click', async e => {\r\n POPUP.hide(filterPopup);\r\n applyFilter();\r\n });\r\n }\r\n\r\n async function applyFilter() {\r\n filterValues = { ...filterValues, ...newFilterValues };\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.removeChild(overviewTable);\r\n pageWrap.appendChild(spinner);\r\n\r\n authData = await authorizationsAjax.getPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n code: '%',\r\n matchSource: filterValues.matchSource,\r\n vendorId: filterValues.vendor,\r\n planType: filterValues.planType,\r\n planYearStartStart: UTIL.formatDateToIso(filterValues.yearStartStart),\r\n planYearStartEnd: UTIL.formatDateToIso(filterValues.yearStartEnd),\r\n planYearEndStart: filterValues.yearEndStart\r\n ? UTIL.formatDateToIso(filterValues.yearEndStart)\r\n : '',\r\n planYearEndEnd: filterValues.yearEndEnd\r\n ? UTIL.formatDateToIso(filterValues.yearEndEnd)\r\n : '',\r\n completedDateStart: UTIL.formatDateToIso(filterValues.completedDateStart),\r\n completedDateEnd: UTIL.formatDateToIso(filterValues.completedDateEnd),\r\n });\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n const newfilteredByData = buildFilteredByData();\r\n pageWrap.replaceChild(newfilteredByData, filteredByData);\r\n filteredByData = newfilteredByData;\r\n }\r\n //----------------------------------------\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n function buildOverviewTable() {\r\n groupChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('authTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('authTable__header');\r\n mainHeading.innerHTML = `\r\n
\r\n
Completed
\r\n
Year Start
\r\n
Year End
\r\n
Plan Type
\r\n
PL Vendor
\r\n
Match Source
\r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n authData.pageDataParent.forEach(parent => {\r\n const pasID = parent.pas_id;\r\n\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('authTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('authTable__mainDataRow', 'authTable__dataRow');\r\n mainDataRow.innerHTML = `\r\n
${icons.keyArrowRight}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(parent.CompletionDate.split('T')[0]),\r\n )}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(parent.plan_year_start.split('T')[0]),\r\n )}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(parent.plan_year_end.split('T')[0]),\r\n )}
\r\n
${getPlanTypeFullName(parent.plantype, parent.revisionNum)}
\r\n
${parent.plVendorId ? getVendorFullName(parent.plVendorId) : ''}
\r\n
${parent.sourceAndCaption}
\r\n `;\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n // SUB ROWS\r\n //---------------------------------\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('authTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('authTable__subHeader');\r\n subHeading.innerHTML = `\r\n
#
\r\n
Service
\r\n
Service Code
\r\n
Begin Date
\r\n
End Date
\r\n
Units
\r\n
Frequency
\r\n
Vendor
\r\n
Auth Cost FY1
\r\n
Auth Cost FY2
\r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (authData.pageDataChild[pasID]) {\r\n authData.pageDataChild[pasID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n authData.pageDataChild[pasID].forEach(child => {\r\n const subDataRow = document.createElement('div');\r\n subDataRow.classList.add('authTable__subDataRow', 'authTable__dataRow');\r\n subDataRow.innerHTML = `\r\n
${child.itemnum}
\r\n
${child.description}
\r\n
${child.service_code}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(child.BeginDate.split('T')[0]),\r\n )}
\r\n
${UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(child.EndDate.split('T')[0]),\r\n )}
\r\n
${child.MaxUnits}
\r\n
${getFreqName(child.frequency)}
\r\n
${child.vendorName}
\r\n
${convertToCurrency(child.authCostFY1)}
\r\n
${convertToCurrency(child.authCostFY2)}
\r\n `;\r\n subRowWrap.appendChild(subDataRow);\r\n });\r\n }\r\n\r\n // EVENT\r\n //---------------------------------\r\n mainDataRow.addEventListener('click', e => {\r\n const toggle = e.target.querySelector('#authToggle');\r\n\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggle.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggle.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n // ASSEMBLY\r\n //---------------------------------\r\n rowWrap.appendChild(subRowWrap);\r\n overviewTable.appendChild(rowWrap);\r\n });\r\n\r\n pageWrap.appendChild(overviewTable);\r\n }\r\n\r\n async function loadPage() {\r\n initFilterValues();\r\n\r\n pageWrap = document.createElement('div');\r\n const consumerCard = buildConsumerCard();\r\n\r\n filteredByData = buildFilteredByData();\r\n\r\n pageWrap.appendChild(consumerCard);\r\n pageWrap.appendChild(filteredByData);\r\n DOM.ACTIONCENTER.appendChild(pageWrap);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.appendChild(spinner);\r\n\r\n authData = await authorizationsAjax.getPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n code: '%',\r\n matchSource: filterValues.matchSource,\r\n vendorId: filterValues.vendor,\r\n planType: filterValues.planType,\r\n planYearStartStart: filterValues.yearStartStart,\r\n planYearStartEnd: filterValues.yearStartEnd,\r\n planYearEndStart: filterValues.yearEndStart,\r\n planYearEndEnd: filterValues.yearEndEnd,\r\n completedDateStart: filterValues.completedDateStart,\r\n completedDateEnd: filterValues.completedDateEnd,\r\n });\r\n filterDropdownData = await authorizationsAjax.getFilterDropdownData({\r\n token: $.session.Token,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('authorizations');\r\n $.loadedApp = 'authorizations';\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n clearAllData,\r\n init,\r\n };\r\n})();\r\n","const authorizationsAjax = (function () {\r\n async function getPageData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAuthorizationPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getAuthorizationPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendorLandingPageInfoAsync(callback) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/authorizationGetLandingPageData/',\r\n data: JSON.stringify({\r\n token: $.session.Token\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n const res = data.authorizationGetLandingPageDataResult;\r\n callback(res)\r\n \r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFilterDropdownData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAuthorizationFilterData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getAuthorizationFilterDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getAssessmentEntriesAsync(\r\n consumerIds,\r\n methodology,\r\n score,\r\n startDateFrom,\r\n startDateTo,\r\n endDateFrom,\r\n endDateTo,\r\n priorAuthApplFrom,\r\n priorAuthApplTo,\r\n priorAuthRecFrom,\r\n priorAuthRecTo,\r\n priorAuthAmtFrom,\r\n priorAuthAmtTo,\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"methodology\":\"' +\r\n methodology +\r\n '\", \"score\":\"' +\r\n score +\r\n '\", \"startDateFrom\":\"' +\r\n startDateFrom +\r\n '\", \"startDateTo\":\"' +\r\n startDateTo +\r\n '\", \"endDateFrom\":\"' +\r\n endDateFrom +\r\n '\", \"endDateTo\":\"' +\r\n endDateTo +\r\n '\", \"priorAuthApplFrom\":\"' +\r\n priorAuthApplFrom +\r\n '\", \"priorAuthApplTo\":\"' +\r\n priorAuthApplTo +\r\n '\", \"priorAuthRecFrom\":\"' +\r\n priorAuthRecFrom +\r\n '\", \"priorAuthRecTo\":\"' +\r\n priorAuthRecTo +\r\n '\", \"priorAuthAmtFrom\":\"' +\r\n priorAuthAmtFrom +\r\n '\", \"priorAuthAmtTo\":\"' +\r\n priorAuthAmtTo +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getScoreAsync(MethodologyID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getScore/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n methodologyID: MethodologyID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendorInfoAsync(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendorInfo/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"vendor\":\"' +\r\n dataObj.vendor +\r\n '\",\"DDNumber\":\"' +\r\n dataObj.DDNumber +\r\n '\",\"localNumber\":\"' +\r\n dataObj.localNumber +\r\n '\",\"goodStanding\":\"' +\r\n dataObj.goodStanding +\r\n '\",\"homeServices\":\"' +\r\n dataObj.homeServices +\r\n '\",\"takingNewReferrals\":\"' +\r\n dataObj.takingNewReferrals +\r\n '\",\"fundingSource\":\"' +\r\n dataObj.fundingSource +\r\n '\",\"serviceCode\":\"' +\r\n dataObj.serviceCode +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.getVendorInfoResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function getVendorAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendor/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getFundingSourceAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFundingSource/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getServiceCodeAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceCode/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVendorEntriesByIdAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVendorEntriesById/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderServicesEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderServicesEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderUCREntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderUCREntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getProviderTypeEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getProviderTypeEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderCertificationEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderCertificationEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getVenderLocationReviewEntriesAsync(vendorID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getVenderLocationReviewEntries/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"vendorID\":\"' + vendorID + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getPageData,\r\n getVendorLandingPageInfoAsync,\r\n getFilterDropdownData,\r\n getAssessmentEntriesAsync,\r\n getScoreAsync,\r\n getVendorInfoAsync,\r\n getVendorAsync,\r\n getFundingSourceAsync,\r\n getServiceCodeAsync,\r\n getVendorEntriesByIdAsync,\r\n getVenderServicesEntriesAsync,\r\n getVenderUCREntriesAsync,\r\n getProviderTypeEntriesAsync,\r\n getVenderCertificationEntriesAsync,\r\n getVenderLocationReviewEntriesAsync,\r\n };\r\n})();\r\n","const newVendorInfo = (function () {\r\n\r\n let vendorID;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let DDNumber;\r\n let LocalNumber;\r\n let Phone;\r\n let Name;\r\n\r\n const sections = [\r\n {\r\n title: 'General',\r\n id: 0,\r\n markup: () => vendorGeneral.getMarkup(),\r\n },\r\n {\r\n title: 'Services',\r\n id: 1,\r\n markup: () => vendorServices.getMarkup(),\r\n },\r\n {\r\n title: 'UCR',\r\n id: 2,\r\n markup: () => vendorUCR.getMarkup(),\r\n },\r\n {\r\n title: 'Provider Type',\r\n id: 3,\r\n markup: () => vendorProviderType.getMarkup(),\r\n },\r\n {\r\n title: 'Certification',\r\n id: 4,\r\n markup: () => vendorCertification.getMarkup(),\r\n },\r\n {\r\n title: 'Location Reviews',\r\n id: 5,\r\n markup: () => vendorLocationReview.getMarkup(),\r\n },\r\n\r\n ];\r\n\r\n async function refreshVendor(vendorId, DDNum, localNum, phone, name) {\r\n vendorID = vendorId;\r\n DDNumber = DDNum;\r\n LocalNumber = localNum;\r\n Phone = phone;\r\n Name = name;\r\n DOM.clearActionCenter();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('vendorBtnWrap');\r\n const heading = document.createElement('div');\r\n const headingName = document.createElement('div');\r\n const localNumberheading = document.createElement('div');\r\n const head = document.createElement('div');\r\n\r\n const ispWrap = document.createElement('div');\r\n\r\n ispWrap.id = 'planISP';\r\n\r\n ispWrap.innerHTML = '';\r\n\r\n BACK_BTN = button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { await vendorInfo.vendorInfoLoad() }, \r\n });\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n heading.innerHTML = `

${Name} ${Phone}

`;\r\n headingName.innerHTML = `

DD Number: ${DDNumber}

`;\r\n localNumberheading.innerHTML = `

Local Number: ${LocalNumber}

`;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\r\n head.appendChild(headingName);\r\n head.appendChild(localNumberheading);\r\n headingWrap.appendChild(head);\r\n headingWrap.appendChild(BACK_BTN);\r\n\r\n DOM.ACTIONCENTER.appendChild(headingWrap);\r\n DOM.ACTIONCENTER.appendChild(ispWrap);\r\n DOM.autosizeTextarea(); \r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n targetSection.classList.add('active');\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (index === 0) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n await vendorGeneral.init(vendorID);\r\n await vendorServices.init(vendorID);\r\n await vendorUCR.init(vendorID);\r\n await vendorProviderType.init(vendorID);\r\n await vendorCertification.init(vendorID);\r\n await vendorLocationReview.init(vendorID);\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (index === 0) { \r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshVendor,\r\n getMarkup,\r\n };\r\n})();\r\n","const vendorCertification = (() => {\r\n let vendorID;\r\n let certificationEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n certificationEntries = await authorizationsAjax.getVenderCertificationEntriesAsync(vendorID);\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const vendorCertificationWrap = document.createElement('div');\r\n vendorCertificationWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewCertificationForm();\r\n vendorCertificationWrap.appendChild(importantTables);\r\n\r\n return vendorCertificationWrap;\r\n }\r\n\r\n function buildNewCertificationForm() {\r\n const vendorCertificationDiv = document.createElement('div');\r\n vendorCertificationDiv.classList.add('additionalQuestionWrap');\r\n\r\n certificationEntriesTable = buildCertificationEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Certification
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(certificationEntriesTable);\r\n vendorCertificationDiv.appendChild(column1);\r\n return vendorCertificationDiv;\r\n }\r\n\r\n function buildCertificationEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable', \r\n columnHeadings: ['Certification', 'Start Date', 'End Date'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = certificationEntries.getVenderCertificationEntriesResult.map((entry) => ({\r\n values: [entry.Certifiction, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY')],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewCertificationForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorGeneral = (() => {\r\n let vendorID;\r\n let vendorEntriesById;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n vendorEntriesById = await authorizationsAjax.getVendorEntriesByIdAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const workScheduleWrap = document.createElement('div');\r\n workScheduleWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildVendorGeneralForm();\r\n workScheduleWrap.appendChild(importantTables);\r\n\r\n return workScheduleWrap;\r\n }\r\n\r\n function buildVendorGeneralForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n\r\n nameInput = input.build({\r\n id: 'nameInput',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].name,\r\n });\r\n contactNameInput = input.build({\r\n id: 'contactNameInput',\r\n type: 'text',\r\n label: 'Contact Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactName,\r\n });\r\n contactPhoneInput = input.build({\r\n id: 'contactPhoneInput',\r\n type: 'text',\r\n label: 'Contact Phone',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactPhone,\r\n });\r\n contactEmailInput = input.build({\r\n id: 'contactEmailInput',\r\n type: 'text',\r\n label: 'Contact Email',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactEmail,\r\n });\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n type: 'text',\r\n label: 'Address 1',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].address1,\r\n });\r\n address2Input = input.build({\r\n id: 'address2Input',\r\n type: 'text',\r\n label: 'Address 2',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].address2,\r\n });\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n type: 'text',\r\n label: 'City',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].city,\r\n });\r\n stateInput = input.build({\r\n id: 'ststeInput',\r\n type: 'text',\r\n label: 'State',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].state,\r\n });\r\n zipInput = input.build({\r\n id: 'zipInput',\r\n type: 'text',\r\n label: 'Zip Code',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].zipCode,\r\n });\r\n phoneInput = input.build({\r\n id: 'phoneInput',\r\n type: 'text',\r\n label: 'Phone',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].primaryPhone,\r\n });\r\n firstNameInput = input.build({\r\n id: 'Input',\r\n type: 'text',\r\n label: 'First Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerFirstName,\r\n });\r\n lastNameInput = input.build({\r\n id: 'lastNameInput',\r\n type: 'text',\r\n label: 'Last Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerLastName,\r\n });\r\n birthDateInput = input.build({\r\n id: 'birthDateInput',\r\n type: 'text',\r\n label: 'Birth Date',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerBirthDate == '' ? '' : moment(vendorEntriesById.getVendorEntriesByIdResult[0].providerBirthDate).format('MM/DD/YYYY'),\r\n });\r\n buildingNumberInput = input.build({\r\n id: 'buildingNumberInput',\r\n type: 'text',\r\n label: 'Building Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerBuildingNumber,\r\n });\r\n salesforceIDInput = input.build({\r\n id: 'salesforceIDInput',\r\n type: 'text',\r\n label: 'Salesforce ID',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].salesforceId,\r\n });\r\n DDStateNumberInput = input.build({\r\n id: 'DDStateNumberInput',\r\n type: 'text',\r\n label: 'DD State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].DDStateNumber,\r\n });\r\n einInput = input.build({\r\n id: 'einInput',\r\n type: 'text',\r\n label: 'EIN',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].ein,\r\n });\r\n submitterInput = input.build({\r\n id: 'submitterInput',\r\n type: 'text',\r\n label: 'Submitter',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].submitterId,\r\n });\r\n localNumberInput = input.build({\r\n id: 'localNumberInput',\r\n type: 'text',\r\n label: 'Local Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].LocalNumber,\r\n });\r\n SSNInput = input.build({\r\n id: 'SSNInput',\r\n type: 'text',\r\n label: 'SSN',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].ssn,\r\n });\r\n senderInput = input.build({\r\n id: 'senderInput',\r\n type: 'text',\r\n label: 'Sender ',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].sender,\r\n });\r\n MHStateNumberInput = input.build({\r\n id: 'MHStateNumberInput',\r\n type: 'text',\r\n label: 'MH State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].MHStateNumber,\r\n });\r\n TDDStateNumberInput = input.build({\r\n id: 'TDDStateNumberInput',\r\n type: 'text',\r\n label: 'TDD State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].TDDStateNumber,\r\n });\r\n NPIInput = input.build({\r\n id: 'NPIInput',\r\n type: 'text',\r\n label: 'NPI',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].NPI,\r\n });\r\n MHNPIInput = input.build({\r\n id: 'MHNPIInput',\r\n type: 'text',\r\n label: 'MH NPI',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].MHNPI,\r\n });\r\n\r\n inGoodStandingchkBox = input.buildCheckbox({\r\n text: 'In Good Standing',\r\n id: 'chkinGoodStanding',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].goodStanding == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n takingNewReferralschkBox = input.buildCheckbox({\r\n text: 'Taking New Referrals',\r\n id: 'chktakingNewReferrals',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].takingNewReferrals == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n FSSVendorchkBox = input.buildCheckbox({\r\n text: 'FSS Vendor',\r\n id: 'chkFSSVendor',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].FSSVendor == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n sanctionsAdministeredchkBox = input.buildCheckbox({\r\n text: 'Sanctions Administered',\r\n id: 'chkSanctionsAdministered',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].sanctionsAdministered == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n inHomeServiceschkBox = input.buildCheckbox({\r\n text: 'In Home Services',\r\n id: 'chkInHomeServices',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].homeServices == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
General
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Contact Information'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n\r\n nameInput.classList.add('marginTop2Per');\r\n addNewCardBody.appendChild(nameInput);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('vendorDTWrap');\r\n contactNameInput.classList.add('width35Per');\r\n dropWrap.appendChild(contactNameInput);\r\n contactPhoneInput.classList.add('width30Per');\r\n dropWrap.appendChild(contactPhoneInput);\r\n contactEmailInput.classList.add('width30Per'); \r\n dropWrap.appendChild(contactEmailInput);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var dropWrap1 = document.createElement('div');\r\n dropWrap1.classList.add('vendorDTWrap');\r\n address1Input.classList.add('width50Per');\r\n dropWrap1.appendChild(address1Input);\r\n address2Input.classList.add('width50Per');\r\n dropWrap1.appendChild(address2Input);\r\n addNewCardBody.appendChild(dropWrap1);\r\n\r\n var dropWrap2 = document.createElement('div');\r\n dropWrap2.classList.add('vendorDTWrap');\r\n cityInput.classList.add('width30Per');\r\n dropWrap2.appendChild(cityInput);\r\n stateInput.classList.add('width10Per');\r\n dropWrap2.appendChild(stateInput);\r\n zipInput.classList.add('width20Per');\r\n dropWrap2.appendChild(zipInput);\r\n phoneInput.classList.add('width32Per');\r\n dropWrap2.appendChild(phoneInput);\r\n addNewCardBody.appendChild(dropWrap2);\r\n\r\n const consumerNameDisplay1 = document.createElement(\"p\");\r\n consumerNameDisplay1.classList.add(\"heading\");\r\n consumerNameDisplay1.innerHTML = `${'Ohio ISP Information'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay1);\r\n\r\n var dropWrap3 = document.createElement('div');\r\n dropWrap3.classList.add('marginTop2Per');\r\n dropWrap3.classList.add('vendorDTWrap');\r\n firstNameInput.classList.add('width25Per');\r\n dropWrap3.appendChild(firstNameInput);\r\n lastNameInput.classList.add('width23Per');\r\n dropWrap3.appendChild(lastNameInput);\r\n birthDateInput.classList.add('width23Per');\r\n dropWrap3.appendChild(birthDateInput);\r\n buildingNumberInput.classList.add('width23Per');\r\n dropWrap3.appendChild(buildingNumberInput);\r\n addNewCardBody.appendChild(dropWrap3);\r\n\r\n var dropWrap4 = document.createElement('div');\r\n dropWrap4.classList.add('vendorDTWrap');\r\n salesforceIDInput.classList.add('width40Per');\r\n dropWrap4.appendChild(salesforceIDInput);\r\n addNewCardBody.appendChild(dropWrap4);\r\n\r\n const consumerNameDisplay2 = document.createElement(\"p\");\r\n consumerNameDisplay2.classList.add(\"heading\");\r\n consumerNameDisplay2.innerHTML = `${'Billing/Authorization'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay2);\r\n\r\n var dropWrap5 = document.createElement('div');\r\n dropWrap5.classList.add('marginTop2Per');\r\n dropWrap5.classList.add('vendorDTWrap');\r\n DDStateNumberInput.classList.add('width19Per');\r\n dropWrap5.appendChild(DDStateNumberInput);\r\n einInput.classList.add('width18Per');\r\n dropWrap5.appendChild(einInput);\r\n submitterInput.classList.add('width18Per');\r\n dropWrap5.appendChild(submitterInput);\r\n localNumberInput.classList.add('width18Per');\r\n dropWrap5.appendChild(localNumberInput);\r\n SSNInput.classList.add('width18Per');\r\n dropWrap5.appendChild(SSNInput);\r\n addNewCardBody.appendChild(dropWrap5);\r\n\r\n var dropWrap6 = document.createElement('div');\r\n dropWrap6.classList.add('vendorDTWrap');\r\n senderInput.classList.add('width19Per');\r\n dropWrap6.appendChild(senderInput);\r\n MHStateNumberInput.classList.add('width18Per');\r\n dropWrap6.appendChild(MHStateNumberInput);\r\n TDDStateNumberInput.classList.add('width18Per');\r\n dropWrap6.appendChild(TDDStateNumberInput);\r\n NPIInput.classList.add('width18Per');\r\n dropWrap6.appendChild(NPIInput);\r\n MHNPIInput.classList.add('width18Per');\r\n dropWrap6.appendChild(MHNPIInput);\r\n addNewCardBody.appendChild(dropWrap6);\r\n\r\n const consumerNameDisplay3 = document.createElement(\"p\");\r\n consumerNameDisplay3.classList.add(\"heading\");\r\n consumerNameDisplay3.innerHTML = `${'Miscellaneous'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay3);\r\n\r\n var chkDiv = document.createElement('div');\r\n chkDiv.classList.add('marginTop2Per');\r\n chkDiv.appendChild(inGoodStandingchkBox);\r\n addNewCardBody.appendChild(chkDiv);\r\n\r\n var chkDiv1 = document.createElement('div');\r\n chkDiv1.appendChild(takingNewReferralschkBox);\r\n addNewCardBody.appendChild(chkDiv1);\r\n\r\n var chkDiv2 = document.createElement('div');\r\n chkDiv2.appendChild(FSSVendorchkBox);\r\n addNewCardBody.appendChild(chkDiv2);\r\n\r\n var chkDiv3 = document.createElement('div');\r\n chkDiv3.appendChild(sanctionsAdministeredchkBox);\r\n addNewCardBody.appendChild(chkDiv3);\r\n\r\n var chkDiv4 = document.createElement('div');\r\n chkDiv4.appendChild(inHomeServiceschkBox);\r\n addNewCardBody.appendChild(chkDiv4);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n return employeeInfoDiv;\r\n }\r\n\r\n return {\r\n init,\r\n buildVendorGeneralForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorInfo = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let userTableData = [];\r\n let tempUserTableData = [];\r\n let displayedUsers = [];\r\n var userTable;\r\n\r\n let btnWrap;\r\n let vendorBtnWrap;\r\n let DDNumberBtnWrap;\r\n let localNumberBtnWrap;\r\n let goodStandingBtnWrap;\r\n let homeServicesBtnWrap;\r\n let takingNewReferralsBtnWrap;\r\n let fundingSourceBtnWrap;\r\n let serviceCodeBtnWrap;\r\n\r\n let vendorsData;\r\n let groupedVendors;\r\n let vendorGroupCount;\r\n let activeGroup;\r\n let loadMoreVendors = [];\r\n let chunkedArray;\r\n //filter\r\n let filterValues;\r\n function init() {\r\n filterValues = undefined;\r\n vendorInfoLoad();\r\n }\r\n\r\n async function vendorInfoLoad(fromFilter = false) {\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n topNav.classList.add('marginBottomFilter');\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(filterRow);\r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n DOM.ACTIONCENTER.appendChild(LOAD_MORE_BTN);\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n await loadReviewPage(fromFilter);\r\n document.getElementById('searchBtn').click();\r\n }\r\n\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n\r\n function buildNewFilterBtn() {\r\n if (!filterValues)\r\n filterValues = {\r\n token: $.session.Token,\r\n vendor: '%',\r\n DDNumber: '',\r\n localNumber: '',\r\n goodStanding: '%',\r\n homeServices: '%',\r\n takingNewReferrals: '%',\r\n fundingSource: '%',\r\n serviceCode: '%',\r\n };\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n headline: 'Vendor Info',\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Name', 'DD Number', 'Local Number', 'Contact', 'Phone'],\r\n callback: handleVendorInfoTableEvents,\r\n endIcon: false,\r\n secondendIcon: false,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n function populateTable(results) {\r\n userTableData = results.map(td => {\r\n var vendorID = td.vendorID;\r\n var name = td.name;\r\n var DDNumber = td.DDNumber;\r\n var localNumber = td.localNumber;\r\n var contact = td.contact;\r\n var phone = td.phone;\r\n\r\n return {\r\n vendorID: vendorID,\r\n name: name,\r\n DDNumber: DDNumber,\r\n localNumber: localNumber,\r\n contact: contact,\r\n phone: phone,\r\n values: [name, DDNumber, localNumber, contact, formatPhoneNumber(phone)],\r\n attributes: [{ key: 'vendorId', value: vendorID }],\r\n };\r\n });\r\n\r\n table.populate(userTable, userTableData, false, true);\r\n if (chunkedArray.length < 2) {\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n } else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n }\r\n }\r\n\r\n function handleVendorInfoTableEvents(event) {\r\n var name = event.target.childNodes[0].innerText;\r\n var DDNum = event.target.childNodes[1].innerText;\r\n var localNum = event.target.childNodes[2].innerText;\r\n var phone = event.target.childNodes[4].innerText;\r\n var vendorId = event.target.attributes.vendorId.value;\r\n newVendorInfo.refreshVendor(vendorId, DDNum, localNum, phone, name);\r\n }\r\n\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n SEARCH_BTN = buildSearchBtn();\r\n buildNewFilterBtn();\r\n\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search vendors');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n btnWrap.appendChild(wrap1);\r\n return btnWrap;\r\n }\r\n\r\n function tableUserSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n\r\n tempUserTableData.forEach(consumer => {\r\n var Name = consumer.name.toLowerCase();\r\n var fullName = `${Name}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n\r\n if (matchesName !== -1) {\r\n consumerObj = {\r\n vendorID: consumer.vendorID,\r\n name: consumer.name,\r\n DDNumber: consumer.DDNumber,\r\n localNumber: consumer.localNumber,\r\n contact: consumer.contact,\r\n phone: consumer.phone,\r\n };\r\n displayedUsers.push(consumerObj);\r\n }\r\n });\r\n\r\n groupVendorData(displayedUsers);\r\n }\r\n\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.vendor === '%' || filterValues.vendor === 'ALL') {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n btnWrap.removeChild(vendorBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n }\r\n\r\n if (filterValues.DDNumber === '') {\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n btnWrap.removeChild(DDNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n }\r\n\r\n if (filterValues.localNumber === '') {\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n btnWrap.removeChild(localNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n }\r\n\r\n if (filterValues.goodStanding === '%' || filterValues.goodStanding === 'ALL') {\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n btnWrap.removeChild(goodStandingBtnWrap);\r\n } else {\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n }\r\n\r\n if (filterValues.homeServices === '%' || filterValues.homeServices === 'ALL') {\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n btnWrap.removeChild(homeServicesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n }\r\n\r\n if (filterValues.takingNewReferrals === '%' || filterValues.takingNewReferrals === 'ALL') {\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n btnWrap.removeChild(takingNewReferralsBtnWrap);\r\n } else {\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n }\r\n\r\n if (filterValues.fundingSource === '%' || filterValues.fundingSource === 'ALL') {\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n btnWrap.removeChild(fundingSourceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n }\r\n if (filterValues.serviceCode === '%' || filterValues.serviceCode === 'ALL') {\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n btnWrap.removeChild(serviceCodeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n buildFilterPopUp('ALL');\r\n },\r\n });\r\n\r\n DDNumberBtn = button.build({\r\n id: 'DDNumberBtn',\r\n text: 'DD ',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtnVendorInfo',\r\n callback: () => {\r\n buildFilterPopUp('DDNumberBtn');\r\n },\r\n });\r\n\r\n DDNumberBtn2 = button.build({\r\n id: 'DDNumberBtn2',\r\n text: 'Number: ' + filterValues.DDNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('DDNumberBtn');\r\n },\r\n });\r\n DDNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('DDNumberBtn');\r\n },\r\n });\r\n\r\n localNumberBtn = button.build({\r\n id: 'localNumberBtn',\r\n text: 'Local Number: ' + filterValues.localNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('localNumberBtn');\r\n },\r\n });\r\n localNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('localNumberBtn');\r\n },\r\n });\r\n vendorBtn = button.build({\r\n id: 'vendorBtn',\r\n text: 'Vendor: ' + filterValues.vendor,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('vendorBtn');\r\n },\r\n });\r\n vendorCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('vendorBtn');\r\n },\r\n });\r\n\r\n goodStandingBtn = button.build({\r\n id: 'goodStandingBtn',\r\n text: filterValues.goodStanding == 'Y' ? 'In Good Standing: Yes' : 'In Good Standing: No',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('goodStandingBtn');\r\n },\r\n });\r\n goodStandingCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('goodStandingBtn');\r\n },\r\n });\r\n\r\n homeServicesBtn = button.build({\r\n id: 'homeServicesBtn',\r\n text: filterValues.homeServices == 'Y' ? 'In Home Services: Yes' : 'In Home Services: No',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('homeServicesBtn');\r\n },\r\n });\r\n homeServicesCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('homeServicesBtn');\r\n },\r\n });\r\n\r\n takingNewReferralsBtn = button.build({\r\n id: 'takingNewReferralsBtn',\r\n text: filterValues.takingNewReferrals == 'Y' ? 'Taking New Referrals: Yes' : 'Taking New Referrals: No',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('takingNewReferralsBtn');\r\n },\r\n });\r\n takingNewReferralsCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('takingNewReferralsBtn');\r\n },\r\n });\r\n\r\n fundingSourceBtn = button.build({\r\n id: 'fundingSourceBtn',\r\n text: 'Funding Source: ' + filterValues.fundingSource,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('fundingSourceBtn');\r\n },\r\n });\r\n fundingSourceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('fundingSourceBtn');\r\n },\r\n });\r\n\r\n serviceCodeBtn = button.build({\r\n id: 'serviceCodeBtn',\r\n text: 'Service Code: ' + filterValues.serviceCode,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopUp('serviceCodeBtn');\r\n },\r\n });\r\n serviceCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('serviceCodeBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n vendorBtnWrap = document.createElement('div');\r\n vendorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vendorBtnWrap.appendChild(vendorBtn);\r\n vendorBtnWrap.appendChild(vendorCloseBtn);\r\n btnWrap.appendChild(vendorBtnWrap);\r\n\r\n DDNumberBtnWrap = document.createElement('div');\r\n DDNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n DDNumberBtnWrap.appendChild(DDNumberBtn);\r\n DDNumberBtnWrap.appendChild(DDNumberBtn2);\r\n DDNumberBtnWrap.appendChild(DDNumberCloseBtn);\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n\r\n localNumberBtnWrap = document.createElement('div');\r\n localNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n localNumberBtnWrap.appendChild(localNumberBtn);\r\n localNumberBtnWrap.appendChild(localNumberCloseBtn);\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n\r\n goodStandingBtnWrap = document.createElement('div');\r\n goodStandingBtnWrap.classList.add('filterSelectionBtnWrap');\r\n goodStandingBtnWrap.appendChild(goodStandingBtn);\r\n goodStandingBtnWrap.appendChild(goodStandingCloseBtn);\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n\r\n homeServicesBtnWrap = document.createElement('div');\r\n homeServicesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n homeServicesBtnWrap.appendChild(homeServicesBtn);\r\n homeServicesBtnWrap.appendChild(homeServicesCloseBtn);\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n\r\n takingNewReferralsBtnWrap = document.createElement('div');\r\n takingNewReferralsBtnWrap.classList.add('filterSelectionBtnWrap');\r\n takingNewReferralsBtnWrap.appendChild(takingNewReferralsBtn);\r\n takingNewReferralsBtnWrap.appendChild(takingNewReferralsCloseBtn);\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n\r\n fundingSourceBtnWrap = document.createElement('div');\r\n fundingSourceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fundingSourceBtnWrap.appendChild(fundingSourceBtn);\r\n fundingSourceBtnWrap.appendChild(fundingSourceCloseBtn);\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n\r\n serviceCodeBtnWrap = document.createElement('div');\r\n serviceCodeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceCodeBtnWrap.appendChild(serviceCodeBtn);\r\n serviceCodeBtnWrap.appendChild(serviceCodeCloseBtn);\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'DDNumberBtn') {\r\n filterValues.DDNumber = '';\r\n }\r\n if (closeFilter == 'localNumberBtn') {\r\n filterValues.localNumber = '';\r\n }\r\n if (closeFilter == 'vendorBtn') {\r\n filterValues.vendor = '%';\r\n }\r\n if (closeFilter == 'goodStandingBtn') {\r\n filterValues.goodStanding = '%';\r\n }\r\n if (closeFilter == 'homeServicesBtn') {\r\n filterValues.homeServices = '%';\r\n }\r\n if (closeFilter == 'fundingSourceBtn') {\r\n filterValues.fundingSource = '%';\r\n }\r\n if (closeFilter == 'serviceCodeBtn') {\r\n filterValues.serviceCode = '%';\r\n }\r\n if (closeFilter == 'takingNewReferralsBtn') {\r\n filterValues.takingNewReferrals = '%';\r\n }\r\n\r\n vendorInfoLoad(true);\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n vendorDropdown = dropdown.build({\r\n id: 'vendorDropdown',\r\n label: 'Vendors',\r\n dropdownId: 'vendorDropdown',\r\n });\r\n\r\n DDNumberInput = input.build({\r\n id: 'DDNumberInput',\r\n type: 'text',\r\n label: 'DD Number',\r\n style: 'secondary',\r\n value: filterValues.DDNumber,\r\n });\r\n\r\n localNumberInput = input.build({\r\n id: 'localNumberInput',\r\n type: 'text',\r\n label: 'Local Number',\r\n style: 'secondary',\r\n value: filterValues.localNumber,\r\n });\r\n\r\n goodStandingDropdown = dropdown.build({\r\n id: 'goodStandingDropdown',\r\n label: 'In Good Standing',\r\n dropdownId: 'goodStandingDropdown',\r\n });\r\n\r\n homeServicesDropdown = dropdown.build({\r\n id: 'homeServicesDropdown',\r\n label: 'In Home Services',\r\n dropdownId: 'homeServicesDropdown',\r\n });\r\n\r\n takingNewReferralsDropdown = dropdown.build({\r\n id: 'takingNewReferralsDropdown',\r\n label: 'Taking New Referrals',\r\n dropdownId: 'takingNewReferralsDropdown',\r\n });\r\n\r\n fundingSourceDropdown = dropdown.build({\r\n id: 'fundingSourceDropdown',\r\n label: 'Funding Source',\r\n dropdownId: 'fundingSourceDropdown',\r\n });\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n id: 'serviceCodeDropdown',\r\n label: 'Service Code',\r\n dropdownId: 'serviceCodeDropdown',\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn(),\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'vendorBtn') filterPopup.appendChild(vendorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'DDNumberBtn') filterPopup.appendChild(DDNumberInput);\r\n if (IsShow == 'ALL' || IsShow == 'localNumberBtn') filterPopup.appendChild(localNumberInput);\r\n if (IsShow == 'ALL' || IsShow == 'goodStandingBtn') filterPopup.appendChild(goodStandingDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'homeServicesBtn') filterPopup.appendChild(homeServicesDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'takingNewReferralsBtn') filterPopup.appendChild(takingNewReferralsDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'fundingSourceBtn') filterPopup.appendChild(fundingSourceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceCodeBtn') filterPopup.appendChild(serviceCodeDropdown);\r\n\r\n filterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(filterPopup);\r\n eventListeners();\r\n populateFilterDropdown();\r\n }\r\n\r\n // binding filter events\r\n function eventListeners() {\r\n var tmpVendor;\r\n var tmpDDNumber;\r\n var tmpLocalNumber;\r\n var tmpGoodStanding;\r\n var tmpHomeServices;\r\n var tmpTakingNewReferrals;\r\n var tmpFundingSource;\r\n var tmpServiceCode;\r\n\r\n vendorDropdown.addEventListener('change', event => {\r\n tmpVendor = event.target.value;\r\n });\r\n DDNumberInput.addEventListener('input', event => {\r\n tmpDDNumber = event.target.value.trim();\r\n });\r\n localNumberInput.addEventListener('input', event => {\r\n tmpLocalNumber = event.target.value.trim();\r\n });\r\n goodStandingDropdown.addEventListener('change', event => {\r\n tmpGoodStanding = event.target.value;\r\n });\r\n homeServicesDropdown.addEventListener('change', event => {\r\n tmpHomeServices = event.target.value;\r\n });\r\n takingNewReferralsDropdown.addEventListener('change', event => {\r\n tmpTakingNewReferrals = event.target.value;\r\n });\r\n fundingSourceDropdown.addEventListener('change', event => {\r\n tmpFundingSource = event.target.value;\r\n });\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n tmpServiceCode = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpVendor,\r\n tmpDDNumber,\r\n tmpLocalNumber,\r\n tmpGoodStanding,\r\n tmpHomeServices,\r\n tmpTakingNewReferrals,\r\n tmpFundingSource,\r\n tmpServiceCode,\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n vendorInfoLoad(true);\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpVendor) filterValues.vendor = data.tmpVendor;\r\n if (data.tmpDDNumber != undefined) filterValues.DDNumber = data.tmpDDNumber;\r\n if (data.tmpLocalNumber != undefined) filterValues.localNumber = data.tmpLocalNumber;\r\n if (data.tmpGoodStanding) filterValues.goodStanding = data.tmpGoodStanding;\r\n if (data.tmpHomeServices) filterValues.homeServices = data.tmpHomeServices;\r\n if (data.tmpTakingNewReferrals) filterValues.takingNewReferrals = data.tmpTakingNewReferrals;\r\n if (data.tmpFundingSource) filterValues.fundingSource = data.tmpFundingSource;\r\n if (data.tmpServiceCode) filterValues.serviceCode = data.tmpServiceCode;\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const { getVendorResult: Vendor } = await authorizationsAjax.getVendorAsync();\r\n let vendorData = Vendor.map(vendor => ({\r\n id: vendor.Description,\r\n value: vendor.Description,\r\n text: vendor.Description,\r\n }));\r\n vendorData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('vendorDropdown', vendorData, filterValues.vendor);\r\n\r\n const { getFundingSourceResult: FundingSource } = await authorizationsAjax.getFundingSourceAsync();\r\n let fundingSourceData = FundingSource.map(fundingSource => ({\r\n id: fundingSource.ID,\r\n value: fundingSource.Description,\r\n text: fundingSource.Description,\r\n }));\r\n fundingSourceData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('fundingSourceDropdown', fundingSourceData, filterValues.fundingSource);\r\n\r\n const { getServiceCodeResult: ServiceCode } = await authorizationsAjax.getServiceCodeAsync();\r\n let serviceCodeData = ServiceCode.map(serviceCode => ({\r\n id: serviceCode.ID,\r\n value: serviceCode.Description,\r\n text: serviceCode.Description,\r\n }));\r\n serviceCodeData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('serviceCodeDropdown', serviceCodeData, filterValues.serviceCode);\r\n\r\n const goodStandingData = [\r\n { id: 1, value: 'N', text: 'No' },\r\n { id: 2, value: 'Y', text: 'Yes' },\r\n ];\r\n goodStandingData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('goodStandingDropdown', goodStandingData, filterValues.goodStanding);\r\n\r\n const homeServicesData = [\r\n { id: 1, value: 'N', text: 'No' },\r\n { id: 2, value: 'Y', text: 'Yes' },\r\n ];\r\n homeServicesData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('homeServicesDropdown', homeServicesData, filterValues.homeServices);\r\n\r\n const takingNewReferralsData = [\r\n { id: 1, value: 'N', text: 'No' },\r\n { id: 2, value: 'Y', text: 'Yes' },\r\n ];\r\n takingNewReferralsData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('takingNewReferralsDropdown', takingNewReferralsData, filterValues.takingNewReferrals);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n // load\r\n async function loadReviewPage(fromFilter) {\r\n var DDNum = filterValues.DDNumber == '' ? '%' : filterValues.DDNumber;\r\n var localNum = filterValues.localNumber == '' ? '%' : filterValues.localNumber;\r\n if (fromFilter) {\r\n await authorizationsAjax.getVendorInfoAsync(\r\n {\r\n vendor: filterValues.vendor,\r\n DDNumber: DDNum,\r\n localNumber: localNum,\r\n goodStanding: filterValues.goodStanding,\r\n homeServices: filterValues.homeServices,\r\n takingNewReferrals: filterValues.takingNewReferrals,\r\n fundingSource: filterValues.fundingSource,\r\n serviceCode: filterValues.serviceCode,\r\n },\r\n async function (results) {\r\n tempUserTableData = results;\r\n vendorsData = results;\r\n await groupVendorData();\r\n },\r\n );\r\n return;\r\n }\r\n\r\n await authorizationsAjax.getVendorLandingPageInfoAsync(async function (results) {\r\n tempUserTableData = results;\r\n vendorsData = results;\r\n await groupVendorData();\r\n });\r\n }\r\n\r\n function pouplateVendors() {\r\n if (!groupedVendors[activeGroup + 1]) {\r\n document.getElementById('loadMoreBtn').style.display = 'none';\r\n } else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n }\r\n loadMoreVendors = loadMoreVendors.concat(groupedVendors[activeGroup]);\r\n populateTable(loadMoreVendors);\r\n }\r\n\r\n async function groupVendorData(vendors) {\r\n const chunkBy = 50;\r\n chunkedArray = vendors ? UTIL.chunkArray(vendors, chunkBy) : UTIL.chunkArray(vendorsData, chunkBy);\r\n groupedVendors = {};\r\n chunkedArray.forEach((a, index) => (groupedVendors[index] = a));\r\n const vendorKeys = Object.keys(groupedVendors);\r\n vendorGroupCount = vendorKeys && vendorKeys.length;\r\n activeGroup = 0;\r\n loadMoreVendors = groupedVendors[activeGroup];\r\n populateTable(loadMoreVendors);\r\n }\r\n\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreVendorBtn');\r\n\r\n const btn = button.build({\r\n id: 'loadMoreBtn',\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n pouplateVendors();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(btn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function formatPhoneNumber(number) {\r\n if (number == '' || number == ' ') return '';\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(number.substr(0, 10));\r\n const phoneExt = number.substr(10);\r\n\r\n const phonebracket = phoneNumber.substr(0, 3);\r\n const phonenum = phoneNumber.substr(4, 11);\r\n\r\n const phone = `(${phonebracket})` + ` ` + ` ${phonenum}` + ` ` + `${phoneExt}`;\r\n\r\n return phone;\r\n }\r\n\r\n return {\r\n init,\r\n vendorInfoLoad,\r\n };\r\n})();\r\n","const vendorLocationReview = (() => {\r\n let vendorID;\r\n let locationReviewEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n locationReviewEntries = await authorizationsAjax.getVenderLocationReviewEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const locatationReviewWrap = document.createElement('div');\r\n locatationReviewWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorLocationReviewForm();\r\n locatationReviewWrap.appendChild(importantTables);\r\n\r\n return locatationReviewWrap;\r\n }\r\n\r\n function buildNewVendorLocationReviewForm() {\r\n const locatationReviewDiv = document.createElement('div');\r\n locatationReviewDiv.classList.add('additionalQuestionWrap');\r\n\r\n locationReviewEntriesTable = buildLocationReviewEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Location Review
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(locationReviewEntriesTable);\r\n locatationReviewDiv.appendChild(column1);\r\n return locatationReviewDiv;\r\n }\r\n\r\n function buildLocationReviewEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable', \r\n columnHeadings: ['Location ', 'Review Type', 'Due Date', 'Completed Date', 'Responsible Staff'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = locationReviewEntries.getVenderLocationReviewEntriesResult.map((entry) => ({\r\n values: [entry.location, entry.reviewType, entry.dueDate == '' ? '' : moment(entry.dueDate).format('MM/DD/YYYY'), entry.completedDate == '' ? '' : moment(entry.completedDate).format('MM/DD/YYYY'), entry.responsibleStaff],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewVendorLocationReviewForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorProviderType = (() => {\r\n let vendorID;\r\n let providerTypeEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n providerTypeEntries = await authorizationsAjax.getProviderTypeEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const vendorProviderWrap = document.createElement('div');\r\n vendorProviderWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorProviderTypeForm();\r\n vendorProviderWrap.appendChild(importantTables);\r\n\r\n return vendorProviderWrap;\r\n }\r\n\r\n function buildNewVendorProviderTypeForm() {\r\n const vendorProviderDiv = document.createElement('div');\r\n vendorProviderDiv.classList.add('additionalQuestionWrap');\r\n\r\n providerTypeEntriesTable = buildProviderTypeEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Provider Type
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(providerTypeEntriesTable);\r\n vendorProviderDiv.appendChild(column1);\r\n return vendorProviderDiv;\r\n }\r\n\r\n function buildProviderTypeEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Provider Type', 'Start Date', 'End Date', 'Notes'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = providerTypeEntries.getProviderTypeEntriesResult.map((entry) => ({\r\n values: [entry.ProviderType, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY'), entry.Notes],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewVendorProviderTypeForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorServices = (() => {\r\n let vendorID;\r\n let ServicesEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n ServicesEntries = await authorizationsAjax.getVenderServicesEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const vendorServicesWrap = document.createElement('div');\r\n vendorServicesWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorServicesForm();\r\n vendorServicesWrap.appendChild(importantTables);\r\n\r\n return vendorServicesWrap;\r\n }\r\n\r\n function buildNewVendorServicesForm() {\r\n const vendorServicesDiv = document.createElement('div');\r\n vendorServicesDiv.classList.add('additionalQuestionWrap');\r\n\r\n serviceEntriesTable = buildServicesEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Services
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(serviceEntriesTable);\r\n vendorServicesDiv.appendChild(column1);\r\n return vendorServicesDiv;\r\n }\r\n\r\n function buildServicesEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Funding Source', 'Service Code', 'Service Description'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = ServicesEntries.getVenderServicesEntriesResult.map((entry) => ({\r\n values: [entry.fundingSource, entry.serviceCode, entry.serviceDescription], \r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewVendorServicesForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorUCR = (() => {\r\n\r\n let vendorID;\r\n let UCREntries;\r\n\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n UCREntries = await authorizationsAjax.getVenderUCREntriesAsync(vendorID);\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const vendorUCRWrap = document.createElement('div');\r\n vendorUCRWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorUCRForm();\r\n vendorUCRWrap.appendChild(importantTables);\r\n\r\n return vendorUCRWrap;\r\n }\r\n\r\n function buildNewVendorUCRForm() {\r\n const vendorUCRDiv = document.createElement('div');\r\n vendorUCRDiv.classList.add('additionalQuestionWrap');\r\n\r\n UCREntriesTable = buildUCREntriesTable();\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
UCR
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(UCREntriesTable);\r\n vendorUCRDiv.appendChild(column1);\r\n return vendorUCRDiv;\r\n }\r\n\r\n function buildUCREntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoUCRTable',\r\n columnHeadings: ['Service ', 'Group Size', 'Service Location', 'CDB Category', 'Assessment/ Acuity Score', 'Start Date', 'End Date', 'UCR'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = UCREntries.getVenderUCREntriesResult.map((entry) => ({\r\n values: [entry.service, entry.groupSize, entry.serviceLocation, entry.CDBCategory, entry.assessmentAcuityScore, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY'), entry.UCR == '' ? entry.UCR : '$' + entry.UCR],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewVendorUCRForm,\r\n getMarkup,\r\n };\r\n})(); ","const CaseNotes = (() => {\r\n //--------------------------\r\n // SESSION DATA\r\n //--------------------------\r\n let caseNoteId = null;\r\n let caseNoteGroupId = null;\r\n let caseNoteEditData = {};\r\n let caseNoteAttachmentsEditData = [];\r\n let attachmentsForDelete = [];\r\n let caseManagerId;\r\n let selectedConsumers = [];\r\n let selectedDate = null;\r\n let selectedServiceCode;\r\n let updatedInputs = {};\r\n let allowGroupNotes = false;\r\n let defaultServiceCode;\r\n //--------------------------\r\n // PERMISSIONS\r\n //--------------------------\r\n let isReadOnly;\r\n //--------------------------\r\n // DOM\r\n //--------------------------\r\n let moduleWrap;\r\n let cnHeader;\r\n let cnDateNavWrap;\r\n let cnFormWrap;\r\n let cnRosterWrap;\r\n //--------------------------\r\n // UI INSTANCES\r\n //--------------------------\r\n let dateNavigation;\r\n let rosterPicker;\r\n let cnForm;\r\n let cnOverview;\r\n let cnPhrases;\r\n let cnDocTimer;\r\n let reqVisualizer;\r\n\r\n function resetModuleData() {\r\n _DOM.ACTIONCENTER.removeAttribute('data-ui');\r\n\r\n moduleWrap = undefined;\r\n cnHeader = undefined;\r\n cnDateNavWrap = undefined;\r\n cnFormWrap = undefined;\r\n cnRosterWrap = undefined;\r\n dateNavigation = undefined;\r\n rosterPicker = undefined;\r\n cnForm = undefined;\r\n cnOverview = undefined;\r\n cnPhrases = undefined;\r\n cnDocTimer = undefined;\r\n reqVisualizer = undefined;\r\n\r\n resetNoteData();\r\n }\r\n function resetNoteData() {\r\n caseNoteId = null;\r\n caseNoteGroupId = null;\r\n caseNoteEditData = {};\r\n caseNoteAttachmentsEditData = [];\r\n attachmentsForDelete = [];\r\n caseManagerId = $.session.PeopleId;\r\n selectedConsumers = [];\r\n selectedServiceCode = defaultServiceCode ? defaultServiceCode : '';\r\n updatedInputs = {};\r\n }\r\n function resetModule() {\r\n resetModuleData();\r\n resetNoteData();\r\n }\r\n\r\n // UTILS\r\n //--------------------------------------------------\r\n function isNoteConfidential() {\r\n // old function = checkConfidential\r\n }\r\n function setPermissions() {\r\n //TODO-ASH: check if case note is batched | *ONLY FOR REVIEW*\r\n // batched notes are readonly, if batched status === '' it is NOT BATCHED\r\n\r\n //! GK ONLY\r\n //? If note is batched then we shouldn't hit this if bc note is read only\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if ($.session.CaseNotesUpdate) {\r\n if (\r\n !$.session.CaseNotesUpdateEntered ||\r\n ($.session.CaseNotesUpdateEntered && caseManagerId === $.session.PeopleId)\r\n ) {\r\n //can edit (correct alignment of Update and UpdateEntered Case Notes permissions)\r\n isReadOnly = false;\r\n } else {\r\n //can not edit (with UpdateEntered permission, can't edit other people's case notes)\r\n isReadOnly = true;\r\n }\r\n } else {\r\n isReadOnly = true; //can not edit (no overall update permission)\r\n }\r\n }\r\n }\r\n function checkServiceFundingADV() {\r\n //! ADV ONLY\r\n // based off selected servBillCode\r\n // check its service funding value\r\n // if funding value is \"N\" - disable service location dropdown\r\n // else - enable dropdown, make required\r\n }\r\n function checkGroupNotesPermission() {\r\n allowGroupNotes;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n allowGroupNotes = cnData.allowGroupNotes(selectedServiceCode);\r\n } else {\r\n allowGroupNotes = true;\r\n }\r\n\r\n rosterPicker.toggleMultiSelectOption(allowGroupNotes);\r\n }\r\n function extractCaseNoteId(xmlString) {\r\n const match = xmlString.match(/(\\d+)<\\/caseNoteId>/);\r\n return match ? match[1] : null;\r\n }\r\n function checkRequiredFields() {\r\n // const isFormValid = areAllFormFieldsValid();\r\n let isSaveDisabled = false;\r\n\r\n if (selectedConsumers.length === 0) {\r\n isSaveDisabled = true;\r\n } else {\r\n isSaveDisabled = false;\r\n }\r\n\r\n if (isSaveDisabled) {\r\n cnForm.buttons['submit'].toggleDisabled(true);\r\n cnForm.buttons['saveAndNew'].toggleDisabled(true);\r\n cnForm.buttons['update'].toggleDisabled(true);\r\n } else {\r\n cnForm.buttons['submit'].toggleDisabled(false);\r\n cnForm.buttons['saveAndNew'].toggleDisabled(false);\r\n cnForm.buttons['update'].toggleDisabled(false);\r\n }\r\n }\r\n\r\n // TIME HELPERS\r\n //--------------------------------------------------\r\n function parseSessionTime(dirtyTime) {\r\n let time = `${dirtyTime.slice(0, -2)} ${dirtyTime.slice(-2)}`;\r\n time = UTIL.convertToMilitary(time);\r\n return time.slice(0, -3);\r\n }\r\n function timesWithinWorkHoursCheck(startTime, endTime) {\r\n const valuesToCheck = [undefined, null, '', '00:00', 'Null'];\r\n const isWarningStartTimeValid = valuesToCheck.includes($.session.caseNotesWarningStartTime) ? false : true;\r\n const isWarningEndTimeValid = valuesToCheck.includes($.session.caseNotesWarningStartTime) ? false : true;\r\n\r\n if (!isWarningStartTimeValid || !isWarningEndTimeValid) {\r\n // session warning times don't matter\r\n return true;\r\n }\r\n\r\n const warnStart = parseSessionTime($.session.caseNotesWarningStartTime);\r\n const warnEnd = parseSessionTime($.session.caseNotesWarningEndTime);\r\n\r\n const validStart = (startTime < warnStart || startTime > warnEnd) && startTime !== '' ? false : true;\r\n const validEnd = (endTime < warnStart || endTime > warnEnd) && endTime !== '' ? false : true;\r\n\r\n return { validStart, validEnd };\r\n }\r\n function isFutureTime(dirtyTime) {\r\n //If selectedDate is not today then time dosen't matter\r\n const isToday = new Date().setHours(0, 0, 0, 0) !== new Date(selectedDate).setHours(0, 0, 0, 0);\r\n if (!isToday || !dirtyTime) {\r\n return false;\r\n }\r\n\r\n const currentDate = new Date();\r\n const selectedDateClone = new Date(selectedDate);\r\n\r\n // CHECKS IF TIME IS IN FURUTRE\r\n dirtyTime = dirtyTime.split(':');\r\n selectedDateClone.setHours(dirtyTime[0], dirtyTime[1], 0, 0);\r\n return dates.isAfter(selectedDateClone, currentDate);\r\n }\r\n function isStartTimeBeforeEndTime(startTime, endTime) {\r\n if (!startTime || !endTime) return true;\r\n\r\n return startTime < endTime ? true : false;\r\n }\r\n async function timeOverlapCheck(startTime, endTime) {\r\n await cnData.fetchTimeOverlapData({\r\n caseManagerId,\r\n consumerId: selectedConsumers[0],\r\n endTime: endTime,\r\n groupNoteId: caseNoteGroupId ?? 0,\r\n noteId: caseNoteId ?? 0,\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n startTime: startTime,\r\n });\r\n\r\n const overlap = cnData.getOverlapData();\r\n\r\n return overlap;\r\n }\r\n\r\n // CRUD\r\n //--------------------------------------------------\r\n async function deleteNote(noteId) {\r\n const response = await _UTIL.fetchData('deleteExistingCaseNote', {\r\n noteId: noteId,\r\n });\r\n\r\n return response.deleteExistingCaseNoteResults;\r\n }\r\n async function saveAttachments(attachmentsForSave) {\r\n const saveAttachmentPromises = [];\r\n\r\n // Store promises in array so we can handle each attachment individually\r\n for (attachment in attachmentsForSave) {\r\n const promise = _UTIL\r\n .fetchData('addCaseNoteAttachment', {\r\n caseNoteId: caseNoteId,\r\n description: attachmentsForSave[attachment].description,\r\n attachmentType: attachmentsForSave[attachment].type,\r\n attachment: attachmentsForSave[attachment].attachment,\r\n })\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error, attachment: attachmentsForSave[attachment] }));\r\n\r\n saveAttachmentPromises.push(promise);\r\n }\r\n\r\n // Loop through to check for any failed attachment saves\r\n const saveAttachmentResults = await Promise.allSettled(saveAttachmentPromises);\r\n const failedSaves = saveAttachmentResults.reduce((acc, result) => {\r\n if (result.status === 'rejected') {\r\n acc.push(result.attachment.description);\r\n }\r\n return acc;\r\n }, []);\r\n\r\n return failedSaves.length === 0 ? 'success' : 'error';\r\n }\r\n async function saveGroup(data) {\r\n const savePromises = [];\r\n let newGroupId;\r\n let consumerGroupCount;\r\n\r\n if (!caseNoteGroupId) {\r\n deleteNote(caseNoteId);\r\n caseNoteId = null;\r\n const response = await _UTIL.fetchData('getGroupNoteId');\r\n newGroupId = JSON.parse(response.getGroupNoteIdResult);\r\n newGroupId = newGroupId[0].groupNoteId;\r\n consumerGroupCount = selectedConsumers.length;\r\n }\r\n\r\n selectedConsumers.forEach(consumerId => {\r\n if (!caseNoteGroupId) {\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('saveGroupCaseNote', {\r\n ...data,\r\n consumerId,\r\n consumerGroupCount,\r\n groupNoteId: newGroupId,\r\n noteId: 0,\r\n })\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (caseNoteEditData.consumerid === consumerId) {\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('saveCaseNote', data)\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n } else {\r\n data.consumerId = consumerId;\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('saveAdditionalGroupCaseNote', data)\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n }\r\n });\r\n\r\n if (caseNoteGroupId) {\r\n savePromises.push(\r\n _UTIL\r\n .fetchData('updateGroupNoteValues', {\r\n groupNoteId: caseNoteGroupId,\r\n noteId: caseNoteId,\r\n serviceOrBillingCodeId: data.serviceOrBillingCodeId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n })\r\n .then(result => ({ status: 'fulfilled', value: result }))\r\n .catch(error => ({ status: 'rejected', reason: error })),\r\n );\r\n }\r\n\r\n const groupSaveResults = await Promise.allSettled(savePromises);\r\n const failedSaves = groupSaveResults.reduce((acc, result) => {\r\n if (result.status === 'rejected') {\r\n acc.push('fail');\r\n }\r\n return acc;\r\n }, []);\r\n\r\n if (!caseNoteGroupId && caseNoteAttachmentsEditData.length) {\r\n // re saving attachments back to orig note\r\n saveAttachments(caseNoteAttachmentsEditData);\r\n }\r\n\r\n if (newGroupId) {\r\n caseNoteGroupId = newGroupId;\r\n }\r\n\r\n const success = failedSaves.length === 0 ? 'success' : 'error';\r\n return {\r\n success,\r\n newGroup: newGroupId ? true : false,\r\n };\r\n }\r\n async function saveNote(data, attachments) {\r\n let saveResponse,\r\n isNewGroup = false;\r\n\r\n reqVisualizer.show('Saving Case Note...');\r\n\r\n if (selectedConsumers.length === 1 && !caseNoteGroupId) {\r\n // NEW NOTE or EDIT NON GROUP NOTE\r\n const response = (await _UTIL.fetchData('saveCaseNote', data)).saveCaseNoteResult;\r\n caseNoteId = caseNoteId ? caseNoteId : extractCaseNoteId(response);\r\n saveResponse = caseNoteId ? 'success' : 'error';\r\n isNewGroup = false;\r\n\r\n // SAVE ATTACHMENTS\r\n if ($.session.applicationName === 'Gatekeeper' && Object.keys(attachments).length > 0) {\r\n const attachSaveResponse = saveAttachments(attachments);\r\n if (attachSaveResponse === 'error') {\r\n reqVisualizer.fullfill('error', 'Error Saving Attachments', 2000);\r\n return;\r\n }\r\n }\r\n } else {\r\n const resp = await saveGroup(data);\r\n saveResponse = resp.success;\r\n isNewGroup = resp.newGroup;\r\n }\r\n\r\n if (saveResponse === 'success') {\r\n reqVisualizer.fullfill('success', 'Case Note Saved!', 2000);\r\n } else {\r\n reqVisualizer.fullfill('error', 'Error Saving Case Note', 2000);\r\n }\r\n\r\n return { saveResponse, isNewGroup };\r\n }\r\n\r\n // FORM\r\n //--------------------------------------------------\r\n function areAllFormFieldsValid() {\r\n const invalidControls = cnForm.form.querySelectorAll(':invalid');\r\n\r\n if (invalidControls.length > 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n function checkFormForUnsavedChanges(inputName, newValue) {\r\n const originalNoteDataMap = {\r\n serviceCode: caseNoteEditData.mainbillingorservicecodeid,\r\n location: caseNoteEditData.locationcode,\r\n serviceLocation: caseNoteEditData.servicelocationid,\r\n need: caseNoteEditData.serviceneedcode,\r\n vendor: caseNoteEditData.vendorid,\r\n contact: caseNoteEditData.contactcode,\r\n startTime: caseNoteEditData.starttime,\r\n endTime: caseNoteEditData.endtime,\r\n mileage: caseNoteEditData.totalmiles,\r\n travelTime: caseNoteEditData.traveltime,\r\n noteText: caseNoteEditData.casenote,\r\n confidential: caseNoteEditData.confidential,\r\n outcomeServiceMonitoring: caseNoteEditData.outcomeServiceMonitoring,\r\n };\r\n\r\n if (originalNoteDataMap[inputName] !== newValue) {\r\n updatedInputs[inputName] = true;\r\n } else {\r\n delete updatedInputs[inputName];\r\n }\r\n\r\n if (Object.keys(updatedInputs).length) {\r\n cnFormToast.show(`You have unsaved changes. Click 'Update' to keep them or 'Cancel' to discard.`);\r\n } else {\r\n cnFormToast.close();\r\n }\r\n }\r\n function toggleFormButtonShowHide() {\r\n cnForm.buttons['submit'].toggleVisibility(caseNoteId ? true : false);\r\n cnForm.buttons['saveAndNew'].toggleVisibility(caseNoteId ? true : false);\r\n cnForm.buttons['update'].toggleVisibility(caseNoteId ? false : true);\r\n cnForm.buttons['delete'].toggleVisibility(caseNoteId ? false : true);\r\n }\r\n function toggleFormButtonsDisabled(isDisabled) {\r\n cnForm.buttons['submit'].toggleDisabled(isDisabled);\r\n cnForm.buttons['saveAndNew'].toggleDisabled(isDisabled);\r\n cnForm.buttons['update'].toggleDisabled(isDisabled);\r\n cnForm.buttons['delete'].toggleDisabled(isDisabled);\r\n cnForm.buttons['cancel'].toggleDisabled(isDisabled);\r\n }\r\n // DROPDOWNS\r\n async function updateVendorDropdownByConsumer() {\r\n await cnData.fetchVendorDropdownData({\r\n consumerId: selectedConsumers[0],\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n });\r\n\r\n const vendorData = cnData.getVendorDropdownData();\r\n cnForm.inputs['vendor'].populate(vendorData);\r\n\r\n if (vendorData.length === 1) {\r\n cnForm.inputs['vendor'].setValue(vendorData[0].value);\r\n }\r\n }\r\n async function updateServiceLocationDropdownByConsumer() {\r\n await cnData.fetchServiceLocationDropdownData({\r\n consumerId: selectedConsumers[0],\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n });\r\n\r\n const servLocData = cnData.getServiceLocationDropdownData();\r\n cnForm.inputs['serviceLocation'].populate(servLocData);\r\n if (cnForm.formData) {\r\n cnForm.inputs['serviceLocation'].setValue(cnForm.formData.serviceLocation);\r\n }\r\n\r\n onServiceCodeChange();\r\n }\r\n async function setConsumerRelatedDropdowns() {\r\n await updateVendorDropdownByConsumer();\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n await updateServiceLocationDropdownByConsumer();\r\n\r\n if (cnData.canConsumerHaveMileage(selectedConsumers[0])) {\r\n cnForm.inputs['mileage'].toggleDisabled(false);\r\n }\r\n }\r\n }\r\n // ATTACHMENT DELETE\r\n async function onFileDelete(e) {\r\n // console.log(e.target);\r\n // console.log('File delete from form', e.detail);\r\n\r\n attachmentsForDelete.push(e.detail);\r\n // console.log(attachmentsForDelete);\r\n }\r\n // CHANGE \\ KEYUP\r\n function onTimeChange(target) {\r\n const inputKey = target === 'start' ? 'startTime' : 'endTime';\r\n const startTimeVal = cnForm.inputs['startTime'].getValue();\r\n const endTimeVal = cnForm.inputs['endTime'].getValue();\r\n\r\n if (startTimeVal === '' && endTimeVal === '') {\r\n return;\r\n }\r\n\r\n if (target) {\r\n const isTimeFuture = isFutureTime(target === 'start' ? startTimeVal : endTimeVal);\r\n if (isTimeFuture) {\r\n cnForm.inputs[inputKey].setValidtyError('error');\r\n cnForm.inputs[inputKey].showError('Time can not be in future.');\r\n return;\r\n }\r\n } else {\r\n const isStartTimeFuture = isFutureTime(startTimeVal);\r\n const isEndTimeFuture = isFutureTime(endTimeVal);\r\n if (isStartTimeFuture) {\r\n cnForm.inputs['startTime'].setValidtyError('error');\r\n cnForm.inputs['startTime'].showError('Time can not be in future.');\r\n }\r\n if (isEndTimeFuture) {\r\n cnForm.inputs['endTime'].setValidtyError('error');\r\n cnForm.inputs['endTime'].showError('Time can not be in future.');\r\n }\r\n if (isStartTimeFuture || isEndTimeFuture) return;\r\n }\r\n\r\n const isStartBeforeEnd = isStartTimeBeforeEndTime(startTimeVal, endTimeVal);\r\n if (!isStartBeforeEnd) {\r\n cnForm.inputs['startTime'].setValidtyError(`error`);\r\n cnForm.inputs['startTime'].showError(`Start time can't be after end time.`);\r\n return;\r\n }\r\n\r\n cnForm.inputs['startTime'].setValidtyError('');\r\n cnForm.inputs['endTime'].setValidtyError('');\r\n\r\n let validStart = true;\r\n let validEnd = true;\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n ({ validStart, validEnd } = timesWithinWorkHoursCheck(startTimeVal, endTimeVal));\r\n\r\n if (!validStart) {\r\n cnForm.inputs['startTime'].showWarning(`Time is outside normal working hours.`);\r\n }\r\n\r\n if (!validEnd) {\r\n cnForm.inputs['endTime'].showWarning(`Time is outside normal working hours.`);\r\n }\r\n }\r\n\r\n if (validStart) {\r\n cnForm.inputs['startTime'].clearErrorOrWarning();\r\n }\r\n if (validEnd) {\r\n cnForm.inputs['endTime'].clearErrorOrWarning();\r\n }\r\n }\r\n function onServiceCodeChange(documentationTime = 0) {\r\n if (caseNoteId) {\r\n checkGroupNotesPermission();\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper' && selectedServiceCode !== '') {\r\n const mileageRequired = cnData.isMileageRequired(selectedServiceCode);\r\n const isTravelTimeRequired = cnData.isTravelTimeRequired(selectedServiceCode);\r\n const isDocTimeRequired = cnData.isDocTimeRequired(selectedServiceCode);\r\n\r\n if (isDocTimeRequired) {\r\n cnDocTimer.showAutoStartPopup(parseInt(documentationTime));\r\n }\r\n\r\n cnForm.inputs['mileage'].toggleDisabled(!mileageRequired);\r\n cnForm.inputs['travelTime'].toggleDisabled(!isTravelTimeRequired);\r\n } else {\r\n const isServiceFunding = cnData.isServiceFunding(selectedServiceCode);\r\n cnForm.inputs['serviceLocation'].toggleDisabled(!isServiceFunding);\r\n if (!isServiceFunding) {\r\n cnForm.inputs['serviceLocation'].setValue('');\r\n }\r\n }\r\n\r\n if (selectedServiceCode !== '') {\r\n // get required fields\r\n const locationRequired = cnData.isLocationRequired(selectedServiceCode);\r\n const needRequired = cnData.isNeedRequired(selectedServiceCode);\r\n const contactRequired = cnData.isContactRequired(selectedServiceCode);\r\n const serviceRequired = cnData.isServiceRequired(selectedServiceCode);\r\n // enable dropdowns\r\n cnForm.inputs['location'].toggleDisabled(!locationRequired);\r\n cnForm.inputs['service'].toggleDisabled(!serviceRequired);\r\n cnForm.inputs['need'].toggleDisabled(!needRequired);\r\n cnForm.inputs['contact'].toggleDisabled(!contactRequired);\r\n // set required fields\r\n cnForm.inputs['location'].toggleRequired(locationRequired);\r\n cnForm.inputs['service'].toggleRequired(serviceRequired);\r\n cnForm.inputs['need'].toggleRequired(needRequired);\r\n cnForm.inputs['contact'].toggleRequired(contactRequired);\r\n //populate dropdowns tied to this one\r\n cnForm.inputs['location'].populate(cnData.getLocationDropdownData(selectedServiceCode));\r\n cnForm.inputs['service'].populate(cnData.getServicesDropdownData(selectedServiceCode));\r\n cnForm.inputs['need'].populate(cnData.getNeedsDropdownData(selectedServiceCode));\r\n cnForm.inputs['contact'].populate(cnData.getContactsDropdownData(selectedServiceCode));\r\n } else {\r\n // set required to false\r\n cnForm.inputs['location'].toggleRequired(false);\r\n cnForm.inputs['service'].toggleRequired(false);\r\n cnForm.inputs['need'].toggleRequired(false);\r\n cnForm.inputs['contact'].toggleRequired(false);\r\n // disable dropdowns\r\n cnForm.inputs['location'].toggleDisabled(true);\r\n cnForm.inputs['service'].toggleDisabled(true);\r\n cnForm.inputs['need'].toggleDisabled(true);\r\n cnForm.inputs['contact'].toggleDisabled(true);\r\n //clear dropdown values\r\n cnForm.inputs['location'].populate([]);\r\n cnForm.inputs['service'].populate([]);\r\n cnForm.inputs['need'].populate([]);\r\n cnForm.inputs['contact'].populate([]);\r\n }\r\n }\r\n const onChangeCallbacks = {\r\n serviceCode: ({ event, value, name, input }) => {\r\n selectedServiceCode = value;\r\n onServiceCodeChange();\r\n },\r\n serviceLocation: ({ event, value, name, input }) => {\r\n // adv only\r\n },\r\n startTime: () => {\r\n onTimeChange('start');\r\n },\r\n endTime: () => {\r\n onTimeChange('end');\r\n },\r\n mileage: ({ event, value, name, input }) => {\r\n return;\r\n\r\n const hasDecimal = event.key === '.' && value.indexOf('.') === 1 ? true : false;\r\n },\r\n };\r\n function onFormChange(event) {\r\n const value = event.target.value;\r\n let name = event.target.name;\r\n const input = cnForm.inputs[name];\r\n\r\n if (onChangeCallbacks[name]) {\r\n onChangeCallbacks[name]({\r\n event,\r\n value,\r\n name,\r\n input,\r\n });\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n // if (caseNoteId) {\r\n // checkFormForUnsavedChanges(name, value);\r\n // }\r\n }\r\n const onKeyupCallbacks = {\r\n travelTime: ({ event, value, name, input }) => {\r\n if (value.length > 4) {\r\n event.target.value = value.substr(0, 4);\r\n }\r\n },\r\n /**\r\n * @param {Object} data\r\n * @param {Event} data.event - event obj\r\n * @param {string} data.value - value of input\r\n * @param {Event} data.name - name of input\r\n * @param {Instance} data.input - noteText input instance\r\n */\r\n noteText: ({ event, value, name, input }) => {\r\n const words = value.split(/\\s+/);\r\n\r\n if (event.detail) {\r\n // check for the #ph\r\n if (words.includes('#ph')) {\r\n // if (cnPhrases.InsertPhrases.dialog.dialog.parentNode !== input.fullscreen.fullScreenDialog.dialog) {\r\n // cnPhrases.InsertPhrases.renderTo(input.fullscreen.fullScreenDialog.dialog);\r\n // }\r\n\r\n // get textarea clone in fullscreen popup\r\n const textareaInput = input.fullscreen.textareaClone.querySelector('textarea');\r\n\r\n // disable textarea and close buton\r\n textareaInput.disabled = true;\r\n input.fullscreen.disableCloseButon(true);\r\n\r\n // show phrases dialog\r\n cnPhrases.InsertPhrases.show();\r\n\r\n cnPhrases.InsertPhrases.onPhraseSelect(phraseText => {\r\n // Replace #ph with user-generated text\r\n const textValue = value.replace('#ph', phraseText);\r\n // Update the textarea's value\r\n input.setValue(textValue);\r\n textareaInput.value = textValue;\r\n // re enable input\r\n textareaInput.disabled = false;\r\n // close dialog\r\n cnPhrases.InsertPhrases.close();\r\n // disable textarea and close buton\r\n textareaInput.disabled = false;\r\n input.fullscreen.disableCloseButon(false);\r\n // focus on textarea\r\n textareaInput.focus();\r\n });\r\n }\r\n } else {\r\n // check for the #ph\r\n if (words.includes('#ph')) {\r\n // temp disable input\r\n input.toggleDisabled(true);\r\n\r\n // show phrases dialog\r\n cnPhrases.InsertPhrases.show();\r\n\r\n cnPhrases.InsertPhrases.onPhraseSelect(phraseText => {\r\n // Replace #ph with user-generated text\r\n const textValue = value.replace('#ph', phraseText);\r\n // Update the textarea's value\r\n input.setValue(textValue);\r\n input.fullscreen.updateCloneValue(textValue);\r\n // re enable input\r\n input.toggleDisabled(false);\r\n // close dialog\r\n cnPhrases.InsertPhrases.close();\r\n // focus on textarea\r\n input.setFocus();\r\n });\r\n }\r\n }\r\n },\r\n };\r\n function onFormKeyup(event) {\r\n const value = event.target.value;\r\n let name = event.target.name;\r\n const input = cnForm.inputs[name];\r\n\r\n if (onKeyupCallbacks[name]) {\r\n onKeyupCallbacks[name]({\r\n event,\r\n value,\r\n name,\r\n input,\r\n });\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n // SUBMIT\r\n async function processAttachmentsForSave(data) {\r\n const attachmentsForSave = {};\r\n\r\n for (const key in data) {\r\n if (key.includes('attachment')) {\r\n if (data[key].name) {\r\n const attachmentDetails = await _DOM.getAttachmentDetails(data[key]);\r\n attachmentsForSave[attachmentDetails.description] = attachmentDetails;\r\n }\r\n }\r\n }\r\n\r\n return attachmentsForSave;\r\n }\r\n function onFormReset() {\r\n resetNoteData();\r\n cnFormToast.close();\r\n rosterPicker.setSelectedConsumers([]);\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer.clear();\r\n }\r\n }\r\n async function onFormDelete() {\r\n const continueSave = await deleteConfirmationPopup.show(\r\n 'Are you sure you would like to delete this case note?',\r\n );\r\n \r\n if (continueSave !== 'confirm') {\r\n return;\r\n } \r\n\r\n resetNoteData();\r\n cnForm.clear();\r\n cnFormToast.close();\r\n rosterPicker.setSelectedConsumers([]);\r\n\r\n await deleteNote(caseNoteId);\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer.clear();\r\n }\r\n }\r\n async function onFormSubmit(data, submitter) {\r\n toggleFormButtonsDisabled(true);\r\n const buttonName = submitter.name.toLowerCase();\r\n\r\n const overlaps = await timeOverlapCheck(data.startTime, data.endTime);\r\n if (overlaps.length) {\r\n const continueSave = await overlapPopup.show(\r\n `The times you have entered for this note overlap with the following consumer(s), ${overlaps.join(\r\n ',',\r\n )}. Click OK to continue with save or CANCEL to go back to note.`,\r\n );\r\n\r\n if (continueSave === 'cancel') {\r\n return;\r\n }\r\n }\r\n\r\n // Fetch reviewRequired data\r\n const reviewRequiredData = await cnData.fetchCaseManagerReviewData(caseManagerId);\r\n\r\n const saveData = {\r\n caseManagerId,\r\n caseNote: data.noteText ? _UTIL.removeUnsavableNoteText(data.noteText) : '',\r\n casenotemileage: data.mileage ?? '0',\r\n casenotetraveltime: data.travelTime ?? '',\r\n consumerId: selectedConsumers[0],\r\n confidential: data.confidential === 'on' ? 'Y' : 'N',\r\n contactCode: data.contact ?? '',\r\n corrected: 'N',\r\n documentationTime: $.session.applicationName === 'Gatekeeper' ? cnDocTimer.stop().getTime() : '',\r\n endTime: data.endTime.substring(0, 5),\r\n locationCode: data.location ?? '',\r\n noteId: caseNoteId ?? 0,\r\n needCode: data.need ?? '',\r\n reviewRequired: reviewRequiredData.reviewRequired,\r\n serviceDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n serviceCode: data.service ?? '',\r\n serviceLocationCode: data.serviceLocation ?? '',\r\n serviceOrBillingCodeId: data.serviceCode ?? '',\r\n startTime: data.startTime.substring(0, 5),\r\n vendorId: data.vendor ?? '',\r\n outcomeServiceMonitoring: data.outcomeServiceMonitoring === 'on' ? 'Y' : 'N',\r\n };\r\n const attachmentsForSave = await processAttachmentsForSave(data);\r\n\r\n const { isNewGroup } = await saveNote(saveData, attachmentsForSave);\r\n\r\n // OVERVIEW // await cnOverview.fetchData(selectedDate);\r\n // OVERVIEW // cnOverview.populate();\r\n\r\n cnFormToast.close();\r\n\r\n if (buttonName === 'saveandnew' || isNewGroup) {\r\n resetNoteData();\r\n cnForm.clear();\r\n rosterPicker.setSelectedConsumers([]);\r\n cnForm.inputs['serviceCode'].setValue(selectedServiceCode);\r\n onServiceCodeChange();\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer.clear();\r\n }\r\n }\r\n\r\n toggleFormButtonsDisabled(false);\r\n }\r\n\r\n // ROSTER\r\n //--------------------------------------------------\r\n async function onConsumerSelect(data) {\r\n selectedConsumers = data;\r\n\r\n await updateVendorDropdownByConsumer();\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n if (cnData.canConsumerHaveMileage(selectedConsumers[0])) {\r\n cnForm.inputs['mileage'].toggleDisabled(false);\r\n }\r\n\r\n await updateServiceLocationDropdownByConsumer();\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n // DATE NAV\r\n //--------------------------------------------------\r\n async function onDateChange(newDate) {\r\n selectedDate = newDate;\r\n\r\n onTimeChange();\r\n\r\n rosterPicker = new RosterPicker({\r\n allowMultiSelect: false,\r\n consumerRequired: true,\r\n selectionDate: selectedDate,\r\n });\r\n\r\n //await populatePage(); \r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate(); \r\n //re populate overview section when date change\r\n // OVERVIEW // await cnOverview.fetchData(selectedDate);\r\n // OVERVIEW // cnOverview.populate();\r\n }\r\n\r\n // OVERVIEW CARDS\r\n //--------------------------------------------------\r\n async function onOverviewCardDelete(caseNoteId) {\r\n deleteNote(caseNoteId);\r\n }\r\n async function onOverviewCardEdit(noteId) {\r\n _DOM.scrollToTop();\r\n\r\n let data = await _UTIL.fetchData('getCaseNoteEditJSON', {\r\n noteId: noteId,\r\n });\r\n caseNoteEditData = data.getCaseNoteEditJSONResult[0];\r\n\r\n caseNoteId = noteId;\r\n caseNoteGroupId = caseNoteEditData.groupid;\r\n caseManagerId = caseNoteEditData.casemanagerid;\r\n selectedConsumers = [caseNoteEditData.consumerid];\r\n selectedServiceCode = caseNoteEditData.mainbillingorservicecodeid;\r\n attachmentsForDelete = [];\r\n\r\n rosterPicker.setSelectedConsumers(selectedConsumers, true);\r\n setConsumerRelatedDropdowns();\r\n onServiceCodeChange(caseNoteEditData.totaldoctime);\r\n\r\n if (!allowGroupNotes) {\r\n rosterPicker.toggleRosterDisabled(true, isReadOnly);\r\n }\r\n\r\n cnForm.populate({\r\n serviceCode: caseNoteEditData.mainbillingorservicecodeid,\r\n location: caseNoteEditData.locationcode,\r\n serviceLocation: caseNoteEditData.servicelocationid,\r\n service: caseNoteEditData.servicecode,\r\n need: caseNoteEditData.serviceneedcode,\r\n vendor: caseNoteEditData.vendorid,\r\n contact: caseNoteEditData.contactcode,\r\n startTime: caseNoteEditData.starttime,\r\n endTime: caseNoteEditData.endtime,\r\n mileage: caseNoteEditData.totalmiles,\r\n travelTime: caseNoteEditData.traveltime,\r\n noteText: caseNoteEditData.casenote,\r\n confidential: caseNoteEditData.confidential === 'Y' ? true : false,\r\n outcomeServiceMonitoring: caseNoteEditData.outcomeServiceMonitoring === 'Y' ? true : false,\r\n });\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n await cnData.fetchAttachmentsGK(caseNoteId);\r\n caseNoteAttachmentsEditData = cnData.getAttachmentsList();\r\n cnForm.inputs['attachment'].addAttachments(caseNoteAttachmentsEditData);\r\n }\r\n\r\n if (caseNoteEditData.credit === 'Y' || caseNoteEditData.credit === '-1') {\r\n cnForm.disableFormInputs();\r\n toggleFormButtonsDisabled();\r\n rosterPicker.toggleRosterDisabled(true, true);\r\n }\r\n\r\n //TODO-ASH: Add entered by (caseNoteEditData.originaluserfullname, caseNoteEditData.originaluserid)\r\n //TODO-ASH: Add last edit on (caseNoteEditData.lastupdate)\r\n //cnFormWrap\r\n\r\n toggleFormButtonShowHide();\r\n checkRequiredFields();\r\n }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n function attachEvents() {\r\n dateNavigation.onDateChange(onDateChange);\r\n rosterPicker.onConsumerSelect(onConsumerSelect);\r\n cnForm.onChange(onFormChange);\r\n cnForm.onKeyup(onFormKeyup);\r\n cnForm.onDelete(onFormDelete);\r\n cnForm.onSubmit(onFormSubmit);\r\n cnForm.onReset(onFormReset);\r\n cnForm.onFileDelete(onFileDelete);\r\n\r\n // OVERVIEW // cnOverview.onCardEdit(onOverviewCardEdit);\r\n // OVERVIEW // cnOverview.onCardDelete(onOverviewCardDelete);\r\n }\r\n async function populatePage() {\r\n await cnPhrases.InsertPhrases.fetchData();\r\n cnPhrases.InsertPhrases.populate();\r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate();\r\n // OVERVIEW // await cnOverview.fetchData(selectedDate);\r\n // OVERVIEW // cnOverview.populate();\r\n if (selectedConsumers) {\r\n rosterPicker.setSelectedConsumers(selectedConsumers);\r\n }\r\n }\r\n async function loadPage() {\r\n dateNavigation.renderTo(cnDateNavWrap);\r\n rosterPicker.renderTo(cnRosterWrap);\r\n cnFormToast.renderTo(cnFormWrap);\r\n cnForm.renderTo(cnFormWrap);\r\n\r\n // OVERVIEW // cnOverview.renderTo(moduleWrap);\r\n cnPhrases.renderTo(_DOM.ACTIONCENTER);\r\n\r\n attachEvents();\r\n }\r\n function loadPageSkeleton() {\r\n // prep actioncenter\r\n _DOM.ACTIONCENTER.innerHTML = '';\r\n _DOM.ACTIONCENTER.setAttribute('data-UI', true);\r\n _DOM.setActiveModuleAttribute('casenotes2.0');\r\n\r\n // build DOM skeleton\r\n moduleWrap = _DOM.createElement('div', { class: 'caseNotesModule' });\r\n cnHeader = _DOM.createElement('div', { class: 'caseNotesHeader', html: `

Case Notes

` });\r\n cnDateNavWrap = _DOM.createElement('div', { class: 'caseNotesDateNav' });\r\n cnFormWrap = _DOM.createElement('div', { class: 'caseNotesForm' });\r\n cnRosterWrap = _DOM.createElement('div', { class: 'caseNotesRosterPicker' });\r\n\r\n moduleWrap.appendChild(cnHeader);\r\n moduleWrap.appendChild(cnDateNavWrap);\r\n moduleWrap.appendChild(cnRosterWrap);\r\n moduleWrap.appendChild(cnFormWrap);\r\n _DOM.ACTIONCENTER.appendChild(moduleWrap);\r\n }\r\n\r\n // INIT (data & defaults)\r\n //--------------------------------------------------\r\n function initComponents() {\r\n // Date Navigation\r\n dateNavigation = new DateNavigation({\r\n selectedDate: selectedDate,\r\n allowFutureDate: false,\r\n });\r\n\r\n // Roster Picker\r\n rosterPicker = new RosterPicker({\r\n allowMultiSelect: false,\r\n consumerRequired: true,\r\n selectionDate: undefined, \r\n });\r\n\r\n // Form\r\n cnForm = new Form({\r\n fields: [\r\n //confidential\r\n {\r\n type: 'checkbox',\r\n label: 'Confidential',\r\n id: 'confidential',\r\n },\r\n //outcomeServiceMonitoring\r\n {\r\n type: 'checkbox',\r\n label: 'Outcome/Service Monitoring',\r\n id: 'outcomeServiceMonitoring',\r\n hidden: $.session.applicationName === 'Advisor',\r\n //disabled: true,\r\n },\r\n //startTime\r\n {\r\n type: 'time',\r\n label: 'Start Time',\r\n id: 'startTime',\r\n required: true,\r\n },\r\n //endTime\r\n {\r\n type: 'time',\r\n label: 'End Time',\r\n id: 'endTime',\r\n required: true,\r\n },\r\n //serviceCode\r\n {\r\n type: 'select',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Bill Code:' : 'Serv. Code:',\r\n id: 'serviceCode',\r\n required: true,\r\n data: cnData.getServiceBillCodeDropdownData(),\r\n defaultValue: selectedServiceCode,\r\n includeBlankOption: true,\r\n },\r\n //location\r\n {\r\n type: 'select',\r\n label: 'Location',\r\n id: 'location',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //service\r\n {\r\n type: 'select',\r\n label: 'Service',\r\n id: 'service',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //need\r\n {\r\n type: 'select',\r\n label: 'Need',\r\n id: 'need',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //contact\r\n {\r\n type: 'select',\r\n label: 'Contact',\r\n id: 'contact',\r\n disabled: true,\r\n includeBlankOption: true,\r\n },\r\n //vendor\r\n {\r\n type: 'select',\r\n label: 'Vendor',\r\n id: 'vendor',\r\n note: 'Requires a consumer(s) to be selected',\r\n },\r\n //serviceLocation\r\n {\r\n type: 'select',\r\n label: 'Service Location',\r\n id: 'serviceLocation',\r\n hidden: $.session.applicationName === 'Gatekeeper',\r\n disabled: true,\r\n },\r\n //noteText\r\n {\r\n type: 'textarea',\r\n label: 'Note',\r\n id: 'noteText',\r\n required: true,\r\n fullscreen: true,\r\n speechToText: true,\r\n note: `Use the new quick insert key for phrases, type #ph. (#ph must not be apart of another word)`,\r\n },\r\n //mileage\r\n {\r\n type: 'number',\r\n label: 'Mileage',\r\n id: 'mileage',\r\n disabled: $.session.applicationName === 'Gatekeeper' ? true : false,\r\n },\r\n //travelTime\r\n {\r\n type: 'number',\r\n label: 'Travel Time',\r\n id: 'travelTime',\r\n hidden: $.session.applicationName === 'Advisor',\r\n disabled: true,\r\n },\r\n //attachment\r\n {\r\n type: 'attachment',\r\n label: 'Add Attachment',\r\n id: 'attachment',\r\n hidden: $.session.applicationName === 'Advisor',\r\n },\r\n ],\r\n buttons: [\r\n {\r\n type: 'submit',\r\n text: 'Save & New',\r\n icon: 'add',\r\n name: 'saveAndNew',\r\n style: 'primary',\r\n styleType: 'outlined',\r\n },\r\n {\r\n type: 'submit',\r\n text: 'Update',\r\n icon: 'save',\r\n name: 'update',\r\n hidden: true,\r\n },\r\n ],\r\n });\r\n cnFormToast = new Toast();\r\n\r\n // Overview Cards\r\n // OVERVIEW // cnOverview = new CaseNotesOverview(cnData);\r\n\r\n // Phrases\r\n cnPhrases = new CaseNotesPhrases();\r\n\r\n // Documentation Timer\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cnDocTimer = new CaseNotesTimer();\r\n cnDocTimer.renderTo(cnFormWrap);\r\n }\r\n\r\n // Req Visualizer\r\n reqVisualizer = new AsyncRequestVisualizer();\r\n reqVisualizer.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // Overlap Popup\r\n overlapPopup = new ConfirmationPopup({ className: 'overlapWarning' });\r\n overlapPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // DeleteConfirmation Popup\r\n deleteConfirmationPopup = new WarningPopup({ className: 'deleteCaseWarning' });\r\n deleteConfirmationPopup.renderTo(_DOM.ACTIONCENTER);\r\n }\r\n async function init(fromDashboard) {\r\n setPermissions();\r\n\r\n selectedDate = dates.getTodaysDateObj();\r\n caseManagerId = $.session.PeopleId;\r\n if (fromDashboard === true) {\r\n selectedConsumers = [CN_CaseLoadWidget.getCurrentlyselectedConsumerId()];\r\n }\r\n\r\n loadPageSkeleton();\r\n\r\n // init case notes data\r\n cnData = new CaseNotesData(); \r\n await cnData.fetchDropdownData();\r\n await cnData.fetchCaseManagerReviewData(caseManagerId);\r\n defaultServiceCode = cnData.getDefaultServiceCode();\r\n selectedServiceCode = defaultServiceCode;\r\n if ($.session.applicationName === 'Advisor') {\r\n await cnData.fetchConsumersThatCanHaveMileage();\r\n }\r\n\r\n initComponents();\r\n await loadPage();\r\n await populatePage();\r\n\r\n onServiceCodeChange();\r\n\r\n // if (isReadOnly) {\r\n // cnForm.disableFormInputs();\r\n // toggleFormButtonsDisabled();\r\n // rosterPicker.toggleRosterDisabled(true, true);\r\n // return;\r\n // }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n return {\r\n init,\r\n resetModule,\r\n };\r\n})();\r\n","(function (global, factory) {\r\n global.CaseNotesData = factory();\r\n})(this, function () {\r\n function dealWithDropdownDataHugeString(res) {\r\n function decipherXML(res) {\r\n const xmlDoc = UTIL.parseXml('' + res);\r\n const data = [];\r\n\r\n const billingCodes = [].slice.call(xmlDoc.getElementsByTagName('billingcode'));\r\n billingCodes.forEach(bc => {\r\n const tmpServiceCode = [].slice.call(bc.getElementsByTagName('codename'))[0];\r\n const tmpServiceId = [].slice.call(bc.getElementsByTagName('serviceid'))[0];\r\n const tmpServiceFunding = [].slice.call(bc.getElementsByTagName('includeinfunding'))[0];\r\n const tmpServiceRequired = [].slice.call(bc.getElementsByTagName('servicerequired'))[0];\r\n const tmpLocationRequired = [].slice.call(bc.getElementsByTagName('locationrequired'))[0];\r\n const tmpNeedRequired = [].slice.call(bc.getElementsByTagName('needrequired'))[0];\r\n const tmpContactRequired = [].slice.call(bc.getElementsByTagName('contactrequired'))[0];\r\n const tmpAllowGroupNotes = [].slice.call(bc.getElementsByTagName('allowgroupnotes'))[0];\r\n const tmpMileageRequired = [].slice.call(bc.getElementsByTagName('mileagerequired'))[0];\r\n const tmpDocTimeRequired = [].slice.call(bc.getElementsByTagName('doctimerequired'))[0];\r\n const tmpTravelTimeRequired = [].slice.call(bc.getElementsByTagName('traveltimerequired'))[0];\r\n const locations = [].slice.call(bc.getElementsByTagName('location'));\r\n const contacts = [].slice.call(bc.getElementsByTagName('contact'));\r\n const services = [].slice.call(bc.getElementsByTagName('service'));\r\n const needs = [].slice.call(bc.getElementsByTagName('need'));\r\n\r\n const tmpObject = {};\r\n tmpObject.serviceCode = tmpServiceCode ? tmpServiceCode.textContent : '';\r\n tmpObject.serviceId = tmpServiceId ? tmpServiceId.textContent : '';\r\n tmpObject.serviceFunding = tmpServiceFunding ? tmpServiceFunding.textContent : '';\r\n tmpObject.serviceRequired = tmpServiceRequired ? tmpServiceRequired.textContent : '';\r\n tmpObject.locationRequired = tmpLocationRequired ? tmpLocationRequired.textContent : '';\r\n tmpObject.needRequired = tmpNeedRequired ? tmpNeedRequired.textContent : '';\r\n tmpObject.contactRequired = tmpContactRequired ? tmpContactRequired.textContent : '';\r\n tmpObject.allowGroupNotes = tmpAllowGroupNotes ? tmpAllowGroupNotes.textContent : '';\r\n tmpObject.mileageRequired = tmpMileageRequired ? tmpMileageRequired.textContent : '';\r\n tmpObject.docTimeRequired = tmpDocTimeRequired ? tmpDocTimeRequired.textContent : '';\r\n tmpObject.travelTimeRequired = tmpTravelTimeRequired ? tmpTravelTimeRequired.textContent : '';\r\n tmpObject.locations = [];\r\n tmpObject.contacts = [];\r\n tmpObject.services = [];\r\n tmpObject.needs = [];\r\n\r\n locations.forEach(loc => {\r\n const tmpLocName = [].slice.call(loc.getElementsByTagName('locname'))[0].textContent;\r\n const tmpLocCode = [].slice.call(loc.getElementsByTagName('loccode'))[0].textContent;\r\n tmpObject.locations.push({\r\n locName: tmpLocName,\r\n locCode: tmpLocCode,\r\n });\r\n });\r\n contacts.forEach(loc => {\r\n const tmpContactName = [].slice.call(loc.getElementsByTagName('contactname'))[0].textContent;\r\n const tmpContactCode = [].slice.call(loc.getElementsByTagName('contactcode'))[0].textContent;\r\n tmpObject.contacts.push({\r\n contactName: tmpContactName,\r\n contactCode: tmpContactCode,\r\n });\r\n });\r\n services.forEach(loc => {\r\n const tmpServiceName = [].slice.call(loc.getElementsByTagName('servicename'))[0].textContent;\r\n const tmpServiceCode = [].slice.call(loc.getElementsByTagName('servicecode'))[0].textContent;\r\n tmpObject.services.push({\r\n serviceName: tmpServiceName,\r\n serviceCode: tmpServiceCode,\r\n });\r\n });\r\n needs.forEach(loc => {\r\n const tmpNeedName = [].slice.call(loc.getElementsByTagName('needname'))[0].textContent;\r\n const tmpNeedCode = [].slice.call(loc.getElementsByTagName('needcode'))[0].textContent;\r\n tmpObject.needs.push({\r\n needName: tmpNeedName,\r\n needCode: tmpNeedCode,\r\n });\r\n });\r\n\r\n data.push(tmpObject);\r\n });\r\n\r\n return data;\r\n }\r\n\r\n const beautifulObject = decipherXML(res);\r\n let dropdownDataObj = {};\r\n\r\n // create object for quick access\r\n beautifulObject.forEach(dd => {\r\n // create object for each billercode\r\n if (!dropdownDataObj[dd.serviceId]) {\r\n dropdownDataObj[dd.serviceId] = {\r\n serviceId: dd.serviceId,\r\n serviceCode: dd.serviceCode,\r\n serviceFunding: dd.serviceFunding,\r\n locations: [...dd.locations],\r\n contacts: [...dd.contacts],\r\n services: [...dd.services],\r\n needs: [...dd.needs],\r\n docTimeRequired: dd.docTimeRequired,\r\n travelTimeRequired: dd.travelTimeRequired,\r\n mileageRequired: dd.mileageRequired,\r\n locationRequired: dd.locationRequired,\r\n needRequired: dd.needRequired,\r\n serviceRequired: dd.serviceRequired,\r\n contactRequired: dd.contactRequired,\r\n allowGroupNotes: dd.allowGroupNotes,\r\n };\r\n }\r\n });\r\n\r\n //dropdownDataKeys = Object.keys(dropdownDataObj);\r\n return dropdownDataObj;\r\n }\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating a Case Notes Data set.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesData}\r\n */\r\n function CaseNotesData() {\r\n // Review Data\r\n this.caseLoadOnly = $.session.CaseNotesCaseloadRestrictions;\r\n this.viewEntered = $.session.CaseNotesViewEntered;\r\n this.caseLoadRestrictions = null;\r\n this.reviewGroups = {};\r\n this.reviewConsumers = [];\r\n\r\n // Dropdown Data\r\n this.dropdownData = {};\r\n this.vendorDropdownData = [];\r\n this.serviceLocationDropdownData = [];\r\n\r\n // case manager related\r\n this.caseManagerReview = {};\r\n this.reviewRequired = null;\r\n this.defaultServiceCode = null;\r\n\r\n // Other Data\r\n this.consumersThatCanHaveMileage = [];\r\n this.attachmentList = null;\r\n this.overlapData = null;\r\n }\r\n\r\n // FETCH DATA\r\n //---------------------------------------\r\n /**\r\n * @function\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchDropdownData = async function () {\r\n const data = await _UTIL.fetchData('populateDropdownData');\r\n this.dropdownData = dealWithDropdownDataHugeString(data.populateDropdownDataResult);\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedConsumerId\r\n * @param {Date} selectedDate\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchVendorDropdownData = async function ({ consumerId, serviceDate }) {\r\n const data = await _UTIL.fetchData('getConsumerSpecificVendorsJSON', {\r\n consumerId,\r\n serviceDate,\r\n });\r\n this.vendorDropdownData = data.getConsumerSpecificVendorsJSONResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedConsumerId\r\n * @param {Date} selectedDate\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchServiceLocationDropdownData = async function ({ consumerId, serviceDate }) {\r\n const data = await _UTIL.fetchData('getServiceLocationsForCaseNoteDropdown', {\r\n consumerId,\r\n serviceDate,\r\n });\r\n this.serviceLocationDropdownData = data.getServiceLocationsForCaseNoteDropDownResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} caseManagerId\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchCaseManagerReviewData = async function (caseManagerId) {\r\n const data = await _UTIL.fetchData('getReviewRequiredForCaseManager', {\r\n caseManagerId,\r\n });\r\n this.caseManagerReview = data.getReviewRequiredForCaseManagerResult[0];\r\n this.reviewRequired = this.caseManagerReview.reviewrequired === '' || this.caseManagerReview.reviewrequired === 'N' ? 'N' : 'Y';\r\n this.defaultServiceCode = this.caseManagerReview.serviceid;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchConsumersThatCanHaveMileage = async function () {\r\n //* GATEKEEPER ALL CONSUMERS CAN HAVE MILEAGE\r\n //if ($.session.applicationName === 'Gatekeeper') return this;\r\n\r\n let data = await _UTIL.fetchData('getConsumersThatCanHaveMileageJSON');\r\n data = data.getConsumersThatCanHaveMileageJSONResult;\r\n this.consumersThatCanHaveMileage = data.map(({ consumerid }) => consumerid);\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {String} caseNoteId\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchAttachmentsGK = async function (caseNoteId) {\r\n // const data = await _UTIL.fetchData('getCaseNoteAttachmentsList', { caseNoteId });\r\n // this.attachmentList = data.getCaseNoteAttachmentsListResult;\r\n\r\n const data2 = await _UTIL.fetchData('getCaseNoteAttachmentsListForGroupNote', { caseNoteId });\r\n this.attachmentList = data2.getCaseNoteAttachmentsListForGroupNoteResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchTimeOverlapData = async function (retrieveData) {\r\n const data = await _UTIL.fetchData('caseNoteOverlapCheck', { ...retrieveData });\r\n this.overlapData = JSON.parse(data.caseNoteOverlapCheckResult);\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchReviewData = async function (retrieveData) {\r\n if (this.caseLoadOnly) {\r\n const restrictionsResponse = await _UTIL.fetchData('getCaseLoadRestriction');\r\n this.caseLoadRestrictions = restrictionsResponse.getCaseLoadRestrictionResult;\r\n }\r\n\r\n const data = await _UTIL.fetchData('caseNotesFilteredSearchJSON', {\r\n ...retrieveData,\r\n });\r\n this.caseNoteReviewData = data.caseNotesFilteredSearchJSONResult;\r\n\r\n return this;\r\n };\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.fetchNoteData = async function (retrieveData) {\r\n return this;\r\n };\r\n\r\n // DROPDOWN DATA MAPPING\r\n //---------------------------------------\r\n CaseNotesData.prototype.getServiceBillCodeDropdownData = function () {\r\n let data = [];\r\n\r\n for (serviceId in this.dropdownData) {\r\n data.push({\r\n value: serviceId,\r\n text: UTIL.removeQuotes(this.dropdownData[serviceId].serviceCode),\r\n });\r\n }\r\n\r\n return data;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getLocationDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].locations.map(location => {\r\n return {\r\n value: location.locCode,\r\n text: location.locName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getServicesDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].services.map(service => {\r\n return {\r\n value: service.serviceCode,\r\n text: service.serviceName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getContactsDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].contacts.map(contact => {\r\n return {\r\n value: contact.contactCode,\r\n text: contact.contactName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getNeedsDropdownData = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].needs.map(need => {\r\n return {\r\n value: need.needCode,\r\n text: need.needName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getVendorDropdownData = function () {\r\n return this.vendorDropdownData.map(vendor => {\r\n return {\r\n value: vendor.vendorId,\r\n text: vendor.vendorName,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getServiceLocationDropdownData = function () {\r\n return this.serviceLocationDropdownData.map(location => {\r\n return {\r\n value: location.code,\r\n text: location.caption,\r\n };\r\n });\r\n };\r\n\r\n // DATA GETTERS\r\n //---------------------------------------\r\n /**\r\n * @function\r\n * @param {Object} retrieveData\r\n * @returns {CaseNotesData}\r\n */\r\n CaseNotesData.prototype.getReviewData = async function (retrieveData) {\r\n return this.caseNoteReviewData.filter(data => {\r\n // GROUPING\r\n if (data.numberInGroup !== '1') {\r\n const groupNoteId = data.groupnoteid.split('.')[0];\r\n const consumerId = data.consumerid.split('.')[0];\r\n const name = `${data.lastname}, ${data.firstname}`;\r\n\r\n this.reviewGroups[groupNoteId] = this.reviewGroups[groupNoteId] ?? {};\r\n this.reviewGroups[groupNoteId][consumerId] = name;\r\n }\r\n\r\n // TABLE CONSUMERS\r\n this.reviewConsumers.push({\r\n id: data.casenoteid.split('.')[0],\r\n FirstName: data.firstname,\r\n LastName: data.lastname,\r\n });\r\n\r\n // FOR VIEW ENTERED & CASELOAD ONLY\r\n if (this.viewEntered && this.caseLoadOnly) {\r\n const enteredByUser = data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n const onCaseload = this.caseLoadRestrictions.some(\r\n cl => cl.id.toUpperCase() === data.consumerid.split('.')[0].toUpperCase(),\r\n );\r\n return enteredByUser || onCaseload;\r\n }\r\n\r\n // FOR VIEW ENTERED ONLY\r\n if (this.viewEntered) {\r\n return data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n }\r\n\r\n // FOR CASELOAD ONLY\r\n if (this.caseLoadOnly) {\r\n return this.caseLoadRestrictions.some(cl => cl.id === data.consumerid.split('.')[0]);\r\n }\r\n\r\n return true; // If no conditions met, return the data as is\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isLocationRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].locationRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isNeedRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].needRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isContactRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].contactRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isServiceRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].serviceRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isMileageRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].mileageRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isTravelTimeRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].travelTimeRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isDocTimeRequired = function (selectedServiceCode) {\r\n return this.dropdownData[selectedServiceCode].docTimeRequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isServiceFunding = function (selectedServiceCode) {\r\n const serviceCode = selectedServiceCode ? selectedServiceCode : this.defaultServiceCode;\r\n return this.dropdownData[serviceCode].serviceFunding === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.isReviewRequired = function () {\r\n return this.caseManagerReview.reviewrequired === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @param {String} selectedServiceCode\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.allowGroupNotes = function (selectedServiceCode) {\r\n const serviceCode = selectedServiceCode ? selectedServiceCode : this.defaultServiceCode;\r\n return this.dropdownData[serviceCode].allowGroupNotes === 'Y' ? true : false;\r\n };\r\n /**\r\n * @function\r\n * @returns {String}\r\n */\r\n CaseNotesData.prototype.getDefaultServiceCode = function () {\r\n return this.defaultServiceCode;\r\n };\r\n /**\r\n * @function\r\n * @param {String} serviceCode\r\n * @returns {String}\r\n */\r\n CaseNotesData.prototype.getMainServiceCodeNameById = function (serviceCode) {\r\n return this.dropdownData[serviceCode].serviceCode;\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getOverlapData = function () {\r\n if (this.overlapData && this.overlapData.length > 0) {\r\n return this.overlapData.map(d => d.consumername);\r\n }\r\n\r\n return '';\r\n };\r\n /**\r\n * @function\r\n * @returns {Array}\r\n */\r\n CaseNotesData.prototype.getAttachmentsList = function () {\r\n return this.attachmentList.map(att => {\r\n return {\r\n description: att.description,\r\n type: att.attachmentType,\r\n attachment: att.attachment,\r\n attachmentId: att.attachmentId,\r\n };\r\n });\r\n };\r\n /**\r\n * @function\r\n * @param {String} consumerId\r\n * @returns {Boolean}\r\n */\r\n CaseNotesData.prototype.canConsumerHaveMileage = function (consumerId) {\r\n return this.consumersThatCanHaveMileage.includes(consumerId);\r\n };\r\n\r\n return CaseNotesData;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesOverview = factory();\r\n})(this, function () {\r\n function buildMostRecentUpdateElement(dateObj) {\r\n let mostRecentUpdate = new Intl.DateTimeFormat('en-US', {\r\n day: 'numeric',\r\n month: 'numeric',\r\n year: '2-digit',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n weekday: 'long',\r\n }).format(new Date(dateObj));\r\n mostRecentUpdate = mostRecentUpdate.split(', ');\r\n mostRecentUpdate = `${mostRecentUpdate[0].substring(0, 3)}, ${mostRecentUpdate[1]} at ${mostRecentUpdate[2]}`;\r\n return _DOM.createElement('p', { class: 'noteText', text: mostRecentUpdate });\r\n }\r\n function buildEnteredByElement(enteredBy, originalUserFullName) {\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `

${enteredBy} (${originalUserFullName})

`,\r\n });\r\n }\r\n function buildStartTimeElement(dirtyStart) {\r\n const time = UTIL.convertFromMilitary(dirtyStart);\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `\r\n

\r\n ${time.split(' ')[0]}\r\n ${time.split(' ')[1]}\r\n

\r\n `,\r\n });\r\n }\r\n function buildEndTimeElement(dirtyEnd) {\r\n const time = UTIL.convertFromMilitary(dirtyEnd);\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `\r\n

\r\n ${time.split(' ')[0]}\r\n ${time.split(' ')[1]}\r\n

\r\n `,\r\n });\r\n }\r\n function buildTimeDiffElement(dirtyStart, dirtyEnd) {\r\n const timDiff = dates.getMilitaryTimeDifference(dirtyStart, dirtyEnd, true);\r\n return _DOM.createElement('div', {\r\n class: 'withLabelWrap',\r\n html: `

${timDiff}

`,\r\n });\r\n }\r\n function buildConsumerElement(id, firstname, lastname) {\r\n const consumerFullName = `${lastname}, ${firstname}`;\r\n\r\n const consumerNameEle = _DOM.createElement('div', {\r\n class: 'consumer',\r\n html: `

${consumerFullName}

`,\r\n });\r\n const portrait = new Portrait(id);\r\n portrait.renderTo(consumerNameEle);\r\n\r\n return consumerNameEle;\r\n }\r\n function buildServiceInfoElement(mainService, service) {\r\n return _DOM.createElement('p', {\r\n class: 'serviceInfo',\r\n text: `${mainService}${service ? ` - ${service}` : ''}`,\r\n });\r\n }\r\n function buildNoteElement(noteText) {\r\n const note = noteText.length > 100 ? `${noteText.replace(/(\\r\\n|\\n|\\r)/gm, '').slice(0, 100)}...` : noteText;\r\n return _DOM.createElement('p', { class: 'noteText', text: note });\r\n }\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Overview component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesOverview}\r\n */\r\n function CaseNotesOverview(cnData) {\r\n // Data Init\r\n this.cnData = cnData;\r\n this.caseLoadOnly = $.session.CaseNotesCaseloadRestrictions;\r\n this.viewEntered = $.session.CaseNotesViewEntered;\r\n this.reviewGroups = {};\r\n this.reviewConsumers = [];\r\n this.showAllNotes = false;\r\n this.selectedDate = null;\r\n\r\n this.caseLoadRestrictions = null;\r\n this.caseLoadReviewData = [];\r\n\r\n // DOM Ref\r\n this.overviewWrap = null;\r\n this.overviewSearch = null;\r\n this.showAllNotesToggle = null;\r\n this.overviewCardsWrap = null;\r\n this.overviewCards = {};\r\n\r\n this._init();\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesOverview.prototype._init = function () {\r\n const showAllNotesLS = _UTIL.localStorageHandler.get('casenotes-showAllNotes');\r\n this.showAllNotes = showAllNotesLS === 'Y' ? true : false;\r\n };\r\n\r\n /**\r\n * Builds the CaseNotesOverview component HTML\r\n *\r\n * @function\r\n */\r\n CaseNotesOverview.prototype._build = function () {\r\n this.overviewWrap = _DOM.createElement('div', { class: 'caseNotesOverview' });\r\n\r\n // Header\r\n //---------------------------------\r\n const overviewHeader = _DOM.createElement('div', { class: 'caseNotesOverview__header' });\r\n this.overviewWrap.appendChild(overviewHeader);\r\n\r\n // search\r\n //---------------------------------\r\n this.overviewSearch = new Input({\r\n type: 'search',\r\n id: 'overviewSearch',\r\n placeholder: 'Search...',\r\n });\r\n this.overviewSearch.renderTo(overviewHeader);\r\n\r\n // all notes toggle\r\n //---------------------------------\r\n this.showAllNotesToggle = new Checkbox({\r\n id: 'notesView',\r\n label: 'My Notes',\r\n toggle: true,\r\n checked: !this.showAllNotes,\r\n });\r\n this.showAllNotesToggle.renderTo(overviewHeader);\r\n\r\n // Cards\r\n //---------------------------------\r\n this.overviewCardsWrap = _DOM.createElement('div', { class: 'caseNotesOverview__cardsWrap' });\r\n this.overviewWrap.appendChild(this.overviewCardsWrap);\r\n\r\n deleteConfirmationPopup = new WarningPopup({ className: 'deleteCaseWarning' });\r\n deleteConfirmationPopup.renderTo(_DOM.ACTIONCENTER);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesOverview.prototype._setupEvents = function () {\r\n this.showAllNotesToggle.onChange(async e => {\r\n this.showAllNotes = e.target.checked ? true : false;\r\n _UTIL.localStorageHandler.set('casenotes-showAllNotes', this.showAllNotes ? 'Y' : 'N');\r\n\r\n await this.fetchData();\r\n\r\n this.populate();\r\n });\r\n\r\n this.overviewSearch.onKeyup(\r\n _UTIL.debounce(e => {\r\n this._filterOverviewOnSearch(e);\r\n }, 500),\r\n );\r\n };\r\n\r\n /**\r\n * Filters overview on search\r\n *\r\n * @function\r\n * @param {Event} e\r\n */\r\n CaseNotesOverview.prototype._filterOverviewOnSearch = function (e) {\r\n this.caseLoadReviewData.forEach(rd => {\r\n const caseNoteId = rd.casenoteid.split('.')[0];\r\n\r\n const firstName = rd.firstname.toLowerCase().trim();\r\n const lastName = rd.lastname.toLowerCase().trim();\r\n const enteredBy = rd.enteredby.toLowerCase().trim();\r\n const serviceName = rd.serviceName?.toLowerCase().trim() || '';\r\n\r\n const searchFields = [\r\n `${firstName} ${lastName}`,\r\n `${lastName}, ${firstName}`,\r\n firstName,\r\n lastName,\r\n enteredBy,\r\n serviceName,\r\n ];\r\n\r\n const isMatch = searchFields.some(combo => combo.indexOf(e.target.value.toLowerCase()) !== -1);\r\n if (isMatch) {\r\n this.overviewCards[caseNoteId].classList.remove('closed');\r\n } else {\r\n this.overviewCards[caseNoteId].classList.add('closed');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Populates the overview page\r\n *\r\n * @function\r\n */\r\n CaseNotesOverview.prototype.populate = function () {\r\n this.overviewCardsWrap.innerHTML = '';\r\n\r\n this.caseLoadReviewData\r\n .sort((a, b) => {\r\n if (a.starttime < b.starttime) return 1;\r\n if (a.starttime > b.starttime) return -1;\r\n if (a.endtime < b.endtime) return 1;\r\n if (a.endtime > b.endtime) return -1;\r\n return 0;\r\n })\r\n .forEach(rd => {\r\n console.table(rd);\r\n // Review Data\r\n //---------------------------------\r\n const caseNoteId = rd.casenoteid.split('.')[0];\r\n const consumerId = rd.consumerid.split('.')[0];\r\n const mainService = this.cnData.getMainServiceCodeNameById(rd.mainbillingorservicecodeid.split('.')[0]);\r\n const isConfidential = rd.confidential === 'Y' ? true : false;\r\n const attachmentCountGK = rd.attachcount;\r\n\r\n // Overview Card\r\n //---------------------------------\r\n const overviewCardWrap = _DOM.createElement('div', {\r\n class: 'caseNotesOverview__overviewCard',\r\n 'data-noteid': caseNoteId,\r\n });\r\n const overviewCard = _DOM.createElement('div', {\r\n class: 'overviewCardInner',\r\n });\r\n overviewCardWrap.appendChild(overviewCard);\r\n\r\n // IDK YET??\r\n const mostRecentUpdateEle = buildMostRecentUpdateElement(rd.mostrecentupdate);\r\n const enteredByEle = buildEnteredByElement(rd.enteredby, rd.originalUserFullName);\r\n\r\n // BUTTONS\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n const editButton = new Button({\r\n text: 'edit',\r\n style: 'primary',\r\n styleType: 'contained',\r\n icon: 'edit',\r\n });\r\n const deleteButton = new Button({\r\n text: 'delete',\r\n style: 'danger',\r\n styleType: 'outlined',\r\n icon: 'delete',\r\n });\r\n editButton.renderTo(btnWrap);\r\n deleteButton.renderTo(btnWrap);\r\n editButton.onClick(e => {\r\n const customEvent = new CustomEvent('onCardEdit', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: { caseNoteId },\r\n });\r\n this.overviewCardsWrap.dispatchEvent(customEvent);\r\n });\r\n deleteButton.onClick(async e => {\r\n const continueSave = await deleteConfirmationPopup.show(\r\n 'Are you sure you would like to delete this case note?',\r\n );\r\n \r\n if (continueSave !== 'confirm') {\r\n return;\r\n }\r\n\r\n const customEvent = new CustomEvent('onCardDelete', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: { caseNoteId },\r\n });\r\n this.overviewCardsWrap.dispatchEvent(customEvent);\r\n }); \r\n\r\n // TOP\r\n const startTimeEle = buildStartTimeElement(rd.starttime);\r\n const endTimeEle = buildEndTimeElement(rd.endtime);\r\n const timeDurationEle = buildTimeDiffElement(rd.starttime, rd.endtime);\r\n overviewCard.appendChild(startTimeEle);\r\n overviewCard.appendChild(endTimeEle);\r\n overviewCard.appendChild(timeDurationEle);\r\n overviewCard.appendChild(btnWrap);\r\n\r\n // MAIN\r\n const consumerNameEle = buildConsumerElement(consumerId, rd.firstname, rd.lastname);\r\n const serviceInfoEle = buildServiceInfoElement(mainService, rd.serviceName);\r\n const noteTextEle = buildNoteElement(rd.caseNote);\r\n overviewCard.appendChild(consumerNameEle);\r\n overviewCard.appendChild(serviceInfoEle);\r\n overviewCard.appendChild(noteTextEle);\r\n // overviewCard.appendChild(enteredByEle);\r\n // overviewCard.appendChild(mostRecentUpdateEle);\r\n\r\n //---------------------------------\r\n this.overviewCards[caseNoteId] = overviewCardWrap;\r\n this.overviewCardsWrap.appendChild(overviewCardWrap);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesOverview.prototype.fetchData = async function (selectedDate) {\r\n if (selectedDate) {\r\n this.selectedDate = selectedDate;\r\n }\r\n\r\n if (this.caseLoadOnly) {\r\n const restrictionsResponse = await _UTIL.fetchData('getCaseLoadRestriction');\r\n this.caseLoadRestrictions = restrictionsResponse.getCaseLoadRestrictionResult;\r\n }\r\n\r\n const filteredSearchResponse = await _UTIL.fetchData('caseNotesFilteredSearchJSON', {\r\n applicationName: $.session.applicationName,\r\n attachments: '%',\r\n billerId: this.showAllNotes ? '%' : $.session.PeopleId,\r\n billingCode: '%',\r\n billed: '%',\r\n consumerId: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n dateEnteredStart: '1900-01-01',\r\n dateEnteredEnd: dates.formatISO(dates.getTodaysDateObj(), { representation: 'date' }),\r\n location: '%',\r\n need: '%',\r\n noteText: '%%%',\r\n overlaps: 'N',\r\n reviewStatus: '%',\r\n service: '%',\r\n serviceStartDate: dates.formatISO(this.selectedDate, { representation: 'date' }),\r\n serviceEndDate: dates.formatISO(this.selectedDate, { representation: 'date' }),\r\n });\r\n\r\n this.caseLoadReviewData = filteredSearchResponse.caseNotesFilteredSearchJSONResult.filter(data => {\r\n // GROUPING\r\n if (data.numberInGroup !== '1') {\r\n const groupNoteId = data.groupnoteid.split('.')[0];\r\n const consumerId = data.consumerid.split('.')[0];\r\n const name = `${data.lastname}, ${data.firstname}`;\r\n\r\n this.reviewGroups[groupNoteId] = this.reviewGroups[groupNoteId] ?? {};\r\n this.reviewGroups[groupNoteId][consumerId] = name;\r\n }\r\n\r\n // TABLE CONSUMERS\r\n this.reviewConsumers.push({\r\n id: data.casenoteid.split('.')[0],\r\n FirstName: data.firstname,\r\n LastName: data.lastname,\r\n });\r\n\r\n // FOR VIEW ENTERED & CASELOAD ONLY\r\n if (this.viewEntered && this.caseLoadOnly) {\r\n const enteredByUser = data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n const onCaseload = this.caseLoadRestrictions.some(\r\n cl => cl.id.toUpperCase() === data.consumerid.split('.')[0].toUpperCase(),\r\n );\r\n return enteredByUser || onCaseload;\r\n }\r\n\r\n // FOR VIEW ENTERED only\r\n if (this.viewEntered) {\r\n return data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n }\r\n\r\n // FOR CASELOAD ONLY\r\n if (this.caseLoadOnly) {\r\n return this.caseLoadRestrictions.some(cl => cl.id === data.consumerid.split('.')[0]);\r\n }\r\n\r\n return true; // If no conditions met, return the data as is\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n CaseNotesOverview.prototype.onCardEdit = function (cbFunc) {\r\n this.overviewCardsWrap.addEventListener('onCardEdit', e => {\r\n cbFunc(e.detail.caseNoteId);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n CaseNotesOverview.prototype.onCardDelete = function (cbFunc) {\r\n this.overviewCardsWrap.addEventListener('onCardDelete', e => {\r\n // remove data\r\n const noteId = e.detail.caseNoteId;\r\n const index = this.caseLoadReviewData.findIndex(obj => obj.casenoteid === noteId);\r\n this.caseLoadReviewData.splice(index, 1);\r\n\r\n // remove card\r\n this.overviewCards[noteId].remove();\r\n delete this.overviewCards[noteId];\r\n\r\n cbFunc(noteId);\r\n });\r\n };\r\n\r\n /**\r\n * Renders Case Notes Overview markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes overview to\r\n * @returns {CaseNotesOverview} Returns the current instances for chaining\r\n */\r\n CaseNotesOverview.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.overviewWrap);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesOverview;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesPhrases = factory();\r\n})(this, function () {\r\n //=======================================\r\n // ADDING NEW PHRASES\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Add Phrases component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesAddPhrases}\r\n */\r\n function CaseNotesAddPhrases(phrasesInstance) {\r\n // Data Init\r\n // Instances\r\n this.dialog = null;\r\n this.addPhraseForm = null;\r\n this.PhrasesInstance = phrasesInstance;\r\n // DOM Ref\r\n }\r\n\r\n /**\r\n * @function\r\n * @returns {CaseNotesAddPhrases} - Returns the current instances for chaining\r\n */\r\n CaseNotesAddPhrases.prototype.build = function () {\r\n this.dialog = new Dialog({ className: 'addPhrases' });\r\n\r\n this.addPhraseForm = new Form({\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Publicly Available',\r\n id: 'public',\r\n },\r\n {\r\n type: 'text',\r\n label: 'shortcut',\r\n id: 'shortcut',\r\n required: true,\r\n maxlength: 10,\r\n //showCount: true,\r\n },\r\n {\r\n type: 'textarea',\r\n label: 'phrase',\r\n id: 'phrase',\r\n required: true,\r\n },\r\n ],\r\n // buttons: [\r\n // {\r\n // text: 'Cancel',\r\n // icon: 'cancel',\r\n // style: 'primary',\r\n // styleType: 'outlined',\r\n // name: 'cancel',\r\n // },\r\n // ],\r\n });\r\n\r\n this.addPhraseForm.renderTo(this.dialog.dialog);\r\n\r\n this.setupEvents();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesAddPhrases.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesAddPhrases.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesAddPhrases.prototype.setupEvents = function () {\r\n this.addPhraseForm.onSubmit(async formData => {\r\n const data = await _UTIL.fetchData('insertCustomPhrase', {\r\n shortcut: formData.shortcut,\r\n phrase: formData.phrase,\r\n makePublic: formData.public === 'on' ? 'Y' : 'N',\r\n });\r\n const success = data.insertCustomPhraseResult;\r\n\r\n this.close();\r\n\r\n // update phrases list for inserting\r\n await this.PhrasesInstance.InsertPhrases.fetchData();\r\n this.PhrasesInstance.InsertPhrases.populate();\r\n });\r\n this.addPhraseForm.onChange(event => {\r\n const value = event.target.value;\r\n const name = event.target.name;\r\n const input = this.addPhraseForm.inputs[name];\r\n });\r\n };\r\n\r\n /**\r\n * Renders Case Notes Phrase makrup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render case notes phrases to\r\n * @returns {CaseNotesAddPhrases} - Returns the current instances for chaining\r\n */\r\n CaseNotesAddPhrases.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // INSERTING PHRASES\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Insert Phrases component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesInsertPhrases}\r\n */\r\n function CaseNotesInsertPhrases(phrasesInstance) {\r\n // Data Init\r\n this.phrasesData = [];\r\n this.showAllPhrases = null;\r\n\r\n // Instance Ref\r\n this.PhrasesInstance = phrasesInstance;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.showAllPhrasesToggle = null;\r\n this.addPhraseButton = null;\r\n this.phraseWrap = null;\r\n }\r\n\r\n /**\r\n * @function\r\n * @returns {CaseNotesInsertPhrases} - Returns the current instances for chaining\r\n */\r\n CaseNotesInsertPhrases.prototype.build = function () {\r\n this.showAllPhrases = _UTIL.localStorageHandler.get('casenotes-showAllPhrases');\r\n this.showAllPhrases = this.showAllPhrases === 'Y' ? true : false;\r\n\r\n this.dialog = new Dialog({ className: 'insertPhrases' });\r\n\r\n this.showAllPhrasesToggle = new Checkbox({\r\n id: 'phraseView',\r\n label: 'Show All Phrases',\r\n toggle: true,\r\n checked: this.showAllPhrases,\r\n });\r\n this.showAllPhrasesToggle.renderTo(this.dialog.dialog);\r\n\r\n this.phraseWrap = _DOM.createElement('div', { class: 'phraseWrap' });\r\n this.dialog.dialog.appendChild(this.phraseWrap);\r\n\r\n this.addPhraseButton = new Button({ text: 'New Phrase', icon: 'add' }).renderTo(this.dialog.dialog);\r\n\r\n this.setupEvents();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.populate = function () {\r\n this.phraseWrap.innerHTML = '';\r\n\r\n const sortedKeys = Object.keys(this.phrasesData).sort((a, b) => {\r\n return this.phrasesData[a].shortcut.localeCompare(this.phrasesData[b].shortcut);\r\n });\r\n\r\n sortedKeys.forEach(id => {\r\n const phrase = this.phrasesData[id].phrase;\r\n const shortcut = this.phrasesData[id].shortcut;\r\n\r\n const phraseEle = _DOM.createElement('p', {\r\n id,\r\n html: `${shortcut}${phrase.slice(0, 35)}...`,\r\n class: 'phrase',\r\n 'data-target': 'phrase',\r\n });\r\n\r\n this.phraseWrap.appendChild(phraseEle);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.onPhraseSelect = function (cb) {\r\n const handleClick = e => {\r\n if (e.target.dataset.target === 'phrase') {\r\n cb(this.phrasesData[e.target.id].phrase);\r\n this.phraseWrap.removeEventListener('click', handleClick);\r\n }\r\n };\r\n\r\n this.phraseWrap.addEventListener('click', handleClick);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.setupEvents = function () {\r\n // PHRASE LIST TOGGLE\r\n this.showAllPhrasesToggle.onChange(async e => {\r\n this.showAllPhrases = e.target.checked ? true : false;\r\n _UTIL.localStorageHandler.set('casenotes-showAllPhrases', this.showAllPhrases ? 'Y' : 'N');\r\n\r\n await this.fetchData();\r\n\r\n this.populate();\r\n });\r\n\r\n // ADD NEW PHRASE BUTTON CLICK\r\n this.addPhraseButton.onClick(async e => {\r\n this.PhrasesInstance.AddPhrases.show();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesInsertPhrases.prototype.fetchData = async function () {\r\n const data = await _UTIL.fetchData('getCustomPhrases', {\r\n showAll: this.showAllPhrases ? 'Y' : 'N',\r\n });\r\n\r\n this.phrasesData = data.getCustomPhrasesResult.reduce((obj, phrase) => {\r\n if (!obj[phrase.phrase_id]) {\r\n obj[phrase.phrase_id] = {\r\n shortcut: phrase.phrase_shortcut,\r\n phrase: phrase.phrase,\r\n };\r\n }\r\n\r\n return obj;\r\n }, {});\r\n };\r\n\r\n /**\r\n * Renders Case Notes Phrase makrup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes phrases to\r\n * @returns {CaseNotesInsertPhrases} Returns the current instances for chaining\r\n */\r\n CaseNotesInsertPhrases.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Phrases component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesPhrases}\r\n */\r\n function CaseNotesPhrases() {\r\n // Data Init\r\n this.AddPhrases = new CaseNotesAddPhrases(this);\r\n this.InsertPhrases = new CaseNotesInsertPhrases(this);\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n *\r\n * @returns {CaseNotesPhrases} Returns the current instances for chaining\r\n */\r\n CaseNotesPhrases.prototype._build = function () {\r\n this.AddPhrases.build();\r\n this.InsertPhrases.build();\r\n };\r\n\r\n /**\r\n * Renders Case Notes Phrase Dialogs to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes phrases to\r\n * @returns {CaseNotesPhrases} Returns the current instances for chaining\r\n */\r\n CaseNotesPhrases.prototype.renderTo = function (node) {\r\n this.AddPhrases.renderTo(node);\r\n this.InsertPhrases.renderTo(node);\r\n };\r\n\r\n return CaseNotesPhrases;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesReports = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for Case Notes Reports.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesReports}\r\n */\r\n function CaseNotesReports() {\r\n // Instance Ref\r\n this.dialog = null;\r\n\r\n // DOM Ref\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype._build = function () {\r\n this.dialog = new Dialog({ className: 'addPhrases' });\r\n\r\n //TODO-ASH: build form to allow user to select criteria for report\r\n this.detailReportForm = new Form({\r\n fields: [\r\n {\r\n type: 'time',\r\n label: 'Start Time',\r\n id: 'startTime',\r\n required: true,\r\n },\r\n ],\r\n });\r\n\r\n this.timeAnalysisReportForm = new Form({\r\n fields: [\r\n {\r\n type: 'time',\r\n label: 'Start Time',\r\n id: 'startTime',\r\n required: true,\r\n },\r\n ],\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype._setupEvents = function () {\r\n this.detailReportForm.onSubmit(data => {\r\n this.generateDetailReport();\r\n });\r\n this.timeAnalysisReportForm.onSubmit(data => {\r\n this.generateTimeAnalysisReport();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.generateDetailReport = async function () {\r\n const success = await _UTIL.fetchData('generateCNDetailReport', {\r\n userId: $.session.UserId,\r\n });\r\n\r\n const debounceTime = parseInt($.session.reportSeconds) * 1000;\r\n _UTIL.debounce(\r\n (async () => {\r\n const doesReportExist = await _UTIL.fetchData('checkIfCNReportExists', {\r\n reportScheduleId: success[0].reportScheduleId,\r\n });\r\n\r\n if (doesReportExist.indexOf('1') !== -1) {\r\n this.viewReport(success[0].reportScheduleId);\r\n }\r\n })(),\r\n debounceTime,\r\n );\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.generateTimeAnalysisReport = async function () {\r\n const success = await _UTIL.fetchData('generateCNTimeAnalysisReport', {\r\n userId: $.session.UserId,\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReports.prototype.viewReport = async function (reportScheduleId) {\r\n const action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteReport/`;\r\n\r\n var form = document.createElement('form');\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', () => {\r\n form.remove();\r\n });\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n };\r\n\r\n /**\r\n * Renders Case Notes Report Popup markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes report popup to\r\n * @returns {CaseNotesReports} Returns the current instances for chaining\r\n */\r\n CaseNotesReports.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesReports;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesReviewTable = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Review Table component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesReviewTable}\r\n */\r\n function CaseNotesReviewTable(cnData) {\r\n // Data Init\r\n this.cnData = cnData;\r\n this.caseLoadOnly = $.session.CaseNotesCaseloadRestrictions;\r\n this.viewEntered = $.session.CaseNotesViewEntered;\r\n this.reviewGroups = {};\r\n this.reviewConsumers = [];\r\n\r\n this.caseLoadRestrictions = null;\r\n this.caseLoadReviewData = [];\r\n\r\n // DOM Ref\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReviewTable.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div');\r\n\r\n this.reviewTable = new Table({\r\n data: {\r\n headings: [\r\n {\r\n text: 'Service Date',\r\n type: 'date',\r\n },\r\n {\r\n text: 'Start Time',\r\n type: 'time',\r\n },\r\n {\r\n text: 'End Time',\r\n type: 'time',\r\n },\r\n {\r\n text: 'Name',\r\n type: 'string',\r\n },\r\n {\r\n text: 'Created',\r\n type: 'date',\r\n },\r\n {\r\n text: 'User Updated',\r\n type: 'string',\r\n },\r\n ],\r\n },\r\n });\r\n\r\n this.reviewTable.renderTo(this.rootElement);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesReviewTable.prototype.fetchData = async function (selectedDate) {\r\n if (this.caseLoadOnly) {\r\n const restrictionsResponse = await _UTIL.fetchData('getCaseLoadRestriction');\r\n this.caseLoadRestrictions = restrictionsResponse.getCaseLoadRestrictionResult;\r\n }\r\n\r\n const filteredSearchResponse = await _UTIL.fetchData('caseNotesFilteredSearchJSON', {\r\n applicationName: $.session.applicationName,\r\n attachments: '%',\r\n billerId: this.showAllNotes ? '%' : $.session.PeopleId,\r\n billingCode: '%',\r\n billed: '%',\r\n consumerId: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n dateEnteredStart: '1900-01-01',\r\n dateEnteredEnd: dates.formatISO(selectedDate, { representation: 'date' }),\r\n location: '%',\r\n need: '%',\r\n noteText: '%%%',\r\n overlaps: 'N',\r\n reviewStatus: '%',\r\n service: '%',\r\n serviceStartDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n serviceEndDate: dates.formatISO(selectedDate, { representation: 'date' }),\r\n });\r\n\r\n this.caseLoadReviewData = filteredSearchResponse.caseNotesFilteredSearchJSONResult.filter(data => {\r\n // GROUPING\r\n if (data.numberInGroup !== '1') {\r\n const groupNoteId = data.groupnoteid.split('.')[0];\r\n const consumerId = data.consumerid.split('.')[0];\r\n const name = `${data.lastname}, ${data.firstname}`;\r\n\r\n this.reviewGroups[groupNoteId] = this.reviewGroups[groupNoteId] ?? {};\r\n this.reviewGroups[groupNoteId][consumerId] = name;\r\n }\r\n\r\n // TABLE CONSUMERS\r\n this.reviewConsumers.push({\r\n id: data.casenoteid.split('.')[0],\r\n FirstName: data.firstname,\r\n LastName: data.lastname,\r\n });\r\n\r\n // FOR VIEW ENTERED & CASELOAD ONLY\r\n if (this.viewEntered && this.caseLoadOnly) {\r\n const enteredByUser = data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n const onCaseload = this.caseLoadRestrictions.some(\r\n cl => cl.id.toUpperCase() === data.consumerid.split('.')[0].toUpperCase(),\r\n );\r\n return enteredByUser || onCaseload;\r\n }\r\n\r\n // FOR VIEW ENTERED only\r\n if (this.viewEntered) {\r\n return data.enteredby.toUpperCase() === $.session.UserId.toUpperCase();\r\n }\r\n\r\n // FOR CASELOAD ONLY\r\n if (this.caseLoadOnly) {\r\n return this.caseLoadRestrictions.some(cl => cl.id === data.consumerid.split('.')[0]);\r\n }\r\n\r\n return true; // If no conditions met, return the data as is\r\n });\r\n };\r\n\r\n /**\r\n * Renders Case Notes Review Table markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes review table to\r\n * @returns {CaseNotesReviewTable} Returns the current instances for chaining\r\n */\r\n CaseNotesReviewTable.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesReviewTable;\r\n});\r\n","(function (global, factory) {\r\n global.CaseNotesTimer = factory();\r\n})(this, function () {\r\n //=======================================\r\n // INACTIVITY\r\n //---------------------------------------\r\n /**\r\n * @constructor\r\n */\r\n function InactivityWarningPopup() {\r\n this.dialog = null;\r\n\r\n this.yesButton = null;\r\n this.noButton = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n InactivityWarningPopup.prototype.build = function () {\r\n // Inactivity Warning\r\n this.dialog = new Dialog({ className: 'inactivityWarning' });\r\n\r\n const messageEle = _DOM.createElement('p', {\r\n text: 'Your documentation timer has been paused. Continue timing?',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.yesButton = new Button({ text: 'yes' });\r\n this.noButton = new Button({ text: 'no', styleType: 'outlined' });\r\n this.yesButton.renderTo(btnWrap);\r\n this.noButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Shows the inactivity warning dialog\r\n *\r\n * @function\r\n */\r\n InactivityWarningPopup.prototype.show = function () {\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n InactivityWarningPopup.prototype.onClick = function (cbFunc) {\r\n this.yesButton.onClick(e => {\r\n cbFunc(true);\r\n this.dialog.close();\r\n });\r\n this.noButton.onClick(e => {\r\n cbFunc(false);\r\n this.dialog.close();\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built InactivityWarningPopup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Inactivity Warning Popup to\r\n * @returns {InactivityWarningPopup} Returns the current instances for chaining\r\n */\r\n InactivityWarningPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // AUTO START\r\n //---------------------------------------\r\n /**\r\n * @constructor\r\n */\r\n function TimerAutoStartPopup() {\r\n this.prevDocumentationTime = 0;\r\n this.dialog = null;\r\n\r\n this.yesButton = null;\r\n this.noButton = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n TimerAutoStartPopup.prototype.build = function () {\r\n this.dialog = new Dialog({ className: 'timerAutoStart' });\r\n\r\n const messageEle = _DOM.createElement('p', {\r\n text: 'Documentation Time is allowed for this bill code. Would you like to start the timer now?',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.yesButton = new Button({ text: 'yes' });\r\n this.noButton = new Button({ text: 'no', styleType: 'outlined' });\r\n this.yesButton.renderTo(btnWrap);\r\n this.noButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Shows the auto start dialog\r\n *\r\n * @function\r\n */\r\n TimerAutoStartPopup.prototype.show = function (prevDocumentationTime) {\r\n this.prevDocumentationTime = prevDocumentationTime;\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n TimerAutoStartPopup.prototype.onClick = function (cbFunc) {\r\n this.yesButton.onClick(e => {\r\n cbFunc(true, this.prevDocumentationTime);\r\n this.dialog.close();\r\n this.prevDocumentationTime = 0;\r\n });\r\n this.noButton.onClick(e => {\r\n cbFunc(false);\r\n this.dialog.close();\r\n this.prevDocumentationTime = 0;\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built TimerAutoStartPopup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Timer Auto Start Popup to\r\n * @returns {TimerAutoStartPopup} Returns the current instances for chaining\r\n */\r\n TimerAutoStartPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating the Case Notes Timer component.\r\n *\r\n * @constructor\r\n * @returns {CaseNotesTimer}\r\n */\r\n function CaseNotesTimer() {\r\n this.startTime = null; // To store the time when the timer starts\r\n this.timeOffset = 0; // To store additional time in seconds\r\n this.elapsedTimeInSeconds = 0; // To store the elapsed time in seconds\r\n\r\n this.intervalId = null; // To store the ID of the timer interval\r\n this.inactivityIntervalId = null; // to store the ID of the inactivity timeout\r\n\r\n // Instance Ref\r\n this.inactivityWarningDialog = null;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.timeDisplay = null;\r\n this.playButton = null;\r\n this.stopButton = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Case Notes Timer element component HTML\r\n *\r\n * @function\r\n * @private\r\n * @returns {CaseNotesTimer} Returns the current instances for chaining\r\n */\r\n CaseNotesTimer.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'caseNotesTimer' });\r\n\r\n this.playButton = new Button({ icon: 'play', style: 'secondary', styleType: 'outlined' });\r\n this.stopButton = new Button({ icon: 'stop', style: 'danger', styleType: 'outlined' });\r\n this.timeDisplay = _DOM.createElement('p', { text: dates.formatSecondsToFullTime(this.elapsedTimeInSeconds) });\r\n\r\n this.rootElement.appendChild(this.timeDisplay);\r\n this.playButton.renderTo(this.rootElement);\r\n this.stopButton.renderTo(this.rootElement);\r\n\r\n // Inactivity Warning\r\n this.inactivityWarningPopup = new InactivityWarningPopup();\r\n this.inactivityWarningPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // Auto Start\r\n this.timerAutoStartPopup = new TimerAutoStartPopup();\r\n this.timerAutoStartPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n this._setupEvents();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype._setupEvents = function () {\r\n this.playButton.onClick(e => {\r\n this.start(this.elapsedTimeInSeconds);\r\n this.playButton.toggleDisabled(true);\r\n });\r\n this.stopButton.onClick(e => {\r\n this.stop();\r\n this.playButton.toggleDisabled(false);\r\n\r\n if (this.inactivityTimeoutId) {\r\n clearTimeout(this.inactivityTimeoutId);\r\n }\r\n });\r\n this.inactivityWarningPopup.onClick(continueTimer => {\r\n if (continueTimer) {\r\n this.start(this.elapsedTimeInSeconds);\r\n }\r\n });\r\n this.timerAutoStartPopup.onClick((autoStart, prevDocTime) => {\r\n if (autoStart) {\r\n this.start(prevDocTime);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Starts the Doc Timer.\r\n * Should not be used to start timer after its been stopped\r\n *\r\n * @function\r\n * @param {Number} options\r\n */\r\n CaseNotesTimer.prototype.start = function (additionalTimeInSeconds = 0) {\r\n this.startTime = Date.now(); // Capture the start time\r\n this.timeOffset = additionalTimeInSeconds; // Store the additional time\r\n\r\n // Clear any existing interval\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n\r\n // Start a new interval\r\n this.intervalId = setInterval(() => {\r\n const currentTime = Date.now();\r\n this.elapsedTimeInSeconds = Math.floor((currentTime - this.startTime) / 1000) + this.timeOffset;\r\n this.timeDisplay.innerText = dates.formatSecondsToFullTime(this.elapsedTimeInSeconds);\r\n //console.log(`Elapsed Time: ${this.elapsedTimeInSeconds} seconds`);\r\n }, 1000);\r\n\r\n // clear existing inactivity interval\r\n if (this.inactivityIntervalId) {\r\n clearTimeout(this.inactivityIntervalId);\r\n }\r\n // Start inactivity timer\r\n this.inactivityIntervalId = setTimeout(() => {\r\n this.stop();\r\n this.inactivityWarningPopup.show();\r\n }, 120000);\r\n };\r\n\r\n /**\r\n * Stops the Doc Timer. (aka pause)\r\n *\r\n * @function\r\n * @returns {CaseNotesTimer} Returns the current instances for chaining\r\n */\r\n CaseNotesTimer.prototype.stop = function () {\r\n clearInterval(this.intervalId);\r\n clearTimeout(this.inactivityTimeoutId);\r\n this.intervalId = null;\r\n this.inactivityTimeoutId = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype.clear = function () {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n if (this.inactivityTimeoutId) {\r\n clearTimeout(this.inactivityTimeoutId);\r\n }\r\n\r\n this.startTime = null;\r\n this.timeOffset = 0;\r\n this.intervalId = null;\r\n this.inactivityTimeoutId = null;\r\n this.elapsedTimeInSeconds = 0;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype.getTime = function () {\r\n return this.elapsedTimeInSeconds;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n CaseNotesTimer.prototype.showAutoStartPopup = function (prevDocumentationTime) {\r\n if (this.intervalId) return;\r\n\r\n this.timerAutoStartPopup.show(prevDocumentationTime);\r\n };\r\n\r\n /**\r\n * Renders Case Notes Timer makrup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render case notes timer to\r\n * @returns {CaseNotesTimer} Returns the current instances for chaining\r\n */\r\n CaseNotesTimer.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return CaseNotesTimer;\r\n});\r\n","// Enable the \"Describe incident under...\" textbox IF any of the checkboxes are checked EXCEPT the \"Not applicable...\" checkbox.\r\n// Enable the \"Is action required...\" radio buttons IF any of the checkboxes are checked EXCEPT the \"Not applicable...\" checkbox.\r\n// WHEN \"Not applicable…\" is checked SET \"Is action required within the next 30 days…\" to NO","//test df\r\nvar caseNotes = (function () {\r\n function loadCaseNotesLanding() {\r\n let newBtn = button.build({\r\n text: 'New Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n note.init('new');\r\n },\r\n });\r\n let newSSABtn = button.build({\r\n text: 'New SSA Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n noteSSA.init('new');\r\n },\r\n });\r\n\r\n let overviewBtn = button.build({\r\n text: 'Review Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: notesOverview.init,\r\n });\r\n let editPhrasesBtn = button.build({\r\n text: 'Edit My Phrases',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: cnEditPhrases.init,\r\n });\r\n let tryNewCaseNotes = button.build({\r\n text: 'NEW! Case Note Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: CaseNotes.init,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(tryNewCaseNotes);\r\n if ($.session.CaseNotesUpdate && $.session.CaseNotesSSANotes) btnWrap.appendChild(newSSABtn);\r\n if ($.session.CaseNotesUpdate) btnWrap.appendChild(newBtn);\r\n btnWrap.appendChild(overviewBtn);\r\n btnWrap.appendChild(editPhrasesBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n //PERMISSION// caseNotesUpdate === false means they have view only permisison\r\n //Can't create new notes or update/delete notes. -- Skip the landing, and just load the overview page\r\n if (!$.session.CaseNotesUpdate) {\r\n notesOverview.init();\r\n return;\r\n }\r\n loadCaseNotesLanding();\r\n }\r\n\r\n return {\r\n load: init,\r\n };\r\n})();\r\n","var caseNotesAjax = (function () {\r\n // GET\r\n function getFilteredCaseNotesList(data, callback) {\r\n const spinner = PROGRESS.SPINNER.get('Loading Overlaps...');\r\n const reviewTable = document.querySelector('#caseNotesReviewTable .table__body');\r\n const submitData = {\r\n token: $.session.Token,\r\n billerId: data.billerId,\r\n consumerId: data.consumer,\r\n serviceStartDate: data.serviceDateStart,\r\n serviceEndDate: data.serviceDateEnd,\r\n dateEnteredStart: data.enteredDateStart,\r\n dateEnteredEnd: data.enteredDateEnd,\r\n billingCode: data.billingCode,\r\n reviewStatus: data.reviewStatus,\r\n location: data.location,\r\n service: data.service,\r\n need: data.need,\r\n contact: data.contact,\r\n confidential: data.confidential,\r\n corrected: data.corrected,\r\n billed: data.billed,\r\n attachments: data.attachments,\r\n overlaps: data.overlaps,\r\n noteText: data.noteText !== '' ? `%${data.noteText}%` : '',\r\n applicationName: $.session.applicationName,\r\n outcomeServiceMonitoring: data.outcomeServiceMonitoring\r\n };\r\n if (data.overlaps === 'Y') {\r\n reviewTable.innerHTML = '';\r\n reviewTable.appendChild(spinner);\r\n spinner.style.top = 0;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/caseNotesFilteredSearchJSON/',\r\n // data:\r\n // '{\"token\":\"' +\r\n // $.session.Token +\r\n // '\", \"billerId\":\"' +\r\n // data.billerId +\r\n // '\", \"consumerId\":\"' +\r\n // data.consumer +\r\n // '\", \"serviceStartDate\":\"' +\r\n // data.serviceDateStart +\r\n // '\", \"serviceEndDate\":\"' +\r\n // data.serviceDateEnd +\r\n // '\", \"dateEnteredStart\":\"' +\r\n // data.enteredDateStart +\r\n // '\", \"dateEnteredEnd\":\"' +\r\n // data.enteredDateEnd +\r\n // '\", \"billingCode\":\"' +\r\n // data.billingCode +\r\n // '\", \"reviewStatus\":\"' +\r\n // data.reviewStatus +\r\n // '\", \"location\":\"' +\r\n // data.location +\r\n // '\", \"service\":\"' +\r\n // data.service +\r\n // '\", \"need\":\"' +\r\n // data.need +\r\n // '\", \"contact\":\"' +\r\n // data.contact +\r\n // '\", \"confidential\":\"' +\r\n // data.confidential +\r\n // '\", \"billed\":\"' +\r\n // data.billed +\r\n // '\", \"attachments\":\"' +\r\n // data.attachments +\r\n // '\", \"overlaps\":\"' +\r\n // data.overlaps +\r\n // '\", \"noteText\":\"' +\r\n // data.noteText +\r\n // '\"}',\r\n data: JSON.stringify(submitData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.caseNotesFilteredSearchJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCaseNoteEdit(noteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseNoteEditJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCaseNoteEditJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getGroupNoteId(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGroupNoteId/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getGroupNoteIdResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDropdownData(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateDropdownData/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumersThatCanHaveMileage(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersThatCanHaveMileageJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumersThatCanHaveMileageJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getBillersListForDropDown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getBillersListForDropDownJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getBillersListForDropDownJSONResult;\r\n // var allString = '000All';\r\n // res = res.slice(0, 45) + allString + res.slice(45);\r\n // createBillerDropdown(res);\r\n callback(res);\r\n // if ($.session.CaseNotesCaseloadRestriction == false) {\r\n // \tconvertDaysBackForCaseNoteLoadFilter($.session.defaultCaseNoteReviewDays);\r\n // }\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getReviewRequiredForCaseManager(caseManagerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getReviewRequiredForCaseManager/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseManagerId\":\"' + caseManagerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getReviewRequiredForCaseManagerResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCaseNoteAttachmentsList(caseNoteId, cb) {\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseNoteAttachmentsList/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCaseNoteAttachmentsListResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getConsumerSpecificVendors(consumerId, serviceDate, callback) {\r\n if (consumerId == '' || consumerId == undefined) {\r\n consumerId = $.session.caseNoteConsumerId;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerSpecificVendorsJSON/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\", \"serviceDate\":\"' + serviceDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerSpecificVendorsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getServiceLocationsForCaseNoteDropDown(data, callback) {\r\n //** OBJ **\r\n // data = { serviceDate, consumerId }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceLocationsForCaseNoteDropDown/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getServiceLocationsForCaseNoteDropDownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function caseNoteOverlapCheck(data, callback) {\r\n // data = {consumerId, startTime, endTime, serviceDate, caseManagerId, noteId, groupNoteId}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/caseNoteOverlapCheck/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\", \"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.caseNoteOverlapCheckResult);\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n // SAVE, UPDATE, DELETE\r\n function saveSingleCaseNote(data, callback) {\r\n // saveCaseNote\r\n data = {\r\n token: $.session.Token,\r\n noteId: data.noteId,\r\n caseManagerId: data.caseManagerId,\r\n consumerId: data.consumerId,\r\n serviceOrBillingCodeId: data.serviceOrBillingCodeId,\r\n locationCode: data.locationCode,\r\n serviceCode: data.serviceCode,\r\n needCode: data.needCode,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n vendorId: data.vendorId,\r\n contactCode: data.contactCode,\r\n serviceLocationCode: data.serviceLocationCode,\r\n caseNote: data.caseNote,\r\n reviewRequired: data.reviewRequired,\r\n confidential: data.confidential,\r\n corrected: data.corrected,\r\n casenotemileage: data.casenotemileage,\r\n casenotetraveltime: data.casenotetraveltime,\r\n documentationTime: data.documentationTime,\r\n outcomeServiceMonitoring: data.serviceMonitoring\r\n };\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveCaseNote/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n callback(response.saveCaseNoteResult);\r\n },\r\n });\r\n }\r\n function saveGroupCaseNote(data, callback) {\r\n // saveGroupCaseNote\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveGroupCaseNote/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\",\"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\",\"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\", \"locationCode\":\"' +\r\n data.locationCode +\r\n '\", \"serviceCode\":\"' +\r\n data.serviceCode +\r\n '\", \"needCode\":\"' +\r\n data.needCode +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"vendorId\":\"' +\r\n data.vendorId +\r\n '\", \"contactCode\":\"' +\r\n data.contactCode +\r\n '\", \"serviceLocationCode\":\"' +\r\n data.serviceLocationCode +\r\n '\", \"caseNote\":\"' +\r\n data.caseNote +\r\n '\", \"reviewRequired\":\"' +\r\n data.reviewRequired +\r\n '\", \"confidential\":\"' +\r\n data.confidential +\r\n '\", \"consumerGroupCount\":\"' +\r\n data.consumerGroupCount +\r\n '\", \"casenotemileage\":\"' +\r\n data.casenotemileage +\r\n '\", \"casenotetraveltime\":\"' +\r\n data.casenotetraveltime +\r\n '\", \"documentationTime\":\"' +\r\n data.documentationTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function saveAdditionalGroupCaseNote(data, callback) {\r\n // saveAdditionalGroupCaseNote\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveAdditionalGroupCaseNote/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\",\"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\",\"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\", \"locationCode\":\"' +\r\n data.locationCode +\r\n '\", \"serviceCode\":\"' +\r\n data.serviceCode +\r\n '\", \"needCode\":\"' +\r\n data.needCode +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"vendorId\":\"' +\r\n data.vendorId +\r\n '\", \"contactCode\":\"' +\r\n data.contactCode +\r\n '\", \"serviceLocationCode\":\"' +\r\n data.serviceLocationCode +\r\n '\", \"reviewRequired\":\"' +\r\n data.reviewRequired +\r\n '\", \"confidential\":\"' +\r\n data.confidential +\r\n '\", \"caseNote\":\"' +\r\n data.caseNote +\r\n '\", \"casenotemileage\":\"' +\r\n data.casenotemileage +\r\n '\", \"casenotetraveltime\":\"' +\r\n data.casenotetraveltime +\r\n '\", \"documentationTime\":\"' +\r\n data.documentationTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n }\r\n function updateGroupNoteValues(data, callback) {\r\n // updateGroupNoteValues\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateGroupNoteValues/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\",\"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n }\r\n async function deleteExistingCaseNote(noteId) {\r\n try {\r\n const data = {\r\n token: $.session.Token,\r\n noteId: noteId,\r\n };\r\n const res = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteExistingCaseNote/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n // success: function (response, status, xhr) {\r\n // \tvar res = JSON.stringify(response);\r\n // },\r\n // error: function (xhr, status, error) {\r\n // \t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n // },\r\n });\r\n return res.deleteExistingCaseNoteResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // ATTACHMENTS\r\n function addCaseNoteAttachment(caseNoteId, desc, attachmentType, buf, cb) {\r\n // let abString = btoa(String.fromCharCode.apply(null, new Uint8Array(buf)))\r\n var binary = '';\r\n var bytes = new Uint8Array(buf);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n description: desc,\r\n attachmentType: attachmentType,\r\n attachment: abString,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addCaseNoteAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deleteCaseNoteAttachmentResult;\r\n if (cb) cb(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function deleteCaseNoteAttachment(caseNoteId, attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n attachmentId: attachmentId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCaseNoteAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deleteCaseNoteAttachmentResult;\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function viewCaseNoteAttachment(attachmentId) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n // PHRASES\r\n function getCustomPhrases(showAll, cb) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCustomPhrases/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"showAll\":\"' + showAll + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomPhrasesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function insertCustomPhrases(shortcut, phrase, makePublic, cb) {\r\n data = {\r\n token: $.session.Token,\r\n shortcut: shortcut,\r\n phrase: phrase,\r\n makePublic: makePublic,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertCustomPhrase/',\r\n //data: '{\"token\":\"' + $.session.Token + '\", \"shortcut\":\"' + shortcut + '\", \"phrase\":\"' + phrase + '\", \"makePublic\":\"' + makePublic + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomPhraseResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getConsumersForCNFilter(callback) {\r\n data = {\r\n token: $.session.Token,\r\n caseLoadOnly: $.session.CaseNotesCaseloadRestriction ? 'Y' : 'N',\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersForCNFilter/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumersForCNFilterResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n\r\n // REPORTS\r\n function generateCNDetailReport(filterValues, callback) {\r\n //data = {\r\n // token: $.session.Token,\r\n // userId: $.session.UserId,\r\n // billerId: filterValues.billerId,\r\n // consumerId: filterValues.consumer,\r\n // consumerName: filterValues.consumerName,\r\n // serviceStartDate: filterValues.serviceDateStart,\r\n // serviceEndDate: filterValues.serviceDateEnd,\r\n // enteredDateStart: filterValues.enteredDateStart,\r\n // enteredDateEnd: filterValues.enteredDateEnd,\r\n // billingCode: filterValues.billingCode,\r\n // location: filterValues.location,\r\n // service: filterValues.service,\r\n // need: filterValues.need,\r\n // contact: filterValues.contact,\r\n // applicationName: $.session.applicationName\r\n //}\r\n if (filterValues.billCodeText == null || filterValues.billCodeText == undefined) {\r\n filterValues.billCodeText = 'All';\r\n }\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n billerId: filterValues.billerId,\r\n consumerId: filterValues.consumer,\r\n consumerName: filterValues.consumerName,\r\n serviceStartDate: filterValues.serviceDateStart,\r\n serviceEndDate: filterValues.serviceDateEnd,\r\n location: filterValues.location,\r\n originallyEnteredStart: filterValues.enteredDateStart,\r\n originallyEnteredEnd: filterValues.enteredDateEnd,\r\n billingCode: filterValues.billCodeText,\r\n service: filterValues.service,\r\n need: filterValues.need,\r\n contact: filterValues.contact,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateCNDetailReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateCNDetailReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function generateCNTimeAnalysisReport(filterValues, callback) {\r\n //string token, string userId, string billerId, string consumerId, string billingCode, string applicationName\r\n if (filterValues.billCodeText == null || filterValues.billCodeText == undefined) {\r\n filterValues.billCodeText = 'All';\r\n }\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n billerId: filterValues.billerId,\r\n consumerId: filterValues.consumer,\r\n consumerName: filterValues.consumerName,\r\n billingCode: filterValues.billCodeText,\r\n serviceStartDate: filterValues.serviceDateStart,\r\n serviceEndDate: filterValues.serviceDateEnd,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateCNTimeAnalysisReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateCNTimeAnalysisReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function checkIfCNReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfCNReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfCNReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function viewCaseNoteReport(reportScheduleId) {\r\n data = {\r\n reportScheduleId: reportScheduleId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n // OTHER\r\n function getCNPopulateFilterDropdowns(serviceCodeId) {\r\n // Pass % service code on initial load and when service code/bill code == ALL\r\n data = {\r\n token: $.session.Token,\r\n serviceCodeId: serviceCodeId,\r\n };\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCNPopulateFilterDropdowns/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getSSAServiceOptionsDropdown(consumerId, serviceDate, callback) {\r\n if (consumerId == '' || consumerId == undefined) {\r\n consumerId = $.session.caseNoteConsumerId;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSSAServiceOptionsDropdown/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + serviceDate + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSSAServiceOptionsDropdownResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getCaseLoadRestriction(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseLoadRestriction/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getCaseLoadRestrictionResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getSSABillCodesFromService(serviceName, servicePersonApproved, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSSABillCodesFromService/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceName\":\"' +\r\n serviceName +\r\n '\", \"personApproved\":\"' +\r\n servicePersonApproved +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSSABillCodesFromServiceResult;\r\n callback(res, servicePersonApproved);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getConsumersThatCanHaveMileage,\r\n getBillersListForDropDown,\r\n getFilteredCaseNotesList,\r\n getConsumerSpecificVendors,\r\n getCaseNoteEdit,\r\n getReviewRequiredForCaseManager,\r\n getDropdownData,\r\n getGroupNoteId,\r\n getServiceLocationsForCaseNoteDropDown,\r\n getCaseLoadRestriction,\r\n // saving & updating\r\n caseNoteOverlapCheck,\r\n saveSingleCaseNote,\r\n saveGroupCaseNote,\r\n saveAdditionalGroupCaseNote,\r\n updateGroupNoteValues,\r\n deleteExistingCaseNote,\r\n getCustomPhrases,\r\n insertCustomPhrases,\r\n deleteCaseNoteAttachment,\r\n addCaseNoteAttachment,\r\n viewCaseNoteAttachment,\r\n getCaseNoteAttachmentsList,\r\n getConsumersForCNFilter,\r\n getCNPopulateFilterDropdowns,\r\n getSSAServiceOptionsDropdown,\r\n getSSABillCodesFromService,\r\n generateCNDetailReport,\r\n generateCNTimeAnalysisReport,\r\n checkIfCNReportExists,\r\n viewCaseNoteReport,\r\n };\r\n})();\r\n","var caseNotesTimer = (function() {\r\n function clearTimerOnSave() {\r\n clearInterval($.caseNotes.interval);\r\n clearTimeout($.caseNotes.inactTime);\r\n clearInterval(inactivityTime);\r\n clearTimeout(inactivityTime);\r\n //$.caseNotes.inactTime = 0;\r\n $.caseNotes.documentTimeSeconds = 0;\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n }\r\n function pauseTimer(fromInactive) {\r\n clearInterval($.caseNotes.interval);\r\n clearTimeout($.caseNotes.inactTime);\r\n clearTimeout($.caseNotes.inactiveTimeForClear);\r\n clearInterval(inactivityTime);\r\n clearTimeout(inactivityTime);\r\n $.caseNotes.inactTime = 0;\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n $('#cnTimerStart').css('background', '#eee');\r\n $('#minutes').attr('contenteditable', 'true');\r\n $('#minutes').removeClass('unclickableElement');\r\n $('#editcasenotetimer').removeClass('unclickableElement');\r\n if (fromInactive) {\r\n } else {\r\n displayDocTime(); //\r\n }\r\n }\r\n function resetTimer() {\r\n if ($.caseNotes.dontResetInactTimerFlag == false) {\r\n clearTimeout($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactiveTimeForClear);\r\n clearTimeout($.caseNotes.inactiveTimeForClear);\r\n clearTimeout(inactivityTime);\r\n $.caseNotes.inactTime = setTimeout(logout, 120000);\r\n }\r\n }\r\n function logout() {\r\n //alert(\"Your documentation time has been paused.\");\r\n clearInterval(inactivityTime);\r\n clearInterval($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactiveTimeForClear);\r\n clearTimeout(inactivityTime);\r\n var answer = confirm('Your documentation time has been paused. Continue timing');\r\n if (answer) {\r\n resetTimer();\r\n } else {\r\n pauseTimer(true);\r\n }\r\n }\r\n var inactivityTime = function() {\r\n $.caseNotes.inactTime = setTimeout(logout, 120000);\r\n $.caseNotes.inactiveTimeForClear = $.caseNotes.inactTime;\r\n var t;\r\n window.onload = resetTimer;\r\n document.onmousemove = resetTimer;\r\n document.onkeypress = resetTimer;\r\n };\r\n function startCaseNoteTimer(state, timeInSeconds) {\r\n $('#minutes').attr('contenteditable', 'false');\r\n $('#editcasenotetimer').addClass('unclickableElement');\r\n $('#minutes').addClass('unclickableElement');\r\n inactivityTime();\r\n var minutesLabel = document.getElementById('minutes');\r\n var totalSeconds = 0;\r\n totalSeconds = $.caseNotes.documentTimeSeconds;\r\n $.caseNotes.interval = setInterval(setTime, 1000);\r\n $('#cnTimerStart').css('background', 'green');\r\n function setTime() {\r\n ++totalSeconds;\r\n $.caseNotes.documentTimeSeconds = totalSeconds;\r\n }\r\n }\r\n\r\n\r\n return {\r\n clearTimerOnSave,\r\n startCaseNoteTimer\r\n }\r\n\r\n\r\n})();","var documentationTimer = (function () {\r\n var runningTime = 0;\r\n var saveTime;\r\n var inactTime;\r\n var timer;\r\n var minutes;\r\n var startBtn;\r\n let timerRunning = false;\r\n\r\n function clearTimer() {\r\n clearTimeout(inactTime);\r\n clearInterval(timer);\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n runningTime = 0;\r\n minutes = 0;\r\n inactTime = null;\r\n timer = null;\r\n }\r\n\r\n var inactivityTime = function () {\r\n inactTime = setTimeout(inactiveAlert, 120000);\r\n };\r\n\r\n function inactiveAlert() {\r\n //Speech to text, check if speech to text is listening, and reset inactivity if it is\r\n if (document.querySelector('.stt_listening')) {\r\n resetInactivityTimer();\r\n return;\r\n }\r\n clearTimeout(inactTime);\r\n clearInterval(timer);\r\n var answer = confirm('Your documentation time has been paused. Continue timing?');\r\n if (answer) {\r\n resetInactivityTimer();\r\n const start = Date.now() - runningTime * 1000;\r\n timer = setInterval(function () {\r\n const deltaMS = Date.now() - start; // milliseconds elapsed since start\r\n const deltaS = Math.floor(deltaMS / 1000);\r\n runningTime = deltaS;\r\n const newMinutes = Math.round(Math.floor(runningTime / 30) / 2);\r\n if (newMinutes !== minutes) {\r\n minutes = newMinutes;\r\n const minArea = document.getElementById('docTimeMinutesDisplay');\r\n minArea.value = minutes;\r\n }\r\n }, 1000);\r\n } else {\r\n // pauseTimer\r\n note.getTimeFromInactivity(stopTimer());\r\n }\r\n }\r\n\r\n function resetInactivityTimer() {\r\n clearTimeout(inactTime);\r\n inactTime = setTimeout(inactiveAlert, 120000);\r\n }\r\n\r\n function startPercisionTimer(prevTime) {\r\n if (timerRunning) {\r\n clearTimer();\r\n } else {\r\n docTimerMutationObserver();\r\n }\r\n\r\n let start;\r\n timerRunning = true;\r\n startBtn = document.getElementById('cnTimerStart');\r\n startBtn.dataset.toggled = 'true';\r\n\r\n if (prevTime) {\r\n const prevTimeMS = parseInt(prevTime) * 1000; // convert to ms\r\n start = Date.now() - prevTimeMS;\r\n } else {\r\n start = Date.now();\r\n }\r\n\r\n inactivityTime();\r\n\r\n timer = setInterval(function () {\r\n const deltaMS = Date.now() - start; // milliseconds elapsed since startm\r\n const deltaS = Math.floor(deltaMS / 1000);\r\n runningTime = deltaS;\r\n const newMinutes = Math.round(Math.floor(runningTime / 30) / 2);\r\n if (newMinutes !== minutes) {\r\n minutes = newMinutes;\r\n const minArea = document.getElementById('docTimeMinutesDisplay');\r\n minArea.value = minutes;\r\n }\r\n }, 1000);\r\n\r\n window.onload = resetInactivityTimer;\r\n document.onmousemove = resetInactivityTimer;\r\n document.onkeypress = resetInactivityTimer;\r\n }\r\n\r\n function stopTimer() {\r\n if (docTimerMutationObserver.disconnect) docTimerMutationObserver.disconnect();\r\n timerRunning = false;\r\n startBtn = document.getElementById('cnTimerStart');\r\n startBtn.dataset.toggled = 'false';\r\n saveTime = runningTime;\r\n clearTimer();\r\n return saveTime;\r\n }\r\n\r\n function docTimerMutationObserver() {\r\n const observNode = document.getElementById('actioncenter');\r\n const config = { attributes: true };\r\n const callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n clearTimer();\r\n timerRunning = false;\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n\r\n function disconnect() {\r\n observer.disconnect();\r\n }\r\n\r\n observer.observe(observNode, config);\r\n docTimerMutationObserver.disconnect = disconnect;\r\n }\r\n\r\n return {\r\n startTimer: startPercisionTimer,\r\n stopTimer,\r\n };\r\n})();\r\n","const cnEditPhrases = (function() {\r\n //DOM\r\n let cardBody;\r\n let shortcutInput;\r\n let phraseInput;\r\n let pubCheckbox;\r\n let saveBtn;\r\n\r\n function buildCard() {\r\n let cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"card__header\");\r\n cardHeader.innerHTML = \"Edit My Phrases\";\r\n\r\n cardBody = document.createElement(\"div\");\r\n cardBody.classList.add(\"card__body\");\r\n\r\n let card = document.createElement(\"div\");\r\n card.classList.add(\"card\", \"editPhrases\");\r\n\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n DOM.ACTIONCENTER.appendChild(card);\r\n }\r\n\r\n function buildInputs() {\r\n shortcutInput = input.build({\r\n label: \"Shortcut\",\r\n style: \"secondary\",\r\n charLimit: 10\r\n });\r\n phraseInput = input.build({\r\n label: \"Phrase\",\r\n type: \"textarea\",\r\n style: \"secondary\"\r\n });\r\n pubCheckbox = input.buildCheckbox({\r\n text: \"Publicly Available\"\r\n });\r\n saveBtn = button.build({\r\n id: \"phraseEditSaveBtn\",\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: savePhrase\r\n });\r\n saveBtn.classList.add(\"disabled\")\r\n\r\n let cancelBtn = button.build({\r\n id: \"phraseEditCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: caseNotes.load\r\n });\r\n\r\n shortcutInput.classList.add(\"error\")\r\n phraseInput.classList.add(\"error\")\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n\r\n cardBody.appendChild(shortcutInput);\r\n cardBody.appendChild(phraseInput);\r\n cardBody.appendChild(pubCheckbox);\r\n cardBody.appendChild(btnWrap);\r\n eventListeners()\r\n }\r\n\r\n function eventListeners() {\r\n shortcutInput.addEventListener(\"keyup\", event => {\r\n if (event.target.value.length > 10 || event.target.value.length === 0) {\r\n shortcutInput.classList.add(\"error\")\r\n } else shortcutInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n shortcutInput.addEventListener(\"paste\", event => {\r\n if ((event.target.value.length + event.clipboardData.getData(\"text/plain\").length) > 10){\r\n shortcutInput.classList.add(\"error\")\r\n } else shortcutInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n phraseInput.addEventListener(\"keyup\", event => {\r\n if (event.target.value.length === 0) {\r\n phraseInput.classList.add(\"error\")\r\n } else phraseInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n }\r\n\r\n function checkForError() {\r\n errors = document.querySelectorAll(\".error\");\r\n if (errors.length !== 0) {\r\n saveBtn.classList.add(\"disabled\")\r\n } else saveBtn.classList.remove(\"disabled\")\r\n }\r\n\r\n function savePhrase() {\r\n pendingSave.show(\"Saving Phrase...\")\r\n \r\n shortcut = UTIL.removeUnsavableNoteText(shortcutInput.querySelector(\".input-field__input\").value)\r\n phrase = UTIL.removeUnsavableNoteText(phraseInput.querySelector(\".input-field__input\").value)\r\n makePublic = pubCheckbox.getElementsByTagName(\"input\")[0].checked ? \"Y\" : \"N\";\r\n\r\n caseNotesAjax.insertCustomPhrases(shortcut, phrase, makePublic, res => {\r\n pendingSave.fulfill();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n caseNotes.load() \r\n }, 1000);\r\n })\r\n }\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n buildCard();\r\n buildInputs();\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const CFEditAccount = (() => {\r\n //Inputs\r\n let CFConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n\r\n //filter\r\n let accountId = '0';\r\n let BtnName;\r\n let page;\r\n let load;\r\n let IsDisabledAccount = false;\r\n let accountPermission;\r\n let tempAccountPer;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n page = 'Update';\r\n load = 1;\r\n account = '';\r\n accountId = '0';\r\n await loadCFEditLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build OOD Module Landing Page \r\n async function loadCFEditLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n getaccountPermission();\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[selectedConsumers.length - 1].FullName;\r\n\r\n const resultAccount = await ConsumerFinancesAjax.getEditAccountAsync(selectedConsumersId, accountPermission);\r\n const { getEditAccountResult } = resultAccount;\r\n if (getEditAccountResult.length > 0 && load == 1) {\r\n account = getEditAccountResult[0].accountName;\r\n accountId = getEditAccountResult[0].accountId;\r\n }\r\n\r\n if (page == 'Update') {\r\n const topButton = buildHeaderButton();\r\n landingPage.appendChild(topButton);\r\n border = document.createElement('div');\r\n border.classList.add('borderLine');\r\n landingPage.appendChild(LineBr);\r\n landingPage.appendChild(LineBr);\r\n landingPage.appendChild(border);\r\n landingPage.appendChild(LineBr);\r\n }\r\n\r\n const importantAccountForm = await buildAccountForm();\r\n landingPage.appendChild(importantAccountForm);\r\n populateAccountDropdown();\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton() {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n CFConsumerBtns = buildButtonBar();\r\n consumerRow.appendChild(CFConsumerBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n // build display of \"New Account\" \r\n function buildButtonBar() {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const dropdownButtonBar = document.createElement('div');\r\n const entryButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '40%';\r\n entryButtonBar.style.width = '32%';\r\n\r\n accountDropdown = dropdown.build({\r\n label: \"Accounts:\",\r\n dropdownId: \"accountDropdown\",\r\n });\r\n\r\n accountDropdown.addEventListener('change', event => {\r\n accountId = event.target.value;\r\n account = event.target.options[event.target.selectedIndex].id;\r\n page = 'Update';\r\n load = 2;\r\n loadCFEditLanding();\r\n });\r\n\r\n const entryBtn = button.build({\r\n text: 'ADD ACCOUNT',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newEntryBtn',\r\n readonly: $.session.CFInsertAccounts,\r\n callback: async () => {\r\n if (!entryBtn.classList.contains('disabled')) {\r\n page = 'Add';\r\n loadCFEditLanding();\r\n }\r\n },\r\n });\r\n if ($.session.CFInsertAccounts) {\r\n entryBtn.classList.remove('disabled');\r\n }\r\n else {\r\n entryBtn.classList.add('disabled');\r\n }\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%';\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '10%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(entryButtonBar);\r\n return buttonBar;\r\n }\r\n\r\n async function buildAccountForm() {\r\n disabledEnabledAccounts();\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n name = '';\r\n number = '';\r\n type = '';\r\n status = '';\r\n classofAccount = null;\r\n dateClosed = null;\r\n lastReconciled = '';\r\n openingBalance = '';\r\n balance = '';\r\n description = '';\r\n dateOpened = null;\r\n\r\n nameTemp = '';\r\n numberTemp = '';\r\n typeTemp = '';\r\n statusTemp = '';\r\n classofAccountTemp = '';\r\n dateOpenedTemp = '';\r\n dateClosedTemp = '';\r\n openingBalanceTemp = '';\r\n descriptionTemp = '';\r\n\r\n if (page == 'Update') {\r\n if (accountId != '' && accountId != '0') {\r\n const result = await ConsumerFinancesAjax.getEditAccountInfoByIdAsync(accountId);\r\n const { getEditAccountInfoByIdResult } = result;\r\n name = getEditAccountInfoByIdResult[0].name;\r\n number = getEditAccountInfoByIdResult[0].number;\r\n type = getEditAccountInfoByIdResult[0].type;\r\n status = getEditAccountInfoByIdResult[0].status;\r\n classofAccount = getEditAccountInfoByIdResult[0].classofAccount;\r\n dateOpened = getEditAccountInfoByIdResult[0].dateOpened == '' ? null : moment(getEditAccountInfoByIdResult[0].dateOpened).format('YYYY-MM-DD');\r\n dateClosed = getEditAccountInfoByIdResult[0].dateClosed == '' ? null : moment(getEditAccountInfoByIdResult[0].dateClosed).format('YYYY-MM-DD');\r\n lastReconciled = getEditAccountInfoByIdResult[0].lastReconciled == '' ? null : moment(getEditAccountInfoByIdResult[0].lastReconciled).format('YYYY-MM-DD');\r\n openingBalance = getEditAccountInfoByIdResult[0].openingBalance;\r\n balance = getEditAccountInfoByIdResult[0].balance;\r\n description = getEditAccountInfoByIdResult[0].description;\r\n }\r\n else {\r\n account = '';\r\n }\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n BtnName = 'SAVE';\r\n dateOpened = UTIL.getTodaysDate();\r\n accountId = '0';\r\n account = '';\r\n }\r\n\r\n inputName = input.build({\r\n id: 'inputName',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (name) ? name : '',\r\n });\r\n inputNumber = input.build({\r\n id: 'inputNumber',\r\n type: 'number',\r\n label: 'Number',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (number) ? number : '',\r\n });\r\n typeDropdown = dropdown.build({\r\n id: 'typeDropdown',\r\n label: \"Type\",\r\n dropdownId: \"typeDropdown\",\r\n readonly: IsDisabledAccount,\r\n value: (type) ? type : '',\r\n });\r\n statusDropdown = dropdown.build({\r\n id: 'statusDropdown',\r\n label: \"Status\",\r\n dropdownId: \"statusDropdown\",\r\n readonly: IsDisabledAccount,\r\n value: (status) ? status : '',\r\n });\r\n classDropdown = dropdown.build({\r\n id: 'classDropdown',\r\n label: \"Class\",\r\n dropdownId: \"classDropdown\",\r\n readonly: IsDisabledAccount,\r\n value: (classofAccount) ? classofAccount : '',\r\n });\r\n opendDate = input.build({\r\n id: 'opendDate',\r\n type: 'date',\r\n label: 'Date Opened',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (dateOpened) ? dateOpened : '',\r\n });\r\n closeDate = input.build({\r\n id: 'closeDate',\r\n type: 'date',\r\n label: 'Date Closed',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (dateClosed) ? dateClosed : '',\r\n });\r\n lastReconciledDate = input.build({\r\n id: 'lastReconciledDate',\r\n type: 'date',\r\n label: 'Last Reconciled',\r\n style: 'secondary',\r\n readonly: true,\r\n value: (lastReconciled) ? lastReconciled : '',\r\n });\r\n inputOpeningBal = input.build({\r\n id: 'inputOpeningBal',\r\n type: 'text',\r\n label: 'Opening Balance',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (openingBalance) ? '$' + openingBalance : '',\r\n });\r\n inputBal = input.build({\r\n id: 'inputBal',\r\n type: 'text',\r\n label: 'Balance',\r\n style: 'secondary',\r\n readonly: true,\r\n value: (balance) ? '$' + balance : '',\r\n });\r\n\r\n inputDesc = input.build({\r\n id: 'inputDesc',\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (description) ? description : '',\r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n readonly: IsDisabledAccount,\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateAccount();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { cancleAccount() },\r\n });\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n if (page == 'Add') {\r\n addNewCard.innerHTML = `
${selectedConsumersName}
`;\r\n }\r\n else {\r\n addNewCard.innerHTML = `
${selectedConsumersName}
Account : ${account}
`;\r\n }\r\n\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('editAccountDTWrap');\r\n inputName.classList.add('width23Per');\r\n drWrap.appendChild(inputName);\r\n inputNumber.classList.add('width23Per');\r\n drWrap.appendChild(inputNumber);\r\n typeDropdown.classList.add('width16Per');\r\n drWrap.appendChild(typeDropdown);\r\n statusDropdown.classList.add('width16Per');\r\n drWrap.appendChild(statusDropdown);\r\n classDropdown.classList.add('width16Per');\r\n drWrap.appendChild(classDropdown);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n var drWrap1 = document.createElement('div');\r\n drWrap1.classList.add('editAccountDTWrap');\r\n drWrap1.classList.add('width50Per');\r\n opendDate.classList.add('width32Per');\r\n drWrap1.appendChild(opendDate);\r\n inputOpeningBal.classList.add('width32Per');\r\n drWrap1.appendChild(inputOpeningBal);\r\n closeDate.classList.add('width32Per');\r\n drWrap1.appendChild(closeDate);\r\n addNewCardBody.appendChild(drWrap1);\r\n\r\n var drWrap2 = document.createElement('div');\r\n drWrap2.classList.add('editAccountDTWrap');\r\n drWrap2.classList.add('width33Per');\r\n\r\n lastReconciledDate.classList.add('width50Per');\r\n drWrap2.appendChild(lastReconciledDate);\r\n inputBal.classList.add('width50Per');\r\n drWrap2.appendChild(inputBal);\r\n //addNewCardBody.appendChild(drWrap2); //Due to new requirenment hide reconciled and opening balance \r\n\r\n var drWrap3 = document.createElement('div');\r\n drWrap3.classList.add('editAccountDTWrap');\r\n inputDesc.classList.add('width50Per');\r\n drWrap3.appendChild(inputDesc);\r\n addNewCardBody.appendChild(drWrap3);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('editAccountBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateDropdown();\r\n eventListeners();\r\n\r\n checkRequiredFieldsOfAccountInfo(name, type, status, dateOpened, dateClosed);\r\n return employeeInfoDiv;\r\n }\r\n\r\n\r\n function disabledEnabledAccounts() {\r\n if ($.session.CFUpdateEditAccounts && page == 'Update') {\r\n IsDisabledAccount = false;\r\n }\r\n else if ($.session.CFInsertAccounts && page == 'Add') {\r\n IsDisabledAccount = false;\r\n }\r\n else {\r\n IsDisabledAccount = true;\r\n }\r\n }\r\n // Populate the Account DDL\r\n async function populateAccountDropdown() {\r\n const {\r\n getEditAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getEditAccountAsync(selectedConsumersId, accountPermission);\r\n\r\n let dataAccount = accounts.map((account) => ({\r\n id: account.accountName,\r\n value: account.accountId,\r\n text: account.accountName + ' - $' + (account.totalBalance == '' ? '0.00' : account.totalBalance)\r\n }));\r\n dropdown.populate(\"accountDropdown\", dataAccount, accountId);\r\n }\r\n\r\n async function populateDropdown() {\r\n const {\r\n getAccountClassResult: classAccount,\r\n } = await ConsumerFinancesAjax.getAccountClassAsync();\r\n let dataClass = classAccount.map((accountClass) => ({\r\n id: accountClass.SystemClass,\r\n value: accountClass.accountClass,\r\n text: accountClass.accountClass\r\n }));\r\n dataClass.unshift({ id: null, value: '', text: '' }); //ADD Blank value \r\n dropdown.populate(\"classDropdown\", dataClass, classofAccount);\r\n\r\n const typeData = ([\r\n { id: 1, value: 'A', text: 'Asset ' },\r\n { id: 2, value: 'L', text: 'Liability' },\r\n ]);\r\n typeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeDropdown\", typeData, type);\r\n\r\n const statusData = ([\r\n { id: 1, value: 'O', text: 'Open' },\r\n { id: 2, value: 'I', text: 'Inactive' },\r\n { id: 3, value: 'C', text: 'Closed' },\r\n ]);\r\n statusData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"statusDropdown\", statusData, status);\r\n }\r\n\r\n function eventListeners() {\r\n inputName.addEventListener('input', event => {\r\n nameTemp = 'Changed';\r\n name = event.target.value.trim();\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputNumber.addEventListener('input', event => {\r\n numberTemp = 'Changed';\r\n number = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n opendDate.addEventListener('input', event => {\r\n dateOpenedTemp = 'Changed';\r\n dateOpened = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n closeDate.addEventListener('input', event => {\r\n dateClosedTemp = 'Changed';\r\n dateClosed = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputDesc.addEventListener('input', event => {\r\n descriptionTemp = 'Changed';\r\n description = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputOpeningBal.addEventListener('input', event => {\r\n let minAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount) && minAmount != '') {\r\n document.getElementById('inputOpeningBal').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n else if (minAmount.includes('.') && (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('inputOpeningBal').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n openingBalance = minAmount.replace('$', '');\r\n openingBalanceTemp = 'Changed';\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n typeTemp = 'Changed';\r\n type = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n statusTemp = 'Changed';\r\n status = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n classDropdown.addEventListener('change', event => {\r\n classofAccountTemp = 'Changed';\r\n classofAccount = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n }\r\n\r\n\r\n function getRequiredFieldsOfAccountInfo() {\r\n var openDateVal = opendDate.querySelector('#opendDate');\r\n var closeDateVal = closeDate.querySelector('#closeDate');\r\n var nameVal = inputName.querySelector('#inputName');\r\n var typeVal = typeDropdown.querySelector('#typeDropdown');\r\n var statusVal = statusDropdown.querySelector('#statusDropdown');\r\n checkRequiredFieldsOfAccountInfo(nameVal.value, typeVal.value, statusVal.value, openDateVal.value, closeDateVal.value)\r\n }\r\n\r\n function checkRequiredFieldsOfAccountInfo(nameVal, typeVal, statusVal, openDateVal, closeDateVal) {\r\n if (nameVal.trim() === '') {\r\n inputName.classList.add('error');\r\n } else {\r\n inputName.classList.remove('error');\r\n }\r\n\r\n if (typeVal === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (statusVal === '') {\r\n statusDropdown.classList.add('error');\r\n } else {\r\n statusDropdown.classList.remove('error');\r\n }\r\n\r\n if (openDateVal === '') {\r\n opendDate.classList.add('error');\r\n } else {\r\n opendDate.classList.remove('error');\r\n }\r\n\r\n if (closeDateVal != null && closeDateVal != '' && openDateVal > closeDateVal) {\r\n closeDate.classList.add('error');\r\n }\r\n else {\r\n closeDate.classList.remove('error');\r\n }\r\n setBtnStatusOfAccountInfo();\r\n }\r\n\r\n function setBtnStatusOfAccountInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (nameTemp != '' || numberTemp != '' || typeTemp != '' || statusTemp != '' || classofAccountTemp != '' || dateOpenedTemp != '' || dateClosedTemp != '' || openingBalanceTemp != '' || descriptionTemp != '') {\r\n if (accountId == '0' && page == 'Update') {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function cancleAccount() {\r\n if (page == 'Add') {\r\n page = 'Update';\r\n load = 1;\r\n loadCFEditLanding();\r\n } else {\r\n roster2.clearSelectedConsumers();\r\n roster2.clearActiveConsumers();\r\n CFEditAccount.init();\r\n }\r\n }\r\n\r\n async function saveUpdateAccount() {\r\n if (page == 'Add') {\r\n accountId = '0';\r\n }\r\n\r\n if (dateClosed == '')\r\n dateClosed = null;\r\n const result = await ConsumerFinancesAjax.insertEditRegisterAccountAsync(selectedConsumersId, accountId, name, number == '' ? null : number, type, status, classofAccount == '' ? null : classofAccount, dateOpened, dateClosed, openingBalance, description == '' ? null : description);\r\n const { insertEditRegisterAccountResult } = result;\r\n if (insertEditRegisterAccountResult.accountId != null) {\r\n page = 'Update';\r\n loadCFEditLanding();\r\n }\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('CFEditAccount');\r\n DOM.clearActionCenter();\r\n let defaultCFLocation = defaults.getLocation('moneyManagement');\r\n if (defaultCFLocation === '') {\r\n defaults.setLocation('moneyManagement', 0);\r\n defaultCFLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultCFLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n roster2.showMiniRoster();\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT');\r\n }\r\n\r\n if (tempAccountPer.length > 0) {\r\n accountPermission = tempAccountPer.toString();\r\n }\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadCFEditLanding,\r\n };\r\n})(); \r\n","const consumerFinanceAttachment = (() => {\r\n let attachments = [];\r\n class ConsumerFinanceAttachment {\r\n\r\n constructor(header, regId, IsDisabled, attachID) {\r\n this.attachmentsForQuestion = header;\r\n this.regId = regId;\r\n this.IsDisabledBtn = IsDisabled;\r\n this.attachID = attachID;\r\n }\r\n\r\n buildAttachmentButton() {\r\n const attachmentButton = button.build({\r\n id: `attachConsumer`,\r\n text: `ATTACHMENTS (${this.attachmentsForQuestion.length})`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n this.attachmentPopup();\r\n },\r\n });\r\n\r\n attachmentButton.classList.add('attachmentBtn');\r\n if (this.attachmentsForQuestion.length > 0)\r\n attachmentButton.classList.add('hasAttachments');\r\n\r\n return attachmentButton;\r\n }\r\n\r\n attachmentPopup() {\r\n const regId = this.regId;\r\n const attachmentsForQuestion = this.attachmentsForQuestion;\r\n const attachmentsToDelete = [];\r\n const attachmentsAdded = [];\r\n\r\n // Adds attachments to the existing attachments section in popup\r\n function populateExistingAttachments() {\r\n\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n\r\n attachmentsForQuestion.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentID);\r\n fileContainer.setAttribute('delete', false);\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n ConsumerFinancesAjax.viewCFAttachment(attachmentId, '');\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n // CB for clicking the delete button on attachments in existing attachment section\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(\r\n attachment => attachment !== attachmentId,\r\n );\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n // checks file is a valid type\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n // CB for clicking the add attachment button. doesn't do anything if they haven't yet chosen an\r\n // attachment for existing add attachment input.\r\n function addNewAttachment() {\r\n\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer\r\n .getElementsByTagName('input')[0]\r\n .addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n // CB for Done Button\r\n async function saveAction() {\r\n async function saveAttachmentsToDB() {\r\n const attachmentSaveArray = [];\r\n if (attachmentArray.length === 0) return;\r\n\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n attachmentType: attachment.type,\r\n attachment: attachment.arrayBuffer,\r\n regId: regId,\r\n };\r\n\r\n ConsumerFinancesAjax.addCFAttachment(saveData).then(res => resolve(res));\r\n });\r\n attachmentSaveArray.push(saveProm);\r\n });\r\n\r\n const attSaveRes = await Promise.all(attachmentSaveArray);\r\n let count = 0;\r\n attSaveRes.forEach(att => {\r\n attachmentsAdded.push(att);\r\n });\r\n attachmentArray.forEach(att => {\r\n att.attachmentID = attSaveRes[count];\r\n attachments.push(att);\r\n count++;\r\n });\r\n\r\n }\r\n // DELETE ATTACHMENTS\r\n attachmentsToDelete.forEach(attachment => {\r\n ConsumerFinancesAjax.deleteCFAttachment(attachment);\r\n });\r\n\r\n // ADD ATTACHMENTS\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n console.log('no attachments to add');\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n attachmentObj.attachmentID = 0;\r\n attachmentObj.registerID = 0;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n await Promise.all(attachmentProms);\r\n await saveAttachmentsToDB();\r\n\r\n POPUP.hide(popup);\r\n //NewEntryCF.buildNewEntryForm(regId, attachmentsForQuestion, attachmentsAdded) \r\n }\r\n //===========================================\r\n //===========================================\r\n\r\n const popup = POPUP.build({\r\n header: this.header,\r\n id: 'planAttachmentPopup',\r\n });\r\n\r\n const addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: () => {\r\n if (!addAttachmentBtn.classList.contains('disabled')) {\r\n addNewAttachment(); \r\n }\r\n },\r\n });\r\n addAttachmentBtn.type = 'button';\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n try {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n await saveAction();\r\n await this.cleanAttachmentLists(attachmentsAdded, attachmentsToDelete);\r\n } \r\n } catch (error) {\r\n pendingSave.reject('Error saving attachment changes');\r\n setTimeout(() => {\r\n failSave.hide(false);\r\n popup.style.removeProperty('display');\r\n }, 2000);\r\n console.error(error);\r\n }\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n if (this.IsDisabledBtn == true) {\r\n removeAttachmentBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n addAttachmentBtn.classList.add('disabled');\r\n }\r\n else {\r\n removeAttachmentBtn.classList.remove('disabled');\r\n saveBtn.classList.remove('disabled');\r\n addAttachmentBtn.classList.remove('disabled');\r\n }\r\n\r\n const reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n const newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', evt => fileValidation(evt.target));\r\n\r\n let attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n const attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n popup.appendChild(addAttachmentBtn);\r\n btnWrap.appendChild(saveBtn);\r\n\r\n\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n if (attachmentsForQuestion.length > 0) populateExistingAttachments();\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n /**\r\n * Gets the attachment button element\r\n * @return {HTMLButtonElement} Attachment Button Element\r\n */\r\n get attachmentButton() {\r\n return this.buildAttachmentButton();\r\n }\r\n\r\n cleanAttachmentLists(attachmentsToAdd, attachmentsToRemove) {\r\n if (attachmentsToRemove.length > 0) {\r\n attachments = this.attachmentsForQuestion;\r\n }\r\n attachmentsToRemove.forEach(attId => {\r\n attachments.forEach(attach => {\r\n if (attach.attachmentID == attId) {\r\n const index = attachments.indexOf(attach);\r\n attachments.splice(index, 1)\r\n this.attachmentsForQuestion = attachments;\r\n }\r\n });\r\n });\r\n\r\n attachmentsToAdd.forEach(attId => {\r\n attachments.forEach(attach => {\r\n let isAttacExist = this.attachmentsForQuestion.filter(a => a.attachmentID === attId);\r\n if (attach.attachmentID == attId && isAttacExist.length == 0) {\r\n this.attachmentsForQuestion.push(attach);\r\n }\r\n });\r\n });\r\n\r\n\r\n const attachmentBtn = document.getElementById(`attachConsumer`);\r\n attachmentBtn.innerText = `ATTACHMENTS (${this.attachmentsForQuestion.length})`;\r\n\r\n if (this.attachmentsForQuestion.length > 0) {\r\n attachmentBtn.classList.add('hasAttachments');\r\n } else {\r\n attachmentBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n NewEntryCF.buildNewEntryForm(this.regId, this.attachmentsForQuestion, attachmentsToAdd, false)\r\n }\r\n }\r\n\r\n async function getConsumerFinanceAttachments(regID) {\r\n attachments = [];\r\n const retData = {\r\n token: $.session.Token,\r\n regId: regID,\r\n };\r\n const res = await ConsumerFinancesAjax.getCFAttachmentsList(retData);\r\n res.forEach(attachment => {\r\n attachments.push(attachment);\r\n });\r\n return attachments;\r\n }\r\n\r\n return {\r\n ConsumerFinanceAttachment,\r\n getConsumerFinanceAttachments,\r\n };\r\n})();\r\n","const ConsumerFinances = (() => {\r\n //Inputs \r\n let ConsumerFinanceEntriesTable = [];\r\n let CFConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let accountDropdown;\r\n let filterValues;\r\n let btnWrap;\r\n let activityStartDateBtnWrap;\r\n let activityEndDateBtnWrap;\r\n let minamountBtnWrap;\r\n let maxamountBtnWrap;\r\n let transectionTypeBtnWrap;\r\n let accountNameBtnWrap;\r\n let payeeBtnWrap;\r\n let categoryBtnWrap;\r\n let enteredByBtnWrap;\r\n let isattachmentBtnWrap;\r\n let accountPermission;\r\n let tempAccountPer;\r\n\r\n //service filter options\r\n let selectedConsumerIds;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n filterValues = undefined;\r\n await loadConsumerFinanceLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build Consumer Finance Module Landing Page \r\n async function loadConsumerFinanceLanding(value) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (value) {\r\n filterValues.accountName = value;\r\n }\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n landingPage = document.createElement('div'); \r\n if (selectedConsumers != undefined) {\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n $.session.consumerId = selectedConsumersId;\r\n } else {\r\n dashboard.load();\r\n return; \r\n }\r\n \r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n getaccountPermission();\r\n\r\n selectedConsumersName = name[0].FullName;\r\n const topButton = buildHeaderButton(selectedConsumers[0]);\r\n landingPage.appendChild(topButton);\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n landingPage.appendChild(filterRow);\r\n ConsumerFinanceEntriesTable = await buildConsumerFinanceEntriesTable(filterValues);\r\n landingPage.appendChild(ConsumerFinanceEntriesTable);\r\n populateAccountDropdown();\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT');\r\n }\r\n\r\n if (tempAccountPer.length > 0) {\r\n accountPermission = tempAccountPer.toString();\r\n }\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildConsumerFinanceEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: selectedConsumersName,\r\n columnHeadings: ['Date', 'Account', 'Payee', 'Category', 'Amount', 'Check No.', 'Balance', 'Entered By'],\r\n endIcon: true,\r\n };\r\n\r\n selectedConsumerIds = selectedConsumers.map(function (x) { return x.id });\r\n let ConsumerFinancesEntries = await ConsumerFinancesAjax.getAccountTransectionEntriesAsync(\r\n selectedConsumerIds.join(\", \"),\r\n filterValues.activityStartDate,\r\n filterValues.activityEndDate,\r\n filterValues.accountName,\r\n filterValues.payee,\r\n filterValues.category,\r\n filterValues.minamount,\r\n filterValues.maxamount,\r\n filterValues.checkNo,\r\n filterValues.Balance,\r\n filterValues.enteredBy,\r\n filterValues.isattachment,\r\n filterValues.transectionType,\r\n accountPermission,\r\n );\r\n\r\n ConsumerFinancesEntries.getAccountTransectionEntriesResult.forEach(function (entry) {\r\n let newDate = new Date(entry.activityDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatActivityDate = UTIL.leadingZero(theMonth) + '/' + UTIL.leadingZero(newDate.getDate()) + '/' + newDate.getFullYear();\r\n entry.activityDate = formatActivityDate;\r\n });\r\n\r\n let tableData = ConsumerFinancesEntries.getAccountTransectionEntriesResult.map((entry) => ({\r\n values: [entry.activityDate, entry.account, entry.payee, entry.category, '$' + entry.amount, entry.checkno, '$' + entry.balance, entry.enteredby],\r\n attributes: [{ key: 'registerId', value: entry.ID }, { key: 'data-plan-active', value: entry.isExpance }],\r\n onClick: (e) => {\r\n handleAccountTableEvents(e.target.attributes.registerId.value)\r\n },\r\n endIcon: entry.AttachmentsID == 0 ? `${icons['Empty']}` : `${icons['attachmentSmall']}`,\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(registerId) {\r\n NewEntryCF.buildNewEntryForm(registerId);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n CFConsumerBtns = buildButtonBar(consumer);\r\n consumerRow.appendChild(CFConsumerBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const dropdownButtonBar = document.createElement('div');\r\n const entryButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '49%';\r\n entryButtonBar.style.width = '49%';\r\n\r\n accountDropdown = dropdown.build({\r\n label: \"Accounts:\",\r\n dropdownId: \"accountDropdown\",\r\n });\r\n\r\n accountDropdown.addEventListener('change', event => {\r\n filterValues.accountName = event.target.value;\r\n loadConsumerFinanceLanding(filterValues.accountName);\r\n });\r\n\r\n const entryBtn = button.build({\r\n text: '+ New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newEntryBtn',\r\n callback: async () => { NewEntryCF.init() },\r\n });\r\n if ($.session.CFInsert) {\r\n entryBtn.classList.remove('disabled');\r\n }\r\n else {\r\n entryBtn.classList.add('disabled');\r\n }\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%';\r\n\r\n buildNewFilterBtn();\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '2%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(entryButtonBar);\r\n return buttonBar;\r\n }\r\n\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n activityStartDate: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n activityEndDate: UTIL.getTodaysDate(),\r\n accountName: '%',\r\n payee: '%',\r\n category: '%',\r\n minamount: '-10000.00',\r\n maxamount: '10000.00',\r\n checkNo: '',\r\n Balance: '',\r\n enteredBy: '%',\r\n isattachment: '%',\r\n transectionType: '%',\r\n }\r\n }\r\n\r\n // Populate the Account DDL \r\n async function populateAccountDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync(selectedConsumersId, accountPermission);\r\n let data = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName + ' - $' + (account.totalBalance == '' ? '0.00' : account.totalBalance)\r\n }));\r\n if (data.length > 0)\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate(\"accountDropdown\", data, filterValues.accountName);\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.transectionType === '%' || filterValues.transectionType === 'ALL') {\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n btnWrap.removeChild(transectionTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n }\r\n\r\n if (filterValues.accountName === '%' || filterValues.accountName === 'ALL') {\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n btnWrap.removeChild(accountNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n }\r\n\r\n if (filterValues.payee === '%' || filterValues.payee === 'ALL') {\r\n btnWrap.appendChild(payeeBtnWrap);\r\n btnWrap.removeChild(payeeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(payeeBtnWrap);\r\n }\r\n\r\n if (filterValues.category === '%' || filterValues.category === 'ALL') {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n btnWrap.removeChild(categoryBtnWrap);\r\n } else {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n }\r\n\r\n if (filterValues.enteredBy === '%' || filterValues.enteredBy === 'ALL') {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n btnWrap.removeChild(enteredByBtnWrap);\r\n } else {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n }\r\n if (filterValues.isattachment === '%' || filterValues.isattachment === 'ALL') {\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n btnWrap.removeChild(isattachmentBtnWrap);\r\n } else {\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n }\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n activityStartDateBtn = button.build({\r\n id: 'activityStartDateBtn',\r\n text: 'From Date: ' + moment(filterValues.activityStartDate, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('activityStartDateBtn') },\r\n });\r\n activityEndDateBtn = button.build({\r\n id: 'activityEndDateBtn',\r\n text: 'To date: ' + moment(filterValues.activityEndDate, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('activityEndDateBtn') },\r\n });\r\n minamountBtn = button.build({\r\n id: 'minamountBtn',\r\n text: 'Min Amount: $' + filterValues.minamount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('minamountBtn') },\r\n });\r\n maxamountBtn = button.build({\r\n id: 'maxamountBtn',\r\n text: 'Max Amount: $' + filterValues.maxamount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('maxamountBtn') },\r\n });\r\n transectionTypeBtn = button.build({\r\n id: 'transectionTypeBtn',\r\n text: filterValues.transectionType == 'false' ? 'Transaction Type: Deposit' : 'Transaction Type: Expense',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('transectionTypeBtn') },\r\n });\r\n transectionTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('transectionTypeBtn') },\r\n });\r\n accountNameBtn = button.build({\r\n id: 'accountNameBtn',\r\n text: 'Account: ' + filterValues.accountName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('accountNameBtn') },\r\n });\r\n accountNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('accountNameBtn') },\r\n });\r\n payeeBtn = button.build({\r\n id: 'payeeBtn',\r\n text: 'Payee: ' + filterValues.payee,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('payeeBtn') },\r\n });\r\n payeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('payeeBtn') },\r\n });\r\n categoryBtn = button.build({\r\n id: 'categoryBtn',\r\n text: 'Category: ' + filterValues.category,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('categoryBtn') },\r\n });\r\n categoryCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('categoryBtn') },\r\n });\r\n enteredByBtn = button.build({\r\n id: 'enteredByBtn',\r\n text: 'Last Updated By: ' + filterValues.userName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('enteredByBtn') },\r\n });\r\n enteredByCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('enteredByBtn') },\r\n });\r\n isattachmentBtn = button.build({\r\n id: 'isattachmentBtn',\r\n text: 'Has Attachment: ' + filterValues.isattachment,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('isattachmentBtn') },\r\n });\r\n isattachmentCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('isattachmentBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n activityStartDateBtnWrap = document.createElement('div');\r\n activityStartDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n activityStartDateBtnWrap.appendChild(activityStartDateBtn);\r\n btnWrap.appendChild(activityStartDateBtnWrap);\r\n\r\n activityEndDateBtnWrap = document.createElement('div');\r\n activityEndDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n activityEndDateBtnWrap.appendChild(activityEndDateBtn);\r\n btnWrap.appendChild(activityEndDateBtnWrap);\r\n\r\n minamountBtnWrap = document.createElement('div');\r\n minamountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n minamountBtnWrap.appendChild(minamountBtn);\r\n btnWrap.appendChild(minamountBtnWrap);\r\n\r\n maxamountBtnWrap = document.createElement('div');\r\n maxamountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n maxamountBtnWrap.appendChild(maxamountBtn);\r\n btnWrap.appendChild(maxamountBtnWrap);\r\n\r\n transectionTypeBtnWrap = document.createElement('div');\r\n transectionTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n transectionTypeBtnWrap.appendChild(transectionTypeBtn);\r\n transectionTypeBtnWrap.appendChild(transectionTypeCloseBtn);\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n\r\n accountNameBtnWrap = document.createElement('div');\r\n accountNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n accountNameBtnWrap.appendChild(accountNameBtn);\r\n accountNameBtnWrap.appendChild(accountNameCloseBtn);\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n\r\n payeeBtnWrap = document.createElement('div');\r\n payeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n payeeBtnWrap.appendChild(payeeBtn);\r\n payeeBtnWrap.appendChild(payeeCloseBtn);\r\n btnWrap.appendChild(payeeBtnWrap);\r\n\r\n categoryBtnWrap = document.createElement('div');\r\n categoryBtnWrap.classList.add('filterSelectionBtnWrap');\r\n categoryBtnWrap.appendChild(categoryBtn);\r\n categoryBtnWrap.appendChild(categoryCloseBtn)\r\n btnWrap.appendChild(categoryBtnWrap);\r\n\r\n enteredByBtnWrap = document.createElement('div');\r\n enteredByBtnWrap.classList.add('filterSelectionBtnWrap');\r\n enteredByBtnWrap.appendChild(enteredByBtn);\r\n enteredByBtnWrap.appendChild(enteredByCloseBtn);\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n\r\n isattachmentBtnWrap = document.createElement('div');\r\n isattachmentBtnWrap.classList.add('filterSelectionBtnWrap');\r\n isattachmentBtnWrap.appendChild(isattachmentBtn);\r\n isattachmentBtnWrap.appendChild(isattachmentCloseBtn);\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'transectionTypeBtn') {\r\n filterValues.transectionType = '%';\r\n }\r\n if (closeFilter == 'accountNameBtn') {\r\n filterValues.accountName = '%';\r\n }\r\n if (closeFilter == 'payeeBtn') {\r\n filterValues.payee = '%';\r\n }\r\n if (closeFilter == 'enteredByBtn') {\r\n filterValues.enteredBy = '%';\r\n }\r\n if (closeFilter == 'isattachmentBtn') {\r\n filterValues.isattachment = '%';\r\n }\r\n if (closeFilter == 'categoryBtn') {\r\n filterValues.category = '%';\r\n }\r\n loadConsumerFinanceLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n fromDateInput = input.build({\r\n id: 'fromDateInput',\r\n type: 'date',\r\n label: 'From Date',\r\n style: 'secondary',\r\n value: filterValues.activityStartDate,\r\n });\r\n\r\n toDateInput = input.build({\r\n id: 'toDateInput',\r\n type: 'date',\r\n label: 'To Date',\r\n style: 'secondary',\r\n value: filterValues.activityEndDate,\r\n });\r\n\r\n minAmountInput = input.build({\r\n id: 'minAmountInput',\r\n type: 'text',\r\n label: 'Min Amount',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.minamount) ? filterValues.minamount : ''),\r\n });\r\n\r\n maxAmountInput = input.build({\r\n id: 'maxAmountInput',\r\n type: 'text',\r\n label: 'Max Amount',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.maxamount) ? filterValues.maxamount : ''),\r\n });\r\n\r\n transectionTypeFilterDropdown = dropdown.build({\r\n label: \"Transaction Type\",\r\n dropdownId: \"transectionTypeFilterDropdown\",\r\n });\r\n\r\n accountFilterDropdown = dropdown.build({\r\n label: \"Account\",\r\n dropdownId: \"accountFilterDropdown\",\r\n });\r\n\r\n payeeDropdown = dropdown.build({\r\n id: 'payeeDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"payeeDropdown\",\r\n });\r\n\r\n categoryDropdown = dropdown.build({\r\n id: 'categoryDropdown',\r\n label: \"Category\",\r\n dropdownId: \"categoryDropdown\",\r\n });\r\n\r\n lastUpdateDropdown = dropdown.build({\r\n id: 'lastUpdateDropdown',\r\n label: \"Last Updated By\",\r\n dropdownId: \"lastUpdateDropdown\",\r\n });\r\n\r\n isAttachedDropdown = dropdown.build({\r\n id: 'isAttachedDropdown',\r\n label: \"Has Attachment?\",\r\n dropdownId: \"isAttachedDropdown\",\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'activityStartDateBtn')\r\n dateWrap.appendChild(fromDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'activityEndDateBtn')\r\n dateWrap.appendChild(toDateInput);\r\n\r\n var amountWrap = document.createElement('div');\r\n amountWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'minamountBtn')\r\n amountWrap.appendChild(minAmountInput);\r\n if (IsShow == 'ALL' || IsShow == 'maxamountBtn')\r\n amountWrap.appendChild(maxAmountInput);\r\n\r\n // build popup\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(amountWrap);\r\n if (IsShow == 'ALL' || IsShow == 'transectionTypeBtn')\r\n filterPopup.appendChild(transectionTypeFilterDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'accountNameBtn')\r\n filterPopup.appendChild(accountFilterDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'payeeBtn')\r\n filterPopup.appendChild(payeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'categoryBtn')\r\n filterPopup.appendChild(categoryDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'enteredByBtn')\r\n filterPopup.appendChild(lastUpdateDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'isattachmentBtn')\r\n filterPopup.appendChild(isAttachedDropdown);\r\n\r\n filterPopup.appendChild(btnWrap);\r\n eventListeners();\r\n populateFilterDropdown();\r\n POPUP.show(filterPopup);\r\n checkValidationOfFilter();\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n var tmpactivityStartDate;\r\n var tmpactivityEndDate;\r\n var tmpminAmount;\r\n var tmpmaxAmount;\r\n var tmpaccountName;\r\n var tmpenteredBy;\r\n var tmppayee;\r\n var tmpcategory;\r\n var tmpisattachment;\r\n var tmptransectionType;\r\n\r\n fromDateInput.addEventListener('change', event => {\r\n tmpactivityStartDate = event.target.value;\r\n checkValidationOfFilter();\r\n });\r\n toDateInput.addEventListener('change', event => {\r\n tmpactivityEndDate = event.target.value;\r\n checkValidationOfFilter();\r\n });\r\n\r\n minAmountInput.addEventListener('keyup', event => {\r\n minAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount)) {\r\n document.getElementById('minAmountInput').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n else if (minAmount.includes('.') && (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('minAmountInput').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n\r\n tmpminAmount = minAmount.trim().replace('$', '');\r\n tmpminAmount = parseFloat(tmpminAmount).toFixed(2);\r\n });\r\n\r\n maxAmountInput.addEventListener('keyup', event => {\r\n maxAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(maxAmount)) {\r\n document.getElementById('maxAmountInput').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n else if (maxAmount.includes('.') && (maxAmount.match(/\\./g).length > 1 || maxAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('maxAmountInput').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n tmpmaxAmount = maxAmount.trim().replace('$', ''); \r\n tmpmaxAmount = parseFloat(tmpmaxAmount).toFixed(2); \r\n });\r\n\r\n transectionTypeFilterDropdown.addEventListener('change', event => {\r\n tmptransectionType = event.target.value;\r\n });\r\n accountFilterDropdown.addEventListener('change', event => {\r\n tmpaccountName = event.target.value;\r\n });\r\n lastUpdateDropdown.addEventListener('change', event => {\r\n tmpenteredBy = event.target.options[event.target.selectedIndex].innerHTML == 'ALL' ? '%' : event.target.options[event.target.selectedIndex].id; //event.target.options[event.target.selectedIndex].innerHTML;\r\n filterValues.userName = event.target.options[event.target.selectedIndex].innerHTML;\r\n });\r\n payeeDropdown.addEventListener('change', event => {\r\n tmppayee = event.target.value;\r\n });\r\n categoryDropdown.addEventListener('change', event => {\r\n tmpcategory = event.target.value;\r\n });\r\n isAttachedDropdown.addEventListener('change', event => {\r\n tmpisattachment = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n updateFilterData({\r\n tmpactivityStartDate,\r\n tmpactivityEndDate,\r\n tmpminAmount,\r\n tmpmaxAmount,\r\n tmpaccountName,\r\n tmpenteredBy,\r\n tmppayee,\r\n tmpcategory,\r\n tmpisattachment,\r\n tmptransectionType\r\n });\r\n POPUP.hide(filterPopup);\r\n loadConsumerFinanceLanding();\r\n }\r\n });\r\n\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpactivityStartDate) filterValues.activityStartDate = data.tmpactivityStartDate;\r\n if (data.tmpactivityEndDate) filterValues.activityEndDate = data.tmpactivityEndDate;\r\n if (data.tmpminAmount) filterValues.minamount = data.tmpminAmount;\r\n if (data.tmpmaxAmount) filterValues.maxamount = data.tmpmaxAmount;\r\n if (data.tmpaccountName) filterValues.accountName = data.tmpaccountName;\r\n if (data.tmpenteredBy) filterValues.enteredBy = data.tmpenteredBy;\r\n if (data.tmppayee) filterValues.payee = data.tmppayee;\r\n if (data.tmpcategory) filterValues.category = data.tmpcategory;\r\n if (data.tmpisattachment) filterValues.isattachment = data.tmpisattachment;\r\n if (data.tmptransectionType) filterValues.transectionType = data.tmptransectionType;\r\n }\r\n\r\n function checkValidationOfFilter() {\r\n var fromDate = fromDateInput.querySelector('#fromDateInput');\r\n var toDate = toDateInput.querySelector('#toDateInput');\r\n\r\n if (fromDate.value > toDate.value) {\r\n toDateInput.classList.add('errorPopup');\r\n } else {\r\n toDateInput.classList.remove('errorPopup');\r\n }\r\n setBtnStatusOfFilter();\r\n }\r\n\r\n function setBtnStatusOfFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync(selectedConsumersId, accountPermission);\r\n let accountData = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName\r\n }));\r\n accountData.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate(\"accountFilterDropdown\", accountData, filterValues.accountName);\r\n\r\n const {\r\n getPayeesResult: Payees,\r\n } = await ConsumerFinancesAjax.getPayeesAsync($.session.consumerId);\r\n let payeeData = Payees.map((payees) => ({\r\n id: payees.CategoryID,\r\n value: payees.Description,\r\n text: payees.Description\r\n }));\r\n payeeData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"payeeDropdown\", payeeData, filterValues.payee);\r\n let categoryID;\r\n const {\r\n getCategoriesSubCategoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getCategoriesSubCategoriesAsync(categoryID);\r\n let categoryData = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryDescription,\r\n text: category.CategoryDescription\r\n }));\r\n categoryData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"categoryDropdown\", categoryData, filterValues.category);\r\n\r\n const {\r\n getActiveUsedByResult: employees,\r\n } = await ConsumerFinancesAjax.getActiveEmployeesAsync();\r\n let data = employees.map((employee) => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"lastUpdateDropdown\", data, filterValues.enteredBy);\r\n\r\n const condfidentialDropdownData = ([\r\n { text: 'Yes', value: 'Yes' },\r\n { text: 'No', value: 'No' },\r\n ]);\r\n condfidentialDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"isAttachedDropdown\", condfidentialDropdownData, filterValues.isattachment);\r\n\r\n const TransectionTypeDropdownData = ([\r\n { text: 'Deposit', value: 'false' },\r\n { text: 'Expense', value: 'true' },\r\n ]);\r\n TransectionTypeDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"transectionTypeFilterDropdown\", TransectionTypeDropdownData, filterValues.transectionType);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('ConsumerFinances');\r\n DOM.clearActionCenter();\r\n\r\n let defaultCFLocation = defaults.getLocation('moneyManagement');\r\n if (defaultCFLocation === '') {\r\n defaults.setLocation('moneyManagement', 0);\r\n defaultCFLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultCFLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadConsumerFinanceLanding,\r\n getaccountPermission,\r\n };\r\n})(); \r\n","var ConsumerFinancesAjax = (function () {\r\n // OOD Main/Landing Page\r\n async function getAccountTransectionEntriesAsync(consumerIds, activityStartDate, activityEndDate, accountName, payee, category, minamount, maxamount, checkNo, balance, enteredBy, isattachment, transectionType, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountTransectionEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"activityStartDate\":\"' +\r\n activityStartDate +\r\n '\", \"activityEndDate\":\"' +\r\n activityEndDate +\r\n '\", \"accountName\":\"' +\r\n accountName +\r\n '\", \"payee\":\"' +\r\n payee +\r\n '\", \"category\":\"' +\r\n category +\r\n '\", \"minamount\":\"' +\r\n minamount +\r\n '\", \"maxamount\":\"' +\r\n maxamount +\r\n '\", \"checkNo\":\"' +\r\n checkNo +\r\n '\", \"balance\":\"' +\r\n balance +\r\n '\", \"enteredBy\":\"' +\r\n enteredBy +\r\n '\", \"isattachment\":\"' +\r\n isattachment +\r\n '\", \"transectionType\":\"' +\r\n transectionType +\r\n '\", \"accountPermission\":\"' +\r\n accountPermission +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getActiveAccountAsync(ConsumersId, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n accountPermission: accountPermission,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPayeesAsync(ConsumersId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPayees/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCatogories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSubCategoriesAsync(Category) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSubCatogories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n category: Category,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getCategoriesSubCategoriesByPayeeAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCategoriesSubCategoriesByPayee/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertPayeeAsync(\r\n payeeName,\r\n payeeaddress1,\r\n payeeaddress2,\r\n payeecity,\r\n payeestate,\r\n payeezipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPayee/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n payeeName: payeeName,\r\n address1: payeeaddress1,\r\n address2: payeeaddress2,\r\n city: payeecity,\r\n state: payeestate,\r\n zipcode: payeezipcode,\r\n userId: $.session.UserId,\r\n consumerId: $.session.consumerId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertAccountAsync(\r\n date, amount, amountType, AccountID, payee, CategoryID, subCategory, checkNo, description, attachmentID, attachmentDesc, receipt, BtnName, regId, splitAmount, categoryID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n date: date,\r\n amount: amount,\r\n amountType: amountType,\r\n account: AccountID,\r\n payee: payee,\r\n category: CategoryID,\r\n subCategory: subCategory,\r\n checkNo: checkNo,\r\n description: description,\r\n attachmentId: attachmentID,\r\n attachmentDesc: attachmentDesc,\r\n receipt: receipt,\r\n userId: $.session.UserId,\r\n eventType: BtnName,\r\n regId: regId,\r\n splitAmount: splitAmount,\r\n categoryID: categoryID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getAccountEntriesByIDAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountEntriesById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"registerId\":\"' +\r\n registerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteConsumerFinanceAccountAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerFinanceAccount/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"registerId\":\"' +\r\n registerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getActiveEmployeesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveUsedBy/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function addCFAttachment(retrieveData) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addCFAttachment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addCFAttachmentResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function deleteCFAttachment(attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n attachmentId: attachmentId,\r\n };\r\n try {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCFAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deletePlanAttachmentResult;\r\n },\r\n });\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getCFAttachmentsList(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCFAttachmentsList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getCFAttachmentsListResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getConsumerNameByID(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerNameByID/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function viewCFAttachment(attachmentId, section) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCFAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', section);\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function getCategoriesSubCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCategoriesSubCategories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEditAccountInfoByIdAsync(accountId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditAccountInfoById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"accountId\":\"' +\r\n accountId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getAccountClassAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountClass/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEditRegisterAccountAsync(\r\n selectedConsumersId, accountId, name, number, type, status, classofAccount, dateOpened, dateClosed, openingBalance, description\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEditRegisterAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n selectedConsumersId: selectedConsumersId,\r\n accountId: accountId,\r\n name: name,\r\n number: number,\r\n type: type,\r\n status: status,\r\n classofAccount: classofAccount,\r\n dateOpened: dateOpened,\r\n dateClosed: dateClosed,\r\n openingBalance: openingBalance,\r\n description: description,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEditAccountAsync(ConsumersId, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n accountPermission: accountPermission,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSplitRegisterAccountEntriesByIDAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSplitRegisterAccountEntriesByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"registerId\":\"' +\r\n registerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSplitCategoriesSubCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSplitCategoriesSubCategories/', \r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getAccountTransectionEntriesAsync,\r\n getActiveAccountAsync,\r\n getPayeesAsync,\r\n getCategoriesAsync,\r\n getSubCategoriesAsync,\r\n getCategoriesSubCategoriesByPayeeAsync,\r\n insertPayeeAsync,\r\n insertAccountAsync,\r\n getAccountEntriesByIDAsync,\r\n deleteConsumerFinanceAccountAsync,\r\n getActiveEmployeesAsync,\r\n addCFAttachment,\r\n deleteCFAttachment,\r\n getCFAttachmentsList,\r\n getConsumerNameByID,\r\n viewCFAttachment,\r\n getCategoriesSubCategoriesAsync,\r\n getEditAccountInfoByIdAsync,\r\n getAccountClassAsync,\r\n insertEditRegisterAccountAsync,\r\n getEditAccountAsync,\r\n getSplitRegisterAccountEntriesByIDAsync,\r\n getSplitCategoriesSubCategoriesAsync\r\n };\r\n})();\r\n","const NewEntryCF = (() => {\r\n // dropdown and inputs declaration\r\n let newDateInput;\r\n let newAmountInput;\r\n let newAccountDropdown;\r\n let newPayeeDropdown;\r\n let ADD_NEW_PAYEE_BTN;\r\n let newCategoryDropdown;\r\n let newSubCategoryDropdown;\r\n let newCheckNoInput;\r\n let newDescriptionInput;\r\n let newReceiptInput;\r\n let NEW_SAVE_BTN;\r\n let NEW_CANCEL_BTN;\r\n\r\n let attachmentArray = [];\r\n let prevAttachmentArray = [];\r\n let attachmentId = [];\r\n let attachmentDesc = [];\r\n let categoryID;\r\n let Description;\r\n let BtnName;\r\n let regId;\r\n let IsDisabledBtn = false;\r\n let lastUpdateBy;\r\n let IsReconciled = 'N';\r\n let IsAddNewPayDisable = true;\r\n let IsSaveDisable = true;\r\n let IsDeleteDisable = true;\r\n let splitAmountInputN = [];\r\n let splitCategoryDropdownN = [];\r\n let splitDescriptionInputN = [];\r\n let categoryOldVal;\r\n let totalAmount;\r\n let regTotalAmount;\r\n let numberOfRows;\r\n let splitAmount = [];\r\n let splitTransPopup;\r\n let tempAmountval;\r\n let tempSplit;\r\n let tempAmouts;\r\n let totalAmountSaved;\r\n let accountPermission;\r\n let tempAccountPer;\r\n let pageName;\r\n\r\n async function init() {\r\n buildNewEntryForm(registerId = undefined, attachment = undefined, attachmentID = undefined, IsNewRefresh = true);\r\n }\r\n\r\n async function buildNewEntryForm(registerId, attachment, attachmentID, IsNewRefresh = true) {\r\n prevAttachmentArray = [];\r\n numberOfRows = 5;\r\n if (registerId && IsNewRefresh) {\r\n splitAmount = [];\r\n totalAmountSaved = 0;\r\n prevAttachmentArray = await consumerFinanceAttachment.getConsumerFinanceAttachments(registerId);\r\n BtnName = 'UPDATE'\r\n pageName = 'Update';\r\n regId = registerId;\r\n const result = await ConsumerFinancesAjax.getAccountEntriesByIDAsync(registerId);\r\n const { getAccountEntriesByIdResult } = result;\r\n date = moment(getAccountEntriesByIdResult[0].activityDate).format('YYYY-MM-DD');\r\n amount = getAccountEntriesByIdResult[0].amount != '' ? parseFloat(getAccountEntriesByIdResult[0].amount).toFixed(2) : '';\r\n tempAmountval = getAccountEntriesByIdResult[0].amount;\r\n account = getAccountEntriesByIdResult[0].account;\r\n payee = getAccountEntriesByIdResult[0].payee;\r\n category = getAccountEntriesByIdResult[0].category;\r\n subCategory = getAccountEntriesByIdResult[0].subCategory;\r\n checkNo = getAccountEntriesByIdResult[0].checkno;\r\n description = getAccountEntriesByIdResult[0].description;\r\n receipt = getAccountEntriesByIdResult[0].receipt;\r\n accountID = getAccountEntriesByIdResult[0].accountID;\r\n accountType = getAccountEntriesByIdResult[0].accountType;\r\n IsReconciled = getAccountEntriesByIdResult[0].reconciled;\r\n lastUpdateBy = getAccountEntriesByIdResult[0].lastUpdateBy;\r\n categoryOldVal = category;\r\n const SplitDataresult = await ConsumerFinancesAjax.getSplitRegisterAccountEntriesByIDAsync(registerId);\r\n const { getSplitRegisterAccountEntriesByIDResult } = SplitDataresult;\r\n splitAmount = getSplitRegisterAccountEntriesByIDResult;\r\n var sum = 0;\r\n for (var i = 0; i < splitAmount.length; i++) {\r\n if (splitAmount[i].amount != '')\r\n sum += parseFloat(splitAmount[i].amount);\r\n }\r\n totalAmount = sum.toFixed(2);\r\n totalAmountSaved = totalAmount;\r\n }\r\n else if (registerId && !IsNewRefresh) {\r\n BtnName = 'UPDATE';\r\n pageName = 'Update';\r\n }\r\n else if (registerId == 0 && attachmentID) {\r\n regId = 0;\r\n BtnName = 'SAVE';\r\n pageName = 'New';\r\n }\r\n else {\r\n regId = 0;\r\n BtnName = 'SAVE';\r\n pageName = 'New';\r\n date = UTIL.getTodaysDate();\r\n amount = '';\r\n account = '';\r\n payee = '';\r\n category = '';\r\n subCategory = '';\r\n checkNo = '';\r\n description = '';\r\n attachment = '';\r\n receipt = '';\r\n accountID = '';\r\n accountType = 'E';\r\n IsReconciled = 'N';\r\n IsDisabledBtn = false;\r\n categoryOldVal = '';\r\n totalAmount = 0;\r\n tempAmountval = 0;\r\n splitAmount = [];\r\n totalAmountSaved = 0;\r\n }\r\n\r\n tempdate = '';\r\n tempamount = '';\r\n tempaccount = '';\r\n tempaccountType = '';\r\n temppayee = '';\r\n tempcategory = '';\r\n tempsubCategory = '';\r\n tempcheckNo = '';\r\n tempdescription = '';\r\n tempattachment = '';\r\n tempreceipt = '';\r\n tempSplit = '';\r\n if (attachment) {\r\n attachmentArray = attachment;\r\n attachmentId = attachmentID;\r\n attachment.forEach(att => {\r\n if (att.registerID == 0) {\r\n attachmentDesc.push(att.description);\r\n tempattachment = attachmentID;\r\n }\r\n });\r\n\r\n }\r\n else {\r\n attachmentArray = [];\r\n attachmentId = [];\r\n attachmentDesc = [];\r\n prevAttachmentArray.forEach(att => {\r\n attachmentArray.push(att);\r\n });\r\n }\r\n getaccountPermission();\r\n DOM.clearActionCenter();\r\n\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n\r\n newDateInput = input.build({\r\n id: 'newDateInput',\r\n type: 'date',\r\n label: 'Date',\r\n style: 'secondary',\r\n value: (date) ? date : '',\r\n });\r\n\r\n newAmountInput = input.build({\r\n id: 'newAmountInput',\r\n type: 'number',\r\n label: 'Amount',\r\n style: 'secondary',\r\n value: (amount) ? amount : '',\r\n });\r\n\r\n newAccountDropdown = dropdown.build({\r\n id: 'newAccountDropdown',\r\n label: \"Account\",\r\n dropdownId: \"newAccountDropdown\",\r\n value: (account) ? account : '',\r\n });\r\n\r\n newPayeeDropdown = dropdown.build({\r\n id: 'newPayeeDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"newPayeeDropdown\",\r\n value: (payee) ? payee : '',\r\n });\r\n\r\n ADD_NEW_PAYEE_BTN = button.build({\r\n text: 'ADD NEW PAYEE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n newCategoryDropdown = dropdown.build({\r\n id: 'newCategoryDropdown',\r\n label: \"Category\",\r\n dropdownId: \"newCategoryDropdown\",\r\n value: (category) ? category : '',\r\n });\r\n\r\n SPLIT_BTN = button.build({\r\n id: 'SPLIT_BTN',\r\n text: 'Split',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n newSubCategoryDropdown = dropdown.build({\r\n id: 'newSubCategoryDropdown',\r\n label: \"Sub Category\",\r\n dropdownId: \"newSubCategoryDropdown\",\r\n value: (subCategory) ? subCategory : '',\r\n });\r\n\r\n newCheckNoInput = input.build({\r\n type: 'text',\r\n label: 'Check No.',\r\n style: 'secondary',\r\n value: (checkNo) ? checkNo : '',\r\n });\r\n\r\n newDescriptionInput = input.build({\r\n type: 'textarea',\r\n label: 'Description',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: (description) ? description : '',\r\n });\r\n\r\n newReceiptInput = input.build({\r\n type: 'text',\r\n label: 'Receipt',\r\n style: 'secondary',\r\n value: (receipt) ? receipt : '',\r\n });\r\n\r\n NEW_SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n NEW_CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { ConsumerFinances.loadConsumerFinanceLanding() },\r\n });\r\n\r\n NEW_DELETE_BTN = button.build({\r\n text: 'DELETE ENTRY',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n // Billing Radios //\r\n expenseRadio = input.buildRadio({\r\n id: `expenseRadio`,\r\n text: \"Expense\",\r\n name: \"amountType\",\r\n isChecked: accountType == 'D' ? false : true,\r\n });\r\n depositRadio = input.buildRadio({\r\n id: `depositRadio`,\r\n text: \"Deposit\",\r\n name: \"amountType\",\r\n isChecked: accountType == 'D' ? true : false,\r\n });\r\n\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addCFRadioDiv\");\r\n radioDiv.appendChild(expenseRadio);\r\n radioDiv.appendChild(depositRadio);\r\n /////////////////\r\n\r\n var space = document.createElement('h3');\r\n space.innerHTML = '';\r\n var LineBr = document.createElement('br');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n\r\n if (registerId) {\r\n btnWrap.appendChild(NEW_SAVE_BTN);\r\n btnWrap.appendChild(NEW_DELETE_BTN);\r\n\r\n if (payee == 'Opening Balance') {\r\n DisabledAllInputs();\r\n }\r\n else {\r\n enableDisabledInputs();\r\n }\r\n }\r\n else {\r\n btnWrap.appendChild(NEW_SAVE_BTN);\r\n btnWrap.appendChild(NEW_CANCEL_BTN);\r\n if ($.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n }\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('vehicleInspectionDTWrap');\r\n dropWrap.appendChild(newDateInput);\r\n dropWrap.appendChild(newAmountInput);\r\n\r\n var radioWrap = document.createElement('div');\r\n radioWrap.classList.add('vehicleInspectionDTWrap');\r\n radioWrap.appendChild(space);\r\n radioWrap.appendChild(radioDiv);\r\n\r\n // New Entry Card//\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
${pageName} Entry
`; \r\n addNewCard.appendChild(addNewCardBody)\r\n\r\n column1.appendChild(addNewCard)\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(dropWrap);\r\n addNewCardBody.appendChild(radioWrap);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(newAccountDropdown);\r\n addNewCardBody.appendChild(newPayeeDropdown);\r\n addNewCardBody.appendChild(ADD_NEW_PAYEE_BTN);\r\n addNewCardBody.appendChild(newCategoryDropdown);\r\n addNewCardBody.appendChild(SPLIT_BTN);\r\n addNewCardBody.appendChild(newSubCategoryDropdown);\r\n addNewCardBody.appendChild(newCheckNoInput);\r\n\r\n const addRightCard = document.createElement(\"div\");\r\n const addRightHeader = document.createElement(\"div\");\r\n const addRightBody = document.createElement(\"div\");\r\n addRightCard.classList.add(\"card\");\r\n addRightHeader.classList.add(\"card__header\");\r\n addRightBody.classList.add(\"card__body\");\r\n addRightBody.id = 'consumerOnRouteSection';\r\n addRightCard.appendChild(addRightBody);\r\n\r\n addRightBody.appendChild(newDescriptionInput);\r\n const questionAttachment = new consumerFinanceAttachment.ConsumerFinanceAttachment(attachmentArray, regId, IsDisabledBtn, attachmentId);\r\n addRightBody.appendChild(questionAttachment.attachmentButton);\r\n\r\n addRightBody.appendChild(newReceiptInput);\r\n if (registerId) {\r\n addRightBody.appendChild(btnWrap);\r\n NEW_CANCEL_BTN.style.width = '100%';\r\n addRightBody.appendChild(NEW_CANCEL_BTN);\r\n }\r\n else {\r\n addRightBody.appendChild(btnWrap);\r\n }\r\n\r\n column2.appendChild(addRightCard);\r\n\r\n DOM.ACTIONCENTER.appendChild(column1);\r\n DOM.ACTIONCENTER.appendChild(column2);\r\n eventListeners();\r\n\r\n populateAccountDropdown();\r\n populatePayeeDropdown();\r\n populateCategoryDropdown(categoryID);\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n\r\n if (category == '--Split--') {\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n }\r\n else {\r\n document.getElementById('SPLIT_BTN').style.display = 'none';\r\n }\r\n }\r\n\r\n async function getSplitdata() {\r\n const SplitDataresult = await ConsumerFinancesAjax.getSplitRegisterAccountEntriesByIDAsync(regId);\r\n const { getSplitRegisterAccountEntriesByIDResult } = SplitDataresult;\r\n splitAmount = getSplitRegisterAccountEntriesByIDResult;\r\n\r\n buildSplitTransectionPopUp();\r\n if (splitAmount.length > 0) {\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n }\r\n }\r\n\r\n function enableDisabledInputs() {\r\n if (IsReconciled == 'Y') {\r\n DisabledAllInputs();\r\n } else if (IsReconciled == 'N') {\r\n if (!$.session.CFUpdate) {\r\n DisabledAllInputs();\r\n }\r\n else if (!$.session.CFEditAccountEntries && lastUpdateBy != $.session.UserId) {\r\n DisabledAllInputs();\r\n }\r\n else if (($.session.CFDelete || $.session.CFUpdate || $.session.CFView) && lastUpdateBy == $.session.UserId) {\r\n EnabledAllInputs();\r\n if (!$.session.CFDelete) {\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFUpdate) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n else if ($.session.CFDelete || $.session.CFUpdate || $.session.CFView || $.session.CFEditAccountEntries) {\r\n EnabledAllInputs();\r\n if (!$.session.CFDelete) {\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFUpdate) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n else {\r\n DisabledAllInputs();\r\n }\r\n }\r\n else {\r\n DisabledAllInputs();\r\n }\r\n }\r\n\r\n function DisabledAllInputs() {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n newDateInput.classList.add('disabled');\r\n newAmountInput.classList.add('disabled');\r\n newAccountDropdown.classList.add('disabled');\r\n newPayeeDropdown.classList.add('disabled');\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n newCategoryDropdown.classList.add('disabled');\r\n newSubCategoryDropdown.classList.add('disabled');\r\n newCheckNoInput.classList.add('disabled');\r\n newDescriptionInput.classList.add('disabled');\r\n newReceiptInput.classList.add('disabled');\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n expenseRadio.classList.add('disabled');\r\n depositRadio.classList.add('disabled');\r\n IsDisabledBtn = true;\r\n }\r\n\r\n function EnabledAllInputs() {\r\n NEW_SAVE_BTN.classList.remove('disabled');\r\n newDateInput.classList.remove('disabled');\r\n newAmountInput.classList.remove('disabled');\r\n newAccountDropdown.classList.remove('disabled');\r\n newPayeeDropdown.classList.remove('disabled');\r\n newCategoryDropdown.classList.remove('disabled');\r\n newSubCategoryDropdown.classList.remove('disabled');\r\n newCheckNoInput.classList.remove('disabled');\r\n newDescriptionInput.classList.remove('disabled');\r\n newReceiptInput.classList.remove('disabled');\r\n NEW_DELETE_BTN.classList.remove('disabled');\r\n expenseRadio.classList.remove('disabled');\r\n depositRadio.classList.remove('disabled');\r\n IsDisabledBtn = false;\r\n }\r\n\r\n function checkRequiredFieldsOfNewEntry() {\r\n var date = newDateInput.querySelector('#newDateInput');\r\n var amount = newAmountInput.querySelector('#newAmountInput');\r\n var account = newAccountDropdown.querySelector('#newAccountDropdown');\r\n var payee = newPayeeDropdown.querySelector('#newPayeeDropdown');\r\n var category = newCategoryDropdown.querySelector('#newCategoryDropdown');\r\n var subCategory = newSubCategoryDropdown.querySelector('#newSubCategoryDropdown');\r\n\r\n if (date.value === '') {\r\n newDateInput.classList.add('error');\r\n } else {\r\n newDateInput.classList.remove('error');\r\n }\r\n\r\n if (amount.value === '') {\r\n newAmountInput.classList.add('error');\r\n } else {\r\n newAmountInput.classList.remove('error');\r\n }\r\n\r\n if (account.value === '') {\r\n newAccountDropdown.classList.add('error');\r\n } else {\r\n newAccountDropdown.classList.remove('error');\r\n }\r\n\r\n if (payee.value === '' || payee.value === 'Opening Balance') {\r\n newPayeeDropdown.classList.add('error');\r\n } else {\r\n newPayeeDropdown.classList.remove('error');\r\n }\r\n\r\n if (category.value === '') {\r\n newCategoryDropdown.classList.add('error');\r\n } else {\r\n newCategoryDropdown.classList.remove('error');\r\n }\r\n\r\n if (IsReconciled == 'N') {\r\n setBtnStatusOfNewEntry();\r\n }\r\n }\r\n\r\n function setBtnStatusOfNewEntry() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (tempdate != '' || tempamount != '' || tempaccount != '' || tempaccountType != '' || temppayee != '' || tempcategory != '' || tempsubCategory != '' || tempcheckNo != '' || tempdescription != '' || tempattachment != '' || tempreceipt != '' || tempSplit != '') {\r\n NEW_SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n ADD_NEW_PAYEE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && ADD_NEW_PAYEE_BTN.classList.contains('disabled')) {\r\n IsAddNewPayDisable = false;\r\n }\r\n });\r\n ADD_NEW_PAYEE_BTN.addEventListener('click', event => {\r\n if (IsAddNewPayDisable) {\r\n buildNewPayeePopUp();\r\n }\r\n IsAddNewPayDisable = true;\r\n });\r\n SPLIT_BTN.addEventListener('click', event => {\r\n buildSplitTransectionPopUp();\r\n });\r\n NEW_SAVE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && NEW_SAVE_BTN.classList.contains('disabled')) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n IsSaveDisable = false;\r\n }\r\n });\r\n NEW_SAVE_BTN.addEventListener('click', event => {\r\n if (IsSaveDisable) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n saveNewAccount();\r\n }\r\n IsSaveDisable = true;\r\n });\r\n NEW_DELETE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && NEW_DELETE_BTN.classList.contains('disabled')) {\r\n IsDeleteDisable = false;\r\n }\r\n });\r\n NEW_DELETE_BTN.addEventListener('click', event => {\r\n if (IsDeleteDisable) {\r\n deleteAccountPOPUP();\r\n }\r\n IsDeleteDisable = true;\r\n });\r\n\r\n newDateInput.addEventListener('input', event => {\r\n if (!newDateInput.classList.contains('disabled')) {\r\n date = event.target.value;\r\n tempdate = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newAmountInput.addEventListener('input', event => {\r\n if (!newAmountInput.classList.contains('disabled')) {\r\n amount = event.target.value;\r\n if (amount.includes('.') && (amount.match(/\\./g).length > 1 || amount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('newAmountInput').value = amount.substring(0, amount.length - 1);\r\n return;\r\n }\r\n tempamount = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n\r\n newAmountInput.addEventListener('focusout', event => {\r\n if (totalAmountSaved > 0 && totalAmountSaved != event.target.value && category == '--Split--') {\r\n errorPopup(2);\r\n }\r\n if (document.getElementById('newAmountInput').value != '')\r\n document.getElementById('newAmountInput').value = parseFloat(document.getElementById('newAmountInput').value).toFixed(2);\r\n });\r\n\r\n newPayeeDropdown.addEventListener('change', event => {\r\n if (!newPayeeDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n if (categoryID != '') {\r\n getCategorySubCategorybyPayee(categoryID);\r\n }\r\n payee = event.target.options[event.target.selectedIndex].text;\r\n temppayee = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newAccountDropdown.addEventListener('change', event => {\r\n if (!newAccountDropdown.classList.contains('disabled')) {\r\n accountID = event.target.options[event.target.selectedIndex].id;\r\n account = event.target.options[event.target.selectedIndex].text;\r\n tempaccount = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newCategoryDropdown.addEventListener('change', event => {\r\n if (!newCategoryDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n category = event.target.options[event.target.selectedIndex].text;\r\n if (category == '--Split--') {\r\n getSplitdata();\r\n }\r\n else {\r\n document.getElementById('SPLIT_BTN').style.display = 'none';\r\n totalAmountSaved = '';\r\n splitAmount = [];\r\n }\r\n tempcategory = 'ChangedValue';\r\n subCategory = '';\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newSubCategoryDropdown.addEventListener('change', event => {\r\n if (!newSubCategoryDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n subCategory = event.target.options[event.target.selectedIndex].text;\r\n tempsubCategory = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newCheckNoInput.addEventListener('input', event => {\r\n if (!newCheckNoInput.classList.contains('disabled')) {\r\n checkNo = event.target.value;\r\n tempcheckNo = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newDescriptionInput.addEventListener('input', event => {\r\n if (!newDescriptionInput.classList.contains('disabled')) {\r\n description = event.target.value;\r\n tempdescription = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newReceiptInput.addEventListener('input', event => {\r\n if (!newReceiptInput.classList.contains('disabled')) {\r\n receipt = event.target.value;\r\n tempreceipt = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n expenseRadio.addEventListener('change', event => {\r\n if (!expenseRadio.classList.contains('disabled')) {\r\n accountType = 'E';\r\n tempaccountType = 'E';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n depositRadio.addEventListener('change', event => {\r\n if (!depositRadio.classList.contains('disabled')) {\r\n accountType = 'D';\r\n tempaccountType = 'D';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n }\r\n\r\n async function saveNewAccount() {\r\n if (document.getElementById('newCategoryDropdown').value != '--Split--') {\r\n splitAmount = [];\r\n }\r\n const amountType = document.getElementById(\"expenseRadio\").checked ? \"E\" : \"D\";\r\n if (attachmentArray == undefined || attachmentArray.length == 0) {\r\n const result = await ConsumerFinancesAjax.insertAccountAsync(date, amount, amountType, accountID, payee, category, subCategory, checkNo, description, null, null, receipt, BtnName, regId, splitAmount, categoryID);\r\n const { insertAccountResult } = result;\r\n if (insertAccountResult.registerId != null) {\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n }\r\n else {\r\n const result = await ConsumerFinancesAjax.insertAccountAsync(date, amount, amountType, accountID, payee, category, subCategory, checkNo, description, attachmentId, attachmentDesc, receipt, BtnName, regId, splitAmount, categoryID);\r\n const { insertAccountResult } = result;\r\n\r\n if (insertAccountResult.registerId != null) {\r\n splitAmount = [];\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n }\r\n }\r\n\r\n function deleteAccountPOPUP() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning'],\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteAccount(confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to delete this record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n async function deleteAccount(confirmPopup) {\r\n await ConsumerFinancesAjax.deleteConsumerFinanceAccountAsync(regId);\r\n POPUP.hide(confirmPopup);\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n\r\n async function getCategorySubCategorybyPayee(categoryID) {\r\n const {\r\n getCategoriesSubCategoriesByPayeeResult: CategoriesSubCategory,\r\n } = await ConsumerFinancesAjax.getCategoriesSubCategoriesByPayeeAsync(categoryID);\r\n\r\n if (payee == 'Opening Balance') {\r\n category = '';\r\n } else {\r\n category = CategoriesSubCategory[0].CategoryDescription;\r\n }\r\n subCategory = CategoriesSubCategory[0].SubCategoryDescription;\r\n populateCategoryDropdown(categoryID);\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n // Populate the Account DDL \r\n async function populateAccountDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync($.session.consumerId, accountPermission);\r\n let data = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName\r\n }));\r\n if (data.length == 1) {\r\n account = data[0].value;\r\n accountID = data[0].id;\r\n }\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newAccountDropdown\", data, account);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populatePayeeDropdown() {\r\n const {\r\n getPayeesResult: Payees,\r\n } = await ConsumerFinancesAjax.getPayeesAsync($.session.consumerId);\r\n let data = Payees.map((payees) => ({\r\n id: payees.CategoryID,\r\n value: payees.Description,\r\n text: payees.Description\r\n }));\r\n data.unshift({ id: null, value: 'Opening Balance', text: 'Opening Balance' });\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newPayeeDropdown\", data, payee);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populateCategoryDropdown(categoryID) {\r\n const {\r\n getCatogoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getCategoriesAsync(categoryID);\r\n let data = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryDescription,\r\n text: category.CategoryDescription\r\n }));\r\n\r\n data.unshift({ id: null, value: '--Split--', text: '--Split--' });\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newCategoryDropdown\", data, category);\r\n if (category == '--Split--' && document.getElementById('SPLIT_BTN').style.display == 'none' && payee != 'Opening Balance') {\r\n buildSplitTransectionPopUp();\r\n }\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populateSubCategoryDropdown(category) {\r\n const {\r\n getSubCatogoriesResult: SubCategory,\r\n } = await ConsumerFinancesAjax.getSubCategoriesAsync(category);\r\n let data = SubCategory.map((subCategory) => ({\r\n id: subCategory.CategoryID,\r\n value: subCategory.SubCategoryDescription,\r\n text: subCategory.SubCategoryDescription\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newSubCategoryDropdown\", data, subCategory);\r\n checkRequiredFieldsOfNewEntry();\r\n\r\n }\r\n\r\n // build payee pop-up used for adding payee information\r\n async function buildNewPayeePopUp() {\r\n payeeId = '';\r\n payeeName = '';\r\n payeeaddress1 = '';\r\n payeeaddress2 = '';\r\n payeecity = '';\r\n payeestate = 'OH';\r\n payeezipcode = '';\r\n\r\n\r\n let addPayeePopup = POPUP.build({\r\n header: \"Add payee\",\r\n hideX: true,\r\n id: \"addPayeePopup\"\r\n });\r\n\r\n payeeInput = input.build({\r\n id: 'payeeInput',\r\n label: 'Name',\r\n value: (payeeName) ? payeeName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n label: 'Address 1',\r\n value: (payeeaddress1) ? payeeaddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (payeeaddress2) ? payeeaddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n label: 'City',\r\n value: (payeecity) ? payeecity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n id: 'stateInput',\r\n label: 'State',\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: (payeestate) ? payeestate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n id: 'zipcodeInput',\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '10' }],\r\n value: (payeezipcode) ? payeezipcode : '',\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addpayeeSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => addPayeePopupDoneBtn()\r\n });\r\n\r\n cancelBtn = button.build({\r\n id: \"addpayeeCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(addPayeePopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n addPayeePopup.appendChild(payeeInput);\r\n addPayeePopup.appendChild(address1Input);\r\n addPayeePopup.appendChild(address2Input);\r\n addPayeePopup.appendChild(cityInput);\r\n addPayeePopup.appendChild(stateInput);\r\n addPayeePopup.appendChild(zipcodeInput);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

`;\r\n addPayeePopup.appendChild(confirmMessage);\r\n\r\n addPayeePopup.appendChild(btnWrap);\r\n popUpEventHandlers();\r\n POPUP.show(addPayeePopup);\r\n checkRequiredFields();\r\n\r\n }\r\n\r\n function popUpEventHandlers() {\r\n\r\n payeeInput.addEventListener('input', event => {\r\n payeeName = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n payeeaddress1 = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n payeeaddress2 = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n payeecity = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n payeestate = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n payeezipcode = event.target.value;\r\n var reg = new RegExp('^[0-9 -]+$');\r\n if (payeezipcode) {\r\n if (!reg.test(payeezipcode)) {\r\n document.getElementById('zipcodeInput').value = payeezipcode.substring(0, payeezipcode.length - 1);\r\n return;\r\n }\r\n payeezipcode = payeezipcode.split('-').join('');\r\n let finalVal = payeezipcode.match(/.{1,5}/g).join('-');\r\n document.getElementById('zipcodeInput').value = finalVal;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n }\r\n\r\n function checkRequiredFields() {\r\n var payee = payeeInput.querySelector('#payeeInput');\r\n var address1 = address1Input.querySelector('#address1Input');\r\n var city = cityInput.querySelector('#cityInput');\r\n var state = stateInput.querySelector('#stateInput');\r\n var zipcode = zipcodeInput.querySelector('#zipcodeInput');\r\n\r\n if (payee.value === '') {\r\n payeeInput.classList.add('errorPopup');\r\n } else {\r\n payeeInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (address1.value === '') {\r\n address1Input.classList.add('errorPopup');\r\n } else {\r\n address1Input.classList.remove('errorPopup');\r\n }\r\n\r\n if (city.value === '') {\r\n cityInput.classList.add('errorPopup');\r\n } else {\r\n cityInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (state.value === '') {\r\n stateInput.classList.add('errorPopup');\r\n } else {\r\n stateInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (zipcode.value === '') {\r\n zipcodeInput.classList.add('errorPopup');\r\n } else {\r\n zipcodeInput.classList.remove('errorPopup');\r\n }\r\n setBtnStatus();\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function addPayeePopupDoneBtn() {\r\n const result = await ConsumerFinancesAjax.insertPayeeAsync(payeeName, payeeaddress1, payeeaddress2, payeecity, payeestate, payeezipcode);\r\n const { insertPayeeResult } = result;\r\n\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertPayeeResult.RegionID == '-1') {\r\n duplicatePayeErrorPopup();\r\n\r\n }\r\n else {\r\n POPUP.hide(addPayeePopup);\r\n payee = payeeName;\r\n document.getElementById('newCategoryDropdown').value = '';\r\n document.getElementById('newSubCategoryDropdown').value = '';\r\n temppayee = 'ChangedValue';\r\n populatePayeeDropdown();\r\n }\r\n\r\n }\r\n\r\n function duplicatePayeErrorPopup() {\r\n const duplicatePayeErrorConfPOPUP = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning'],\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(duplicatePayeErrorConfPOPUP);\r\n POPUP.show(addPayeePopup);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'You are trying to add a payee that already exists, please select the existing payee or enter a new payee with a different name.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n duplicatePayeErrorConfPOPUP.appendChild(message);\r\n duplicatePayeErrorConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(duplicatePayeErrorConfPOPUP);\r\n }\r\n\r\n async function buildSplitTransectionPopUp() {\r\n if (splitAmount.length > 3) {\r\n numberOfRows = splitAmount.length + 2;\r\n }\r\n\r\n regTotalAmount = document.getElementById('newAmountInput').value != '' ? parseFloat(document.getElementById('newAmountInput').value).toFixed(2) : 0;\r\n splitTransPopup = POPUP.build({\r\n header: \"Split Transaction\",\r\n hideX: true,\r\n id: \"splitTransPopup\"\r\n });\r\n\r\n splitTransPopup.style.maxWidth = '900px';\r\n\r\n for (let i = 0; i < numberOfRows; i++) {\r\n splitCategoryDropdownN[i] = dropdown.build({\r\n id: 'splitCategoryDropdownN' + i,\r\n label: \"Category\",\r\n dropdownId: \"splitCategoryDropdownN\" + i,\r\n });\r\n\r\n splitDescriptionInputN[i] = input.build({\r\n id: 'splitDescriptionInputN' + i,\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: splitAmount[i] != undefined ? splitAmount[i].description : '',\r\n });\r\n\r\n splitAmountInputN[i] = input.build({\r\n id: 'splitAmountInputN' + i,\r\n type: 'number',\r\n label: 'Amount',\r\n style: 'secondary',\r\n value: splitAmount[i] != undefined ? splitAmount[i].amount : '',\r\n });\r\n\r\n btnWrapInputsN = document.createElement(\"div\");\r\n btnWrapInputsN.classList.add(\"cFInputWrap\");\r\n splitCategoryDropdownN[i].classList.add('width37Per');\r\n btnWrapInputsN.appendChild(splitCategoryDropdownN[i]);\r\n splitDescriptionInputN[i].classList.add('width37Per');\r\n btnWrapInputsN.appendChild(splitDescriptionInputN[i]);\r\n splitAmountInputN[i].classList.add('width21Per');\r\n btnWrapInputsN.appendChild(splitAmountInputN[i]);\r\n splitTransPopup.appendChild(btnWrapInputsN);\r\n }\r\n\r\n\r\n regAmountTotalInput = input.build({\r\n id: 'regAmountTotalInput',\r\n type: 'number',\r\n label: 'Register Total',\r\n style: 'secondary',\r\n readonly: true,\r\n value: regTotalAmount,\r\n });\r\n\r\n amountTotalInput = input.build({\r\n id: 'amountTotalInput',\r\n type: 'number',\r\n label: 'Total',\r\n style: 'secondary',\r\n readonly: true,\r\n value: totalAmount,\r\n });\r\n\r\n let totalBtnWrapInputs = document.createElement(\"div\");\r\n totalBtnWrapInputs.classList.add(\"cFInputWrap\");\r\n regAmountTotalInput.classList.add('width21Per');\r\n regAmountTotalInput.classList.add('marginLeft50Per');\r\n totalBtnWrapInputs.appendChild(regAmountTotalInput);\r\n amountTotalInput.classList.add('width21Per');\r\n totalBtnWrapInputs.appendChild(amountTotalInput);\r\n splitTransPopup.appendChild(totalBtnWrapInputs);\r\n\r\n saveSplitBtn = button.build({\r\n id: \"saveSplitBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => splitTransPopupSaveBtn()\r\n });\r\n\r\n cancelSplitBtn = button.build({\r\n id: \"cancelSplitBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => {\r\n document.getElementById('newCategoryDropdown').value = categoryOldVal;\r\n\r\n if (tempAmountval) {\r\n document.getElementById('newAmountInput').value = tempAmountval;\r\n amount = tempAmountval;\r\n }\r\n\r\n POPUP.hide(splitTransPopup);\r\n checkRequiredFieldsOfNewEntry();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveSplitBtn);\r\n btnWrap.appendChild(cancelSplitBtn);\r\n splitTransPopup.appendChild(btnWrap);\r\n popUpSplitTransectionEventHandlers();\r\n POPUP.show(splitTransPopup);\r\n populateSplitCategoryDropdown('');\r\n splitAmountTotal();\r\n }\r\n\r\n function popUpSplitTransectionEventHandlers() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n splitAmountInputN[i].addEventListener('input', event => {\r\n tempAmouts = event.target.value;\r\n if (tempAmouts.includes('.') && (tempAmouts.match(/\\./g).length > 1 || tempAmouts.toString().split('.')[1].length > 2)) {\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = tempAmouts.substring(0, tempAmouts.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n splitAmountTotal();\r\n });\r\n splitAmountInputN[i].addEventListener('focusout', event => {\r\n tempAmouts = event.target.value;\r\n if (tempAmouts.includes('.') && (tempAmouts.match(/\\./g).length > 1 || tempAmouts.toString().split('.')[1].length > 2)) {\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = tempAmouts.substring(0, tempAmouts.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n splitAmountTotal();\r\n if (splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value != '')\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = parseFloat(splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value).toFixed(2);\r\n });\r\n\r\n splitDescriptionInputN[i].addEventListener('input', event => {\r\n checkRequiredFieldsSplitTransection();\r\n });\r\n\r\n splitCategoryDropdownN[i].addEventListener('change', event => {\r\n checkRequiredFieldsSplitTransection();\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFieldsSplitTransection() {\r\n for (let i = 0; i < 2; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value === '') {\r\n splitCategoryDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n splitCategoryDropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (splitAmt.value === '') {\r\n splitAmountInputN[i].classList.add('errorPopup');\r\n } else {\r\n splitAmountInputN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n\r\n for (let i = 2; i < numberOfRows; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value !== '' && splitAmt.value === '') {\r\n splitAmountInputN[i].classList.add('errorPopup');\r\n } else {\r\n splitAmountInputN[i].classList.remove('errorPopup');\r\n }\r\n if (SplitCategory.value === '' && splitAmt.value !== '') {\r\n splitCategoryDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n splitCategoryDropdownN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n\r\n setBtnStatusSplitTransection();\r\n }\r\n\r\n function setBtnStatusSplitTransection() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveSplitBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveSplitBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateSplitCategoryDropdown(categoryID) { \r\n const {\r\n getSplitCategoriesSubCategoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getSplitCategoriesSubCategoriesAsync(categoryID);\r\n let data = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryID,\r\n text: category.CategoryDescription\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n for (let i = 0; i < numberOfRows; i++) {\r\n dropdown.populate(\"splitCategoryDropdownN\" + i, data, splitAmount[i] != undefined ? splitAmount[i].categoryId : '');\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n }\r\n\r\n function splitAmountTotal() {\r\n var sum = 0;\r\n for (var i = 0; i < numberOfRows; i++) {\r\n if (splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value != '')\r\n sum += parseFloat(splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value);\r\n }\r\n totalAmount = parseFloat(sum).toFixed(2); \r\n document.getElementById('amountTotalInput').value = sum.toFixed(2);\r\n if (document.getElementById('newAmountInput').value == '') {\r\n document.getElementById('newAmountInput').value = sum.toFixed(2);\r\n document.getElementById('regAmountTotalInput').value = sum.toFixed(2);\r\n amount = sum.toFixed(2);\r\n }\r\n }\r\n\r\n async function splitTransPopupSaveBtn() {\r\n if (regTotalAmount != totalAmount) {\r\n errorPopup(1);\r\n }\r\n else {\r\n splitTransSaveData();\r\n POPUP.hide(splitTransPopup);\r\n }\r\n }\r\n\r\n function errorPopup(errorCode) {\r\n const errorConfPOPUP = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning', 'popupSize'],\r\n });\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (errorCode == 1) {\r\n cancelSplitBtn.classList.remove('disabled');\r\n POPUP.hide(errorConfPOPUP);\r\n POPUP.hide(splitTransPopup);\r\n document.getElementById('newAmountInput').value = parseFloat(totalAmount).toFixed(2);\r\n amount = parseFloat(totalAmount).toFixed(2);\r\n splitTransSaveData();\r\n }\r\n else {\r\n POPUP.hide(errorConfPOPUP);\r\n buildSplitTransectionPopUp();\r\n }\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n if (errorCode == 1) {\r\n cancelSplitBtn.classList.remove('disabled');\r\n POPUP.hide(errorConfPOPUP);\r\n POPUP.show(splitTransPopup);\r\n } else {\r\n document.getElementById('newAmountInput').value = parseFloat(totalAmount).toFixed(2);\r\n amount = parseFloat(totalAmount).toFixed(2);\r\n POPUP.hide(errorConfPOPUP);\r\n }\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n if (errorCode == 1)\r\n message.innerText = 'The total of this split transaction dose not match the total entered on the New Entry form. Would you like to change the total on the New Entry form.';\r\n else\r\n message.innerText = 'The Amount entered does not equal the total amount for this split transaction. Would you like to edit the split transaction?';\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n errorConfPOPUP.appendChild(message);\r\n errorConfPOPUP.appendChild(btnWrap);\r\n POPUP.show(errorConfPOPUP);\r\n if (errorCode == 1)\r\n cancelSplitBtn.classList.add('disabled');\r\n }\r\n\r\n async function splitTransSaveData() {\r\n splitAmount = [];\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var desc = splitDescriptionInputN[i].querySelector('#splitDescriptionInputN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value !== '') {\r\n splitAmount.push({\r\n \"itemNumber\": i + 1,\r\n \"categoryId\": SplitCategory.options[SplitCategory.selectedIndex].id,\r\n \"category\": SplitCategory.options[SplitCategory.selectedIndex].value,\r\n \"description\": desc.value,\r\n \"amount\": splitAmt.value\r\n });\r\n }\r\n }\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n tempSplit = 'ChangedValue';\r\n tempAmountval = totalAmount;\r\n totalAmountSaved = totalAmount;\r\n categoryOldVal = document.getElementById('newCategoryDropdown').value;\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT'); \r\n }\r\n\r\n if (tempAccountPer.length > 0)\r\n accountPermission = tempAccountPer.toString();\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n return {\r\n init,\r\n buildNewEntryForm,\r\n populatePayeeDropdown,\r\n populateCategoryDropdown,\r\n populateAccountDropdown,\r\n };\r\n})(); ","const covidChecklist = (function () {\r\n let inputs, checklistTable, tableContainer;\r\n let completedChecklistData, activeChecklistId, rosterLocations;\r\n let checklistMode; //'update' || 'insert'\r\n let typeOfChecklist; // 'employee' || 'consumer'\r\n let initialLoad;\r\n let consumer;\r\n\r\n function buildEmployeePage() {\r\n ////////////////////\r\n // Main Checklist Card Element\r\n const checklistCard = document.createElement(\"div\");\r\n checklistCard.classList.add(\"card\", \"checklistCard\");\r\n ////////////////////\r\n // Heading for checklist card\r\n const mainHeading = document.createElement(\"div\");\r\n mainHeading.classList.add(\"card__header\");\r\n mainHeading.innerHTML =\r\n typeOfChecklist === \"employee\"\r\n ? \"

My Covid-19 Checklist

\"\r\n : \"

Consumer Covid-19 Checklist

\";\r\n checklistCard.appendChild(mainHeading);\r\n ////////////////////\r\n // Consumer Name display (Consumer Checklist only)\r\n if (typeOfChecklist === \"consumer\") {\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"currConsumerDisp\");\r\n consumerNameDisplay.innerHTML = `Checklist for: ${consumer.name}`;\r\n checklistCard.appendChild(consumerNameDisplay);\r\n }\r\n ////////////////////\r\n //Top Questions\r\n const mainSection = document.createElement(\"div\");\r\n mainSection.classList.add(\"card__body\", \"covidEmployeeCard_details\");\r\n checklistCard.appendChild(mainSection);\r\n mainSection.appendChild(inputs.dateInput);\r\n mainSection.appendChild(inputs.timeInput);\r\n mainSection.appendChild(inputs.locationDropdown);\r\n mainSection.appendChild(inputs.settingInput);\r\n ////////////////////\r\n // Symptom Questions\r\n const symptomHeading = document.createElement(\"h3\");\r\n symptomHeading.classList.add(\"covidSubHeading\");\r\n symptomHeading.innerText = \"Symptoms\";\r\n const symptomSection = document.createElement(\"div\");\r\n symptomSection.classList.add(\"symptomSection\");\r\n mainSection.appendChild(symptomHeading);\r\n inputs.symptomElements.forEach((el) => {\r\n symptomSection.appendChild(el);\r\n });\r\n symptomSection.appendChild(inputs.otherInput);\r\n mainSection.appendChild(symptomSection);\r\n ////////////////////\r\n // Buttons\r\n const buttonDiv = document.createElement(\"div\");\r\n buttonDiv.classList.add(\"btnWrap\");\r\n const buttonDiv2 = buttonDiv.cloneNode();\r\n buttonDiv2.id = \"editButtonDiv\";\r\n buttonDiv2.style.display = \"none\";\r\n buttonDiv.appendChild(inputs.saveBtn);\r\n buttonDiv.appendChild(inputs.cancelBtn);\r\n buttonDiv2.appendChild(inputs.deleteBtn);\r\n mainSection.appendChild(buttonDiv);\r\n mainSection.appendChild(buttonDiv2);\r\n ////////////////////\r\n // Warning about not a checklist you didn't create\r\n // (consumer only, they can't edit or delete them)\r\n if (typeOfChecklist === \"consumer\") {\r\n const noEditWarning = document.createElement(\"div\");\r\n noEditWarning.innerHTML = `

This record was created by another user. \r\n Deleting and editing is disabled.

`;\r\n noEditWarning.classList.add(\"covidNoEdit\");\r\n noEditWarning.style.display = \"none\";\r\n mainSection.appendChild(noEditWarning);\r\n }\r\n ////////////////////\r\n // Adding Card and table to action center\r\n DOM.ACTIONCENTER.appendChild(checklistCard);\r\n tableContainer = document.createElement(\"div\");\r\n tableContainer.classList.add(\"covidTableContainer\");\r\n DOM.ACTIONCENTER.appendChild(tableContainer);\r\n tableContainer.appendChild(checklistTable);\r\n ////////////////////\r\n // After Build actions\r\n populateLocationDropdown();\r\n populateTable(UTIL.getTodaysDate(false));\r\n }\r\n\r\n function buildEmployeeChecklistTable() {\r\n const date = UTIL.formatDateFromIso(UTIL.getTodaysDate());\r\n checklistTable = table.build({\r\n tableId: \"employeeChecklistTable\",\r\n headline: `Completed Checklists for ${date}`,\r\n columnHeadings: [\"Time\", \"Location\", \"Setting\"],\r\n });\r\n }\r\n\r\n async function populateTable(date) {\r\n try {\r\n completedChecklistData = {};\r\n const peopleId =\r\n typeOfChecklist === \"employee\" ? $.session.PeopleId : consumer.id;\r\n const consumerChecklist = typeOfChecklist === 'consumer' ? 'T' : 'F';\r\n const checklistResult = (\r\n await covidAjax.getCovidChecklists(peopleId, date, consumerChecklist)\r\n ).getIndividualsCovidDetailsResult;\r\n // Update Table Header //\r\n const displayDate = UTIL.formatDateFromIso(date);\r\n const tableHeader = document\r\n .getElementById(\"employeeChecklistTable\")\r\n .querySelector(\".table__headline\")\r\n .getElementsByTagName(\"h2\")[0];\r\n tableHeader.innerText = `Completed Checklists for ${displayDate}`;\r\n ///////////////////\r\n // Break Down Data //\r\n checklistResult.forEach((checklist) => {\r\n //Create Completed Checklist Object//\r\n const checklistData = {\r\n enteredBy: checklist.enteredBy,\r\n time: checklist.assessmentTime,\r\n locationId: checklist.locationId,\r\n setting: checklist.settingType,\r\n cough: checklist.cough,\r\n diarrhea: checklist.diarrhea,\r\n fever: checklist.fever,\r\n malaise: checklist.malaise,\r\n nasalCong: checklist.nasalCong,\r\n nausea: checklist.nausea,\r\n tasteAndSmell: checklist.tasteAndSmell,\r\n other: checklist.notes,\r\n shortnessBreath: checklist.shortnessBreath,\r\n soreThroat: checklist.soreThroat,\r\n };\r\n completedChecklistData[checklist.assessmentId] = checklistData;\r\n });\r\n // Create Table Data for populating table //\r\n let tableData = []\r\n checklistResult.forEach((checklist) => {\r\n let location\r\n try {\r\n location = rosterLocations[checklist.locationId].name;\r\n } catch (error) {\r\n console.info(`NOTICE: skipping record ${checklist.assessmentId}. User might not have permission to locaiton ${checklist.locationId}`)\r\n return;\r\n }\r\n const time = UTIL.formatTimeString(checklist.assessmentTime);\r\n const setting = checklist.settingType;\r\n tableData.push({\r\n values: [time, location, setting],\r\n id: checklist.assessmentId,\r\n onClick: () => {\r\n // Clicking on row of a table goes into edit mode //\r\n activeChecklistId = checklist.assessmentId;\r\n covidChecklistActions.loadChecklist(\r\n checklist.assessmentId,\r\n completedChecklistData,\r\n inputs\r\n );\r\n inputs.saveBtn.innerText = \"Update\";\r\n inputs.saveBtn.setAttribute(\"data-function\", \"update\");\r\n checklistMode = \"update\";\r\n // If they didn't create the checklist they can't make changes to it\r\n if (typeOfChecklist === \"consumer\") {\r\n if (checklist.enteredBy.toLowerCase() !== $.session.UserId.toLowerCase()) {\r\n inputs.saveBtn.classList.add(\"disabled\");\r\n document.querySelector(\".covidNoEdit\").style.display = \"block\";\r\n document.getElementById(\"editButtonDiv\").style.display = \"none\";\r\n } else {\r\n inputs.saveBtn.classList.remove(\"disabled\");\r\n document.querySelector(\".covidNoEdit\").style.display = \"none\";\r\n document.getElementById(\"editButtonDiv\").style.display = \"flex\";\r\n }\r\n } else {\r\n inputs.saveBtn.classList.remove(\"disabled\");\r\n document.getElementById(\"editButtonDiv\").style.display = \"flex\";\r\n }\r\n },\r\n });\r\n });\r\n\r\n table.populate(checklistTable, tableData);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n function populateLocationDropdown() {\r\n const rawLocations = covidLanding.locations();\r\n rosterLocations = {};\r\n\r\n const dropdownData = rawLocations.map((location) => {\r\n const id = location.ID;\r\n const name = location.Name;\r\n // rosterLocations Object is used for getting the Name of the location\r\n // in the Completed checklist table\r\n rosterLocations[id] = { name: name };\r\n\r\n return {\r\n text: name,\r\n value: id,\r\n };\r\n });\r\n const defaultLocation = defaults.getLocation('roster')\r\n dropdown.populate(inputs.locationDropdown, dropdownData, defaultLocation);\r\n }\r\n\r\n function eventListeners() {\r\n // changing date re-populates the completed checklist table for that date\r\n inputs.dateInput.addEventListener(\"input\", () => {\r\n const newDate = inputs.dateInput.firstChild.value\r\n roster2.updateSelectedDate(newDate);\r\n populateTable(newDate);\r\n });\r\n // After records are saved, or deleted the checklist gets reset to default values\r\n inputs.saveBtn.addEventListener(\"click\", () => {\r\n const peopleId =\r\n typeOfChecklist === \"employee\" ? $.session.PeopleId : consumer.id;\r\n covidChecklistActions.insertUpdateChecklist(\r\n inputs,\r\n activeChecklistId,\r\n peopleId,\r\n typeOfChecklist,\r\n resetChecklist\r\n );\r\n });\r\n /* \r\n When in 'edit mode' the cancel button resets any changes\r\n sets the checklist back to defaults, and sets the mode to 'insert'.\r\n When in 'insert new record mode' cancel button goes\r\n back to the covid landing page.\r\n */\r\n inputs.cancelBtn.addEventListener(\"click\", () => {\r\n if (checklistMode === \"update\") {\r\n resetChecklist();\r\n } else {\r\n covidChecklistActions.cancel();\r\n }\r\n });\r\n inputs.deleteBtn.addEventListener(\"click\", () => deleteConfirmation());\r\n }\r\n // Resets the checkist back to the way it was when first entering the page.\r\n function resetChecklist() {\r\n covidChecklistActions.clearChecklist(inputs);\r\n activeChecklistId = null;\r\n inputs.saveBtn.innerText = \"Save\";\r\n inputs.saveBtn.setAttribute(\"data-function\", \"insert\");\r\n checklistMode = \"insert\";\r\n if (typeOfChecklist === \"consumer\") {\r\n inputs.saveBtn.classList.remove(\"disabled\");\r\n document.querySelector(\".covidNoEdit\").style.display = \"none\";\r\n }\r\n document.getElementById(\"editButtonDiv\").style.display = \"none\";\r\n }\r\n\r\n async function deleteChecklist() {\r\n try {\r\n pendingSave.show(\"Deleting...\");\r\n await covidAjax.deleteCovidChecklist(activeChecklistId);\r\n resetChecklist();\r\n pendingSave.fulfill(\"Delete Successful\");\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n }, 1000);\r\n } catch (err) {\r\n console.error(err);\r\n pendingSave.reject(\"Delete Failed. Please Try Again.\");\r\n setTimeout(() => failSave.hide(), 2000);\r\n resetChecklist();\r\n }\r\n }\r\n\r\n function deleteConfirmation() {\r\n const popup = POPUP.build({\r\n id: \"deleteWarningPopup\",\r\n classNames: \"warning\",\r\n });\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n const yesBtn = button.build({\r\n text: \"Yes\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n deleteChecklist();\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: \"No\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"close\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n const warningMessage = document.createElement(\"p\");\r\n warningMessage.innerHTML =\r\n \"Are you sure you would like to delete this completed COVID-19 Checklist?\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n if (initialLoad) {\r\n initialLoad = false;\r\n const activeConsumer = roster2.getActiveConsumers();\r\n activeConsumer.forEach((consumer) => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n consumer.name = activeConsumer[0].card.innerText;\r\n consumer.id = activeConsumer[0].id;\r\n DOM.toggleNavLayout();\r\n buildEmployeeChecklistTable();\r\n buildEmployeePage();\r\n eventListeners();\r\n } else {\r\n const activeConsumer = roster2.getActiveConsumers();\r\n if (activeConsumer.length > 0) {\r\n activeConsumer.forEach((consumer) => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n consumer.name = activeConsumer[0].card.innerText;\r\n consumer.id = activeConsumer[0].id;\r\n document.querySelector('.currConsumerDisp').innerHTML = `Checklist for: ${consumer.name}`\r\n DOM.toggleNavLayout();\r\n resetChecklist();\r\n }\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n if (initialLoad) {\r\n covidLanding.init();\r\n } else {\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function init(type) {\r\n typeOfChecklist = type;\r\n checklistMode = \"insert\";\r\n initialLoad = true;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n inputs = covidChecklistElements.init();\r\n switch (typeOfChecklist) {\r\n case \"employee\":\r\n setActiveModuleSectionAttribute(\"checklist\");\r\n buildEmployeeChecklistTable();\r\n buildEmployeePage();\r\n eventListeners();\r\n break;\r\n case \"consumer\":\r\n consumer = {};\r\n setActiveModuleSectionAttribute(\"checklist\");\r\n roster2.miniRosterinit(null, {hideDate: true})\r\n roster2.showMiniRoster({ hideDate: true });\r\n break;\r\n default:\r\n covidLanding.init();\r\n break;\r\n }\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","const covidChecklistActions = (function () {\r\n function loadChecklist(id, completedChecklists, inputs) {\r\n inputs.timeInput.firstChild.value = completedChecklists[id].time;\r\n inputs.locationDropdown.firstChild.value = completedChecklists[id].locationId;\r\n inputs.settingInput.firstChild.value = completedChecklists[id].setting;\r\n inputs.otherInput.firstChild.value = completedChecklists[id].other;\r\n inputs.settingInput.firstChild.dispatchEvent(new Event('keyup'));\r\n inputs.otherInput.firstChild.dispatchEvent(new Event('keyup'));\r\n\r\n\r\n //symptoms\r\n //cough\r\n completedChecklists[id].cough === \"Y\"\r\n ? document.getElementById(\"cough-yes\").checked = true\r\n : document.getElementById(\"cough-no\").checked = true;\r\n //diarrhea\r\n completedChecklists[id].diarrhea === \"Y\"\r\n ? document.getElementById(\"diarrhea-yes\").checked = true\r\n : document.getElementById(\"diarrhea-no\").checked = true;\r\n //fever\r\n completedChecklists[id].fever === \"Y\"\r\n ? document.getElementById(\"fever-yes\").checked = true\r\n : document.getElementById(\"fever-no\").checked = true;\r\n //malaise\r\n completedChecklists[id].malaise === \"Y\"\r\n ? document.getElementById(\"malaise-yes\").checked = true\r\n : document.getElementById(\"malaise-no\").checked = true;\r\n //nasalCong\r\n completedChecklists[id].nasalCong === \"Y\"\r\n ? document.getElementById(\"nasal_congestion-yes\").checked = true\r\n : document.getElementById(\"nasal_congestion-no\").checked = true;\r\n //nausea\r\n completedChecklists[id].nausea === \"Y\"\r\n ? document.getElementById(\"nausea-yes\").checked = true\r\n : document.getElementById(\"nausea-no\").checked = true;\r\n //shortnessBreath\r\n completedChecklists[id].shortnessBreath === \"Y\"\r\n ? document.getElementById(\"shortness_of_breath-yes\").checked = true\r\n : document.getElementById(\"shortness_of_breath-no\").checked = true;\r\n //soreThroat\r\n completedChecklists[id].soreThroat === \"Y\"\r\n ? document.getElementById(\"sore_throat-yes\").checked = true\r\n : document.getElementById(\"sore_throat-no\").checked = true;\r\n //tasteAndSmell\r\n completedChecklists[id].tasteAndSmell === \"Y\"\r\n ? document.getElementById(\"taste_and_smell-yes\").checked = true\r\n : document.getElementById(\"taste_and_smell-no\").checked = true;\r\n }\r\n \r\n async function insertUpdateChecklist(inputs, checklistId, peopleId, checklistType, callback) {\r\n const action = document.getElementById(\"covidSaveUpdate\").getAttribute('data-function');\r\n const date = inputs.dateInput.firstChild.value;\r\n const time = inputs.timeInput.firstChild.value;\r\n const location = inputs.locationDropdown.firstChild.value;\r\n const setting = UTIL.removeUnsavableNoteText(inputs.settingInput.firstChild.value);\r\n const other = UTIL.removeUnsavableNoteText(inputs.otherInput.firstChild.value);\r\n\r\n const cough = document.getElementById(\"cough-yes\").checked ? \"Y\":\"N\";\r\n const diarrhea = document.getElementById(\"diarrhea-yes\").checked ? \"Y\":\"N\";\r\n const fever = document.getElementById(\"fever-yes\").checked ? \"Y\":\"N\";\r\n const malaise = document.getElementById(\"malaise-yes\").checked ? \"Y\":\"N\";\r\n const nasalCong = document.getElementById(\"nasal_congestion-yes\").checked ? \"Y\":\"N\";\r\n const nausea = document.getElementById(\"nausea-yes\").checked ? \"Y\":\"N\";\r\n const shortnessBreath = document.getElementById(\"shortness_of_breath-yes\").checked ? \"Y\":\"N\";\r\n const soreThroat = document.getElementById(\"sore_throat-yes\").checked ? \"Y\":\"N\";\r\n const tasteAndSmell = document.getElementById(\"taste_and_smell-yes\").checked ? \"Y\":\"N\";\r\n const data = {\r\n token: $.session.Token,\r\n assesmentDate: date,\r\n assessmentTime: time,\r\n cough: cough,\r\n diarrhea: diarrhea,\r\n fever: fever,\r\n locationId: location,\r\n malaise: malaise,\r\n nasalCong: nasalCong,\r\n nausea: nausea,\r\n tasteAndSmell: tasteAndSmell,\r\n notes: other,\r\n peopleId: peopleId,\r\n settingType: setting,\r\n shortnessBreath: shortnessBreath,\r\n soreThroat: soreThroat,\r\n assessmentId: checklistId,\r\n isConsumer: checklistType === 'consumer' ? 'T' : 'F'\r\n }\r\n pendingSave.show('Saving Checklist...')\r\n switch (action) {\r\n case \"insert\":\r\n try {\r\n data.assessmentId = '0'\r\n await covidAjax.insertUpdateCovidChecklists(data);\r\n pendingSave.fulfill(\"Saved\")\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n if (callback) callback()\r\n }, 1000)\r\n } catch (err) {\r\n pendingSave.reject('Error Saving Checklist. Please Try Again.')\r\n setTimeout(() => failSave.hide(), 2000)\r\n }\r\n break;\r\n case \"update\":\r\n try {\r\n await covidAjax.insertUpdateCovidChecklists(data);\r\n pendingSave.fulfill(\"Saved\")\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n if (callback) callback()\r\n }, 1000)\r\n } catch (err) {\r\n pendingSave.reject('Error Updating Checklist. Please Try Again.')\r\n setTimeout(() => failSave.hide(), 2000)\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function clearChecklist(inputs) {\r\n inputs.dateInput.firstChild.value = UTIL.getTodaysDate(false)\r\n inputs.dateInput.dispatchEvent(new Event('input'))\r\n inputs.timeInput.firstChild.value = UTIL.getCurrentTime();\r\n // No longer re-setting location. Keep location from checklist to checklist\r\n // inputs.locationDropdown.firstChild.selectedIndex = \"0\";\r\n inputs.settingInput.firstChild.value = \"\";\r\n inputs.settingInput.firstChild.dispatchEvent(new Event('keyup'));\r\n inputs.otherInput.firstChild.value = \"\";\r\n inputs.otherInput.firstChild.dispatchEvent(new Event('keyup'));\r\n //symptoms\r\n document.getElementById(\"cough-no\").checked = true;\r\n document.getElementById(\"diarrhea-no\").checked = true;\r\n document.getElementById(\"fever-no\").checked = true;\r\n document.getElementById(\"malaise-no\").checked = true;\r\n document.getElementById(\"nasal_congestion-no\").checked = true;\r\n document.getElementById(\"nausea-no\").checked = true;\r\n document.getElementById(\"shortness_of_breath-no\").checked = true;\r\n document.getElementById(\"sore_throat-no\").checked = true;\r\n document.getElementById(\"taste_and_smell-no\").checked = true;\r\n }\r\n\r\n function cancel() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(null);\r\n covidLanding.init()\r\n }\r\n return {\r\n insertUpdateChecklist,\r\n loadChecklist,\r\n clearChecklist,\r\n cancel\r\n };\r\n})();\r\n","//TEST FOR JOE\r\n\r\nconst covidChecklistElements = (function() {\r\n\r\n function createInputs() {\r\n const dateInput = input.build({\r\n id: \"covidDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: UTIL.getTodaysDate()\r\n })\r\n const timeInput = input.build({\r\n id: \"covidTime\",\r\n label: \"Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: UTIL.getCurrentTime()\r\n })\r\n //*Location drop down - include the locations the user has access to in the Roster \r\n const locationDropdown = dropdown.build({\r\n dropdownId: \"covidLocationDropdown\",\r\n label: \"Location\",\r\n })\r\n const settingInput = input.build({\r\n id: \"covidSetting\",\r\n label: \"Setting\",\r\n style: \"secondary\",\r\n charLimit: 50\r\n })\r\n const otherInput = input.build({\r\n id: \"covidOtherSymptom\",\r\n label: \"Other\",\r\n type: 'textarea',\r\n style: \"secondary\",\r\n charLimit: 50\r\n })\r\n const saveBtn = button.build({\r\n id: \"covidSaveUpdate\",\r\n attributes: [{key: 'data-function', value: 'insert'}],\r\n text: \"Save\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n })\r\n const deleteBtn = button.build({\r\n id: \"covidDeleteChecklist\",\r\n text: \"Delete\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n })\r\n const cancelBtn = button.build({\r\n id: \"covidCancel\",\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n })\r\n // Symptom Y/N questions radios\r\n const symptoms = [\r\n \"fever\",\r\n \"cough\",\r\n \"sore_throat\",\r\n \"shortness_of_breath\",\r\n \"malaise\",\r\n \"nasal_congestion\",\r\n \"nausea\",\r\n \"diarrhea\",\r\n \"taste_and_smell\"\r\n ]\r\n// need to create a div with the symptom name, and 2 radio buttons one for yes one for no\r\n const symptomElements = symptoms.map(symptom => {\r\n let capSymptomNameArr = [];\r\n const readableSymptomNameBaseArr = symptom.split(\"_\");\r\n readableSymptomNameBaseArr.forEach(word => {\r\n const capWord = UTIL.capitalize(word)\r\n capSymptomNameArr.push(capWord)\r\n });\r\n let readableName = capSymptomNameArr.join(\" \");\r\n const yesRadio = input.buildRadio({\r\n id: `${symptom}-yes`,\r\n text: \"Yes\",\r\n name: symptom,\r\n \r\n })\r\n const noRadio = input.buildRadio({\r\n id: `${symptom}-no`,\r\n text: \"No\",\r\n name: symptom,\r\n isChecked: true,\r\n })\r\n const symptomTitle = document.createElement('h4');\r\n if (readableName === 'Fever') {\r\n readableName = 'Fever > 100°F'\r\n }\r\n if (readableName === 'Taste And Smell') {\r\n readableName = 'Loss of Taste and Smell'\r\n }\r\n symptomTitle.innerHTML = readableName;\r\n const symptomContainer = document.createElement('div');\r\n const radioDiv = document.createElement('div')\r\n radioDiv.classList.add('covid_radioDiv')\r\n radioDiv.appendChild(yesRadio)\r\n radioDiv.appendChild(noRadio)\r\n symptomContainer.appendChild(symptomTitle)\r\n symptomContainer.appendChild(radioDiv)\r\n\r\n return symptomContainer\r\n })\r\n\r\n return {\r\n dateInput,\r\n timeInput,\r\n locationDropdown,\r\n settingInput,\r\n otherInput,\r\n symptomElements,\r\n saveBtn,\r\n cancelBtn,\r\n deleteBtn\r\n }\r\n }\r\n function init() {\r\n const inputs = createInputs()\r\n return inputs\r\n }\r\n return {\r\n init\r\n }\r\n})();","const covidAjax = (function() {\r\n function getCovidChecklists(peopleId, date, consumerChecklist) {\r\n const data = {\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n assessmentDate: date,\r\n isConsumer: consumerChecklist\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getIndividualsCovidDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateCovidChecklists(insertData) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateCovidAssessment/',\r\n\t\t\tdata: JSON.stringify(insertData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function deleteCovidChecklist(checklistId) {\r\n const data = {\r\n token: $.session.Token,\r\n assessmentId: checklistId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteCovidAssessment/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getCovidChecklists,\r\n insertUpdateCovidChecklists,\r\n deleteCovidChecklist\r\n }\r\n})();","const covidLanding = (function() {\r\n let rosterLocations\r\n\r\n function loadCovidLanding(params) {\r\n const myChecklist = button.build({\r\n text: \"My Covid Checklist\",\r\n style: \"secondary\",\r\n type: 'contained',\r\n callback: () => {\r\n covidChecklist.init('employee')\r\n \r\n }\r\n });\r\n const consumerChecklists = button.build({\r\n text: \"Consumer Covid Checklist\",\r\n style: \"secondary\",\r\n type: 'contained',\r\n callback: () => {\r\n covidChecklist.init('consumer')\r\n }\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(myChecklist);\r\n btnWrap.appendChild(consumerChecklists);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function locations() {\r\n return [...rosterLocations]\r\n }\r\n\r\n async function init() {\r\n setActiveModuleSectionAttribute(null)\r\n if (!rosterLocations) {\r\n PROGRESS.init()\r\n PROGRESS.SPINNER.show('Gathering Data...')\r\n rosterLocations = (await rosterAjax.getRosterLocations()).getLocationsJSONResult; \r\n const spinner = document.querySelector('.spinner');\r\n spinner.remove();\r\n }\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadCovidLanding()\r\n }\r\n return {\r\n init,\r\n locations\r\n }\r\n})();","const dayServices = (function () {\r\n //DOM ELEMENTS\r\n let multiDeleteRecordBtn;\r\n let multiSelectAllBtn;\r\n let multiSelectNoneBtn;\r\n let multiOutRecordBtn;\r\n let multiInRecordBtn;\r\n let filterBtn;\r\n let filterLocationDropdown;\r\n let filterGroupDropdown;\r\n let filterPopup;\r\n let filterDateInput;\r\n let fitlerApplyBtn;\r\n let batchedMessageDisplay = document.createElement('h3');\r\n let mulitSelectBtn;\r\n let multiSelectAllNoneArea;\r\n let dsCardArea = document.createElement('div');\r\n dsCardArea.classList.add('dsCardArea');\r\n\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n\r\n let saveBtn;\r\n let groupDropdown;\r\n\r\n // New Roster\r\n let initRosterSelection;\r\n let activeConsumers;\r\n\r\n // Filter Data\r\n let rosterGroupResults;\r\n let serviceDate;\r\n let locationID;\r\n let filterGroupID;\r\n let filterGroupRetrieveID;\r\n let temp__locationID;\r\n let temp__groupID;\r\n let temp__retrieveID;\r\n let temp__serviceDate;\r\n let btnWrap;\r\n let locationBtnWrap;\r\n let serviceDateBtnWrap;\r\n let selectedGroupNameBtnWrap;\r\n\r\n // DATA\r\n let displayedConsumers = [];\r\n let enabledConsumers;\r\n let noLocationSet;\r\n let enabledConsumerString;\r\n let selectedConsumers;\r\n let currentLocationBatched;\r\n let locationCache = {};\r\n let activityCache = {};\r\n let dsConsumers = [];\r\n let dsGroupsCache;\r\n let dsDropdownData;\r\n let ciDropdownData;\r\n let groupDropdownData;\r\n let selectedDSType;\r\n let selectedGroup;\r\n let selectedGroupId;\r\n let locationDropdownData;\r\n let enableMultiEdit = false;\r\n let IsSaveBtnDisable = true;\r\n //permission\r\n // var PERMISSION__viewOnly = !$.session.DayServiceUpdate;\r\n\r\n const dsTypes = [\r\n { dsType: 'A', dsText: 'Adult Day' },\r\n { dsType: 'G', dsText: 'Group Employment' },\r\n //{ dsType: 'H', dsText: 'Restart Voc. Hab.' },\r\n //{ dsType: 'R', dsText: 'Restart Adult Day' },\r\n { dsType: 'X', dsText: 'STEP Voc. Hab.' },\r\n { dsType: 'S', dsText: 'STEP Adult Day' },\r\n { dsType: 'D', dsText: 'Virtual Adult Day' },\r\n { dsType: 'Y', dsText: 'Virtual Voc. Hab.' },\r\n { dsType: 'V', dsText: 'Voc. Hab.' },\r\n { dsType: 'N', dsText: 'Non-Billable' },\r\n //{ dsType: 'C', dsText: 'Combo' },\r\n //{ dsType: 'E', dsText: 'Enclave' },\r\n\r\n // { dsType: \"0\", dsText: \"Day Service\" }\r\n ];\r\n\r\n // Util\r\n //-------------------------------------------------------------------------\r\n function formatConsumersForClockIn(consumerIds) {\r\n var consumerString = consumerIds.map(c => c.id).join('|');\r\n consumerString += '|';\r\n return consumerString;\r\n }\r\n\r\n function formatConsumersForClockOut(consumerIds) {\r\n consumerIds = consumerIds.map(c => c.id);\r\n let consumerString = '';\r\n consumerIds.forEach(id => {\r\n activityCache[id].forEach(act => {\r\n if (act.Stop_Time === '') {\r\n consumerString += `${id},${act.Start_Time}|`;\r\n }\r\n });\r\n });\r\n return consumerString;\r\n }\r\n\r\n function checkIfBatched() {\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n dayServiceAjax.getDSIsLocationBatched(locationID, serviceDate, res => {\r\n if (res.length !== 0) {\r\n currentLocationBatched = true;\r\n } else {\r\n currentLocationBatched = false;\r\n }\r\n if (currentLocationBatched) {\r\n if ($.session.DayServiceUpdate) mulitSelectBtn.classList.add('disabled');\r\n if ($.session.DayServiceUpdate) miniRosterBtn.classList.add('disabled');\r\n batchedMessageDisplay.classList.remove('hidden');\r\n } else {\r\n if ($.session.DayServiceUpdate) mulitSelectBtn.classList.remove('disabled');\r\n if ($.session.DayServiceUpdate) miniRosterBtn.classList.remove('disabled');\r\n batchedMessageDisplay.classList.add('hidden');\r\n checkForNoLocation();\r\n }\r\n });\r\n }\r\n\r\n function checkForNoLocation() {\r\n if (!$.session.DayServiceUpdate) return; //Don't need to do anything with multiselect or miniroster for view only.\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (noLocationSet) {\r\n miniRosterBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.add('disabled');\r\n } else {\r\n miniRosterBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function getDayServiceActivity(callback) {\r\n activityCache = {};\r\n var tempDsConsumers = [];\r\n dsConsumers = [];\r\n displayedConsumers = [];\r\n\r\n //enabledConsumerString = enabledConsumers.map(c => c.id).join(',');\r\n enabledConsumerString = enabledConsumers.join(', ');\r\n if (enabledConsumerString.indexOf(', [object Object]') !== -1) {\r\n enabledConsumerString = enabledConsumerString.replaceAll(', [object Object]', '');\r\n }\r\n\r\n dayServiceAjax.getConsumerDayServiceActivity(\r\n enabledConsumerString,\r\n serviceDate,\r\n locationID,\r\n filterGroupID,\r\n filterGroupRetrieveID,\r\n res => {\r\n res.forEach(res => {\r\n obj = {\r\n Acuity: res.Acuity,\r\n AllowNonBillable: res.AllowNonBillable,\r\n Day_Service_Type: res.Day_Service_Type,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n Service_Date: res.Service_Date,\r\n Start_Time: res.Start_Time,\r\n Stop_Time: res.Stop_Time,\r\n ciStaffID: res.ciStaffID,\r\n isBatched: res.isBatched,\r\n dsGroupId: res.Day_service_group_id,\r\n };\r\n consumerObj = {\r\n id: res.ID,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n };\r\n if (activityCache[res.ID]) {\r\n arr = activityCache[res.ID];\r\n arr.push(obj);\r\n activityCache[res.ID] = arr;\r\n } else {\r\n activityCache[res.ID] = [obj];\r\n }\r\n tempDsConsumers.push(consumerObj);\r\n selectedGroupId = res.Day_service_group_id;\r\n });\r\n //filter out array to only get distinct consumers:\r\n var dsConsumerMap = new Map();\r\n for (const item of tempDsConsumers) {\r\n if (!dsConsumerMap.has(item.id)) {\r\n dsConsumerMap.set(item.id, true);\r\n dsConsumers.push({\r\n id: item.id,\r\n FirstName: item.FirstName,\r\n LastName: item.LastName,\r\n });\r\n }\r\n }\r\n //Add all consumers to the displayed consumers array\r\n dsConsumers.forEach(consumer => {\r\n displayedConsumers.push(consumer.id);\r\n });\r\n //===\r\n if (callback) callback();\r\n },\r\n );\r\n }\r\n\r\n function checkForCI(dsType) {\r\n //Chceks if selectedDSType is a DS type that allows CI returns true if it is.\r\n //If no dsType is provided function defaults to selectedDSType\r\n\r\n let type = dsType ? dsType : selectedDSType;\r\n\r\n switch (type) {\r\n case 'A':\r\n return true;\r\n case 'V':\r\n return true;\r\n case 'N':\r\n return true;\r\n case 'H':\r\n return true;\r\n case 'R':\r\n return true;\r\n case 'X':\r\n return true;\r\n case 'S':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n function errorPopup(text) {\r\n var errorPopup = POPUP.build({\r\n id: 'errorPopup',\r\n classNames: 'error',\r\n });\r\n var errorPopupText = document.createElement('p');\r\n errorPopupText.classList.add('errorTextArea');\r\n errorPopup.appendChild(errorPopupText);\r\n errorPopupText.innerHTML = text;\r\n POPUP.show(errorPopup);\r\n }\r\n\r\n // Search\r\n //-------------------------------------------------------------------------\r\n function searchDS(searchValue) {\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedConsumers = [];\r\n searchValue = searchValue.toLowerCase();\r\n dsConsumers.forEach(consumer => {\r\n var firstName = consumer.FirstName.toLowerCase();\r\n var lastName = consumer.LastName.toLowerCase();\r\n var fullName = `${lastName}, ${firstName}`;\r\n var fullNameReversed = `${lastName}, ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n var consumerCard = document.querySelector(`[data-consumerid=\"${consumer.id}\"]`);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n consumerCard.classList.remove('hidden');\r\n displayedConsumers.push(consumer.id);\r\n } else {\r\n consumerCard.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.id);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function convertDSValueToText(value) {\r\n var newtext;\r\n switch (value) {\r\n case 'C':\r\n newText = 'Combo';\r\n break;\r\n case 'A':\r\n newText = 'Adult Day';\r\n break;\r\n case 'V':\r\n newText = 'Voc. Hab.';\r\n break;\r\n case 'E':\r\n newText = 'Enclave';\r\n break;\r\n case 'N':\r\n newText = 'Non-Billable';\r\n break;\r\n case 'G':\r\n newText = 'Group Employment';\r\n break;\r\n //case 'H':\r\n //\tnewText = 'Restart Voc. Hab.';\r\n //\tbreak;\r\n //case 'R':\r\n //\tnewText = 'Restart Adult Day';\r\n //\tbreak;\r\n case 'X':\r\n newText = 'STEP Voc. Hab.';\r\n break;\r\n case 'S':\r\n newText = 'STEP Adult Day';\r\n break;\r\n case 'D':\r\n newText = 'Virtual Adult Day';\r\n break;\r\n case 'Y':\r\n newText = 'Virtual Voc. Hab.';\r\n break;\r\n default:\r\n newText = 'Day Service';\r\n }\r\n return newText;\r\n }\r\n\r\n function updateCurrentFilterDisplay() {\r\n\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationCache[locationID].locationName;\r\n\r\n if (document.getElementById('serviceDateBtn') != null)\r\n document.getElementById('serviceDateBtn').innerHTML = 'Date: ' + UTIL.formatDateFromIso(serviceDate);\r\n\r\n if (selectedGroupName === 'Everyone') {\r\n selectedGroupNameBtnWrap.style.display = 'none';\r\n } else {\r\n if (document.getElementById('selectedGroupNameBtn') != null)\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n selectedGroupNameBtnWrap.style.display = 'inherit';\r\n }\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { dayServicesFilterPopup('ALL') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationCache[locationID].locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { dayServicesFilterPopup('locationBtn') },\r\n });\r\n\r\n serviceDateBtn = button.build({\r\n id: 'serviceDateBtn',\r\n text: 'Date: ' + UTIL.formatDateFromIso(serviceDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { dayServicesFilterPopup('serviceDateBtn') },\r\n });\r\n\r\n selectedGroupNameBtn = button.build({\r\n id: 'selectedGroupNameBtn',\r\n text: 'Group: ' + selectedGroupName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { dayServicesFilterPopup('selectedGroupNameBtn') },\r\n });\r\n selectedGroupNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedGroupNameBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n serviceDateBtnWrap = document.createElement('div');\r\n serviceDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateBtnWrap.appendChild(serviceDateBtn);\r\n btnWrap.appendChild(serviceDateBtnWrap);\r\n\r\n selectedGroupNameBtnWrap = document.createElement('div');\r\n selectedGroupNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameBtn);\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n selectedGroupNameBtnWrap.setAttribute(\"id\", \"GroupNameCloseBtn\");\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedGroupNameBtn') {\r\n selectedGroupName = 'Everyone';\r\n temp__groupID = 'ALL'; \r\n }\r\n filterApplyAction(filterPopup);\r\n }\r\n\r\n // Action Nav\r\n //-------------------------------------------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n selectedConsumers.forEach(consumer => {\r\n const index = enabledConsumers.findIndex(x => x.id == consumer.id);\r\n if (index === -1) {\r\n //enabledConsumers.push(consumer);\r\n enabledConsumers.push(consumer.id);\r\n }\r\n });\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n clockInOutChoicePopup();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n //if (initRosterSelection) {\r\n // loadApp('home');\r\n //} else {\r\n DOM.toggleNavLayout();\r\n //}\r\n break;\r\n }\r\n }\r\n }\r\n function setupActionNav() {\r\n multiSelectBtn = document.getElementById('multiSelectBtn');\r\n multiDeleteRecordBtn = button.build({\r\n text: 'Delete Record',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: function () {\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n multiDeleteRecord(highlightedRows);\r\n //Reset Stuff\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n filterBtn.classList.toggle('disabled');\r\n multiSelectBtn.classList.toggle('enabled');\r\n miniRosterBtn.classList.toggle('disabled');\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll('.selected');\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove('selected');\r\n });\r\n },\r\n });\r\n\r\n multiInRecordBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: function () {\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n multiInOutRecord('in', highlightedHeaders);\r\n //Reset Stuff\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n filterBtn.classList.toggle('disabled');\r\n multiSelectBtn.classList.toggle('enabled');\r\n miniRosterBtn.classList.toggle('disabled');\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll('.selected');\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove('selected');\r\n });\r\n },\r\n });\r\n\r\n multiOutRecordBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: function () {\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n multiInOutRecord('out', highlightedHeaders);\r\n //Reset Stuff\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n filterBtn.classList.toggle('disabled');\r\n multiSelectBtn.classList.toggle('enabled');\r\n miniRosterBtn.classList.toggle('disabled');\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll('.selected');\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove('selected');\r\n });\r\n },\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([multiInRecordBtn, multiOutRecordBtn, multiDeleteRecordBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filter\r\n //-------------------------------------------------------------------------\r\n function populateFilterGroupDropdown() {\r\n let groupCodeObj = {};\r\n\r\n const data = rosterGroupResults.map(r => {\r\n // dataObj for quick lookup\r\n if (!groupCodeObj[r.GroupCode]) {\r\n groupCodeObj[r.GroupCode] = {\r\n groupCode: r.GroupCode,\r\n groupName: r.GroupName,\r\n members: r.Members ? r.Members.split('|') : r.Members,\r\n };\r\n }\r\n\r\n return {\r\n //value: `${r.GroupCode}-${r.RetrieveID}`,\r\n value: r.GroupCode,\r\n text: r.GroupName,\r\n attributes: [{ key: 'data-retrieveId', value: r.RetrieveID }],\r\n };\r\n });\r\n\r\n defaultVal = !filterGroupID || filterGroupID === '%' ? 'ALL' : filterGroupID;\r\n dropdown.populate(filterGroupDropdown, data, defaultVal);\r\n }\r\n function dayServicesFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: 'dayServiceFilterPopup',\r\n header: 'Filter',\r\n id: 'dayServiceFilterPopup',\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(fitlerApplyBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateBtn')\r\n filterPopup.appendChild(filterDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(filterLocationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedGroupNameBtn')\r\n filterPopup.appendChild(filterGroupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n POPUP.show(filterPopup);\r\n\r\n dropdown.populate(filterLocationDropdown, locationDropdownData, locationID);\r\n populateFilterGroupDropdown();\r\n }\r\n function filterApplyAction(popup) {\r\n //I need to close the filter popup after clicking apply and not in the callback of an AJAX call.\r\n //Issue is if there is a slow connection the apply button can be clicked multiple times.\r\n \r\n if (temp__serviceDate) {\r\n serviceDate = temp__serviceDate;\r\n roster2.updateSelectedDate(serviceDate);\r\n }\r\n if (temp__groupID) {\r\n filterGroupID = temp__groupID;\r\n filterGroupRetrieveID = temp__retrieveID;\r\n }\r\n\r\n //MAT\r\n locationName = filterLocationDropdown.firstElementChild.options[filterLocationDropdown.firstElementChild.selectedIndex].innerText;\r\n locationID = filterLocationDropdown.firstElementChild.options[filterLocationDropdown.firstElementChild.selectedIndex].value;\r\n\r\n roster2.updateSelectedLocationId(locationID, locationName);\r\n noLocationSet = locationID === '' ? true : false;\r\n checkForNoLocation();\r\n\r\n // Update Default Location if Remember Last Location is set:\r\n if (defaults.rememberLastLocation('dayServices'))\r\n defaults.setLocation('dayServices', locationID);\r\n\r\n updateCurrentFilterDisplay();\r\n\r\n //1) get enabled consumers\r\n try {\r\n dayServiceAjax.getDayServiceGetEnabledConsumers(serviceDate, locationID, res => {\r\n fitlerApplyBtn.disabled = false;\r\n\r\n const allowedConsumers = [];\r\n res.forEach(r => {\r\n const consumer_id = r.consumerId;\r\n allowedConsumers.push({ consumer_id: consumer_id });\r\n enabledConsumers.push(consumer_id);\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n doStuff();\r\n });\r\n } catch (error) {\r\n fitlerApplyBtn.disabled = false;\r\n POPUP.hide(popup);\r\n }\r\n\r\n function doStuff() {\r\n getDayServiceActivity(() => {\r\n //2.1) Check if location/Date combo is batched\r\n checkIfBatched();\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n\r\n //3) get CI staff for new location and date\r\n //dayServiceAjax.getCiStaff(serviceDate, locationID, (res) => {\r\n //\tciDropdownData = res.map((ci) => {\r\n //\t\tvar id = `ci-${ci.id}`;\r\n //\t\tvar value = ci.id;\r\n //\t\tvar text = ci.fullName;\r\n //\t\treturn {\r\n //\t\t\tid,\r\n //\t\t\tvalue,\r\n //\t\t\ttext,\r\n //\t\t};\r\n //\t});\r\n //\tciDropdownData.unshift({ id: 'ci-0', value: '', text: '' });\r\n //});\r\n\r\n //4) get groups for new location\r\n dayServiceAjax.getDayServiceGroups($.session.Token, locationID, res => {\r\n dsGroupsCache = {};\r\n groupDropdownData = res.map((group, index) => {\r\n var { groupId, groupDescription } = group;\r\n if (index === 0) selectedGroupId = groupId;\r\n\r\n if (!dsGroupsCache[groupId]) {\r\n dsGroupsCache[groupId] = {\r\n id: groupId,\r\n value: groupDescription,\r\n };\r\n }\r\n\r\n return {\r\n id: groupId,\r\n value: groupId,\r\n text: groupDescription,\r\n };\r\n });\r\n groupDropdownData.unshift({ id: '%', value: '', text: '' });\r\n });\r\n }\r\n }\r\n\r\n // DS Cards\r\n //-------------------------------------------------------------------------\r\n function handleDayServiceCardEvents(element, consumer) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isHeader = event.target.classList.contains('card__header');\r\n // consumer = event.target.dataset.consumerid;\r\n\r\n if (!isRow && !isHeader) return; // if not row or header return\r\n if (isRow) {\r\n if (enableMultiEdit) {\r\n event.target.classList.toggle('selected');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n if (highlightedRows.length > 0) {\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n } else {\r\n multiDeleteRecordBtn.classList.add('disabled');\r\n }\r\n } else if (!enableMultiEdit) {\r\n rowPopup(element, consumer);\r\n }\r\n }\r\n if (isHeader) {\r\n if (enableMultiEdit) {\r\n event.target.classList.toggle('selected');\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n if (highlightedHeaders.length > 0) {\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n } else {\r\n multiInRecordBtn.classList.add('disabled');\r\n multiOutRecordBtn.classList.add('disabled');\r\n }\r\n }\r\n }\r\n }\r\n function buildCards() {\r\n if (!dsConsumers || dsConsumers.length === 0) {\r\n // show message\r\n const message = `There are no individuals clocked in at this location for the selected date. Please use the Roster button below to select individuals to clock in.`;\r\n dsCardArea.innerHTML = `

${message}

`;\r\n return;\r\n }\r\n\r\n //sort consumers Alphabeically\r\n dsConsumers.sort(function (a, b) {\r\n var textA = a.LastName.toUpperCase();\r\n var textB = b.LastName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n //For each unique consumer, create a card:\r\n dsConsumers.forEach(consumer => {\r\n var card = document.createElement('div');\r\n card.classList.add('card', 'dayServiceActivityCard');\r\n card.setAttribute('data-consumerID', consumer.id);\r\n card.setAttribute('id', 'consumer-' + consumer.id);\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n cardHeader.setAttribute('data-consumerID', consumer.id);\r\n\r\n var cardBody = document.createElement('div');\r\n cardBody.classList.add('card__body');\r\n\r\n cardHeader.innerHTML = `\r\n \r\n

${activityCache[consumer.id][0].FirstName} ${activityCache[consumer.id][0].LastName}

\r\n

${activityCache[consumer.id][0].Acuity === ''\r\n ? ''\r\n : 'Acuity: ' + activityCache[consumer.id][0].Acuity\r\n }

\r\n `;\r\n\r\n var cardBodyHeader = document.createElement('div');\r\n cardBodyHeader.innerHTML = `
In
Out
DS Type
Group
`; //
CI
\r\n cardBodyHeader.classList.add('dayServiceCardBodyHeader');\r\n cardBody.appendChild(cardBodyHeader);\r\n\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n //For each activity that consumer has, create a new row:\r\n activityCache[consumer.id].forEach(act => {\r\n var dsGroup = dsGroupsCache[act.dsGroupId];\r\n var dsGroupValue = dsGroup ? dsGroup.value : null;\r\n var displayStartTime = UTIL.convertFromMilitary(act.Start_Time);\r\n var displayEndTime = UTIL.convertFromMilitary(act.Stop_Time);\r\n var cardRow = document.createElement('div');\r\n cardRow.classList.add('dayServiceCardRow', 'table__row');\r\n\r\n if (act.Day_Service_Type !== '')\r\n var dayServiceDisplay = convertDSValueToText(act.Day_Service_Type);\r\n else var dayServiceDisplay = icons.error;\r\n\r\n //A V N allow CI\r\n //let allowCI = false;\r\n //let hasCI = false;\r\n //if (checkForCI(act.Day_Service_Type)) {\r\n //\tcardRow.setAttribute('data-allow-CI', true);\r\n //\tallowCI = true;\r\n //\tif (act.ciStaffID !== '') {\r\n //\t\tcardRow.setAttribute('data-has-CI', true);\r\n //\t\thasCI = true;\r\n //\t} else {\r\n //\t\tcardRow.setAttribute('data-has-CI', false);\r\n //\t}\r\n //} else {\r\n //\tcardRow.setAttribute('data-allow-CI', false);\r\n //}\r\n\r\n //ADD in time and consumer ID data attributes for easier multi-select opperations\r\n cardRow.setAttribute('data-in-time', act.Start_Time);\r\n cardRow.setAttribute('data-consumer-id', consumer.id);\r\n\r\n cardRow.innerHTML = `\r\n
${displayStartTime}
\r\n
${displayEndTime === '' ? icons.error : displayEndTime}
\r\n
${dayServiceDisplay}
\r\n
${dsGroupValue ? dsGroupValue : act.Day_Service_Type === 'S' || act.Day_Service_Type === 'X' ? icons.error : '-'}
\r\n `;\r\n //
${allowCI === true ? (hasCI === true ? icons.checkmark : '-') : '-'}
\r\n //View only has no need to click on a row:\r\n if ($.session.DayServiceUpdate) {\r\n cardRow.addEventListener('click', function () {\r\n handleDayServiceCardEvents(event.target, consumer.id);\r\n });\r\n }\r\n cardBody.appendChild(cardRow);\r\n });\r\n\r\n cardHeader.addEventListener('click', function () {\r\n handleDayServiceCardEvents(event.target);\r\n });\r\n dsCardArea.appendChild(card);\r\n });\r\n\r\n //Add place holders for odd number of cards;\r\n var placeholder1 = document.createElement('div');\r\n var placeholder2 = document.createElement('div');\r\n var placeholder3 = document.createElement('div');\r\n var placeholder4 = document.createElement('div');\r\n placeholder1.classList.add('cardPlaceholder');\r\n placeholder2.classList.add('cardPlaceholder');\r\n placeholder3.classList.add('cardPlaceholder');\r\n placeholder4.classList.add('cardPlaceholder');\r\n dsCardArea.appendChild(placeholder1);\r\n dsCardArea.appendChild(placeholder2);\r\n dsCardArea.appendChild(placeholder3);\r\n dsCardArea.appendChild(placeholder4);\r\n }\r\n\r\n //==== Muti Button Stuff =========================\r\n function enableMultiEditRows(multiBtn) {\r\n setupActionNav();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n miniRosterBtn.classList.toggle('disabled');\r\n\r\n enableMultiEdit = !enableMultiEdit;\r\n multiBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n multiSelectAllNoneArea.classList.remove('hidden');\r\n ACTION_NAV.show();\r\n } else {\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n ACTION_NAV.hide();\r\n }\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n highlightedHeaders.forEach(header => header.classList.remove('selected'));\r\n }\r\n //When Delete record button is clicked -\r\n function multiDeleteRecord(highlightedRows) {\r\n deleteConfirmation(\r\n null,\r\n (res = () => {\r\n if (res) {\r\n var recordsToDelete = '';\r\n highlightedRows.forEach(row => {\r\n recordsToDelete += `${row.dataset.consumerId},${row.dataset.inTime}|`;\r\n });\r\n deleteDSRecord(recordsToDelete);\r\n }\r\n }),\r\n );\r\n }\r\n //when in or out button is clicked -\r\n function multiInOutRecord(type, highlightedHeaders) {\r\n selectedConsumers = [];\r\n highlightedHeaders.forEach(row => {\r\n obj = {};\r\n obj['id'] = row.dataset.consumerid;\r\n selectedConsumers.push(obj);\r\n });\r\n clockInOutActionPopup(type);\r\n }\r\n\r\n //====== POPUP WHEN CLICKING ON A ACTIVITY ROW =========================\r\n function rowPopup(element, consumer) {\r\n //==== !No Popup When Location is Batched! ====\r\n if (currentLocationBatched) {\r\n return;\r\n }\r\n //======= REST =========\r\n var ciStaffID;\r\n var dsType;\r\n var groupID;\r\n var newInTime;\r\n var newOutTime;\r\n\r\n let outTime =\r\n element.childNodes[3].childElementCount !== 0\r\n ? null\r\n : UTIL.convertToMilitary(element.childNodes[3].innerHTML);\r\n let inTime = UTIL.convertToMilitary(element.childNodes[1].innerHTML);\r\n activityCache[consumer].forEach(act => {\r\n if (act.Start_Time === inTime) {\r\n ciStaffID = act.ciStaffID;\r\n dsType = act.Day_Service_Type;\r\n groupID = act.dsGroupId;\r\n }\r\n });\r\n\r\n var popup = POPUP.build({\r\n classNames: 'dayServiceRowPopup',\r\n header: `${activityCache[consumer][0].FirstName} ${activityCache[consumer][0].LastName}`,\r\n id: `consumer${consumer}`,\r\n });\r\n\r\n var inTimeField = input.build({\r\n id: 'inTime',\r\n label: 'In Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: inTime,\r\n });\r\n var outTimeField = input.build({\r\n id: 'outTime',\r\n label: 'Out Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: outTime,\r\n });\r\n\r\n var dsTypeDropdown = dropdown.build({\r\n dropdownId: 'dsTypeDropdown',\r\n label: 'DS Type',\r\n style: 'secondary',\r\n });\r\n //var ciDropdown = dropdown.build({\r\n //\tdropdownId: 'ciDropdown',\r\n //\tlabel: 'CI',\r\n //\tstyle: 'secondary',\r\n //});\r\n groupDropdown = dropdown.build({\r\n id: 'groupDropdown',\r\n dropdownId: 'groupDropdown',\r\n label: 'Group',\r\n style: 'secondary',\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n id: 'rowSaveBtn',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: function () {\r\n if (IsSaveBtnDisable) {\r\n dsTypeDropdown = document.getElementById('dsTypeDropdown');\r\n //ciStaffDropdown = document.getElementById('ciDropdown');\r\n groupDropdown = document.getElementById('groupDropdown');\r\n //if (ciStaffDropdown) ciStaffID = ciStaffDropdown.options[ciStaffDropdown.selectedIndex].value;\r\n if (groupDropdown)\r\n selectedGroupId = groupDropdown.options[groupDropdown.selectedIndex].value;\r\n selectedDSType = dsTypeDropdown.options[dsTypeDropdown.selectedIndex].value;\r\n saveTypeAndCi(\r\n consumer,\r\n inTime,\r\n newInTime,\r\n outTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffID,\r\n selectedGroupId,\r\n );\r\n POPUP.hide(popup);\r\n }\r\n IsSaveBtnDisable = true;\r\n },\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete Record',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'delete',\r\n callback: function () {\r\n deleteConfirmation(\r\n popup,\r\n (res = () => {\r\n if (res) {\r\n consumerDeleteString = `${consumer},${inTime}|`;\r\n deleteDSRecord(consumerDeleteString);\r\n POPUP.hide(popup);\r\n }\r\n }),\r\n );\r\n },\r\n });\r\n\r\n inTimeField.addEventListener('change', () => {\r\n let inTimeField = document.getElementById('inTime');\r\n newInTime = inTimeField.value;\r\n });\r\n\r\n outTimeField.addEventListener('change', () => {\r\n let outTimeField = document.getElementById('outTime');\r\n newOutTime = outTimeField.value;\r\n });\r\n\r\n dsTypeDropdown.addEventListener('change', () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedDSType = selectedOption.value;\r\n checkRequiredFieldsOfNewEntry();\r\n //let allowCi = checkForCI();\r\n //if (allowCi) {\r\n //\tciDropdown.style.display = '';\r\n //\tdropdown.populate(ciDropdown, ciDropdownData);\r\n //} else {\r\n //\tciDropdown.style.display = 'none';\r\n //}\r\n });\r\n\r\n saveBtn.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && saveBtn.classList.contains('disabled')) {\r\n IsSaveBtnDisable = false;\r\n }\r\n });\r\n\r\n groupDropdown.addEventListener('change', () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedGroup = selectedOption.innerText;\r\n selectedGroupId = selectedOption.id;\r\n checkRequiredFieldsOfNewEntry();\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n\r\n popup.appendChild(inTimeField);\r\n popup.appendChild(outTimeField);\r\n popup.appendChild(dsTypeDropdown);\r\n popup.appendChild(groupDropdown);\r\n //popup.appendChild(ciDropdown);\r\n //ciDropdown.style.display = element.dataset.allowCi === 'true' ? 'auto' : 'none';\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n\r\n dropdown.populate(dsTypeDropdown, dsDropdownData, dsType);\r\n //dropdown.populate(ciDropdown, ciDropdownData, ciStaffID);\r\n dropdown.populate(groupDropdown, groupDropdownData, groupID);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n //====== POPUP WARNING WHEN CONSUMER HAS EXISTING DAY SERVICE ACTIVITY ===========\r\n function consumerExistingDayServicePopup(consumerList) {\r\n var popup = POPUP.build({\r\n header: 'At least one consumer has existing day service activity at another location.',\r\n });\r\n\r\n var continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup('in');\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n roster2.clearActiveConsumers();\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(continueBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n var textArea;\r\n consumerList.forEach(consumer => {\r\n textArea = document.createElement('p');\r\n textArea.innerHTML = `\r\n
Name: ${consumer.name}
\r\n
Location: ${consumer.location}
\r\n
Start Time: ${consumer.startTime}
\r\n
End Time: ${consumer.endTime}
\r\n

\r\n `;\r\n popup.appendChild(textArea);\r\n });\r\n\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n\r\n function checkRequiredFieldsOfNewEntry() {\r\n\r\n var selectedGroupId = '';\r\n var selectedDSTypeId = '';\r\n var group = document.getElementById('groupDropdown');\r\n var dsType = document.getElementById('dsTypeDropdown');\r\n if (group)\r\n selectedGroupId = group.options[group.selectedIndex].value;\r\n if (dsType)\r\n selectedDSTypeId = dsType.options[dsType.selectedIndex].value;\r\n\r\n if (selectedGroupId === '' && (selectedDSTypeId == 'X' || selectedDSTypeId == 'S')) {\r\n groupDropdown.classList.add('error');\r\n } else {\r\n groupDropdown.classList.remove('error');\r\n }\r\n setBtnStatusOfSave();\r\n }\r\n\r\n function setBtnStatusOfSave() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n //====== POPUP DISPLAYING OPTION TO CLOCKIN OR CLOCK OUT =========================\r\n function clockInOutChoicePopup() {\r\n let popup = POPUP.build({\r\n header: 'Please Choose an Option',\r\n id: 'clockInOutChoicePopup',\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n\r\n const idString = selectedConsumers.map(function (sc) {\r\n return sc.id\r\n }).join(\",\");\r\n\r\n //Get a list of any existing day service activity for this consumer, on today's date, on other locations\r\n const clockedInConsumers = await dayServiceAjax.getDayServiceClockedInConsumers({\r\n token: $.session.Token,\r\n consumerIdString: idString,\r\n serviceDate: serviceDate,\r\n locationId: locationID,\r\n });\r\n\r\n //If the consumer has no existing day service activity, behave normally...\r\n if (clockedInConsumers.length === 0) {\r\n clockInOutActionPopup('in');\r\n } else {\r\n consumerExistingDayServicePopup(clockedInConsumers);\r\n }\r\n },\r\n });\r\n let clockOutBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup('out');\r\n },\r\n });\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('choiceBtnWrap');\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(clockOutBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n //====== ACTION FOR CLOCKING IN OR OUT =========================\r\n // in / clock out popup\r\n function clockInOutActionPopup(choice) {\r\n let inPopup = POPUP.build({\r\n header: 'Clock In',\r\n id: 'clockInOutPopup',\r\n });\r\n\r\n let outPopup = POPUP.build({\r\n header: 'Clock Out',\r\n id: 'clockInOutPopup',\r\n });\r\n\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let timeInField = input.build({\r\n id: 'inTime',\r\n label: 'In Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: currentTime,\r\n });\r\n\r\n let timeOutField = input.build({\r\n id: 'outTime',\r\n label: 'Out Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: currentTime,\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'clockInBtn',\r\n callback: function () {\r\n clockIn(timeInField);\r\n POPUP.hide(inPopup);\r\n roster2.clearActiveConsumers();\r\n //Clock in function\r\n },\r\n });\r\n\r\n let clockOutBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n clockOut();\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n //clock out function\r\n },\r\n });\r\n\r\n let inCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(inPopup);\r\n },\r\n });\r\n\r\n let outCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n timeInField.addEventListener('change', function () {\r\n let inTimeField = document.getElementById('inTime');\r\n if (inTimeField.value === '') {\r\n clockInBtn.classList.add('disabled');\r\n timeInField.classList.add('error');\r\n } else {\r\n clockInBtn.classList.remove('disabled');\r\n timeInField.classList.remove('error');\r\n }\r\n });\r\n\r\n timeOutField.addEventListener('change', function () {\r\n let outTimeField = document.getElementById('outTime');\r\n if (outTimeField.value === '') {\r\n clockOutBtn.classList.add('disabled');\r\n timeOutField.classList.add('error');\r\n } else {\r\n clockOutBtn.classList.remove('disabled');\r\n timeOutField.classList.remove('error');\r\n }\r\n });\r\n\r\n switch (choice) {\r\n case 'in': {\r\n inPopup.appendChild(timeInField);\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(inCancelBtn);\r\n inPopup.appendChild(btnWrap);\r\n POPUP.show(inPopup);\r\n break;\r\n }\r\n case 'out': {\r\n outPopup.appendChild(timeOutField);\r\n btnWrap.appendChild(clockOutBtn);\r\n btnWrap.appendChild(outCancelBtn);\r\n outPopup.appendChild(btnWrap);\r\n POPUP.show(outPopup);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function clockIn() {\r\n let inTime = document.getElementById('inTime').value;\r\n inTime += ':00';\r\n let clockInConsumerString = formatConsumersForClockIn(selectedConsumers);\r\n let selectedConsumerCount = selectedConsumers.length;\r\n //get consuemrs with existing clockins TODO. call new ajax. $.session.Token\r\n dayServiceAjax.dayServiceClockIn(\r\n clockInConsumerString,\r\n serviceDate,\r\n locationID,\r\n inTime,\r\n res => {\r\n //Overlap error occured\r\n if (res.indexOf('615') !== -1) {\r\n let start = res.search('');\r\n let end = res.search('');\r\n var overlapConsumers = res.substring(start + 11, end - 1).split('|');\r\n }\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n if (overlapConsumers) {\r\n overlapConsumers.forEach(consumer => {\r\n let card = document.getElementById('consumer-' + consumer);\r\n cardHeader = card.querySelector('.card__header');\r\n cardHeader.classList.add('overlapError');\r\n accuityDisplay = cardHeader.querySelector('.accuityDisplay');\r\n accuityDisplay.innerHTML = 'TIME OVERLAP';\r\n });\r\n }\r\n });\r\n },\r\n );\r\n selectedConsumers = null;\r\n }\r\n\r\n function clockOut() {\r\n let outTime = document.getElementById('outTime').value;\r\n outTime += ':00';\r\n let clockOutConsumerString = formatConsumersForClockOut(selectedConsumers);\r\n dayServiceAjax.updateDayServiceActivity(\r\n clockOutConsumerString,\r\n 'Stop Time',\r\n outTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n //Overlap error occured\r\n if (res.indexOf('615') !== -1) {\r\n let start = res.search('');\r\n let end = res.search('');\r\n var overlapConsumers = res.substring(start + 11, end - 1).split('|');\r\n }\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n if (overlapConsumers) {\r\n overlapConsumers.forEach(consumer => {\r\n let card = document.getElementById('consumer-' + consumer);\r\n cardHeader = card.querySelector('.card__header');\r\n cardHeader.classList.add('overlapError');\r\n accuityDisplay = cardHeader.querySelector('.accuityDisplay');\r\n accuityDisplay.innerHTML = 'TIME OVERLAP';\r\n });\r\n }\r\n });\r\n },\r\n );\r\n selectedConsumers = null;\r\n }\r\n\r\n function deleteDSRecord(consumerDeleteString) {\r\n // let consumerString = `${consumerId},${inTime}|`;\r\n dayServiceAjax.deleteDayServiceActivity(consumerDeleteString, serviceDate, locationID, res => {\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n });\r\n }\r\n //POPUP for confirming the delete action\r\n function deleteConfirmation(orgPopup, callback) {\r\n if (orgPopup) POPUP.hide(orgPopup);\r\n\r\n var confPopup = POPUP.build({\r\n classNames: 'warning',\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'no',\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n if (orgPopup) POPUP.show(orgPopup);\r\n callback((res = false));\r\n },\r\n });\r\n var confirmBtn = button.build({\r\n text: 'Delete Entry',\r\n style: 'secondary',\r\n type: 'outlined',\r\n id: 'confDeleteBtn',\r\n icon: 'delete',\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n callback((res = true));\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(confirmBtn);\r\n\r\n var textArea = document.createElement('p');\r\n textArea.classList.add('warningTextArea');\r\n textArea.innerHTML = 'Are you sure you want to delete this record?';\r\n confPopup.appendChild(textArea);\r\n confPopup.appendChild(btnWrap);\r\n POPUP.show(confPopup);\r\n }\r\n\r\n //Update single DS record from the row popup. Curently updates everything even if it wasn't changed.\r\n function saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n ) {\r\n let consumerString = `${consumerId},${orgInTime}|`;\r\n\r\n //Update Start Time && Stop Times\r\n if (newInTime && newOutTime) {\r\n newInTime += ':00';\r\n newOutTime += ':00';\r\n try {\r\n if (newInTime > newOutTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Start Time',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Start Time Overlaps with existing Activity');\r\n },\r\n );\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Stop Time',\r\n newOutTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Stop Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newInTime = null;\r\n newOutTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Times Overlap');\r\n }\r\n }\r\n }\r\n //Only New In Time\r\n else if (newInTime && !newOutTime) {\r\n newInTime += ':00';\r\n try {\r\n if (newInTime > orgEndTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Start Time',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Start Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newInTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Start Time Overlaps with End Time');\r\n }\r\n }\r\n }\r\n //Only New Out Time\r\n else if (newOutTime && !newInTime) {\r\n newOutTime += ':00';\r\n try {\r\n if (newOutTime < orgInTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Stop Time',\r\n newOutTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Stop Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newOutTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Stop Time Overlaps with Start Time');\r\n }\r\n }\r\n } else\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n }\r\n\r\n function saveTypeAndCi(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n selectedGroupId,\r\n ) {\r\n let consumerString = `${consumerId},${orgInTime}|`;\r\n //Update Ds Type\r\n var updateDSTypePromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Service Type',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n selectedDSType,\r\n selectedGroupId,\r\n () => {\r\n resolve('success');\r\n },\r\n );\r\n });\r\n\r\n //Update CI\r\n if (checkForCI() && ciStaffId !== '') {\r\n var updateCIPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.updateCIStaff(\r\n consumerId,\r\n ciStaffId,\r\n orgInTime,\r\n serviceDate,\r\n locationID,\r\n () => {\r\n resolve('success');\r\n },\r\n );\r\n });\r\n } else {\r\n var deleteCIPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.deleteCIStaffId(consumerId, orgInTime, serviceDate, locationID, () => {\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n if (updateCIPromise) {\r\n Promise.all([updateDSTypePromise, updateCIPromise]).then(function () {\r\n saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n );\r\n });\r\n } else if (deleteCIPromise) {\r\n Promise.all([updateDSTypePromise, deleteCIPromise]).then(function () {\r\n saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n );\r\n });\r\n }\r\n }\r\n\r\n function buildPageComponents() {\r\n // custom search stuff\r\n SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('consumerSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n id: 'multiSelectBtn',\r\n callback: function () {\r\n enableMultiEditRows(mulitSelectBtn);\r\n filterBtn.classList.toggle('disabled');\r\n },\r\n });\r\n\r\n multiSelectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'selectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectAllBtn',\r\n callback: function () {\r\n if (Object.keys(activityCache).length === displayedConsumers.length) {\r\n var allRows = [].slice.call(document.querySelectorAll('.table__row'));\r\n var allHeaders = [].slice.call(document.querySelectorAll('.card__header'));\r\n allRows.forEach(row => row.classList.add('selected'));\r\n allHeaders.forEach(header => header.classList.add('selected'));\r\n if (allRows.length !== 0) {\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n }\r\n } else if (displayedConsumers.length !== 0) {\r\n displayedConsumers.forEach(consumer => {\r\n var card = document.getElementById(`consumer-${consumer}`);\r\n card.querySelector('.card__header').classList.add('selected');\r\n var rows = card.querySelectorAll('.table__row');\r\n rows.forEach(row => row.classList.add('selected'));\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n });\r\n }\r\n },\r\n });\r\n\r\n multiSelectNoneBtn = button.build({\r\n text: 'Select None',\r\n icon: 'deSelectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectNoneBtn',\r\n callback: function () {\r\n multiOutRecordBtn.classList.add('disabled');\r\n multiInRecordBtn.classList.add('disabled');\r\n multiDeleteRecordBtn.classList.add('disabled');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n highlightedHeaders.forEach(header => header.classList.remove('selected'));\r\n },\r\n });\r\n\r\n filterLocationDropdown = dropdown.build({\r\n dropdownId: 'dsLocationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n\r\n filterGroupDropdown = dropdown.build({\r\n dropdownId: 'dsGroupDropdown',\r\n label: 'Group',\r\n style: 'secondary',\r\n });\r\n\r\n filterDateInput = input.build({\r\n id: 'dsFilterDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: serviceDate,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n fitlerApplyBtn = button.build({\r\n id: 'filterApply',\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n disabled: false,\r\n callback: function () {\r\n fitlerApplyBtn.disabled = true;\r\n filterApplyAction(filterPopup);\r\n POPUP.hide(filterPopup); \r\n },\r\n });\r\n\r\n updateCurrentFilterDisplay();\r\n\r\n //Disable multi-select button where there are 0 consumers displayed:\r\n // if (displayedConsumers.length === 0) multiSelectBtn.classList.add('disabled');\r\n\r\n multiSelectAllNoneArea = document.createElement('div');\r\n multiSelectAllNoneArea.classList.add('btnWrap');\r\n multiSelectAllNoneArea.setAttribute('id', 'selectAllSelectNoneWrap');\r\n multiSelectAllNoneArea.appendChild(multiSelectAllBtn);\r\n multiSelectAllNoneArea.appendChild(multiSelectNoneBtn);\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n dayServiceLocation: locationID,\r\n dayServiceServiceDate: serviceDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n reportsBtn = createMainReportButton([{ text: 'Individual Day Service Activity Report' }]);\r\n\r\n batchedMessageDisplay.innerHTML = 'The selected location is batched for this date.';\r\n batchedMessageDisplay.classList.add('batchedMessageDisplay');\r\n batchedMessageDisplay.classList.add('hidden');\r\n\r\n let filterSelectReportBtnWrap = document.createElement('div');\r\n filterSelectReportBtnWrap.classList.add('btnWrap', 'filterSelectReportBtnWrap'); \r\n if ($.session.DayServiceUpdate) filterSelectReportBtnWrap.appendChild(mulitSelectBtn); //No need to multi select for view only\r\n filterSelectReportBtnWrap.appendChild(reportsBtn);\r\n DOM.ACTIONCENTER.appendChild(filterSelectReportBtnWrap);\r\n if ($.session.DayServiceUpdate) DOM.ACTIONCENTER.appendChild(multiSelectAllNoneArea); //no need to multi select for view only\r\n DOM.ACTIONCENTER.appendChild(SEARCH_WRAP);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n\r\n DOM.ACTIONCENTER.appendChild(batchedMessageDisplay);\r\n //if (dsCardArea.outerHTML.indexOf('style=\\\"display: none;\\\"') != -1) {\r\n // dsCardArea.outerHTML = dsCardArea.outerHTML.replace('\"style=\\\"display: none;\\\"', '');\r\n //}\r\n\r\n DOM.ACTIONCENTER.appendChild(dsCardArea);\r\n roster2.toggleActionCenterChildrenVisiblity('show');\r\n buildCards();\r\n }\r\n\r\n async function initialPageBuild() {\r\n dsDropdownData = dsTypes.map(ds => {\r\n var id = `ds-${ds.dsType}`;\r\n var value = ds.dsType;\r\n var text = ds.dsText;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n if ($.session.applicationName.toLowerCase() === 'gatekeeper') {\r\n dsDropdownData.push({ id: '', value: '0', text: '' });\r\n }\r\n buildPageComponents();\r\n addEventListeners();\r\n //checkIfBatched();\r\n document.getElementById('searchBtn').click();\r\n rosterGroupResults = (await customGroupsAjax.getConsumerGroups(locationID))\r\n .getConsumerGroupsJSONResult;\r\n }\r\n\r\n function addEventListeners() {\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n searchDS(event.target.value);\r\n });\r\n\r\n filterLocationDropdown.addEventListener('change', async event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n temp__locationID = selectedOption.value;\r\n\r\n rosterGroupResults = (await customGroupsAjax.getConsumerGroups(temp__locationID))\r\n .getConsumerGroupsJSONResult;\r\n populateFilterGroupDropdown();\r\n });\r\n\r\n filterGroupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n temp__groupID = selectedOption.value;\r\n temp__retrieveID = selectedOption.dataset.retrieveid;\r\n selectedGroupName = selectedOption.innerHTML;\r\n });\r\n\r\n filterDateInput.addEventListener('change', event => {\r\n temp__serviceDate = event.target.value;\r\n });\r\n\r\n //MutationObserver to detect when leaving the module, reset values\r\n var observNode = document.getElementById('actioncenter');\r\n var config = { attributes: true };\r\n var callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-module') {\r\n observer.disconnect();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) miniRosterBtn.classList.remove('disabled');\r\n enableMultiEdit = false;\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n }\r\n\r\n function initPageLoad() {\r\n let tempDsConsumers = [];\r\n let dsEnabledConsumers;\r\n serviceDate = UTIL.getTodaysDate();\r\n\r\n //Check to see if CI should be enabled\r\n const checkCiPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDateToCheckShowCI(res => {\r\n var today = new Date();\r\n ciDateToCompare = new Date(res[0].Setting_Value);\r\n if (ciDateToCompare <= today) {\r\n $.session.ciBShow = true;\r\n }\r\n resolve('success');\r\n });\r\n });\r\n\r\n //Get CI Staff for CI Dropdown\r\n const getCiStaffPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getCiStaff(serviceDate, locationID, res => {\r\n ciDropdownData = res.map(ci => {\r\n var id = `ci-${ci.id}`;\r\n var value = ci.id;\r\n var text = ci.fullName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n ciDropdownData.unshift({ id: 'ci-0', value: '', text: '' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n //Get consumer activities\r\n const getEnabledConsumersPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceGetEnabledConsumers(serviceDate, locationID, res => {\r\n dsEnabledConsumers = res.map(r => r.consumerId);\r\n dayServiceAjax.getConsumerDayServiceActivity(\r\n dsEnabledConsumers,\r\n serviceDate,\r\n locationID,\r\n filterGroupID,\r\n filterGroupRetrieveID,\r\n res => {\r\n dsConsumers = [];\r\n res.forEach(res => {\r\n actObj = {\r\n Acuity: res.Acuity,\r\n AllowNonBillable: res.AllowNonBillable,\r\n Day_Service_Type: res.Day_Service_Type,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n Service_Date: res.Service_Date,\r\n Start_Time: res.Start_Time,\r\n Stop_Time: res.Stop_Time,\r\n ciStaffID: res.ciStaffID,\r\n isBatched: res.isBatched,\r\n dsGroupId: res.Day_service_group_id,\r\n };\r\n consumerObj = {\r\n id: res.ID,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n };\r\n if (activityCache[res.ID]) {\r\n arr = activityCache[res.ID];\r\n arr.push(actObj);\r\n activityCache[res.ID] = arr;\r\n } else {\r\n activityCache[res.ID] = [actObj];\r\n }\r\n // if (!dsConsumers[res.ID]) {\r\n // dsConsumers[res.ID] = consumerObj;\r\n // }\r\n tempDsConsumers.push(consumerObj);\r\n selectedGroupId = res.Day_service_group_id;\r\n });\r\n //filter out array to only get distinct consumers:\r\n var dsConsumerMap = new Map();\r\n for (const item of tempDsConsumers) {\r\n if (!dsConsumerMap.has(item.id)) {\r\n dsConsumerMap.set(item.id, true);\r\n dsConsumers.push({\r\n id: item.id,\r\n FirstName: item.FirstName,\r\n LastName: item.LastName,\r\n });\r\n }\r\n }\r\n //Add all consumers to the displayed consumers array\r\n dsConsumers.forEach(consumer => {\r\n displayedConsumers.push(consumer.id);\r\n });\r\n\r\n resolve('success');\r\n },\r\n );\r\n });\r\n });\r\n\r\n //Get Groups\r\n const getGroupsPrommise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceGroups($.session.Token, locationID, res => {\r\n dsGroupsCache = {};\r\n groupDropdownData = res.map((group, index) => {\r\n var { groupId, groupDescription } = group;\r\n\r\n if (!dsGroupsCache[groupId]) {\r\n dsGroupsCache[groupId] = {\r\n id: groupId,\r\n value: groupDescription,\r\n };\r\n }\r\n\r\n return {\r\n id: groupId,\r\n value: groupId,\r\n text: groupDescription,\r\n };\r\n });\r\n groupDropdownData.unshift({ id: '%', value: '', text: '' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([\r\n checkCiPromise,\r\n getCiStaffPromise,\r\n getEnabledConsumersPromise,\r\n getGroupsPrommise,\r\n ]).then(function () {\r\n initialPageBuild();\r\n enabledConsumers = dsEnabledConsumers;\r\n roster2.setAllowedConsumers(dsEnabledConsumers);\r\n let locationName = locationCache[locationID].locationName;\r\n roster2.miniRosterinit(\r\n { locationId: locationID, locationName: locationName },\r\n {\r\n hideDate: true,\r\n },\r\n );\r\n checkIfBatched();\r\n });\r\n }\r\n\r\n function locationCheck() {\r\n locationID = defaults.getLocation('dayServices');\r\n noLocationSet = locationID === '' ? true : false;\r\n serviceDate = UTIL.getTodaysDate();\r\n selectedGroupName = 'Everyone';\r\n\r\n //get locations and cache them\r\n dayServiceAjax.getDayServiceLocations(serviceDate, loc => {\r\n loc.forEach(loc => {\r\n if (!locationCache[loc.locationId]) {\r\n obj = {\r\n locationName: loc.Name,\r\n defaultDayServiceType: loc.defaultDayServiceType,\r\n };\r\n locationCache[loc.locationId] = obj;\r\n }\r\n });\r\n\r\n locationDropdownData = loc.map(loc => {\r\n var id = `loc${loc.locationId}`;\r\n var value = loc.locationId;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n //Add \"\" location for users that don't have a default location set\r\n locationCache[''] = {\r\n locationName: 'Select a location from the filter',\r\n defaultDayServiceType: '',\r\n };\r\n\r\n //When done, if they don't have a default location set, or the default loaction is set that they don't have permisison to (Advisor bug)\r\n //display a popup that has a location selection\r\n if (noLocationSet || !Object.keys(locationCache).includes(locationID)) {\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visable', 'locationPicker');\r\n let header = document.createElement('h2');\r\n header.classList.add('popupHeader');\r\n popup.appendChild(header);\r\n\r\n header.innerHTML = 'No Default Location Set. Please Choose a Location:';\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'location',\r\n style: 'secondary',\r\n });\r\n\r\n var applyBtn = button.build({\r\n id: 'apply',\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: function () {\r\n locationID =\r\n locationDropdown.firstElementChild.options[\r\n locationDropdown.firstElementChild.selectedIndex\r\n ].value;\r\n let locationName =\r\n locationDropdown.firstElementChild.options[\r\n locationDropdown.firstElementChild.selectedIndex\r\n ].innerText;\r\n if (defaults.rememberLastLocation('dayServices'))\r\n defaults.setLocation('dayServices', locationID);\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n noLocationSet = false;\r\n overlay.hide();\r\n\r\n initPageLoad();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(locationDropdown);\r\n popup.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n overlay.show();\r\n\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n } else {\r\n initPageLoad();\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n initRosterSelection = true;\r\n setActiveModuleSectionAttribute('dayServices');\r\n\r\n //clear cache\r\n locationCache = {};\r\n activityCache = {};\r\n\r\n dsCardArea.innerHTML = '';\r\n\r\n DOM.clearActionCenter();\r\n locationCheck();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","const dayServiceAjax = (function () {\r\n function checkConsumersForDate(locationId, consumerList, serviceDate, callback) {\r\n //CONSUMER LIST = \"id|id|id|id\" or \"id|\"\r\n //massUserCheckByDate\r\n // var consumerIds = '';\r\n\r\n // // For every consumer that is \"active\":\r\n // $('#consumerlist')\r\n // \t.children()\r\n // \t.each(function() {\r\n // \t\t// Add the consumer day service record for update:\r\n // \t\tconsumerId = $(this).attr('id');\r\n // \t\tconsumerIds = consumerIds + consumerId + '|';\r\n // \t});\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/massUserCheckByDateJSON/',\r\n data:\r\n '{\"consumerIds\":\"' +\r\n consumerList +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.massUserCheckByDateJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDayServiceGetEnabledConsumers(serviceDate, locationId, callback) {\r\n //* serviceDate, locationId & groupId are set by filter\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceGetEnabledConsumers/',\r\n data: '{\"serviceDate\":\"' + serviceDate + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getDayServiceGetEnabledConsumersResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function dayServiceClockIn(consumerIds, serviceDate, locationId, startTime, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addDayServiceActivityMassClockInConsumer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n return;\r\n errorMessage = '';\r\n var errorId;\r\n var errorConsumerIds;\r\n\r\n $('dayrow', res).each(function () {\r\n // Look for errors:\r\n $('errors', res).each(function () {\r\n // Get the error code:\r\n tmpErrorCode = $('error_code', this).text();\r\n // If time overlaps:\r\n if (tmpErrorCode == '615') {\r\n // Set the error message:\r\n errorMessage = ' Time overlaps found, with people exsiting in the database';\r\n setErrorBox(errorMessage);\r\n // Get the consumer IDs:\r\n errorConsumerIds = $('consumers', this).text();\r\n }\r\n });\r\n });\r\n\r\n //alert('success: ' + res);\r\n\r\n // After clockin, refresh data\r\n if (errorConsumerIds != null) {\r\n getConsumerDayServiceActivity(errorConsumerIds);\r\n } else {\r\n getConsumerDayServiceActivity();\r\n }\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n function dayServiceClockOut(consumerIds, stopTime) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addDayServiceActivityMassClockOutConsumer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n $('#dsdatebox').val() +\r\n '\", \"locationId\":\"' +\r\n $('#dslocationbox').attr('locid') +\r\n '\", \"stopTime\":\"' +\r\n stopTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //alert('success: ' + res);\r\n\r\n //615156|156|\r\n errorMessage = '';\r\n\r\n $('dayrow', res).each(function () {\r\n // Look for errors:\r\n $('errors', res).each(function () {\r\n // Get the error code:\r\n tmpErrorCode = $('error_code', this).text();\r\n // If time overlaps:\r\n if (tmpErrorCode == '615') {\r\n // Set the error message:\r\n errorMessage = ' Time overlaps found, with people exsiting in the database';\r\n setErrorBox(errorMessage);\r\n // Get the consumer IDs:\r\n errorConsumerIds = $('consumers', this).text();\r\n }\r\n });\r\n });\r\n\r\n // After clockout, refresh data\r\n getConsumerDayServiceActivity();\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n function deleteDayServiceActivity(consumerIds, serviceDate, locationID, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteDayServiceMassDeleteConsumerActivity/',\r\n data:\r\n '{\"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n\r\n // After delete, refresh data\r\n // getConsumerDayServiceActivity();\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); }\r\n });\r\n }\r\n function deleteCIStaffId(consumerId, startTime, serviceDate, locationID, callback) {\r\n // startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCIStaffId/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationID +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDateToCheckShowCI(callback) {\r\n //Done\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDateToCheckShowCI/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getDateToCheckShowCIResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getExistingCIStaffId(consumerId, startTime, resIn, ciButtonId, isBatched) {\r\n startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getExistingCIStaffId/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n $('#dsdatebox').val() +\r\n '\", \"locationID\":\"' +\r\n $('#dslocationbox').attr('locid') +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n staffId = getExistingCIStaffIDFromResponse(res);\r\n createCIDropdown(resIn, staffId, consumerId, startTime, ciButtonId, isBatched);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDayServiceLocations(serviceDate, callback) {\r\n //Done\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + serviceDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n //var res = JSON.stringify(response);\r\n var res = response.getDayServiceLocationsJSONResult;\r\n //always check for errors before processing\r\n //if (checkforErrors(res) == -1){\r\n // return;\r\n //};\r\n callback(res);\r\n return;\r\n var optionsHtml = [];\r\n var locations = $('#dslocationpop');\r\n var first = 0;\r\n var showSelect = 'Y';\r\n\r\n $('location', res).each(function () {\r\n tmpName = $('name', this).text();\r\n tmpId = $('locationId', this).text();\r\n tmpId2 = $('ID', this).text();\r\n tmpRes = $('Residence', this).text();\r\n\r\n if (tmpRes == 'Y') {\r\n icon = \"\";\r\n } else {\r\n icon = \"\";\r\n }\r\n\r\n if (tmpId == '') {\r\n tmpId = tmpId2;\r\n }\r\n\r\n // If more than 1 location for the selected consumers:\r\n if (serviceLocationCount > 1) {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n } else {\r\n // If only 1 location for the selected consumers and the location id is the same as the selected location:\r\n if (serviceLocationCount == 1 && locationIds[0] == currentlocationId) {\r\n // If the location id = the selected location:\r\n if (tmpId == currentlocationId) {\r\n currentlocationId = tmpId;\r\n\r\n // Display the location name:\r\n $('#dslocationbox').html(\r\n tmpName +\r\n \"\",\r\n );\r\n $('#dslocationbox').attr('locid', tmpId);\r\n resizeHeaderText('#dslocationbox', tmpName.length);\r\n showSelect = 'N';\r\n } else {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n }\r\n } else {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n }\r\n }\r\n });\r\n\r\n // If more than 1 location for the selected consumers:\r\n if (showSelect == 'Y') {\r\n // Display \"Select a Location\":\r\n $('#dslocationbox').html(\r\n 'Select a Location' +\r\n \"\",\r\n );\r\n $('#dslocationbox').attr('locid', 0);\r\n resizeHeaderText('#dslocationbox', 15);\r\n currentlocationId = 0;\r\n }\r\n\r\n optionsHtml = optionsHtml.join('');\r\n locations.html(optionsHtml);\r\n\r\n //if true gets history value for switching between modules but not reloading page\r\n if ($.session.dsLocationHistoryFlag == true && $.session.dsLocationHistoryValue != null) {\r\n changeTheDSLocation($.session.dsLocationHistoryValue);\r\n } else {\r\n if (readCookie('defaultDayServiceLocationName') == 'Remember Last Location') {\r\n changeTheDSLocation(readCookie('defaultDayServiceLocation'));\r\n } else {\r\n changeTheDSLocation(readCookie('defaultDayServiceLocationNameValue'));\r\n }\r\n }\r\n\r\n if (currentlocationId != 0) {\r\n getConsumerDayServiceActivity();\r\n } else {\r\n $('#locationhelp').css('display', 'block');\r\n $('#appbuttonbox').html('');\r\n }\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n'+ xhr.responseText); }\r\n });\r\n }\r\n function getConsumerDayServiceActivity(\r\n peopleList,\r\n serviceDate,\r\n locationId,\r\n groupCode,\r\n retrieveId,\r\n callback,\r\n ) {\r\n //Done\r\n // removeErrorMessage();\r\n // var dsDate = $('#dsdatebox').val();\r\n // if (dsDate == undefined) {\r\n // \tvar newDate = new Date();\r\n // \tdsDate = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();\r\n // }\r\n groupCode = !groupCode ? 'ALL' : groupCode;\r\n\r\n if (groupCode !== 'CST') {\r\n if (!retrieveId) retrieveId = locationId;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerDayServiceActivityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"peopleList\":\"' +\r\n peopleList +\r\n '\", \"groupCode\":\"' +\r\n groupCode +\r\n '\",\"retrieveId\":\"' +\r\n retrieveId +\r\n '\",\"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerDayServiceActivityJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCiStaff(serviceDate, locationId, callback) {\r\n // startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCIStaffDropdownJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n //var res = JSON.stringify(response);\r\n var res = response.getCIStaffDropdownJSONResult;\r\n callback(res);\r\n //ASH below will need tweaked to fit new response\r\n // getExistingCIStaffIdAjax(consumerId, startTime, res, ciButtonId, isBatched);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function updateCIStaff(consumerId, staffId, startTime, serviceDate, locationId, callback) {\r\n startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateCIStaff/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationId +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\", \"staffId\":\"' +\r\n staffId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function updateDayServiceActivity(\r\n consumerIds,\r\n inputType,\r\n inputTime,\r\n serviceDate,\r\n locationID,\r\n dayServiceType,\r\n selectedGroupId,\r\n callback,\r\n ) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateDayServiceActivity/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationID +\r\n '\", \"inputType\":\"' +\r\n inputType +\r\n '\", \"inputTime\":\"' +\r\n inputTime +\r\n '\", \"dayServiceType\":\"' +\r\n dayServiceType +\r\n '\", \"selectedGroupId\":\"' +\r\n selectedGroupId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // return res;\r\n // var errorId;\r\n // errorMessage = '';\r\n // var errorConsumerIds;\r\n\r\n // $('dayrow', res).each(function() {\r\n // \t// Look for errors:\r\n // \t$('errors', res).each(function() {\r\n // \t\t// Get the error code:\r\n // \t\ttmpErrorCode = $('error_code', this).text();\r\n // \t\t// If time overlaps:\r\n\r\n // \t\tif (tmpErrorCode == '615' && inputTime != '00:00:00') {\r\n // \t\t\t// Get the consumer IDs:\r\n // \t\t\terrorConsumerIds = $('consumers', this).text();\r\n // \t\t}\r\n // \t});\r\n // });\r\n\r\n // // After update, refresh data\r\n // if (errorConsumerIds != null) {\r\n // \tgetConsumerDayServiceActivity(errorConsumerIds);\r\n // } else {\r\n // \tgetConsumerDayServiceActivity();\r\n // }\r\n },\r\n\r\n error: function (xhr, status, error) {\r\n alert('Error\\n-----\\n' + error + ' \\n' + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDSIsLocationBatched(locationId, serviceDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDSIsLocationBatched/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getDSIsLocationBatchedResult;\r\n callback(data);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDayServiceGroups(token, locationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceGroups/',\r\n data: '{\"token\":\"' + token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getDayServiceGroupsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n // comment\r\n async function getDayServiceClockedInConsumers(retrieveData) {\r\n //string token, string consumerIdString, string serviceDate, string locationId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceClockedInConsumers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getDayServiceClockedInConsumersResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n checkConsumersForDate,\r\n getDayServiceGetEnabledConsumers,\r\n dayServiceClockIn,\r\n dayServiceClockOut,\r\n deleteDayServiceActivity,\r\n deleteCIStaffId,\r\n getDateToCheckShowCI,\r\n getExistingCIStaffId,\r\n getDayServiceLocations,\r\n getConsumerDayServiceActivity,\r\n getCiStaff,\r\n updateCIStaff,\r\n updateDayServiceActivity,\r\n getDSIsLocationBatched,\r\n getDayServiceGroups,\r\n getDayServiceClockedInConsumers\r\n };\r\n})();\r\n","var dashboard = (function () {\r\n var widgets;\r\n var setupFuncs;\r\n var widgetSettings;\r\n\r\n var widgetIds = {\r\n caseNotesProductivity: 1,\r\n caseNotesCaseLoad: 2,\r\n caseNotesRejected: 3,\r\n planWorkflow: 4,\r\n customLinks: 5,\r\n absent: 6,\r\n unreadLocationNotes: 7,\r\n consumerProgressNotes: 8,\r\n timeClock: 9,\r\n hoursWorked: 10,\r\n goals: 11,\r\n clockedIn: 12,\r\n singleEntry: 13,\r\n adminSingleEntry: 14,\r\n schedule: 15,\r\n incidentTracking: 16,\r\n missingSignatures: 17,\r\n moneyManagement: 18,\r\n infal: null,\r\n systemMessages: 19,\r\n rosterToDoList: 20,\r\n };\r\n\r\n // Widget Markup\r\n var html = {\r\n absent: `\r\n
\r\n

Absent Consumers

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n adminSingleEntry: `\r\n
\r\n

Time Entry Review

\r\n
\r\n
\r\n `,\r\n customLinks: `\r\n
\r\n

Custom Links

\r\n
\r\n
\r\n
\r\n
\r\n `,\r\n clockedIn: `\r\n
\r\n

Day Services

\r\n
\r\n
\r\n `,\r\n goals: `\r\n
\r\n

Daily Services

\r\n
\r\n
\r\n
\r\n

Total Remaining Services:

\r\n

Total Consumers:

\r\n
\r\n
    \r\n
    \r\n `,\r\n hoursWorked: `\r\n
    \r\n

    Hours Worked

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n incidentTracking: `\r\n
    \r\n

    Incident Tracking

    \r\n
    \r\n
    \r\n `,\r\n infal: `\r\n
    \r\n

    Infal Time Clock

    \r\n
    \r\n
    \r\n
    \r\n `,\r\n timeClock: `\r\n
    \r\n

    Day Service Time Clock

    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n `,\r\n schedule: `\r\n
    \r\n

    My Schedule

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n singleEntry: `\r\n
    \r\n

    My Unapproved Time Entries

    \r\n
    \r\n
    \r\n `,\r\n systemMessages: `\r\n
    \r\n

    System Messages

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n consumerProgressNotes: `\r\n
    \r\n

    Consumer Progress Notes

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n unreadLocationNotes: `\r\n
    \r\n

    Location Progress Notes

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n caseNotesProductivity: `\r\n
    \r\n

    Case Note Productivity

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n caseNotesCaseLoad: `\r\n
    \r\n

    My Case Load

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n caseNotesRejected: `\r\n
    \r\n

    Rejected Case Notes

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n planWorkflow: `\r\n
    \r\n

    Plan To-Do List

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n missingSignatures: `\r\n
    \r\n

    Plans Missing Signatures

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n moneyManagement: `\r\n
    \r\n

    Money Management

    \r\n
    \r\n
    \r\n `,\r\n rosterToDoList: `\r\n
    \r\n

    Roster To-Do List

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n `,\r\n };\r\n\r\n // Global Dash Functions\r\n function appendFilterButton(widgetId, btnId) {\r\n var filterBtn = document.getElementById(btnId);\r\n if (!filterBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n filterBtn = button.build({\r\n id: btnId,\r\n text: 'Filter',\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'filter',\r\n iconPos: 'right',\r\n callback: function () {\r\n var filtersSelector = `#${widgetId} .widget__filters`;\r\n var widgetFilters = document.querySelector(filtersSelector);\r\n overlay.show();\r\n bodyScrollLock.disableBodyScroll(widgetFilters);\r\n widgetFilters.classList.add('visible');\r\n },\r\n });\r\n widgetHeader.appendChild(filterBtn);\r\n }\r\n }\r\n\r\n function appendPDFButton(widgetId, btnId) {\r\n var pdfBtn = document.getElementById(btnId);\r\n if (!pdfBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n pdfBtn = button.build({\r\n id: btnId,\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'PDFFormWhite', \r\n iconPos: 'right', \r\n callback: function () {\r\n generateReports.passFilterValuesForReport('My Case Load Roster List', null);\r\n generateReports.showWarningPopup('My Case Load Roster List')\r\n },\r\n });\r\n widgetHeader.appendChild(pdfBtn);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n var filterPopup = document.createElement('div');\r\n filterPopup.classList.add('widget__filters', 'popup', 'popup--static', 'popup--filter');\r\n filterPopup.setAttribute('data-popup', 'true');\r\n\r\n return filterPopup;\r\n }\r\n\r\n // Widget Init Functions\r\n function initAbsentWidget() {\r\n const showHide = getWidgetSettings(widgetIds.absent).showHide;\r\n if (!infalOnly) {\r\n (function loadAbsentWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.absent);\r\n div.id = 'dashabsentconsumers';\r\n div.classList.add('widget');\r\n div.classList.add('absentWidget');\r\n div.innerHTML = html.absent;\r\n widgets.push(div);\r\n setupFuncs.push(absentWidget.init);\r\n })();\r\n }\r\n }\r\n function initLinksAndMessagesWidget() { \r\n const showHideCustomLinks = getWidgetSettings(widgetIds.customLinks).showHide;\r\n (function loadSysMessagesAndCustomLinksWidget() {\r\n var div2 = document.createElement('div');\r\n div2.setAttribute('data-show', showHideCustomLinks);\r\n div2.setAttribute('data-widgetId', widgetIds.customLinks);\r\n div2.id = 'dashcustomlinks';\r\n div2.classList.add('widget');\r\n div2.classList.add('customLinksWidget');\r\n div2.innerHTML = html.customLinks;\r\n widgets.push(div2);\r\n // Check if setupFuncs already contains linksAndMessages.init (stops duplicate messages and links)\r\n if (!setupFuncs.includes(linksAndMessages.init)) { \r\n setupFuncs.push(linksAndMessages.init);\r\n }\r\n })();\r\n }\r\n\r\n function initSystemMessagesWidget() { \r\n (function loadSysMessagesAndCustomLinksWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', 'Y');\r\n div.setAttribute('data-widgetId', widgetIds.systemMessages);\r\n div.id = 'dashsystemmessagewidget';\r\n div.classList.add('widget');\r\n div.classList.add('systemMessagesWidget');\r\n div.innerHTML = html.systemMessages;\r\n widgets.push(div);\r\n\r\n // Check if setupFuncs already contains linksAndMessages.init (stops duplicate messages and links)\r\n if (!setupFuncs.includes(linksAndMessages.init)) {\r\n setupFuncs.push(linksAndMessages.init);\r\n }\r\n })();\r\n }\r\n\r\n function initSingleEntryWidget() {\r\n const showHide = getWidgetSettings(widgetIds.singleEntry).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.SingleEntryView &&\r\n $.session.singleEntryPermission === 'Anywhere_SingleEntry'\r\n ) {\r\n // Single Entry\r\n (function loadAdminSingleEntryWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.singleEntry);\r\n div.id = 'dashsingleentrywidget';\r\n div.classList.add('widget');\r\n div.classList.add('singleEntryWidget');\r\n div.innerHTML = html.singleEntry;\r\n widgets.push(div);\r\n setupFuncs.push(singleEntryCountWidget.init);\r\n })();\r\n }\r\n }\r\n function initAdminSingleEntryWidget() {\r\n const showHide = getWidgetSettings(widgetIds.adminSingleEntry).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.ViewAdminSingleEntry &&\r\n $.session.SEViewAdminWidget\r\n ) {\r\n //TODO needs added to if $.session.singleEntryPermission == \"Anywhere_SingleEntry\"\r\n (function loadSingleEntryWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.adminSingleEntry);\r\n div.id = 'admindashsingleentrywidget';\r\n div.classList.add('widget');\r\n div.classList.add('adminSingleEntryWidget');\r\n div.innerHTML = html.adminSingleEntry;\r\n widgets.push(div);\r\n setupFuncs.push(adminSingleEntryWidget.init);\r\n })();\r\n }\r\n }\r\n function initTimeClockWidget() {\r\n const showHide = getWidgetSettings(widgetIds.timeClock).showHide;\r\n if (\r\n $.session.isPSI == false &&\r\n $.session.DayServiceUpdate &&\r\n $.session.dayServicesPermission === 'Anywhere_DayServices'\r\n ) {\r\n (function loadEmployeeDayServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.timeClock);\r\n div.id = 'dashtimeclockwidget';\r\n div.classList.add('widget');\r\n div.classList.add('timeClockWidget');\r\n div.innerHTML = html.timeClock;\r\n widgets.push(div);\r\n setupFuncs.push(timeClock.init);\r\n })();\r\n }\r\n }\r\n function initHoursWorkedWidget() {\r\n const showHide = getWidgetSettings(widgetIds.hoursWorked).showHide;\r\n if (\r\n $.session.SEViewAdminWidget === true ||\r\n ($.session.DayServiceUpdate && $.session.dayServicesPermission === 'Anywhere_DayServices')\r\n ) {\r\n (function loadHoursWorkedWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.hoursWorked);\r\n div.id = 'dashhoursworkedwidget';\r\n div.classList.add('widget');\r\n div.classList.add('hoursWorkedWidget');\r\n div.innerHTML = html.hoursWorked;\r\n widgets.push(div);\r\n setupFuncs.push(hoursWorkedWidget.init);\r\n })();\r\n }\r\n }\r\n function initScheduleWidget() {\r\n const showHide = getWidgetSettings(widgetIds.schedule).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.schedulingPermission === 'Scheduling'\r\n ) {\r\n (function loadScheduleWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.schedule);\r\n div.id = 'dashschedulewidget';\r\n div.classList.add('widget');\r\n div.classList.add('scheduleWidget');\r\n div.innerHTML = html.schedule;\r\n widgets.push(div);\r\n setupFuncs.push(schedule.init);\r\n })();\r\n }\r\n }\r\n function initDailyServicesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.goals).showHide;\r\n if (\r\n $.session.GoalsView &&\r\n $.session.outcomesPermission === 'Anywhere_Outcomes' &&\r\n !$.session.removeGoalsWidget\r\n ) {\r\n (function loadDailyServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.goals);\r\n div.id = 'dashgoalswidget';\r\n div.classList.add('widget');\r\n div.classList.add('goalsWidget');\r\n div.innerHTML = html.goals;\r\n widgets.push(div);\r\n\r\n function widgetSetup() {\r\n //remainingDailyServicesWidgetAjax.populateFilteredList('%', '%', '%');\r\n remainingDailyServicesWidget.init();\r\n }\r\n\r\n setupFuncs.push(widgetSetup);\r\n })();\r\n }\r\n }\r\n function initClockedInWidget() {\r\n const showHide = getWidgetSettings(widgetIds.clockedIn).showHide;\r\n if ($.session.DayServiceView && $.session.dayServicesPermission === 'Anywhere_DayServices') {\r\n (function loadDayServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.clockedIn);\r\n div.id = 'dashdsclockedin';\r\n div.classList.add('widget');\r\n div.classList.add('clockedInWidget');\r\n div.innerHTML = html.clockedIn;\r\n widgets.push(div);\r\n setupFuncs.push(clockedInWidget.init);\r\n })();\r\n }\r\n }\r\n function initIncidentTrackingWidget() {\r\n const showHide = getWidgetSettings(widgetIds.incidentTracking).showHide;\r\n if (\r\n ($.session.isASupervisor || $.session.isPSI == true) && $.session.incidentTrackingView == true && \r\n $.session.incidentTrackingPermission === 'Anywhere_Incident_Tracking'\r\n ) {\r\n (function loadIncidentTrackingWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.incidentTracking);\r\n div.id = 'incidenttrackingwidget';\r\n div.classList.add('widget');\r\n div.classList.add('incidentWidget');\r\n div.innerHTML = html.incidentTracking;\r\n widgets.push(div);\r\n setupFuncs.push(incidentTrackingWidget.init);\r\n })();\r\n }\r\n }\r\n function initConsumerProgressNotesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.consumerProgressNotes).showHide;\r\n if ($.session.isPSI == true || $.session.useProgressNotes === 'Y') {\r\n (function loadConsumerProgressNotesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.consumerProgressNotes);\r\n div.id = 'consumerprogressnoteswidget';\r\n div.classList.add('widget');\r\n div.classList.add('consumerProgressNoteWidget');\r\n div.innerHTML = html.consumerProgressNotes;\r\n widgets.push(div);\r\n setupFuncs.push(consumerProgresNotes.init);\r\n })();\r\n }\r\n }\r\n function initLocationProgressNotesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.unreadLocationNotes).showHide;\r\n if ($.session.isPSI == true || $.session.useProgressNotes === 'Y') {\r\n (function loadLocationProgressNotesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.unreadLocationNotes);\r\n div.id = 'locationprogressnoteswidget';\r\n div.classList.add('widget');\r\n div.classList.add('locationProgressNoteWidget');\r\n div.innerHTML = html.unreadLocationNotes;\r\n widgets.push(div);\r\n setupFuncs.push(unreadLocationNotes.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesProductivityWidget() {\r\n const isPSI =\r\n $.session.isPSI == true && $.session.applicationName === 'Gatekeeper' ? true : false;\r\n const hasPerm =\r\n $.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper'\r\n ? true\r\n : false;\r\n const showHide = getWidgetSettings(widgetIds.caseNotesProductivity).showHide;\r\n\r\n if (isPSI || hasPerm) {\r\n (function loadCaseNotesProdictivityWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesProductivity);\r\n div.id = 'casenotesprodictivitywidget';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesProductivityWidget');\r\n div.innerHTML = html.caseNotesProductivity;\r\n widgets.push(div);\r\n setupFuncs.push(CN_ProductivityWidget.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesCaseLoadWidget() {\r\n const showHide = getWidgetSettings(widgetIds.caseNotesCaseLoad).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadCaseNotesCaseLoadWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesCaseLoad);\r\n div.id = 'casenotescaseload';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesCaseLoadWidget');\r\n div.innerHTML = html.caseNotesCaseLoad;\r\n widgets.push(div);\r\n setupFuncs.push(CN_CaseLoadWidget.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesRejectedWidget() {\r\n const showHide = getWidgetSettings(widgetIds.caseNotesRejected).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadCaseNotesCaseLoadWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesRejected);\r\n div.id = 'casenotesrejected';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesRejectedWidget');\r\n div.innerHTML = html.caseNotesRejected;\r\n widgets.push(div);\r\n setupFuncs.push(CN_RejectedWidget.init);\r\n })();\r\n }\r\n }\r\n function initPlanWorkflowWidget() {\r\n const showHide = getWidgetSettings(widgetIds.planWorkflow).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.anywherePlanPermission == 'Anywhere_Plan' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadPlanWorkflowWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.planWorkflow);\r\n div.id = 'planworkflow';\r\n div.classList.add('widget');\r\n div.classList.add('planWorkflowWidget');\r\n div.innerHTML = html.planWorkflow;\r\n widgets.push(div);\r\n setupFuncs.push(planWorkflowWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function initRosterToDoListWidget() {\r\n const showHide = getWidgetSettings(widgetIds.rosterToDoList).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.anywherePlanPermission == 'Anywhere_Plan' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadRosterToDoListWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.rosterToDoList);\r\n div.id = 'rosterToDoList';\r\n div.classList.add('widget');\r\n div.classList.add('rosterToDoListWidget');\r\n div.innerHTML = html.rosterToDoList;\r\n widgets.push(div);\r\n setupFuncs.push(rosterToDoListWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function initInfalWidget() {\r\n const showHide = getWidgetSettings(widgetIds.infal).showHide;\r\n if (\r\n $.session.infalOnly &&\r\n $.session.applicationName == 'Gatekeeper' &&\r\n $.session.infalHasConnectionString == true\r\n ) {\r\n (function anonymousFunction() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.infal);\r\n div.id = 'dashinfaltimeclockwidget';\r\n div.classList.add('widget');\r\n div.classList.add('infalWidget');\r\n div.innerHTML = html.infal;\r\n widgets.push(div);\r\n\r\n setupFuncs.push(infalTimeClockWidget.init);\r\n })();\r\n }\r\n }\r\n function initSignaturesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.missingSignatures).showHide;\r\n if (!$.session.planView) return;\r\n if (!infalOnly) {\r\n (function loadSignatureWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.missingSignatures);\r\n div.id = 'dashmissingsignatures';\r\n div.classList.add('widget');\r\n div.classList.add('missingSignaturesWidget');\r\n div.innerHTML = html.missingSignatures;\r\n widgets.push(div);\r\n setupFuncs.push(signatureWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function initMoneyManagementWidget() {\r\n const showHide = getWidgetSettings(widgetIds.moneyManagement).showHide;\r\n if (\r\n $.session.anywhereConsumerFinancesPermission === 'Anywhere_Consumer_Finances' && $.session.CFView == true\r\n ) {\r\n (function loadMoneyManagementWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.moneyManagement);\r\n div.id = 'dashMoneyManagementwidget';\r\n div.classList.add('widget');\r\n div.classList.add('absentWidget');\r\n div.innerHTML = html.moneyManagement;\r\n widgets.push(div);\r\n setupFuncs.push(consumerFinancesWidget.init);\r\n })();\r\n }\r\n }\r\n\r\n function loadDashboardWidgets() {\r\n var actioncenter = document.getElementById('actioncenter');\r\n actioncenter.innerHTML = '';\r\n \r\n widgetSettings.forEach(widgetSetting => { \r\n // Check for invalid defaults while widgets load in background\r\n defaults.getInvalidDefaultLocations();\r\n\r\n if (widgetSetting.widgetName == 'System Messages') {\r\n /*19*/ initSystemMessagesWidget(); // System Message Widget\r\n } \r\n\r\n // The order of the function calls below determines the order of widgets\r\n if (widgetSetting.widgetName == 'Custom Links') {\r\n /*1*/ initLinksAndMessagesWidget(); // System Messages & Custom Links\r\n }\r\n else if (widgetSetting.widgetName == 'Absent Consumers') {\r\n /*2*/ initAbsentWidget(); // Absent Consumers \r\n }\r\n else if (widgetSetting.widgetName == 'Case_Note_Productivity') {\r\n /*3*/ initCaseNotesProductivityWidget(); // Case Notes Producitivity (GK Only) --- WidgetId 1\r\n }\r\n else if (widgetSetting.widgetName == 'Case Load Widget') {\r\n /*4*/ initCaseNotesCaseLoadWidget(); // Case Notes Case Load (GK Only) --- WidgetId 2\r\n }\r\n else if (widgetSetting.widgetName == 'Rejected Case Notes') {\r\n /*5*/ initCaseNotesRejectedWidget(); // Case Notes Rejected (GK Only) --- WidgetId 2\r\n }\r\n else if (widgetSetting.widgetName == 'Plan To-Do List') {\r\n /*6*/ initPlanWorkflowWidget(); // Plan Workflow To Do List Widget\r\n }\r\n else if (widgetSetting.widgetName == 'Location Progress Notes') {\r\n /*7*/ initLocationProgressNotesWidget(); //Location Progress Notes Widget\r\n }\r\n else if (widgetSetting.widgetName == 'My Unapproved Time Entries') {\r\n /*8*/ initSingleEntryWidget(); // Unapproved Time Entries - Single Entry\r\n }\r\n else if (widgetSetting.widgetName == 'Consumer Progress Notes') {\r\n /*9*/ initConsumerProgressNotesWidget(); //Consumer Progress Note Widget\r\n }\r\n else if (widgetSetting.widgetName == 'Time Entry Review') {\r\n /*10*/ initAdminSingleEntryWidget(); // Supervisor Time Entry Review - Admin Single Entry\r\n }\r\n else if (widgetSetting.widgetName == 'Day Service Time Clock') {\r\n /*11*/ initTimeClockWidget(); // Employee Day Service Time Clock\r\n }\r\n else if (widgetSetting.widgetName == 'Hours Worked') {\r\n /*12*/ initHoursWorkedWidget(); // Hours Worked\r\n }\r\n else if (widgetSetting.widgetName == 'My Schedule') {\r\n /*13*/ initScheduleWidget(); // My Schedule\r\n }\r\n else if (widgetSetting.widgetName == 'Daily Services') {\r\n /*14*/ initDailyServicesWidget(); // Remaining Daily Services\r\n }\r\n else if (widgetSetting.widgetName == 'Day Services') {\r\n /*15*/ initClockedInWidget(); // Day Services Clocked In\r\n }\r\n else if (widgetSetting.widgetName == 'Incident Tracking') {\r\n /*16*/ initIncidentTrackingWidget(); // Incident Tracking\r\n }\r\n else if (widgetSetting.widgetName == 'Plans Missing Signatures') {\r\n /*17*/ initSignaturesWidget(); // Missing Signatures Widget\r\n }\r\n else if (widgetSetting.widgetName == 'Money Management') {\r\n /*18*/ initMoneyManagementWidget(); // Money Management Widget \r\n } \r\n else if (widgetSetting.widgetName == 'Roster To-Do List') {\r\n /*20*/ initRosterToDoListWidget(); // Plan Workflow To Do List Widget\r\n }\r\n\r\n /*17*/ initInfalWidget(); // InfalTimeClock Widget\r\n });\r\n\r\n let IsSystemMessageAvailable = widgetSettings.find(x => x.widgetName == 'System Messages') == undefined ? true : false; \r\n if (IsSystemMessageAvailable) {\r\n /*19*/ initSystemMessagesWidget(); // System Message Widget\r\n } \r\n\r\n var actioncenter = document.getElementById('actioncenter');\r\n widgets.forEach(widget => {\r\n actioncenter.appendChild(widget);\r\n });\r\n\r\n setupFuncs.forEach(func => func());\r\n }\r\n\r\n function getWidgetSettings(widgetId) {\r\n if (!widgetId) {\r\n // if no widget id means no settings so go ahead and set showHide to Y\r\n return {\r\n showHide: 'Y',\r\n };\r\n }\r\n\r\n const settingForWidget = widgetSettings.filter(\r\n widget => parseInt(widget.widgetId) === parseInt(widgetId),\r\n )[0];\r\n if (settingForWidget) {\r\n return {\r\n widgetId: settingForWidget.widgetId,\r\n showHide: settingForWidget.showHide,\r\n widgetConfig:\r\n settingForWidget.widgetConfig === '' ? null : JSON.parse(settingForWidget.widgetConfig),\r\n widgetName: settingForWidget.widgetName,\r\n widgetOrder: settingForWidget.widgetOrder,\r\n };\r\n } else {\r\n return {\r\n widgetId: widgetId,\r\n showHide: 'Y',\r\n widgetConfig: null,\r\n widgetName: null,\r\n widgetOrder: null,\r\n };\r\n }\r\n }\r\n\r\n async function refreshWidgetSettings() {\r\n widgetSettings = (await widgetSettingsAjax.getWidgetSettings()).getUserWidgetSettingsResult;\r\n }\r\n\r\n async function preLoadWidget() {\r\n widgetSettings = (await widgetSettingsAjax.getWidgetSettings()).getUserWidgetSettingsResult;\r\n\r\n function getSetting(widgetId) {\r\n return widgetSettings.filter(widget => {\r\n if (widget.widgetId === widgetId) return widget;\r\n })[0];\r\n }\r\n\r\n loadDashboardWidgets();\r\n\r\n return {\r\n getSetting: getSetting,\r\n };\r\n }\r\n\r\n function init() {\r\n remainingDailyServicesWidget.filter.outcomeType = '%';\r\n remainingDailyServicesWidget.filter.location = '%';\r\n remainingDailyServicesWidget.filter.group = '%'; \r\n widgets = [];\r\n setupFuncs = [];\r\n preLoadWidget();\r\n }\r\n\r\n return {\r\n appendFilterButton,\r\n appendPDFButton,\r\n buildFilterPopup,\r\n getWidgetSettings,\r\n refreshWidgetSettings,\r\n load: init,\r\n };\r\n})();\r\n","var displayTimeSelect = 'Y';\r\nvar validateError = '';\r\nvar numberOfCards = 4;\r\n\r\nfunction pad(x) {\r\n\treturn x < 10 ? '0' + x : x;\r\n}\r\n\r\nfunction ticktock() {\r\n\tvar d = new Date();\r\n\tvar h = pad(d.getHours());\r\n\tvar m = pad(d.getMinutes());\r\n\tvar s = pad(d.getSeconds());\r\n\tvar current_time = [h, m].join(':');\r\n}\r\n\r\nfunction anywhere() {\r\n\twindow.location = 'anywhere.html';\r\n}\r\n\r\nfunction popCalendar(event) {\r\n\tif ($('#calendardropdown').css('opacity') == '0') {\r\n\t\t$('#calendardropdown')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t} else {\r\n\t\t$('#calendardropdown')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t}\r\n}\r\n\r\nfunction startMessage() {\r\n\tif ($('#messageinput').val() == 'Add a new message...') {\r\n\t\t$('#messageinput').val('');\r\n\t}\r\n}\r\n\r\nfunction swapMessageBoxes() {\r\n\tif ($('#messageboxsmall').css('opacity') == '0') {\r\n\t\t$('#messageboxsmall')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#messageinput')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#messagetypebox')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#closemessageinput')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t} else {\r\n\t\t$('#messageboxsmall')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#messageinput')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#messagetypebox')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#closemessageinput')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t}\r\n}\r\n\r\nfunction showDownArrow() {\r\n\tif ($('clockrow').length == 0) {\r\n\t\t$('#downarrow')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t} else {\r\n\t\t$('#downarrow')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t}\r\n}\r\n\r\nfunction validateTime(startTime, stopTime) {\r\n\tvar validTime = 1;\r\n\tif (startTime > stopTime && stopTime != '00:00:00') {\r\n\t\tvalidTime = 0;\r\n\t}\r\n\treturn validTime;\r\n}\r\n/////////////////// Pop the display boxes ///////////////////////////////////\r\n// Get time in and time out values for day service consumer rows:\r\nfunction popDayStaffTimeBox(tagname, event) {\r\n\tvar obj = $('#' + tagname);\r\n\tobj.blur();\r\n\t$('.timein').blur();\r\n\t$('.timeout').blur();\r\n\tif ($.session.DenyStaffClockUpdate == true) {\r\n\t\treturn;\r\n\t}\r\n\tvar now = new Date();\r\n\tvar nonFormattedTime = '';\r\n\toriginalText = $('#' + tagname).val();\r\n\tnonFormattedTime = originalText;\r\n\tif (tagname.indexOf('out') != -1) {\r\n\t\tif (originalText != '') {\r\n\t\t\toriginalText = convertTimeToMilitary(originalText);\r\n\t\t\t$.session.initialTimeOut = originalText;\r\n\t\t\t$.session.initialTimeIn = '';\r\n\t\t}\r\n\t}\r\n\tif (tagname.indexOf('in') != -1) {\r\n\t\toriginalText = convertTimeToMilitary(originalText);\r\n\t\t$.session.initialTimeIn = originalText;\r\n\t\t$.session.initialTimeOut = '';\r\n\t}\r\n\tsetupTimeInputBox(obj, event);\r\n\treturn false;\r\n}\r\n\r\nfunction validateStaffTime(tagname, valueText) {\r\n\tif (valueText.length > 8) {\r\n\t\treturn false;\r\n\t}\r\n\tvar rowid = '';\r\n\tvar timein = '';\r\n\tvar timeout = '';\r\n\r\n\tif (tagname.indexOf('out') > -1) {\r\n\t\trowid = tagname.substring(7);\r\n\t\ttimein = $('#timein' + rowid)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimein = convertTimeToMilitary(timein);\r\n\t\ttimeout = $('#' + tagname)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimeout = convertTimeToMilitary(timeout);\r\n\t}\r\n\r\n\tif (tagname.indexOf('in') > -1) {\r\n\t\trowid = tagname.substring(6);\r\n\t\ttimeout = $('#timeout' + rowid)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimeout = convertTimeToMilitary(timeout);\r\n\t\ttimein = $('#' + tagname)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimein = convertTimeToMilitary(timein);\r\n\t}\r\n\ttimein = timein.replace(':', '');\r\n\ttimeout = timeout.replace(':', '');\r\n\tif (timeout.length < 2) return true;\r\n\tif (timeout < timein && timeout != '00:00:00' && timeout != '0000:00' && timeout != '00:00') {\r\n\t\tvalidateError = 'In time can not be greater than out time.';\r\n\t\twindow.timeOverlapError = false; //ensures error message above takes priority over time overlap error\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction getTimeClockInput(objId, rowId) {\r\n\tvar obj = $('#' + objId),\r\n\t\ttext = obj.text();\r\n\tobj.text('');\r\n\tvar pushStr = \"';\r\n\t$(pushStr)\r\n\t\t.appendTo(obj)\r\n\t\t.val(text)\r\n\t\t.focus()\r\n\t\t.change(function() {\r\n\t\t\tvar newText = $('#tempLocation option:selected').text();\r\n\t\t\tvar newValue = $('#tempLocation option:selected').val();\r\n\t\t\tobj.text(newText).attr('locid', newValue);\r\n\t\t});\r\n}\r\n\r\nfunction textFieldEdit(objId) {\r\n\tvar text = $('#' + objId).text();\r\n\t$('#' + objId).text('');\r\n\t$('')\r\n\t\t.appendTo($('#' + objId))\r\n\t\t.val(text)\r\n\t\t.select()\r\n\t\t.blur(function() {\r\n\t\t\tvar newText = $('#temptxt').attr('value');\r\n\t\t\t$('#' + objId).text(newText); //, find('input:text').remove();\r\n\t\t});\r\n}\r\n\r\nfunction showRemainingGoals(res, $goalsCount, $listTarget, $goalsConsumerCount) {\r\n\tvar people = {},\r\n\t\tcount = 0,\r\n\t\tconsumerCount = 0;\r\n\t$('result', res).each(function() {\r\n\t\tcount++;\r\n\t\tvar ID = $('ID', this).text(),\r\n\t\t\toid = $('oid', this).text(),\r\n\t\t\tfirst_name = $('first_name', this).text(),\r\n\t\t\tlast_name = $('last_name', this).text(),\r\n\t\t\tfullName = [first_name, last_name].join(' ');\r\n\t\tif (!people[fullName]) people[fullName] = 0;\r\n\t\tpeople[fullName]++;\r\n\t});\r\n\t$goalsCount.text(count);\r\n\tvar names = Object.keys(people);\r\n\t//names.sort();\r\n\tnames.forEach(function(name) {\r\n\t\tconsumerCount++;\r\n\t\tvar li = $('
  • ').text(name + ' - ' + people[name]);\r\n\t\t$listTarget.append(li);\r\n\t});\r\n\t$goalsConsumerCount.text(consumerCount);\r\n}\r\n\r\nfunction displayChangeUser() {\r\n\tvar overlay = $('
    ')\r\n\t\t.addClass('modaloverlay')\r\n\t\t.css({\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.15)',\r\n\t\t})\r\n\t\t.appendTo($('body'));\r\n\r\n\t$.ajax({\r\n\t\ttype: 'GET',\r\n\t\turl: 'dist/templates/autologin.html?RNG=' + +new Date(),\r\n\t\tsuccess: function(HTMLresponse, status, xhr) {\r\n\t\t\t//buildAbsentCard({ card: $(\"
    \").replaceWith(HTMLresponse), overlay: overlay, values: values, multi: true });\r\n\t\t\tvar card = $('
    ').replaceWith(HTMLresponse);\r\n\t\t\trosterAjax.getPSIUserOptionList(function(err, data) {\r\n\t\t\t\toverlay\r\n\t\t\t\t\t.click(function() {\r\n\t\t\t\t\t\t$(this).remove();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.append(card);\r\n\r\n\t\t\t\tcard\r\n\t\t\t\t\t.click(function(e) {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.bind('remove', function() {\r\n\t\t\t\t\t\toverlay.remove();\r\n\t\t\t\t\t});\r\n\t\t\t\tdata.forEach(function(user) {\r\n var li = $('
  • ').text([user.last_name, user.first_name +' ('+user.user_id+')'].join(', '));\r\n\t\t\t\t\tli.click(function() {\r\n\t\t\t\t\t\t$.session.UserId = user.user_id;\r\n\t\t\t\t\t\t//homeServiceLoad(false);\r\n\t\t\t\t\t\tchangeFromPSIAjax(user.user_id);\r\n\t\t\t\t\t\tcard.trigger('remove');\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$('#autologinlist').append(li);\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t\tpsiLogin.buildPopup(overlay[0]);\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t});\r\n\treturn;\r\n}\r\n\r\nfunction isNumberKey(evt) {\r\n\tvar charCode = evt.which ? evt.which : event.keyCode;\r\n\tif (charCode > 31 && (charCode < 48 || charCode > 57)) return false;\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction formatDateGFromDB(date) {\r\n\tdate = new Date(date);\r\n\tdate = ('0' + (date.getMonth() + 1)).slice(-2) + '/' + ('0' + date.getDate()).slice(-2) + '/' + date.getFullYear();\r\n\treturn date;\r\n}\r\n\r\nfunction formatTimeFromDB(time) {\r\n\tvar test = time.substr(0, 2);\r\n\tif (time.substr(0, 2) > 12 && time.substr(0, 2) < 22) {\r\n\t\ttest2 = time.substr(0, 2) - 12;\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, '0' + test2)\r\n\t\ttime = time.replace(time.substring(0, 2), '0' + test2);\r\n\t} else if (time.substr(0, 2) >= 22) {\r\n\t\ttest2 = time.substr(0, 2) - 12;\r\n\t\ttime = time.replace(time.substring(0, 2), test2);\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, test2)\r\n\t} else if (time.substr(0, 2) == 0) {\r\n\t\ttime = time.replace(time.substring(0, 2), 12);\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, test2)\r\n\t}\r\n\t//\r\n\ttime = time.slice(0, 5);\r\n\t//\r\n\tif (test >= 12) {\r\n\t\ttime = time + ' PM';\r\n\t} else {\r\n\t\ttime = time + ' AM';\r\n\t}\r\n\treturn time;\r\n}\r\n\r\nfunction convertTimeFromMilitary(value) {\r\n\tif (value !== null && value !== undefined) {\r\n\t\t//If value is passed in\r\n\t\tif (value.indexOf('AM') > -1 || value.indexOf('PM') > -1) {\r\n\t\t\t//If time is already in standard time then don't format.\r\n\t\t\treturn value;\r\n\t\t} else {\r\n\t\t\tif (value.length == 8) {\r\n\t\t\t\t//If value is the expected length for military time then process to standard time.\r\n\t\t\t\tvar hour = value.substring(0, 2); //Extract hour\r\n\t\t\t\tvar minutes = value.substring(3, 5); //Extract minutes\r\n\t\t\t\tvar identifier = 'AM'; //Initialize AM PM identifier\r\n\r\n\t\t\t\tif (hour == 12) {\r\n\t\t\t\t\t//If hour is 12 then should set AM PM identifier to PM\r\n\t\t\t\t\tidentifier = 'PM';\r\n\t\t\t\t}\r\n\t\t\t\tif (hour == 0) {\r\n\t\t\t\t\t//If hour is 0 then set to 12 for standard time 12 AM\r\n\t\t\t\t\thour = 12;\r\n\t\t\t\t}\r\n\t\t\t\tif (hour > 12) {\r\n\t\t\t\t\t//If hour is greater than 12 then convert to standard 12 hour format and set the AM PM identifier to PM\r\n\t\t\t\t\thour = hour - 12;\r\n\t\t\t\t\tif (hour < 10) {\r\n\t\t\t\t\t\thour = '0' + hour;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tidentifier = 'PM';\r\n\t\t\t\t}\r\n\t\t\t\treturn hour + ':' + minutes + ' ' + identifier; //Return the constructed standard time\r\n\t\t\t} else {\r\n\t\t\t\t//If value is not the expected length than just return the value as is\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction removeBadNoteTextToDisplay(note) {\r\n\tvar test = note.indexOf('\\\\r');\r\n\tnote = note.replace(/[\\n\\r]/g, '');\r\n\tif (note.indexOf('\\\\n') != -1) {\r\n\t\tnote = note.replace(/\\\\n/g, '\\n');\r\n\t}\r\n\tif (note.indexOf('\\\\r') != -1) {\r\n\t\tnote = note.replace(/\\\\r/g, ' ');\r\n\t}\r\n\tif (note.indexOf('\"') != -1) {\r\n\t\tnote = note.replace(/\\\"/g, '');\r\n\t}\r\n\tif (note.indexOf(\"'\") != -1) {\r\n\t\tnote = note.replace(/'/g, '');\r\n\t}\r\n\tif (note.indexOf('\\\\') != -1) {\r\n\t\tnote = note.replace(/\\\\/g, '');\r\n\t}\r\n\tnote = note.replace(' ', '');\r\n\tnote = note.replace('\\t', '');\r\n\tnote = note.replace(/\\t/g, '');\r\n\r\n\tnote = note;\r\n\treturn note;\r\n}\r\n\r\n//Gets days between passed in date and current date\r\nfunction daysBetweenDates(checkDate) {\r\n\tvar oneDay = 24 * 60 * 60 * 1000;\r\n\tvar todaysDate = new Date();\r\n\tif (checkDate == undefined) {\r\n\t\tvar checkDate = new Date();\r\n\t}\r\n\tvar changeDate = new Date(checkDate);\r\n\r\n\treturn Math.floor((todaysDate.getTime() - changeDate.getTime()) / oneDay);\r\n}\r\n\r\nfunction formatDateForDatabaseSave(date) {\r\n\tvar newDate = new Date(date);\r\n\tdate = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();\r\n\treturn date;\r\n}\r\n\r\nfunction convertTimeToMilitaryNew(inputTime) {\r\n\tif (inputTime == '') {\r\n\t\treturn '::00';\r\n\t}\r\n\tvar time = inputTime;\r\n\tvar hours = parseInt(time.match(/^(\\d+)/)[1], 10);\r\n\tvar minutes = parseInt(time.match(/:(\\d+)/)[1], 10);\r\n\tvar AMPM = time.match(/\\s(.*)$/)[1];\r\n\tif (AMPM == 'PM' && hours < 12) hours = hours + 12;\r\n\tif (AMPM == 'AM' && hours == 12) hours = hours - 12;\r\n\tvar sHours = hours.toString();\r\n\tvar sMinutes = minutes.toString();\r\n\tif (hours < 10) sHours = '0' + sHours;\r\n\tif (minutes < 10) sMinutes = '0' + sMinutes;\r\n\t//alert(sHours + \":\" + sMinutes);\r\n\treturn [sHours, sMinutes, '00'].join(':');\r\n}\r\n\r\n// Convert the input AM/PM time to a 24-hour military time:\r\nfunction convertTimeToMilitary(inputTime) {\r\n\tvar amPM = '';\r\n\tvar hour = '';\r\n\tvar minute = '';\r\n\tvar militaryTime = '';\r\n\tif (inputTime.length < 5 && inputTime != '') {\r\n\t\tinputTime = '0' + inputTime;\r\n\t}\r\n\t// Parse the input time into hours, minutes and AM/PM values:\r\n\tfor (var i = 0; i < inputTime.length; i++) {\r\n\t\tif (isNaN(inputTime.charAt(i)) == false && inputTime.charAt(i) != ' ') {\r\n\t\t\tif (i < 2) {\r\n\t\t\t\thour = hour + inputTime.charAt(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (i == 3 || i == 4) {\r\n\t\t\t\tminute = minute + inputTime.charAt(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inputTime.charAt(i) == 'A' || inputTime.charAt(i) == 'P' || inputTime.charAt(i) == 'M') {\r\n\t\t\tamPM = amPM + inputTime.charAt(i);\r\n\t\t}\r\n\t}\r\n\r\n\t// If a AM value, add 12 to the input hour:\r\n\tif (amPM == 'AM' && hour == '12') {\r\n\t\thour = '00';\r\n\t}\r\n\r\n\t// If a PM value, add 12 to the input hour:\r\n\tif (amPM == 'PM') {\r\n\t\tif (hour != '00') {\r\n\t\t\tif (hour != '12') {\r\n\t\t\t\tvar x = +hour;\r\n\t\t\t\tx = x + 12;\r\n\t\t\t\thour = String(x);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Create a military time from the input time format:\r\n\tmilitaryTime = hour + ':' + minute + ':00';\r\n\r\n\treturn militaryTime;\r\n}\r\n\r\n//http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area\r\nfunction setSelectionRange(input, selectionStart, selectionEnd) {\r\n\tif (input.setSelectionRange) {\r\n\t\tinput.focus();\r\n\t\tinput.setSelectionRange(selectionStart, selectionEnd);\r\n\t} else if (input.createTextRange) {\r\n\t\tvar range = input.createTextRange();\r\n\t\trange.collapse(true);\r\n\t\trange.moveEnd('character', selectionEnd);\r\n\t\trange.moveStart('character', selectionStart);\r\n\t\trange.select();\r\n\t}\r\n}\r\n\r\nfunction setCaretToPos(input, pos) {\r\n\tsetSelectionRange(input, pos, pos);\r\n}\r\n\r\nfunction getDeviceLocation(callback) {\r\n\tif (location.protocol === 'https:' || location.hostname === 'localhost') {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(callback, callback, { timeout: 3000 });\r\n\t\t} else {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//New time enter code below\r\nfunction setTimeToScreen(amOrPm) {\r\n\tvar pmAM = amOrPm;\r\n\tvar timeDigitsEntered = $('#timedisplayfield').val();\r\n\tvar originId = '#' + $('.timebox').attr('fromid');\r\n\tif (timeDigitsEntered.length < 3) {\r\n\t\ttimeDigitsEntered = timeDigitsEntered + ':00';\r\n\t} else {\r\n\t\ttimeDigitsEntered = timeDigitsEntered.substring(0, timeDigitsEntered.length - 2) + ':' + timeDigitsEntered.slice(-2);\r\n\t}\r\n\tif (timeDigitsEntered.length < 5) {\r\n\t\ttimeDigitsEntered = '0' + timeDigitsEntered;\r\n\t}\r\n\ttimeDigitsEntered = timeDigitsEntered + ' ' + pmAM;\r\n\tvar opts = $('.timebox').data('opts');\r\n\tvar increment = opts.increment;\r\n\tvar minutes = timeDigitsEntered.split(':')[1].split(' ')[0];\r\n\tvar hours = timeDigitsEntered.split(':')[0];\r\n\tif (increment != 0 && increment != undefined) {\r\n\t\tif (parseInt(minutes, 10) % increment != 0) {\r\n\t\t\treturn $.fn.PSmodal({\r\n\t\t\t\tbody: opts.incrementMessage,\r\n\t\t\t\timmediate: true,\r\n\t\t\t\tcloseOnBlur: false,\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tif (parseInt(hours, 10) > 12) {\r\n\t\treturn $.fn.PSmodal({\r\n\t\t\tbody: 'You have entered invalid hours. Please correct this.',\r\n\t\t\timmediate: true,\r\n\t\t\tcloseOnBlur: false,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t}\r\n\tif (parseInt(minutes, 10) > 59) {\r\n\t\treturn $.fn.PSmodal({\r\n\t\t\tbody: 'You have entered invalid minutes. Please correct this.',\r\n\t\t\timmediate: true,\r\n\t\t\tcloseOnBlur: false,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t}\r\n\tif (opts.callback) {\r\n\t\topts.callback(timeDigitsEntered);\r\n\t} else {\r\n\t\t$(originId).val(timeDigitsEntered);\r\n\t\t$(originId).html(timeDigitsEntered);\r\n\t\t$(originId).text(timeDigitsEntered);\r\n\t\t$(originId).change();\r\n\t}\r\n\r\n\t$('#timeoverlay').remove();\r\n}\r\n\r\nfunction setupTimeInputBox(obj, event, opts) {\r\n\tURL = '/webroot/dist/templates/timeinputpad.html'; // adjust path\r\n\t$.ajax({\r\n\t\ttype: 'GET',\r\n\t\turl: URL + '?RNG=' + +new Date(),\r\n\t\tsuccess: function(response) {\r\n\t\t\thtml = response;\r\n\t\t\tdisplayTimeBox(\r\n\t\t\t\thtml,\r\n\t\t\t\tobj,\r\n\t\t\t\tevent,\r\n\t\t\t\topts || {\r\n\t\t\t\t\tincrement: 0,\r\n\t\t\t\t\tincrementMessage: '',\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t},\r\n\t});\r\n}\r\n\r\nfunction displayTimeBox(html, obj, event, opts) {\r\n\tvar x, y;\r\n\tif ($.mobile) {\r\n\t\tx = 20;\r\n\t\ty = 20;\r\n\t} else {\r\n\t\tx = event.x - 50;\r\n\t\ty = event.y - 16;\r\n\t\t$('#timeinputkeypad').css('zoom', '125%');\r\n\t}\r\n\tvar overlay = $(\"
    \")\r\n\t\t.css({\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.15)',\r\n\t\t\tposition: 'absolute',\r\n\t\t\ttop: '0',\r\n\t\t\tbottom: '0',\r\n\t\t\tleft: '0',\r\n\t\t\tright: '0',\r\n\t\t\tzIndex: '99999',\r\n\t\t})\r\n\t\t.click(function() {\r\n\t\t\t$(this).remove();\r\n\t\t\treturn false;\r\n\t\t});\r\n\tvar timeBox = $('
    ' + html + '
    ')\r\n\t\t.click(function(e) {\r\n\t\t\treturn false;\r\n\t\t})\r\n\t\t.data('opts', opts);\r\n\r\n\ttimeBox.css({\r\n\t\topacity: '1.0 !important',\r\n\t\tmarginLeft: x,\r\n\t\tmarginTop: y,\r\n\t});\r\n\r\n\toverlay.append(timeBox);\r\n\t$('body').append(overlay);\r\n}\r\n\r\nfunction clearTimepadInputField() {\r\n\t$('#timedisplayfield').val('');\r\n}\r\n\r\nfunction convertDaysBack(daysBackIn) {\r\n\tvar dateOffset = 24 * 60 * 60 * 1000 * daysBackIn;\r\n\tvar daysBackDate = new Date();\r\n\tdaysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n\tvar dateToPass = daysBackDate.getFullYear() + '-' + UTIL.leadingZero(daysBackDate.getMonth() + 1) + '-' + UTIL.leadingZero(daysBackDate.getDate());\r\n\treturn dateToPass;\r\n}\r\n\r\nfunction convertDaysBackGoals(daysBackIn) {\r\n\tvar dateOffset = 24 * 60 * 60 * 1000 * daysBackIn;\r\n\tvar daysBackDate = new Date();\r\n\tdaysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n\tif (daysBackIn < 31) {\r\n\t\treturn new Date(daysBackDate.getFullYear(), daysBackDate.getMonth(), daysBackDate.getDate());\r\n\t} else {\r\n\t\treturn new Date(daysBackDate.getFullYear(), daysBackDate.getMonth() + 1, daysBackDate.getDate());\r\n\t}\r\n}\r\n\r\nfunction popupCalendar(opts) {\r\n\tvar minDate = opts.minDate || null,\r\n\t\tmaxDate = opts.maxDate || null,\r\n\t\tcurrVal = opts.currVal || null,\r\n\t\tcallback = opts.callback || function() {},\r\n\t\ttarget = opts.target;\r\n\r\n\tvar obj = {\r\n\t\tdateFormat: 'mm/dd/yy',\r\n\t\ttheme: 'wp',\r\n\t\taccent: 'steel',\r\n\t\tdisplay: 'bubble',\r\n\t\tmode: 'scroller',\r\n\t\tpreset: 'date',\r\n\t\tonSelect: function(valueText, inst) {\r\n\t\t\ttarget.text(valueText);\r\n\t\t\tcallback();\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tif (currVal != null) {\r\n\t\t\t\t$(this).scroller('setDate', new Date(currVal.getFullYear(), currVal.getMonth(), currVal.getDate()), false);\r\n\t\t\t}\r\n\r\n\t\t\t$('.dw-arr').css('display', 'none');\r\n\t\t},\r\n\t};\r\n\r\n\tif (minDate != null) {\r\n\t\tobj.minDate = minDate;\r\n\t}\r\n\r\n\tif (maxDate != null) {\r\n\t\tobj.maxDate = maxDate;\r\n\t}\r\n\r\n\ttarget\r\n\t\t.mobiscroll()\r\n\t\t.date(obj)\r\n\t\t.mobiscroll('show');\r\n}\r\n\r\nfunction openCaraSolva() {\r\n\tvar form = $('
    ', {\r\n\t\taction: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/CaraSolvaSignIn/',\r\n\t\tmethod: 'POST',\r\n\t\ttarget: '_blank',\r\n\t\tenctype: 'application/json',\r\n\t});\r\n\tform.hide().append(\"\");\r\n\tform.appendTo($('body'));\r\n\tform.submit();\r\n}\r\n\r\n(function(scope) {\r\n\tif (!scope.Anywhere) {\r\n\t\tscope.Anywhere = {};\r\n\t}\r\n\tscope.Anywhere.promptYesNo = function(message, yesCallback, noCallback) {\r\n\t\t$.fn.PSmodal({\r\n\t\t\tbody: message,\r\n\t\t\timmediate: true,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'Yes',\r\n\t\t\t\t\tcallback: function() {\r\n\t\t\t\t\t\tif (yesCallback) yesCallback();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'No',\r\n\t\t\t\t\tcallback: function() {\r\n\t\t\t\t\t\tif (noCallback) noCallback();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t};\r\n})(window);\r\n","// function getLocationNameFromId(id) {\r\n// \tfor (var i in $.session.locations) {\r\n// \t\tif ($.session.locationids[i] == id) return $.session.locations[i];\r\n// \t}\r\n// }\r\n\r\n//ANYW_Dashboard_GetRemainingGoalsCount\r\n// Not Being Called\r\n// function getRemainingGoalsCountForDashboard(callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getRemainingGoalsCountForDashboard/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.stringify(response);\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n// \t\t\tcallback(error, null);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\n// function getLocationsForDashboardAbsent\r\n// function getConsumerGroupsForDashboardAbsent\r\n\r\n// Not Being Called\r\n// function getClockedInDayServicesAtLocationCountsAjax(locationId, callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getClockedInDayServicesAtLocationCounts/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.stringify(response);\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\tcallback(error, null);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\n// function getInfalLoginCredentialsAjax(callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getInfalLoginCredentials/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.parse(response.getInfalLoginCredentialsResult);\r\n// \t\t\tif (res[0] && res[0].App_Password) ID = res[0].App_Password;\r\n// \t\t\tif ((ID = 0)) {\r\n// \t\t\t\t//go get ssn and use it to get emp id from infal, pass it along and then update user application cred table\r\n// \t\t\t}\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\nfunction changeFromPSIAjax(userId, callback) {\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/changeFromPSI/',\r\n\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"userID\":\"' + userId + '\"}',\r\n\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\tdataType: 'json',\r\n\t\tsuccess: function(response, status, xhr) {\r\n\t\t\tvar res = JSON.stringify(response);\r\n\t\t\teraseCookie('psiuser');\r\n\t\t\tvar overlay = document.createElement('div');\r\n\t\t\tif ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n\t\t\t\teraseCookie('psi');\r\n\t\t\t\tcreateCookie('psi', res, 1);\r\n\t\t\t\tsuccess = true;\r\n\t\t\t\tdocument.location.href = 'anywhere.html';\r\n\t\t\t} else if (res.indexOf('609') > -1) {\r\n\t\t\t\t//checkForErrors();\r\n\t\t\t\tcustomPasswordChange();\r\n\t\t\t} else {\r\n\t\t\t\t$('#error').css('opacity', '1');\r\n\t\t\t\t$('#error').css('display', 'block');\r\n\t\t\t\tif ($('#error').hasClass('hippaRestriction')) {\r\n\t\t\t\t\t$('#errortext').text('Password cannot match a recently used password');\r\n\t\t\t\t} else if ($('#error').hasClass('userInputError')) {\r\n\t\t\t\t\t$('#errortext').text('Invalid username or password');\r\n\t\t\t\t} else if (res.indexOf('608') > -1) {\r\n\t\t\t\t\t$('#errortext').text('This user name does not exist in demographics.');\r\n\t\t\t\t} else {\r\n $('#errortext').text('Invalid user name or password.');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\r\n\t\t\t// \"There was a problem connecting to the database. Please click OK to continue. If the problem persists, please contact Primary Solutions.\" +\r\n\t\t\t// xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\t// hide gif here, eg:\r\n\t\t\t$('body').css('cursor', 'auto');\r\n\t\t},\r\n\t});\r\n}\r\n","const psiLogin = (function() {\r\n let userPopup\r\n \r\n function buildPopup(userElemet) {\r\n\r\n userPopup = POPUP.build({\r\n header: \"Select a User\",\r\n id: \"psiUserSelectPopup\"\r\n })\r\n userPopup.appendChild(userElemet)\r\n \r\n POPUP.show(userPopup)\r\n}\r\n\r\n return {\r\n buildPopup\r\n }\r\n})()","const esignatures = (function () {\r\n let questions;\r\n let submitBtn;\r\n let esignerData = {};\r\n let formData = {};\r\n let ssaDropdownData;\r\n let providerDropdownData;\r\n let paidSupportProviders;\r\n let progressDiv;\r\n let viewerContainer;\r\n let formContainer;\r\n\r\n function generateReportDownload(tempUserId) {\r\n esignaturesAjax.downloadReportAfterSigning({ tempUserId }, () => {\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n });\r\n }\r\n\r\n function setSSADropdownInitialWidth(ssaDropdown, csChangeMindSSAPeopleId) {\r\n //const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n ssaDropdown.value = csChangeMindSSAPeopleId;\r\n let ssaWidth = 150;\r\n if (ssaDropdown.selectedIndex !== -1) {\r\n ssaWidth = ssaDropdown.options[ssaDropdown.selectedIndex].text.length * 10;\r\n }\r\n ssaDropdown.style.width = `${ssaWidth}px`;\r\n}\r\nfunction setVendorDropdownInitialWidth(vendorContactDropdown, csContactProviderVendorId) {\r\n //const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n vendorContactDropdown.value = csContactProviderVendorId;\r\n const vendorWidth =\r\n (vendorContactDropdown.options[vendorContactDropdown.selectedIndex].text.length + 3) * 10;\r\n\r\n vendorContactDropdown.style.width = `${vendorWidth}px`;\r\n}\r\n\r\nfunction updateSSADropdownWidth(popup) {\r\n const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_option');\r\n hidden_opt.innerHTML = ssaDropdown.options[ssaDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n ssaDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n}\r\nfunction updateVendorDropdownWidth(popup) {\r\n const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_option');\r\n hidden_opt.innerHTML =\r\n vendorContactDropdown.options[vendorContactDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n vendorContactDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n}\r\n\r\n\r\n async function displayFormPopup(tempUserId) {\r\n progressDiv = document.createElement('div');\r\n progressDiv.classList.add('test');\r\n progressDiv.style.height = 'auto';\r\n\r\n const popup = document.createElement('div');\r\n popup.id = 'formPopup';\r\n popup.classList.add('popup');\r\n\r\n viewerContainer = document.createElement('div');\r\n viewerContainer.id = 'viewer';\r\n viewerContainer.style.width = '800px';\r\n viewerContainer.style.height = '500px';\r\n viewerContainer.style.margin = '0';\r\n\r\n popup.appendChild(viewerContainer);\r\n\r\n formContainer = document.createElement('div');\r\n formContainer.classList.add('formContainer');\r\n\r\n function buildDissentSection() {\r\n const dissentWrap = document.createElement('div');\r\n dissentWrap.classList.add('dissentWrap');\r\n const dissentTitle = document.createElement('h3');\r\n dissentTitle.classList.add('h3Title');\r\n dissentTitle.innerText = 'Dissenting Opinion';\r\n\r\n dissentAreaDisagree = input.build({\r\n label: 'Area Team Member Disagrees',\r\n value: '',\r\n type: 'textarea',\r\n readonly: false,\r\n classNames: 'autosize',\r\n charLimit: 2500,\r\n forceCharLimit: true,\r\n callback: event => {\r\n formData.dissentAreaDisagree = event.target.value;\r\n },\r\n });\r\n\r\n dissentHowToAddress = input.build({\r\n label: 'How to Address',\r\n value: '',\r\n type: 'textarea',\r\n readonly: false,\r\n classNames: 'autosize',\r\n charLimit: 2500,\r\n forceCharLimit: true,\r\n callback: event => {\r\n formData.dissentHowToAddress = event.target.value;\r\n },\r\n });\r\n\r\n dissentWrap.appendChild(dissentTitle);\r\n dissentWrap.appendChild(dissentAreaDisagree);\r\n dissentWrap.appendChild(dissentHowToAddress);\r\n\r\n return dissentWrap;\r\n }\r\n\r\n function getVendorDropdownData() {\r\n const nonPaidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n return {\r\n paidSupport: paidSupportDropdownData,\r\n nonPaidSupport: nonPaidSupportDropdownData,\r\n };\r\n }\r\n function getSSADropdownData() {\r\n const data = ssaDropdownData.map(ssa => {\r\n return {\r\n value: ssa.id,\r\n text: ssa.name,\r\n };\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n data.unshift({ value: '', text: '[SELECT A QIDP]' });\r\n } else {\r\n data.unshift({ value: '', text: '[SELECT AN SSA]' });\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function populateDropdownSSA(ssaDropdown, csChangeMindSSAPeopleId) {\r\n const csChangeMindQuestionDropdownData = getSSADropdownData();\r\n\r\n dropdown.populate(ssaDropdown, csChangeMindQuestionDropdownData, csChangeMindSSAPeopleId);\r\n }\r\n\r\n function populateDropdownVendor(vendorDropdown, csContactProviderVendorId) {\r\n //* VENDOR DROPDOWN\r\n const contactQuestionDropdownData = getVendorDropdownData();\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ic_providerDropdown_paidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.paidSupport,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ic_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.nonPaidSupport,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (contactQuestionDropdownData.paidSupport.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: csContactProviderVendorId,\r\n });\r\n }\r\n\r\n function buildStandardQuestionSet() {\r\n const changeMindQuestion = document.createElement('div');\r\n changeMindQuestion.classList.add('changeMindQuestion');\r\n changeMindQuestion.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const csChangeMindQuestionText = document.createElement('div');\r\n csChangeMindQuestionText.classList.add('changeMindQuestionText');\r\n\r\n const csChangeMindQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_ssaDropdown',\r\n });\r\n\r\n populateDropdownSSA(csChangeMindQuestionDropdown, esignerData.ssaPeopleId);\r\n\r\n // Build Out Question with dropdown\r\n csChangeMindQuestionText.innerHTML = `I understand that I can change my mind at any time. I just need to let `;\r\n csChangeMindQuestionText.appendChild(csChangeMindQuestionDropdown);\r\n csChangeMindQuestionText.innerHTML += ` know.`;\r\n changeMindQuestion.appendChild(csChangeMindQuestionText);\r\n\r\n changeMindQuestion.addEventListener('change', event => {\r\n // if event.target.value = 'on' then it wont set the formdata value. 'on' means the radio was changed\r\n if (event.target.value !== 'on') {\r\n formData.csChangeMindSSAPeopleId = event.target.value;\r\n updateSSADropdownWidth(formContainer);\r\n validateForm();\r\n }\r\n });\r\n\r\n const csChangeMindRadioContainer = document.createElement('div');\r\n csChangeMindRadioContainer.classList.add('ic_questionRadioContainer', 'formError');\r\n ['Yes', 'No'].forEach(option => {\r\n const radio = input.buildRadio({\r\n id: `csChangeMind-${option}`,\r\n text: option,\r\n name: 'csChangeMind',\r\n callback: () => {\r\n formData.csChangeMind = option === 'Yes' ? 'Y' : 'N';\r\n csChangeMindRadioContainer.classList.remove('formError');\r\n validateForm();\r\n },\r\n });\r\n csChangeMindRadioContainer.appendChild(radio);\r\n });\r\n changeMindQuestion.appendChild(csChangeMindRadioContainer);\r\n\r\n const contactQuestion = document.createElement('div');\r\n contactQuestion.classList.add('contactQuestion');\r\n\r\n // Inner Wrap for just Dropdown and Radios *for safari\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const contactQuestionText = document.createElement('div');\r\n contactQuestionText.classList.add('contactQuestionText');\r\n\r\n //SSA Inline Dropdown\r\n const csContactQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_vendorContactDropdown',\r\n });\r\n\r\n // populate\r\n populateDropdownVendor(csContactQuestionDropdown, esignerData.vendorId);\r\n\r\n contactQuestion.addEventListener('change', event => {\r\n // if event.target.value = 'on' then it wont set the formdata value. 'on' means the radio was changed\r\n if (event.target.value !== 'on') {\r\n formData.csContactProviderVendorId = event.target.value;\r\n updateVendorDropdownWidth(formContainer);\r\n validateForm();\r\n }\r\n });\r\n\r\n // Build Out Question with dropdown\r\n contactQuestionText.innerHTML = `I understand I can contact someone at `;\r\n contactQuestionText.appendChild(csContactQuestionDropdown);\r\n contactQuestionText.innerHTML += ' if I want to file a complaint.';\r\n wrap.appendChild(contactQuestionText);\r\n contactQuestion.appendChild(wrap);\r\n\r\n const csContactRadioContainer = document.createElement('div');\r\n csContactRadioContainer.classList.add('ic_questionRadioContainer', 'formError');\r\n ['Yes', 'No'].forEach(option => {\r\n const radio = input.buildRadio({\r\n id: `csContact-${option}`,\r\n text: option,\r\n name: 'csContact',\r\n callback: () => {\r\n formData.csContact = option === 'Yes' ? 'Y' : 'N';\r\n csContactRadioContainer.classList.remove('formError');\r\n validateForm();\r\n },\r\n });\r\n csContactRadioContainer.appendChild(radio);\r\n });\r\n wrap.appendChild(csContactRadioContainer);\r\n\r\n const standardQuestions = [\r\n // {\r\n // id: 'csChangeMind',\r\n // text: `I understand that I can change my mind at any time. I just need to let ${esignerData.ssaName} know`,\r\n // options: ['Yes', 'No'],\r\n // defaultVal: \"\"\r\n // },\r\n // {\r\n // id: 'csContact',\r\n // text: `I understand I can contact someone at ${esignerData.vendorName} if I want to file a complaint.`,\r\n // options: ['Yes', 'No'],\r\n // defaultVal: \"\"\r\n // },\r\n {\r\n id: 'csSupportsHealthNeeds',\r\n text: 'I agree this plan contains supports to meet my health and welfare needs.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csRightsReviewed',\r\n text: 'Individual rights have been reviewed with me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csAgreeToPlan',\r\n text: 'I understand the purpose, benefits, and potential risks. I agree and consent to this entire plan.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csTechnology',\r\n text: 'Technology solutions have been explored with my team and me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csFCOPExplained',\r\n text: 'Free Choice Of Provider has been explained to me.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csDueProcess',\r\n text: 'I have been given my due process rights.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: '',\r\n },\r\n {\r\n id: 'csResidentialOptions',\r\n text: 'I have been given information on residential options.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: '',\r\n },\r\n ];\r\n\r\n const standardQuestionsWrap = document.createElement('div');\r\n standardQuestionsWrap.classList.add('standardQuestionsWrap');\r\n\r\n standardQuestionsWrap.appendChild(changeMindQuestion);\r\n standardQuestionsWrap.appendChild(contactQuestion);\r\n\r\n standardQuestions.forEach(question => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('ic_questionContainer');\r\n const questionText = document.createElement('p');\r\n questionText.classList.add('standardQuestionText');\r\n questionText.innerText = question.text;\r\n\r\n const questionRadioContainer = document.createElement('div');\r\n questionRadioContainer.classList.add('ic_questionRadioContainer');\r\n\r\n if (question.defaultVal === '') {\r\n questionRadioContainer.classList.add('formError');\r\n }\r\n\r\n question.options.forEach(option => {\r\n const radio = input.buildRadio({\r\n id: `${question.id}-${option}`,\r\n text: option,\r\n name: question.id,\r\n callback: () => {\r\n switch (option) {\r\n case 'Yes':\r\n formData[question.id] = 'Y';\r\n break;\r\n case 'No':\r\n formData[question.id] = 'N';\r\n break;\r\n case 'N/A':\r\n formData[question.id] = 'NA';\r\n break;\r\n default:\r\n formData[question.id] = '';\r\n break;\r\n }\r\n questionRadioContainer.classList.remove('formError');\r\n validateForm();\r\n },\r\n });\r\n questionRadioContainer.appendChild(radio);\r\n });\r\n\r\n questionContainer.appendChild(questionText);\r\n questionContainer.appendChild(questionRadioContainer);\r\n\r\n standardQuestionsWrap.appendChild(questionContainer);\r\n });\r\n\r\n return standardQuestionsWrap;\r\n }\r\n\r\n function buildConsentSection() {\r\n const consentWrap = document.createElement('div');\r\n consentWrap.classList.add('consentWrap');\r\n\r\n const consentHeader = document.createElement('h3');\r\n consentHeader.classList.add('h3Title');\r\n consentHeader.innerText = 'Consent Statements';\r\n consentWrap.appendChild(consentHeader);\r\n\r\n const standardQuestions = buildStandardQuestionSet();\r\n\r\n consentWrap.appendChild(standardQuestions);\r\n\r\n return consentWrap;\r\n }\r\n\r\n function validateForm() {\r\n const radios = document.querySelectorAll('.ic_questionRadioContainer input[type=\"radio\"]');\r\n const signatureInput = document.getElementById('signatureInput');\r\n const ssaDropdown = document.getElementById('isp_ic_ssaDropdown');\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n\r\n let allFilled = true;\r\n\r\n radios.forEach(radio => {\r\n const name = radio.name;\r\n if (!document.querySelector(`input[name=\"${name}\"]:checked`)) {\r\n allFilled = false;\r\n }\r\n });\r\n\r\n if (ssaDropdown && vendorDropdown) {\r\n if (ssaDropdown.value === '' || vendorDropdown.value === '') {\r\n allFilled = false;\r\n }\r\n }\r\n\r\n if (signatureInput.value === '' || !allFilled) {\r\n if (!submitBtn.classList.contains('disabled')) {\r\n submitBtn.classList.add('disabled');\r\n }\r\n submitBtn.disabled = true;\r\n } else {\r\n submitBtn.classList.remove('disabled');\r\n submitBtn.disabled = false;\r\n }\r\n }\r\n\r\n submitBtn = button.build({\r\n id: 'eSigSubmitBtn',\r\n text: 'Sign Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const updateQuestions = await _UTIL.fetchData('updateESignFormValues', { formData });\r\n\r\n const downloadExitPopup = document.createElement('div');\r\n downloadExitPopup.classList.add('popup', 'downloadExitPopup');\r\n\r\n var paragraph = document.createElement('p');\r\n paragraph.textContent =\r\n 'You have successfully signed this plan! You will receive a confirmation email shortly. The Case Manager will also be notified that you signed the plan. Please close your browser tab to complete the process.';\r\n\r\n const downloadPlanBtn = button.build({\r\n id: 'downloadPlanBtn',\r\n text: 'Download Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n generateReportDownload(tempUserId);\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(paragraph);\r\n btnWrap.appendChild(downloadPlanBtn);\r\n\r\n downloadExitPopup.appendChild(paragraph);\r\n downloadExitPopup.appendChild(btnWrap);\r\n const overlay = document.querySelector('.overlay');\r\n overlay.classList.add('visible');\r\n\r\n const formPopup = document.getElementById('formPopup');\r\n formPopup.remove();\r\n\r\n document.body.appendChild(downloadExitPopup);\r\n },\r\n });\r\n submitBtn.classList.add('disabled');\r\n\r\n if (\r\n esignerData.teamMemberType === 'Parent/Guardian' ||\r\n esignerData.teamMemberType === 'Parent' ||\r\n esignerData.teamMemberType === 'Guardian' ||\r\n esignerData.teamMemberType === 'Person Supported'\r\n ) {\r\n questions = buildConsentSection();\r\n formContainer.appendChild(questions);\r\n }\r\n const dissentingSection = buildDissentSection();\r\n\r\n formContainer.appendChild(dissentingSection);\r\n\r\n const signatureDisplay = document.createElement('div');\r\n signatureDisplay.id = 'signatureDisplay';\r\n\r\n const signatureInput = input.build({\r\n id: 'signatureInput',\r\n type: 'input',\r\n label: 'Name',\r\n style: 'secondary',\r\n });\r\n\r\n signatureInput.classList.add('errorPopup')\r\n\r\n signatureInput.addEventListener('input', function (event) {\r\n const value = event.target.value;\r\n signatureDisplay.textContent = value;\r\n \r\n if (value === '') {\r\n signatureInput.classList.add('errorPopup');\r\n } else {\r\n signatureInput.classList.remove('errorPopup');\r\n }\r\n \r\n validateForm();\r\n });\r\n \r\n\r\n formContainer.appendChild(signatureDisplay);\r\n formContainer.appendChild(signatureInput);\r\n\r\n popup.appendChild(formContainer);\r\n formContainer.appendChild(submitBtn);\r\n\r\n progressDiv.appendChild(popup);\r\n document.body.appendChild(progressDiv);\r\n //document.body.appendChild(popup);\r\n\r\n popup.style.display = 'block';\r\n\r\n esignaturesAjax.openESignaturesPDFEditor(tempUserId, viewerContainer);\r\n }\r\n\r\n async function init(tempUserId) {\r\n const eSignerDataResult = await _UTIL.fetchData('getESignerData', { tempUserId });\r\n esignerData = eSignerDataResult.getESignerDataResult;\r\n\r\n formData = {\r\n peopleId: esignerData.peopleId,\r\n planId: esignerData.planId,\r\n csChangeMind: '',\r\n csChangeMindSSAPeopleId: '',\r\n csContact: '',\r\n csContactProviderVendorId: '',\r\n csContactInput: '',\r\n csRightsReviewed: '',\r\n csAgreeToPlan: '',\r\n csFCOPExplained: '',\r\n csDueProcess: '',\r\n csResidentialOptions: '',\r\n csSupportsHealthNeeds: '',\r\n csTechnology: '',\r\n dissentAreaDisagree: '',\r\n dissentHowToAddress: '',\r\n applicationName: esignerData.applicationName,\r\n };\r\n\r\n async function loadDropdownData() {\r\n providerDropdownData = await consentAndSignAjax.getPlanInformedConsentVendors({\r\n token: $.session.Token,\r\n peopleid: esignerData.peopleId,\r\n });\r\n // this is where the DDL gets its data -- people, user permissions, etc tables\r\n ssaDropdownData = await consentAndSignAjax.getPlanInformedConsentSSAs({\r\n token: $.session.Token,\r\n });\r\n }\r\n\r\n await loadDropdownData();\r\n\r\n paidSupportProviders = servicesSupports.getSelectedVendorIds();\r\n\r\n displayFormPopup(tempUserId);\r\n\r\n const ssaDropdown = document.getElementById('isp_ic_ssaDropdown');\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n\r\n // set the initial value and width of the dropdown value if they \r\n if (ssaDropdown) {\r\n const ssaDropdown = document.getElementById('isp_ic_ssaDropdown');\r\n setSSADropdownInitialWidth(ssaDropdown, esignerData.ssaPeopleId);\r\n }\r\n \r\n if (vendorDropdown) {\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n setVendorDropdownInitialWidth(vendorDropdown, esignerData.vendorId);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var esignaturesAjax = (function () { \r\n\r\n async function openESignaturesPDFEditor(tempUserId, progressDiv) {\r\n const token = $.session.token;\r\n \r\n // Show the spinner\r\n var popup = document.createElement('div');\r\n popup.classList.add('pendingSavePopup', 'popup');\r\n\r\n //SPINNER\r\n spinnerWrap = document.createElement('div');\r\n spinnerWrap.classList.add('spinner');\r\n spinnerMessage = document.createElement('h2');\r\n spinnerMessage.classList.add('spinner__message');\r\n var spinnerBar = document.createElement('div');\r\n spinnerBar.classList.add('spinner__bar');\r\n spinnerMessage.innerHTML = `

    Loading...

    `;\r\n spinnerWrap.appendChild(spinnerBar);\r\n spinnerWrap.appendChild(spinnerMessage);\r\n\r\n popup.appendChild(spinnerWrap);\r\n\r\n progressDiv.appendChild(popup);\r\n\r\n try {\r\n const response = await $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openESignaturesEditor/',\r\n data: JSON.stringify({ tempUserId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n \r\n var arr = response.openESignaturesEditorResult;\r\n \r\n await WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n instance.UI.disableElements(['ribbons']);\r\n \r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n \r\n instance.UI.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => { }\r\n });\r\n });\r\n \r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.Core.documentViewer.loadDocument(blob, { filename: 'myfile.pdf' });\r\n instance.UI.disableElements(['toolsHeader']);\r\n \r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n \r\n } catch (error) {\r\n throw new Error('Failed to process document');\r\n }\r\n });\r\n });\r\n \r\n\r\n var popup = document.querySelector('.pendingSavePopup');\r\n progressDiv.removeChild(popup);\r\n\r\n return 'success';\r\n } catch (error) {\r\n var popup = document.querySelector('.pendingSavePopup');\r\n progressDiv.removeChild(popup);\r\n \r\n return 'error';\r\n }\r\n }\r\n\r\n function downloadReportAfterSigning(retrieveData, callback) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/downloadReportAfterSigning/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction);\r\n\r\n var tempUserIdInput = document.createElement('input');\r\n tempUserIdInput.setAttribute('name', 'token');\r\n tempUserIdInput.setAttribute('value', retrieveData.tempUserId);\r\n tempUserIdInput.id = 'tempUserId';\r\n\r\n form.appendChild(tempUserIdInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n return { \r\n openESignaturesPDFEditor,\r\n downloadReportAfterSigning\r\n };\r\n})();\r\n","const addEditEmployers = (() => {\r\n let addNewEmployerBtn;\r\n let rtnOODMainPageBtn;\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n let saveBtn;\r\n let cancelBtn;\r\n let openedPage;\r\n let redirectInformation = {};\r\n let BtnEventType;\r\n\r\n async function init() {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n let container = document.createElement(\"div\");\r\n var LineBr = document.createElement('br');\r\n\r\n addNewEmployerBtn = button.build({\r\n text: 'Add New Employer',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!addNewEmployerBtn.classList.contains('disabled')) {\r\n buildEmployerPopUp({}, 'insert', 'employer', null)\r\n }\r\n },\r\n });\r\n\r\n rtnOODMainPageBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { Employment.loadEmploymentLanding() },\r\n });\r\n\r\n OODEmployersTable = await buildEmployersTable();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('employmentBtnWrap');\r\n if (!$.session.InsertEmployers) {\r\n addNewEmployerBtn.classList.add('disabled');\r\n }\r\n headingWrap.appendChild(addNewEmployerBtn);\r\n headingWrap.appendChild(rtnOODMainPageBtn);\r\n container.appendChild(headingWrap);\r\n container.appendChild(LineBr);\r\n container.appendChild(OODEmployersTable);\r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildEmployersTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEmployersTable',\r\n columnHeadings: ['Employer', 'Address', 'City', 'State', 'Zip Code'],\r\n endIcon: false,\r\n };\r\n const { getActiveEmployersResult: activeEmployers } = await OODAjax.getActiveEmployersAsync();\r\n var filteredActiveEmployers = activeEmployers.filter((x) => x.employerId != 0);\r\n\r\n let tableData = filteredActiveEmployers.map((employer) => ({\r\n values: [employer.employerName, employer.address1 + ' ' + employer.address2, employer.city, employer.state, employer.zipcode],\r\n attributes: [{ key: 'employerId', value: employer.employerId }],\r\n id: employer.employerId,\r\n onClick: (e) => {\r\n OODAjax.getEmployer(employer.employerId, function (results) {\r\n buildEmployerPopUp(results, 'update', 'employer', null);\r\n });\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n return oTable;\r\n }\r\n\r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType, openpageName, redirectInfo) {\r\n if (openpageName == 'employmentInfo') {\r\n openedPage = 'employmentInfo';\r\n redirectInformation = redirectInfo\r\n }\r\n else\r\n openedPage = 'employer';\r\n\r\n var headingEmployer;\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n headingEmployer = 'Edit this Employer';\r\n BtnEventType = 'Update';\r\n } else {\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n headingEmployer = 'Add Employer';\r\n BtnEventType = 'Add';\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: headingEmployer,\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n value: (employerstate) ? employerstate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n cancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n POPUP.show(editEmployerPopup);\r\n checkRequiredFields();\r\n }\r\n\r\n function popUpEventHandlers() {\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n });\r\n }\r\n\r\n function checkRequiredFields() {\r\n var employrInput = employerInput.querySelector('#employerInput');\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n saveBtn.classList.add('disabled'); \r\n return;\r\n } else {\r\n employerInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n let employerID = insertEmployerResult.employerId;\r\n\r\n if (employerID == '0') {\r\n warningPopup();\r\n } else {\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (openedPage == 'employmentInfo')\r\n NewEmployment.refreshEmployment(redirectInformation.positionId, redirectInformation.empName, redirectInformation.posName, redirectInformation.consumersName, redirectInformation.consumersId, tabPositionIndex = 0);\r\n else\r\n addEditEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n addEditEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function deleteConfirmation(employerId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteEmployerAsync(employerId);\r\n if (result.deleteEmployerResult === \"1\") {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this employer?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n buildEmployerPopUp,\r\n };\r\n})(); ","const Employment = (() => {\r\n //Inputs\r\n let newFilterBtn;\r\n let filterRow;\r\n let EmploymentEntriesTable = [];\r\n let PositionBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let filterValues;\r\n let btnWrap;\r\n let employerBtnWrap;\r\n let positionBtnWrap;\r\n let positionStartDateBtnWrap;\r\n let positionEndDateBtnWrap;\r\n let jobStandingBtnWrap;\r\n let reportValues;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n await loadEmploymentLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build Employment Module Landing Page \r\n async function loadEmploymentLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n $.session.consumerId = selectedConsumersId;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[0].FullName;\r\n const topButton = buildHeaderButton(selectedConsumers[0]);\r\n landingPage.appendChild(topButton);\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n\r\n landingPage.appendChild(filterRow);\r\n EmploymentEntriesTable = await buildEmploymentEntriesTable(filterValues);\r\n landingPage.appendChild(EmploymentEntriesTable);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build the listing of Employment Entries (based off of filter settings)\r\n async function buildEmploymentEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: selectedConsumersName,\r\n columnHeadings: ['Employer', 'Position', 'Position Start Date', 'Position End Date', 'Job Standing'],\r\n endIcon: false,\r\n };\r\n\r\n let EmploymentsEntries = await EmploymentAjax.getEmploymentEntriesAsync(\r\n selectedConsumersId,\r\n filterValues.employer,\r\n filterValues.position,\r\n filterValues.positionStartDate,\r\n filterValues.positionEndDate == null ? UTIL.getTodaysDate() : filterValues.positionEndDate,\r\n filterValues.jobStanding,\r\n );\r\n\r\n let tableData = EmploymentsEntries.getEmploymentEntriesResult.map((entry) => ({\r\n values: [entry.employer, entry.position, entry.positionStartDate == '' ? '' : moment(entry.positionStartDate).format('M/D/YYYY'), entry.positionEndDate == '' ? '' : moment(entry.positionEndDate).format('M/D/YYYY'), entry.jobStanding],\r\n attributes: [{ key: 'positionId', value: entry.positionId }, { key: 'PeopleName', value: entry.PeopleName }],\r\n onClick: (e) => {\r\n handleAccountTableEvents(e)\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(event) {\r\n var name = event.target.childNodes[0].innerText;\r\n var positionName = event.target.childNodes[1].innerText;\r\n var positionId = event.target.attributes.positionId.value;\r\n NewEmployment.refreshEmployment(positionId, name, positionName, selectedConsumersName, selectedConsumersId);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n PositionBtns = buildButtonBar(consumer);\r\n consumerRow.appendChild(PositionBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const newPositionBtn = button.build({\r\n text: '+ New Position',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: async () => {\r\n if (!newPositionBtn.classList.contains('disabled')) {\r\n NewEmployment.refreshEmployment(positionId = undefined, '', '', selectedConsumersName, selectedConsumersId)\r\n }\r\n },\r\n });\r\n\r\n const editEmployerBtn = button.build({\r\n text: 'Edit Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: async () => {\r\n if (!editEmployerBtn.classList.contains('disabled')) {\r\n addEditEmployers.init();\r\n }\r\n },\r\n });\r\n\r\n\r\n\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getReportValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n reportsBtn = createMainReportButton([{ text: 'Employee Reporting Information' }])\r\n\r\n if ($.session.EmploymentUpdate) {\r\n newPositionBtn.classList.remove('disabled');\r\n }\r\n else {\r\n newPositionBtn.classList.add('disabled');\r\n }\r\n newPositionBtn.style.height = '50px';\r\n\r\n newFilterBtn = buildNewFilterBtn();\r\n\r\n const entryButtonBar = document.createElement('div');\r\n entryButtonBar.classList.add('employmentBtnWrap');\r\n entryButtonBar.style.width = '100%';\r\n entryButtonBar.appendChild(newPositionBtn);\r\n\r\n if (!$.session.InsertEmployers && !$.session.UpdateEmployers) {\r\n editEmployerBtn.classList.add('disabled');\r\n }\r\n entryButtonBar.appendChild(editEmployerBtn);\r\n if ($.session.EmploymentView) {\r\n entryButtonBar.appendChild(reportsBtn);\r\n }\r\n buttonBar.appendChild(entryButtonBar);\r\n\r\n return buttonBar;\r\n }\r\n\r\n // build Filter button, which filters the data displayed on the OOD Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n employer: '%',\r\n position: '%',\r\n positionStartDate: '1900-01-01',\r\n positionEndDate: null,\r\n jobStanding: '%',\r\n EmployerID: '%',\r\n positionID: '%',\r\n jobStandingID: '%'\r\n }\r\n }\r\n\r\n function getReportValues() {\r\n return (reportValues = {\r\n consumerID: selectedConsumersId,\r\n employer: filterValues.EmployerID == undefined ? '%' : filterValues.EmployerID,\r\n position: filterValues.positionID == undefined ? '%' : filterValues.positionID,\r\n positionStartDate: filterValues.positionStartDate,\r\n positionEndDate: filterValues.positionEndDate == null ? UTIL.getTodaysDate() : filterValues.positionEndDate,\r\n jobStanding: filterValues.jobStandingID == undefined ? '%' : filterValues.jobStandingID,\r\n });\r\n }\r\n\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n if (filterValues.employer === '%' || filterValues.employer === 'ALL') {\r\n btnWrap.appendChild(employerBtnWrap);\r\n btnWrap.removeChild(employerBtnWrap);\r\n } else {\r\n btnWrap.appendChild(employerBtnWrap);\r\n }\r\n\r\n if (filterValues.position === '%' || filterValues.position === 'ALL') {\r\n btnWrap.appendChild(positionBtnWrap);\r\n btnWrap.removeChild(positionBtnWrap);\r\n } else {\r\n btnWrap.appendChild(positionBtnWrap);\r\n }\r\n\r\n if (filterValues.positionEndDate === null) {\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n btnWrap.removeChild(positionEndDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n }\r\n if (filterValues.jobStanding === '%' || filterValues.jobStanding === 'ALL') {\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n btnWrap.removeChild(jobStandingBtnWrap);\r\n } else {\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n employerBtn = button.build({\r\n id: 'employerBtn',\r\n text: 'Employer: ' + filterValues.employer,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('employerBtn') },\r\n });\r\n employerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employerBtn') },\r\n });\r\n\r\n positionBtn = button.build({\r\n id: 'positionBtn',\r\n text: 'Position: ' + filterValues.position,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionBtn') },\r\n });\r\n positionCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('positionBtn') },\r\n });\r\n\r\n positionStartDateBtn = button.build({\r\n id: 'positionStartDateBtn',\r\n text: 'Position Start Date: ' + moment(filterValues.positionStartDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionStartDateBtn') },\r\n });\r\n\r\n positionEndDateBtn = button.build({\r\n id: 'positionEndDateBtn',\r\n text: 'Position End Date: ' + moment(filterValues.positionEndDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionEndDateBtn') },\r\n });\r\n positionEndDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('positionEndDateBtn') },\r\n });\r\n\r\n jobStandingBtn = button.build({\r\n id: 'jobStandingBtn',\r\n text: 'Job Standing: ' + filterValues.jobStanding,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('jobStandingBtn') },\r\n });\r\n jobStandingCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('jobStandingBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n employerBtnWrap = document.createElement('div');\r\n employerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employerBtnWrap.appendChild(employerBtn);\r\n employerBtnWrap.appendChild(employerCloseBtn);\r\n btnWrap.appendChild(employerBtnWrap);\r\n\r\n positionBtnWrap = document.createElement('div');\r\n positionBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionBtnWrap.appendChild(positionBtn);\r\n positionBtnWrap.appendChild(positionCloseBtn);\r\n btnWrap.appendChild(positionBtnWrap);\r\n\r\n positionStartDateBtnWrap = document.createElement('div');\r\n positionStartDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionStartDateBtnWrap.appendChild(positionStartDateBtn);\r\n btnWrap.appendChild(positionStartDateBtnWrap);\r\n\r\n positionEndDateBtnWrap = document.createElement('div');\r\n positionEndDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionEndDateBtnWrap.appendChild(positionEndDateBtn);\r\n positionEndDateBtnWrap.appendChild(positionEndDateCloseBtn);\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n\r\n jobStandingBtnWrap = document.createElement('div');\r\n jobStandingBtnWrap.classList.add('filterSelectionBtnWrap');\r\n jobStandingBtnWrap.appendChild(jobStandingBtn);\r\n jobStandingBtnWrap.appendChild(jobStandingCloseBtn);\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'employerBtn') {\r\n filterValues.employer = '%';\r\n }\r\n if (closeFilter == 'positionBtn') {\r\n filterValues.position = '%';\r\n }\r\n if (closeFilter == 'positionEndDateBtn') {\r\n filterValues.positionEndDate = null;\r\n }\r\n if (closeFilter == 'jobStandingBtn') {\r\n filterValues.jobStanding = '%';\r\n }\r\n loadEmploymentLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs \r\n positionStartDate = input.build({\r\n id: 'positionStartDate',\r\n type: 'date',\r\n label: 'Position Start Date',\r\n style: 'secondary',\r\n value: filterValues.positionStartDate,\r\n });\r\n\r\n positionEndDate = input.build({\r\n id: 'positionEndDate',\r\n type: 'date',\r\n label: 'Position End Date',\r\n style: 'secondary',\r\n value: filterValues.positionEndDate,\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: \"Position\",\r\n dropdownId: \"positionDropdown\",\r\n });\r\n\r\n jobStandingDropdown = dropdown.build({\r\n id: 'jobStandingDropdown',\r\n label: \"Job Standing\",\r\n dropdownId: \"jobStandingDropdown\",\r\n });\r\n\r\n EmployerDropdown = dropdown.build({\r\n id: 'employerDropdown',\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'employerBtn')\r\n filterPopup.appendChild(EmployerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'positionBtn')\r\n filterPopup.appendChild(positionDropdown);\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'positionStartDateBtn')\r\n dateWrap.appendChild(positionStartDate);\r\n if (IsShow == 'ALL' || IsShow == 'positionEndDateBtn')\r\n dateWrap.appendChild(positionEndDate);\r\n\r\n // build popup\r\n filterPopup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'jobStandingBtn')\r\n filterPopup.appendChild(jobStandingDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n populateFilterDropdown();\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n\r\n var tmpEmployer;\r\n var tmpPosition;\r\n var tmpJobStanding;\r\n var tmpStartDate;\r\n var tmpEndDate;\r\n var tmpEmployerID;\r\n var tmppositionID;\r\n var tmpjobStandingID;\r\n\r\n positionStartDate.addEventListener('change', event => {\r\n tmpStartDate = event.target.value;\r\n });\r\n positionEndDate.addEventListener('change', event => {\r\n tmpEndDate = event.target.value;\r\n });\r\n EmployerDropdown.addEventListener('change', event => {\r\n tmpEmployer = event.target.value;\r\n tmpEmployerID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n positionDropdown.addEventListener('change', event => {\r\n tmpPosition = event.target.value;\r\n tmppositionID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n jobStandingDropdown.addEventListener('change', event => {\r\n tmpJobStanding = event.target.value;\r\n tmpjobStandingID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpEmployer,\r\n tmpPosition,\r\n tmpJobStanding,\r\n tmpStartDate,\r\n tmpEndDate,\r\n tmpEmployerID,\r\n tmppositionID,\r\n tmpjobStandingID\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n eventListeners();\r\n loadEmploymentLanding();\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpEmployer) filterValues.employer = data.tmpEmployer;\r\n if (data.tmpPosition) filterValues.position = data.tmpPosition;\r\n if (data.tmpJobStanding) filterValues.jobStanding = data.tmpJobStanding;\r\n if (data.tmpStartDate) filterValues.positionStartDate = data.tmpStartDate;\r\n if (data.tmpEndDate) filterValues.positionEndDate = data.tmpEndDate;\r\n if (data.tmpEndDate == '') filterValues.positionEndDate = null;\r\n if (data.tmpStartDate == '') filterValues.positionStartDate = '1900-01-01';\r\n\r\n if (data.tmpEmployerID) filterValues.EmployerID = data.tmpEmployerID;\r\n if (data.tmppositionID) filterValues.positionID = data.tmppositionID;\r\n if (data.tmpjobStandingID) filterValues.jobStandingID = data.tmpjobStandingID;\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const {\r\n getPositionsResult: Positions,\r\n } = await EmploymentAjax.getPositionsAsync();\r\n let positionsData = Positions.map((positions) => ({\r\n id: positions.positionId,\r\n value: positions.positionName,\r\n text: positions.positionName\r\n }));\r\n positionsData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"positionDropdown\", positionsData, filterValues.position);\r\n\r\n const {\r\n getEmployersResult: Employer,\r\n } = await EmploymentAjax.getEmployersAsync();\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerName,\r\n text: employer.employerName\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"employerDropdown\", data, filterValues.employer);\r\n\r\n const {\r\n getJobStandingsResult: JobStanding,\r\n } = await EmploymentAjax.getJobStandingsAsync();\r\n let jobStandingData = JobStanding.map((jobStanding) => ({\r\n id: jobStanding.jobStandingId,\r\n value: jobStanding.jobStandingName,\r\n text: jobStanding.jobStandingName\r\n }));\r\n jobStandingData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"jobStandingDropdown\", jobStandingData, filterValues.jobStanding);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('Employment');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadEmploymentLanding,\r\n };\r\n})(); \r\n","var EmploymentAjax = (function () {\r\n // Employment Main/Landing Page\r\n async function getEmploymentEntriesAsync(consumerIds, employer, position, positionStartDate, positionEndDate, jobStanding) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmploymentEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"employer\":\"' +\r\n employer +\r\n '\", \"position\":\"' +\r\n position +\r\n '\", \"positionStartDate\":\"' +\r\n positionStartDate +\r\n '\", \"positionEndDate\":\"' +\r\n positionEndDate +\r\n '\", \"jobStanding\":\"' +\r\n jobStanding +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositions/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getJobStandingsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getJobStandings/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployeeInfoByIDAsync(positionId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeInfoByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionId\":\"' +\r\n positionId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEmploymentPathAsync(\r\n employmentPath, newStartDate, newEndDate, currentEndDate, peopleID, userID, existingPathID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmploymentPath/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employmentPath: employmentPath,\r\n newStartDate: newStartDate,\r\n newEndDate: newEndDate,\r\n currentEndDate: currentEndDate,\r\n peopleID: peopleID,\r\n userID: userID,\r\n existingPathID: existingPathID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEmploymentInfoAsync(\r\n startDatePosition, endDatePosition, position, jobStanding, employer, transportation, typeOfWork, selfEmployed, name, phone, email, peopleID, userID, PositionId, typeOfEmployment\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmploymentInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDatePosition: startDatePosition,\r\n endDatePosition: endDatePosition,\r\n position: position,\r\n jobStanding: jobStanding,\r\n employer: employer,\r\n transportation: transportation,\r\n typeOfWork: typeOfWork,\r\n selfEmployed: selfEmployed,\r\n name: name,\r\n phone: phone,\r\n email: email,\r\n peopleID: peopleID,\r\n userID: userID,\r\n PositionId: PositionId,\r\n typeOfEmployment: typeOfEmployment,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getJobStandingsDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getJobStandingsDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployerDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployerDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositionDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTransportationDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTransportationDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTypeOfWorkDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTypeOfWorkDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTypeOfEmploymentDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTypeOfEmploymentDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWagesEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWagesEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWagesCheckboxEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWagesCheckboxEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertWagesAsync(\r\n hoursWeek, hoursWages, startDate, endDate, PositionId, wagesID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWages/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n hoursWeek: hoursWeek,\r\n hoursWages: hoursWages,\r\n startDate: startDate,\r\n endDate: endDate,\r\n PositionId: PositionId,\r\n wagesID: wagesID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n async function saveCheckboxWagesAsync(\r\n chkboxName, IsChacked, PositionId, textboxValue, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveCheckboxWages/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n chkboxName: chkboxName,\r\n IsChacked: IsChacked,\r\n PositionId: PositionId,\r\n textboxValue: textboxValue,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionTaskEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositionTaskEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getInitialPerformanceDropdownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInitialPerformanceDropdown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertPositionTaskAsync(\r\n task, description, startDate, endDate, initialPerformance, initialPerformanceNotes, employeeStandard, PositionId, jobTaskID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPositionTask/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n task: task,\r\n description: description,\r\n startDate: startDate,\r\n endDate: endDate,\r\n initialPerformance: initialPerformance,\r\n initialPerformanceNotes: initialPerformanceNotes,\r\n employeeStandard: employeeStandard,\r\n PositionId: PositionId,\r\n jobTaskID: jobTaskID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkScheduleEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkScheduleEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isNewPositionEnableAsync(consumerIds) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isNewPositionEnable/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployeementPathAsync(consumersId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeementPath/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumersId\":\"' +\r\n consumersId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertWorkScheduleAsync(\r\n dayOfWeek, startTime, endTime, PositionId, WorkScheduleID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkSchedule/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n dayOfWeek: dayOfWeek,\r\n startTime: startTime,\r\n endTime: endTime,\r\n PositionId: PositionId,\r\n WorkScheduleID: WorkScheduleID,\r\n userID: userID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getLastTaskNumberAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLastTaskNumber/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n function deleteWagesBenefits(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteWagesBenefits/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"wagesID\":\"' +\r\n dataObj.wagesID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deleteWagesBenefitsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function deleteWorkSchedule(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteWorkSchedule/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"WorkScheduleID\":\"' +\r\n dataObj.WorkScheduleID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deleteWorkScheduleResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function deletePostionTask(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deletePostionTask/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"jobTaskID\":\"' +\r\n dataObj.jobTaskID +\r\n '\",\"PositionID\":\"' +\r\n dataObj.PositionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deletePostionTaskResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n async function getEmployeeStatusDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeStatusDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function createNewEmploymentPathAsync(\r\n currentStatus, pathToEmployment, pathToStartDate, peopleID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/createNewEmploymentPath/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n currentStatus: currentStatus,\r\n pathToEmployment: pathToEmployment,\r\n pathToStartDate: pathToStartDate,\r\n peopleID: peopleID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getEmploymentEntriesAsync,\r\n getEmployersAsync,\r\n getPositionsAsync,\r\n getJobStandingsAsync,\r\n getEmployeeInfoByIDAsync,\r\n insertEmploymentPathAsync,\r\n insertEmploymentInfoAsync,\r\n getJobStandingsDropDownAsync,\r\n getEmployerDropDownAsync,\r\n getPositionDropDownAsync,\r\n getTransportationDropDownAsync,\r\n getTypeOfWorkDropDownAsync,\r\n getWagesEntriesAsync,\r\n getWagesCheckboxEntriesAsync,\r\n insertWagesAsync,\r\n saveCheckboxWagesAsync,\r\n getPositionTaskEntriesAsync,\r\n getInitialPerformanceDropdownAsync,\r\n insertPositionTaskAsync,\r\n getWorkScheduleEntriesAsync,\r\n isNewPositionEnableAsync,\r\n getEmployeementPathAsync,\r\n insertWorkScheduleAsync,\r\n getLastTaskNumberAsync,\r\n deleteWagesBenefits,\r\n deleteWorkSchedule,\r\n deletePostionTask,\r\n getEmployeeStatusDropDownAsync,\r\n createNewEmploymentPathAsync,\r\n getTypeOfEmploymentDropDownAsync,\r\n };\r\n})();\r\n","const EmploymentInformation = (() => {\r\n var employmentPath;\r\n let PositionId;\r\n let getEmployeeInfoByID = [];\r\n let peopleID;\r\n let BtnName;\r\n let tempstartDatePosition = '';\r\n let tempendDatePosition = '';\r\n let tempposition = '';\r\n let tempjobStanding = '';\r\n let tempemployer = '';\r\n let temptransportation = '';\r\n let temptypeOfWork = '';\r\n let tempselfEmployed = '';\r\n let tempname = '';\r\n let tempphone = '';\r\n let tempemail = '';\r\n let consumersID;\r\n let employerName;\r\n let positionName;\r\n let selectedConsumersName;\r\n let getEmployeepath = [];\r\n let existingEndDate;\r\n let isNewPositionEnable;\r\n let currentStatus;\r\n let pathToEmployment;\r\n let pathToStartDate;\r\n let temptypeOfEmployment = '';\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n employerName = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n getEmployeepath = await EmploymentAjax.getEmployeementPathAsync(ConsumersId);\r\n if (PositionId != undefined) {\r\n getEmployeeInfoByID = await EmploymentAjax.getEmployeeInfoByIDAsync(PositionId);\r\n }\r\n\r\n const result = await EmploymentAjax.isNewPositionEnableAsync(ConsumersId);\r\n const { isNewPositionEnableResult } = result;\r\n if (isNewPositionEnableResult[0].IsEmployeeEnable == '0') {\r\n isNewPositionEnable = true;\r\n }\r\n else {\r\n isNewPositionEnable = false;\r\n }\r\n }\r\n\r\n function getMarkup() {\r\n const employeeInforWrap = document.createElement('div');\r\n employeeInforWrap.classList.add('planSummary');\r\n const importantTables = buildNewEmploymentForm();\r\n employeeInforWrap.appendChild(importantTables);\r\n return employeeInforWrap;\r\n }\r\n\r\n function buildNewEmploymentForm() {\r\n if (isNewPositionEnable)\r\n createEmploymentPathPopupBtn();\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n if (PositionId != undefined) {\r\n BtnName = 'SAVE';\r\n startDatePosition = moment(getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionStartDate).format('YYYY-MM-DD');\r\n endDatePosition = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionEndDate == '' ? '' : moment(getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionEndDate).format('YYYY-MM-DD');\r\n position = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].position;\r\n jobStanding = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].jobStanding;\r\n employer = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].employer;\r\n transportation = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].transportation;\r\n typeOfWork = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].typeOfWork;\r\n selfEmployed = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].selfEmployed;\r\n name = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].name;\r\n phone = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].phone;\r\n email = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].email;\r\n peopleID = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].peopleId;\r\n typeOfEmployment = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].typeOfEmployment;\r\n }\r\n else {\r\n BtnName = 'SAVE';\r\n // PositionId = 0; \r\n startDatePosition = '';\r\n endDatePosition = '';\r\n position = '';\r\n jobStanding = '';\r\n employer = '';\r\n transportation = '';\r\n typeOfWork = '';\r\n selfEmployed = '';\r\n name = '';\r\n phone = '';\r\n email = '';\r\n peopleID = consumersID;\r\n typeOfEmployment = '';\r\n }\r\n\r\n employmentPath = getEmployeepath.getEmployeementPathResult.length > 0 ? getEmployeepath.getEmployeementPathResult[0].employmentPath : '';\r\n existingPathID = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingPathID == '' ? '' : getEmployeepath.getEmployeementPathResult[0].existingPathID;\r\n existingStartDate = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingStartDate == '' ? '' : moment(getEmployeepath.getEmployeementPathResult[0].existingStartDate).format('YYYY-MM-DD');\r\n existingEndDate = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingEndDate == '' ? '' : moment(getEmployeepath.getEmployeementPathResult[0].existingEndDate).format('YYYY-MM-DD');\r\n tempstartDatePosition = '';\r\n tempendDatePosition = '';\r\n tempposition = '';\r\n tempjobStanding = '';\r\n tempemployer = '';\r\n temptransportation = '';\r\n temptypeOfWork = '';\r\n tempselfEmployed = '';\r\n tempname = '';\r\n tempphone = '';\r\n tempemail = '';\r\n temptypeOfEmployment = '';\r\n\r\n positionStartDate = input.build({\r\n id: 'positionStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: (startDatePosition) ? startDatePosition : '',\r\n });\r\n\r\n positionEndDate = input.build({\r\n id: 'positionEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: (endDatePosition) ? endDatePosition : '',\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: \"Position\",\r\n dropdownId: \"positionDropdown\",\r\n value: (position) ? position : '',\r\n });\r\n\r\n jobStandingDropdown = dropdown.build({\r\n id: 'jobStandingDropdown',\r\n label: \"Job Standing\",\r\n dropdownId: \"jobStandingDropdown\",\r\n value: (jobStanding) ? jobStanding : '',\r\n });\r\n\r\n employerDropdown = dropdown.build({\r\n id: 'employerDropdown',\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n value: (employer) ? employer : '',\r\n });\r\n\r\n transportationDropdown = dropdown.build({\r\n id: 'transportationDropdown',\r\n label: \"Transportation\",\r\n dropdownId: \"transportationDropdown\",\r\n value: (transportation) ? transportation : '',\r\n });\r\n\r\n typeOfWorkDropdown = dropdown.build({\r\n id: 'typeOfWorkDropdown',\r\n label: \"Type Of Work\",\r\n dropdownId: \"typeOfWorkDropdown\",\r\n value: (typeOfWork) ? typeOfWork : '',\r\n });\r\n\r\n typeOfEmploymentDropdown = dropdown.build({\r\n id: 'typeOfEmploymentDropdown',\r\n label: \"Employment Type\",\r\n dropdownId: \"typeOfEmploymentDropdown\",\r\n value: (typeOfEmployment) ? typeOfEmployment : '',\r\n });\r\n\r\n isSelfEmployed = input.buildCheckbox({\r\n text: 'Self-Employed?',\r\n id: 'chkisSelfEmployed',\r\n isChecked: selfEmployed == 'Y' ? true : false,\r\n });\r\n\r\n nameInput = input.build({\r\n id: 'nameInput',\r\n label: 'Name',\r\n type: 'text',\r\n style: 'secondary',\r\n value: (name) ? name : '',\r\n });\r\n\r\n phoneInput = input.build({\r\n id: 'phoneInput',\r\n label: 'Phone',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n value: (phone) ? phone : '',\r\n });\r\n\r\n emailInput = input.build({\r\n id: 'emailInput',\r\n label: 'Email',\r\n type: 'text',\r\n style: 'secondary',\r\n value: (email) ? email : '',\r\n });\r\n\r\n // Save button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n saveEmployeeInfo()\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { CancleValidate() },\r\n });\r\n UPDATE_BTN = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n updatePathPopupBtn()\r\n },\r\n });\r\n\r\n const addEmployerBtn = button.build({\r\n text: '+ Add Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const redirectInfo = {\r\n positionId: PositionId,\r\n empName: employerName,\r\n posName: positionName,\r\n consumersName: selectedConsumersName,\r\n consumersId: consumersID\r\n };\r\n if (!addEmployerBtn.classList.contains('disabled')) {\r\n addEditEmployers.buildEmployerPopUp({}, 'insert', 'employmentInfo', redirectInfo);\r\n }\r\n },\r\n });\r\n\r\n var LineBr = document.createElement('br');\r\n\r\n\r\n const messageHeading = document.createElement('b');\r\n messageHeading.classList.add('boldfont');\r\n messageHeading.style.marginTop = '1%';\r\n messageHeading.innerText = 'Path to Employment: '\r\n\r\n const message = document.createElement('p');\r\n if (employmentPath == '1')\r\n message.innerText = ' 1 - I have a job but would like a better one or to move up.';\r\n else if (employmentPath == '2')\r\n message.innerText = ' 2 - I want a job! I need help to find one.';\r\n else if (employmentPath == '3')\r\n message.innerText = \" 3 - I'm not sure about work. I need help to learn more.\";\r\n else if (employmentPath == '4')\r\n message.innerText = \" 4 - I don't think I want to work, but I may not know enough.\";\r\n else\r\n message.innerText = '';\r\n message.style.marginTop = '1%';\r\n message.style.marginLeft = '1%';\r\n var msgWrap = document.createElement('div');\r\n msgWrap.classList.add('employmentMsgWrap');\r\n\r\n msgWrap.appendChild(messageHeading);\r\n msgWrap.appendChild(message);\r\n\r\n if ($.session.EmploymentUpdate) {\r\n UPDATE_BTN.style.marginLeft = '1%';\r\n msgWrap.appendChild(UPDATE_BTN);\r\n }\r\n\r\n employeeInfoDiv.appendChild(msgWrap);\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Employment Information
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const employerBtnWrap = document.createElement('div');\r\n employerBtnWrap.classList.add('employmentBtnWrap');\r\n employerDropdown.style.width = '80%';\r\n addEmployerBtn.style.width = '19%';\r\n if (!$.session.InsertEmployers) {\r\n addEmployerBtn.classList.add('disabled');\r\n }\r\n employerBtnWrap.appendChild(employerDropdown);\r\n employerBtnWrap.appendChild(addEmployerBtn);\r\n\r\n addNewCardBody.appendChild(employerBtnWrap);\r\n addNewCardBody.appendChild(positionDropdown);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('employmentDTWrap');\r\n jobStandingDropdown.classList.add('width27Per');\r\n dropWrap.appendChild(jobStandingDropdown);\r\n transportationDropdown.classList.add('width27Per');\r\n dropWrap.appendChild(transportationDropdown);\r\n positionStartDate.classList.add('width20Per');\r\n dropWrap.appendChild(positionStartDate);\r\n positionEndDate.classList.add('width20Per');\r\n dropWrap.appendChild(positionEndDate);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('employmentDTWrap');\r\n typeOfWorkDropdown.classList.add('width39Per');\r\n drWrap.appendChild(typeOfWorkDropdown);\r\n isSelfEmployed.classList.add('width22Per');\r\n drWrap.appendChild(isSelfEmployed);\r\n typeOfEmploymentDropdown.classList.add('width38Per');\r\n drWrap.appendChild(typeOfEmploymentDropdown);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Supervisor Information'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('employmentDTWrap');\r\n nameInput.classList.add('width30Per');\r\n infoWrap.appendChild(nameInput);\r\n phoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(phoneInput);\r\n emailInput.classList.add('width32Per');\r\n infoWrap.appendChild(emailInput);\r\n addNewCardBody.appendChild(infoWrap);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('employmentBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n if ($.session.EmploymentUpdate) {\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n }\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n populateDropdowns();\r\n enableDisabledInputs();\r\n employeeInfoDiv.appendChild(column1);\r\n checkRequiredFieldsOfEmployeeInfo(startDatePosition, position, employer, jobStanding, endDatePosition);\r\n\r\n return employeeInfoDiv;\r\n }\r\n\r\n function enableDisabledInputs() {\r\n if ($.session.EmploymentUpdate) {\r\n positionStartDate.classList.remove('disabled');\r\n positionEndDate.classList.remove('disabled');\r\n positionDropdown.classList.remove('disabled');\r\n jobStandingDropdown.classList.remove('disabled');\r\n employerDropdown.classList.remove('disabled');\r\n transportationDropdown.classList.remove('disabled');\r\n typeOfWorkDropdown.classList.remove('disabled');\r\n typeOfEmploymentDropdown.classList.remove('disabled');\r\n isSelfEmployed.classList.remove('disabled');\r\n nameInput.classList.remove('disabled');\r\n phoneInput.classList.remove('disabled');\r\n emailInput.classList.remove('disabled');\r\n UPDATE_BTN.classList.remove('disabled');\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n positionStartDate.classList.add('disabled');\r\n positionEndDate.classList.add('disabled');\r\n positionDropdown.classList.add('disabled');\r\n jobStandingDropdown.classList.add('disabled');\r\n employerDropdown.classList.add('disabled');\r\n transportationDropdown.classList.add('disabled');\r\n typeOfWorkDropdown.classList.add('disabled');\r\n typeOfEmploymentDropdown.classList.add('disabled');\r\n isSelfEmployed.classList.add('disabled');\r\n nameInput.classList.add('disabled');\r\n phoneInput.classList.add('disabled');\r\n emailInput.classList.add('disabled');\r\n UPDATE_BTN.classList.add('disabled');\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n\r\n }\r\n\r\n function getRequiredFieldsOfEmployeeInfo() {\r\n var startDate = positionStartDate.querySelector('#positionStartDate');\r\n var endDate = positionEndDate.querySelector('#positionEndDate');\r\n var position = positionDropdown.querySelector('#positionDropdown');\r\n var employer = employerDropdown.querySelector('#employerDropdown');\r\n var jobStanding = jobStandingDropdown.querySelector('#jobStandingDropdown');\r\n checkRequiredFieldsOfEmployeeInfo(startDate.value, position.value, employer.value, jobStanding.value, endDate.value)\r\n }\r\n\r\n function checkRequiredFieldsOfEmployeeInfo(startDate, position, employer, jobStanding, endDate) {\r\n if (startDate === '' || (endDate != '' && startDate > endDate)) {\r\n positionStartDate.classList.add('error');\r\n } else {\r\n positionStartDate.classList.remove('error');\r\n }\r\n\r\n if (position === '') {\r\n positionDropdown.classList.add('error');\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n }\r\n\r\n if (employer === '') {\r\n employerDropdown.classList.add('error');\r\n } else {\r\n employerDropdown.classList.remove('error');\r\n }\r\n\r\n if (jobStanding === '') {\r\n jobStandingDropdown.classList.add('error');\r\n } else {\r\n jobStandingDropdown.classList.remove('error');\r\n }\r\n setBtnStatusOfEmployeeInfo();\r\n }\r\n\r\n function setBtnStatusOfEmployeeInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n BACK_BTN.classList.remove('disabled');\r\n return;\r\n } else {\r\n if (tempstartDatePosition != '' || tempendDatePosition != '' || tempposition != '' || tempjobStanding != '' || tempemployer != '' || temptransportation != '' || temptypeOfWork != '' || tempselfEmployed != '' || tempname != '' || tempphone != '' || tempemail != '' || temptypeOfEmployment != '') {\r\n SAVE_BTN.classList.remove('disabled');\r\n BACK_BTN.classList.add('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n BACK_BTN.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n positionStartDate.addEventListener('input', event => {\r\n startDatePosition = event.target.value;\r\n tempstartDatePosition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n positionEndDate.addEventListener('input', event => {\r\n endDatePosition = event.target.value;\r\n tempendDatePosition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n position = selectedConsumerOption.id;\r\n positionName = selectedConsumerOption.text;\r\n tempposition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n jobStandingDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n jobStanding = selectedConsumerOption.id;\r\n tempjobStanding = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n employerDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n employer = selectedConsumerOption.id;\r\n employerName = selectedConsumerOption.text;\r\n tempemployer = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n transportationDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n transportation = selectedConsumerOption.id;\r\n temptransportation = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n typeOfWorkDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n typeOfWork = selectedConsumerOption.id;\r\n temptypeOfWork = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n typeOfEmploymentDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n typeOfEmployment = selectedConsumerOption.id;\r\n temptypeOfEmployment = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n isSelfEmployed.addEventListener('change', event => {\r\n selfEmployed = event.target.checked == true ? 'Y' : 'N';\r\n tempselfEmployed = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n name = event.target.value;\r\n tempname = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n phoneInput.addEventListener('input', event => {\r\n phone = event.target.value;\r\n tempphone = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n emailInput.addEventListener('input', event => {\r\n email = event.target.value;\r\n tempemail = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n }\r\n\r\n async function populateDropdowns() {\r\n const {\r\n getPositionDropDownResult: Positions,\r\n } = await EmploymentAjax.getPositionDropDownAsync();\r\n let positionsData = Positions.map((positions) => ({\r\n id: positions.positionId,\r\n value: positions.positionId,\r\n text: positions.positionName\r\n }));\r\n positionsData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"positionDropdown\", positionsData, position);\r\n\r\n const {\r\n getEmployerDropDownResult: Employer,\r\n } = await EmploymentAjax.getEmployerDropDownAsync();\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerId,\r\n text: employer.employerName\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"employerDropdown\", data, employer);\r\n\r\n const {\r\n getJobStandingsDropDownResult: JobStanding,\r\n } = await EmploymentAjax.getJobStandingsDropDownAsync();\r\n let jobStandingData = JobStanding.map((jobStanding) => ({\r\n id: jobStanding.jobStandingId,\r\n value: jobStanding.jobStandingId,\r\n text: jobStanding.jobStandingName\r\n }));\r\n jobStandingData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"jobStandingDropdown\", jobStandingData, jobStanding);\r\n\r\n const {\r\n getTransportationDropDownResult: Transportation,\r\n } = await EmploymentAjax.getTransportationDropDownAsync();\r\n let transportationData = Transportation.map((transportation) => ({\r\n id: transportation.transportationId,\r\n value: transportation.transportationId,\r\n text: transportation.transportationName\r\n }));\r\n transportationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"transportationDropdown\", transportationData, transportation);\r\n\r\n const {\r\n getTypeOfWorkDropDownResult: TypeOfWork,\r\n } = await EmploymentAjax.getTypeOfWorkDropDownAsync();\r\n let typeOfWorkData = TypeOfWork.map((typeOfWorks) => ({\r\n id: typeOfWorks.typeOfWorkId,\r\n value: typeOfWorks.typeOfWorkId,\r\n text: typeOfWorks.typeOfWorkName\r\n }));\r\n typeOfWorkData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeOfWorkDropdown\", typeOfWorkData, typeOfWork);\r\n\r\n const {\r\n getTypeOfEmploymentDropDownResult: TypeOfEmployment,\r\n } = await EmploymentAjax.getTypeOfEmploymentDropDownAsync();\r\n let typeOfEmploymentData = TypeOfEmployment.map((typeOfEmployments) => ({\r\n id: typeOfEmployments.typeOfWorkId,\r\n value: typeOfEmployments.typeOfWorkId,\r\n text: typeOfEmployments.typeOfWorkName\r\n }));\r\n typeOfEmploymentData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeOfEmploymentDropdown\", typeOfEmploymentData, typeOfEmployment);\r\n\r\n\r\n }\r\n\r\n\r\n function updatePathPopupBtn() {\r\n employmentPath = '';\r\n currentEndDate = existingEndDate;\r\n newStartDate = '';\r\n newEndDate = '';\r\n\r\n updatePathPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n heading.innerText = 'Update Path to Employment';\r\n\r\n // dropdowns & inputs\r\n currentPathEndDate = input.build({\r\n id: 'currentPathEndDate',\r\n type: 'date',\r\n label: 'Current Path End Date',\r\n style: 'secondary',\r\n value: currentEndDate,\r\n });\r\n\r\n newPathEmploymentDropdown = dropdown.build({\r\n id: 'newPathEmploymentDropdown',\r\n label: \"New Path to Employment\",\r\n dropdownId: \"newPathEmploymentDropdown\",\r\n });\r\n\r\n newPathStartDate = input.build({\r\n id: 'newPathStartDate',\r\n type: 'date',\r\n label: 'New Path Start Date',\r\n style: 'secondary',\r\n value: newStartDate,\r\n });\r\n\r\n newPathEndDate = input.build({\r\n id: 'newPathEndDate',\r\n type: 'date',\r\n label: 'New Path End Date',\r\n style: 'secondary',\r\n value: newEndDate,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n APPLY_BTN.classList.add('disabled');\r\n saveNewPathPopup();\r\n }\r\n }\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n updatePathPopup.appendChild(heading);\r\n updatePathPopup.appendChild(currentPathEndDate);\r\n\r\n updatePathPopup.appendChild(newPathEmploymentDropdown);\r\n updatePathPopup.appendChild(newPathStartDate);\r\n updatePathPopup.appendChild(newPathEndDate);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

    `;\r\n updatePathPopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n updatePathPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(updatePathPopup);\r\n PopupEventListeners();\r\n populateNewPathEmploymentDropdown('updatePath');\r\n checkRequiredFieldsOfEmploymentPath();\r\n }\r\n\r\n function PopupEventListeners() {\r\n newPathEmploymentDropdown.addEventListener('change', event => {\r\n employmentPath = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n\r\n newPathStartDate.addEventListener('input', event => {\r\n newStartDate = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n newPathEndDate.addEventListener('input', event => {\r\n newEndDate = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n currentPathEndDate.addEventListener('input', event => {\r\n currentEndDate = event.target.value;\r\n checkRequiredFieldsOfEmploymentPath();\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(updatePathPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfEmploymentPath() {\r\n var newPathEmployment = newPathEmploymentDropdown.querySelector('#newPathEmploymentDropdown');\r\n var newStartDate = newPathStartDate.querySelector('#newPathStartDate');\r\n var newEndDate = newPathEndDate.querySelector('#newPathEndDate');\r\n var CurrentEndDate = currentPathEndDate.querySelector('#currentPathEndDate');\r\n\r\n if (newPathEmployment.value === '') {\r\n newPathEmploymentDropdown.classList.add('errorPopup');\r\n } else {\r\n newPathEmploymentDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (CurrentEndDate.value === '' || CurrentEndDate.value < existingStartDate) {\r\n currentPathEndDate.classList.add('errorPopup');\r\n } else {\r\n currentPathEndDate.classList.remove('errorPopup');\r\n }\r\n\r\n if (newStartDate.value === '' || CurrentEndDate.value > newStartDate.value || (newEndDate.value != '' && newStartDate.value > newEndDate.value)) {\r\n newPathStartDate.classList.add('errorPopup');\r\n } else {\r\n newPathStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfEmploymentPath();\r\n }\r\n\r\n function setBtnStatusOfEmploymentPath() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function populateNewPathEmploymentDropdown(pathName) {\r\n const condfidentialDropdownData = ([\r\n { id: 1, value: 1, text: \"1 - I have a job but would like a better one or to move up.\" },\r\n { id: 2, value: 2, text: \"2 - I want a job! I need help to find one.\" },\r\n { id: 3, value: 3, text: \"3 - I'm not sure about work. I need help to learn more.\" },\r\n { id: 4, value: 4, text: \"4 - I don't think I want to work, but I may not know enough.\" },\r\n ]);\r\n condfidentialDropdownData.unshift({ id: null, value: '', text: '' });\r\n if (pathName == 'updatePath')\r\n dropdown.populate(\"newPathEmploymentDropdown\", condfidentialDropdownData, employmentPath);\r\n else\r\n dropdown.populate(\"pathToEmploymentDropdown\", condfidentialDropdownData, pathToEmployment);\r\n }\r\n\r\n\r\n\r\n async function saveNewPathPopup() {\r\n const result = await EmploymentAjax.insertEmploymentPathAsync(employmentPath, newStartDate, newEndDate, currentEndDate, consumersID, $.session.UserId, existingPathID);\r\n const { insertEmploymentPathResult } = result;\r\n var messagetext = document.getElementById('confirmMessage');\r\n\r\n messagetext.innerHTML = ``;\r\n if (insertEmploymentPathResult.pathId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, employerName, positionName, selectedConsumersName, consumersID);\r\n POPUP.hide(updatePathPopup);\r\n }\r\n\r\n }\r\n\r\n async function saveEmployeeInfo() {\r\n const result = await EmploymentAjax.insertEmploymentInfoAsync(startDatePosition, endDatePosition, position, jobStanding, employer, transportation, typeOfWork, selfEmployed, name, phone, email, consumersID, $.session.UserId, PositionId, typeOfEmployment);\r\n const { insertEmploymentInfoResult } = result;\r\n if (insertEmploymentInfoResult.positionID != null) {\r\n NewEmployment.refreshEmployment(insertEmploymentInfoResult.positionID, employerName, positionName, selectedConsumersName, consumersID, tabPositionIndex = 0);\r\n }\r\n }\r\n\r\n function CancleValidate() {\r\n if (tempstartDatePosition != ''\r\n || tempendDatePosition != ''\r\n || tempposition != ''\r\n || tempjobStanding != ''\r\n || tempemployer != ''\r\n || temptransportation != ''\r\n || temptypeOfWork != ''\r\n || tempselfEmployed != ''\r\n || tempname != ''\r\n || tempphone != ''\r\n || tempemail != ''\r\n || temptypeOfEmployment != '') {\r\n CancleEmploymentInfoPopup();\r\n }\r\n else {\r\n Employment.loadEmploymentLanding();\r\n }\r\n }\r\n\r\n function CancleEmploymentInfoPopup() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n Employment.loadEmploymentLanding();\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Any changes you have made will not be saved. Do you wish to continue?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n\r\n function createEmploymentPathPopupBtn() {\r\n pathToStartDate = '';\r\n pathToEmployment = '';\r\n currentStatus = '';\r\n\r\n createPathPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n currentStatusDropdown = dropdown.build({\r\n id: 'currentStatusDropdown',\r\n label: \"Current Status\",\r\n dropdownId: \"currentStatusDropdown\",\r\n });\r\n\r\n pathToEmploymentDropdown = dropdown.build({\r\n id: 'pathToEmploymentDropdown',\r\n label: \"Path to Employment\",\r\n dropdownId: \"pathToEmploymentDropdown\",\r\n });\r\n\r\n pathToEmploymentStartDate = input.build({\r\n id: 'pathToEmploymentStartDate',\r\n type: 'date',\r\n label: 'Path to Employment Start Date',\r\n style: 'secondary',\r\n });\r\n\r\n CONTINUE_BTN = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!CONTINUE_BTN.classList.contains('disabled')) {\r\n CONTINUE_BTN.classList.add('disabled');\r\n createNewPath();\r\n }\r\n }\r\n });\r\n\r\n CREATE_PATH_CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n createPathPopup.appendChild(currentStatusDropdown);\r\n createPathPopup.appendChild(pathToEmploymentDropdown);\r\n createPathPopup.appendChild(pathToEmploymentStartDate);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(CREATE_PATH_CANCEL_BTN);\r\n popupbtnWrap.appendChild(CONTINUE_BTN);\r\n createPathPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(createPathPopup);\r\n pathToEmploymentStartDate.classList.add('disabled');\r\n createEmploymentPathPopupEventListeners();\r\n populateNewPathEmploymentDropdown('createPath');\r\n populateEmploymentStatusDropdowns();\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n }\r\n\r\n function createEmploymentPathPopupEventListeners() {\r\n currentStatusDropdown.addEventListener('change', event => {\r\n currentStatus = event.target.value;\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n });\r\n pathToEmploymentDropdown.addEventListener('change', event => {\r\n pathToEmployment = event.target.value;\r\n if (pathToEmployment == '') {\r\n pathToEmploymentStartDate.classList.add('disabled');\r\n pathToStartDate = '';\r\n document.getElementById('pathToEmploymentStartDate').value = '';\r\n }\r\n else {\r\n pathToEmploymentStartDate.classList.remove('disabled');\r\n }\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n });\r\n\r\n pathToEmploymentStartDate.addEventListener('input', event => {\r\n if (pathToEmployment != '') {\r\n pathToStartDate = event.target.value;\r\n }\r\n else {\r\n document.getElementById('pathToEmploymentStartDate').value = '';\r\n pathToStartDate = '';\r\n }\r\n checkRequiredFieldsOfCreateEmploymentPath();\r\n });\r\n\r\n CREATE_PATH_CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(createPathPopup);\r\n Employment.loadEmploymentLanding();\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfCreateEmploymentPath() {\r\n var currentSts = currentStatusDropdown.querySelector('#currentStatusDropdown');\r\n var pathToEmp = pathToEmploymentDropdown.querySelector('#pathToEmploymentDropdown');\r\n var pathStartDt = pathToEmploymentStartDate.querySelector('#pathToEmploymentStartDate');\r\n\r\n if (currentSts.value === '') {\r\n currentStatusDropdown.classList.add('errorPopup');\r\n } else {\r\n currentStatusDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (pathToEmp.value != '' && pathStartDt.value === '') {\r\n pathToEmploymentStartDate.classList.add('errorPopup');\r\n } else {\r\n pathToEmploymentStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfCreateEmploymentPath();\r\n }\r\n\r\n function setBtnStatusOfCreateEmploymentPath() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n CONTINUE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n CONTINUE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n async function populateEmploymentStatusDropdowns() {\r\n const {\r\n getEmployeeStatusDropDownResult: EmpStatus,\r\n } = await EmploymentAjax.getEmployeeStatusDropDownAsync();\r\n let empStatus = EmpStatus.map((empStatus) => ({\r\n id: empStatus.empStatusId,\r\n value: empStatus.empStatusId,\r\n text: empStatus.empStatusName\r\n }));\r\n empStatus.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"currentStatusDropdown\", empStatus, currentStatus);\r\n }\r\n\r\n async function createNewPath() {\r\n const result = await EmploymentAjax.createNewEmploymentPathAsync(currentStatus, pathToEmployment, pathToStartDate, consumersID, $.session.UserId);\r\n const { createNewEmploymentPathResult } = result;\r\n POPUP.hide(createPathPopup);\r\n NewEmployment.refreshEmployment(PositionId, employerName, positionName, selectedConsumersName, consumersID);\r\n }\r\n\r\n return {\r\n init,\r\n buildNewEmploymentForm,\r\n getMarkup,\r\n };\r\n})(); ","const NewEmployment = (function () {\r\n\r\n let PositionId;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let consumersId;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let tabPositionIndex;\r\n\r\n const sections = [\r\n {\r\n title: 'Employment Information',\r\n id: 0,\r\n markup: () => EmploymentInformation.getMarkup(),\r\n },\r\n {\r\n title: 'Wages & Benefits',\r\n id: 1,\r\n markup: () => WagesBenefits.getMarkup(),\r\n },\r\n {\r\n title: 'Position Tasks',\r\n id: 2,\r\n markup: () => PositionTask.getMarkup(),\r\n },\r\n {\r\n title: 'Work Schedule',\r\n id: 3,\r\n markup: () => WorkSchedule.getMarkup(),\r\n },\r\n\r\n ];\r\n\r\n async function refreshEmployment(PositionID, Name, PositionName, SelectedConsumersName, selectedConsumersId, TabPosition = 0) {\r\n PositionId = PositionID;\r\n consumersId = selectedConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n tabPositionIndex = TabPosition;\r\n\r\n DOM.clearActionCenter();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('employmentBtnWrap'); \r\n const heading = document.createElement('div');\r\n const headingName = document.createElement('div');\r\n const head = document.createElement('div');\r\n\r\n const ispWrap = document.createElement('div');\r\n\r\n ispWrap.id = 'planISP';\r\n\r\n ispWrap.innerHTML = '';\r\n\r\n BACK_BTN = button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { Employment.loadEmploymentLanding() }, \r\n });\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n heading.innerHTML = `

    ${selectedConsumersName}

    `;\r\n headingName.innerHTML = `

    ${Name} - ${PositionName}

    `;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\r\n if (PositionId != undefined)\r\n head.appendChild(headingName);\r\n headingWrap.appendChild(head);\r\n headingWrap.appendChild(BACK_BTN);\r\n\r\n DOM.ACTIONCENTER.appendChild(headingWrap);\r\n DOM.ACTIONCENTER.appendChild(ispWrap);\r\n DOM.autosizeTextarea();\r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n if (sectionId > 0) {\r\n BACK_BTN.classList.remove('disabled');\r\n } else if (sectionId == 0 && SAVE_BTN.classList.contains('disabled')) {\r\n BACK_BTN.classList.remove('disabled');\r\n } else {\r\n BACK_BTN.classList.add('disabled'); \r\n } \r\n targetSection.classList.add('active');\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (tabPositionIndex === index) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n await EmploymentInformation.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n await WagesBenefits.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n await PositionTask.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n await WorkSchedule.init(PositionId, name, positionName, selectedConsumersName, consumersId);\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (tabPositionIndex === index) {\r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshEmployment,\r\n getMarkup,\r\n };\r\n})();\r\n","const PositionTask = (() => {\r\n\r\n let PositionEntriesTable = [];\r\n let PositionId;\r\n let jobTaskID;\r\n let PositionEntries;\r\n let LastTaskNumber;\r\n let consumersID;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let actualTaskNumber;\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n if (PositionId != undefined) {\r\n PositionEntries = await EmploymentAjax.getPositionTaskEntriesAsync(PositionId);\r\n LastTaskNumber = await EmploymentAjax.getLastTaskNumberAsync(PositionId);\r\n }\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const positionWrap = document.createElement('div');\r\n positionWrap.classList.add('planSummary');\r\n\r\n if (PositionId != undefined) {\r\n const importantTables = buildNewPositionForm();\r\n positionWrap.appendChild(importantTables);\r\n }\r\n else {\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Position Task';\r\n heading.classList.add('sectionHeading');\r\n positionWrap.appendChild(heading);\r\n }\r\n\r\n return positionWrap;\r\n }\r\n\r\n function buildNewPositionForm() {\r\n const positionDiv = document.createElement('div');\r\n positionDiv.classList.add('additionalQuestionWrap');\r\n\r\n NEW_POSITION_BTN = button.build({\r\n text: '+ NEW POSITION TASK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addPositionPopupBtn()\r\n });\r\n PositionEntriesTable = buildPositionEntriesTable();\r\n\r\n // DOM.clearActionCenter();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Position Task
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(NEW_POSITION_BTN);\r\n }\r\n addNewCardBody.appendChild(PositionEntriesTable);\r\n positionDiv.appendChild(column1);\r\n return positionDiv;\r\n }\r\n\r\n function buildPositionEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentPositionTable',\r\n columnHeadings: ['Task #', 'Description', 'Start Date', 'End Date', 'Initial Performance', 'Initial Performance Notes', 'Employer Standard'],\r\n endIcon: $.session.EmploymentDelete == true ? true :false,\r\n };\r\n\r\n let tableData = PositionEntries.getPositionTaskEntriesResult.map((entry) => ({\r\n values: [entry.task, entry.description, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YY'), entry.initialPerformance, entry.initialPerformanceNotes, entry.employeeStandard],\r\n attributes: [{ key: 'jobTaskId', value: entry.jobTaskId }],\r\n onClick: (e) => {\r\n if ($.session.EmploymentUpdate) {\r\n handleAccountTableEvents(e.target.attributes.jobTaskId.value)\r\n } \r\n },\r\n endIcon: $.session.EmploymentDelete == true ? `${icons['delete']}` : '',\r\n endIconCallback: (e) => {\r\n deletePositionTaskPOPUP(entry.jobTaskId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(jobTaskId) {\r\n addPositionPopupBtn(jobTaskId)\r\n }\r\n\r\n function deletePositionTaskPOPUP(jobTaskId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deletePositionTask(jobTaskId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to delete this Position Task?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deletePositionTask(jobTaskId, confirmPopup) {\r\n EmploymentAjax.deletePostionTask(\r\n {\r\n jobTaskID: jobTaskId,\r\n PositionID: PositionId,\r\n },\r\n function (results) {\r\n if (results = 'sucess') {\r\n POPUP.hide(confirmPopup);\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 2);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function addPositionPopupBtn(jobTaskId) {\r\n if (jobTaskId == 0 || jobTaskId == undefined) {\r\n actualTaskNumber = LastTaskNumber.getLastTaskNumberResult[0] == undefined ? 1 : LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber;\r\n task = LastTaskNumber.getLastTaskNumberResult[0] == undefined ? 1 : LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber > 7 ? LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber - 7 : LastTaskNumber.getLastTaskNumberResult[0].lastTaskNumber;\r\n description = '';\r\n startDate = LastTaskNumber.getLastTaskNumberResult[0] == undefined ? '' : UTIL.formatDateFromDateObj(LastTaskNumber.getLastTaskNumberResult[0].startDate);\r\n endDate = '';\r\n initialPerformance = '';\r\n initialPerformanceNotes = '';\r\n employeeStandard = '';\r\n initialPerformanceID = '';\r\n }\r\n else {\r\n let positionValue = PositionEntries.getPositionTaskEntriesResult.find(x => x.jobTaskId == jobTaskId);\r\n actualTaskNumber = positionValue.task;\r\n task = positionValue.task;\r\n description = positionValue.description;\r\n startDate = moment(positionValue.startDate).format('YYYY-MM-DD');\r\n endDate = positionValue.endDate == '' ? '' : moment(positionValue.endDate).format('YYYY-MM-DD');\r\n initialPerformance = positionValue.initialPerformanceID;\r\n initialPerformanceNotes = positionValue.initialPerformanceNotes;\r\n employeeStandard = positionValue.employeeStandard;\r\n initialPerformanceID = positionValue.initialPerformanceID\r\n }\r\n\r\n\r\n addPositionPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n if (jobTaskId) {\r\n heading.innerText = 'Update Position Task';\r\n jobTaskID = jobTaskId;\r\n }\r\n else {\r\n heading.innerText = 'New Position Task';\r\n jobTaskID = 0;\r\n }\r\n\r\n // dropdowns & inputs\r\n taskInput = input.build({\r\n id: 'taskInput',\r\n type: 'text',\r\n label: 'Task Number',\r\n style: 'secondary',\r\n value: task,\r\n });\r\n\r\n descriptionInput = input.build({\r\n id: 'descriptionInput',\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n value: description,\r\n });\r\n\r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n\r\n newEndDate = input.build({\r\n id: 'newEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n initialPerformanceDropdown = dropdown.build({\r\n id: 'initialPerformanceDropdown',\r\n label: \"Initial Performance\",\r\n dropdownId: \"initialPerformanceDropdown\",\r\n value: (initialPerformanceID) ? initialPerformanceID : '',\r\n });\r\n\r\n initialPerformanceNotesInput = input.build({\r\n id: 'initialPerformanceNotesInput',\r\n type: 'textarea',\r\n label: 'Initial Performance Notes',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: initialPerformanceNotes,\r\n });\r\n\r\n employeeStandardInput = input.build({\r\n id: 'employeeStandardInput',\r\n type: 'textarea',\r\n label: 'Employer Standard',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: employeeStandard,\r\n });\r\n\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addPositionPopup.appendChild(heading);\r\n\r\n addPositionPopup.appendChild(taskInput);\r\n addPositionPopup.appendChild(descriptionInput);\r\n addPositionPopup.appendChild(newStartDate);\r\n addPositionPopup.appendChild(newEndDate);\r\n addPositionPopup.appendChild(initialPerformanceDropdown);\r\n addPositionPopup.appendChild(initialPerformanceNotesInput);\r\n addPositionPopup.appendChild(employeeStandardInput);\r\n taskInput.classList.add('disabled');\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addPositionPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addPositionPopup);\r\n PopupEventListeners();\r\n populateDropdowns();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n taskInput.addEventListener('input', event => {\r\n task = event.target.value;\r\n });\r\n\r\n descriptionInput.addEventListener('input', event => {\r\n description = event.target.value;\r\n });\r\n newStartDate.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n initialPerformanceDropdown.addEventListener('change', event => {\r\n initialPerformanceID = event.target.value;\r\n });\r\n\r\n initialPerformanceNotesInput.addEventListener('input', event => {\r\n initialPerformanceNotes = event.target.value;\r\n });\r\n\r\n employeeStandardInput.addEventListener('input', event => {\r\n employeeStandard = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n APPLY_BTN.classList.add('disabled');\r\n saveNewPositionPopup();\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addPositionPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n\r\n if (startDate.value === '' || (endDate.value != '' && startDate.value > endDate.value)) {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateDropdowns() {\r\n const {\r\n getInitialPerformanceDropdownResult: InitialPerformance,\r\n } = await EmploymentAjax.getInitialPerformanceDropdownAsync();\r\n let initialPerformanceData = InitialPerformance.map((initialPerformance) => ({\r\n id: initialPerformance.initialPerformanceId,\r\n value: initialPerformance.initialPerformanceId,\r\n text: initialPerformance.initialPerformanceName\r\n }));\r\n initialPerformanceData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"initialPerformanceDropdown\", initialPerformanceData, initialPerformance);\r\n }\r\n\r\n async function saveNewPositionPopup() {\r\n const result = await EmploymentAjax.insertPositionTaskAsync(actualTaskNumber, description, startDate, endDate, initialPerformanceID, initialPerformanceNotes, employeeStandard, PositionId, jobTaskID, $.session.UserId);\r\n const { insertPositionTaskResult } = result;\r\n\r\n if (insertPositionTaskResult.jobTaskId != null) {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 2);\r\n }\r\n POPUP.hide(addPositionPopup);\r\n }\r\n\r\n return {\r\n init,\r\n buildNewPositionForm,\r\n getMarkup,\r\n };\r\n})(); ","const WagesBenefits = (() => {\r\n let WagesEntriesTable = [];\r\n let PositionId;\r\n let EmploymentsEntries;\r\n let wagesID;\r\n let CheckBoxEntries;\r\n let vacationSickChk;\r\n let retirementChk;\r\n let medicialChk;\r\n let DiscountChk;\r\n let otherChk;\r\n let otherValue;\r\n let isOverLapRecord = false;\r\n let consumersID;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let eligibleBenefits;\r\n\r\n //CheckBoxs\r\n let eligibleBenefitschkBox;\r\n let vacationSickchkBox;\r\n let medicalVisionchkbox;\r\n let retirementchkBox;\r\n let empDiscountchkBox;\r\n let otherchkBox;\r\n let otherInput;\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n if (PositionId != undefined) {\r\n EmploymentsEntries = await EmploymentAjax.getWagesEntriesAsync(PositionId);\r\n CheckBoxEntries = await EmploymentAjax.getWagesCheckboxEntriesAsync(PositionId);\r\n }\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const wagesInfoWrap = document.createElement('div');\r\n wagesInfoWrap.classList.add('planSummary');\r\n\r\n if (PositionId != undefined) {\r\n const importantTables = buildNewWagesBenefitsForm();\r\n wagesInfoWrap.appendChild(importantTables);\r\n }\r\n else {\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Wages & Benefits';\r\n heading.classList.add('sectionHeading');\r\n wagesInfoWrap.appendChild(heading);\r\n }\r\n return wagesInfoWrap;\r\n }\r\n\r\n function buildNewWagesBenefitsForm() {\r\n const wagesDiv = document.createElement('div');\r\n wagesDiv.classList.add('additionalQuestionWrap');\r\n otherInputText = '';\r\n\r\n vacationSickChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].vacationSick;\r\n retirementChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].retirement;\r\n medicialChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].medical;\r\n DiscountChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].empDiscount;\r\n otherChk = CheckBoxEntries.getWagesCheckboxEntriesResult[0].other;\r\n otherValue = CheckBoxEntries.getWagesCheckboxEntriesResult[0].otherText;\r\n eligibleBenefits = CheckBoxEntries.getWagesCheckboxEntriesResult[0].eligibleBenefits;\r\n\r\n eligibleBenefitschkBox = input.buildCheckbox({\r\n text: 'Eligible For Benefits',\r\n id: 'chkEligibleBenefits',\r\n isChecked: eligibleBenefits == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: event => {\r\n saveWagesChecked('EligibleForBenifit', event.target.checked, null);\r\n eligibleBenefits = event.target.checked == true ? 'Y' : 'N';\r\n if (event.target.checked == false) {\r\n checkBoxValidation();\r\n }\r\n disableCheckBox();\r\n }\r\n });\r\n\r\n vacationSickchkBox = input.buildCheckbox({\r\n text: 'Vacation/Sick',\r\n id: 'chkVacationSick',\r\n isChecked: vacationSickChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('VacationSick', event.target.checked, null),\r\n });\r\n\r\n medicalVisionchkbox = input.buildCheckbox({\r\n text: 'Medical/Dental/Vision',\r\n id: 'chkmedicalVision',\r\n isChecked: medicialChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('Medical', event.target.checked, null),\r\n });\r\n\r\n retirementchkBox = input.buildCheckbox({\r\n text: 'Retirement',\r\n id: 'chkRetirement',\r\n isChecked: retirementChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('Retirement', event.target.checked, null),\r\n });\r\n\r\n empDiscountchkBox = input.buildCheckbox({\r\n text: 'Employee Discount',\r\n id: 'chkEmpDiscount',\r\n isChecked: DiscountChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => saveWagesChecked('empDiscount', event.target.checked, null),\r\n });\r\n\r\n otherchkBox = input.buildCheckbox({\r\n text: 'Other',\r\n id: 'chkOther',\r\n isChecked: otherChk == 'Y' ? true : false,\r\n style: 'secondary',\r\n callback: () => otherChecked(event.target.checked),\r\n });\r\n\r\n otherInput = input.build({\r\n type: 'text',\r\n id: 'otherInput',\r\n style: 'secondary',\r\n value: otherValue,\r\n });\r\n\r\n NEW_WAGES_BTN = button.build({\r\n text: '+ NEW WAGES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addWagesPopupBtn()\r\n });\r\n WagesEntriesTable = buildWagesEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Wages & Benefits
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(NEW_WAGES_BTN);\r\n }\r\n\r\n addNewCardBody.appendChild(WagesEntriesTable);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"headline\");\r\n consumerNameDisplay.innerHTML = `

    ${'Benefits'}

    `;\r\n consumerNameDisplay.style.marginTop = '20px';\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n\r\n var chk1Div = document.createElement('div');\r\n chk1Div.style.marginTop = '20px';\r\n chk1Div.appendChild(eligibleBenefitschkBox);\r\n addNewCardBody.appendChild(chk1Div);\r\n\r\n var chkDiv = document.createElement('div');\r\n chkDiv.style.marginTop = '20px'\r\n chkDiv.appendChild(vacationSickchkBox);\r\n addNewCardBody.appendChild(chkDiv);\r\n\r\n\r\n var chkDiv1 = document.createElement('div');\r\n chkDiv1.appendChild(medicalVisionchkbox);\r\n addNewCardBody.appendChild(chkDiv1);\r\n\r\n var chkDiv2 = document.createElement('div');\r\n chkDiv2.appendChild(retirementchkBox);\r\n addNewCardBody.appendChild(chkDiv2);\r\n\r\n var chkDiv3 = document.createElement('div');\r\n chkDiv3.appendChild(empDiscountchkBox);\r\n addNewCardBody.appendChild(chkDiv3);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('employmentMsgWrap');\r\n btnWrap.appendChild(otherchkBox);\r\n otherInput.style.width = '80%';\r\n otherInput.style.marginLeft = '2%';\r\n btnWrap.appendChild(otherInput);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n wagesDiv.appendChild(column1);\r\n eventListeners();\r\n disableCheckBox();\r\n return wagesDiv;\r\n\r\n }\r\n\r\n function eventListeners() {\r\n otherInput.addEventListener('focusout', event => {\r\n if (!otherInput.classList.contains('disabled')) {\r\n otherInputText = event.target.value;\r\n saveWagesChecked('other', true, otherInputText);\r\n }\r\n });\r\n }\r\n\r\n function disableCheckBox() {\r\n if ($.session.EmploymentUpdate && eligibleBenefits == 'Y') {\r\n vacationSickchkBox.classList.remove('disabled');\r\n medicalVisionchkbox.classList.remove('disabled');\r\n retirementchkBox.classList.remove('disabled');\r\n empDiscountchkBox.classList.remove('disabled');\r\n otherchkBox.classList.remove('disabled');\r\n if (otherChk == 'Y') {\r\n otherInput.classList.remove('disabled');\r\n } else {\r\n otherInput.classList.add('disabled');\r\n }\r\n }\r\n else {\r\n vacationSickchkBox.classList.add('disabled');\r\n medicalVisionchkbox.classList.add('disabled');\r\n retirementchkBox.classList.add('disabled');\r\n empDiscountchkBox.classList.add('disabled');\r\n otherchkBox.classList.add('disabled');\r\n otherInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n function buildWagesEntriesTable() {\r\n\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentCommonTable',\r\n columnHeadings: ['Avg Hours Per Week', 'Avg Wages Per Week', 'Start Date', 'End Date'],\r\n endIcon: $.session.EmploymentDelete == true ? true : false,\r\n };\r\n\r\n let tableData = EmploymentsEntries.getWagesEntriesResult.map((entry) => ({\r\n values: [entry.hoursPerWeek, '$' + parseFloat(entry.wagesPerHour).toFixed(2), moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY')],\r\n attributes: [{ key: 'wagesId', value: entry.wagesId }],\r\n onClick: (e) => {\r\n if ($.session.EmploymentUpdate) {\r\n handleAccountTableEvents(e.target.attributes.wagesId.value)\r\n }\r\n },\r\n endIcon: $.session.EmploymentDelete == true ? `${icons['delete']}` : '',\r\n endIconCallback: (e) => {\r\n deleteWagesBenefitsPOPUP(entry.wagesId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(wagesId) {\r\n addWagesPopupBtn(wagesId)\r\n }\r\n\r\n function deleteWagesBenefitsPOPUP(wagesId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteWagesBenefits(wagesId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to remove this Wage & Benefit record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deleteWagesBenefits(wagesId, confirmPopup) {\r\n EmploymentAjax.deleteWagesBenefits(\r\n {\r\n wagesID: wagesId\r\n },\r\n function (results) {\r\n if (results = 'sucess') {\r\n POPUP.hide(confirmPopup);\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 1);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function addWagesPopupBtn(wagesId) {\r\n if (wagesId == 0 || wagesId == undefined) {\r\n hoursWeek = '';\r\n hoursWages = '';\r\n startDate = '';\r\n endDate = '';\r\n }\r\n else {\r\n let empValue = EmploymentsEntries.getWagesEntriesResult.find(x => x.wagesId == wagesId);\r\n hoursWeek = empValue.hoursPerWeek;\r\n hoursWages = parseFloat(empValue.wagesPerHour).toFixed(2);\r\n startDate = moment(empValue.startDate).format('YYYY-MM-DD');\r\n endDate = empValue.endDate == '' ? '' : moment(empValue.endDate).format('YYYY-MM-DD');\r\n }\r\n\r\n\r\n addWagesPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n if (wagesId) {\r\n heading.innerText = 'Update Wage/Hours';\r\n wagesID = wagesId;\r\n }\r\n else {\r\n heading.innerText = 'Add Wage/Hours';\r\n wagesID = 0;\r\n }\r\n\r\n\r\n // dropdowns & inputs\r\n weekHours = input.build({\r\n id: 'weekHours',\r\n type: 'text', \r\n label: 'Hours Per Week',\r\n style: 'secondary',\r\n value: hoursWeek, \r\n });\r\n\r\n wagesHours = input.build({\r\n id: 'wagesHours',\r\n type: 'text',\r\n label: 'Wages Per Hour',\r\n style: 'secondary',\r\n value: '$' + hoursWages,\r\n });\r\n\r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n\r\n newEndDate = input.build({\r\n id: 'newEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addWagesPopup.appendChild(heading);\r\n\r\n addWagesPopup.appendChild(weekHours);\r\n addWagesPopup.appendChild(wagesHours);\r\n addWagesPopup.appendChild(newStartDate);\r\n addWagesPopup.appendChild(newEndDate);\r\n\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

    `;\r\n addWagesPopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addWagesPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addWagesPopup);\r\n PopupEventListeners();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n weekHours.addEventListener('input', event => {\r\n hoursWeek = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(hoursWeek)) {\r\n document.getElementById('weekHours').value = '';\r\n }\r\n else if (hoursWeek.includes('.') && (hoursWeek.match(/\\./g).length > 1 || hoursWeek.toString().split('.')[1].length > 2)) {\r\n document.getElementById('weekHours').value = '';\r\n }\r\n if (hoursWeek.includes('-') || hoursWeek.includes(' ')) {\r\n document.getElementById('weekHours').value = '';\r\n }\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n wagesHours.addEventListener('input', event => {\r\n hoursWages = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(hoursWages)) {\r\n document.getElementById('wagesHours').value = '$';\r\n }\r\n else if (hoursWages.includes('.') && (hoursWages.match(/\\./g).length > 1 || hoursWages.toString().split('.')[1].length > 2)) {\r\n document.getElementById('wagesHours').value = '$';\r\n }\r\n if (hoursWages.includes('-') || hoursWages.includes(' ')) {\r\n document.getElementById('wagesHours').value = '$';\r\n }\r\n if (hoursWages.includes('$') && hoursWages.match(/\\$/g).length > 1) {\r\n document.getElementById('wagesHours').value = '$';\r\n } \r\n checkRequiredFieldsOfPopup();\r\n });\r\n newStartDate.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewWagesPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addWagesPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var weekPerHour = weekHours.querySelector('#weekHours');\r\n var wagesPerHour = wagesHours.querySelector('#wagesHours');\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n\r\n if (weekPerHour.value === '' || weekPerHour.value.includes('-') || !reg.test(weekPerHour.value)) {\r\n weekHours.classList.add('errorPopup');\r\n } else {\r\n weekHours.classList.remove('errorPopup');\r\n }\r\n \r\n if (wagesPerHour.value === '' || wagesPerHour.value === '$' || wagesPerHour.value.includes('-') || !reg.test(wagesPerHour.value)) {\r\n wagesHours.classList.add('errorPopup');\r\n } else {\r\n wagesHours.classList.remove('errorPopup');\r\n } \r\n\r\n if (startDate.value === '' || (endDate.value != '' && startDate.value > endDate.value)) {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function otherChecked(event) {\r\n if ($.session.EmploymentUpdate) {\r\n if (event == true) {\r\n otherInput.classList.remove('disabled');\r\n saveWagesChecked('other', true, '');\r\n } else {\r\n otherInput.classList.add('disabled');\r\n otherValue = '';\r\n otherInput.querySelector('#otherInput').value = '';\r\n saveWagesChecked('other', false, '');\r\n\r\n }\r\n }\r\n }\r\n\r\n async function saveNewWagesPopup() {\r\n const result = await EmploymentAjax.insertWagesAsync(hoursWeek, hoursWages.replace('$', ''), startDate, endDate, PositionId, wagesID, $.session.UserId);\r\n const { insertWagesResult } = result;\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertWagesResult.wagesId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 1);\r\n POPUP.hide(addWagesPopup);\r\n }\r\n\r\n }\r\n\r\n async function saveWagesChecked(chkboxName, event, textboxValue) {\r\n if ($.session.EmploymentUpdate) {\r\n let IsChacked = event == true ? 'Y' : 'N';\r\n const result = await EmploymentAjax.saveCheckboxWagesAsync(chkboxName, IsChacked, PositionId, textboxValue, $.session.UserId);\r\n const { saveCheckboxWagesResult } = result;\r\n }\r\n }\r\n\r\n function checkBoxValidation() {\r\n var vacationSick = vacationSickchkBox.querySelector('#chkVacationSick');\r\n var medicalVision = medicalVisionchkbox.querySelector('#chkmedicalVision');\r\n var retirement = retirementchkBox.querySelector('#chkRetirement');\r\n var empDiscount = empDiscountchkBox.querySelector('#chkEmpDiscount');\r\n var other = otherchkBox.querySelector('#chkOther');\r\n\r\n if (eligibleBenefits == 'N' && (vacationSick.checked || medicalVision.checked || retirement.checked || empDiscount.checked || other.checked)) {\r\n eligibleForBenifitConfirmPOPUP();\r\n }\r\n }\r\n\r\n function eligibleForBenifitConfirmPOPUP() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveWagesChecked('VacationSick', false, null);\r\n await saveWagesChecked('Medical', false, null);\r\n await saveWagesChecked('empDiscount', false, null);\r\n await saveWagesChecked('Retirement', false, null);\r\n await saveWagesChecked('Medical', false, null);\r\n await saveWagesChecked('other', false, '');\r\n\r\n vacationSickchkBox.querySelector('#chkVacationSick').checked = false;\r\n medicalVisionchkbox.querySelector('#chkmedicalVision').checked = false;\r\n retirementchkBox.querySelector('#chkRetirement').checked = false;\r\n empDiscountchkBox.querySelector('#chkEmpDiscount').checked = false;\r\n otherchkBox.querySelector('#chkOther').checked = false;\r\n otherInput.querySelector('#otherInput').value = '';\r\n disableCheckBox();\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n eligibleBenefits = 'Y';\r\n eligibleBenefitschkBox.querySelector('#chkEligibleBenefits').checked = true;\r\n saveWagesChecked('EligibleForBenifit', true, null);\r\n disableCheckBox();\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'All benefits that this person is eligible for will be removed. Do you want to continue?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n return {\r\n init,\r\n buildNewWagesBenefitsForm,\r\n getMarkup,\r\n };\r\n})(); ","const WorkSchedule = (() => {\r\n\r\n let workScheduleEntriesTable = [];\r\n let PositionId;\r\n let ScheduleEntries;\r\n let WorkScheduleID;\r\n let consumersID;\r\n let name;\r\n let positionName;\r\n let selectedConsumersName;\r\n let startTime;\r\n let endTime;\r\n let weekDaysSelection = [];\r\n let nameOfEvent;\r\n let toRemoveWeekName;\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n name = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n if (PositionId != undefined) {\r\n ScheduleEntries = await EmploymentAjax.getWorkScheduleEntriesAsync(PositionId);\r\n if (ScheduleEntries.getWorkScheduleEntriesResult.length > 0)\r\n ScheduleEntries.getWorkScheduleEntriesResult.push({ dayOfWeek: '', startTime: '', endTime: '', positionId: null, WorkScheduleId: '', timeInHours: 'Total Hours - ' + ScheduleEntries.getWorkScheduleEntriesResult[0].totalHours, totalHours: '' });\r\n }\r\n }\r\n\r\n function toHoursAndMinutes(totalMinutes) {\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n return `${padToTwoDigits(hours)}:${padToTwoDigits(minutes)}`;\r\n }\r\n function padToTwoDigits(num) {\r\n return num.toString().padStart(2, \"0\");\r\n }\r\n\r\n function getMarkup() {\r\n const workScheduleWrap = document.createElement('div');\r\n workScheduleWrap.classList.add('planSummary');\r\n\r\n if (PositionId != undefined) {\r\n const importantTables = buildNewWorkScheduleForm();\r\n workScheduleWrap.appendChild(importantTables);\r\n }\r\n else {\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Work Schedule';\r\n heading.classList.add('sectionHeading');\r\n workScheduleWrap.appendChild(heading);\r\n }\r\n\r\n\r\n\r\n return workScheduleWrap;\r\n }\r\n\r\n function buildNewWorkScheduleForm() {\r\n const workScheduleDiv = document.createElement('div');\r\n workScheduleDiv.classList.add('additionalQuestionWrap');\r\n\r\n NEW_SHIFT_BTN = button.build({\r\n text: '+ ADD NEW SHIFT',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addWorkSchedulePopupBtn(0, 'Add')\r\n });\r\n workScheduleEntriesTable = buildworkScheduleEntriesTable();\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Work Schedule
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(NEW_SHIFT_BTN);\r\n }\r\n addNewCardBody.appendChild(workScheduleEntriesTable);\r\n workScheduleDiv.appendChild(column1);\r\n return workScheduleDiv;\r\n }\r\n\r\n\r\n function buildworkScheduleEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentWorkScheduleTable',\r\n columnHeadings: ['Day Of Week', 'Start Time', 'End Time', 'Hours'],\r\n endIcon: $.session.EmploymentUpdate == true ? true : false,\r\n secondendIcon: $.session.EmploymentDelete == true ? true : false,\r\n };\r\n\r\n let tableData = ScheduleEntries.getWorkScheduleEntriesResult.map((entry) => ({\r\n values: [entry.dayOfWeek == 1 ? 'Sunday' : entry.dayOfWeek == 2 ? 'Monday' : entry.dayOfWeek == 3 ? 'Tuesday' : entry.dayOfWeek == 4 ? 'Wednesday' : entry.dayOfWeek == 5 ? 'Thursday' : entry.dayOfWeek == 6 ? 'Friday' : entry.dayOfWeek == 7 ? 'Saturday' : '', UTIL.convertFromMilitary(entry.startTime), UTIL.convertFromMilitary(entry.endTime), entry.timeInHours],\r\n attributes: [{ key: 'WorkScheduleId', value: entry.WorkScheduleId }, { key: 'data-plan-active', value: entry.startTime == '' ? 'true' : 'false' }, { key: 'deleteHide', value: $.session.EmploymentDelete == true ? 'true' : 'false' }, { key: 'copyHide', value: $.session.EmploymentUpdate == true ? 'true' : 'false' }],\r\n onClick: (e) => {\r\n if ($.session.EmploymentUpdate && e.target.attributes[2].value == 'false') {\r\n addWorkSchedulePopupBtn(e.target.attributes.WorkScheduleId.value, 'Edit')\r\n }\r\n },\r\n endIcon: $.session.EmploymentUpdate == true && entry.dayOfWeek != '' ? `${icons['copy']}` : `${icons['Empty']}`,\r\n endIconCallback: (e) => {\r\n addWorkSchedulePopupBtn(entry.WorkScheduleId, 'Copy');\r\n },\r\n secondendIcon: $.session.EmploymentDelete == true && entry.dayOfWeek != '' ? `${icons['delete']}` : `${icons['Empty']}`,\r\n secondendIconCallback: (e) => {\r\n deleteWorkSchedulePOPUP(entry.WorkScheduleId);\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function deleteWorkSchedulePOPUP(WorkScheduleId) {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteWorkSchedule(WorkScheduleId, confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to remove this Work Schedule record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function deleteWorkSchedule(WorkScheduleId, confirmPopup) {\r\n EmploymentAjax.deleteWorkSchedule(\r\n {\r\n WorkScheduleID: WorkScheduleId\r\n },\r\n function (results) {\r\n if (results = 'sucess') {\r\n POPUP.hide(confirmPopup);\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 3);\r\n }\r\n },\r\n );\r\n }\r\n\r\n function addWorkSchedulePopupBtn(WorkScheduleId, eventName) {\r\n if (WorkScheduleId == 0 || WorkScheduleId == undefined) {\r\n dayOfWeek = '';\r\n startTime = '';\r\n endTime = '';\r\n }\r\n else {\r\n let workScheduleValue = ScheduleEntries.getWorkScheduleEntriesResult.find(x => x.WorkScheduleId == WorkScheduleId);\r\n dayOfWeek = workScheduleValue.dayOfWeek;\r\n toRemoveWeekName = workScheduleValue.dayOfWeek;\r\n startTime = workScheduleValue.startTime;\r\n endTime = workScheduleValue.endTime;\r\n }\r\n addWorkSchedulePopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '15px';\r\n if (eventName == 'Edit') {\r\n heading.innerText = 'Update Shift';\r\n WorkScheduleID = WorkScheduleId;\r\n nameOfEvent = 'Edit'\r\n }\r\n else if (eventName == 'Copy') {\r\n heading.innerText = 'Copy Shift';\r\n WorkScheduleID = WorkScheduleId;\r\n nameOfEvent = 'Copy'\r\n dayOfWeek = '';\r\n }\r\n else {\r\n heading.innerText = 'New Shift';\r\n WorkScheduleID = 0;\r\n nameOfEvent = 'Add'\r\n }\r\n\r\n // Checkbox\r\n var checkboxlable = document.createElement('div');\r\n checkboxlable.style.marginBottom = '10px';\r\n checkboxlable.style.marginLeft = '5px';\r\n checkboxlable.innerHTML = `

    Day(s) Of Week

    `;\r\n\r\n var sundaylable = document.createElement('div');\r\n sundaylable.classList.add('chkWeekDay');\r\n sundaylable.innerHTML = `Sun`;\r\n sundaychkBox = input.buildCheckbox({\r\n id: 'sundaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var mondaylable = document.createElement('div');\r\n mondaylable.classList.add('chkWeekDay');\r\n mondaylable.innerHTML = `Mon`;\r\n mondaychkBox = input.buildCheckbox({\r\n id: 'mondaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var tuesdaylable = document.createElement('div');\r\n tuesdaylable.classList.add('chkWeekDay');\r\n tuesdaylable.innerHTML = `Tue`;\r\n tuesdaychkBox = input.buildCheckbox({\r\n id: 'tuesdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var wednesdaylable = document.createElement('div');\r\n wednesdaylable.classList.add('chkWeekDay');\r\n wednesdaylable.innerHTML = `Wed`;\r\n wednesdaychkBox = input.buildCheckbox({\r\n id: 'wednesdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var thursdaylable = document.createElement('div');\r\n thursdaylable.classList.add('chkWeekDay');\r\n thursdaylable.innerHTML = `Thu`;\r\n thursdaychkBox = input.buildCheckbox({\r\n id: 'thursdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var fridaylable = document.createElement('div');\r\n fridaylable.classList.add('chkWeekDay');\r\n fridaylable.innerHTML = `Fri`;\r\n fridaychkBox = input.buildCheckbox({\r\n id: 'fridaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n var saturdaylable = document.createElement('div');\r\n saturdaylable.classList.add('chkWeekDay');\r\n saturdaylable.innerHTML = `Sat`;\r\n saturdaychkBox = input.buildCheckbox({\r\n id: 'saturdaychkBox',\r\n isChecked: false,\r\n style: 'secondary',\r\n callback: () => checkRequiredFieldsOfPopup(),\r\n });\r\n\r\n // dropdowns & inputs\r\n dayOfWeekDropdown = dropdown.build({\r\n id: 'dayOfWeekDropdown',\r\n label: \"Day Of Week\",\r\n dropdownId: \"dayOfWeekDropdown\",\r\n value: (dayOfWeek) ? dayOfWeek : '',\r\n });\r\n\r\n NewStartTime = input.build({\r\n id: 'NewStartTime',\r\n type: 'time',\r\n label: 'Start Time',\r\n style: 'secondary',\r\n value: startTime,\r\n });\r\n\r\n NewEndTime = input.build({\r\n id: 'NewEndTime',\r\n type: 'time',\r\n label: 'End Time',\r\n style: 'secondary',\r\n value: endTime,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n addWorkSchedulePopup.appendChild(heading);\r\n\r\n if (WorkScheduleId == 0 || WorkScheduleId == undefined) {\r\n var dayChkWrap = document.createElement('div');\r\n sundaylable.appendChild(sundaychkBox);\r\n mondaylable.appendChild(mondaychkBox);\r\n tuesdaylable.appendChild(tuesdaychkBox);\r\n wednesdaylable.appendChild(wednesdaychkBox);\r\n thursdaylable.appendChild(thursdaychkBox);\r\n fridaylable.appendChild(fridaychkBox);\r\n saturdaylable.appendChild(saturdaychkBox);\r\n addWorkSchedulePopup.appendChild(checkboxlable);\r\n dayChkWrap.classList.add('chkWrap');\r\n dayChkWrap.appendChild(sundaylable);\r\n dayChkWrap.appendChild(mondaylable);\r\n dayChkWrap.appendChild(tuesdaylable);\r\n dayChkWrap.appendChild(wednesdaylable);\r\n dayChkWrap.appendChild(thursdaylable);\r\n dayChkWrap.appendChild(fridaylable);\r\n dayChkWrap.appendChild(saturdaylable);\r\n addWorkSchedulePopup.appendChild(dayChkWrap);\r\n } else {\r\n addWorkSchedulePopup.appendChild(dayOfWeekDropdown);\r\n }\r\n\r\n\r\n var timebtnWrap = document.createElement('div');\r\n timebtnWrap.classList.add('btnWrap');\r\n NewStartTime.style.marginLeft = '1%';\r\n NewStartTime.style.width = '48%';\r\n timebtnWrap.appendChild(NewStartTime);\r\n NewEndTime.style.marginLeft = '2%';\r\n NewEndTime.style.width = '48%';\r\n timebtnWrap.appendChild(NewEndTime);\r\n addWorkSchedulePopup.appendChild(timebtnWrap);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

    `;\r\n addWorkSchedulePopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addWorkSchedulePopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addWorkSchedulePopup);\r\n PopupEventListeners();\r\n populateWeekDaysDropdown();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n dayOfWeekDropdown.addEventListener('change', event => {\r\n dayOfWeek = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n NewStartTime.addEventListener('change', event => {\r\n startTime = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n NewEndTime.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewWagesPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addWorkSchedulePopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var weekDay = dayOfWeekDropdown.querySelector('#dayOfWeekDropdown');\r\n var timeEnd = NewEndTime.querySelector('#NewEndTime');\r\n var timeStart = NewStartTime.querySelector('#NewStartTime');\r\n\r\n if (nameOfEvent == 'Add') {\r\n var sundaychk = sundaychkBox.querySelector('#sundaychkBox');\r\n var mondaychk = mondaychkBox.querySelector('#mondaychkBox');\r\n var tuesdaychk = tuesdaychkBox.querySelector('#tuesdaychkBox');\r\n var wednesdaychk = wednesdaychkBox.querySelector('#wednesdaychkBox');\r\n var thursdaychk = thursdaychkBox.querySelector('#thursdaychkBox');\r\n var fridaychk = fridaychkBox.querySelector('#fridaychkBox');\r\n var saturdaychk = saturdaychkBox.querySelector('#saturdaychkBox');\r\n\r\n var chklable = document.getElementById('checkboxlable');\r\n\r\n if (!sundaychk.checked && !mondaychk.checked && !tuesdaychk.checked && !wednesdaychk.checked && !thursdaychk.checked && !fridaychk.checked && !saturdaychk.checked) {\r\n chklable.classList.add('errorPopup');\r\n chklable.classList.add('password-error');\r\n }\r\n else {\r\n chklable.classList.remove('errorPopup');\r\n chklable.classList.remove('password-error');\r\n }\r\n } else if (nameOfEvent == 'Edit') {\r\n if (dayOfWeek === '') {\r\n dayOfWeekDropdown.classList.add('errorPopup');\r\n } else {\r\n dayOfWeekDropdown.classList.remove('errorPopup');\r\n }\r\n }\r\n else {\r\n if (weekDay.value === '') {\r\n dayOfWeekDropdown.classList.add('errorPopup');\r\n } else {\r\n dayOfWeekDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n }\r\n\r\n if (timeEnd.value === '' || timeStart.value > timeEnd.value) {\r\n NewEndTime.classList.add('errorPopup');\r\n } else {\r\n NewEndTime.classList.remove('errorPopup');\r\n }\r\n\r\n if (timeStart.value === '') {\r\n NewStartTime.classList.add('errorPopup');\r\n } else {\r\n NewStartTime.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n function populateWeekDaysDropdown() {\r\n const dayOfWeekDropdownData = ([\r\n { id: 1, value: 1, text: 'Sunday' },\r\n { id: 2, value: 2, text: 'Monday' },\r\n { id: 3, value: 3, text: 'Tuesday' },\r\n { id: 4, value: 4, text: 'Wednesday' },\r\n { id: 5, value: 5, text: 'Thursday' },\r\n { id: 6, value: 6, text: 'Friday' },\r\n { id: 7, value: 7, text: 'Saturday' },\r\n\r\n ]);\r\n dayOfWeekDropdownData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"dayOfWeekDropdown\", dayOfWeekDropdownData, dayOfWeek);\r\n }\r\n\r\n\r\n async function saveNewWagesPopup() {\r\n weekDaysSelection = [];\r\n if (nameOfEvent == 'Add') {\r\n if (sundaychkBox.querySelector('#sundaychkBox').checked) weekDaysSelection.push(1)\r\n if (mondaychkBox.querySelector('#mondaychkBox').checked) weekDaysSelection.push(2)\r\n if (tuesdaychkBox.querySelector('#tuesdaychkBox').checked) weekDaysSelection.push(3)\r\n if (wednesdaychkBox.querySelector('#wednesdaychkBox').checked) weekDaysSelection.push(4)\r\n if (thursdaychkBox.querySelector('#thursdaychkBox').checked) weekDaysSelection.push(5)\r\n if (fridaychkBox.querySelector('#fridaychkBox').checked) weekDaysSelection.push(6)\r\n if (saturdaychkBox.querySelector('#saturdaychkBox').checked) weekDaysSelection.push(7)\r\n } else if (nameOfEvent == 'Edit') {\r\n weekDaysSelection.push(dayOfWeek)\r\n } else {\r\n weekDaysSelection.push(dayOfWeek)\r\n WorkScheduleID = 0;\r\n }\r\n\r\n const result = await EmploymentAjax.insertWorkScheduleAsync(weekDaysSelection, startTime, endTime, PositionId, WorkScheduleID, $.session.UserId);\r\n const { insertWorkScheduleResult } = result;\r\n\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertWorkScheduleResult.WorkScheduleId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 3);\r\n POPUP.hide(addWorkSchedulePopup);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n buildNewWorkScheduleForm,\r\n getMarkup,\r\n };\r\n})(); ","const forms = (function () {\r\n var defaultval;\r\n let displayfromBLOBBtn;\r\n let documntId;\r\n let landingPage;\r\n let overviewTable;\r\n let newFormBtn;\r\n let selectedConsumer;\r\n let isFormLocked;\r\n\r\n // values for selectTemplatePopup\r\n let templateId;\r\n let templateDropdown;\r\n let doneBtn;\r\n\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n await loadPDFFormsLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n // Build Forms Module Landing Page\r\n async function loadPDFFormsLanding() {\r\n DOM.clearActionCenter();\r\n\r\n landingPage = document.createElement('div');\r\n landingPage.classList.add('planLandingPage');\r\n\r\n const consumerCard = buildConsumerCard();\r\n newFormBtn = buildNewFormBtn();\r\n\r\n let filterValues = { formsConsumer: selectedConsumer.id };\r\n reportsBtn = generateReports.createMainReportButton([\r\n { text: 'Form Listing - By Consumer', filterValues },\r\n ]);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('newFormAndReportBtns');\r\n\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(btnWrap);\r\n btnWrap.appendChild(newFormBtn);\r\n btnWrap.appendChild(reportsBtn);\r\n\r\n overviewTable = await buildOverviewTable();\r\n landingPage.appendChild(overviewTable);\r\n\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // Build User's table of Forms on the Landing Page\r\n async function buildOverviewTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'consumerFormsTable',\r\n columnHeadings: ['', 'Type', 'Completion', 'Last Updated', 'User Updated'],\r\n endIcon: true,\r\n };\r\n\r\n // FAKE DATA : build table data\r\n // const tableData = [{ values : ['Test', '03/01/2021'], endIcon : `${icons['delete']}`}, {values : ['Test2', '04/01/2021'], endIcon : `${icons['delete']}` }];\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n const { getconsumerFormsResult: consumerForms } = await formsAjax.getconsumerFormsAsync(\r\n $.session.UserId,\r\n selectedConsumer.id,\r\n hasAssignedFormTypes,\r\n );\r\n // format the Completion Dates\r\n consumerForms.forEach(function (consumerForm) {\r\n let newDate = new Date(consumerForm.formCompleteDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatCompleteDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n consumerForm.formCompleteDate = formatCompleteDate;\r\n });\r\n\r\n let tableData = consumerForms.map(consumerForm => ({\r\n values: [\r\n `${icons['PDFForm']}`,\r\n consumerForm.formType + ' -- ' + consumerForm.formDescription,\r\n consumerForm.formCompleteDate,\r\n consumerForm.formLastUpdated,\r\n consumerForm.formUserUpdated,\r\n ],\r\n endIcon: $.session.formsDelete || $.session.formsUpdate ? `${icons['edit']}` : null,\r\n id: consumerForm.formId,\r\n attributes: [{ key: 'data-form-id', value: consumerForm.formId }],\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n try {\r\n let tableRow = document.getElementById(consumerForm.formId);\r\n formEditPopup(consumerForm.formId, consumerForm.formCompleteDate, tableRow);\r\n // deleteConfirmation(consumerForm.formId, tableRow);\r\n return;\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n },\r\n onClick: () => {\r\n let isTemplate = '0';\r\n let documentEdited = '1'; // document previously edited\r\n let consumerId = selectedConsumer.id;\r\n let isRefresh = false;\r\n let formId = consumerForm.formId;\r\n let formCompleteDate = consumerForm.formCompleteDate;\r\n\r\n displayFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n );\r\n },\r\n }));\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildNewFormBtn() {\r\n return button.build({\r\n text: 'Add New Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.formsInsert ? ['disabled'] : ['newPlanBtn'],\r\n callback: () => createTemplatePopUp(),\r\n });\r\n }\r\n\r\n // Build/Display Popup Window for selecting a Form template from a DDL\r\n function createTemplatePopUp() {\r\n let selectTemplatePopup = POPUP.build({\r\n header: 'Template Select',\r\n hideX: true,\r\n id: 'selectTemplatePopup',\r\n });\r\n\r\n templateDropdown = dropdown.build({\r\n label: 'Form Templates',\r\n dropdownId: 'templateDropdown',\r\n });\r\n\r\n let newDate = new Date();\r\n let theMonth = newDate.getMonth() + 1;\r\n let formCompleteDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n\r\n let thisCompleteDate = newDate;\r\n\r\n let completeDateInput = input.build({\r\n type: 'date',\r\n label: 'Completion Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(formCompleteDate.split(' ')[0]),\r\n // readonly: true,\r\n });\r\n\r\n completeDateInput.addEventListener('change', event => {\r\n thisCompleteDate = event.target.value;\r\n // validation of completeDateInput\r\n if (thisCompleteDate === '') {\r\n completeDateInput.classList.add('error');\r\n } else {\r\n completeDateInput.classList.remove('error');\r\n }\r\n setBtnStatus();\r\n });\r\n\r\n doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => templatePopupDoneBtn(thisCompleteDate),\r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => templatePopupCancelBtn(),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectTemplatePopup.appendChild(templateDropdown);\r\n selectTemplatePopup.appendChild(completeDateInput);\r\n selectTemplatePopup.appendChild(btnWrap);\r\n\r\n populateDropdown();\r\n\r\n // validation of templateDropdown\r\n templateId = templateDropdown.value;\r\n if (templateId === '' || templateId === undefined) {\r\n templateDropdown.classList.add('error');\r\n } else templateDropdown.classList.remove('error');\r\n\r\n templateDropdown.addEventListener('change', e => {\r\n templateId = e.target.value;\r\n templateDropdownValidation();\r\n setBtnStatus();\r\n });\r\n\r\n POPUP.show(selectTemplatePopup);\r\n setBtnStatus();\r\n }\r\n\r\n function templateDropdownValidation() {\r\n var templateDropdownOptions = document.getElementById('templateDropdown');\r\n templateId = templateDropdownOptions.options[templateDropdownOptions.selectedIndex].value;\r\n if (templateId === '') {\r\n templateDropdown.classList.add('error');\r\n return;\r\n } else {\r\n templateDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n\r\n if (hasErrors.length !== 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Template Form Popup Window\r\n function templatePopupDoneBtn(completeDate) {\r\n POPUP.hide(selectTemplatePopup);\r\n let isTemplate = '1';\r\n let documentEdited = '0'; // document not previously edited\r\n let consumerId = selectedConsumer.id;\r\n let isRefresh = false;\r\n let formId = templateId;\r\n\r\n forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate, completeDate);\r\n }\r\n\r\n // Event for Cancel BTN on the Template Form Popup Window\r\n function templatePopupCancelBtn() {\r\n POPUP.hide(selectTemplatePopup);\r\n }\r\n\r\n // Populate the DDL on the Template Form Popup Window\r\n async function populateDropdown() {\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n const { getUserFormTemplatesResult: templates } = await formsAjax.getUserFormTemplatesAsync(\r\n $.session.UserId,\r\n hasAssignedFormTypes,\r\n );\r\n\r\n // Array to store unique template objects\r\n const uniqueForms = [];\r\n\r\n // Iterate over the templates array\r\n templates.forEach(template => {\r\n // Check if the formTemplateId already exists in uniqueForms\r\n const exists = uniqueForms.some(form => form.formTemplateId === template.formTemplateId);\r\n // If not, add the template to uniqueForms\r\n if (!exists) {\r\n uniqueForms.push(template);\r\n }\r\n });\r\n\r\n // Prepare data for dropdown\r\n const data = uniqueForms.map(template => ({\r\n id: template.formTemplateId,\r\n value: template.formTemplateId,\r\n text: template.formType + ' -- ' + template.formDescription,\r\n }));\r\n\r\n data.unshift({ id: null, value: '', text: '' }); // Add blank value\r\n dropdown.populate('templateDropdown', data);\r\n}\r\n\r\n\r\n async function displayFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n ) {\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n POPUP.show(formPopup);\r\n\r\n // If the form is new, skip the forms lock check\r\n if (isTemplate !== '1') {\r\n const checkFormsLockValue = await formsAjax.checkFormsLock(formId, $.session.UserId);\r\n\r\n // if the forms lock value returns a non empty string, display the forms lock popup\r\n if (checkFormsLockValue !== '') {\r\n isFormLocked = true;\r\n\r\n const popup = POPUP.build({\r\n id: 'formLocksPopup',\r\n classNames: 'warning',\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `This form is currently locked by ${checkFormsLockValue}. Any changes you make to this form will not be saved.`;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n }\r\n\r\n formsAjax.openFormEditor(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n $.session.applicationName,\r\n formCompleteDate,\r\n isFormLocked,\r\n );\r\n isFormLocked = false;\r\n }\r\n\r\n async function displayStepFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n stepId,\r\n docOrder,\r\n formName,\r\n ) {\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n POPUP.show(formPopup);\r\n\r\n // If the form is new, skip the forms lock check\r\n if (isTemplate !== '1') {\r\n const checkFormsLockValue = await formsAjax.checkFormsLock(formId, $.session.UserId);\r\n\r\n // if the forms lock value returns a non empty string, display the forms lock popup\r\n if (checkFormsLockValue !== '') {\r\n isFormLocked = true;\r\n\r\n const popup = POPUP.build({\r\n id: 'formLocksPopup',\r\n classNames: 'warning',\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `This form is currently locked by ${checkFormsLockValue}. Any changes you make to this form will not be saved.`;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n }\r\n\r\n formsAjax.openStepFormEditor(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n $.session.applicationName,\r\n formCompleteDate,\r\n isFormLocked,\r\n stepId,\r\n docOrder,\r\n formName,\r\n );\r\n isFormLocked = false;\r\n }\r\n\r\n function displayWFStepFormPopup(\r\n templateId,\r\n templateName,\r\n stepId,\r\n docOrder,\r\n isTemplate,\r\n documntEdited,\r\n consumerId,\r\n ) {\r\n isTemplate ? (documntId = 0) : (documntId = templateId);\r\n\r\n var displayfromBLOBBtn = button.build({\r\n text: 'Display Selected Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n //formsAjax.openEditor(templateId, false);\r\n // alert(\"Hi there.\");\r\n },\r\n });\r\n\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n // Display the window that the Form will populate using either openEditor/openPDFEditor\r\n POPUP.show(formPopup);\r\n\r\n if (isTemplate) {\r\n formsAjax.openEditor(templateId, templateName, consumerId, stepId, docOrder);\r\n } else {\r\n let isRefresh = false;\r\n formsAjax.openPDFEditor(documntId, documntEdited, consumerId, isRefresh);\r\n }\r\n // isTemplate ? formsAjax.openEditor(templateId, templateName) : formsAjax.openPDFEditor(documntId);\r\n }\r\n\r\n function deleteConfirmation(formId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n //\tPOPUP.hide(formeditpopup);\r\n let result = await formsAjax.deleteConsumerFormAsync(formId);\r\n if (result.deleteConsumerFormResult === '1') {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this form?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function formEditPopup(formId, formCompleteDate, tableRow) {\r\n const formeditpopup = POPUP.build({\r\n id: 'formeditpopup',\r\n classNames: 'miniform',\r\n hideX: true,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n let thisCompleteDate = formCompleteDate;\r\n\r\n let completeDateInput = input.build({\r\n type: 'date',\r\n label: 'Completion Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(formCompleteDate.split(' ')[0]),\r\n // readonly: true,\r\n });\r\n\r\n completeDateInput.addEventListener('change', event => {\r\n thisCompleteDate = event.target.value;\r\n // validation of completeDateInput\r\n if (thisCompleteDate === '') {\r\n completeDateInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n completeDateInput.classList.remove('error');\r\n if ($.session.formsUpdate) saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n var saveBtn = button.build({\r\n text: 'Save Completion Date',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n await formsAjax.updateConsumerFormCompletionDateAsync(formId, thisCompleteDate);\r\n POPUP.hide(formeditpopup);\r\n // POPUP.hide(formPopup);\r\n forms.loadPDFFormsLanding();\r\n // overlay.show();\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(formeditpopup);\r\n // overlay.show();\r\n },\r\n });\r\n\r\n var deleteBtn = button.build({\r\n text: 'Delete Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(formeditpopup);\r\n deleteConfirmation(formId, tableRow);\r\n // overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Update Completion Date?';\r\n formeditpopup.appendChild(completeDateInput);\r\n formeditpopup.appendChild(warningMessage);\r\n formeditpopup.appendChild(btnWrap);\r\n // formeditpopup.appendChild(deleteBtn);\r\n\r\n if (!$.session.formsUpdate) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if (!$.session.formsDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n\r\n POPUP.show(formeditpopup);\r\n }\r\n\r\n function init() {\r\n //DOM.clearActionCenter();\r\n // PROGRESS.SPINNER.show('Loading PDF Forms...');\r\n //loadPDFFormsLanding();\r\n setActiveModuleAttribute('forms');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n loadPDFFormsLanding,\r\n displayWFStepFormPopup,\r\n displayFormPopup,\r\n displayStepFormPopup,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","var formsAjax = (function () {\r\n \r\n function openEditor(templateId, templateName, consumerId, stepId, docOrder) {\r\n \r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openEditor/',\r\n data: '{\"templateId\":\"' + templateId + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openEditorResult;\r\n \r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n // set the default toolbar group to the Shapes group\r\n // instance.setToolbarGroup(['toolbarGroup-Shapes']);\r\n // call methods from instance, docViewer and annotManager as needed\r\n \r\n const docViewer = instance.Core.documentViewer; \r\n const annotManager = instance.Core.annotationManager;\r\n \r\n // -- Save PDF with Annotations -- https://www.pdftron.com/documentation/web/guides/get-file-data-with-viewer/\r\n \r\n // Add header button that will get file data on click\r\n instance.UI.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n \r\n let documentEdited = \"1\"; // documentEdited = T \r\n const result = await WorkflowViewerAjax.insertStepDocumentAsync(stepId, docOrder, templateName + '.pdf', 'pdf', data, documentEdited); \r\n const {insertWorkflowStepDocumentResult: {attachmentId, documentId}} = result;\r\n\r\n const newDocObj = {\r\n documentId: documentId,\r\n stepId: stepId,\r\n docOrder: `\"${docOrder}\"`,\r\n description: templateName + '.pdf',\r\n attachmentId: attachmentId,\r\n documentEdited: documentEdited,\r\n attachmentType: 'pdf'\r\n }\r\n \r\n const newStepDocComponent = new WorkflowDocumentComponent(newDocObj).render(); \r\n\r\n alert('Document has been saved.');\r\n\r\n POPUP.hide(formPopup);\r\n\r\n const stepsContainer = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n const documentsList = stepsContainer.querySelector(\".wf-documents-list\");\r\n \r\n documentsList.appendChild(newStepDocComponent);\r\n\r\n }\r\n });\r\n \r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n\r\n let PDFForm = document.getElementById('formPopup');\r\n POPUP.hide(formPopup);\r\n\r\n }\r\n });\r\n });\r\n \r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n \r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.Core.documentViewer.loadDocument(blob, { filename: templateName + '.pdf'});\r\n instance.UI.disableElements(['toolsHeader']);\r\n // instance.disableElements(['toolbarGroup-Shapes']);\r\n // instance.disableElements(['toolbarGroup-Edit']);\r\n // instance.disableElements(['toolbarGroup-Insert']);\r\n // you can also access major namespaces from the instance as follows:\r\n const Tools = instance.Tools;\r\n const Annotations = instance.Annotations;\r\n \r\n docViewer.addEventListener('documentLoaded', async () => {\r\n //docViewer.setOptions({ enableAnnotations: false });\r\n // docViewer.zoomTo(docViewer.getZoom() + 1.75);\r\n // call methods relating to the loaded document\r\n });\r\n });\r\n\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function openPDFEditor(documentId, documentEdited, consumerId, isRefresh) {\r\n \r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openPDFEditor/',\r\n data: '{\"documentId\":\"' + documentId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openPDFEditorResult;\r\n \r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n \r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager\r\n \r\n instance.UI.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n\r\n try{\r\n \r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n \r\n let documentEdited = \"1\"; // documentEdited = T \r\n const result = await WorkflowViewerAjax.updateStepDocumentAsync(documentId, 'pdf', data, documentEdited); \r\n const {updateWorkflowStepDocumentResult: {attachmentId, documntId}} = result;\r\n \r\n alert('Document has been saved.');\r\n\r\n POPUP.hide(formPopup);\r\n const updatedDocument = document.querySelector(`[data-document-id='${documentId}']`);\r\n updatedDocument.setAttribute(\"data-attachment-id\", `${attachmentId}`);\r\n updatedDocument.setAttribute(\"data-document-edited\", `${documentEdited}`);\r\n updatedDocument.setAttribute(\"data-attachment-type\", 'pdf');\r\n \r\n } catch {\r\n // \r\n alert('This PDF document format does not allow saving. Document NOT saved.');\r\n // POPUP.hide(formPopup);\r\n\r\n }\r\n\r\n\r\n }\r\n });\r\n \r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n POPUP.hide(formPopup);\r\n \r\n }\r\n }); \r\n \r\n if (documentEdited == \"1\") {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: ' ',\r\n title: 'Refresh with original data',\r\n onClick: async () => {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n\r\n docViewer.closeDocument();\r\n // get the data for annotated version of the document \r\n let isRefresh = true; \r\n const result = await formsAjax.getPDFDocData(documentId, \"0\", consumerId, isRefresh);\r\n\r\n if (result) {\r\n\r\n const binaryString = window.atob(result);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n // display annotated version of the document \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n var FitMode = docViewer.FitMode;\r\n docViewer.setFitMode(FitMode.FitWidth);\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf'});\r\n \r\n } \r\n \r\n }\r\n });\r\n } \r\n \r\n });\r\n\r\n \r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n \r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.UI.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.UI.disableElements(['toolsHeader']);\r\n \r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n annotManager.exportAnnotations().then(xfdfString => {\r\n const doc = docViewer.getDocument();\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n \r\n });\r\n });\r\n\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n \r\n function openFormEditor(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName, formCompleteDate, isFormLocked) {\r\n \r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openFormEditorResult;\r\n\r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n \r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n \r\n instance.UI.setHeaderItems(header => {\r\n if ($.session.formsUpdate) { \r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n\r\n try{\r\n if (isFormLocked) {\r\n throw new Error();\r\n }\r\n \r\n let formID;\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n \r\n // let documentEdited = \"1\"; // documentEdited = T \r\n // insertConsumerFormAsync\r\n if (documentEdited === \"1\") {\r\n const result = await formsAjax.updateConsumerFormAsync(formId, data, documentEdited); \r\n const {updateConsumerFormResult: {formID}} = result;\r\n\r\n } else {\r\n const result = await formsAjax.insertConsumerFormAsync($.session.UserId, consumerId, formId, data, formCompleteDate); \r\n const {insertConsumerFormResult} = result;\r\n formID = insertConsumerFormResult.formId;\r\n\r\n overlay.hide();\r\n forms.loadPDFFormsLanding();\r\n }\r\n\r\n alert('Document has been saved.');\r\n\r\n } catch(e) { \r\n if(e) {\r\n alert('Cannot save while document is locked. Document NOT saved.')\r\n } else {\r\n //\r\n alert('This PDF document format does not allow saving. Document NOT saved.');\r\n // POPUP.hide(formPopup);\r\n } \r\n }\r\n\r\n }\r\n }); // push\r\n } //if\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n //POPUP.hide(formPopup);\r\n if ($.session.formsUpdate) { \r\n closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n removeFormsLock(formId, consumerId);\r\n } else {\r\n POPUP.hide(formPopup);\r\n removeFormsLock(formId, consumerId);\r\n }\r\n \r\n }\r\n }); \r\n \r\n if (isTemplate == \"0\" && $.session.formsUpdate == true) {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: ' ',\r\n title: 'Refresh with original data',\r\n onClick: async () => {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n\r\n docViewer.closeDocument();\r\n // get the data for annotated version of the document \r\n let isRefresh = true; \r\n const result = await formsAjax.getPDFFormData(formId, \"0\", consumerId, isRefresh, isTemplate, $.session.applicationName);\r\n\r\n if (result) {\r\n\r\n const binaryString = window.atob(result);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n // display annotated version of the document \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n var FitMode = docViewer.FitMode;\r\n docViewer.setFitMode(FitMode.FitWidth);\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf'});\r\n \r\n } \r\n \r\n }\r\n });\r\n\r\n } \r\n \r\n });\r\n\r\n \r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n \r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.UI.disableElements(['toolsHeader']);\r\n \r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n \r\n });\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function openStepFormEditor(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName, formCompleteDate, isFormLocked, stepId, docOrder, formName) {\r\n \r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openFormEditorResult;\r\n\r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.UI.FitMode;\r\n instance.UI.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.UI.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n \r\n const docViewer = instance.Core.documentViewer;\r\n const annotManager = instance.Core.annotationManager;\r\n \r\n instance.UI.setHeaderItems(header => {\r\n if ($.session.formsUpdate) { \r\n header.push({\r\n type: 'actionButton',\r\n img: '',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n // save the Step Document with any edits included \r\n let documentEdited = \"1\"; // documentEdited = T \r\n const resultStepDoc = await WorkflowViewerAjax.insertStepDocumentAsync(stepId, docOrder, formName + '.pdf', 'pdf', data, documentEdited); \r\n const {insertWorkflowStepDocumentResult: {attachmentId, documentId}} = resultStepDoc;\r\n // save the original Form Document with any edits included\r\n // const resultFormDoc = await formsAjax.updateConsumerFormAsync(formId, data, documentEdited); \r\n // const {updateConsumerFormResult: {formID}} = resultFormDoc;\r\n\r\n const newDocObj = {\r\n documentId: documentId,\r\n stepId: stepId,\r\n docOrder: `\"${docOrder}\"`,\r\n description: formName + '.pdf',\r\n attachmentId: attachmentId,\r\n documentEdited: documentEdited,\r\n attachmentType: 'pdf'\r\n\r\n }\r\n \r\n const newStepDocComponent = new WorkflowDocumentComponent(newDocObj).render(); \r\n \r\n alert('Document has been saved.');\r\n\r\n\r\n\r\n removeFormsLock(formId, consumerId);\r\n POPUP.hide(formPopup);\r\n \r\n const stepsContainer = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n const documentsList = stepsContainer.querySelector(\".wf-documents-list\");\r\n \r\n documentsList.appendChild(newStepDocComponent);\r\n \r\n \r\n\r\n } //onclick\r\n }); // push\r\n } //if\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n //POPUP.hide(formPopup);\r\n if ($.session.formsUpdate) { \r\n closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n removeFormsLock(formId, consumerId);\r\n } else {\r\n POPUP.hide(formPopup);\r\n removeFormsLock(formId, consumerId);\r\n }\r\n\r\n }\r\n }); \r\n \r\n if (isTemplate == \"0\" && $.session.formsUpdate == true) {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: ' ',\r\n title: 'Refresh with original data',\r\n onClick: async () => {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n\r\n docViewer.closeDocument();\r\n // get the data for annotated version of the document \r\n let isRefresh = true; \r\n const result = await formsAjax.getPDFFormData(formId, \"0\", consumerId, isRefresh, isTemplate, $.session.applicationName);\r\n\r\n if (result) {\r\n\r\n const binaryString = window.atob(result);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n // display annotated version of the document \r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n var FitMode = docViewer.FitMode;\r\n docViewer.setFitMode(FitMode.FitWidth);\r\n docViewer.loadDocument(blob, { filename: 'myfile.pdf'});\r\n \r\n } \r\n \r\n }\r\n });\r\n\r\n } \r\n \r\n });\r\n\r\n \r\n // -- Display PDF (from memorystream/string) -- https://www.pdftron.com/documentation/web/guides/basics/open/base64/\r\n \r\n const binaryString = window.atob(arr);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n \r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n \r\n // const arr = new Uint8Array(bytes);\r\n const blob = new Blob([bytes], { type: 'application/pdf' });\r\n instance.Core.documentViewer.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.UI.disableElements(['toolsHeader']);\r\n \r\n docViewer.addEventListener('documentLoaded', async () => {\r\n try {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n \r\n });\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n async function getUserFormTemplatesAsync(userId, hasAssignedFormTypes) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserFormTemplates/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId: userId,\r\n hasAssignedFormTypes: hasAssignedFormTypes,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function insertConsumerFormAsync(\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n formdata,\r\n formCompleteDate,\r\n ) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(formdata);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n formdata: abString,\r\n formCompleteDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function updateConsumerFormAsync(\r\n formId,\r\n formdata,\r\n documentEdited,\r\n ) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(formdata);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formId,\r\n formdata: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function updateConsumerFormCompletionDateAsync(\r\n formId,\r\n formCompletionDate,\r\n ) {\r\n try {\r\n \r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerFormCompletionDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formId,\r\n formCompletionDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteConsumerFormAsync(formId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerForm/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"formId\":\"' +\r\n formId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getconsumerFormsAsync(userId, consumerId, hasAssignedFormTypes) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getconsumerForms/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"userId\":\"' +\r\n userId +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"hasAssignedFormTypes\":\"' +\r\n hasAssignedFormTypes +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n\r\n // for Plan module (Workflow Step Docs)\r\n async function getPDFDocData(documentId, documentEdited, consumerId, isRefresh) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/openPDFEditor/',\r\n data: '{\"documentId\":\"' + documentId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.openPDFEditorResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // for Forms module\r\n async function getPDFFormData(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.openFormEditorResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n } \r\n \r\n function documentNotAllowedSaveAlert() {\r\n\r\n var popup = POPUP.build({\r\n id: 'saveNotAllowedAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n \r\n btnWrap.appendChild(okBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'This PDF document format does not allow saving. Any entered data can not be saved to the database.';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n\r\n }\r\n\r\n function closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate) {\r\n const closewarningpopup = POPUP.build({\r\n id: 'closewarningPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add(\"btnWrap\");\r\n \r\n const continueNoSaveBtn = button.build({\r\n text: 'Continue Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function() {\r\n \r\n POPUP.hide(closewarningpopup);\r\n POPUP.hide(formPopup);\r\n // if (documentEdited === \"0\") forms.loadPDFFormsLanding();\r\n //overlay.hide();\r\n // forms.loadPDFFormsLanding();\r\n // overlay.show();\r\n\r\n } //callback\r\n }) //continueBtn Build\r\n\r\n \r\n \r\n var mustSaveBtn = button.build({\r\n text: 'Do Not Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(closewarningpopup);\r\n overlay.show();\r\n \r\n }\r\n })\r\n btnWrap.appendChild(mustSaveBtn);\r\n btnWrap.appendChild(continueNoSaveBtn);\r\n \r\n var warningMessage = document.createElement(\"p\");\r\n warningMessage.innerHTML = \"You should not close this form until you have saved your work. Do you want to proceed with closing this form?\";\r\n closewarningpopup.appendChild(warningMessage);\r\n closewarningpopup.appendChild(btnWrap);\r\n POPUP.show(closewarningpopup);\r\n }\r\n\r\n async function checkFormsLock(formId, userId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkFormsLock/',\r\n data: '{\"formId\":\"' + formId + '\", \"userId\":\"' + userId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.checkFormsLockResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function removeFormsLock(formId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/removeFormsLock/',\r\n data: '{\"formId\":\"' + formId + '\", \"userId\":\"' + $.session.UserId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.removeFormsLockResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return { \r\n openEditor,\r\n openPDFEditor,\r\n openFormEditor,\r\n openStepFormEditor,\r\n getUserFormTemplatesAsync,\r\n insertConsumerFormAsync,\r\n updateConsumerFormAsync,\r\n updateConsumerFormCompletionDateAsync,\r\n deleteConsumerFormAsync,\r\n getconsumerFormsAsync,\r\n getPDFDocData,\r\n getPDFFormData,\r\n removeFormsLock,\r\n checkFormsLock\r\n };\r\n}) ();","var incidentTracking = (function() {\r\n // DATA\r\n\t//---------------------\r\n\tvar involvementTypes;\r\n var incidentLocations;\r\n\tvar categories;\r\n var employeeNames;\r\n\r\n function getInvolvementTypes() {\r\n if (involvementTypes) return [...involvementTypes];\r\n }\r\n function getLocations() {\r\n if (incidentLocations) return [...incidentLocations];\r\n }\r\n function getCategories() {\r\n if (categories) return [...categories];\r\n }\r\n function getEmployeeNames() {\r\n if (employeeNames) return [...employeeNames];\r\n }\r\n function getDropdownData(callback) {\r\n // gets all the data needed for dropdowns\r\n var getInvolvementTypesPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getInvolvementTypeData(results => {\r\n involvementTypes = results;\r\n fulfill();\r\n });\r\n });\r\n var getIncidentCategoriesPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getIncidentCategories(results => {\r\n categories = results;\r\n fulfill();\r\n });\r\n });\r\n var getIncidentLocationDetailPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getIncidentLocationDetail(results => {\r\n incidentLocations = results;\r\n fulfill();\r\n });\r\n });\r\n var getEmployeesInvolvedEmployeeDropdownPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getEmployeesInvolvedEmployeeDropdown(results => {\r\n employeeNames = results;\r\n fulfill();\r\n });\r\n });\r\n\r\n Promise.all([\r\n getInvolvementTypesPromise,\r\n getIncidentCategoriesPromise,\r\n getIncidentLocationDetailPromise,\r\n getEmployeesInvolvedEmployeeDropdownPromise\r\n ]).then(() => {\r\n callback();\r\n });\r\n }\r\n\r\n function loadLandingPage() {\r\n var newIncidentBtn = button.build({\r\n text: 'New Incident',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: newIncident.init\r\n });\r\n var overviewBtn = button.build({\r\n text: 'Review Incidents',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: incidentOverview.init\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(newIncidentBtn);\r\n btnWrap.appendChild(overviewBtn);\r\n\r\n PROGRESS.SPINNER.show('Loading Incident Tracking...');\r\n getDropdownData(() => {\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n });\r\n }\r\n\r\n return {\r\n getInvolvementTypes,\r\n getLocations,\r\n getCategories,\r\n getEmployeeNames,\r\n loadLandingPage,\r\n getDropdownData, //For Dashboard\r\n }\r\n})();","var incidentTrackingAjax = (function () {\r\n //'use-strict';\r\n //Incident Save\r\n //Send incident notification\r\n function sendNotification(notificationType, employeeId, data) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendITNotification/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"notificationType\":\"' +\r\n notificationType +\r\n '\",\"employeeId\":\"' +\r\n employeeId +\r\n '\",\"incidentTypeDesc\":\"' +\r\n data.incidentTypeDesc +\r\n '\",\"incidentDate\":\"' +\r\n data.incidentDate +\r\n '\",\"incidentTime\":\"' +\r\n data.incidentTime +\r\n '\",\"subcategoryId\":\"' +\r\n data.subcategoryId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Drop Downs Creation\r\n //Involvment Types\r\n function getInvolvementTypeData(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITInvolvementTypeData/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Incident Categories\r\n function getIncidentCategories(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITIncidentCategories/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITIncidentCategoriesResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Locations Detail\r\n function getIncidentLocationDetail(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITIncidentLocationDetail/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITIncidentLocationDetailResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Service Locations\r\n function getConsumerServiceLocations(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITConsumerServiceLocations/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITConsumerServiceLocationsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Days back\r\n function updateIncidentTrackingDaysBack() {\r\n updatedReviewDays = $('#incidenttrackingdaysback').val();\r\n if (parseInt(updatedReviewDays) > parseInt('365')) {\r\n updatedReviewDays = 365;\r\n $('#incidenttrackingdaysback').val('365');\r\n alert('Days back must be 365 or less.');\r\n }\r\n $.session.defaultIncidentTrackingReviewDays = updatedReviewDays;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateIncidentTrackingDaysBack/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedReviewDays + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateIncidentTrackingDaysBackResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Get review table data\r\n function getITReviewTableData(retrieveData, callback) {\r\n //retrieveData is = token, userId, locationId, consumerId, employeeId, subcategoryId, fromDate, toDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITReviewTableData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITReviewTableDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n // callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n //Review page locations\r\n function getReviewPageLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsIncidentTrackingReviewPage/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsIncidentTrackingReviewPageResult;\r\n callback(res);\r\n //var allString = '000AllY';//this is to add the 'ALL' option\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Employees Involved Employee Dropdown\r\n function getEmployeesInvolvedEmployeeDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeesInvolvedEmployeeDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getEmployeesInvolvedEmployeeDropdownResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function getITReviewPageEmployeeListAndSubList(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITReviewPageEmployeeListAndSubList/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function getIncidentEditReviewDataAllObjects(incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getIncidentEditReviewDataAllObjects/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"incidentId\":\"' + incidentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getIncidentEditReviewDataAllObjectsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function deleteITIncident(incidentId) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAnywhereITIncident/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"incidentId\":\"' + incidentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function saveUpdateITIncident(incidentData, callback) {\r\n var notifyArr = incidentData.notifyEmployeeString.split('|');\r\n var employeeIdArr = incidentData.employeeIdString.split('|');\r\n var notificationType = incidentData.saveUpdate === 'Save' ? 'Insert' : 'Update';\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITIncident/',\r\n data: JSON.stringify(incidentData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITIncidentResult;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n for (let i = 0; i < notifyArr.length; i++) {\r\n if (notifyArr[i] === 'Y') {\r\n sendNotification(notificationType, employeeIdArr[i], incidentData);\r\n }\r\n }\r\n //notifyArr.forEach((notify, index) => {\r\n // if (notify === 'Y') {\r\n // sendNotification(notificationType, employeeIdArr[index], incidentData);\r\n // }\r\n //});\r\n if (callback) callback(res);\r\n }, 1000);\r\n //for loop' if notify emp is y call procedure with person id of employee with checked box\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n // consumer involved DROPDOWN data\r\n function getReviewedByDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getReviewedByDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getReviewedByDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInjuryLocationsDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInjuryLocationsDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInjuryLocationsDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInjuryTypesDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInjuryTypesDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInjuryTypesDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerFollowUpTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerFollowUpTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerFollowUpTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerBehaviorTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerBehaviorTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerBehaviorTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitReportingCategories(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitReportingCategories/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitReportingCategoriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInterventionTypesDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInterventionTypesDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInterventionTypesDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n // consumer involved REVIEW data\r\n function getitConsumerInterventions(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerInterventions/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerInterventionsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerInjuries(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerInjuries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerInjuriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerReviews(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerReviews/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerReviewsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerFollowUps(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerFollowUps/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerFollowUpsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerReporting(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerReporting/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerReportingResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerBehavior(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerBehaviors/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerBehaviorsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Consumer Folow Ups Specific Alters\r\n function itDeleteConsumerFollowUp(itConsumerFollowUpId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerFollowUp/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\",\"itConsumerFollowUpId\":\"' + itConsumerFollowUpId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerFollowUpResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerFollowUp(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \tconsumerFollowUpIdArray: [],\r\n // \tfollowUpTypeIdArray: [],\r\n // \tpersonResponsibleArray: [],\r\n // \tdueDateArray: [],\r\n // \tcompletedDateArray: [],\r\n // \tnotesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerFollowUp/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerFollowUpResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Injury Alters\r\n function saveUpdateITConsumerInjuries(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // itConsumerInvolvedId: '',\r\n // itConsumerInjuryIdArray: [],\r\n // \tcheckedByNurseArray: [],\r\n // \tcheckedDateArray: [],\r\n // \tdetailsArray: [],\r\n // \titInjuryLocationIdArray: [],\r\n // \titInjuryTypeIdArray: [],\r\n // \ttreatmentArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerInjuries/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerInjuriesResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n function itDeleteConsumerInjuries(itConsumerInjuryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerInjuries/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"itConsumerInjuryId\":\"' + itConsumerInjuryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerInjuriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Intervention Alters\r\n function itDeleteConsumerInterventions(itConsumerInterventionId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerInterventions/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"itConsumerInterventionId\":\"' +\r\n itConsumerInterventionId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerInterventionsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerInterventions(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \titConsumerInvolvedId: '',\r\n // \titConsumerInterventionIdArray: [],\r\n // \taversiveArray: [],\r\n // itConsumerInterventionTypeIdArray: [],\r\n // notesArray: [],\r\n // \tstartTimeArray: [],\r\n // \tstopTimeArray: [],\r\n // \ttimeLengthArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerInterventions/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerInterventionsResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Reporting Alters\r\n function itDeleteConsumerReporting(itConsumerReportingId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerReporting/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"itConsumerReportingId\":\"' +\r\n itConsumerReportingId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerReportingResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerReporting(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \tconsumerReportIdArray: [],\r\n // \treportDateArray: [],\r\n // reportTimeArray: [],\r\n // reportingCategoryIdArray: [],\r\n // reportToArray: [],\r\n // reportByArray: [],\r\n // reportMethodArray: [],\r\n // \tnotesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerReporting/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerReportingResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Review Alters\r\n function itDeleteConsumerReviews(itConsumerReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerReviews/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"itConsumerReviewId\":\"' + itConsumerReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerReviewsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerReviews(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \titConsumerReviewIdArray: [],\r\n // \treviewedByArray: [],\r\n // reviewedDateArray: [],\r\n // noteArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerReviews/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerReviewsResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Behavior Alters\r\n function itDeleteConsumerBehavior(itConsumerBehaviorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerBehavior/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\",\"itConsumerBehaviorId\":\"' + itConsumerBehaviorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerBehaviorsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerBehaviors(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \titConsumerBehaviorIdArray: [],\r\n // \tstartTimeArray: [],\r\n // endTimeArray: [],\r\n // occurrencesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerBehavior/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerBehaviorsResult;\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // User Incident View Tracking\r\n async function updateIncidentViewByUser(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateIncidentViewByUser/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // Generate Incident Tracking Report\r\n function generateIncidentTrackingReport(incidentId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n incidentId: incidentId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateIncidentTrackingReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateIncidentTrackingReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function checkIfITReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfITReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfITReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // Send the report to designated emails\r\n function sendIncidentTrackingReport(reportScheduleId, incidentTrackingEmailReportData) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: reportScheduleId,\r\n toAddresses: incidentTrackingEmailReportData.toAddresses,\r\n ccAddresses: incidentTrackingEmailReportData.ccAddresses,\r\n bccAddresses: incidentTrackingEmailReportData.bccAddresses,\r\n emailSubject: incidentTrackingEmailReportData.emailSubject,\r\n emailBody: incidentTrackingEmailReportData.emailBody,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendIncidentTrackingReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.sendIncidentTrackingReportResult;\r\n //callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n sendNotification,\r\n getInvolvementTypeData,\r\n getIncidentCategories,\r\n getIncidentLocationDetail,\r\n getConsumerServiceLocations,\r\n updateIncidentTrackingDaysBack,\r\n getITReviewTableData,\r\n getReviewPageLocations,\r\n getEmployeesInvolvedEmployeeDropdown,\r\n getITReviewPageEmployeeListAndSubList,\r\n getIncidentEditReviewDataAllObjects,\r\n deleteITIncident,\r\n saveUpdateITIncident,\r\n getReviewedByDropdown,\r\n getInjuryLocationsDropdown,\r\n getInjuryTypesDropdown,\r\n getitConsumerInterventions,\r\n getitConsumerInjuries,\r\n getitConsumerReviews,\r\n getitConsumerFollowUps,\r\n getitConsumerReporting,\r\n getitConsumerBehavior,\r\n getitConsumerFollowUpTypes,\r\n getitConsumerBehaviorTypes,\r\n getitReportingCategories,\r\n getInterventionTypesDropdown,\r\n itDeleteConsumerFollowUp,\r\n saveUpdateITConsumerFollowUp,\r\n itDeleteConsumerReporting,\r\n saveUpdateITConsumerReporting,\r\n itDeleteConsumerReviews,\r\n saveUpdateITConsumerReviews,\r\n itDeleteConsumerInjuries,\r\n itDeleteConsumerInterventions,\r\n saveUpdateITConsumerInjuries,\r\n saveUpdateITConsumerInterventions,\r\n itDeleteConsumerBehavior,\r\n saveUpdateITConsumerBehaviors,\r\n updateIncidentViewByUser,\r\n generateIncidentTrackingReport,\r\n checkIfITReportExists,\r\n sendIncidentTrackingReport,\r\n };\r\n})();\r\n","function buildInfal() {\r\n var holder = $(\"
    \").addClass(\"infalHolder\"),\r\n header = $(\"
    \").addClass(\"infalHeader\").appendTo(holder),\r\n headerText = $(\"\").addClass(\"infalHeaderText\").html(\"Infal TimeClock\").appendTo(header),\r\n body = $(\"
    \").addClass(\"infalBody\").appendTo(holder),\r\n dropdown = $(\"\").appendTo(body),\r\n button = $(\"\").addClass(\"infalBodyButton\").html(\" \").appendTo(body);\r\n\r\n $(\"#actioncenter\").append(holder);\r\n\r\n InfalGetJobsAjax();\r\n}\r\n\r\nfunction getInfalUsernameDataSetter() {\r\n empId = readCookie(\"id\");\r\n infalAjax.getInfalUserNameAjax(empId, setInfalUserNameToScreen);//Still need to add and implement callback\r\n}\r\n\r\nfunction setInfalUserNameToScreen(res) {\r\n var name = '';\r\n $('result', res).each(function () {\r\n //$.session.Name = $('name', this).text();\r\n name = $('name', this).text();\r\n });\r\n var t = name.split(',');\r\n name = t[1] + ' ' + t[0];\r\n $(\"#firstName\").text(name);\r\n}","var infalAjax = (function() {\r\n\r\n function InfalGetJobsAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalGetJobs/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n //data: '{\"id\":\"' + 1308 + '\"}',\r\n data: JSON.stringify(empId),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.InfalGetJobsResult);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n } \r\n \r\n function InfalGetClockInsAndOutsAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalGetClockInsAndOuts/\",\r\n data: JSON.stringify(empId),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.InfalGetClockInsAndOutsResult);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function InfalClockInAjax(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalClockIn/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n resObj = JSON.parse(res);\r\n callback(resObj);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function InfalClockOutAjax(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalClockOut/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function getInfalUserNameAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getInfalUserName/\",\r\n data: '{\"empId\":\"' + empId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n\treturn {\r\n InfalGetJobsAjax,\r\n InfalGetClockInsAndOutsAjax,\r\n InfalClockInAjax,\r\n InfalClockOutAjax,\r\n getInfalUserNameAjax\r\n\t};\r\n})();","const multiTabs = (function () {\r\n function notifyOtherTabs(message) {\r\n userActivityChannel.postMessage({ type: 'update' });\r\n }\r\n\r\n function newTabOpen(message) {\r\n userActivityChannel.postMessage({ type: 'newTab' });\r\n }\r\n\r\n return {\r\n notifyOtherTabs,\r\n newTabOpen\r\n };\r\n})();\r\n\r\nconst userActivityChannel = new BroadcastChannel('userActivityChannel');\r\n\r\nlocalStorage.setItem('activeChannel', true);\r\n\r\nlet isOriginalTab = true;\r\n\r\nfunction autoLogout() {\r\n var isPopupVisible = false;\r\n var idleTime = 0;\r\n var logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n function timerIncrement() {\r\n var timeLimit = parseInt($.session.anywhereMinutestotimeout);\r\n idleTime++;\r\n if (idleTime === timeLimit - 1) {\r\n POPUP.show(logoutPopup);\r\n isPopupVisible = true;\r\n }\r\n if (idleTime === timeLimit) setCookieOnFail('');\r\n }\r\n\r\n var logoutMessage = `You've been inactive for a while. For security purposes, we will automatically sign you out in approximately 1 minute.`;\r\n var logoutPopup = POPUP.build({});\r\n logoutPopup.innerHTML += logoutMessage;\r\n\r\n // Broadcast mouse movement event to other tabs\r\n document.addEventListener('mousemove', () => {\r\n if (isPopupVisible) {\r\n POPUP.hide(logoutPopup);\r\n isPopupVisible = false;\r\n }\r\n idleTime = 0;\r\n clearInterval(logoutInterval);\r\n logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n // Broadcast mouse movement event to other tabs\r\n userActivityChannel.postMessage({ type: 'mouseMove' });\r\n });\r\n\r\n // Broadcast keyboard activity event to other tabs\r\n document.addEventListener('keydown', () => {\r\n if (isPopupVisible) {\r\n POPUP.hide(logoutPopup);\r\n isPopupVisible = false;\r\n }\r\n idleTime = 0;\r\n clearInterval(logoutInterval);\r\n logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n // Broadcast keyboard activity event to other tabs\r\n userActivityChannel.postMessage({ type: 'keyPress' });\r\n });\r\n\r\n userActivityChannel.addEventListener('message', function (event) {\r\n const message = event.data;\r\n\r\n if (message.type === 'mouseMove' || message.type === 'keyPress') {\r\n // Reset idleTime to zero when there's user activity in other tabs\r\n idleTime = 0;\r\n } else if (message.type === 'buttonClick') {\r\n unloadApp($.loadedApp);\r\n setCookieOnFail('');\r\n } else if (message.type === 'newTab') {\r\n const element = document.getElementById('newTabsPopup');\r\n\r\n if (!element) {\r\n const newTabsPopup = POPUP.build({\r\n id: 'newTabsPopup',\r\n header: 'Attention!',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Opening multiple tabs simultaneously may lead to potential data corruption. For optimal system performance and to avoid any issues, please refrain from making changes in multiple tabs simultaneously.';\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(newTabsPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(continueBtn);\r\n newTabsPopup.appendChild(message);\r\n newTabsPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(newTabsPopup);\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction handleLogoutButtonClick() {\r\n unloadApp($.loadedApp);\r\n setCookieOnFail('');\r\n\r\n // Broadcast the button click event to other tabs\r\n userActivityChannel.postMessage({ type: 'buttonClick' });\r\n}","const oneSpan = (() => {\r\n let oneSpanDocumentStatus;\r\n let oneSpanDocumentData;\r\n\r\n async function checkOneSpanData(planId) {\r\n // Checks if the document has been signed and values are in our database\r\n oneSpanDocumentStatus = await oneSpanAjax.oneSpanCheckDocumentStatus({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n \r\n if (oneSpanDocumentStatus[0].signedStatus !== \"\") {\r\n const oneSpanRetrieveData = {\r\n token: $.session.Token,\r\n packageId: oneSpanDocumentStatus[0].packageId,\r\n assessmentID: planId\r\n }\r\n \r\n await oneSpanAjax.oneSpanGetSignedDocuments(oneSpanRetrieveData);\r\n }\r\n }\r\n\r\n function fireDataUpdateEvent(planId) {\r\n // custom event for event listener used on button to run disabled check\r\n const dataUpdateEvent = new CustomEvent(\"data-update\", {\r\n detail: {\r\n data: planId\r\n }\r\n })\r\n\r\n document.dispatchEvent(dataUpdateEvent)\r\n }\r\n\r\n async function shouldBeDisabled(btn, planId, signatureTypeToCheck) {\r\n // gathers the new list of team members and their signature types\r\n const updatedMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // disables the btn if there are no team members\r\n if (updatedMemberData.length === 0) {\r\n btn.classList.add('disabled');\r\n }\r\n \r\n // if there is a digital signature type for any team member the button is no logner disabled\r\n for (let i = 0; i < updatedMemberData.length; i++) {\r\n if (updatedMemberData[i].signatureType.includes(signatureTypeToCheck) && updatedMemberData[i].signature === '') {\r\n btn.classList.remove('disabled');\r\n break;\r\n } else {\r\n btn.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Are you sure you want to send the Document via One Span?';\r\n return message;\r\n }\r\n\r\n async function sendToOneSpanProgress() {\r\n oneSpanPopup.style.display = 'none';\r\n pendingSave.show('Sending...');\r\n\r\n // Sends the document out via One Span\r\n const sentStatus = await oneSpanAjax.oneSpanBuildSigners(oneSpanDocumentData);\r\n\r\n if (sentStatus === 'success') {\r\n success = true;\r\n } else {\r\n success = false;\r\n }\r\n\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n // Handles popup actions based on whether the One Span delivery was successsful\r\n if (success) {\r\n pendingSave.fulfill('Sent!');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(oneSpanPopup);\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to send, please try again.');\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n oneSpanPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n\r\n function showOneSpanPopup() { \r\n oneSpanPopup = POPUP.build({\r\n id: 'sendToOneSpanPopup',\r\n header: 'Send To One Span'\r\n });\r\n \r\n const message = buildPopupMessage();\r\n\r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n // Shows spinner while the document is being sent via One Span\r\n sendToOneSpanProgress();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(oneSpanPopup);\r\n },\r\n });\r\n \r\n btnWrap.appendChild(continueBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n oneSpanPopup.appendChild(message);\r\n oneSpanPopup.appendChild(btnWrap);\r\n \r\n POPUP.show(oneSpanPopup);\r\n }\r\n\r\n function buildSendDocumentToOneSpanBtn(planId, teamMemberData) {\r\n const sendDocumentToOneSpanBtn =\r\n button.build({\r\n id: 'sig_addMember',\r\n text: 'REQUEST E-SIGNATURES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n oneSpanDocumentData = {\r\n token: $.session.Token,\r\n assessmentID: planId,\r\n userID: $.session.PeopleId,\r\n versionID: 1,\r\n extraSpace: \"false\",\r\n isp: true,\r\n oneSpan: true\r\n },\r\n\r\n showOneSpanPopup(oneSpanDocumentData)\r\n }\r\n });\r\n\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n\r\n return sendDocumentToOneSpanBtn;\r\n } \r\n \r\n return {\r\n checkOneSpanData,//\r\n buildSendDocumentToOneSpanBtn,\r\n shouldBeDisabled,\r\n fireDataUpdateEvent,\r\n sendToOneSpanProgress//\r\n };\r\n })();","var oneSpanAjax = (function () {\r\n //'use-strict';\r\n\r\n async function oneSpanBuildSigners(retrieveData) {\r\n //token, assessmentID, userID, versionID, extraSpace, isp, oneSpan\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',//\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanBuildSigners/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return await data.oneSpanBuildSignersResult; //\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n //function oneSpanBuildSigners() {\r\n // $.ajax({\r\n // type: 'POST',\r\n // url:\r\n // $.webServer.protocol + '://' +\r\n // $.webServer.address + ':' +\r\n // $.webServer.port + '/' +\r\n // $.webServer.serviceName + '/oneSpanBuildSigners/',\r\n // data: '{\"token\":\"' + $.session.Token + '\"}',\r\n // contentType: 'application/json; charset=utf-8',\r\n // dataType: 'json',\r\n // success: function (response, status, xhr) {\r\n // var res;\r\n // try {\r\n // res = response.oneSpanBuildSignersResult;\r\n // //callback(res, null);\r\n // } catch (e) {\r\n // // callback(null, error);\r\n // }\r\n // },\r\n // error: function (xhr, status, error) {\r\n // callback(error, null);\r\n // },\r\n // });\r\n //}\r\n async function oneSpanGetSignedDocuments(retrieveData) {\r\n // token, packageId, planId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanGetSignedDocuments/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return await data.oneSpanGetSignedDocumentsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function oneSpanCheckDocumentStatus(retrieveData) {\r\n // token, assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanCheckDocumentStatus/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.oneSpanCheckDocumentStatusResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n oneSpanBuildSigners,\r\n oneSpanGetSignedDocuments,\r\n oneSpanCheckDocumentStatus,\r\n };\r\n})();\r\n","const OODEmployers = (() => {\r\n\r\n let addNewEmployerBtn;\r\n let rtnOODMainPageBtn;\r\n\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n\r\n let saveBtn;\r\n let cancelBtn;\r\n\r\n async function init() {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n\r\n\r\n let container = document.createElement(\"div\");\r\n // container.classList.add(\"btnWrap\");\r\n var LineBr = document.createElement('br');\r\n\r\n addNewEmployerBtn = button.build({\r\n text: 'Add New Employer',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'save',\r\n classNames: !$.session.OODInsert ? ['caseNoteSave', 'disabled'] : ['caseNoteSave'],\r\n callback: async () => { buildEmployerPopUp({}, 'insert') },\r\n });\r\n\r\n rtnOODMainPageBtn = button.build({\r\n text: 'Return to OOD Main Page',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'save',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { OOD.loadOODLanding() },\r\n });\r\n\r\n OODEmployersTable = await buildEmployersTable();\r\n\r\n container.appendChild(addNewEmployerBtn);\r\n container.appendChild(LineBr);\r\n container.appendChild(OODEmployersTable);\r\n container.appendChild(LineBr);\r\n container.appendChild(rtnOODMainPageBtn);\r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildEmployersTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEmployersTable',\r\n columnHeadings: ['Employer', 'Address', 'City', 'State', 'Zip Code'],\r\n endIcon: true,\r\n // endIcon : ($.session.formsDelete) ? `${icons['delete']}` : null,\r\n\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n // const tableData = [{ values : ['My Employer', '123 State St', 'Kyzyl', 'OH'], endIcon : `${icons['delete']}`, onClick : async () => {buildEmployerPopUp()} }, \r\n // { values : ['Your Employer', '456 Main St', 'Santa Clause', 'IN'], endIcon : `${icons['delete']}`,onClick : async () => {buildEmployerPopUp()} } ];\r\n\r\n\r\n const { getActiveEmployersResult: activeEmployers } = await OODAjax.getActiveEmployersAsync();\r\n\r\n var filteredActiveEmployers = activeEmployers.filter((x) => x.employerId != 0);\r\n\r\n let tableData = filteredActiveEmployers.map((employer) => ({\r\n values: [employer.employerName, employer.address1 + ' ' + employer.address2, employer.city, employer.state, employer.zipcode],\r\n attributes: [{ key: 'employerId', value: employer.employerId }],\r\n endIcon: ((employer.isEmployerIdReferenced == '0') && $.session.OODDelete) ? `${icons['delete']}` : ' ',\r\n id: employer.employerId,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n // alert('Delete')\r\n try {\r\n let tableRow = document.getElementById(employer.employerId)\r\n deleteConfirmation(employer.employerId, tableRow);\r\n return;\r\n } catch (err) {\r\n console.error(\"error: \", err);\r\n }\r\n },\r\n onClick: (e) => {\r\n if ($.session.OODUpdate) {\r\n OODAjax.getEmployer(employer.employerId, function (results) {\r\n buildEmployerPopUp(results, 'update');\r\n });\r\n }\r\n },\r\n\r\n }));\r\n\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType) {\r\n\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n\r\n } else {\r\n\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: \"Edit this Employer\",\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n // value: (employerdata) ? employerdata[0].employerName : '',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n // value: (employerdata) ? employerdata[0].address1 : '',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n //value: (employerdata) ? employerdata[0].address2 : '',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n // value: (employerdata) ? employerdata[0].city : '',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n // value: (employerdata) ? employerdata[0].state : '',\r\n value: (employerstate) ? employerstate : '',\r\n\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n // value: (employerdata) ? employerdata[0].state : '',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n //callback: () => POPUP.hide(editEmployerPopup) \r\n callback: () => editEmployerPopupDoneBtn(postType)\r\n });\r\n // this.saveButton = saveBtn;\r\n\r\n cancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n // editEmployerPopup.appendChild(servicesDropdown);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n\r\n POPUP.show(editEmployerPopup);\r\n\r\n checkRequiredFields();\r\n\r\n }\r\n\r\n function popUpEventHandlers() {\r\n\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim(); \r\n checkRequiredFields();\r\n\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n\r\n });\r\n\r\n }\r\n\r\n function checkRequiredFields() { \r\n var employrInput = employerInput.querySelector('#employerInput');\r\n\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n } else {\r\n employerInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if ($.session.OODInsert || $.session.OODUpdate) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n let employerID = insertEmployerResult.employerId;\r\n\r\n if (employerID == '0') {\r\n warningPopup();\r\n } else {\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OODEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OODEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function deleteConfirmation(employerId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteEmployerAsync(employerId);\r\n if (result.deleteEmployerResult === \"1\") {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this employer?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n\r\n };\r\n})(); ","const OOD = (() => {\r\n //Inputs\r\n let serviceDateInput;\r\n let serviceDate;\r\n const CLEAREDSERVICEDATE = '1970-01-01';\r\n\r\n let editEmployersBtn;\r\n let createFormsBtn;\r\n let filterRow;\r\n let newEntryBtn;\r\n let newSummaryBtn;\r\n let OODEntriesTable;\r\n let OODConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n\r\n // New Roster\r\n //let initRosterSelection;\r\n var enabledConsumers;\r\n var selectedConsumers;\r\n\r\n //filter\r\n let serviceDateStartInput;\r\n let serviceDateEndInput;\r\n let employeeDropdown;\r\n let servicesDropdown;\r\n let referenceNumbersDropdown;\r\n let filterValues;\r\n\r\n let btnWrap;\r\n let serviceDateStartBtnWrap;\r\n let serviceDateEndBtnWrap;\r\n let employeeBtnWrap;\r\n let serviceBtnWrap;\r\n let referenceNumberBtnWrap;\r\n\r\n //service filter options\r\n const OODENTRIESFILTER = 'OODEntriesFilter';\r\n const FORM4MONTHLYSUMMARYSERVICES = 'Form4MonthlySummary';\r\n\r\n let consumerServicesDropdown;\r\n let consumerServicesDoneBtn;\r\n let selectConsumerServicePopup;\r\n let selectedConsumerServiceId;\r\n let selectedConsumerReferenceNumber;\r\n let selectedConsumerServiceType;\r\n let selectedConsumerFormNumber;\r\n let selectedConsumerServiceName;\r\n let summaryServicesDropdown;\r\n let summaryServicesDoneBtn;\r\n let selectSummaryServicePopup;\r\n\r\n let selectedConsumerIds;\r\n //let consumerServices;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n await loadOODLanding();\r\n DOM.toggleNavLayout();\r\n //\t\troster2.clearActiveConsumers();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build OOD Module Landing Page\r\n async function loadOODLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n selectedConsumers.forEach(consumer => {\r\n const consumerCard = buildConsumerCard(consumer);\r\n landingPage.appendChild(consumerCard);\r\n });\r\n\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n\r\n // editEmployersBtn = buildEditEmployersBtn();\r\n\r\n filterRow.appendChild(filteredBy);\r\n // filterRow.appendChild(editEmployersBtn);\r\n\r\n landingPage.appendChild(filterRow);\r\n OODEntriesTable = await buildOODEntriesTable(filterValues);\r\n landingPage.appendChild(OODEntriesTable);\r\n\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildOODEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEntriesTable',\r\n columnHeadings: [\r\n 'Service Date',\r\n 'Consumer',\r\n 'Service',\r\n 'Reference No',\r\n 'User Updated',\r\n 'Employer',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n //const tableData = [{ values : ['11/09/2021', 'Aaron, Aaron', 'LPA'], onClick : () => {OODForm4MonthlyPlacement.init(currentConsumer)}, attributes : [{ key: 'consumerId', value: '10000030' }, { key: 'contactsId', value: '686614946775283' } ]},\r\n //\t\t\t\t\t{ values : ['11/11/2021', 'Abrams, Jackie', 'IPA'], onClick : () => {OODForm4MonthlyPlacement.init(currentConsumer)}, attributes : [{ key: 'consumerId', value: '10000241' }, { key: 'reviewId', value: '686614946775290' } ]} ];\r\n\r\n selectedConsumerIds = selectedConsumers.map(function (x) {\r\n return x.id;\r\n });\r\n //TODO JOE: FORM 8 -- Need to include in OODEntries serviceType: T1 and T2 -- Need to UpdateSP _OODEntries with EM_Service_Names.Template_Num\r\n const { getOODEntriesResult: OODEntries } = await OODAjax.getOODEntriesAsync(\r\n selectedConsumerIds.join(', '),\r\n filterValues.serviceDateStart,\r\n filterValues.serviceDateEnd,\r\n filterValues.userId,\r\n filterValues.serviceId,\r\n filterValues.referenceNumber, //reference number\r\n );\r\n\r\n // format the Completion Dates\r\n OODEntries.forEach(function (entry) {\r\n let newDate = new Date(entry.serviceDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatServiceDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n entry.serviceDate = formatServiceDate;\r\n });\r\n\r\n let tableData = OODEntries.map(entry => ({\r\n values: [\r\n entry.serviceDate,\r\n entry.consumerName,\r\n entry.serviceCode,\r\n entry.referenceNumber,\r\n entry.userUpdated,\r\n entry.employerName,\r\n ],\r\n //TODO JOE: add key: ServiceType value: entry.serviceType (T1 and T2)\r\n attributes: [\r\n {\r\n key: 'OODReportType',\r\n value: entry.employerName == 'Monthly Review' ? 'monthlySummary' : 'newEntry',\r\n },\r\n { key: 'consumerId', value: entry.consumerId },\r\n { key: 'Id', value: entry.ID },\r\n { key: 'userId', value: entry.userUpdated },\r\n { key: 'formNumber', value: Math.round(entry.formNumber) },\r\n ],\r\n onClick: e => {\r\n var rowConsumer = selectedConsumers.filter(function (x) {\r\n return x.id == entry.consumerId;\r\n });\r\n //TODO JOE: add to the if clause below (Form4) and add two more ifs to cover the Form 8 ---\r\n //TODO JOE: if (rowConsumer[0] && e.target.attributes.OODReportType.value === 'newEntry' && e.target.attributes.serviceType.value === 'T1')\r\n // TODO JOE: Will also need two new SP to get the Form 8 data\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '4'\r\n ) {\r\n OODAjax.getForm4MonthlyPlacementEditData(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n OODForm4MonthlyPlacement.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '4'\r\n ) {\r\n OODAjax.getForm4MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n OODForm4MonthlySummary.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n\r\n if ( //NEED NEW AJAX TO GET Form 6 \r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '6'\r\n ) {\r\n OODAjax.getForm6Tier1andJDPLan(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n Tier1andJDPlanForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '8'\r\n ) {\r\n OODAjax.getForm8CommunityBasedAssessment(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n communityBasedAssessmentForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '8'\r\n ) {\r\n OODAjax.getForm8MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n communityBasedAssessmentSummaryForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n \r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '10'\r\n ) {\r\n OODAjax.getForm10TransportationData(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n OODFormTransportation.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n\r\n if ( //NEED NEW AJAX TO GET Form 16 \r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '16'\r\n ) {\r\n OODAjax.getForm16SummerYouthWorkExperience(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n summerYouthWorkExperienceForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if ( //NEED NEW AJAX TO GET Form 16\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '16'\r\n ) {\r\n OODAjax.getForm16MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n summerYouthWorkExperienceSummaryForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n },\r\n }));\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const consumerCard = document.createElement('div');\r\n consumerCard.classList.add('OODConsumerCard');\r\n\r\n consumerCard.appendChild(consumer.card);\r\n\r\n consumerCard.addEventListener('click', event => {\r\n var consumerId = event.target.dataset.consumerId;\r\n selectedConsumerIds = selectedConsumerIds.filter(id => id !== consumerId);\r\n selectedConsumers = selectedConsumers.filter(function (x) {\r\n return x.id !== consumerId;\r\n });\r\n roster2.removeConsumerFromActiveConsumers(consumerId);\r\n var activeConsumers = roster2.getActiveConsumers();\r\n activeConsumers.length === 0 ? roster2.showMiniRoster() : loadOODLanding();\r\n // event.target.parentElement.parentElement.remove();\r\n });\r\n\r\n consumerRow.appendChild(consumerCard);\r\n\r\n OODConsumerBtns = buildButtonBar(consumer);\r\n\r\n consumerRow.appendChild(OODConsumerBtns);\r\n var LineBr = document.createElement('br');\r\n\r\n consumerElement.appendChild(consumerRow);\r\n // consumerElement.appendChild(LineBr);\r\n\r\n return consumerElement;\r\n }\r\n\r\n // build display of \"Entry\" Buttons -- \"New Entry\" and \"New Monthly Summary\"\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n\r\n const entryBtn = button.build({\r\n text: 'New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [\r\n { key: 'consumerId', value: consumer.id },\r\n { key: 'btnType', value: 'newEntry' },\r\n ],\r\n classNames: !$.session.OODInsert ? ['newEntryBtn', 'disabled'] : ['newEntryBtn'],\r\n callback: () =>\r\n buildEntryServicePopUp(\r\n entryBtn.attributes.consumerid.value,\r\n entryBtn.attributes.btnType.value,\r\n ),\r\n });\r\n const summaryBtn = button.build({\r\n text: 'New Monthly Summary',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [\r\n { key: 'consumerId', value: consumer.id },\r\n { key: 'btnType', value: 'monthlySummary' },\r\n ],\r\n classNames: !$.session.OODInsert\r\n ? ['newMonthlySummaryBtn', 'disabled']\r\n : ['newMonthlySummaryBtn'],\r\n callback: () =>\r\n buildSummaryServicePopUp(\r\n summaryBtn.attributes.consumerid.value,\r\n summaryBtn.attributes.btnType.value,\r\n ),\r\n });\r\n editEmployersBtn = buildEditEmployersBtn();\r\n createFormsBtn = buildCreateFormsBtn();\r\n buildNewFilterBtn();\r\n\r\n const oodBtnsWrap = document.createElement('div');\r\n oodBtnsWrap.classList.add('OODbuttonBar__btnWrap');\r\n oodBtnsWrap.appendChild(entryBtn);\r\n oodBtnsWrap.appendChild(summaryBtn);\r\n oodBtnsWrap.appendChild(editEmployersBtn);\r\n oodBtnsWrap.appendChild(createFormsBtn);\r\n\r\n buttonBar.appendChild(oodBtnsWrap);\r\n\r\n return buttonBar;\r\n }\r\n\r\n // build Services pop-up that displays when an \"Entry\" button is clicked\r\n async function buildEntryServicePopUp(consumerId, btnType) {\r\n serviceDate = UTIL.getTodaysDate();\r\n //\tserviceDate = '2021-03-22';\r\n // TODO: the results of this AJAX call should be used in the call to function populateConsumerServiceCodeDropdown()\r\n const {\r\n //TODO JOE: Alter SP ANYW_OOD_getConsumerServiceCodes to include T1 (Form4) and T2 (Form8) services AND pass back T1 or T2 to include in the DDL items\r\n getConsumerServiceCodesResult: consumerServices,\r\n } = await OODAjax.getConsumerServiceCodesAsync(consumerId, serviceDate);\r\n\r\n if (consumerServices === undefined || consumerServices.length == 0) {\r\n buildNoServicesPopup(consumerId, btnType);\r\n } else {\r\n // services exist\r\n\r\n selectConsumerServicePopup = POPUP.build({\r\n header: 'Select a Service',\r\n hideX: true,\r\n id: 'selectServicePopup',\r\n });\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n serviceDateInput.addEventListener('focusout', async event => {\r\n serviceDate = event.target.value;\r\n if (serviceDate === '') {\r\n serviceDate = CLEAREDSERVICEDATE;\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n selectedConsumerReferenceNumber = '';\r\n await populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n } else {\r\n const { getConsumerServiceCodesResult: consumerServices } =\r\n await OODAjax.getConsumerServiceCodesAsync(consumerId, serviceDate);\r\n\r\n if (consumerServices === undefined || consumerServices.length == 0) {\r\n servicePopupCancelBtn(btnType);\r\n buildNoServicesPopup(consumerId, btnType);\r\n } else {\r\n populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n }\r\n }\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n });\r\n\r\n // serviceDateInput.addEventListener('keydown', event => {\r\n // \tevent.preventDefault();\r\n // \tevent.stopPropagation();\r\n // });\r\n\r\n consumerServicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'consumerServicesDropdown',\r\n });\r\n\r\n consumerServicesDoneBtn = button.build({\r\n id: 'consumerServicesDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: () => servicePopupDoneBtn(consumerId, btnType),\r\n });\r\n this.doneButton = consumerServicesDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'consumerServicesCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => servicePopupCancelBtn(btnType),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(consumerServicesDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectConsumerServicePopup.appendChild(LineBr);\r\n selectConsumerServicePopup.appendChild(serviceDateInput);\r\n selectConsumerServicePopup.appendChild(consumerServicesDropdown);\r\n selectConsumerServicePopup.appendChild(btnWrap);\r\n\r\n populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n\r\n consumerServicesDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n selectedConsumerReferenceNumber = '';\r\n } else {\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n selectedConsumerServiceId = selectedOption.value;\r\n // selectedConsumerServiceType = selectedOption.id;\r\n selectedConsumerFormNumber = selectedOption.id;\r\n selectedConsumerServiceName = selectedOption.text;\r\n selectedConsumerReferenceNumber = selectedOption.text.split('# ')[1];\r\n }\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n });\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n\r\n POPUP.show(selectConsumerServicePopup);\r\n\r\n function consumerServicesDropDownRequired() {\r\n if (!selectedConsumerServiceId || selectedConsumerServiceId === '') {\r\n consumerServicesDropdown.classList.add('error');\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n consumerServicesDropdown.classList.remove('error');\r\n consumerServicesDoneBtn.classList.remove('disabled');\r\n serviceDateInputRequired();\r\n }\r\n }\r\n\r\n function serviceDateInputRequired() {\r\n var todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n var thisServiceDate = new Date(serviceDate.split('-').join('/'));\r\n if (\r\n !serviceDate ||\r\n serviceDate === CLEAREDSERVICEDATE ||\r\n dates.isAfter(thisServiceDate, todayDate)\r\n ) {\r\n serviceDateInput.classList.add('error');\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n consumerServicesDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n }\r\n\r\n function buildNoServicesPopup(consumerId, btnType) {\r\n // no services for Monthly Placemnet form (ie, after clicking a consumer \"Entry\" btn)\r\n let noServicesPopup = POPUP.build({\r\n header: 'No Services found',\r\n hideX: true,\r\n id: 'noServicePopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noServicesPopup);\r\n loadOODLanding();\r\n //buildEntryServicePopUp(consumerId, btnType)\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no authorized services for the selected consumer. Please contact your Advisor OOD Administrator to enter an authorization or select a different consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noServicesPopup.appendChild(warningMessage);\r\n noServicesPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noServicesPopup);\r\n }\r\n\r\n // build Services pop-up that displays when an \"Monthly Summary\" button is clicked\r\n async function buildSummaryServicePopUp(consumerId, btnType) {\r\n selectSummaryServicePopup = POPUP.build({\r\n header: 'Select a Service',\r\n hideX: true,\r\n id: 'selectSummaryServicePopup',\r\n });\r\n\r\n summaryServicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'summaryServicesDropdown',\r\n });\r\n\r\n summaryServicesDoneBtn = button.build({\r\n id: 'summaryServicesDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: () => servicePopupDoneBtn(consumerId, btnType),\r\n });\r\n this.doneButton = summaryServicesDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'summaryServiceCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => servicePopupCancelBtn(btnType),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(summaryServicesDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectSummaryServicePopup.appendChild(summaryServicesDropdown);\r\n selectSummaryServicePopup.appendChild(btnWrap);\r\n\r\n populateMonthlySummaryServiceCodeDropdown(consumerId);\r\n\r\n summaryServicesDropdown.addEventListener('change', event => {\r\n selectedConsumerServiceId = event.target.value;\r\n // selectedConsumerServiceType = event.target.id;\r\n selectedConsumerFormNumber = event.target.id;\r\n selectedConsumerServiceName = event.target.text;\r\n });\r\n\r\n summaryServicesDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n } else {\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n selectedConsumerServiceId = selectedOption.value;\r\n // selectedConsumerServiceType = selectedOption.id;\r\n selectedConsumerFormNumber = selectedOption.id;\r\n selectedConsumerServiceName = selectedOption.text;\r\n }\r\n summaryServicesDropDownRequired();\r\n });\r\n\r\n summaryServicesDropDownRequired();\r\n\r\n POPUP.show(selectSummaryServicePopup);\r\n\r\n function summaryServicesDropDownRequired() {\r\n if (!selectedConsumerServiceId || selectedConsumerServiceId === '') {\r\n summaryServicesDropdown.classList.add('error');\r\n summaryServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n summaryServicesDropdown.classList.remove('error');\r\n summaryServicesDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Services Popup Window\r\n function servicePopupDoneBtn(consumerId, btnType) {\r\n if (btnType === 'newEntry') {\r\n POPUP.hide(selectServicePopup);\r\n } else {\r\n POPUP.hide(selectSummaryServicePopup);\r\n }\r\n\r\n // find the array element with consumerId\r\n var thisConsumer = selectedConsumers.filter(consumer => {\r\n return consumer.id === consumerId;\r\n });\r\n var thisselectedConsumerServiceId = selectedConsumerServiceId;\r\n var thisselectedConsumerReferenceNumber = selectedConsumerReferenceNumber;\r\n var thisselectedConsumerServiceType = selectedConsumerServiceType;\r\n var thisselectedConsumerFormNumber = selectedConsumerFormNumber;\r\n var thisselectedConsumerServiceName = selectedConsumerServiceName.substr(4).split('- Ref #')[0];\r\n selectedConsumerServiceId = '';\r\n //selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n // TODO JOE: Need to add to the two ifs below to include selectedConsumerServiceType\r\n // TODO JOE: Need to add two more if statements to call init() for the two Form 8 Forms\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '4')\r\n OODForm4MonthlyPlacement.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '4')\r\n OODForm4MonthlySummary.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '6')\r\n Tier1andJDPlanForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '8')\r\n communityBasedAssessmentForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '8')\r\n communityBasedAssessmentSummaryForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '10')\r\n OODFormTransportation.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '16')\r\n summerYouthWorkExperienceForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '16')\r\n summerYouthWorkExperienceSummaryForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n // Event for Cancel BTN on the Services Popup Window\r\n function servicePopupCancelBtn(btnType) {\r\n selectedConsumerServiceId = '';\r\n selectedConsumerReferenceNumber = '';\r\n if (btnType === 'newEntry') {\r\n POPUP.hide(selectServicePopup);\r\n loadOODLanding();\r\n } else {\r\n POPUP.hide(selectSummaryServicePopup);\r\n loadOODLanding();\r\n }\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n async function generateAndTrackFormProgress(formNumber) {\r\n // Prepare data for form generation\r\n let data = {\r\n referenceNumber: filterValues.referenceNumber,\r\n peopleId: selectedConsumerIds[0],\r\n serviceCodeId: filterValues.serviceId,\r\n startDate: filterValues.serviceDateStart,\r\n endDate: filterValues.serviceDateEnd,\r\n userId: filterValues.userId\r\n };\r\n \r\n try {\r\n switch (formNumber) {\r\n case 4:\r\n sentStatus = await OODAjax.generateForm4(data);\r\n break;\r\n \r\n case 6:\r\n sentStatus = await OODAjax.generateForm6(data);\r\n break;\r\n\r\n case 8:\r\n sentStatus = await OODAjax.generateForm8(data);\r\n break;\r\n \r\n case 10:\r\n sentStatus = await OODAjax.generateForm10(data);\r\n success = true;\r\n break;\r\n\r\n case 16:\r\n sentStatus = await OODAjax.generateForm16(data);\r\n //alert('Form 16 under construction.');\r\n break;\r\n }\r\n } catch (error) {\r\n //console.error(error);\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n overlay.hide();\r\n }\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n overlay.hide();\r\n }\r\n \r\n\r\n // build Filter button, which filters the data displayed on the OOD Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues)\r\n filterValues = {\r\n token: $.session.Token,\r\n serviceDateStart: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n serviceDateEnd: UTIL.getTodaysDate(),\r\n userId: $.session.UserId,\r\n userName: $.session.LName + ', ' + $.session.Name,\r\n serviceId: '%',\r\n serviceName: '',\r\n referenceNumber: '%',\r\n };\r\n }\r\n\r\n // build Edit Employers button,\r\n function buildEditEmployersBtn() {\r\n return button.build({\r\n text: 'Edit Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: editEmployersBtn,\r\n //classNames: !$.session.formsInsert ? ['disabled'] : ['newPlanBtn'],\r\n classNames:\r\n $.session.OODUpdate || $.session.OODInsert || $.session.OODView\r\n ? ['editEmployersBtn']\r\n : ['editEmployersBtn', 'disabled'],\r\n callback: async () => {\r\n OODEmployers.init();\r\n },\r\n });\r\n }\r\n\r\n // build Each Form Button button,\r\n function buildIndividualFormBtn(formText, formNumber) {\r\n return button.build({\r\n text: formText,\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `OODForm${formNumber}Btn`,\r\n classNames: `OODForm${formNumber}Btn`,\r\n callback: async () => {\r\n generateAndTrackFormProgress(formNumber);\r\n },\r\n });\r\n }\r\n\r\n // build Create Forms button,\r\n function buildCreateFormsBtn() {\r\n return button.build({\r\n text: 'Create OOD Forms',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: createFormsBtn,\r\n classNames: 'createFormsBtn',\r\n callback: () => {\r\n showCreateFormsPopup();\r\n },\r\n });\r\n }\r\n\r\n function showCreateFormsPopup() {\r\n // Popup\r\n const popup = POPUP.build({\r\n id: `createOODFormsPopup`,\r\n hideX: true,\r\n classNames: [\r\n 'popup',\r\n 'visible',\r\n 'popup--filter',\r\n 'createOODFormsPopup']\r\n });\r\n\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n const form4Btn = buildIndividualFormBtn('Form 4 - Monthly Job & Site Development', 4);\r\n const form6Btn = buildIndividualFormBtn('Form 6 - Tier1 and JD Plan', 6);\r\n const form8Btn = buildIndividualFormBtn('Form 8 - Work Activities and Assessment', 8);\r\n const form10Btn = buildIndividualFormBtn('Form 10 - Transportation', 10);\r\n const form16Btn = buildIndividualFormBtn('Form 16 - Summer Youth Experience', 16);\r\n\r\n popup.appendChild(form4Btn);\r\n popup.appendChild(form6Btn);\r\n popup.appendChild(form8Btn);\r\n popup.appendChild(form10Btn);\r\n popup.appendChild(form16Btn);\r\n\r\n // Append to DOM\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button)\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n // var splitDate = selectedDate.split('-');\r\n var splitDate = '2021-12-28'.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(\r\n splitDate[2],\r\n )}/${splitDate[0].slice(2, 4)}`;\r\n\r\n\r\n if (filterValues.userId === '%' || filterValues.userId === 'ALL') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n }\r\n\r\n if (filterValues.serviceId === '%' || filterValues.serviceId === 'ALL') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n }\r\n if (filterValues.referenceNumber === '%' || filterValues.referenceNumber === 'ALL') {\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n btnWrap.removeChild(referenceNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n serviceDateStartBtn = button.build({\r\n id: 'serviceDateStartBtn',\r\n text: 'Service Start Date: ' + moment(filterValues.serviceDateStart, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceDateStartBtn') },\r\n });\r\n\r\n serviceDateEndBtn = button.build({\r\n id: 'serviceDateEndBtn',\r\n text: 'Service End Date: ' + moment(filterValues.serviceDateEnd, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceDateEndBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + filterValues.userName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + filterValues.serviceName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceBtn') },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('serviceBtn') },\r\n });\r\n\r\n referenceNumberBtn = button.build({\r\n id: 'referenceNumberBtn',\r\n text: 'Reference Number: ' + filterValues.referenceNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('referenceNumberBtn') },\r\n });\r\n referenceNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('referenceNumberBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n serviceDateStartBtnWrap = document.createElement('div');\r\n serviceDateStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateStartBtnWrap.appendChild(serviceDateStartBtn); \r\n btnWrap.appendChild(serviceDateStartBtnWrap);\r\n\r\n serviceDateEndBtnWrap = document.createElement('div');\r\n serviceDateEndBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateEndBtnWrap.appendChild(serviceDateEndBtn);\r\n btnWrap.appendChild(serviceDateEndBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn)\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n referenceNumberBtnWrap = document.createElement('div');\r\n referenceNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n referenceNumberBtnWrap.appendChild(referenceNumberBtn);\r\n referenceNumberBtnWrap.appendChild(referenceNumberCloseBtn);\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) { \r\n if (closeFilter == 'employeeBtn') {\r\n filterValues.userId = '%';\r\n }\r\n if (closeFilter == 'serviceBtn') {\r\n filterValues.serviceId = '%';\r\n }\r\n if (closeFilter == 'referenceNumberBtn') {\r\n filterValues.referenceNumber = '%';\r\n }\r\n loadOODLanding();\r\n } \r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n employeeDropdown = dropdown.build({\r\n label: 'Employee',\r\n dropdownId: 'employeeDropdown',\r\n });\r\n\r\n serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: filterValues.serviceDateStart,\r\n });\r\n serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: filterValues.serviceDateEnd,\r\n });\r\n\r\n servicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'servicesDropdown',\r\n });\r\n\r\n referenceNumbersDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumbersDropdown',\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => filterPopupDoneBtn(),\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn(),\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(employeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateStartBtn')\r\n filterPopup.appendChild(serviceDateStartInput);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateEndBtn')\r\n filterPopup.appendChild(serviceDateEndInput);\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn')\r\n filterPopup.appendChild(servicesDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'referenceNumberBtn')\r\n filterPopup.appendChild(referenceNumbersDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n populateEmployeeDropdown();\r\n populateServiceCodeDropdown();\r\n populateReferenceNumberDropdown();\r\n eventListeners();\r\n // setupFilterEvent();\r\n\r\n //return filterPopup;\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Populate the employee DDL on the Filter Popup Window\r\n async function populateEmployeeDropdown() {\r\n const { getActiveEmployeesResult: employees } = await OODAjax.getActiveEmployeesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = employees.map(employee => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('employeeDropdown', data, filterValues.userId);\r\n }\r\n\r\n // Populate the Service Code DDL on the Filter Popup Window\r\n async function populateServiceCodeDropdown() {\r\n const { getActiveServiceCodesResult: services } = await OODAjax.getActiveServiceCodesAsync(\r\n OODENTRIESFILTER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = services.map(service => ({\r\n id: service.serviceType,\r\n value: service.serviceId,\r\n text: service.serviceName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('servicesDropdown', data, filterValues.serviceId);\r\n }\r\n\r\n // Populate the Reference Number DDL on the Filter Popup Window\r\n async function populateReferenceNumberDropdown() {\r\n var consumerIds = selectedConsumerIds.join(', ');\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(consumerIds);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('referenceNumbersDropdown', data, filterValues.referenceNumber);\r\n }\r\n\r\n // Populate the Service Code DDL for the 'Entry' Service Popup Window\r\n async function populateConsumerServiceCodeDropdown(consumerId, serviceDate) {\r\n const { getConsumerServiceCodesResult: services } = await OODAjax.getConsumerServiceCodesAsync(\r\n consumerId,\r\n serviceDate,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n //TODO JOE: id: should use selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n let data = services.map(service => ({\r\n // id: (service.serviceType === '') ? 'T10' : service.serviceType, // replace with selectedConsumerServiceType to get T1 and T2 info\r\n id: service.formNumber,\r\n value: service.serviceId,\r\n text: service.serviceName + ' - Ref # ' + service.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('consumerServicesDropdown', data);\r\n //selectedConsumerServiceId = '';\r\n // consumerServicesDropDownRequired();\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n consumerServicesDropdown.classList.add('error');\r\n }\r\n\r\n // Populate the Service Code DDL for the 'Monthly Summary' Service Popup Window\r\n async function populateMonthlySummaryServiceCodeDropdown(consumerId) {\r\n const { getActiveServiceCodesResult: services } = await OODAjax.getActiveServiceCodesAsync(\r\n FORM4MONTHLYSUMMARYSERVICES,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n //TODO JOE: id: should use selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n let data = services.map(service => ({\r\n //id: service.serviceType, // replace with selectedConsumerServiceType to get T1 and T2 info\r\n id: service.formNumber,\r\n value: service.serviceId,\r\n text: service.serviceName,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('summaryServicesDropdown', data);\r\n }\r\n\r\n function eventListeners() {\r\n serviceDateStartInput.addEventListener('change', event => { \r\n if (event.target.value !== '') {\r\n filterValues.serviceDateStart = event.target.value;\r\n } else {\r\n event.target.value = filterValues.serviceDateStart;\r\n } \r\n });\r\n serviceDateEndInput.addEventListener('change', event => { \r\n if (event.target.value !== '') { \r\n filterValues.serviceDateEnd = event.target.value;\r\n } else {\r\n event.target.value = filterValues.serviceDateEnd;\r\n }\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n filterValues.userId = event.target.value;\r\n filterValues.userName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n servicesDropdown.addEventListener('change', event => {\r\n filterValues.serviceId = event.target.value;\r\n filterValues.serviceName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n referenceNumbersDropdown.addEventListener('change', event => {\r\n filterValues.referenceNumber = event.target.value;\r\n });\r\n //routeStatusDropdown.addEventListener('change', event => {\r\n // filterOpts.routeStatus = event.target.value;\r\n // });\r\n }\r\n\r\n async function filterPopupDoneBtn() {\r\n POPUP.hide(filterPopup);\r\n eventListeners();\r\n loadOODLanding();\r\n\r\n //let OODtable = document.getElementById('OODEntriesTable')\r\n // OODEntriesTable = await buildOODEntriesTable(filterValues);\r\n //OODtable.remove();\r\n // DOM.ACTIONCENTER.appendChild(OODEntriesTable);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n function init() {\r\n //DOM.clearActionCenter();\r\n // PROGRESS.SPINNER.show('Loading PDF Forms...');\r\n //loadPDFFormsLanding();\r\n\r\n setActiveModuleAttribute('OOD');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadOODLanding,\r\n buildEntryServicePopUp,\r\n buildSummaryServicePopUp,\r\n };\r\n})();\r\n","var OODAjax = (function () {\r\n // OOD Main/Landing Page\r\n async function getOODEntriesAsync(consumerIds, serviceStartDate, serviceEndDate, userId, serviceCode, referenceNumber) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOODEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceStartDate\":\"' +\r\n serviceStartDate +\r\n '\", \"serviceEndDate\":\"' +\r\n serviceEndDate +\r\n '\", \"userId\":\"' +\r\n userId +\r\n '\", \"serviceCode\":\"' +\r\n serviceCode +\r\n '\", \"referenceNumber\":\"' +\r\n referenceNumber +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // OOD Main/Landing Page\r\n async function getActiveEmployeesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveEmployees/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 4 -- Monthly Placement\r\n async function getConsumerEmployersAsync(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Employers Page\r\n async function getActiveEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function deleteEmployerAsync(employerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteEmployer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"employerId\":\"' +\r\n employerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function updateEmployerAsync(\r\n employerId, \r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateEmployer/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employerId, \r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function insertEmployerAsync(\r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmployer/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n function getEmployer(employerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getEmployerJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"employerId\":\"' + employerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getEmployerJSONResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n // OOD Main/Landing Page\r\n async function getActiveServiceCodesAsync(serviceCodeType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveServiceCodes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n serviceCodeType: serviceCodeType,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function getConsumerReferenceNumbersAsync(consumerIds, startDate, endDate, formNumber) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerReferenceNumbers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerIds: consumerIds,\r\n startDate: startDate,\r\n endDate: endDate,\r\n formNumber: formNumber,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // OOD Main/Landing Page\r\n async function getConsumerServiceCodesAsync(consumerId, serviceDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerServiceCodes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n serviceDate: serviceDate,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n async function getContactTypesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactTypes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n async function getOutcomesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 8 Community Based Assessment Form -- Contact Methods data for DDL\r\n async function getContactMethodsAsync(FormType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactMethods/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formtype: FormType,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 8 Community Based Assessment Form -- Indicators data for DDLs\r\n async function getIndicatorsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getIndicators/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 8 Community Based Assessment Form -- Positions data for DDLs\r\n async function getPositionsAsync(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOODPositions/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n // Form 4 -- Monthly Placement\r\n function getForm4MonthlyPlacementEditData(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm4MonthlyPlacementEditDataJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm4MonthlyPlacementEditDataJSONResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n function updateForm4MonthlyPlacementEditData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n employer: data.employer,\r\n contactType: data.contactType,\r\n jobSeekerPresent: data.jobSeekerPresent,\r\n outcome: data.outcome,\r\n TSCNotified: data.TSCNotified,\r\n bilingualSupplement: data.bilingualSupplement,\r\n notes: data.notes,\r\n userId: data.userId,\r\n application: data.application, \r\n interview: data.interview,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm4MonthlyPlacementEditData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm4MonthlyPlacementEditDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n function insertForm4MonthlyPlacementEditData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n employer: data.employer,\r\n contactType: data.contactType,\r\n jobSeekerPresent: data.jobSeekerPresent,\r\n outcome: data.outcome,\r\n TSCNotified: data.TSCNotified,\r\n bilingualSupplement: data.bilingualSupplement,\r\n notes: data.notes,\r\n caseManagerId: data.caseManagerId,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n application: data.application, \r\n interview: data.interview,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm4MonthlyPlacementEditData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm4MonthlyPlacementEditDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Both Forms (Form 4 and Form 8) -- OOD Form Entry\r\n // TODO JOE: LOOK into this for Form 10 \r\n async function deleteOODFormEntryAsync(caseNoteId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteOODFormEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"caseNoteId\":\"' +\r\n caseNoteId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n \r\n // Form 4 -- Monthly Summary\r\n function getForm4MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm4MonthlySummaryJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm4MonthlySummaryJSONResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Summary\r\n function updateForm4MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emEmploymentGoal: data.emEmploymentGoal,\r\n emReferralQuestions: data.emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch: data.emIndivInputonSearch,\r\n emPotentialIssueswithProgress: data.emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth: data.emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts: data.emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer: data.emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff: data.emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment: data.emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId: data.userId\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm4MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm4MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Summary\r\n function insertForm4MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emEmploymentGoal: data.emEmploymentGoal,\r\n emReferralQuestions: data.emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch: data.emIndivInputonSearch,\r\n emPotentialIssueswithProgress: data.emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth: data.emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts: data.emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer: data.emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff: data.emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment: data.emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId: data.userId,\r\n serviceId: data.serviceId\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm4MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm4MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Both Forms (Form 4 and Form 8) -- Monthly Entry\r\n async function deleteFormMonthlySummaryAsync(emReviewId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteFormMonthlySummary/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"emReviewId\":\"' +\r\n emReviewId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 6 -- Form6Tier1andJDPLan\r\n function getForm6Tier1andJDPLan(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm6Tier1andJDPLan/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm6Tier1andJDPLanResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 6 -- Form6Tier1andJDPLan\r\n function updateForm6Tier1andJDPLan(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n SAMLevel: data.SAMLevel,\r\n contactMethod: data.contactMethod,\r\n narrative: data.narrative,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm6Tier1andJDPLan/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm6Tier1andJDPLanResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 6 -- Form6Tier1andJDPLan\r\n function insertForm6Tier1andJDPLan(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n SAMLevel: data.SAMLevel,\r\n contactMethod: data.contactMethod,\r\n narrative: data.narrative,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm6Tier1andJDPLan/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm6Tier1andJDPLanResult);\r\n },\r\n });\r\n }\r\n \r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function getForm8CommunityBasedAssessment(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm8CommunityBasedAssessment/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm8CommunityBasedAssessmentResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function updateForm8CommunityBasedAssessment(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n position: data.position,\r\n contactMethod: data.contactMethod,\r\n behavioralIndicators: data.behavioralIndicators,\r\n jobTaskQualityIndicators: data.jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators: data.jobTaskQuantityIndicators,\r\n narrative: data.narrative,\r\n interventions: data.interventions,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm8CommunityBasedAssessment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm8CommunityBasedAssessmentResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function insertForm8CommunityBasedAssessment(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n position: data.position,\r\n contactMethod: data.contactMethod,\r\n behavioralIndicators: data.behavioralIndicators,\r\n jobTaskQualityIndicators: data.jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators: data.jobTaskQuantityIndicators,\r\n narrative: data.narrative,\r\n interventions: data.interventions,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm8CommunityBasedAssessment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm8CommunityBasedAssessmentResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function getForm8MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm8MonthlySummary/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm8MonthlySummaryResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function updateForm8MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment: data.emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment, \r\n emSupportandTransition: data.emSupportandTransition,\r\n emReviewVTS: data.emReviewVTS,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm8MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm8MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function insertForm8MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment: data.emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment,\r\n emSupportandTransition: data.emSupportandTransition,\r\n emReviewVTS: data.emReviewVTS,\r\n userId: data.userId,\r\n serviceId: data.serviceId \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm8MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm8MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n\r\n // Form 10 -- Transportation\r\n function getForm10TransportationData(OODTransportationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm10TransportationData/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"OODTransportationId\":\"' + OODTransportationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm10TransportationDataResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 10 -- Transportation\r\n function updateForm10TransportationData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n OODTransportationId: data.OODTransportationId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime, \r\n numberInVehicle: data.numberInVehicle,\r\n startLocation: data.startLocation,\r\n endLocation: data.endLocation,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm10TransportationData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm10TransportationDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 10 -- Transportation\r\n function insertForm10TransportationData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n numberInVehicle: data.numberInVehicle,\r\n startLocation: data.startLocation,\r\n endLocation: data.endLocation,\r\n userId: data.userId,\r\n referenceNumber: data.referenceNumber,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm10TransportationData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm10TransportationDataResult);\r\n },\r\n });\r\n }\r\n\r\n // Form 16 -- Form16SummerYouthWorkExperience\r\n function getForm16SummerYouthWorkExperience(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm16SummerYouthWorkExperience/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm16SummerYouthWorkExperienceResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- getForm16SummerYouthWorkExperience\r\n function updateForm16SummerYouthWorkExperience(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n position: data.position,\r\n groupSize: data.groupSize,\r\n interventions: data.interventions,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm16SummerYouthWorkExperience/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm16SummerYouthWorkExperienceResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- getForm16SummerYouthWorkExperience\r\n function insertForm16SummerYouthWorkExperience(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n position: data.position,\r\n groupSize: data.groupSize,\r\n interventions: data.interventions,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm16SummerYouthWorkExperience/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm16SummerYouthWorkExperienceResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function getForm16MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm16MonthlySummary/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm16MonthlySummaryResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function updateForm16MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment, \r\n emReviewVTS: data.emReviewVTS,\r\n emOfferedHoursNotWorkNumber: data.emOfferedHoursNotWorkNumber,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm16MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm16MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function insertForm16MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment,\r\n emReviewVTS: data.emReviewVTS,\r\n emOfferedHoursNotWorkNumber: data.emOfferedHoursNotWorkNumber,\r\n userId: data.userId,\r\n serviceId: data.serviceId \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm16MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm16MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n\r\n\r\n async function deleteOODForm10TransportationEntry(OODTransportationId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteOODForm10TransportationEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"OODTransportationId\":\"' +\r\n OODTransportationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 4 -- Generate Form\r\n // async function generateForm4(data, callback) {\r\n // const generateForm4 = await _UTIL.fetchData('generateForm4', {\r\n // token: $.session.Token, \r\n // referenceNumber: data.referenceNumber,\r\n // vendorId: '',\r\n // peopleId: data.peopleId,\r\n // serviceCodeId: data.serviceCodeId,\r\n // startDate: data.startDate,\r\n // endDate: data.endDate,\r\n // });\r\n\r\n // return generateForm4;\r\n // }\r\n\r\n // Form 4 -- Generate Form\r\n function generateForm4(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm4/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm6(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm6/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); \r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n\r\n function generateForm8(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm8/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm10(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm10/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); \r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm16(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm16/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n return { \r\n \r\n getOODEntriesAsync,\r\n getActiveEmployeesAsync,\r\n getConsumerEmployersAsync,\r\n getActiveEmployersAsync,\r\n deleteEmployerAsync,\r\n updateEmployerAsync,\r\n insertEmployerAsync,\r\n getEmployer,\r\n getActiveServiceCodesAsync,\r\n getConsumerReferenceNumbersAsync,\r\n getConsumerServiceCodesAsync,\r\n getContactTypesAsync,\r\n getOutcomesAsync,\r\n getContactMethodsAsync,\r\n getIndicatorsAsync,\r\n getPositionsAsync,\r\n getForm4MonthlyPlacementEditData,\r\n updateForm4MonthlyPlacementEditData,\r\n insertForm4MonthlyPlacementEditData,\r\n deleteOODFormEntryAsync,\r\n getForm4MonthlySummary,\r\n updateForm4MonthlySummary,\r\n insertForm4MonthlySummary,\r\n deleteFormMonthlySummaryAsync,\r\n getForm6Tier1andJDPLan,\r\n updateForm6Tier1andJDPLan,\r\n insertForm6Tier1andJDPLan,\r\n getForm8CommunityBasedAssessment,\r\n updateForm8CommunityBasedAssessment,\r\n insertForm8CommunityBasedAssessment,\r\n getForm8MonthlySummary,\r\n updateForm8MonthlySummary,\r\n insertForm8MonthlySummary,\r\n getForm10TransportationData,\r\n insertForm10TransportationData,\r\n updateForm10TransportationData,\r\n deleteOODForm10TransportationEntry,\r\n getForm16SummerYouthWorkExperience,\r\n insertForm16SummerYouthWorkExperience,\r\n updateForm16SummerYouthWorkExperience,\r\n getForm16MonthlySummary,\r\n updateForm16MonthlySummary,\r\n insertForm16MonthlySummary,\r\n generateForm4,\r\n generateForm6,\r\n generateForm8,\r\n generateForm10,\r\n generateForm16\r\n };\r\n }) ();\r\n ","const addEditOutcomeServices = (() => {\r\n let outcomeServicesData;\r\n let selectedConsumer;\r\n let filterValues;\r\n let newFilterValues;\r\n let filterRow;\r\n let addOutCome;\r\n let backBtn;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n //--\r\n let filterPopup;\r\n let outcomeTypeDropdown;\r\n let effectiveDateStart;\r\n let effectiveDateEnd;\r\n let applyFilterBtn;\r\n let btnWrap;\r\n let outcomeTypeBtnWrap;\r\n let effectiveDateBtnWrap;\r\n\r\n async function init(selectedConsume) {\r\n selectedConsumer = selectedConsume;\r\n buildNewOutcomeServices();\r\n }\r\n\r\n async function buildNewOutcomeServices() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n initFilterValues();\r\n document.getElementById('mini_roster').style.display = 'none';\r\n pageWrap = document.createElement('div');\r\n const consumerCard = buildConsumerCard();\r\n const backbtnWrap = document.createElement('div');\r\n backbtnWrap.classList.add('addOutcomeBtnWrap');\r\n\r\n filteredByData = buildFilteredByData();\r\n addOutCome = addOutcomesButton();\r\n backBtn = backButton();\r\n backbtnWrap.appendChild(addOutCome);\r\n backbtnWrap.appendChild(backBtn);\r\n\r\n pageWrap.appendChild(consumerCard);\r\n pageWrap.appendChild(backbtnWrap);\r\n pageWrap.appendChild(filteredByData);\r\n DOM.ACTIONCENTER.appendChild(pageWrap);\r\n\r\n if ($.session.InsertOutcomes == true) {\r\n addOutCome.classList.remove('disabled');\r\n } else {\r\n addOutCome.classList.add('disabled');\r\n }\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.appendChild(spinner);\r\n\r\n outcomeServicesData = await outcomesAjax.getOutcomeServicsPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n outcomeType: filterValues.outcomeTypeName,\r\n effectiveDateStart: filterValues.effectiveDateStart,\r\n effectiveDateEnd: filterValues.effectiveDateEnd,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n buildOverviewTable();\r\n }\r\n\r\n function addOutcomesButton() {\r\n return button.build({\r\n text: 'ADD NEW OUTCOME',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: async () => {\r\n if (!addOutCome.classList.contains('disabled')) {\r\n addOutcomes.init(selectedConsumer, 0);\r\n }\r\n },\r\n });\r\n }\r\n\r\n function backButton() {\r\n return button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => {\r\n document.getElementById('mini_roster').style.display = 'block';\r\n outcomes.backToOutcomeLoad(selectedConsumer);\r\n },\r\n });\r\n }\r\n\r\n function initFilterValues() {\r\n filterValues = {\r\n outcomeType: '%',\r\n effectiveDateStart: dates.formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 10)).slice(0, 10),\r\n effectiveDateEnd: dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n outcomeTypeName: '%',\r\n };\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildFilteredByData() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n effectiveDateEnd = `${formatDate(filterValues.effectiveDateEnd)}`;\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n if (filterValues.outcomeType === '%') {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n btnWrap.removeChild(outcomeTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n if (document.getElementById('outcomeTypeBtn') != null)\r\n document.getElementById('outcomeTypeBtn').innerHTML = 'Outcome Type: ' + filterValues.outcomeTypeName;\r\n }\r\n\r\n if (effectiveDateEnd == '') {\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n btnWrap.removeChild(effectiveDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n if (document.getElementById('effectiveDateBtn') != null)\r\n document.getElementById('effectiveDateBtn').innerHTML =\r\n 'Effective As Of: ' + effectiveDateEnd;\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type: ' + filterValues.outcomeType,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n effectiveDateBtn = button.build({\r\n id: 'effectiveDateBtn',\r\n text: 'Effective As Of: ' + effectiveDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('effectiveDateBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n outcomeTypeBtnWrap = document.createElement('div');\r\n outcomeTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeBtn);\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n\r\n effectiveDateBtnWrap = document.createElement('div');\r\n effectiveDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n effectiveDateBtnWrap.appendChild(effectiveDateBtn);\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'outcomeTypeBtn') {\r\n filterValues.outcomeType = '%';\r\n filterValues.outcomeTypeName = '%';\r\n newFilterValues.outcomeType = '%';\r\n newFilterValues.outcomeTypeName = '%';\r\n }\r\n applyFilter();\r\n }\r\n\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n // Dropdowns\r\n outcomeTypeDropdown = dropdown.build({\r\n dropdownId: 'outcomeTypeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n value: filterValues.outcomeType,\r\n });\r\n\r\n // Date Inputs\r\n const dateWrap = document.createElement('div');\r\n effectiveDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Effective As Of',\r\n style: 'secondary',\r\n value: filterValues.effectiveDateEnd,\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'effectiveDateBtn') { \r\n dateWrap.appendChild(effectiveDateEndInput);\r\n }\r\n\r\n const btnFilterWrap = document.createElement('div');\r\n btnFilterWrap.classList.add('btnWrap');\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n const cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(filterPopup);\r\n },\r\n });\r\n btnFilterWrap.appendChild(applyFilterBtn);\r\n btnFilterWrap.appendChild(cancelFilterBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(outcomeTypeDropdown);\r\n\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(btnFilterWrap);\r\n\r\n POPUP.show(filterPopup);\r\n populateOutcomeTypeDropdown();\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n outcomeTypeDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.outcomeType = selectedOption.value;\r\n newFilterValues.outcomeTypeName = selectedOption.text;\r\n });\r\n\r\n effectiveDateEndInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n effectiveDateEndInput.classList.add('error');\r\n } else {\r\n effectiveDateEndInput.classList.remove('error');\r\n newFilterValues.effectiveDateEnd = e.target.value;\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n applyFilterBtn.addEventListener('click', async e => {\r\n POPUP.hide(filterPopup);\r\n if (!applyFilterBtn.classList.contains('disabled')) {\r\n applyFilter();\r\n }\r\n });\r\n }\r\n\r\n async function populateOutcomeTypeDropdown() {\r\n const { getOutcomeTypeDropDownResult: OutcomeType } = await outcomesAjax.getOutcomeTypeDropDownAsync();\r\n let outcomeTypeData = OutcomeType.map(outcomeTypes => ({\r\n id: outcomeTypes.Goal_Type_ID,\r\n value: outcomeTypes.Goal_Type_ID,\r\n text: outcomeTypes.goal_type_description,\r\n }));\r\n outcomeTypeData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('outcomeTypeDropdown', outcomeTypeData, filterValues.outcomeType);\r\n }\r\n\r\n function checkFilterPopForErrors() {\r\n const errors = [...filterPopup.querySelectorAll('.error')];\r\n const hasErrors = errors.length > 0 ? true : false;\r\n\r\n if (hasErrors) {\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function applyFilter() {\r\n filterValues = { ...filterValues, ...newFilterValues };\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.removeChild(overviewTable);\r\n pageWrap.appendChild(spinner);\r\n\r\n outcomeServicesData = await outcomesAjax.getOutcomeServicsPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n outcomeType: filterValues.outcomeTypeName == 'ALL' ? '%' : filterValues.outcomeTypeName,\r\n effectiveDateStart: filterValues.effectiveDateStart,\r\n effectiveDateEnd: filterValues.effectiveDateEnd,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n const newfilteredByData = buildFilteredByData();\r\n pageWrap.replaceChild(newfilteredByData, filteredByData);\r\n filteredByData = newfilteredByData;\r\n }\r\n\r\n function buildOverviewTable() {\r\n groupChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('outcomeTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('outcomeTable__header');\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Outcome Type
    \r\n
    Outcome Statement
    \r\n
    Start Date
    \r\n
    End Date
    \r\n
    \r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n outcomeServicesData.pageDataParent.forEach(parent => {\r\n const goalID = parent.goal_id;\r\n var eventName;\r\n var startDate =\r\n parent.effectiveDateStart == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(parent.effectiveDateStart.split('T')[0]));\r\n var endDate =\r\n parent.effectiveDateEnd == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(parent.effectiveDateEnd.split('T')[0]));\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('outcomeTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('outcomeTable__mainDataRow', 'outcomeTable__dataRow');\r\n mainDataRow.value = parent.goal_id;\r\n const endIcon = document.createElement('div');\r\n endIcon.classList.add('outcomeTable__endIcon');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('outcomeTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = ` \r\n
    ${parent.outcomeType}
    \r\n
    ${parent.outcomeStatement}
    \r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n if ($.session.InsertServices == true) {\r\n endIcon.innerHTML = icons['add'];\r\n } else {\r\n endIcon.innerHTML = `
    `;\r\n }\r\n mainDataRow.appendChild(endIcon);\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n // SUB ROWS\r\n //---------------------------------\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('outcomeTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('outcomeTable__subHeader');\r\n subHeading.innerHTML = `\r\n
    \r\n
    Service Type
    \r\n
    Service Statement
    \r\n
    Frequency
    \r\n
    Start Date
    \r\n
    End Date
    \r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (outcomeServicesData.pageDataChild[goalID]) {\r\n outcomeServicesData.pageDataChild[goalID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n outcomeServicesData.pageDataChild[goalID].forEach(child => {\r\n const subDataRow = document.createElement('div');\r\n var startDate =\r\n child.serviceStartDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.serviceStartDate.split('T')[0]));\r\n var endDate =\r\n child.serviceEndDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.serviceEndDate.split('T')[0]));\r\n var serviceTyp = child.serviceType == null ? '' : child.serviceType;\r\n subDataRow.classList.add('outcomeTable__subDataRow', 'outcomeTable__dataRow');\r\n subDataRow.innerHTML = `\r\n
    \r\n
    ${serviceTyp}
    \r\n
    ${child.serviceStatement}
    \r\n
    ${child.frequency}
    \r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n `;\r\n subRowWrap.appendChild(subDataRow);\r\n\r\n subDataRow.addEventListener('click', e => {\r\n if ($.session.UpdateServices == true) {\r\n addServicesForm.init(selectedConsumer, child.objective_Id, 0);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // EVENT\r\n //---------------------------------\r\n mainDataRow.addEventListener('click', e => {\r\n var goalID = e.currentTarget.value;\r\n if (eventName != 'toggle' && eventName != 'add') {\r\n if ($.session.UpdateOutcomes == true) {\r\n addOutcomes.init(selectedConsumer, goalID);\r\n }\r\n }\r\n eventName = '';\r\n });\r\n\r\n toggleIcon.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggleIcon.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggleIcon.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n endIcon.addEventListener('click', e => {\r\n eventName = 'add';\r\n addServicesForm.init(selectedConsumer, 0, goalID);\r\n });\r\n\r\n // ASSEMBLY\r\n //---------------------------------\r\n rowWrap.appendChild(subRowWrap);\r\n overviewTable.appendChild(rowWrap);\r\n });\r\n\r\n pageWrap.appendChild(overviewTable);\r\n }\r\n\r\n function groupChildData() {\r\n if (!outcomeServicesData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = outcomeServicesData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.goal_id]) {\r\n obj[child.goal_id] = [];\r\n obj[child.goal_id].push(child);\r\n } else {\r\n obj[child.goal_id].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n outcomeServicesData.pageDataChild = { ...groupedChildren };\r\n }\r\n\r\n function formatDate(date) {\r\n if (!date) return '';\r\n\r\n return UTIL.abbreviateDateYear(UTIL.formatDateFromIso(date.split('T')[0]));\r\n }\r\n\r\n return {\r\n init,\r\n buildNewOutcomeServices,\r\n };\r\n})();\r\n","const addOutcomes = (() => {\r\n //Inputs\r\n var selectedConsumers;\r\n var selectedConsumerId;\r\n let startDate;\r\n let endDate;\r\n let outcomeType;\r\n let outcomeTypeName;\r\n let outcomeStatement;\r\n let goalId;\r\n let BtnName;\r\n let location;\r\n\r\n async function init(selectedConsume, goalID) {\r\n selectedConsumers = selectedConsume;\r\n goalId = goalID;\r\n buildNewOutcomes();\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n\r\n // Build New Outcomes Page \r\n async function buildNewOutcomes() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n selectedConsumerId = selectedConsumers.id;\r\n const importantOutcomeForm = await buildOutComeForm();\r\n landingPage.appendChild(importantOutcomeForm);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n async function buildOutComeForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n if (goalId > 0) {\r\n const result = await outcomesAjax.getGoalEntriesByIdAsync(goalId);\r\n const { getGoalEntriesByIdResult } = result;\r\n\r\n startDate = getGoalEntriesByIdResult[0].effectiveDateStart == '' ? '' : moment(getGoalEntriesByIdResult[0].effectiveDateStart).format('YYYY-MM-DD');\r\n endDate = getGoalEntriesByIdResult[0].effectiveDateEnd == '' ? '' : moment(getGoalEntriesByIdResult[0].effectiveDateEnd).format('YYYY-MM-DD');\r\n outcomeType = getGoalEntriesByIdResult[0].outcomeType;\r\n outcomeStatement = getGoalEntriesByIdResult[0].outcomeStatement;\r\n location = getGoalEntriesByIdResult[0].location;\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n startDate = UTIL.getTodaysDate();\r\n endDate = '';\r\n outcomeType = '';\r\n outcomeStatement = '';\r\n location = '';\r\n BtnName = 'SAVE';\r\n }\r\n\r\n outcomeDropdown = dropdown.build({\r\n id: 'outcomeDropdown',\r\n label: \"Outcome Type\",\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcomeType,\r\n });\r\n outcomeStatementInput = input.build({\r\n id: 'outcomeStatementInput',\r\n type: 'textarea',\r\n label: 'Outcome Statement',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: outcomeStatement,\r\n });\r\n dateStart = input.build({\r\n id: 'dateStart',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n dateEnd = input.build({\r\n id: 'dateEnd',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n locationDropdown = dropdown.build({\r\n id: 'locationDropdown',\r\n label: \"Location\",\r\n dropdownId: \"locationDropdown\",\r\n value: location,\r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateOutcomes();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { addEditOutcomeServices.init(selectedConsumers) },\r\n });\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Outcome
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(outcomeDropdown);\r\n addNewCardBody.appendChild(outcomeStatementInput);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('addOutcomedateWrap');\r\n dateWrap.appendChild(dateStart);\r\n dateEnd.style.marginLeft = '2%';\r\n dateWrap.appendChild(dateEnd);\r\n locationDropdown.style.marginLeft = '2%';\r\n dateWrap.appendChild(locationDropdown);\r\n addNewCardBody.appendChild(dateWrap);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('addOutcomeBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateOutcomeTypesDropdown();\r\n eventListeners();\r\n requiredFieldsOfAddOutcome(startDate, endDate, outcomeType, outcomeStatement);\r\n return employeeInfoDiv;\r\n }\r\n\r\n\r\n async function populateOutcomeTypesDropdown() {\r\n const {\r\n getOutcomeTypeDropDownResult: OutcomeType,\r\n } = await outcomesAjax.getOutcomeTypeDropDownAsync();\r\n let outcomeTypeData = OutcomeType.map((outcomeTypes) => ({\r\n id: outcomeTypes.Goal_Type_ID,\r\n value: outcomeTypes.Goal_Type_ID,\r\n text: outcomeTypes.goal_type_description\r\n }));\r\n outcomeTypeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"outcomeDropdown\", outcomeTypeData, outcomeType);\r\n\r\n const {\r\n getLocationDropDownResult: locationDrop,\r\n } = await outcomesAjax.getLocationDropDownAsync();\r\n let locationData = locationDrop.map((locationDrops) => ({\r\n id: locationDrops.locationID,\r\n value: locationDrops.locationID,\r\n text: locationDrops.locationDescription\r\n }));\r\n locationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"locationDropdown\", locationData, location);\r\n }\r\n\r\n function eventListeners() {\r\n outcomeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n outcomeType = selectedOption.value;\r\n outcomeTypeName = selectedOption.innerHTML;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n location = selectedOption.value;\r\n });\r\n\r\n outcomeStatementInput.addEventListener('input', event => {\r\n outcomeStatement = event.target.value.trim();\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n dateStart.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n dateEnd.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n }\r\n\r\n\r\n function checkRequiredFieldsOfAddOutcome() {\r\n var startDateVal = dateStart.querySelector('#dateStart');\r\n var endDateVal = dateEnd.querySelector('#dateEnd');\r\n var outcomeStatementVal = outcomeStatementInput.querySelector('#outcomeStatementInput');\r\n var outComeVal = outcomeDropdown.querySelector('#outcomeDropdown');\r\n\r\n requiredFieldsOfAddOutcome(startDateVal.value, endDateVal.value, outComeVal.value, outcomeStatementVal.value)\r\n }\r\n\r\n function requiredFieldsOfAddOutcome(startDateVal, endDateVal, outComeVal, outcomeStatementVal) {\r\n if (startDateVal === '') {\r\n dateStart.classList.add('error');\r\n } else {\r\n dateStart.classList.remove('error');\r\n }\r\n\r\n if (endDateVal != null && endDateVal != '' && startDateVal > endDateVal) {\r\n dateEnd.classList.add('error');\r\n }\r\n else {\r\n dateEnd.classList.remove('error');\r\n }\r\n\r\n if (outComeVal === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n\r\n if (outcomeStatementVal.trim() === '') {\r\n outcomeStatementInput.classList.add('error');\r\n } else {\r\n outcomeStatementInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatusOfAddOutcome();\r\n }\r\n\r\n function setBtnStatusOfAddOutcome() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length > 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUpdateOutcomes() {\r\n const result = await outcomesAjax.insertOutcomeInfoAsync(startDate, endDate, outcomeType, UTIL.removeUnsavableNoteText(outcomeStatement), $.session.UserId, goalId, selectedConsumerId, location);\r\n const { insertOutcomeInfoResult } = result;\r\n if (insertOutcomeInfoResult[0].goal_id != '0') {\r\n addEditOutcomeServices.init(selectedConsumers)\r\n }\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewOutcomes,\r\n };\r\n})(); \r\n","const addServicesForm = (() => {\r\n //Inputs\r\n var selectedConsumers;\r\n var selectedConsumerId;\r\n let startDate;\r\n let endDate;\r\n let outcomeType;\r\n let outcomeTypeName;\r\n let servicesStatement;\r\n let ServiceType;\r\n let ServiceTypeName;\r\n let method;\r\n let success;\r\n let frequencyModifier;\r\n let frequency;\r\n let frequencyPeriod;\r\n let objectiveId;\r\n let BtnName;\r\n let outcomeGoalId;\r\n let duration;\r\n let location;\r\n let SAVE_BTN; \r\n\r\n async function init(selectedConsume, ObjectiveID , goalId) {\r\n selectedConsumers = selectedConsume;\r\n objectiveId = ObjectiveID;\r\n outcomeGoalId = goalId > 0 ? goalId : '';\r\n await buildNewServicesForm();\r\n SAVE_BTN.classList.add('disabled'); \r\n }\r\n\r\n // Build New Outcomes Page \r\n async function buildNewServicesForm() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n selectedConsumerId = selectedConsumers.id;\r\n const importantOutcomeForm = await buildServicesForm();\r\n landingPage.appendChild(importantOutcomeForm);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n async function buildServicesForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n if (objectiveId > 0) {\r\n const result = await outcomesAjax.getObjectiveEntriesByIdAsync(objectiveId);\r\n const { getObjectiveEntriesByIdResult } = result;\r\n\r\n startDate = getObjectiveEntriesByIdResult[0].serviceStartDate == '' ? '' : moment(getObjectiveEntriesByIdResult[0].serviceStartDate).format('YYYY-MM-DD');\r\n endDate = getObjectiveEntriesByIdResult[0].serviceEndDate == '' ? '' : moment(getObjectiveEntriesByIdResult[0].serviceEndDate).format('YYYY-MM-DD');\r\n outcomeType = getObjectiveEntriesByIdResult[0].goal_id;\r\n servicesStatement = getObjectiveEntriesByIdResult[0].serviceStatement;\r\n ServiceType = getObjectiveEntriesByIdResult[0].objective_type;\r\n method = getObjectiveEntriesByIdResult[0].objective_method;\r\n success = getObjectiveEntriesByIdResult[0].success_determination;\r\n frequencyModifier = getObjectiveEntriesByIdResult[0].frequency_modifier;\r\n frequency = getObjectiveEntriesByIdResult[0].frequency_occurance;\r\n frequencyPeriod = getObjectiveEntriesByIdResult[0].frequency_peroid;\r\n duration = getObjectiveEntriesByIdResult[0].duration;\r\n location = getObjectiveEntriesByIdResult[0].location;\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n const result = await outcomesAjax.getGoalEntriesByIdAsync(outcomeGoalId);\r\n const { getGoalEntriesByIdResult } = result;\r\n\r\n startDate = UTIL.getTodaysDate();\r\n endDate = '';\r\n outcomeType = outcomeGoalId; \r\n servicesStatement = '';\r\n ServiceType = '';\r\n method = '';\r\n success = '';\r\n frequencyModifier = '';\r\n frequency = '';\r\n frequencyPeriod = '';\r\n duration = '';\r\n location = getGoalEntriesByIdResult[0].location;\r\n BtnName = 'SAVE';\r\n }\r\n\r\n outcomeDropdown = dropdown.build({\r\n id: 'outcomeDropdown',\r\n label: \"Outcome\",\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcomeType,\r\n });\r\n\r\n ServiceTypeDropdown = dropdown.build({\r\n id: 'ServiceTypeDropdown',\r\n label: \"Service Type\",\r\n dropdownId: \"ServiceTypeDropdown\",\r\n value: ServiceType,\r\n });\r\n\r\n servicesStatementInput = input.build({\r\n id: 'servicesStatementInput',\r\n type: 'textarea',\r\n label: 'Service Statement',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: servicesStatement,\r\n });\r\n\r\n methodInput = input.build({\r\n id: 'methodInput',\r\n type: 'textarea',\r\n label: 'Method',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: method,\r\n });\r\n\r\n successInput = input.build({\r\n id: 'successInput',\r\n type: 'textarea',\r\n label: 'Success',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: success,\r\n });\r\n\r\n dateStart = input.build({\r\n id: 'dateStart',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n dateEnd = input.build({\r\n id: 'dateEnd',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n locationDropdown = dropdown.build({\r\n id: 'locationDropdown',\r\n label: \"Location\",\r\n dropdownId: \"locationDropdown\",\r\n value: location,\r\n });\r\n\r\n frequencyModifierDropdown = dropdown.build({\r\n id: 'frequencyModifierDropdown',\r\n label: \"Frequency Modifier\",\r\n dropdownId: \"frequencyModifierDropdown\",\r\n value: frequencyModifier,\r\n });\r\n\r\n frequencyInput = input.build({\r\n id: 'frequencyInput',\r\n type: 'number',\r\n label: 'Frequency',\r\n style: 'secondary',\r\n value: frequency,\r\n attributes: [ \r\n { key: 'min', value: '0' }, \r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n frequencyPeriodDropdown = dropdown.build({\r\n id: 'frequencyPeriodDropdown',\r\n label: \"Frequency Period\",\r\n dropdownId: \"frequencyPeriodDropdown\",\r\n value: frequencyPeriod,\r\n });\r\n\r\n durationInput = input.build({\r\n id: 'durationInput',\r\n type: 'text',\r\n label: 'Duration',\r\n style: 'secondary',\r\n value: duration, \r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateOutcomesService();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { addEditOutcomeServices.init(selectedConsumers) },\r\n });\r\n var LineBr = document.createElement('br');\r\n const column1 = document.createElement('div');\r\n column1.classList.add('col-1');\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Outcome
    `;\r\n addNewCard.appendChild(addNewCardBody);\r\n column1.appendChild(addNewCard);\r\n\r\n const addNewServiceCard = document.createElement(\"div\");\r\n addNewServiceCard.classList.add(\"card\"); \r\n const addNewServiceCardBody = document.createElement(\"div\");\r\n addNewServiceCardBody.classList.add(\"card__body\");\r\n addNewServiceCard.innerHTML = `
    Service
    `;\r\n addNewServiceCard.appendChild(addNewServiceCardBody)\r\n column1.appendChild(addNewServiceCard)\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Frequency'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n\r\n addNewCardBody.appendChild(outcomeDropdown);\r\n\r\n addNewServiceCardBody.appendChild(ServiceTypeDropdown);\r\n addNewServiceCardBody.appendChild(servicesStatementInput);\r\n addNewServiceCardBody.appendChild(methodInput);\r\n addNewServiceCardBody.appendChild(successInput);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('addOutcomedateWrap');\r\n dateWrap.appendChild(dateStart);\r\n dateEnd.style.marginLeft = '2%';\r\n dateWrap.appendChild(dateEnd);\r\n locationDropdown.style.marginLeft = '2%';\r\n dateWrap.appendChild(locationDropdown);\r\n addNewServiceCardBody.appendChild(dateWrap);\r\n\r\n addNewServiceCardBody.appendChild(consumerNameDisplay);\r\n addNewServiceCardBody.appendChild(LineBr);\r\n addNewServiceCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('frequencyDTWrap');\r\n frequencyModifierDropdown.classList.add('width30Per');\r\n infoWrap.appendChild(frequencyModifierDropdown);\r\n frequencyInput.classList.add('width32Per');\r\n infoWrap.appendChild(frequencyInput);\r\n frequencyPeriodDropdown.classList.add('width32Per');\r\n infoWrap.appendChild(frequencyPeriodDropdown);\r\n addNewServiceCardBody.appendChild(infoWrap);\r\n\r\n var durationWrap = document.createElement('div');\r\n durationWrap.classList.add('frequencyDTWrap');\r\n durationInput.classList.add('width32Per');\r\n durationWrap.appendChild(durationInput);\r\n addNewServiceCardBody.appendChild(durationWrap); \r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('addOutcomeBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewServiceCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateOutcomeDropdown();\r\n eventListeners();\r\n populatefrequencyModifierDropdown();\r\n RequiredFieldsOfAddServiceForm(outcomeType, servicesStatement, startDate, endDate);\r\n return employeeInfoDiv;\r\n } \r\n\r\n async function populatefrequencyModifierDropdown() {\r\n const {\r\n getServiceFrequencyTypeDropDownResult: ServiceFrequency,\r\n } = await outcomesAjax.getServiceFrequencyTypeDropDownAsync('frequency');\r\n let ServiceFrequencyData = ServiceFrequency.map((serviceFrequency) => ({\r\n id: serviceFrequency.serviceFrequencyType_id,\r\n value: serviceFrequency.serviceFrequencyType_id,\r\n text: serviceFrequency.serviceFrequencyType_name\r\n }));\r\n ServiceFrequencyData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"frequencyModifierDropdown\", ServiceFrequencyData, frequencyModifier);\r\n }\r\n\r\n async function populateOutcomeDropdown() {\r\n const {\r\n getOutcomeServiceDropDownResult: OutcomeType,\r\n } = await outcomesAjax.getOutcomeServiceDropDownAsync();\r\n\r\n let outcomeTypeData = OutcomeType.map(outcomeTypes => ({\r\n id: outcomeTypes.goal_id,\r\n value: outcomeTypes.goal_id,\r\n text: outcomeTypes.goal_serviceStatement,\r\n })).sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n\r\n outcomeTypeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('outcomeDropdown', outcomeTypeData, outcomeType);\r\n\r\n const { getServiceFrequencyTypeDropDownResult: ServiceFrequencyType } =\r\n await outcomesAjax.getServiceFrequencyTypeDropDownAsync('service');\r\n\r\n let ServiceFrequencyData = ServiceFrequencyType.map(serviceFrequencyType => ({\r\n id: serviceFrequencyType.serviceFrequencyType_id,\r\n value: serviceFrequencyType.serviceFrequencyType_id,\r\n text: serviceFrequencyType.serviceFrequencyType_name,\r\n })).sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n ServiceFrequencyData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('ServiceTypeDropdown', ServiceFrequencyData, ServiceType);\r\n\r\n const frequencyPeriodDropdownData = [\r\n { id: 'H', value: 'H', text: 'per Hour' },\r\n { id: 'D', value: 'D', text: 'per Day' },\r\n { id: 'W', value: 'W', text: 'per Week' },\r\n { id: 'M', value: 'M', text: 'per Month' },\r\n { id: 'Y', value: 'Y', text: 'per Year' },\r\n ];\r\n frequencyPeriodDropdownData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('frequencyPeriodDropdown', frequencyPeriodDropdownData, frequencyPeriod);\r\n\r\n const { getLocationDropDownResult: locationDrop } = await outcomesAjax.getLocationDropDownAsync();\r\n\r\n let locationData = locationDrop\r\n .map(locationDrops => ({\r\n id: locationDrops.locationID,\r\n value: locationDrops.locationID,\r\n text: locationDrops.locationDescription,\r\n }))\r\n .sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n locationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"locationDropdown\", locationData, location); \r\n }\r\n\r\n function eventListeners() {\r\n outcomeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n outcomeType = selectedOption.value;\r\n outcomeTypeName = selectedOption.innerHTML;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n ServiceTypeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n ServiceType = selectedOption.value;\r\n ServiceTypeName = selectedOption.innerHTML; \r\n getRequiredFieldsOfAddServiceForm(); \r\n });\r\n\r\n servicesStatementInput.addEventListener('input', event => {\r\n servicesStatement = event.target.value.trim(); \r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n methodInput.addEventListener('input', event => {\r\n method = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n successInput.addEventListener('input', event => {\r\n success = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyInput.addEventListener('input', event => {\r\n frequency = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n dateStart.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n dateEnd.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyModifierDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n frequencyModifier = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyPeriodDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n frequencyPeriod = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n durationInput.addEventListener('input', event => {\r\n duration = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n location = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n }\r\n\r\n\r\n function getRequiredFieldsOfAddServiceForm() {\r\n var startDateVal = dateStart.querySelector('#dateStart');\r\n var endDateVal = dateEnd.querySelector('#dateEnd');\r\n var servicesStatementVal = servicesStatementInput.querySelector('#servicesStatementInput');\r\n var outComeVal = outcomeDropdown.querySelector('#outcomeDropdown');\r\n RequiredFieldsOfAddServiceForm(outComeVal.value, servicesStatementVal.value, startDateVal.value, endDateVal.value);\r\n }\r\n\r\n function RequiredFieldsOfAddServiceForm(outComeVal, servicesStatementVal, startDateVal, endDateVal) {\r\n if (outComeVal === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n \r\n if (servicesStatementVal.trim() === '') { \r\n servicesStatementInput.classList.add('error');\r\n } else {\r\n servicesStatementInput.classList.remove('error');\r\n }\r\n\r\n if (endDateVal != null && endDateVal != '' && startDateVal > endDateVal) {\r\n dateEnd.classList.add('error');\r\n }\r\n else {\r\n dateEnd.classList.remove('error');\r\n }\r\n setBtnStatusOfAddOutcome();\r\n }\r\n\r\n function setBtnStatusOfAddOutcome() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length > 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUpdateOutcomesService() {\r\n const result = await outcomesAjax.insertOutcomeServiceInfoAsync(startDate, endDate, outcomeType, UTIL.removeUnsavableNoteText(servicesStatement), ServiceType, UTIL.removeUnsavableNoteText(method), UTIL.removeUnsavableNoteText(success), frequencyModifier, frequency, frequencyPeriod, $.session.UserId, objectiveId, selectedConsumerId, location, duration);\r\n const { insertOutcomeServiceInfoResult } = result;\r\n if (insertOutcomeServiceInfoResult[0].objective_Id != '0') {\r\n addEditOutcomeServices.init(selectedConsumers)\r\n } \r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewServicesForm,\r\n };\r\n})(); \r\n","var outcomes = (function () {\r\n var OUTCOMES_SECTION;\r\n\r\n // Filter DOM\r\n var filterPopup;\r\n var filterButton;\r\n var dateInput;\r\n var serviceDropdown;\r\n var outcomeDropdown;\r\n var applyButton;\r\n //const currentFilterDisplay = document.createElement(\"div\");\r\n // Filter Values\r\n var currDate;\r\n var currService;\r\n var currOutcome;\r\n var currOutcomeId;\r\n // Data\r\n //----------------------------\r\n var selectedConsumerObj;\r\n var selectedConsumerId;\r\n let selectedConsume;\r\n // front card data\r\n var outcomesDataObj;\r\n var outcomesPrompts;\r\n var outcomesLocations;\r\n // back card dom (popup)\r\n var detailsPopup;\r\n var primaryLocationDropdown;\r\n var secondaryLocationDropdown;\r\n var resultsDropdown;\r\n var promptsDropdown;\r\n var attemptsDropdown;\r\n var cIDropdown;\r\n var timeInputs;\r\n var saveBtn;\r\n var deleteBtn;\r\n var noteInput;\r\n var enteredByUser;\r\n var edit__lastEditedByDetails;\r\n // back card data\r\n var ciData;\r\n var successObj;\r\n var successType;\r\n var successDetails;\r\n var currResult = '';\r\n var currReason = '';\r\n var currAttempts = '';\r\n var currPrompt = '';\r\n var currCI = '';\r\n var currNote = '';\r\n var currStartTime = '';\r\n var currEndTime = '';\r\n var defaultObjLocationId;\r\n var defaultGoalLocationId;\r\n // save/update data\r\n var personId;\r\n var objectiveId;\r\n var activityId;\r\n var objdate;\r\n var success;\r\n var goalnote;\r\n var promptType;\r\n var promptNumber;\r\n var locationId;\r\n var locationSecondaryId;\r\n var goalStartTime;\r\n var goalEndTime;\r\n var goalCILevel;\r\n // other\r\n var dateSpanMessage;\r\n var daysBack;\r\n var daysBackDate;\r\n var useConsumerLocation;\r\n var defaultPrimaryLocation;\r\n var currentSection;\r\n var todaysDateToDisplay;\r\n var firstDayOfWeek;\r\n var lastDayOfWeek;\r\n var firstDayOfMonth;\r\n var lastDayOfMonth;\r\n var yearOfCurrentDay;\r\n var dailyAbsent = false;\r\n var consumerName;\r\n const todaysDate = UTIL.getTodaysDate();\r\n let initLoad;\r\n\r\n let btnWrap;\r\n let serviceBtnWrap;\r\n let outcomeTypeBtnWrap;\r\n var tmpService;\r\n var tmpOutcome;\r\n var tmpOutcomeId;\r\n let editOutcomeBtn;\r\n\r\n // Workers\r\n //------------------------------------\r\n function disableNewOutcomeFields() {\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n //noteInput.classList.add('disabled');\r\n }\r\n function disableOutcomeFieldsOtherUser() {\r\n primaryLocationDropdown.classList.add('disabled');\r\n secondaryLocationDropdown.classList.add('disabled');\r\n resultsDropdown.classList.add('disabled');\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n // noteInput.classList.add('disabled');\r\n noteInput.querySelector('.input-field__input').setAttribute('readonly', 'true');\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n function clearBackCardValues() {\r\n //ciData = '';\r\n successObj = '';\r\n successType = '';\r\n successDetails = '';\r\n currReason = '';\r\n currAttempts = '';\r\n currPrompt = '';\r\n currCI = '';\r\n currNote = '';\r\n currStartTime = '';\r\n currEndTime = '';\r\n goalnote = '';\r\n promptType = null;\r\n promptNumber = null;\r\n locationId = null;\r\n locationSecondaryId = null;\r\n goalStartTime = null;\r\n goalEndTime = null;\r\n goalCILevel = null;\r\n }\r\n function sortOutcomes(results) {\r\n outcomesDataObj = {};\r\n\r\n results.forEach(res => {\r\n var occurrence = res.Objective_Recurrance ? res.Objective_Recurrance : 'NF';\r\n\r\n if (!outcomesDataObj[occurrence]) {\r\n outcomesDataObj[occurrence] = [];\r\n }\r\n\r\n res.nullHourDaySuccesses = res.nullHourDaySuccesses !== '' ? res.nullHourDaySuccesses.split(',') : [];\r\n res.weekSuccesses = res.weekSuccesses !== '' ? res.weekSuccesses.split(',') : [];\r\n res.monthSuccesses = res.monthSuccesses !== '' ? res.monthSuccesses.split(',') : [];\r\n res.yearSuccesses = res.yearSuccesses !== '' ? res.yearSuccesses.split(',') : [];\r\n\r\n outcomesDataObj[occurrence].push(res);\r\n });\r\n }\r\n function sortOutcomeLocations(results) {\r\n outcomesLocations = {};\r\n\r\n results.forEach(res => {\r\n if (!outcomesLocations[res.type]) {\r\n outcomesLocations[res.type] = [];\r\n }\r\n\r\n outcomesLocations[res.type].push(res);\r\n });\r\n outcomesLocations['Primary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (outcomesLocations.Secondary) {\r\n outcomesLocations['Secondary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n }\r\n function sortSuccessTypes(results) {\r\n unOrderedSuccessObj = {};\r\n successObj = {};\r\n\r\n results.forEach(st => {\r\n var label = st.Objective_Success_Description;\r\n if (!unOrderedSuccessObj[label]) {\r\n unOrderedSuccessObj[label] = st;\r\n }\r\n });\r\n\r\n Object.keys(unOrderedSuccessObj)\r\n .sort()\r\n .forEach(key => {\r\n successObj[key] = unOrderedSuccessObj[key];\r\n });\r\n }\r\n function getObjectiveActivities(outcome) {\r\n var objectiveRecurrance = outcome.Objective_Recurrance;\r\n if (objectiveRecurrance === '') objectiveRecurrance = 'NF';\r\n var activities;\r\n\r\n switch (objectiveRecurrance) {\r\n case 'NF': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'H': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'D': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'W': {\r\n activities = outcome.weekSuccesses;\r\n break;\r\n }\r\n case 'M': {\r\n activities = outcome.monthSuccesses;\r\n break;\r\n }\r\n case 'Y': {\r\n activities = outcome.yearSuccesses;\r\n break;\r\n }\r\n }\r\n\r\n return activities;\r\n }\r\n // Save/Update/Delete\r\n //------------------------------------\r\n function initSaveData(outcome) {\r\n personId = selectedConsumerId;\r\n activityId = 0;\r\n objectiveId = outcome.Objective_id;\r\n objdate = currDate;\r\n }\r\n function saveNewOutcome() {\r\n getInputValues();\r\n goalnote = UTIL.removeUnsavableNoteText(goalnote); //fix note with bad text\r\n var newOutcomeData = {\r\n personId,\r\n objectiveId,\r\n activityId,\r\n objdate,\r\n success,\r\n goalnote: !goalnote ? '' : goalnote,\r\n promptType: !promptType ? '0' : promptType,\r\n promptNumber: !promptNumber ? '0' : promptNumber,\r\n locationId,\r\n locationSecondaryId: !locationSecondaryId ? 0 : locationSecondaryId,\r\n goalStartTime: !goalStartTime ? '' : goalStartTime,\r\n goalEndTime: !goalEndTime ? '' : goalEndTime,\r\n goalCILevel: !goalCILevel ? '' : goalCILevel,\r\n };\r\n var section = document.querySelector('.tabs__nav--item.active');\r\n currentSection = section.innerHTML;\r\n POPUP.hide(detailsPopup);\r\n successfulSave.show();\r\n outcomesAjax.saveGoals(newOutcomeData, function () {\r\n resetOutcomeSaveData();\r\n getConsumersWithRemainingGoals();\r\n locationSecondaryId = 0;\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n loadCardView(selectedConsumerObj);\r\n }, 1000);\r\n });\r\n }\r\n function resetOutcomeSaveData() {\r\n success = '';\r\n promptType = '0';\r\n promptNumber = 0;\r\n goalnote = '';\r\n goalStartTime = '';\r\n goalEndTime = '';\r\n goalCILevel = '';\r\n locationSecondaryId = 0;\r\n }\r\n function getInputValues() {\r\n var promptTypeInput = promptsDropdown.querySelector('.dropdown__select');\r\n var promptNumberInput = attemptsDropdown.querySelector('.dropdown__select');\r\n var goalnoteInput = noteInput.querySelector('.input-field__input');\r\n promptType = promptTypeInput[promptTypeInput.selectedIndex].value;\r\n promptNumber = promptNumberInput[promptNumberInput.selectedIndex].value;\r\n goalnote = goalnoteInput.value;\r\n }\r\n function deleteObjectiveActivity() {\r\n outcomesAjax.deleteGoal(activityId, selectedConsumerId, currDate, function () {\r\n POPUP.hide(detailsPopup);\r\n loadCardView(selectedConsumerObj);\r\n });\r\n }\r\n\r\n function updateCurrentFilterDisplay(service = 'All', outcomeType = 'All') {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet(service, outcomeType);\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (service === '%' || service === 'All') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n if (document.getElementById('serviceBtn') != null)\r\n document.getElementById('serviceBtn').innerHTML = 'Service: ' + service;\r\n }\r\n\r\n if (outcomeType === '%' || outcomeType === 'All') {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n btnWrap.removeChild(outcomeTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n if (document.getElementById('outcomeTypeBtn') != null)\r\n document.getElementById('outcomeTypeBtn').innerHTML = 'Outcome Type: ' + outcomeType;\r\n }\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet(service = 'All', outcomeType = 'All') {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + service,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('serviceBtn');\r\n },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('serviceBtn');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type: ' + outcomeType,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n outcomeTypeBtnWrap = document.createElement('div');\r\n outcomeTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeBtn);\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'serviceBtn') {\r\n tmpService = 'All';\r\n }\r\n if (closeFilter == 'outcomeTypeBtn') {\r\n tmpOutcome = 'All';\r\n tmpOutcomeId = '%';\r\n }\r\n applyOutComeFilter();\r\n }\r\n\r\n // Required Fields\r\n //------------------------------------\r\n function checkRequiredFields() {\r\n var showAttempts = successDetails.Show_Attempts;\r\n var showPrompts = successDetails.Show_Prompts;\r\n var showTime = successDetails.Show_Time;\r\n var showCI = successDetails.Show_Community_Integration;\r\n\r\n var attemptsRequired = successDetails.Attempts_Required;\r\n var promptsRequired = successDetails.Prompt_Required;\r\n var timeRequired = successDetails.Times_Required;\r\n var ciRequired = successDetails.Community_Integration_Required;\r\n var noteRequired = successDetails.Notes_Required;\r\n\r\n var errorFree = true;\r\n\r\n // attempts\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n attemptsDropdown.classList.remove('disabled');\r\n if (attemptsRequired === 'Y') {\r\n if (!currAttempts || currAttempts === '') {\r\n attemptsDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n attemptsDropdown.classList.add('disabled');\r\n }\r\n // prompts\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n promptsDropdown.classList.remove('disabled');\r\n if (promptsRequired === 'Y') {\r\n if (!currPrompt || currPrompt === '') {\r\n promptsDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n promptsDropdown.classList.add('disabled');\r\n }\r\n // community integration\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n cIDropdown.classList.remove('disabled');\r\n if (ciRequired === 'Y') {\r\n if (!currCI || currCI === '') {\r\n cIDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n cIDropdown.classList.add('disabled');\r\n }\r\n // start and end time\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('disabled');\r\n timeInputs.end.classList.remove('disabled');\r\n if (timeRequired === 'Y') {\r\n if (currStartTime === '') {\r\n timeInputs.start.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n }\r\n if (currEndTime === '') {\r\n timeInputs.end.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n }\r\n // note\r\n if (noteRequired === 'Y') {\r\n if (!currNote || currNote === '') {\r\n noteInput.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n\r\n if (showTime === 'Y') validateStartEndTimes();\r\n\r\n checkErrors();\r\n // if (errorFree) {\r\n // \tsaveBtn.classList.remove('disabled');\r\n // } else {\r\n // \tsaveBtn.classList.add('disabled');\r\n // }\r\n }\r\n function validateStartEndTimes() {\r\n var timeRequired = successDetails.Times_Required;\r\n var startInput = timeInputs.start.querySelector('input');\r\n var endInput = timeInputs.end.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n\r\n if (timeRequired === 'N' && startTime === '' && endTime === '') return;\r\n\r\n if (endTime === '00:00') {\r\n timeInputs.end.classList.add('error'); //error on 12am end time\r\n }\r\n\r\n if (timeRequired === 'N') {\r\n if (startTime === '' && endTime !== '') {\r\n timeInputs.start.classList.add('error');\r\n }\r\n if (endTime === '' && startTime !== '') {\r\n timeInputs.end.classList.add('error');\r\n }\r\n }\r\n // if ((startTime === \"\" && timeRequired === \"N\") && endTime !== \"\") {\r\n // timeInputs.start.classList.add(\"error\")\r\n // } else timeInputs.start.classList.remove(\"error\")\r\n // if ((endTime === \"\" && timeRequired === \"N\") && startTime !== \"\") {\r\n // timeInputs.end.classList.add(\"error\")\r\n // }\r\n if (startTime >= endTime) {\r\n timeInputs.end.classList.add('error');\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n if (startTime <= endTime && startTime !== '') {\r\n timeInputs.start.classList.remove('error');\r\n } else {\r\n timeInputs.start.classList.add('error');\r\n }\r\n }\r\n\r\n function checkShowFields() {\r\n var showAttempts = successObj[Object.keys(successObj)[0]].Show_Attempts;\r\n var showPrompts = successObj[Object.keys(successObj)[0]].Show_Prompts;\r\n var showTime = successObj[Object.keys(successObj)[0]].Show_Time;\r\n var showCI = successObj[Object.keys(successObj)[0]].Show_Community_Integration;\r\n\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n }\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n }\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('hidden');\r\n timeInputs.end.classList.remove('hidden');\r\n } else {\r\n timeInputs.start.classList.add('hidden');\r\n timeInputs.end.classList.add('hidden');\r\n }\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n }\r\n }\r\n\r\n function checkErrors() {\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'rosterDone': {\r\n roster.selectedConsumersToEnabledList();\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n loadLandingPage();\r\n roster.clearActiveConsumers();\r\n break;\r\n }\r\n case 'rosterCancel': {\r\n var outcomeModuleBtn = document.getElementById('goalssettingsbutton');\r\n var dashButton = document.getElementById('singlebutton');\r\n outcomeModuleBtn.classList.remove('active');\r\n dashButton.classList.add('active');\r\n unloadApp($.loadedApp);\r\n setActiveModuleAttribute('home');\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.removeAttribute('data-active-section');\r\n dashboard.load();\r\n break;\r\n }\r\n case 'miniRosterDone': {\r\n initLoad = false;\r\n var activeConsumers = roster2.getActiveConsumers();\r\n if (activeConsumers.length > 0) {\r\n activeConsumers.forEach(consumer => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n selectedConsumerObj = activeConsumers[activeConsumers.length - 1];\r\n consumerName = activeConsumers[activeConsumers.length - 1].card.innerText;\r\n selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n afterSelectionRoster();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n if (initLoad) {\r\n loadApp('home');\r\n } else DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function backToOutcomeLoad(consumerObj) {\r\n selectedConsumerObj = consumerObj;\r\n consumerName = consumerObj.card.innerText;\r\n selectedConsumerId = consumerObj.id;\r\n afterSelectionRoster();\r\n }\r\n\r\n function afterSelectionRoster() {\r\n DOM.toggleNavLayout();\r\n PROGRESS.SPINNER.show(`Loading Outcomes For ${consumerName}`);\r\n resetFilter();\r\n updateCurrentFilterDisplay();\r\n outcomesAjax.getOutcomesPrompts(function (results) {\r\n outcomesPrompts = results;\r\n outcomesAjax.getGoalsCommunityIntegrationLevelDropdown(function (ciResults) {\r\n ciData = ciResults;\r\n outcomesAjax.getDaysBackForEditingGoalsAndUseConsumerLocation(selectedConsumerId, function (results) {\r\n daysBack = results[0].setting_value;\r\n daysBackDate = convertDaysBack(daysBack);\r\n useConsumerLocation = results[0].outcomes_use_consumer_location;\r\n defaultPrimaryLocation = results[0].consumer_location;\r\n loadCardView(selectedConsumerObj);\r\n });\r\n });\r\n });\r\n }\r\n //Set up spans to display\r\n function setUpOutcomesTabSpans() {\r\n //Create date to use for calculations\r\n var dateForCalculations = new Date(UTIL.formatDateFromIso(currDate));\r\n var day = dateForCalculations.getDay() + 1;\r\n //Single date\r\n todaysDateToDisplay = UTIL.formatDateFromIso(currDate);\r\n //week the date is in\r\n //first day\r\n firstDayOfWeek = new Date(\r\n dateForCalculations.getFullYear(),\r\n dateForCalculations.getMonth(),\r\n dateForCalculations.getDate() + (day == 0 ? -7 : 1) - day,\r\n );\r\n firstDayOfWeek = UTIL.getFormattedDateFromDate(firstDayOfWeek);\r\n //lastDayOfWeek\r\n lastDayOfWeek = new Date(\r\n dateForCalculations.getFullYear(),\r\n dateForCalculations.getMonth(),\r\n dateForCalculations.getDate() + (day == 0 ? 0 : 7) - day,\r\n );\r\n lastDayOfWeek = UTIL.getFormattedDateFromDate(lastDayOfWeek);\r\n //first day of month\r\n firstDayOfMonth = new Date(dateForCalculations.getFullYear(), dateForCalculations.getMonth(), 1);\r\n firstDayOfMonth = UTIL.getFormattedDateFromDate(firstDayOfMonth);\r\n //last day of month\r\n lastDayOfMonth = new Date(dateForCalculations.getFullYear(), dateForCalculations.getMonth() + 1, 0);\r\n lastDayOfMonth = UTIL.getFormattedDateFromDate(lastDayOfMonth);\r\n //year of current day\r\n yearOfCurrentDay = dateForCalculations.getFullYear();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function getOutcomeCompletion(outcome) {\r\n var recurrance = outcome.Objective_Recurrance;\r\n var occurance = outcome.Frequency_Occurance;\r\n var freqModifier = outcome.Frequency_Modifier;\r\n var successArray;\r\n var isComplete;\r\n\r\n if (recurrance === 'NF' || recurrance === 'H' || recurrance === 'D') {\r\n successArray = outcome.nullHourDaySuccesses;\r\n }\r\n if (recurrance === 'W') successArray = outcome.weekSuccesses;\r\n if (recurrance === 'M') successArray = outcome.monthSuccesses;\r\n if (recurrance === 'Y') successArray = outcome.yearSuccesses;\r\n\r\n switch (freqModifier) {\r\n case 'OBJFMEX':\r\n if (successArray && successArray.length >= occurance) {\r\n isComplete = true;\r\n } else {\r\n isComplete = false;\r\n }\r\n break;\r\n case 'OBJFMAL':\r\n if (successArray && successArray.length >= occurance) {\r\n isComplete = true;\r\n } else {\r\n isComplete = false;\r\n }\r\n break;\r\n case 'OBJFMAN':\r\n isComplete = true;\r\n break;\r\n case 'OBJFMAR':\r\n isComplete = true;\r\n break;\r\n case 'OBJFMNM':\r\n isComplete = true;\r\n break;\r\n case '':\r\n isComplete = true;\r\n break;\r\n default:\r\n isComplete = false;\r\n break;\r\n }\r\n\r\n return isComplete ? 'Complete' : 'Incomplete';\r\n }\r\n function filterOutcomes(filterByData) {\r\n var service = filterByData.currService;\r\n var outcomeId = filterByData.currOutcomeId;\r\n var filteredOutcomesDataObj = {};\r\n\r\n function filterObject() {\r\n var freqKeys = Object.keys(outcomesDataObj);\r\n\r\n freqKeys.forEach(key => {\r\n var data = outcomesDataObj[key].filter(od => {\r\n var completion = getOutcomeCompletion(od);\r\n\r\n switch (service) {\r\n case 'All':\r\n if (currOutcomeId === '%') return true;\r\n return od.Goal_Type_ID === outcomeId;\r\n case 'Incomplete':\r\n case 'Complete':\r\n if (currOutcomeId !== '%') return od.Goal_Type_ID === outcomeId && completion === service;\r\n return completion === service;\r\n default:\r\n break;\r\n }\r\n\r\n // if (currService === 'All' && currOutcomeId === '%') return true;\r\n // if (service && outcomeId) return od.Goal_Type_ID === outcomeId && completion === service;\r\n // if (service && !outcomeId) return completion === service;\r\n // if (!service && outcomeId) return od.Goal_Type_ID === outcomeId;\r\n });\r\n filteredOutcomesDataObj[key] = data;\r\n });\r\n }\r\n\r\n if (filterByData.tmpDate) {\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, function (results) {\r\n sortOutcomes(results);\r\n filterObject();\r\n });\r\n } else {\r\n filterObject();\r\n }\r\n\r\n populateOutcomes(filteredOutcomesDataObj);\r\n }\r\n function setupFilterEvents() {\r\n serviceDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpService = selectedOption.value;\r\n });\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpOutcomeId = selectedOption.value;\r\n tmpOutcome = selectedOption.innerHTML;\r\n });\r\n applyButton.addEventListener('click', () => {\r\n applyOutComeFilter();\r\n POPUP.hide(filterPopup);\r\n });\r\n }\r\n\r\n function applyOutComeFilter() {\r\n if (tmpService) {\r\n currService = tmpService;\r\n } else {\r\n currService = currService ? currService : 'All';\r\n }\r\n if (tmpOutcome) {\r\n currOutcome = tmpOutcome;\r\n currOutcomeId = tmpOutcomeId;\r\n } else if (!currOutcomeId) {\r\n currOutcome = 'All';\r\n currOutcomeId = '%';\r\n }\r\n\r\n if (tmpService || tmpOutcome) {\r\n filterOutcomes({ currService, currOutcomeId });\r\n }\r\n\r\n let outcomeDd = document.getElementById('outcomeDropdown');\r\n let outcomeTypeText = outcomeDd == null ? currOutcome : outcomeDd.options[outcomeDd.selectedIndex].innerHTML;\r\n updateCurrentFilterDisplay(currService ? currService : 'All', outcomeTypeText);\r\n\r\n setUpOutcomesTabSpans();\r\n }\r\n function populateServiceDropdown() {\r\n var data = [\r\n { value: 'All', text: 'All' },\r\n { value: 'Complete', text: 'Complete' },\r\n { value: 'Incomplete', text: 'Incomplete' },\r\n ];\r\n if (currService === undefined) {\r\n currService = 'All';\r\n } else {\r\n currService = currService;\r\n }\r\n dropdown.populate(serviceDropdown, data, currService);\r\n }\r\n function populateOutcomeTypesDropdown(results) {\r\n // Goal_Type_ID: \"114\"\r\n // goal_type_description: \"Actions\"\r\n var data = results.map(res => {\r\n return {\r\n value: res.Goal_Type_ID,\r\n text: res.goal_type_description,\r\n };\r\n });\r\n if (currOutcomeId === undefined) {\r\n currOutcomeId = '%';\r\n currOutcome = 'All';\r\n } else {\r\n currOutcomeId = currOutcomeId;\r\n currOutcome = currOutcome;\r\n }\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(outcomeDropdown, data, currOutcomeId);\r\n }\r\n function populateDropdowns() {\r\n populateServiceDropdown();\r\n outcomesAjax.getOutcomeTypeForFilter(\r\n {\r\n consumerId: selectedConsumerId,\r\n selectedDate: currDate,\r\n token: $.session.Token,\r\n },\r\n populateOutcomeTypesDropdown,\r\n );\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n serviceDropdown = dropdown.build({\r\n label: 'Service',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n outcomeDropdown = dropdown.build({\r\n dropdownId: 'outcomeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyButton = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n applyButton.classList.add('singleBtn');\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn') filterPopup.appendChild(serviceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(outcomeDropdown);\r\n filterPopup.appendChild(applyButton);\r\n\r\n populateDropdowns();\r\n setupFilterEvents();\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n function resetFilter() {\r\n currService = null;\r\n currOutcomeId = null;\r\n }\r\n\r\n // DATE INPUT\r\n //------------------------------------\r\n function buildFuckingDateInput() {\r\n var dateinput = input.build({\r\n id: 'outcomeDatePicker',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: currDate,\r\n classNames: ['dateInput'],\r\n attributes: [\r\n { key: 'min', value: daysBackDate },\r\n { key: 'max', value: UTIL.getTodaysDate() },\r\n ],\r\n });\r\n\r\n dateinput.addEventListener('change', event => {\r\n var currDateCache = currDate;\r\n currDate = event.target.value;\r\n var currDateCheck = new Date(currDate.split('-')[0], currDate.split('-')[1] - 1, currDate.split('-')[2]);\r\n var daysBackDateCheck = new Date(\r\n daysBackDate.split('-')[0],\r\n daysBackDate.split('-')[1] - 1,\r\n daysBackDate.split('-')[2],\r\n );\r\n if (currDateCheck < daysBackDateCheck || currDate === '' || currDateCheck > new Date()) {\r\n dateinput.classList.add('error');\r\n currDate = currDateCache;\r\n return;\r\n } else dateinput.classList.remove('error');\r\n currService = 'All';\r\n currOutcomeId = '%';\r\n currOutcome = 'All';\r\n roster2.updateSelectedDate(currDate);\r\n setUpOutcomesTabSpans(currDate);\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, loadOutcomesCards);\r\n getConsumersWithRemainingGoals();\r\n });\r\n dateinput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n return dateinput;\r\n }\r\n\r\n // Build Outcome Cards\r\n //------------------------------------\r\n function buildConsumerCard(clone, consumerId) {\r\n var card = document.createElement('div');\r\n card.classList.add('outcomes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n // card details (old back)\r\n function buildPrimaryLocationDropdown(locId) {\r\n var select = dropdown.build({\r\n label: 'Primary Location',\r\n style: 'secondary',\r\n });\r\n var data = outcomesLocations.Primary.map(pl => {\r\n return {\r\n value: pl.Location_ID,\r\n text: pl.description,\r\n };\r\n });\r\n\r\n if (locId) {\r\n dropdown.populate(select, data, locId);\r\n locationId = locId;\r\n } else {\r\n if (defaultObjLocationId !== '') {\r\n var defaultLocation = defaultObjLocationId;\r\n } else if (defaultGoalLocationId !== '') {\r\n var defaultLocation = defaultGoalLocationId;\r\n } else if (useConsumerLocation) {\r\n var defaultLocation = defaultPrimaryLocation;\r\n } else {\r\n var defaultLocation = '';\r\n }\r\n // var defaultLocation = useConsumerLocation ? defaultPrimaryLocation : '';\r\n dropdown.populate(select, data, defaultLocation);\r\n locationId = defaultLocation === '' ? data[0].value : defaultLocation;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n rePopSecondaryLocationDropdown(locationId);\r\n });\r\n\r\n return select;\r\n }\r\n function rePopSecondaryLocationDropdown(locId) {\r\n var filteredOutcomesLocations = { Primary: [], Secondary: [] };\r\n\r\n outcomesLocations.Secondary.forEach(sl => {\r\n if (sl.primaryLocId === locId) {\r\n let obj = {\r\n Location_ID: sl.Location_ID,\r\n description: sl.description,\r\n primaryLocId: sl.primaryLocId,\r\n };\r\n filteredOutcomesLocations['Secondary'].push(obj);\r\n }\r\n });\r\n\r\n var data = filteredOutcomesLocations.Secondary.map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n dropdown.populate(secondaryLocationDropdown, data);\r\n locationSecondaryId = data[0].value;\r\n }\r\n\r\n function buildSecondaryLocationDropdown(locId) {\r\n var select = dropdown.build({\r\n label: 'Secondary Location',\r\n style: 'secondary',\r\n });\r\n\r\n if (!outcomesLocations.Secondary || outcomesLocations.Secondary.legnth < 1) return select;\r\n\r\n var filteredOutcomesLocations = { Primary: [], Secondary: [] };\r\n\r\n outcomesLocations.Secondary.forEach(sl => {\r\n if (sl.primaryLocId === locationId) {\r\n let obj = {\r\n Location_ID: sl.Location_ID,\r\n description: sl.description,\r\n primaryLocId: sl.primaryLocId,\r\n };\r\n filteredOutcomesLocations['Secondary'].push(obj);\r\n }\r\n });\r\n\r\n var data = filteredOutcomesLocations.Secondary.map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n if (locId) {\r\n dropdown.populate(select, data, locId);\r\n locationSecondaryId = locId;\r\n } else {\r\n dropdown.populate(select, data);\r\n locationSecondaryId = data[0].value;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationSecondaryId = selectedOption.value;\r\n });\r\n\r\n return select;\r\n }\r\n function buildResultsDropdown(result) {\r\n var select = dropdown.build({\r\n label: 'Results',\r\n style: 'secondary',\r\n });\r\n\r\n var data = Object.values(successObj).map(r => {\r\n return {\r\n value: r.Objective_Success_Description,\r\n text: `${r.Objective_Success} ${r.Objective_Success_Description}`,\r\n attributes: [{ key: 'data-success', value: r.Objective_Success }],\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n currResult = data[0].value;\r\n\r\n if (result) {\r\n dropdown.populate(select, data, result);\r\n successType = result;\r\n successDetails = successObj[successType];\r\n success = successDetails.Objective_Success;\r\n } else {\r\n select.classList.add('error');\r\n dropdown.populate(select, data);\r\n successType = data[0].value;\r\n successDetails = successObj[successType];\r\n success = successType;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n successType = selectedOption.value;\r\n if (successType === '') {\r\n resultsDropdown.classList.add('error');\r\n } else resultsDropdown.classList.remove('error');\r\n successDetails = successObj[successType];\r\n success = selectedOption.dataset.success;\r\n checkErrors();\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildPromptsDropdown(code) {\r\n var select = dropdown.build({\r\n label: 'Prompts',\r\n style: 'secondary',\r\n });\r\n var data = outcomesPrompts.map(op => {\r\n return {\r\n value: op.Code,\r\n text: `${op.Code} ${op.Caption}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n if (code) {\r\n dropdown.populate(select, data, code);\r\n currPrompt = code;\r\n } else {\r\n dropdown.populate(select, data);\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n currPrompt = selectedOption.value;\r\n promptType = currPrompt;\r\n //promptNumber;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildAttemptsDropdown(attempt) {\r\n var select = dropdown.build({\r\n label: 'Attempts',\r\n style: 'secondary',\r\n });\r\n var data = [\r\n { value: '', text: '' },\r\n // { value: '', text: 'Ø' },\r\n // { value: '0', text: '0' },\r\n { value: '1', text: '1' },\r\n { value: '2', text: '2' },\r\n { value: '3', text: '3' },\r\n { value: '4', text: '4' },\r\n { value: '5', text: '5' },\r\n { value: '6', text: '6' },\r\n { value: '7', text: '7' },\r\n { value: '8', text: '8' },\r\n { value: '9', text: '9' },\r\n ];\r\n dropdown.populate(select, data, attempt);\r\n if (attempt) currAttempts = attempt;\r\n\r\n select.addEventListener('change', event => {\r\n currAttempts = event.target.value;\r\n promptNumber = currAttempts;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildCommunityIntegrationDropdown(ciLevel) {\r\n var select = dropdown.build({\r\n label: 'Community Integration',\r\n style: 'secondary',\r\n });\r\n var data = ciData.map(ci => {\r\n return {\r\n value: ci.code,\r\n text: `${ci.code} ${ci.captionname}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n if (ciLevel) {\r\n dropdown.populate(select, data, ciLevel);\r\n goalCILevel = ciLevel;\r\n currCI = ciLevel;\r\n } else {\r\n dropdown.populate(select, data);\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n goalCILevel = event.target.value;\r\n currCI = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildTimeInputs(startTime, endTime) {\r\n var start = input.build({\r\n label: 'Start Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: startTime,\r\n });\r\n var end = input.build({\r\n label: 'End Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: endTime,\r\n });\r\n\r\n if (startTime) {\r\n goalStartTime = startTime;\r\n currStartTime = startTime;\r\n }\r\n if (endTime) {\r\n goalEndTime = endTime;\r\n currEndTime = endTime;\r\n }\r\n\r\n start.addEventListener('change', event => {\r\n goalStartTime = event.target.value;\r\n currStartTime = startTime;\r\n checkRequiredFields();\r\n checkErrors();\r\n });\r\n end.addEventListener('change', event => {\r\n goalEndTime = event.target.value;\r\n currEndTime = endTime;\r\n checkRequiredFields();\r\n // if (validateStartEndTimes()) {\r\n // end.classList.remove('error')\r\n // } else end.classList.add('error')\r\n checkErrors();\r\n });\r\n\r\n return {\r\n start,\r\n end,\r\n };\r\n }\r\n function buildNoteInput(note) {\r\n var noteInput = input.build({\r\n label: 'Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n if (note) {\r\n currNote = note;\r\n goalnote = note;\r\n }\r\n\r\n if (note !== undefined && enteredByUser && enteredByUser.toUpperCase() !== $.session.UserId.toUpperCase()) {\r\n return noteInput;\r\n }\r\n noteInput.addEventListener('keyup', () => {\r\n currNote = event.target.value;\r\n goalnote = currNote;\r\n checkRequiredFields();\r\n });\r\n\r\n return noteInput;\r\n }\r\n function buildSaveButton(isEdit) {\r\n var text = isEdit ? 'Update' : 'Save';\r\n var btn = button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: saveNewOutcome,\r\n });\r\n\r\n return btn;\r\n }\r\n function buildDeleteButton() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n //callback: deleteObjectiveActivity,\r\n callback: deleteIncident,\r\n });\r\n\r\n return btn;\r\n }\r\n function deleteIncident() {\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup');\r\n popup.classList.add('warning');\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete this activity?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n deleteObjectiveActivity();\r\n // hide popup\r\n actioncenter.removeChild(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n // clear active consumers\r\n // roster.clearActiveConsumers();\r\n // re-get Users with remaining goals\r\n getConsumersWithRemainingGoals();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n // hide popup\r\n actioncenter.removeChild(popup);\r\n // overlay.hide()\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n // show overlay\r\n overlay.show();\r\n // show popup\r\n actioncenter.appendChild(popup);\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(popup);\r\n }\r\n function buildCardDetails(editData) {\r\n detailsPopup = POPUP.build({\r\n classNames: ['card', 'objectiveDetails'],\r\n });\r\n\r\n if (editData) {\r\n editData = editData[0];\r\n personId = selectedConsumerId;\r\n objectiveId = editData.Objective_ID;\r\n objdate = currDate;\r\n let lastEditedTime = editData.Last_Update.split(' ')[1];\r\n let lastEditHH = lastEditedTime.split(':')[0];\r\n let lastEditMM = UTIL.leadingZero(lastEditedTime.split(':')[1]);\r\n lastEditedTime = `${lastEditHH}:${lastEditMM} ${editData.Last_Update.split(' ')[2]}`;\r\n\r\n var lastEditedDate = editData.Last_Update.split(' ')[0];\r\n var lastEdited = `${lastEditedDate} ${lastEditedTime}`;\r\n\r\n primaryLocationDropdown = buildPrimaryLocationDropdown(editData.Location_ID);\r\n secondaryLocationDropdown = buildSecondaryLocationDropdown(editData.Locations_Secondary_ID);\r\n resultsDropdown = buildResultsDropdown(editData.objective_success_description);\r\n promptsDropdown = buildPromptsDropdown(editData.Prompt_Type);\r\n attemptsDropdown = buildAttemptsDropdown(editData.Prompt_Number);\r\n cIDropdown = buildCommunityIntegrationDropdown(editData.community_integration_level);\r\n timeInputs = buildTimeInputs(editData.start_time, editData.end_time);\r\n enteredByUser = editData.submitted_by_user_id;\r\n noteInput = buildNoteInput(editData.Objective_Activity_Note);\r\n saveBtn = buildSaveButton(true);\r\n deleteBtn = buildDeleteButton();\r\n edit__lastEditedByDetails = buildCardEnteredByDetails(enteredByUser, lastEdited);\r\n } else {\r\n primaryLocationDropdown = buildPrimaryLocationDropdown();\r\n secondaryLocationDropdown = buildSecondaryLocationDropdown();\r\n resultsDropdown = buildResultsDropdown();\r\n promptsDropdown = buildPromptsDropdown();\r\n attemptsDropdown = buildAttemptsDropdown();\r\n cIDropdown = buildCommunityIntegrationDropdown();\r\n timeInputs = buildTimeInputs();\r\n noteInput = buildNoteInput();\r\n saveBtn = buildSaveButton(false);\r\n deleteBtn = undefined;\r\n }\r\n\r\n checkShowFields();\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n if (deleteBtn) btnWrap.appendChild(deleteBtn);\r\n\r\n var timeWrap = document.createElement('div');\r\n timeWrap.appendChild(timeInputs.start);\r\n timeWrap.appendChild(timeInputs.end);\r\n\r\n detailsPopup.appendChild(primaryLocationDropdown);\r\n if (outcomesLocations.Secondary) detailsPopup.appendChild(secondaryLocationDropdown);\r\n detailsPopup.appendChild(resultsDropdown);\r\n detailsPopup.appendChild(promptsDropdown);\r\n detailsPopup.appendChild(attemptsDropdown);\r\n if ($.session.applicationName !== 'Gatekeeper') {\r\n detailsPopup.appendChild(cIDropdown);\r\n detailsPopup.appendChild(timeWrap);\r\n }\r\n detailsPopup.appendChild(noteInput);\r\n detailsPopup.appendChild(btnWrap);\r\n\r\n if (editData) checkRequiredFields();\r\n if (editData) detailsPopup.appendChild(edit__lastEditedByDetails);\r\n if (editData && enteredByUser && enteredByUser.toUpperCase() !== $.session.UserId.toUpperCase()) {\r\n disableOutcomeFieldsOtherUser();\r\n btnWrap.classList.add('hidden');\r\n }\r\n if (dailyAbsent) {\r\n // disableOutcomeFieldsOtherUser();\r\n }\r\n\r\n POPUP.show(detailsPopup);\r\n }\r\n // card overview (old front)\r\n function buildActivityTracker(outcome) {\r\n var activities = getObjectiveActivities(outcome);\r\n var activityCount;\r\n var activityLimit = outcome.Frequency_Occurance !== '' ? parseInt(outcome.Frequency_Occurance, 10) : 0;\r\n\r\n activities = activities.filter(o => {\r\n // var type = o.split('|')[0];\r\n let isAbsent = o.split('|')[2];\r\n return isAbsent !== 'Y';\r\n });\r\n activityCount = activities.length;\r\n\r\n // set frequency modifier & path color\r\n var frequencyModifier = outcome.Frequency_Modifier.replace('OBJFM', '');\r\n var frequencySeparator;\r\n var pathColor;\r\n\r\n // color and modifier\r\n switch (frequencyModifier) {\r\n case 'AN':\r\n case 'AR':\r\n // As Needed & As Requested\r\n frequencySeparator = '>';\r\n if (activityLimit === 0 && activityCount > activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n break;\r\n } else if (activityLimit === 0 && activityCount === 0) {\r\n //no color\r\n break;\r\n }\r\n if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n break;\r\n }\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n break;\r\n case 'AL':\r\n // At Least\r\n frequencySeparator = '>';\r\n if (activityCount === 0 || activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount >= activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n case 'EX':\r\n // Exactly\r\n frequencySeparator = 'of';\r\n if (activityCount === 0 || activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount > activityLimit) {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n } else if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n case 'NM':\r\n // No More Than\r\n frequencySeparator = '<';\r\n if (activityCount <= activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n } else {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n }\r\n break;\r\n case '':\r\n frequencySeparator = '';\r\n if (activityLimit === 0) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n } else if (activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount > activityLimit) {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n } else if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // get percent complete\r\n\r\n // Dashoffset values vv\r\n // 301.635 = 0/ no circle\r\n // 0 = a full circle\r\n\r\n // var percentComplete = activityCount === 0 || activityLimit === 0 ? 0 : activityLimit / activityCount / 100;\r\n var percentComplete = activityCount === 0 || activityLimit === 0 ? 0 : activityCount / activityLimit;\r\n var dashOffset = 301.635 - percentComplete * 301.635;\r\n dashOffset = dashOffset === 0 ? 301.635 : dashOffset;\r\n // if (frequencySeparator === '') {\r\n // \tdashOffset = 0;\r\n // }\r\n if (percentComplete >= 1) {\r\n // dashOffset 0 = full circle. Anything 100% or over is a full circle\r\n dashOffset = 0;\r\n }\r\n if (activityCount > activityLimit) {\r\n dashOffset = 0;\r\n }\r\n var path2Style = `stroke-dashoffset: ${dashOffset};`;\r\n\r\n // cool circle thing\r\n var circle = document.createElement('div');\r\n circle.classList.add('progressCircle');\r\n circle.innerHTML = `\r\n \r\n \r\n \r\n \r\n ${\r\n frequencySeparator !== ''\r\n ? `

    ${activityCount} ${frequencySeparator} ${activityLimit}

    `\r\n : activityLimit > 0\r\n ? `

    ${activityCount}

    `\r\n : `

    ${activityCount}

    `\r\n }\r\n `;\r\n\r\n return circle;\r\n }\r\n function buildSuccessPopup(success) {\r\n var popup = POPUP.build({});\r\n var successPopupText = document.createElement('p');\r\n popup.appendChild(successPopupText);\r\n var successText = success.replace(/(\\r\\n|\\n|\\r)/g, '
    ');\r\n successPopupText.innerHTML += `${successText}`;\r\n POPUP.show(popup);\r\n //return popup;\r\n }\r\n function buildMethodPopup(method) {\r\n var popup = POPUP.build({});\r\n var methodPopupText = document.createElement('p');\r\n popup.appendChild(methodPopupText);\r\n var methodText = method.replace(/(\\r\\n|\\n|\\r)/g, '
    ');\r\n methodPopupText.innerHTML += `${methodText}`;\r\n POPUP.show(popup);\r\n //return popup;\r\n }\r\n function buildObjectiveActivities(outcome) {\r\n var objectiveActivities = getObjectiveActivities(outcome);\r\n var outcomeRecurrance = outcome.Objective_Recurrance;\r\n if (objectiveActivities.length === 0) return null;\r\n // if (outcome.Objective_Statement === \"\") return null;\r\n\r\n var activities = document.createElement('div');\r\n activities.classList.add('activities');\r\n\r\n objectiveActivities.forEach(activity => {\r\n activity = activity.split('|');\r\n dailyAbsent = false;\r\n let label = activity[0];\r\n let id = activity[1];\r\n let isAbsent = activity[2];\r\n var ele = document.createElement('span');\r\n if (outcomeRecurrance === 'D' && isAbsent === 'Y') {\r\n dailyAbsent = true;\r\n }\r\n ele.classList.add('activity');\r\n ele.setAttribute('data-activity-id', id);\r\n ele.innerHTML = label;\r\n activities.appendChild(ele);\r\n });\r\n //if (!dailyAbsent) {\r\n activities.addEventListener('click', event => {\r\n activityId = event.target.dataset.activityId;\r\n if (activityId) {\r\n outcomesAjax.getObjectiveActivity(activityId, function (results) {\r\n outcomesAjax.getOutcomesSuccessTypes(outcome.Goal_Type_ID, function (successTypes) {\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(selectedConsumerId, currDate, function (locations) {\r\n sortSuccessTypes(successTypes);\r\n sortOutcomeLocations(locations);\r\n buildCardDetails(results);\r\n });\r\n });\r\n });\r\n }\r\n });\r\n //}\r\n return activities;\r\n }\r\n function buildCardOverview(outcome) {\r\n if (outcome.Objective_Statement === '') return;\r\n //PERMISSIONS - if $.session.viewableGoalTypeIds does not contain this cards goal type ID, do not display the card.\r\n var hasPermission = false;\r\n $.session.viewableGoalTypeIds.forEach(id => {\r\n if (outcome.Goal_Type_ID === id) {\r\n hasPermission = true;\r\n return;\r\n }\r\n });\r\n if (!hasPermission) return false;\r\n //////////\r\n var overviewCard = document.createElement('div');\r\n overviewCard.classList.add('card', 'objectiveOverview');\r\n\r\n // card values\r\n var typeDescription = outcome.goal_type_description;\r\n var goalStatement = outcome.Objective_Statement.replace(/(\\r\\n|\\n|\\r)/g, '
    '); //outcome.Goal_Statement;\r\n var success = outcome.Success_Determination;\r\n var method = outcome.Objective_Method;\r\n var lastUpdateBy = outcome.lastUpdatedBy;\r\n\r\n // build card\r\n var description = document.createElement('h3');\r\n description.classList.add('description');\r\n description.innerHTML = typeDescription;\r\n\r\n var editIconBtn = button.build({\r\n icon: 'edit',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n addServicesForm.init(selectedConsume, outcome.Objective_id, 0);\r\n },\r\n });\r\n\r\n var statement = document.createElement('p');\r\n statement.classList.add('statement');\r\n statement.innerHTML = goalStatement;\r\n var lastUpdated = document.createElement('div');\r\n lastUpdated.classList.add('lastUpdated');\r\n if (lastUpdateBy !== '') {\r\n lastUpdated.innerHTML = `\r\n

    Last update by ${lastUpdateBy.split(' ')[0]} ${lastUpdateBy.split(' ')[1]}

    \r\n

    on ${UTIL.formatDateFromIso(lastUpdateBy.split(' ')[2])}

    \r\n `;\r\n } else {\r\n lastUpdated.innerHTML = ``;\r\n }\r\n\r\n // activity tracker\r\n var activityTracker = buildActivityTracker(outcome);\r\n // btns\r\n var newBtn = button.build({\r\n text: 'New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'outcomeNew',\r\n callback: function () {\r\n outcomesAjax.getOutcomesSuccessTypes(outcome.Goal_Type_ID, function (successTypes) {\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(selectedConsumerId, currDate, function (locations) {\r\n defaultObjLocationId = outcome.objLocationId;\r\n defaultGoalLocationId = outcome.Location_ID;\r\n sortSuccessTypes(successTypes);\r\n sortOutcomeLocations(locations);\r\n buildCardDetails();\r\n initSaveData(outcome);\r\n successType = null;\r\n successDetails = null;\r\n disableNewOutcomeFields();\r\n });\r\n });\r\n },\r\n });\r\n var successBtn = button.build({\r\n text: 'Success',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var popup = buildSuccessPopup(success);\r\n POPUP.show(popup);\r\n },\r\n });\r\n var methodBtn = button.build({\r\n text: 'Method',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var popup = buildMethodPopup(method);\r\n POPUP.show(popup);\r\n },\r\n });\r\n dailyAbsent = false;\r\n var objectiveActivities = buildObjectiveActivities(outcome);\r\n if (dailyAbsent) {\r\n newBtn.classList.add('disabled');\r\n }\r\n\r\n var successMethodWrap = document.createElement('div');\r\n successMethodWrap.classList.add('btnWrap');\r\n if (success !== '') successMethodWrap.appendChild(successBtn);\r\n if (method !== '') successMethodWrap.appendChild(methodBtn);\r\n\r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('row', 'progressAndNew');\r\n wrap1.appendChild(activityTracker);\r\n wrap1.appendChild(newBtn);\r\n\r\n var wrapEdit = document.createElement('div');\r\n wrapEdit.classList.add('editBtnWrap');\r\n wrapEdit.appendChild(description);\r\n if ($.session.UpdateServices == true) {\r\n wrapEdit.appendChild(editIconBtn);\r\n }\r\n overviewCard.appendChild(wrapEdit);\r\n overviewCard.appendChild(wrap1);\r\n overviewCard.appendChild(statement);\r\n overviewCard.appendChild(successMethodWrap);\r\n if (objectiveActivities) overviewCard.appendChild(objectiveActivities);\r\n if (lastUpdateBy !== '') overviewCard.appendChild(lastUpdated);\r\n\r\n return overviewCard;\r\n }\r\n function buildCardEnteredByDetails(enteredBy, lastUpdatedDate) {\r\n let txtArea = document.createElement('p');\r\n txtArea.classList.add('enteredByDetail');\r\n txtArea.innerHTML = `Entered By: ${enteredBy}
    Last Updated: ${lastUpdatedDate}`;\r\n return txtArea;\r\n }\r\n // main card\r\n function buildCardContainer(consumer) {\r\n OUTCOMES_SECTION.innerHTML = '';\r\n\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone, consumer.id);\r\n\r\n OUTCOMES_SECTION.appendChild(card);\r\n\r\n return OUTCOMES_SECTION;\r\n }\r\n\r\n // Populate Outcome Card\r\n //------------------------------------\r\n function populateNoFreqOutcomes(outcomes) {\r\n // aka NONE\r\n var section = document.getElementById('no frequency');\r\n section.innerHTML = '';\r\n outcomes.forEach(oc => {\r\n var card = buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateHourlyOutcomes(outcomes) {\r\n var section = document.getElementById('hourly');\r\n section.innerHTML = '';\r\n outcomes.forEach(oc => {\r\n var card = buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateDailyOutcomes(outcomes) {\r\n var section = document.getElementById('daily');\r\n section.innerHTML = '';\r\n outcomes.forEach(oc => {\r\n var card = buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateWeeklyOutcomes(outcomes) {\r\n var section = document.getElementById('weekly');\r\n section.innerHTML = '';\r\n outcomes.forEach(oc => {\r\n var card = buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateMonthlyOutcomes(outcomes) {\r\n var section = document.getElementById('monthly');\r\n section.innerHTML = '';\r\n outcomes.forEach(oc => {\r\n var card = buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n function populateYearlyOutcomes(outcomes) {\r\n var section = document.getElementById('yearly');\r\n section.innerHTML = '';\r\n outcomes.forEach(oc => {\r\n var card = buildCardOverview(oc);\r\n if (card) section.appendChild(card);\r\n });\r\n }\r\n\r\n function populateOutcomes(od) {\r\n outcomesData = sortOutcomesAlpha(od);\r\n var sections = [];\r\n var noFreqOutcomes = outcomesData['NF'];\r\n var hourlyOutcomes = outcomesData['H'];\r\n var dailyOutcomes = outcomesData['D'];\r\n var weeklyOutcomes = outcomesData['W'];\r\n var monthlyOutcomes = outcomesData['M'];\r\n var yearlyOutcomes = outcomesData['Y'];\r\n\r\n if (noFreqOutcomes) sections.push('No Frequency');\r\n if (hourlyOutcomes) sections.push('Hourly');\r\n if (dailyOutcomes) sections.push('Daily');\r\n if (weeklyOutcomes) sections.push('Weekly');\r\n if (monthlyOutcomes) sections.push('Monthly');\r\n if (yearlyOutcomes) sections.push('Yearly');\r\n\r\n //currentSection\r\n var defaultActiveSection;\r\n sections.forEach((sec, index) => {\r\n if (sec === currentSection) defaultActiveSection = index;\r\n });\r\n\r\n defaultActiveSection = defaultActiveSection ? defaultActiveSection : 0;\r\n currentSection = sections[defaultActiveSection];\r\n\r\n OUTCOMES_SECTION.innerHTML = '';\r\n var outcomeTabs = tabs.build({\r\n sections,\r\n active: defaultActiveSection,\r\n tabNavCallback: function (data) {\r\n currentSection = data.activeSection;\r\n setUpOutcomesTabSpans();\r\n },\r\n });\r\n OUTCOMES_SECTION.appendChild(outcomeTabs);\r\n\r\n if (noFreqOutcomes) populateNoFreqOutcomes(noFreqOutcomes);\r\n if (hourlyOutcomes) populateHourlyOutcomes(hourlyOutcomes);\r\n if (dailyOutcomes) populateDailyOutcomes(dailyOutcomes);\r\n if (weeklyOutcomes) populateWeeklyOutcomes(weeklyOutcomes);\r\n if (monthlyOutcomes) populateMonthlyOutcomes(monthlyOutcomes);\r\n if (yearlyOutcomes) populateYearlyOutcomes(yearlyOutcomes);\r\n setUpOutcomesTabSpans();\r\n }\r\n\r\n //Handle navigation from dashboard widget to module\r\n function dashHandler(myconsumerId) {\r\n let myval = { id: '34275', card: 'div.consumerCard.consumer-selected.highlighted' };\r\n selectedConsumerId = '34275';\r\n currDate = '2020-03-30';\r\n consumerName = 'Joe Meyer';\r\n daysBack = '13';\r\n\r\n loadCardView(myval);\r\n }\r\n\r\n function loadCardView(selectedConsumer) {\r\n // DOM.scrollToTopOfPage();\r\n selectedConsume = selectedConsumer;\r\n DOM.clearActionCenter();\r\n clearBackCardValues();\r\n //Filter and date wrap\r\n var topFilterDateWrap = document.createElement('div');\r\n topFilterDateWrap.classList.add('topOutcomeWrap');\r\n //Date Input\r\n var date_Input = document.querySelector('.dateInput');\r\n if (!date_Input) {\r\n dateInput = buildFuckingDateInput();\r\n topFilterDateWrap.appendChild(dateInput);\r\n }\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n outcomesService: currService ? currService : 'All',\r\n outcomesType: currOutcomeId ? currOutcomeId : '0',\r\n outcomesConsumer: selectedConsumerId,\r\n outcomesDate: currDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n function editOutcomesServicesButton() {\r\n return button.build({\r\n text: 'EDIT OUTCOMES/SERVICES',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: async () => {\r\n if (!editOutcomeBtn.classList.contains('disabled')) {\r\n addEditOutcomeServices.init(selectedConsume);\r\n }\r\n },\r\n });\r\n }\r\n\r\n let filterValues = {\r\n // outcomesService: outcome.Objective_id,\r\n outcomesConsumer: selectedConsumerId,\r\n outcomesDate: currDate,\r\n };\r\n\r\n reportsBtn = createMainReportButton([\r\n { text: 'Documentation - Completed With Percentages', filterValues },\r\n { text: 'Outcome Activity - With Community Integration by Employee, Consumer, Date', filterValues },\r\n ]);\r\n editOutcomeBtn = editOutcomesServicesButton();\r\n topFilterDateWrap.appendChild(editOutcomeBtn);\r\n if (\r\n $.session.InsertOutcomes == true ||\r\n $.session.UpdateOutcomes == true ||\r\n $.session.InsertServices == true ||\r\n $.session.UpdateServices == true\r\n ) {\r\n editOutcomeBtn.classList.remove('disabled');\r\n } else {\r\n editOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n topFilterDateWrap.appendChild(reportsBtn);\r\n }\r\n\r\n if (!document.querySelector('.topOutcomeWrap')) {\r\n DOM.ACTIONCENTER.appendChild(topFilterDateWrap);\r\n }\r\n\r\n var documentingForDiv = document.createElement('div');\r\n documentingForDiv.innerHTML = `

    Documenting for: ${consumerName}

    `;\r\n DOM.ACTIONCENTER.appendChild(documentingForDiv);\r\n\r\n var dayBackDateSpanWrap = document.createElement('div');\r\n dayBackDateSpanWrap.classList.add('dayBackDateSpanWrap');\r\n //Days back message\r\n var daysBackDiv = document.createElement('div');\r\n daysBackDiv.innerHTML = `

    You can document up to ${daysBack} days back

    `;\r\n dayBackDateSpanWrap.appendChild(daysBackDiv);\r\n\r\n DOM.ACTIONCENTER.appendChild(dayBackDateSpanWrap);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n\r\n //Main section & tabs\r\n var outcomesTabs = buildCardContainer(selectedConsumer);\r\n //Build and populate card overview\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, res => loadOutcomesCards(res));\r\n\r\n DOM.ACTIONCENTER.appendChild(outcomesTabs);\r\n }\r\n function loadOutcomesCards(results) {\r\n sortOutcomes(results);\r\n populateOutcomes(outcomesDataObj);\r\n }\r\n\r\n function sortOutcomesAlpha(outcomesData) {\r\n Object.keys(outcomesData).forEach(occur => {\r\n outcomesData[occur].sort((a, b) =>\r\n a.goal_type_description.toUpperCase() > b.goal_type_description.toUpperCase()\r\n ? 1\r\n : a.goal_type_description.toUpperCase() === b.goal_type_description.toUpperCase()\r\n ? a.Objective_Statement.toUpperCase() > b.Objective_Statement.toUpperCase()\r\n ? 1\r\n : -1\r\n : -1,\r\n );\r\n });\r\n return outcomesData;\r\n }\r\n\r\n function buildAllowedConsumersObj(userIdsWithGoals, userIdsWithRemainingGoals) {\r\n var remainingGoalsIds = {};\r\n userIdsWithGoals.forEach(user => {\r\n userIdsWithRemainingGoals.every(userReminingGoal => {\r\n if (user.id === userReminingGoal.ID) {\r\n remainingGoalsIds[user.id] = true;\r\n return false;\r\n } else {\r\n remainingGoalsIds[user.id] = false;\r\n return true;\r\n }\r\n });\r\n });\r\n\r\n var consumerIds = userIdsWithGoals.map(userId => {\r\n var showAlert = remainingGoalsIds[parseInt(userId.id)];\r\n return {\r\n consumer_id: userId.id,\r\n showAlertIcon: showAlert,\r\n };\r\n });\r\n\r\n roster2.setAllowedConsumers(consumerIds);\r\n if (initLoad) {\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n roster2.showMiniRoster({\r\n hideDate: true,\r\n });\r\n }\r\n }\r\n\r\n function getConsumersWithRemainingGoals() {\r\n var getUserIdPromise = new Promise(function (resolve, reject) {\r\n outcomesAjax.getUserIdsWithGoalsByDate(currDate, res => {\r\n userIdsWithGoals = res;\r\n resolve('success');\r\n });\r\n });\r\n var getRemainingDailyGoalsPromise = new Promise(function (resolve, reject) {\r\n outcomesAjax.getRemainingDailyGoals(currDate, res => {\r\n userIdsWithRemainingGoals = res;\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([getUserIdPromise, getRemainingDailyGoalsPromise]).then(function () {\r\n buildAllowedConsumersObj(userIdsWithGoals, userIdsWithRemainingGoals);\r\n });\r\n }\r\n function loadLandingPage() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n\r\n OUTCOMES_SECTION = document.createElement('div');\r\n OUTCOMES_SECTION.classList.add('outcomes');\r\n\r\n // var message = document.createElement(\"h2\");\r\n // message.classList.add(\"landingMessage\");\r\n // message.innerHTML = `Please select a consumer to get started.`;\r\n\r\n // OUTCOMES_SECTION.appendChild(message);\r\n DOM.ACTIONCENTER.appendChild(OUTCOMES_SECTION);\r\n\r\n currDate = UTIL.getTodaysDate();\r\n outcomesAjax.getViewableGoalIdsByPermission(getConsumersWithRemainingGoals);\r\n }\r\n\r\n // function appendMiniRoster(miniRoster) {\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.appendChild(miniRoster);\r\n // }\r\n\r\n function init() {\r\n initLoad = true;\r\n // var enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // // display mini roster for consumer selection\r\n // PROGRESS.SPINNER.show(\"Please wait while we gather everyone up...\");\r\n // roster.buildRoster(true, false, appendMiniRoster, true);\r\n // } else {\r\n // PROGRESS.SPINNER.show(\"Loading Outcomes...\");\r\n // loadLandingPage();\r\n // }\r\n loadLandingPage();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n init,\r\n backToOutcomeLoad,\r\n };\r\n})();\r\n","var outcomesAjax = (function () {\r\n function deleteGoal(activityId, consumerId, goalDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteGoal/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"activityId\":\"' + activityId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //getGoals($.userId, goalId + '-' + objectiveId);\r\n callback();\r\n // getGoals(consumerId, goalDate);\r\n // var list = $.pages.rosterconsumerlist.split('');\r\n // getRemainingDailyGoals(list);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n function getGoals(consumerId, goalDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsByDateNew/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"goalDate\":\"' +\r\n goalDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalsByDateNewResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getGoalSpecificLocationInfo(activityId, goalId, objId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalSpecificLocationInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"activityId\":\"' + activityId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalSpecificLocationInfoJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getIdsWithGoals(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserIdsWithGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserIdsWithGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getUserIdsWithGoalsByDate(goalsCheckDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserIdsWithGoalsByDateJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"goalsCheckDate\":\"' + goalsCheckDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserIdsWithGoalsByDateJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDaysBackForEditingGoalsAndUseConsumerLocation(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDaysBackForEditingGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getDaysBackForEditingGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getViewableGoalIdsByPermission(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getViewableGoalIdsByPermissionJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getViewableGoalIdsByPermissionJSONResult;\r\n res.forEach(function ashLikesThisLoop(element, i) {\r\n $.session.viewableGoalTypeIds.push(element.ID);\r\n });\r\n callback();\r\n },\r\n });\r\n }\r\n function getRemainingDailyGoals(checkDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRemainingDailyGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"checkDate\":\"' + checkDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getRemainingDailyGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getGoalsCommunityIntegrationLevelDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsCommunityIntegrationLevelJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalsCommunityIntegrationLevelJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n //Get whether or not community integration is required.\r\n function getGoalsCommunityIntegrationRequired(callback) {\r\n //Brad\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsCommunityIntegrationRequiredJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = ''; //JSON.parse(response.getGoalsCommunityIntegrationRequiredResult);\r\n var res = response.getGoalsCommunityIntegrationRequiredJSONResult;\r\n\r\n if (res.length) {\r\n if (res[0].Setting_Value == 'Y') {\r\n $.session.communityIntegrityRequired = true;\r\n } else {\r\n $.session.communityIntegrityRequired = false;\r\n }\r\n } else {\r\n $.session.communityIntegrityRequired = 'n/a';\r\n }\r\n\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomeTypeForFilter(data, callback) {\r\n // data = {consumerId, selectedDate, token}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeTypeForFilterJSON/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.getOutcomeTypeForFilterJSONResult;\r\n callback(results);\r\n },\r\n });\r\n }\r\n //function getConsumerTableConsumerLocation(consumerId) {\r\n //\tdata = {\r\n //\t\ttoken: $.session.Token,\r\n //\t\tconsumerId: consumerId,\r\n //\t};\r\n //\t$.ajax({\r\n //\t\ttype: 'POST',\r\n //\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumerTableConsumerLocation/',\r\n //\t\tdata: JSON.stringify(data),\r\n //\t\tcontentType: 'application/json; charset=utf-8',\r\n //\t\tdataType: 'json',\r\n //\t\tsuccess: function(response, status, xhr) {\r\n //\t\t\tdata = response.getConsumerTableConsumerLocationResult;\r\n //\t\t\t$.session.consumerTableConsumerLocationId = data[0].locationId;\r\n //\t\t\t$.session.consumerTableConsumerLocationName = data[0].description;\r\n //\t\t},\r\n //\t\terror: function(xhr, status, error) {\r\n //\t\t\talert('Error\\n-----\\n' + xhr.status + '\\n' + xhr.responseText);\r\n //\t\t},\r\n //\t});\r\n //}\r\n function saveGoals(data, callback) {\r\n data = {\r\n token: $.session.Token,\r\n objectiveId: data.objectiveId,\r\n activityId: data.activityId,\r\n date: data.objdate,\r\n success: data.success,\r\n goalnote: data.goalnote,\r\n promptType: data.promptType,\r\n promptNumber: data.promptNumber,\r\n locationId: data.locationId,\r\n locationSecondaryId: data.locationSecondaryId,\r\n goalStartTime: data.goalStartTime,\r\n goalEndTime: data.goalEndTime,\r\n goalCILevel: data.goalCILevel,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveGoal/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n\r\n if (!response.saveGoalResult.match('Error')) {\r\n callback(res);\r\n } else {\r\n alert(\r\n 'Outcome could not be saved. Please verify your start time, end time, and all other data.',\r\n );\r\n }\r\n },\r\n });\r\n }\r\n function getObjectiveActivity(objectiveActivityId, callback) {\r\n data = {\r\n objectiveActivityId: objectiveActivityId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getObjectiveActivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getObjectiveActivityResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesPrompts(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesPrompts/',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesPromptsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesSuccessTypes(goalTypeId, callback) {\r\n data = {\r\n goalTypeId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesSuccessTypes/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesSuccessTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesPrimaryAndSecondaryLocations(consumerId, goalDate, callback) {\r\n data = {\r\n consumerId,\r\n goalDate,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesPrimaryAndSecondaryLocations/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesPrimaryAndSecondaryLocationsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getSuccessSymbols(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSuccessSymbolLookup/',\r\n // data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSuccessSymbolLookupResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function getOutcomeServicsPageData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeServicsPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getOutcomeServicsPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getOutcomeTypeDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeTypeDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getOutcomeServiceDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeServiceDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getGoalEntriesByIdAsync(goalId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalEntriesById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"goalId\":\"' +\r\n goalId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getObjectiveEntriesByIdAsync(objectiveId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getObjectiveEntriesById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"objectiveId\":\"' +\r\n objectiveId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getServiceFrequencyTypeDropDownAsync(Type) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceFrequencyTypeDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n type: Type,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertOutcomeInfoAsync(\r\n startDate, endDate, outcomeType, outcomeStatement, userID, goalId, consumerId, location\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertOutcomeInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDate: startDate,\r\n endDate: endDate,\r\n outcomeType: outcomeType,\r\n outcomeStatement: outcomeStatement,\r\n userID: userID,\r\n goalId: goalId,\r\n consumerId: consumerId,\r\n location: location\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertOutcomeServiceInfoAsync(\r\n startDate, endDate, outcomeType, servicesStatement, ServiceType, method, success, frequencyModifier, frequency, frequencyPeriod, userID, objectiveId, consumerId, location, duration\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertOutcomeServiceInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDate: startDate,\r\n endDate: endDate,\r\n outcomeType: outcomeType,\r\n servicesStatement: servicesStatement,\r\n ServiceType: ServiceType,\r\n method: method,\r\n success: success,\r\n frequencyModifier: frequencyModifier,\r\n frequency: frequency,\r\n frequencyPeriod: frequencyPeriod,\r\n userID: userID,\r\n objectiveId: objectiveId,\r\n consumerId: consumerId,\r\n location: location,\r\n duration: duration\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getLocationDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteGoal,\r\n getGoals,\r\n getGoalSpecificLocationInfo,\r\n getIdsWithGoals,\r\n getUserIdsWithGoalsByDate,\r\n getDaysBackForEditingGoalsAndUseConsumerLocation,\r\n getViewableGoalIdsByPermission,\r\n getRemainingDailyGoals,\r\n getGoalsCommunityIntegrationLevelDropdown,\r\n getGoalsCommunityIntegrationRequired,\r\n getOutcomeTypeForFilter,\r\n // getConsumerTableConsumerLocation,\r\n saveGoals,\r\n getObjectiveActivity,\r\n getOutcomesPrompts,\r\n getOutcomesSuccessTypes,\r\n getOutcomesPrimaryAndSecondaryLocations,\r\n getSuccessSymbols,\r\n getOutcomeServicsPageData,\r\n getOutcomeTypeDropDownAsync,\r\n getGoalEntriesByIdAsync,\r\n getObjectiveEntriesByIdAsync,\r\n getOutcomeServiceDropDownAsync,\r\n getServiceFrequencyTypeDropDownAsync,\r\n insertOutcomeInfoAsync,\r\n insertOutcomeServiceInfoAsync,\r\n getLocationDropDownAsync,\r\n };\r\n})();\r\n","const generateReports = (() => {\r\n let reportRunning = false;\r\n\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n function passFilterValuesForReport(reportType, filterValues) {\r\n generateReportsAjax.generateReport(reportType, filterValues, checkIfReportIsReadyInterval);\r\n }\r\n\r\n // Helper function to create report buttons\r\n function createIndividualReportButton(text, filterValues) {\r\n return button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n //Hide the popup after it is clicked\r\n let popup = document.getElementById('generateReportsPopup');\r\n POPUP.hide(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n\r\n // set report running to true to stop mulitple reports being ran, run report, then show popup while report runs in background\r\n reportRunning = true;\r\n passFilterValuesForReport(text, filterValues); \r\n showWarningPopup(text, filterValues);\r\n },\r\n });\r\n }\r\n\r\n function showReportsPopup(buttonsData) {\r\n // Popup\r\n const popup = POPUP.build({\r\n id: `generateReportsPopup`,\r\n hideX: true,\r\n classNames: ['popup',\r\n 'visible',\r\n 'popup--filter',\r\n buttonsData.text,\r\n 'generateReportsPopup']\r\n });\r\n\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n // Header\r\n const header = document.createElement('h5');\r\n header.innerHTML = 'Select A Report To View';\r\n\r\n // Create buttons dynamically using the helper function\r\n // example: [{ text: 'Detail Report', callback: passFilterValuesForDetailReport },{ text: 'Time Analysis Report', callback: passFilterValuesForTimeEntryReport }];\r\n const buttons = buttonsData.map(({ text, filterValues }) =>\r\n createIndividualReportButton(text, filterValues),\r\n );\r\n\r\n // Disable buttons if the report is running\r\n if (reportRunning) {\r\n buttons.forEach(button => {\r\n button.disabled = true;\r\n button.classList.add('disabled');\r\n });\r\n }\r\n\r\n popup.appendChild(header);\r\n buttons.forEach(button => {\r\n popup.appendChild(button);\r\n });\r\n\r\n // Append to DOM\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n // Function to generate the warning popup\r\n function showWarningPopup(reportType) {\r\n const reportWarningPopup = POPUP.build({\r\n id: `reportWarningPopup${reportType}`,\r\n hideX: true,\r\n classNames: 'warning',\r\n });\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `Your ${reportType} report is being generated and will be downloaded when finished, in the meantime you may continue with your work.`;\r\n\r\n const acceptBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(reportWarningPopup);\r\n overlay.hide();\r\n\r\n let popup = document.querySelector('.generateReportsPopup');\r\n\r\n bodyScrollLock.enableBodyScroll(popup);\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(acceptBtn);\r\n\r\n reportWarningPopup.appendChild(warningMessage);\r\n reportWarningPopup.appendChild(btnWrap);\r\n POPUP.show(reportWarningPopup);\r\n }\r\n\r\n function checkIfReportIsReadyInterval(res) {\r\n // Get the interval in seconds from the session and convert it to milliseconds\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 250;\r\n\r\n // Set up an interval to execute the checkCNReportExists function periodically\r\n interval = setInterval(async () => {\r\n await checkIfReportExists(res); // Call the function to check if the report exists\r\n }, intSeconds); // The interval in milliseconds between checks\r\n }\r\n\r\n\r\n // Async function to check if a report exists\r\n async function checkIfReportExists(res) {\r\n // Call function to check if the report exists\r\n // Once the promise is resolved, the callReport function will handle the result.\r\n await generateReportsAjax.checkIfReportExists(res, callReport);\r\n }\r\n\r\n function callReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n generateReportsAjax.viewReport(reportScheduleId);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n }\r\n }\r\n\r\n return {\r\n createMainReportButton,\r\n passFilterValuesForReport,\r\n showReportsPopup,\r\n createIndividualReportButton,\r\n checkIfReportIsReadyInterval,\r\n checkIfReportExists,\r\n callReport,\r\n showWarningPopup,\r\n };\r\n})();\r\n","var generateReportsAjax = (function () {\r\n function generateReport(reportType, reportData, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportType, \r\n reportData\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function checkIfReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function viewReport(reportScheduleId) {\r\n data = {\r\n reportScheduleId: reportScheduleId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n \r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n \r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n \r\n form.submit();\r\n }\r\n\r\n return {\r\n generateReport,\r\n checkIfReportExists,\r\n viewReport\r\n };\r\n })();\r\n ","const roster2 = (function () {\r\n // CAHCED DATA\r\n let rosterLocations; // cached roster locations\r\n let rosterGroups; // cached roster groups\r\n let rosterConsumers; // cached list of consumers\r\n let groupedRosterConsumers; // cached list of consumers\r\n let absentConsumers;\r\n let consumersWithUnreadNotes;\r\n let locationsWithUnreadNotes; //\r\n // DOM\r\n let ROSTER_LIST;\r\n let ROSTER_WRAP;\r\n let ROSTER_SPINNER;\r\n let LOAD_MORE_BTN;\r\n let FILTER_BTN;\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let SELECT_ALL_BTN;\r\n let DESELECT_ALL_BTN;\r\n let LOCATION_NOTES_BTN;\r\n let MASS_ABSENT_BTN;\r\n var FILTER_POPUP;\r\n let loadingRosterWrap;\r\n let loadRosterSpinner;\r\n // DOM - MINI ROSTER\r\n let MINI_ROSTER_BTN;\r\n let MINI_ROSTER_POPUP;\r\n let MINI_ROSTER_DONE;\r\n let MINI_ROSTER_CANCEL;\r\n // filtering\r\n let selectedDate;\r\n let selectedLocationName;\r\n let selectedLocationId;\r\n let selectedGroupCode;\r\n let selectedGroupId;\r\n let selectedGroupName;\r\n let hideDateFilter;\r\n let selectedActive;\r\n\r\n let btnWrap;\r\n let filteredDateBtnWrap;\r\n let selectedLocationNameBtnWrap;\r\n let selectedActiveBtnWrap;\r\n let selectedGroupNameBtnWrap;\r\n let totalConsumerCountBtnWrap;\r\n var filteredDate;\r\n // VALUES\r\n let rosterListSelectable;\r\n let selectedConsumers = [];\r\n let selectedConsumerCache = [];\r\n let activeConsumers = [];\r\n let allowedConsumerIds;\r\n let consumersWithAlerts;\r\n let totalConsumerCount = 0;\r\n // Roster Groups/Pagination\r\n let rosterGroupCount;\r\n let activeGroup;\r\n let islocationDisabled = false;\r\n // Mass Absent Selection\r\n let MASS_SELECT_ALL_BTN;\r\n let MASS_DESELECT_ALL_BTN;\r\n\r\n var locationHasUnreadNote;\r\n // Selected & Active Consumers\r\n //---------------------------------------------\r\n function selectedConsumersToActiveList() {\r\n selectedConsumers.forEach(sc => sc.card.classList.remove('highlighted'));\r\n activeConsumers = [...activeConsumers, ...selectedConsumers];\r\n selectedConsumerCache = selectedConsumers;\r\n selectedConsumers = [];\r\n }\r\n // Selected*\r\n function addConsumerToSelectedConsumers(consumer) {\r\n selectedConsumers.push({\r\n id: consumer.dataset.consumerId,\r\n card: consumer,\r\n });\r\n }\r\n function removeConsumerFromSelectedConsumers(consumerId) {\r\n selectedConsumers = selectedConsumers.filter(c => c.id !== consumerId);\r\n }\r\n function getSelectedConsumers() {\r\n return [...selectedConsumers];\r\n }\r\n function getSelectedConsumersCache() {\r\n return [...selectedConsumerCache];\r\n }\r\n /*\r\n I created selected consumers miniroster to have a function\r\n that gives you only the consumers that were selected in the mini roster\r\n GetActiveConsumers gives you the active consumers on the roster, even if they\r\n werent just selected\r\n */\r\n function getSelectedConsumersMiniRoster() {\r\n return [...selectedConsumerCache];\r\n }\r\n /**\r\n * Returns all roster consumers.\r\n *\r\n * @async\r\n * @returns {Object[]} Returns Array of consumer objects\r\n * -- FN: First Name\r\n * -- IDa: ?\r\n * -- LId: service location id's seperated by |\r\n * -- LN: Last Name\r\n * -- MN: Middle Name\r\n * -- SD: ?\r\n * -- conL: primary location id\r\n * -- id: consumer id\r\n */\r\n async function getAllRosterConsumers() {\r\n if (rosterConsumers) {\r\n return [...rosterConsumers];\r\n } else {\r\n await getRosterData();\r\n await getRosterConsumersData();\r\n return [...rosterConsumers];\r\n }\r\n }\r\n function clearSelectedConsumers() {\r\n selectedConsumers = [];\r\n // clearHighlightedConsumers();\r\n return selectedConsumers;\r\n }\r\n // Active*\r\n function addConsumerToActiveConsumers(consumer) {\r\n activeConsumers.push({\r\n id: consumer.dataset.consumerId,\r\n card: consumer,\r\n });\r\n }\r\n function removeConsumerFromActiveConsumers(consumerId) {\r\n activeConsumers = activeConsumers.filter(c => c.id !== consumerId);\r\n }\r\n function getActiveConsumers() {\r\n return [...activeConsumers];\r\n }\r\n function clearActiveConsumers() {\r\n activeConsumers = [];\r\n return activeConsumers;\r\n }\r\n\r\n // Util\r\n //---------------------------------------------\r\n function clearHighlightedConsumers() {\r\n if (!ROSTER_LIST) return;\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard.highlighted'));\r\n if (consumers.length > 1) {\r\n consumers.forEach(c => {\r\n c.classList.remove('consumer-selected', 'highlighted');\r\n });\r\n }\r\n }\r\n function selectNoneHighlightedConsumers() {\r\n if (!ROSTER_LIST) return;\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard.highlighted'));\r\n if (consumers.length > 0) {\r\n consumers.forEach(c => {\r\n c.classList.remove('consumer-selected', 'highlighted');\r\n });\r\n }\r\n }\r\n function removeMiniRosterBtn() {\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n document.body.removeChild(miniRosterBtn);\r\n }\r\n }\r\n function getSelectedLocationObj() {\r\n return {\r\n locationName: selectedLocationName,\r\n locationId: selectedLocationId,\r\n };\r\n }\r\n function getSelectedDate() {\r\n return selectedDate;\r\n }\r\n function getRosterLocations() {\r\n return rosterLocations;\r\n }\r\n function getConsumersWithUnreadNotes() {\r\n return consumersWithUnreadNotes;\r\n }\r\n function updateSelectedDate(date) {\r\n selectedDate = date;\r\n }\r\n function updateSelectedLocationId(locationId, locationName) {\r\n selectedLocationId = locationId;\r\n selectedGroupId = locationId;\r\n selectedLocationName = locationName;\r\n }\r\n function setRosterGroups(rosterData) {\r\n rosterGroups = rosterData;\r\n selectedGroupCode = rosterData[0].GroupCode;\r\n selectedGroupId = rosterData[0].RetrieveID;\r\n // selectedGroupName = rosterData[0].GroupName;\r\n $.session.formsCaseload == true && $.loadedApp === 'forms'\r\n ? (selectedGroupName = 'Caseload')\r\n : (selectedGroupName = selectedGroupName = rosterData[0].GroupName);\r\n }\r\n function setSelectedGroupData() {\r\n var defaultRosterGroup = defaults.getLocation('rosterGroup').split('-');\r\n var defaultRosterGroupCode = defaultRosterGroup[0];\r\n var defaultRosterGroupID = defaultRosterGroup[1];\r\n\r\n rosterGroups.forEach(g => {\r\n if (g.GroupCode === defaultRosterGroupCode && g.RetrieveID === defaultRosterGroupID) {\r\n selectedGroupCode = g.GroupCode;\r\n selectedGroupId = g.RetrieveID;\r\n // selectedGroupName = g.GroupName;\r\n $.session.formsCaseload == true && $.loadedApp === 'forms'\r\n ? (selectedGroupName = 'Caseload')\r\n : (selectedGroupName = g.GroupName);\r\n }\r\n });\r\n\r\n if (!selectedGroupName) {\r\n selectedGroupCode = rosterGroups[0].GroupCode;\r\n selectedGroupId = rosterGroups[0].RetrieveID;\r\n selectedGroupName = rosterGroups[0].GroupName;\r\n }\r\n\r\n if ($.session.formsCaseload == true && $.loadedApp === 'forms') selectedGroupName = 'Caseload';\r\n }\r\n function setSelectedLocationData() {\r\n if (defaults.getLocation('roster') !== '') {\r\n selectedLocationId = defaults.getLocation('roster');\r\n\r\n var selectedLocationObj = rosterLocations.filter(loc => {\r\n return selectedLocationId === loc.ID;\r\n });\r\n\r\n selectedLocationName = selectedLocationObj[0].Name;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n }\r\n\r\n if (!selectedLocationId) {\r\n selectedLocationId = '0';\r\n selectedLocationName = 'All';\r\n }\r\n }\r\n function setCustomDefaultLocationData({ locationId, locationName }) {\r\n selectedLocationName = locationName;\r\n selectedLocationId = locationId;\r\n }\r\n function setAllowedConsumers(idArray) {\r\n // Allowed Consumers *Per Module\r\n allowedConsumerIds = [];\r\n consumersWithAlerts = [];\r\n\r\n if (idArray[0] === '%') {\r\n allowedConsumerIds = ['%'];\r\n return;\r\n }\r\n\r\n idArray.forEach(r => {\r\n const id = r.consumer_id ? r.consumer_id : r;\r\n allowedConsumerIds.push(id);\r\n if (r.showAlertIcon) consumersWithAlerts.push(id);\r\n });\r\n }\r\n\r\n // Search\r\n //---------------------------------------------\r\n function searchRoster(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n const consumers = rosterConsumers.filter(rc => {\r\n var firstName = rc.FN.toLowerCase();\r\n var lastName = rc.LN.toLowerCase();\r\n var middleName = rc.MN.toLowerCase(); //\r\n var fullName = `${lastName}, ${middleName} ${firstName}`;\r\n var fullNameReversed = `${lastName}, ${firstName} ${middleName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n\r\n return matchesName !== -1 || matchesNameReverse !== -1;\r\n });\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists && rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n groupRosterConsumers(consumers);\r\n populateRoster();\r\n totalConsumerCount = consumers.length;\r\n updateTotalConsumerCount();\r\n }\r\n // Filtering\r\n //---------------------------------------------\r\n function updateTotalConsumerCount() {\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n }\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.widgetFilteredBy');\r\n\r\n var splitDate = selectedDate.split('-');\r\n filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n filteredBy1 = document.createElement('div');\r\n filteredBy1.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy1.appendChild(btnWrap);\r\n filteredBy.appendChild(filteredBy1);\r\n }\r\n\r\n if (document.getElementById('filteredDateBtn') != null)\r\n document.getElementById('filteredDateBtn').innerHTML = 'Date: ' + filteredDate;\r\n\r\n if (hideDateFilter) {\r\n btnWrap.removeChild(filteredDateBtnWrap);\r\n }\r\n\r\n if (selectedLocationName === '%' || selectedLocationName === 'All') {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n if (document.getElementById('selectedLocationNameBtn') != null)\r\n document.getElementById('selectedLocationNameBtn').innerHTML = 'Location: ' + selectedLocationName;\r\n }\r\n\r\n if (selectedGroupName === '%' || selectedGroupName === 'Everyone') {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n if (document.getElementById('selectedGroupNameBtn') != null)\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n }\r\n\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n if (document.getElementById('selectedActiveBtn') != null)\r\n document.getElementById('selectedActiveBtn').innerHTML = 'Show Inactives: ' + selectedActive;\r\n }\r\n\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filteredDateBtn = button.build({\r\n id: 'filteredDateBtn',\r\n text: 'Date: ' + filteredDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('filteredDateBtn');\r\n },\r\n });\r\n\r\n selectedLocationNameBtn = button.build({\r\n id: 'selectedLocationNameBtn',\r\n text: 'Location: ' + selectedLocationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('selectedLocationNameBtn');\r\n },\r\n });\r\n selectedLocationNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n if (!islocationDisabled)\r\n closeFilter('selectedLocationNameBtn');\r\n },\r\n });\r\n\r\n selectedGroupNameBtn = button.build({\r\n id: 'selectedGroupNameBtn',\r\n text: 'Group: ' + selectedGroupName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('selectedGroupNameBtn');\r\n },\r\n });\r\n selectedGroupNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('selectedGroupNameBtn');\r\n },\r\n });\r\n\r\n selectedActiveBtn = button.build({\r\n id: 'selectedActiveBtn',\r\n text: 'Show Inactives: ' + selectedActive,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n buildFilterPopup('selectedActiveBtn');\r\n },\r\n });\r\n\r\n totalConsumerCountBtn = button.build({\r\n id: 'totalConsumerCountBtn',\r\n text: 'Total Consumer Count: ' + totalConsumerCount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n\r\n filteredDateBtnWrap = document.createElement('div');\r\n filteredDateBtnWrap.classList.add('filterSelectionFirstBtnWrap');\r\n filteredDateBtnWrap.appendChild(filteredDateBtn);\r\n btnWrap.appendChild(filteredDateBtnWrap);\r\n\r\n selectedLocationNameBtnWrap = document.createElement('div');\r\n selectedLocationNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedLocationNameBtnWrap.appendChild(selectedLocationNameBtn);\r\n selectedLocationNameBtnWrap.appendChild(selectedLocationNameCloseBtn);\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n\r\n selectedGroupNameBtnWrap = document.createElement('div');\r\n selectedGroupNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameBtn);\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) { \r\n selectedActiveBtnWrap = document.createElement('div');\r\n selectedActiveBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedActiveBtnWrap.appendChild(selectedActiveBtn);\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n }\r\n\r\n totalConsumerCountBtnWrap = document.createElement('div');\r\n totalConsumerCountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n totalConsumerCountBtnWrap.appendChild(totalConsumerCountBtn);\r\n btnWrap.appendChild(totalConsumerCountBtnWrap);\r\n }\r\n\r\n async function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedLocationNameBtn') {\r\n selectedLocationName = 'All';\r\n selectedLocationId = '0';\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n const groupResults = await getConsumerGroupsData(selectedLocationId);\r\n rosterGroups = groupResults;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n }\r\n if (closeFilter == 'selectedGroupNameBtn') {\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n }\r\n\r\n toggleMassAbsentBtn();\r\n filterApply();\r\n }\r\n\r\n function buildDateInput() {\r\n var defaultVal = selectedDate ? selectedDate : UTIL.getTodaysDate();\r\n var date = input.build({\r\n type: 'date',\r\n label: 'Date',\r\n style: 'secondary',\r\n value: defaultVal,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n return date;\r\n }\r\n function buildLocationDropdown() {\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'rosterLocationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n });\r\n\r\n return locationDropdown;\r\n }\r\n function buildGroupDropdown() {\r\n var groupDropdown = dropdown.build({\r\n dropdownId: 'rosterGroupDropdown',\r\n label: 'Groups',\r\n style: 'secondary',\r\n readonly: $.session.formsCaseload == true && $.loadedApp === 'forms' ? true : false,\r\n });\r\n\r\n return groupDropdown;\r\n }\r\n function buildActiveDropdown() {\r\n var activeDropdown = dropdown.build({\r\n dropdownId: 'rosterActiveDropdown',\r\n label: 'Show Inactive?',\r\n style: 'secondary',\r\n });\r\n\r\n return activeDropdown;\r\n }\r\n function buildFilterPopup(IsShow) {\r\n // popup\r\n FILTER_POPUP = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n DATE_INPUT = buildDateInput();\r\n LOCATION_DROPDOWN = buildLocationDropdown();\r\n GROUP_DROPDOWN = buildGroupDropdown();\r\n ACTIVE_DROPDOWN = buildActiveDropdown();\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n if (!hideDateFilter) {\r\n if (IsShow == 'ALL' || IsShow == 'filteredDateBtn') FILTER_POPUP.appendChild(DATE_INPUT);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'selectedLocationNameBtn') FILTER_POPUP.appendChild(LOCATION_DROPDOWN);\r\n if (IsShow == 'ALL' || IsShow == 'selectedGroupNameBtn') FILTER_POPUP.appendChild(GROUP_DROPDOWN);\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n if (IsShow == 'ALL' || IsShow == 'selectedActiveBtn') FILTER_POPUP.appendChild(ACTIVE_DROPDOWN);\r\n }\r\n FILTER_POPUP.appendChild(btnWrap);\r\n\r\n setupFilterEvent();\r\n\r\n POPUP.show(FILTER_POPUP);\r\n\r\n populateLocationDropdown();\r\n populateGroupDropdown();\r\n populateActiveDropdown();\r\n\r\n if (islocationDisabled)\r\n LOCATION_DROPDOWN.classList.add('disabled');\r\n }\r\n // filter dropdowns\r\n function populateLocationDropdown() {\r\n var defaultVal = selectedLocationId ? selectedLocationId : defaults.getLocation('roster');\r\n var defaultValName;\r\n var data = rosterLocations.map(r => {\r\n var attributes = [{ key: 'data-residence', value: r.Residence }];\r\n\r\n var hasUnreadLocationNote = locationsWithUnreadNotes.filter(loc => loc.loc_id === r.ID);\r\n hasUnreadLocationNote = hasUnreadLocationNote.length > 0 ? true : false;\r\n\r\n if (r.ID === defaultVal) {\r\n defaultValName = r.Name;\r\n if (hasUnreadLocationNote) {\r\n LOCATION_NOTES_BTN.classList.add('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n }\r\n }\r\n\r\n if (hasUnreadLocationNote) {\r\n attributes.push({ key: 'data-hasUnreadNote', value: 'true' });\r\n } else {\r\n attributes.push({ key: 'data-hasUnreadNote', value: 'false' });\r\n }\r\n\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name,\r\n attributes,\r\n };\r\n });\r\n var allOpt = {\r\n value: '0',\r\n text: 'All',\r\n };\r\n\r\n data.unshift(allOpt);\r\n\r\n dropdown.populate(LOCATION_DROPDOWN, data, defaultVal);\r\n\r\n selectedLocationId = defaultVal;\r\n if (selectedLocationId === '0') {\r\n selectedLocationName = 'All';\r\n } else {\r\n selectedLocationName = defaultValName;\r\n }\r\n }\r\n function populateGroupDropdown() {\r\n var locId = selectedLocationId === '0' ? '0' : selectedLocationId;\r\n var defaultVal;\r\n if ($.session.formsCaseload == true && $.loadedApp === 'forms') {\r\n defaultVal = `CAS-${locId}`;\r\n selectedGroupCode = 'CAS';\r\n } else {\r\n defaultVal = selectedGroupCode\r\n ? selectedGroupCode === 'ALL'\r\n ? `${selectedGroupCode}-${locId}`\r\n : `${selectedGroupCode}-${selectedGroupId}`\r\n : '';\r\n }\r\n\r\n groupCodeObj = {};\r\n\r\n var data = rosterGroups.map(r => {\r\n // dataObj for quick lookup\r\n if (!groupCodeObj[r.GroupCode]) {\r\n groupCodeObj[r.GroupCode] = {\r\n groupCode: r.GroupCode,\r\n groupName: r.GroupName,\r\n members: r.Members ? r.Members.split('|') : r.Members,\r\n };\r\n }\r\n\r\n return {\r\n value: `${r.GroupCode}-${r.RetrieveID}`,\r\n text: r.GroupName,\r\n attributes: [{ key: 'data-retrieveId', value: r.RetrieveID }],\r\n };\r\n });\r\n\r\n dropdown.populate('rosterGroupDropdown', data, defaultVal);\r\n\r\n if (!selectedGroupName) {\r\n selectedGroupCode = data[0].value;\r\n selectedGroupName = data[0].text;\r\n selectedGroupId = data[0].attributes[0].value;\r\n }\r\n }\r\n\r\n function populateActiveDropdown() {\r\n const activeDropdownData = ([\r\n { id: 1, value: 'Yes', text: 'Yes' },\r\n { id: 2, value: 'No', text: 'No' },\r\n ]);\r\n dropdown.populate(\"rosterActiveDropdown\", activeDropdownData, selectedActive);\r\n }\r\n // filter events\r\n function setupFilterEvent() {\r\n var oldDate;\r\n var oldLocationName;\r\n var oldLocationId;\r\n var oldGroupCode;\r\n var oldGroupId;\r\n var oldGroupName;\r\n var oldRosterGroups;\r\n\r\n var locationHasUnreadNote;\r\n\r\n DATE_INPUT.addEventListener('change', event => {\r\n oldDate = selectedDate;\r\n selectedDate = event.target.value;\r\n });\r\n LOCATION_DROPDOWN.addEventListener('change', event => locationDropdownEvent(event));\r\n async function locationDropdownEvent(event) {\r\n if (islocationDisabled)\r\n return;\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n oldLocationId = selectedLocationId;\r\n oldLocationName = selectedLocationName;\r\n selectedLocationId = selectedOption.value;\r\n selectedLocationName = selectedOption.innerHTML;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n toggleMassAbsentBtn();\r\n toggleLocationNotesBtn();\r\n\r\n const hasUnreadNote = selectedOption.dataset.hasunreadnote === 'true' ? true : false;\r\n locationHasUnreadNote = hasUnreadNote;\r\n\r\n const groupResults = await getConsumerGroupsData(selectedLocationId);\r\n\r\n oldRosterGroups = rosterGroups;\r\n oldGroupId = selectedGroupId;\r\n oldGroupCode = selectedGroupCode;\r\n oldGroupName = selectedGroupName;\r\n\r\n rosterGroups = groupResults;\r\n selectedGroupId = groupResults[0].RetrieveID;\r\n selectedGroupCode = groupResults[0].GroupCode;\r\n // selectedGroupName = groupResults[0].GroupName;\r\n $.session.formsCaseload == true && $.loadedApp === 'forms'\r\n ? (selectedGroupName = 'Caseload')\r\n : (selectedGroupName = groupResults[0].GroupName);\r\n //selectedLocationId = tmpLocationId;\r\n populateGroupDropdown();\r\n }\r\n GROUP_DROPDOWN.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldGroupId = selectedGroupId;\r\n oldGroupCode = selectedGroupCode;\r\n oldGroupName = selectedGroupName;\r\n\r\n selectedGroupCode = selectedOption.value.split('-')[0];\r\n selectedGroupId = selectedOption.dataset.retrieveid;\r\n selectedGroupName = selectedOption.innerHTML;\r\n });\r\n ACTIVE_DROPDOWN.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedActive = selectedOption.value;\r\n });\r\n APPLY_BTN.addEventListener('click', async () => {\r\n POPUP.hide(FILTER_POPUP);\r\n filterApply();\r\n });\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(FILTER_POPUP);\r\n\r\n if (oldDate) selectedDate = oldDate;\r\n if (oldLocationId) selectedLocationId = oldLocationId;\r\n if (oldLocationName) selectedLocationName = oldLocationName;\r\n if (oldGroupId) selectedGroupId = oldGroupId;\r\n if (oldGroupCode) selectedGroupCode = oldGroupCode;\r\n if (oldGroupName) selectedGroupName = oldGroupName;\r\n if (oldRosterGroups) rosterGroups = oldRosterGroups;\r\n });\r\n }\r\n\r\n function filterUpdateDisplay() {\r\n if (selectedDate === '') {\r\n selectedDate = UTIL.getTodaysDate();\r\n }\r\n var splitDate = selectedDate.split('-');\r\n filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n if (document.getElementById('filteredDateBtn') != null)\r\n document.getElementById('filteredDateBtn').innerHTML = 'Date: ' + filteredDate;\r\n\r\n if (selectedLocationName === '%' || selectedLocationName === 'All') {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n document.getElementById('selectedLocationNameBtn').innerHTML = 'Location: ' + selectedLocationName;\r\n }\r\n\r\n if (selectedGroupName === '%' || selectedGroupName === 'Everyone') {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n }\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n\r\n if ($.session.applicationName == 'Gatekeeper' && ($.loadedApp === 'roster' || $.loadedApp === 'casenotes')) {\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n if (document.getElementById('selectedActiveBtn') != null)\r\n document.getElementById('selectedActiveBtn').innerHTML = 'Show Inactives: ' + selectedActive;\r\n }\r\n\r\n if (!rosterListSelectable) {\r\n consumerInfo.toggleHideShowAbsentMenuSection(selectedLocationId);\r\n }\r\n\r\n if (selectedLocationId !== '000') {\r\n if (defaults.rememberLastLocation('roster')) defaults.setLocation('roster', selectedLocationId);\r\n }\r\n\r\n if ($.loadedApp === 'ConsumerFinances' || $.loadedApp === 'CFEditAccount') {\r\n if (defaults.rememberLastLocation('moneyManagement')) defaults.setLocation('moneyManagement', selectedLocationId);\r\n }\r\n }\r\n async function filterApply() {\r\n customGroups.init(rosterGroups);\r\n\r\n if (locationHasUnreadNote) {\r\n LOCATION_NOTES_BTN.classList.add('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n }\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n\r\n ROSTER_SPINNER = PROGRESS.SPINNER.get('Please wait while we gather everyone up...');\r\n ROSTER_WRAP.insertBefore(ROSTER_SPINNER, ROSTER_WRAP.lastChild);\r\n totalConsumerCount = 0;\r\n await getRosterConsumersData(true);\r\n //Ugly... should be re-done to be able to pass a custom apply action for the filter if needed\r\n // but I'm running out of thime for this release. THis is needed to reset the set allowed consumers\r\n //when filtering on a location or group.\r\n if ($.loadedApp === 'timeEntry') {\r\n await timeEntryCard.customRosterApplyFilterEvent();\r\n }\r\n populateRoster();\r\n filterUpdateDisplay();\r\n }\r\n // Top Nav\r\n //---------------------------------------------\r\n function toggleLocationNotesBtn() {\r\n if (selectedLocationId === '0' || selectedLocationName === 'All' || $.session.useProgressNotes === 'N') {\r\n LOCATION_NOTES_BTN.classList.add('disabled');\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('disabled');\r\n }\r\n }\r\n function toggleMassAbsentBtn() {\r\n var useAbsent = $.session.useAbsentFeature === 'Y' ? true : false;\r\n\r\n if (!useAbsent || selectedLocationId === '0' || selectedLocationName === 'All') {\r\n MASS_ABSENT_BTN.classList.add('disabled');\r\n } else {\r\n MASS_ABSENT_BTN.classList.remove('disabled');\r\n }\r\n }\r\n function buildFilterBtn() {\r\n return button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n });\r\n }\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n function buildSelectAllBtn() {\r\n return button.build({\r\n icon: 'selectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildDeSelectAllBtn() {\r\n return button.build({\r\n icon: 'deSelectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'deselectAllBtn',\r\n });\r\n }\r\n function buildLocationNotesBtn() {\r\n var hasUnreadLocationNote =\r\n locationsWithUnreadNotes && locationsWithUnreadNotes.filter(loc => loc.loc_id === selectedLocationId);\r\n hasUnreadLocationNote = hasUnreadLocationNote.length > 0 ? true : false;\r\n\r\n const locationNotesBtnClassNames = ['locationNotesBtn'];\r\n\r\n if (selectedLocationId === '0' || selectedLocationName === 'All' || $.session.useProgressNotes === 'N') {\r\n locationNotesBtnClassNames.push('disabled');\r\n }\r\n if (hasUnreadLocationNote && $.session.useProgressNotes === 'Y') {\r\n locationNotesBtnClassNames.push('attention');\r\n }\r\n\r\n return button.build({\r\n text: 'Location Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'note',\r\n classNames: locationNotesBtnClassNames,\r\n });\r\n }\r\n\r\n function buildMassAbsentSelectAllBtn() {\r\n return button.build({\r\n id: 'massAbsentSelectAllBtn',\r\n text: 'Select All',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildMassAbsentDeselectAllBtn() {\r\n return button.build({\r\n id: 'massAbsentDeselectAllBtn',\r\n text: 'Select None',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildMassAbsentBtn() {\r\n var useAbsent = $.session.useAbsentFeature === 'Y' ? true : false;\r\n\r\n return button.build({\r\n text: 'Mass Absent',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'no',\r\n classNames:\r\n selectedLocationId === '0' || selectedLocationName === 'All' || !useAbsent\r\n ? ['massAbsentBtn', 'disabled']\r\n : ['massAbsentBtn'],\r\n toggle: true,\r\n });\r\n }\r\n function buildManageGroupsBtn() {\r\n return button.build({\r\n text: 'Manage Groups',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'people',\r\n });\r\n }\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n FILTER_BTN = buildFilterBtn();\r\n SEARCH_BTN = buildSearchBtn();\r\n SELECT_ALL_BTN = buildSelectAllBtn();\r\n DESELECT_ALL_BTN = buildDeSelectAllBtn();\r\n LOCATION_NOTES_BTN = buildLocationNotesBtn();\r\n MASS_ABSENT_BTN = buildMassAbsentBtn();\r\n MANAGE_GROUPS_BTN = buildManageGroupsBtn();\r\n\r\n MASS_SELECT_ALL_BTN = buildMassAbsentSelectAllBtn();\r\n MASS_DESELECT_ALL_BTN = buildMassAbsentDeselectAllBtn();\r\n MASS_SELECT_ALL_BTN.classList.add('marginRight10px');\r\n MASS_DESELECT_ALL_BTN.classList.add('marginRight10px');\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n // SEARCH_WRAP.classList.add('rosterSearch', 'searchOpen');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n \r\n if (rosterListSelectable) {\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap2.classList.add('btnWrap');\r\n // btns to show => selectAll, deselectAll\r\n wrap1.appendChild(SEARCH_WRAP);\r\n wrap2.appendChild(FILTER_BTN);\r\n wrap2.appendChild(SELECT_ALL_BTN);\r\n wrap2.appendChild(DESELECT_ALL_BTN);\r\n\r\n btnWrap.appendChild(wrap1);\r\n btnWrap.appendChild(wrap2);\r\n } else {\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n var wrap3 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap2.classList.add('btnWrap');\r\n wrap2.classList.add('rosterNotesAbsentGroups');\r\n wrap3.classList.add('massSelectbtnWrap');\r\n // btns to show => search, notes, absent, groups\r\n wrap1.appendChild(FILTER_BTN);\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n wrap2.appendChild(LOCATION_NOTES_BTN);\r\n wrap2.appendChild(MASS_ABSENT_BTN);\r\n wrap2.appendChild(MANAGE_GROUPS_BTN);\r\n\r\n wrap3.appendChild(MASS_SELECT_ALL_BTN);\r\n wrap3.appendChild(MASS_DESELECT_ALL_BTN);\r\n\r\n btnWrap.appendChild(wrap1);\r\n btnWrap.appendChild(wrap2);\r\n btnWrap.appendChild(wrap3);\r\n }\r\n\r\n return btnWrap;\r\n }\r\n\r\n // Roster Consumers\r\n //---------------------------------------------\r\n function populateConsumerCardPortraits() {\r\n const consumerCards = [...document.querySelectorAll('.consumerCard')];\r\n consumerCards.forEach(card => {\r\n const id = card.dataset.consumerId;\r\n const portrait = card.querySelector('.portrait');\r\n portrait.innerHTML = `\r\n `;\r\n });\r\n }\r\n function buildConsumerCard(consumerData) {\r\n const fName = consumerData.FN ? consumerData.FN.trim() : '';\r\n const lName = consumerData.LN ? consumerData.LN.trim() : '';\r\n const mName = consumerData.MN ? consumerData.MN.trim() : '';\r\n const id = consumerData.id;\r\n const serviceLocations = consumerData.LId;\r\n const primaryLocation = consumerData.conL;\r\n const hasUnreadNote = consumersWithUnreadNotes && consumersWithUnreadNotes[consumerData.id] ? true : false;\r\n const isAbsent = absentConsumers && absentConsumers[consumerData.id] ? true : false;\r\n const isActive = activeConsumers && activeConsumers.filter(ac => ac.id === consumerData.id);\r\n const isSelected = selectedConsumers && selectedConsumers.filter(sc => sc.id === consumerData.id);\r\n const hasAlert = consumersWithAlerts && consumersWithAlerts.filter(cwa => cwa === consumerData.id);\r\n const showAlert = hasAlert && hasAlert.length !== 0 ? true : false;\r\n const dateOfBirth = consumerData.dob ? consumerData.dob.split(' ')[0] : '';\r\n\r\n var isInactive = false; \r\n if ($.session.applicationName === 'Advisor') { \r\n if (consumerData.IDa != undefined && consumerData.IDa != '' && UTIL.formatDateToIso(consumerData.IDa.split(' ')[0]) <= selectedDate) {\r\n isInactive = true; \r\n }\r\n\r\n } else if ($.session.applicationName === 'Gatekeeper') {\r\n if (consumerData.statusCode == 'I' && consumerData.IDa != undefined && consumerData.IDa != '' && UTIL.formatDateToIso(consumerData.IDa.split(' ')[0]) <= selectedDate) {\r\n isInactive = true;\r\n }\r\n }\r\n let isAllowed;\r\n if (!allowedConsumerIds) {\r\n isAllowed = true;\r\n } else if (allowedConsumerIds[0] === '%') {\r\n isAllowed = true;\r\n } else {\r\n isAllowed = allowedConsumerIds.filter(consumerId => consumerId === id);\r\n isAllowed = isAllowed.length === 0 ? false : true;\r\n }\r\n\r\n const consumerCard = document.createElement('div');\r\n consumerCard.classList.add('consumerCard');\r\n consumerCard.setAttribute('data-consumer-id', id);\r\n consumerCard.setAttribute('data-dob', dateOfBirth);\r\n\r\n if (serviceLocations) {\r\n consumerCard.setAttribute('data-service-locations', serviceLocations);\r\n }\r\n if (primaryLocation && $.session.applicationName === 'Advisor') {\r\n consumerCard.setAttribute('data-primary-location', primaryLocation);\r\n }\r\n if (hasUnreadNote) {\r\n consumerCard.setAttribute('data-unreadnote', 'true');\r\n } else {\r\n consumerCard.setAttribute('data-unreadnote', 'false');\r\n }\r\n\r\n if (isSelected.length > 0 && rosterListSelectable) {\r\n consumerCard.classList.add('highlighted', 'consumer-selected');\r\n }\r\n\r\n\r\n if ((isActive && isActive.length >= 1) || !isAllowed) {\r\n if ($.loadedApp === 'outcomes') {\r\n consumerCard.classList.remove('disabled');\r\n consumerCard.classList.add('disabledClickable');\r\n } else {\r\n consumerCard.classList.add('disabled');\r\n }\r\n } else {\r\n consumerCard.classList.remove('disabled');\r\n }\r\n\r\n const portrait = document.createElement('div');\r\n const details = document.createElement('div');\r\n const alertIcons = document.createElement('div');\r\n const d = new Date();\r\n const time = d.getTime();\r\n portrait.classList.add('portrait');\r\n if (isInactive)\r\n details.classList.add('inactiveDetails');\r\n else\r\n details.classList.add('details');\r\n alertIcons.classList.add('icons');\r\n portrait.innerHTML = `''`;\r\n portrait.innerHTML = `\r\n `;\r\n details.innerHTML = `\r\n
    \r\n

    ${lName},

    \r\n\t\t

    ${fName} ${mName}

    \r\n
    `;\r\n alertIcons.innerHTML = `\r\n ${isAbsent ? `A` : ''}\r\n ${!rosterListSelectable ? (hasUnreadNote ? `${icons['bell']}` : '') : ''}\r\n\t\t`;\r\n\r\n consumerCard.appendChild(portrait);\r\n consumerCard.appendChild(details);\r\n consumerCard.appendChild(alertIcons);\r\n\r\n if (showAlert) {\r\n var ICONS = consumerCard.querySelector('.icons');\r\n var iconsSVG = ICONS.querySelector('.alertIcon');\r\n var iconSVG = document.createElement('p');\r\n iconSVG.classList.add('alertIcon');\r\n iconSVG.innerHTML = icons['error'];\r\n if (ICONS) {\r\n if (!iconsSVG) {\r\n ICONS.appendChild(iconSVG);\r\n }\r\n }\r\n }\r\n\r\n return consumerCard;\r\n }\r\n\r\n // Mini Roster Popup\r\n //---------------------------------------------\r\n function toggleActionCenterChildrenVisiblity(hideOrShow) {\r\n const actionCenterChildren = [...DOM.ACTIONCENTER.children];\r\n actionCenterChildren.forEach(child => {\r\n if (hideOrShow === 'hide') {\r\n child.style.display = 'none';\r\n return;\r\n }\r\n child.removeAttribute('style');\r\n });\r\n }\r\n function actionNavCallback(e) {\r\n SELECT_ALL_BTN.classList.remove('disabled');\r\n DESELECT_ALL_BTN.classList.remove('disabled');\r\n\r\n if (MINI_ROSTER_BTN) MINI_ROSTER_BTN.classList.remove('disabled');\r\n\r\n DOM.ACTIONCENTER.removeChild(MINI_ROSTER_POPUP);\r\n toggleActionCenterChildrenVisiblity('show');\r\n\r\n if (e.target === MINI_ROSTER_DONE) {\r\n roster2.selectedConsumersToActiveList();\r\n }\r\n }\r\n function buildActioNav() {\r\n MINI_ROSTER_DONE = button.build({\r\n text: 'Done',\r\n icon: 'checkmark',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'miniRosterDone' }],\r\n classNames: ['disabled'],\r\n callback: actionNavCallback,\r\n });\r\n MINI_ROSTER_CANCEL = button.build({\r\n text: 'Cancel',\r\n icon: 'close',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{ key: 'data-action-nav', value: 'miniRosterCancel' }],\r\n callback: actionNavCallback,\r\n });\r\n\r\n ACTION_NAV.populate([MINI_ROSTER_DONE, MINI_ROSTER_CANCEL]);\r\n }\r\n function getMiniRosterHeadline(consumercount) {\r\n switch ($.loadedApp) {\r\n case 'incidenttracking': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to add them to this incident. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'timeEntry': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to add them to this entry. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'workshop': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to clock them in or out. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'plan': {\r\n return `Select a consumer below`;\r\n }\r\n default: {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n }\r\n }\r\n function buildMiniRosterPopup(rosterMarkup) {\r\n const miniRosterWrap = document.createElement('div');\r\n miniRosterWrap.classList.add('enabledConsumers', 'miniRoster');\r\n miniRosterWrap.setAttribute('data-roster', 'enabled');\r\n\r\n var headline = document.createElement('h3');\r\n headline.classList.add('miniRosterHeadline');\r\n headline.innerHTML = getMiniRosterHeadline();\r\n\r\n // miniRosterWrap.appendChild(headline);\r\n rosterMarkup.insertBefore(headline, rosterMarkup.firstChild.nextSibling);\r\n miniRosterWrap.appendChild(rosterMarkup);\r\n\r\n return miniRosterWrap;\r\n }\r\n function showMiniRosterPopup(rosterMarkup) {\r\n if (MINI_ROSTER_BTN) MINI_ROSTER_BTN.classList.add('disabled');\r\n\r\n const activeSection = DOM.ACTIONCENTER.dataset.activeSection;\r\n //buttons need to be disabled. This will need to\r\n // be modified if more modules need these buttons disabled\r\n\r\n toggleActionCenterChildrenVisiblity('hide');\r\n\r\n MINI_ROSTER_POPUP = buildMiniRosterPopup(rosterMarkup);\r\n DOM.ACTIONCENTER.appendChild(MINI_ROSTER_POPUP);\r\n buildActioNav();\r\n if (\r\n $.loadedApp === 'outcomes' ||\r\n $.loadedApp === 'plan' ||\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n activeSection === 'caseNotesSSA-new' ||\r\n activeSection === 'caseNotes-new' ||\r\n $.loadedApp === 'authorizations'\r\n ) {\r\n SELECT_ALL_BTN.classList.add('disabled');\r\n DESELECT_ALL_BTN.classList.add('disabled');\r\n MINI_ROSTER_DONE.style.display = 'none';\r\n MINI_ROSTER_CANCEL.style.display = 'none';\r\n }\r\n }\r\n /**\r\n * Initializes the mini roster. Removes the mini roster button, and re-adds it with new settings.\r\n * @param {Object} locationData - Location information Object. Only use if you need to bypass the roster's default location.\r\n * @param {string} locationData.locationId - The Location ID\r\n * @param {string} locationData.locationName - The Location Name. If location name is not known, pass an empty string.\r\n * @param {Object} rosterOptions - Options for customizing the mini roster\r\n * @param {boolean} rosterOptions.hideDate - true = hide date selection. For example, SE has pay period date restrictions.\r\n * someone could change the date on the roster outside of the payperiod and choose someone who may be inactive. Removing this option alltogether prevents this.\r\n * !IMPORTANT! If setting this to true, you must update the roster date when they change the date within the module using roster2.updateSelectedDate()\r\n */\r\n async function miniRosterinit(locationData, rosterOptions) {\r\n removeMiniRosterBtn();\r\n // Reset date from moving between modules:\r\n selectedDate = UTIL.getTodaysDate();\r\n if (locationData) {\r\n const { locationId, locationName } = locationData;\r\n if (locationName && locationId) {\r\n selectedLocationName = locationName;\r\n selectedLocationId = locationId;\r\n } else if (locationName === '') {\r\n if (locationId === '0') {\r\n selectedLocationName = 'All';\r\n selectedLocationId = locationId;\r\n } else {\r\n rosterLocations = rosterLocations ?? (await getRosterLocationsData());\r\n const selectedLocationObj = rosterLocations.filter(loc => locationId === loc.ID);\r\n selectedLocationName = selectedLocationObj[0].Name;\r\n selectedLocationId = locationId;\r\n }\r\n }\r\n // reset group when custom location is passed:\r\n selectedGroupId = selectedLocationId;\r\n selectedGroupCode = 'ALL';\r\n selectedGroupName = 'Everyone';\r\n }\r\n MINI_ROSTER_BTN = button.build({\r\n icon: 'people',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'mini_roster',\r\n // classNames: ['floatingActionBtn', 'consumerListBtn', 'disabled'],\r\n classNames: ['floatingActionBtn', 'consumerListBtn'],\r\n callback: async () => {\r\n if (\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'assessmentHistory'\r\n ) {\r\n clearSelectedConsumers();\r\n clearActiveConsumers();\r\n }\r\n MINI_ROSTER_BTN.classList.add('disabled');\r\n await showMiniRoster(rosterOptions);\r\n MINI_ROSTER_BTN.classList.remove('disabled');\r\n },\r\n });\r\n\r\n document.body.appendChild(MINI_ROSTER_BTN);\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n async function showMiniRoster(\r\n rosterOptions = {\r\n hideDate: false,\r\n locationDisabled: false\r\n },\r\n ) {\r\n const rosterMarkup = await buildRoster({\r\n selectable: true,\r\n hideDateFilter: rosterOptions.hideDate ? true : false,\r\n disabledLocation: rosterOptions.locationDisabled ? true : false,\r\n });\r\n showMiniRosterPopup(rosterMarkup);\r\n totalConsumerCount = 0;\r\n selectedActive = 'No';\r\n await getRosterConsumersData();\r\n populateRoster();\r\n document.getElementById('searchBtn').click();\r\n //filterApply(); \r\n filterUpdateDisplay();\r\n }\r\n /**\r\n * Enables or disables the mini roster button.\r\n * @param {boolean} showBtn - True = enable the mini roster button\r\n */\r\n function toggleMiniRosterBtnVisible(showBtn) {\r\n if (showBtn) {\r\n MINI_ROSTER_BTN.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_BTN.classList.add('disabled');\r\n }\r\n }\r\n // Roster Data\r\n //---------------------------------------------\r\n async function getRosterLocationsData() {\r\n try {\r\n const data = (await rosterAjax.getRosterLocations()).getLocationsJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerGroupsData() {\r\n try {\r\n const data = (await customGroupsAjax.getConsumerGroups(selectedLocationId)).getConsumerGroupsJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getLocationsWithUnreadNotesData() {\r\n try {\r\n const data = (await locationNotesAjax.getLocationsWithUnreadNotes()).getLocationsWithUnreadNotesResult;\r\n return JSON.parse(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumersByGroupData(getConsumerByGroupData) {\r\n try {\r\n const data = (await rosterAjax.getConsumersByGroup(getConsumerByGroupData)).getConsumersByGroupJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumersWithUnreadNotesByEmployeeAndLocationData(selectedLocationId) {\r\n try {\r\n const data = (await progressNotesAjax.getConsumersWithUnreadNotesByEmployeeAndLocation(selectedLocationId))\r\n .getConsumersWithUnreadNotesByEmployeeAndLocationResult;\r\n return JSON.parse(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getRosterConsumersData(forceGroupFilter) {\r\n if ($.session.formsCaseload == true && $.loadedApp === 'forms') selectedGroupCode = 'CAS';\r\n const getConsumerByGroupData = {\r\n selectedGroupCode,\r\n selectedGroupId,\r\n selectedLocationId,\r\n selectedDate,\r\n selectedActive,\r\n };\r\n\r\n if (!rosterConsumers || rosterConsumers.length === 0 || forceGroupFilter) {\r\n rosterConsumers = await getConsumersByGroupData(getConsumerByGroupData);\r\n }\r\n\r\n // I am not sure why consumer location was being set to the selected location ID?\r\n const seenIds = {};\r\n\r\n rosterConsumers = rosterConsumers.filter(consumer => {\r\n if (seenIds[consumer.id]) {\r\n return false;\r\n } else {\r\n seenIds[consumer.id] = true;\r\n return true;\r\n }\r\n });\r\n groupRosterConsumers();\r\n\r\n if (selectedLocationId !== '0') {\r\n const consumersWithUnreadNotesResults = await getConsumersWithUnreadNotesByEmployeeAndLocationData(\r\n selectedLocationId,\r\n );\r\n consumersWithUnreadNotes = progressNotes.createConsumersWithUnreadNotesObj(consumersWithUnreadNotesResults);\r\n } else {\r\n consumersWithUnreadNotes = {};\r\n }\r\n\r\n absentConsumers = await rosterAbsent.getAbsentConsumers(selectedLocationId, selectedDate);\r\n }\r\n async function getRosterData() {\r\n if (!selectedDate) selectedDate = UTIL.getTodaysDate();\r\n\r\n rosterLocations = await getRosterLocationsData();\r\n if (!selectedLocationId || rosterLocations.filter(loc => loc.ID === selectedLocationId).length === 0) {\r\n if (selectedLocationId !== '0') setSelectedLocationData();\r\n }\r\n\r\n rosterGroups = await getConsumerGroupsData(selectedLocationId);\r\n if (!selectedGroupName || ($.session.formsCaseload == true && $.loadedApp === 'forms')) setSelectedGroupData();\r\n\r\n locationsWithUnreadNotes = await getLocationsWithUnreadNotesData();\r\n }\r\n\r\n // Roster List\r\n //---------------------------------------------\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreConsumersBtn');\r\n\r\n const btn = button.build({\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n populateRoster(true);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(btn);\r\n\r\n return btnWrap;\r\n }\r\n function toggleRosterListLockdown(lockItDown) {\r\n if (lockItDown) {\r\n ROSTER_WRAP.classList.add('disabled');\r\n } else {\r\n ROSTER_WRAP.classList.remove('disabled');\r\n }\r\n }\r\n async function refreshRosterList() {\r\n rosterListSelectable = false;\r\n setActiveModuleSectionAttribute('roster-info');\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists && rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n totalConsumerCount = 0;\r\n\r\n await getRosterData();\r\n await getRosterConsumersData(true);\r\n populateRoster();\r\n }\r\n function rosterEventSetup() {\r\n ROSTER_WRAP.addEventListener('click', e => {\r\n const isConsumer = event.target.classList.contains('consumerCard');\r\n if (!isConsumer) return;\r\n const consumer = event.target;\r\n const consumerId = event.target.dataset.consumerId;\r\n\r\n const activeSection = DOM.ACTIONCENTER.dataset.activeSection;\r\n\r\n if (activeSection === 'roster-info') {\r\n toggleRosterListLockdown(true);\r\n DOM.scrollToTopOfPage();\r\n consumerInfo.showCard(consumer);\r\n return;\r\n }\r\n\r\n const isConsumerSelected = consumer.classList.contains('consumer-selected');\r\n // var activeSection = actioncenter.dataset.activeSection;\r\n\r\n if (\r\n $.loadedApp === 'outcomes' ||\r\n $.loadedApp === 'plan' ||\r\n $.loadedApp === 'authorizations' ||\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n activeSection === 'caseNotesSSA-new' ||\r\n activeSection === 'caseNotes-new'\r\n ) {\r\n // add modules that only allow one consumer\r\n if (isConsumerSelected) {\r\n consumer.classList.remove('consumer-selected');\r\n consumer.classList.remove('highlighted');\r\n removeConsumerFromSelectedConsumers(consumerId);\r\n } else {\r\n const currentlySelectedConsumer = ROSTER_WRAP.querySelector('.consumer-selected');\r\n if (currentlySelectedConsumer) {\r\n const currentlySelectedConsumerId = currentlySelectedConsumer.dataset.consumerId;\r\n currentlySelectedConsumer.classList.remove('highlighted');\r\n currentlySelectedConsumer.classList.remove('consumer-selected');\r\n removeConsumerFromSelectedConsumers(currentlySelectedConsumerId);\r\n }\r\n consumer.classList.add('consumer-selected');\r\n consumer.classList.add('highlighted');\r\n addConsumerToSelectedConsumers(consumer);\r\n }\r\n\r\n // only one consumer selection page rediret to main page without done button\r\n MINI_ROSTER_DONE.setAttribute('data-action-nav', 'miniRosterDone');\r\n MINI_ROSTER_DONE.click();\r\n } else {\r\n if (!isConsumerSelected) {\r\n addConsumerToSelectedConsumers(consumer);\r\n consumer.classList.add('consumer-selected');\r\n consumer.classList.add('highlighted');\r\n } else {\r\n consumer.classList.remove('consumer-selected');\r\n consumer.classList.remove('highlighted');\r\n removeConsumerFromSelectedConsumers(consumerId);\r\n }\r\n }\r\n\r\n if (activeSection === 'roster-absent') {\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n return;\r\n }\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n SELECT_ALL_BTN.addEventListener('click', event => {\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard:not(.highlighted)'));\r\n consumers.forEach(c => {\r\n if (c.classList.contains('disabled')) return;\r\n var consumer = c.cloneNode(true);\r\n addConsumerToSelectedConsumers(consumer);\r\n c.classList.add('consumer-selected', 'highlighted');\r\n });\r\n\r\n const groupCount = Object.keys(groupedRosterConsumers).length;\r\n const nextGroup = activeGroup + 1;\r\n for (let i = nextGroup; i <= groupCount; i++) {\r\n if (groupedRosterConsumers[i]) {\r\n groupedRosterConsumers[i].forEach(c => {\r\n var consumer = buildConsumerCard(c);\r\n if (consumer.classList.contains('disabled')) return;\r\n addConsumerToSelectedConsumers(consumer);\r\n });\r\n }\r\n }\r\n\r\n console.table(selectedConsumers);\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n DESELECT_ALL_BTN.addEventListener('click', event => {\r\n clearHighlightedConsumers();\r\n clearSelectedConsumers();\r\n\r\n console.table(selectedConsumers);\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n MASS_SELECT_ALL_BTN.addEventListener('click', event => {\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard:not(.highlighted)'));\r\n consumers.forEach(c => {\r\n if (c.classList.contains('disabled')) return;\r\n var consumer = c.cloneNode(true);\r\n addConsumerToSelectedConsumers(consumer);\r\n c.classList.add('consumer-selected', 'highlighted');\r\n });\r\n\r\n const groupCount = Object.keys(groupedRosterConsumers).length;\r\n const nextGroup = activeGroup + 1;\r\n for (let i = nextGroup; i <= groupCount; i++) {\r\n if (groupedRosterConsumers[i]) {\r\n groupedRosterConsumers[i].forEach(c => {\r\n var consumer = buildConsumerCard(c);\r\n if (consumer.classList.contains('disabled')) return;\r\n addConsumerToSelectedConsumers(consumer);\r\n });\r\n }\r\n }\r\n\r\n console.table(selectedConsumers);\r\n\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n\r\n });\r\n\r\n MASS_DESELECT_ALL_BTN.addEventListener('click', event => {\r\n selectNoneHighlightedConsumers();\r\n clearSelectedConsumers();\r\n\r\n console.table(selectedConsumers);\r\n\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n FILTER_BTN.addEventListener('click', event => {\r\n buildFilterPopup('ALL');\r\n });\r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n searchRoster(event.target.value);\r\n }\r\n });\r\n\r\n MASS_ABSENT_BTN.addEventListener('click', event => {\r\n if (event.target.dataset.toggled === 'true') {\r\n rosterListSelectable = true;\r\n rosterAbsent.initMassAbsent();\r\n setActiveModuleSectionAttribute('roster-absent');\r\n MASS_DESELECT_ALL_BTN.style.display = 'block';\r\n MASS_SELECT_ALL_BTN.style.display = 'block';\r\n } else {\r\n rosterListSelectable = false;\r\n ACTION_NAV.hide();\r\n setActiveModuleSectionAttribute('roster-info');\r\n MASS_DESELECT_ALL_BTN.style.display = 'none';\r\n MASS_SELECT_ALL_BTN.style.display = 'none';\r\n selectNoneHighlightedConsumers();\r\n clearSelectedConsumers();\r\n }\r\n });\r\n\r\n MANAGE_GROUPS_BTN.addEventListener('click', event => {\r\n customGroups.loadManageGroupsPage();\r\n });\r\n\r\n LOCATION_NOTES_BTN.addEventListener('click', event => {\r\n locationNotes.loadAllNotesPage();\r\n });\r\n }\r\n function populateRoster(loadingMore) {\r\n if (!rosterConsumers) return;\r\n\r\n ROSTER_LIST = document.createElement('div');\r\n ROSTER_LIST.classList.add('roster__list');\r\n\r\n if (groupedRosterConsumers[activeGroup]) {\r\n groupedRosterConsumers[activeGroup].forEach(c => ROSTER_LIST.appendChild(buildConsumerCard(c)));\r\n totalConsumerCount = rosterConsumers.length;\r\n }\r\n\r\n if (ROSTER_WRAP.contains(ROSTER_SPINNER)) ROSTER_WRAP.removeChild(ROSTER_SPINNER);\r\n if (!ROSTER_WRAP.contains(LOAD_MORE_BTN)) {\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n ROSTER_WRAP.appendChild(LOAD_MORE_BTN);\r\n }\r\n ROSTER_WRAP.insertBefore(ROSTER_LIST, LOAD_MORE_BTN);\r\n // if (!loadingMore) SEARCH_INPUT.focus();\r\n const nextGroup = activeGroup + 1;\r\n if (!groupedRosterConsumers[nextGroup]) {\r\n ROSTER_WRAP.removeChild(LOAD_MORE_BTN);\r\n }\r\n\r\n updateTotalConsumerCount();\r\n // populateConsumerCardPortraits();\r\n }\r\n function groupRosterConsumers(consumers) {\r\n const chunkBy = 50;\r\n const chunkedArray = consumers ? UTIL.chunkArray(consumers, chunkBy) : UTIL.chunkArray(rosterConsumers, chunkBy);\r\n groupedRosterConsumers = {};\r\n chunkedArray.forEach((a, index) => (groupedRosterConsumers[index] = a));\r\n\r\n const rosterGroupKeys = Object.keys(groupedRosterConsumers);\r\n rosterGroupCount = rosterGroupKeys && rosterGroupKeys.length;\r\n activeGroup = 0;\r\n }\r\n /**\r\n *\r\n * @param {Object} param0\r\n * @param {boolean} param0.hideDateFilter - True = hide Date filter.\r\n *\r\n */\r\n async function buildRoster({ selectable, ...otherOpts }, callback) {\r\n rosterConsumers = [];\r\n\r\n rosterListSelectable = selectable;\r\n hideDateFilter = otherOpts.hideDateFilter;\r\n islocationDisabled = otherOpts.disabledLocation ? true : false;\r\n selectedActive = 'No';\r\n await getRosterData();\r\n\r\n // roster\r\n ROSTER_WRAP = document.createElement('div');\r\n ROSTER_WRAP.classList.add('roster');\r\n // roster topNav\r\n const topNav = buildRosterTopNav();\r\n const filteredBy = buildFilteredBy();\r\n // build roster\r\n ROSTER_SPINNER = PROGRESS.SPINNER.get('Please wait while we gather everyone up...');\r\n ROSTER_WRAP.appendChild(topNav);\r\n ROSTER_WRAP.appendChild(filteredBy);\r\n ROSTER_WRAP.appendChild(ROSTER_SPINNER);\r\n // setup event listener\r\n rosterEventSetup();\r\n\r\n MASS_DESELECT_ALL_BTN.style.display = 'none';\r\n MASS_SELECT_ALL_BTN.style.display = 'none';\r\n\r\n return ROSTER_WRAP;\r\n }\r\n\r\n // Main Module\r\n //---------------------------------------------\r\n async function loadRosterInfo() {\r\n //reset date\r\n selectedDate = UTIL.getTodaysDate();\r\n // clear out roster location and group so it will set back to default roster location (as per ticket 47820)\r\n selectedLocationId = null;\r\n selectedGroupName = null;\r\n\r\n PROGRESS.SPINNER.show('Loading Roster...');\r\n\r\n const rosterMarkup = await buildRoster({\r\n selectable: false,\r\n showActionNavCancel: false,\r\n forMiniRoster: false,\r\n hideDateFilter: false,\r\n });\r\n\r\n setActiveModuleSectionAttribute('roster-info');\r\n DOM.clearActionCenter();\r\n\r\n var consumerInfoCard = consumerInfo.buildCard();\r\n DOM.ACTIONCENTER.appendChild(rosterMarkup);\r\n DOM.ACTIONCENTER.appendChild(consumerInfoCard);\r\n consumerInfo.toggleHideShowAbsentMenuSection(selectedLocationId);\r\n\r\n customGroups.init(rosterGroups);\r\n rosterAbsent.init();\r\n\r\n totalConsumerCount = 0;\r\n selectedActive = 'No';\r\n await getRosterConsumersData();\r\n populateRoster();\r\n document.getElementById('searchBtn').click();\r\n filterUpdateDisplay();\r\n }\r\n\r\n return {\r\n addConsumerToActiveConsumers,\r\n buildRoster,\r\n buildConsumerCard,\r\n clearActiveConsumers,\r\n clearSelectedConsumers,\r\n getActiveConsumers,\r\n getSelectedConsumers,\r\n getSelectedConsumersCache,\r\n getSelectedConsumersMiniRoster,\r\n getSelectedLocationObj,\r\n getSelectedDate,\r\n getRosterLocations,\r\n getAllRosterConsumers,\r\n getConsumersWithUnreadNotes,\r\n getConsumerGroupsData,\r\n loadRosterInfo,\r\n miniRosterinit,\r\n populateRoster,\r\n refreshRosterList,\r\n removeConsumerFromActiveConsumers,\r\n removeMiniRosterBtn,\r\n selectedConsumersToActiveList,\r\n setAllowedConsumers,\r\n setRosterGroups,\r\n setCustomDefaultLocationData,\r\n showMiniRoster,\r\n toggleRosterListLockdown,\r\n toggleMiniRosterBtnVisible,\r\n toggleActionCenterChildrenVisiblity,\r\n updateSelectedDate,\r\n updateSelectedLocationId,\r\n selectNoneHighlightedConsumers,\r\n };\r\n})();\r\n","const rosterAjax = (function () {\r\n function getRosterLocations(callback) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getConsumersByGroup(data, callback) {\r\n // data = {selectedGroupCode, selectedGroupId, selectedLocationId, selectedDate}\r\n var groupCode = data.selectedGroupCode;\r\n var retrieveId =\r\n groupCode === 'CST' || groupCode === 'TRA' || groupCode === 'NAT'\r\n ? data.selectedGroupId\r\n : data.selectedLocationId;\r\n var date = data.selectedDate;\r\n var daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\r\n date = date ? date : UTIL.getTodaysDate();\r\n var selectedActive = data.selectedActive == undefined ? 'No' : data.selectedActive; \r\n \r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersByGroupJSON/',\r\n data:\r\n '{\"groupCode\":\"' +\r\n groupCode +\r\n '\", \"retrieveId\":\"' +\r\n retrieveId +\r\n '\", \"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n date +\r\n '\", \"daysBackDate\":\"' +\r\n daysBackDate +\r\n '\", \"isActive\":\"' +\r\n selectedActive +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getIndividualAbsentData(data, callback) {\r\n //token, locationId, consumerId, checkDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkForIndividualAbsentJSON/',\r\n //data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n try {\r\n var res = response.checkForIndividualAbsentJSONResult;\r\n } catch (e) {\r\n callback('There was a problem parsing checkForIndividualAbsentResult');\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getAllAttachments(data, callback) {\r\n //data = {token, locationId, consumerId, checkDate}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllAttachments/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n try {\r\n var res = response.getAllAttachmentsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback('There was a problem parsing checkForIndividualAbsentResult');\r\n }\r\n },\r\n });\r\n }\r\n function getConsumerDemographics(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerDemographicsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerDemographicsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumerRelationships(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationshipsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerRelationshipsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDemographicsNotes(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDemographicsNotesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getDemographicsNotesJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumerScheduleLocation(consumerId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerScheduleLocation/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getConsumerScheduleLocationResult;\r\n callback(data);\r\n },\r\n });\r\n }\r\n function getConsumerSchedule(locationId, consumerId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n locationId: locationId,\r\n consumerId: consumerId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateConsumerSchedule/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n scheduleData = response.populateConsumerScheduleResult;\r\n callback(scheduleData);\r\n },\r\n });\r\n }\r\n async function updatePortrait(imageFile, id, portraitPath, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePortrait/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"employeeUserName\":\"' +\r\n $.session.UserId +\r\n '\",\"imageFile\":\"' +\r\n imageFile +\r\n '\",\"id\":\"' +\r\n id +\r\n '\",\"portraitPath\":\"' +\r\n portraitPath +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(status);\r\n console.log(error);\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n function getPSIUserOptionList(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPSIUserOptionListJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getPSIUserOptionListJSONResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n async function updateConsumerDemographics(retrieveData) {\r\n //type, value, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateDemographicsRecord/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.updateDemographicsRecordResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function removeConsumerPhoto(retrieveData) {\r\n // consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/removeConsumerPhoto/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.removeConsumerPhotoResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function verifyDefaultEmailClient() {\r\n try {\r\n const data = await $.ajax({ \r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/verifyDefaultEmailClient/', \r\n data: JSON.stringify(),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getRosterLocations,\r\n getConsumersByGroup,\r\n getIndividualAbsentData,\r\n getAllAttachments,\r\n getConsumerDemographics,\r\n getDemographicsNotes,\r\n getConsumerScheduleLocation,\r\n getConsumerSchedule,\r\n updatePortrait,\r\n getConsumerRelationships,\r\n getPSIUserOptionList,\r\n updateConsumerDemographics,\r\n removeConsumerPhoto,\r\n verifyDefaultEmailClient,\r\n };\r\n})();\r\n","const rosterWorkflow = (() => {\r\n let selectedConsumerId;\r\n\r\n async function displayWFwithMissingResponsibleParties(workflowIds) {\r\n if (workflowIds.length == 0) return false;\r\n\r\n let strWorkflowIds = workflowIds.toString();\r\n const convertedstrWorkFlowIds = strWorkflowIds.replaceAll(',', '|');\r\n // convertedstrWorkFlowIds += '|';\r\n\r\n async function getWFwithMissingResponsibleParties(constrWorkFlowIds) {\r\n let responsibleData = await WorkflowViewerAjax.getWFwithMissingResponsibleParties({\r\n workflowIds: constrWorkFlowIds.toString(),\r\n });\r\n\r\n return responsibleData;\r\n }\r\n\r\n let responsibleData = await getWFwithMissingResponsibleParties(convertedstrWorkFlowIds);\r\n\r\n const workflowNames = [];\r\n if (responsibleData.length > 0) {\r\n for (let i = 0; i < responsibleData.length; i++) {\r\n workflowNames.push(responsibleData[i].name);\r\n }\r\n var strWorkflowNames = workflowNames.join(', ');\r\n missingResponsiblePartyAlert(strWorkflowNames);\r\n }\r\n }\r\n function missingResponsiblePartyAlert(workflowNames) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n var alertMessage = document.createElement('p');\r\n alertMessage.innerHTML =\r\n 'There are missing responsible party relationship assignments for the following new workflows: ' + workflowNames;\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n async function showAddWorkflowPopup() {\r\n let selectedWorkflows = [];\r\n\r\n const wfPopup = POPUP.build({\r\n header: 'Select workflow(s) to attach.',\r\n id: 'workflow_addWorkflowPopup',\r\n });\r\n\r\n // Workflow List\r\n //-----------------------\r\n const wfvData = await WorkflowViewerAjax.getManualWorkflowList({\r\n token: $.session.Token,\r\n processId: 4,\r\n referenceId: selectedConsumerId,\r\n notPlan: 't'\r\n });\r\n\r\n const workflowList = document.createElement('div');\r\n workflowList.classList.add('workflowList');\r\n\r\n wfvData.forEach(obj => {\r\n const wfvItem = document.createElement('div');\r\n wfvItem.classList.add('workflowListItem');\r\n wfvItem.setAttribute('data-template-id', obj.workflowTemplateId);\r\n wfvItem.innerHTML = `

    ${obj.templateName}

    ${obj.description}

    `;\r\n workflowList.appendChild(wfvItem);\r\n });\r\n \r\n workflowList.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n\r\n selectedWorkflows.length > 0 ? doneBtn.classList.remove('disabled') : doneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n // Buttons\r\n //-----------------------\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n const workflowIds = [];\r\n\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n try {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n let workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: selectedConsumerId,\r\n peopleId: selectedConsumerId,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n\r\n const newScreen = await buildWorkflowScreen();\r\n onResetViewer(newScreen);\r\n } catch (error) {\r\n console.error('error inserting workflows');\r\n }\r\n\r\n await displayWFwithMissingResponsibleParties(workflowIds);\r\n }\r\n\r\n POPUP.hide(wfPopup);\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n id: 'addWorkflowCancelBtn',\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => POPUP.hide(wfPopup),\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n\r\n wfPopup.appendChild(workflowList);\r\n wfPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(wfPopup);\r\n }\r\n \r\n async function buildWorkflowScreen() {\r\n const workflowViewer = await WorkflowViewerComponent.get(4, selectedConsumerId, true);\r\n\r\n const addWorkflowBtn = button.build({\r\n text: 'Add Workflow(s)',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n showAddWorkflowPopup();\r\n },\r\n });\r\n\r\n return {workflowViewer, addWorkflowBtn};\r\n }\r\n\r\n async function getWorkflowScreen() {\r\n const newScreen = await buildWorkflowScreen();\r\n\r\n return newScreen\r\n }\r\n\r\n function init(consumerId, consumerName, onResetViewerFunc) {\r\n onResetViewer = onResetViewerFunc;\r\n selectedConsumerId = consumerId;\r\n $.workflowConsumerId = selectedConsumerId;\r\n $.workflowConsumerName = consumerName;\r\n }\r\n\r\n return {\r\n init,\r\n getWorkflowScreen,\r\n showAddWorkflowPopup\r\n }\r\n})();\r\n","var scheduling = (function () {\r\n function loadSchedulingLanding() {\r\n let schedulingCalendarBtn = button.build({\r\n text: 'View Calendar',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setActiveModuleSectionAttribute('scheduling-calendar');\r\n PROGRESS.SPINNER.show('Loading Schedule...');\r\n schedulingCalendar.init();\r\n },\r\n });\r\n let schedulingRequestTimeOffBtn = button.build({\r\n text: 'Request Time Off',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setActiveModuleSectionAttribute('scheduling-requestTimeOff');\r\n PROGRESS.SPINNER.show('Loading...');\r\n schedulingRequestTimeOff.init();\r\n },\r\n });\r\n let schedulingApproveRequestBtn = button.build({\r\n text: 'Approve Requests',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setActiveModuleSectionAttribute('scheduling-approveRequests');\r\n PROGRESS.SPINNER.show('Loading...');\r\n schedulingApproveRequest.init();\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(schedulingCalendarBtn);\r\n\r\n if ($.session.schedulingView === true && $.session.schedulingUpdate === false) {\r\n } else {\r\n btnWrap.appendChild(schedulingRequestTimeOffBtn);\r\n btnWrap.appendChild(schedulingApproveRequestBtn);\r\n }\r\n\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n //PERMISSION = SCHEDULE VIEW ONLY\r\n if (!$.session.schedulingUpdate) {\r\n setActiveModuleSectionAttribute('scheduling-calendar');\r\n schedulingCalendar.init();\r\n } else {\r\n loadSchedulingLanding();\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var schedulingAjax = (function () {\r\n function getLocationDropdownForSchedulingAjax(cb) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getLocationDropdownForScheduling/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationDropdownForSchedulingResult; \r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //When using this call:\r\n //Pass a '%' for the personId and the locationId from the dropdown to get all schedules for a location\r\n //Pass a '%' for the locationId and the users personId to get all of that pesons schedules\r\n function getSchedulesForSchedulingModuleAjax(locationId, personId, cb) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getSchedulesForSchedulingModule/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"personId\":\"' + personId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getSchedulesForSchedulingModuleResult;\r\n cb(res, locationId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n async function requestDaysOffSchedulingAjax(insertData) {\r\n //insertData must include token, personId, dates, fromTime, toTime, reason, employeeNotifiedId, status\r\n try {\r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/requestDaysOffScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n function getCallOffDropdownReasonsAjax(cb) {\r\n //insertData must include token, toPersonId, reasonId, notification\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getCallOffDropdownReasons/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getCallOffDropdownReasonsResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getCallOffDropdownEmployeesAjax(shiftDate, locationId, cb) {\r\n //insertData must include token, locationId\r\n shiftDate = UTIL.formatDateToIso(shiftDate);\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getCallOffDropdownEmployees/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"shiftDate\":\"' + shiftDate + '\",\"locationId\":\"' + locationId+ '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getCallOffDropdownEmployeesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getRequestTimeOffDropdownEmployees(cb) {\r\n //insertData must include token\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getRequestTimeOffDropdownEmployees/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getRequestTimeOffDropdownEmployeesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function saveSchedulingCallOffRequestAjax(insertData) {\r\n //insertData must include token, shiftId, personId, reasonId, note, status, notifiedEmployeeId\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/saveSchedulingCallOffRequest/\",\r\n //data: '{\"token\":\"' + $.session.Token + '\"}',\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.saveSchedulingCallOffRequestResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getDayOfWeekScheduleAjax(cb) {\r\n //insertData must include token, shiftId, personId, reasonId, note, status, notifiedEmployeeId\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getDayOfWeekSchedule/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getDayOfWeekScheduleResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function getScheduleApptInformationAjax(locationId, cb) {//Added locationId from dropdown on all schedule view\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getScheduleApptInformation/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"locationId\":\"' + locationId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getScheduleApptInformationResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function saveOpenShiftRequestSchedulingAjax(insertData) {//token, shiftId, personId, status, notifiedEmployeeId)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/saveOpenShiftRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.saveOpenShiftRequestSchedulingResult;\r\n //cb(res, schedules);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n async function getOverlapStatusforSelectedShiftAjax(shiftId, personId) {\r\n try {\r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getOverlapStatusforSelectedShift/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"shiftId\":\"' + shiftId + '\",\"personId\":\"' + personId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n}\r\n\r\nasync function getOverlapDataforSelectedShiftAjax(shiftId, personId) {\r\n try {\r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getOverlapDataforSelectedShift/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"shiftId\":\"' + shiftId + '\",\"personId\":\"' + personId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n}\r\n\r\n function cancelRequestOpenShiftSchedulingAjax(requestShiftId) {//token, requestShiftId)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/cancelRequestOpenShiftScheduling/\",\r\n data: '{\"token\":\"' + $.session.Token + '\",\"requestShiftId\":\"' + requestShiftId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.cancelRequestOpenShiftSchedulingResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function approveDenyOpenShiftRequestSchedulingAjax(insertData) {//token, requestedShiftId, decision)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/approveDenyOpenShiftRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.approveDenyOpenShiftRequestSchedulingResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function approveDenyCallOffRequestSchedulingAjax(insertData) {//token, callOffShiftId, decision)\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/approveDenyCallOffRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.approveDenyCallOffRequestSchedulingResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n async function approveDenyDaysOffRequestSchedulingAjax(insertData) {//token, daysOffIdString(comma separated), decision)\r\n try { \r\n const result = await $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/approveDenyDaysOffRequestScheduling/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n return result.approveDenyDaysOffRequestSchedulingResult;\r\n\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n}\r\n\r\n function getScheduleMyApprovalDataAjax(insertData, cb) {//token, personId\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getScheduleMyApprovalData/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getScheduleMyApprovalDataResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getSchedulesForSchedulingModuleAjax: getSchedulesForSchedulingModuleAjax,\r\n getLocationDropdownForSchedulingAjax: getLocationDropdownForSchedulingAjax,\r\n requestDaysOffSchedulingAjax: requestDaysOffSchedulingAjax,\r\n getCallOffDropdownReasonsAjax: getCallOffDropdownReasonsAjax,\r\n getCallOffDropdownEmployeesAjax: getCallOffDropdownEmployeesAjax,\r\n saveSchedulingCallOffRequestAjax: saveSchedulingCallOffRequestAjax,\r\n getDayOfWeekScheduleAjax: getDayOfWeekScheduleAjax,\r\n getScheduleApptInformationAjax: getScheduleApptInformationAjax,\r\n cancelRequestOpenShiftSchedulingAjax: cancelRequestOpenShiftSchedulingAjax,\r\n saveOpenShiftRequestSchedulingAjax: saveOpenShiftRequestSchedulingAjax,\r\n getOverlapStatusforSelectedShiftAjax: getOverlapStatusforSelectedShiftAjax,\r\n getOverlapDataforSelectedShiftAjax: getOverlapDataforSelectedShiftAjax,\r\n approveDenyOpenShiftRequestSchedulingAjax: approveDenyOpenShiftRequestSchedulingAjax,\r\n approveDenyCallOffRequestSchedulingAjax: approveDenyCallOffRequestSchedulingAjax,\r\n approveDenyDaysOffRequestSchedulingAjax: approveDenyDaysOffRequestSchedulingAjax,\r\n getScheduleMyApprovalDataAjax: getScheduleMyApprovalDataAjax,\r\n getRequestTimeOffDropdownEmployees: getRequestTimeOffDropdownEmployees\r\n };\r\n\r\n})();","const plan = (function () {\r\n // DOM\r\n // -----------------\r\n // plan landing\r\n let landingPage;\r\n let overviewTable;\r\n let newPlanBtn;\r\n let assignCaseLoadBtn;\r\n let downloadPlanBtn;\r\n // new plan setup\r\n let planSetupPage;\r\n let setupWrap;\r\n let prevPlanTable;\r\n let datesBoxDiv;\r\n let doneBtn;\r\n let addedMemberPopup;\r\n // main plan page\r\n let planHeader;\r\n let planHeaderButtons;\r\n let planHeaderGeneralInfoBar;\r\n let morePopup;\r\n let morePopupMenu;\r\n let editDatesScreen;\r\n let updateStatusScreen;\r\n let deleteScreen;\r\n let reactivateScreen;\r\n let addWorkflowScreen;\r\n let reportsScreen;\r\n let reportsAttachmentScreen;\r\n let DODDScreen;\r\n let portalScreen;\r\n let sendToDODDScreen;\r\n let changePlanTypeScreen;\r\n let generalInfoBar;\r\n\r\n // DATA\r\n // -----------------\r\n let previousPlansData;\r\n let dropdownData;\r\n let retrieveData;\r\n // general info\r\n let selectedConsumer;\r\n let planId;\r\n let planType;\r\n let planStatus;\r\n let planActiveStatus;\r\n let revisionNumber;\r\n let sentToOnet;\r\n let downloadedFromSalesforce;\r\n // prior plan data\r\n let hasPreviousPlans;\r\n let priorConsumerPlanId;\r\n let thisPreviousPlanId = 0;\r\n // more popup\r\n let selectedWorkflows;\r\n //let selectedPreviousWfForms;\r\n let addWorkflowDoneBtn;\r\n let planAttBody;\r\n let workflowAttBody;\r\n let signatureAttBody;\r\n let portalPlanAttBody;\r\n let portalWorkflowAttBody;\r\n let portalSignatureAttBody;\r\n let DODDplanAttBody;\r\n let DODDsignAttBody;\r\n let DODDworkflowAttBody;\r\n // runReports screen\r\n let include = 'N';\r\n let includeCheckbox; //\r\n // plan validation\r\n let ISPValidationCheck;\r\n\r\n async function launchWorkflowViewer() {\r\n let processId =\r\n planType === 'Revision' ? WorkflowProcess.CONSUMER_PLAN_REVISION : WorkflowProcess.CONSUMER_PLAN_ANNUAL;\r\n await WorkflowViewerComponent.open(processId, planId);\r\n }\r\n async function dashHandler(consumer, pId, stepId) {\r\n function pageLoadCallback() {\r\n let target = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n let container = document.querySelector('.planWorkflow');\r\n if (target) container.scrollTop = target.offsetTop;\r\n }\r\n let {\r\n consumer: { consumerId, consumerFirstName, consumerLastName },\r\n } = consumer;\r\n\r\n setActiveModuleAttribute('plan');\r\n $.loadedApp = 'plan';\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n UTIL.toggleMenuItemHighlight('plan');\r\n\r\n // mock consumerCard\r\n let card = roster2.buildConsumerCard({\r\n FN: consumerFirstName,\r\n LN: consumerLastName,\r\n id: consumerId,\r\n });\r\n\r\n selectedConsumer = { card: card, id: consumerId };\r\n\r\n const plans = await planAjax.getConsumerPlans({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n const pd = plans.filter(p => p.consumerPlanId === pId)[0];\r\n const assessmentData = await assessment.getAssessmentData(pd.consumerPlanId);\r\n const type = pd.planType === 'A' ? 'a' : 'r';\r\n const effectiveStart = pd.effectiveStart.split(' ')[0];\r\n const effectiveEnd = pd.effectiveEnd.split(' ')[0];\r\n const isActive = pd.active === 'True' ? true : false;\r\n\r\n planId = pd.consumerPlanId;\r\n planType = type;\r\n planStatus = pd.planStatus ? pd.planStatus : 'D';\r\n planActiveStatus = isActive;\r\n\r\n // TODO: below will need changed to call buildPlanPage()\r\n planDates.dashHandler({\r\n planYearStartDate: new Date(pd.planYearStart.split(' ')[0]),\r\n planYearEndDate: new Date(pd.planYearEnd.split(' ')[0]),\r\n effectiveStartDate: new Date(pd.effectiveStart.split(' ')[0]),\r\n effectiveEndDate: new Date(pd.effectiveEnd.split(' ')[0]),\r\n planReviewDate: pd.reviewDate ? new Date(pd.reviewDate.split(' ')[0]) : '',\r\n });\r\n await buildPlanPage(['w', 'a', 'i'], pageLoadCallback);\r\n // TODO: end\r\n\r\n // setTimeout(() => {\r\n\r\n // }, 1000);\r\n }\r\n\r\n // Helpers\r\n //---------------------------------------------\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n \r\n switch (targetAction) {\r\n case 'miniRosterDone': { \r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.show('Gathering Plans...');\r\n await planAjax.checkForSalesForce(); \r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n if ($.session.applicationName === 'Advisor') {\r\n planAjax.getConsumerPeopleId(selectedConsumer.id, function (results) {\r\n $.session.planPeopleId = results[0].id;\r\n selectedConsumer.consumerId = selectedConsumer.id;\r\n selectedConsumer.id = $.session.planPeopleId;\r\n loadLandingPage();\r\n DOM.toggleNavLayout();\r\n });\r\n } else {\r\n loadLandingPage();\r\n DOM.toggleNavLayout();\r\n }\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n //-- get\r\n function getSelectedConsumer() {\r\n return selectedConsumer;\r\n }\r\n function getCurrentPlanId() {\r\n return planId;\r\n }\r\n function getCurrentPlanType() {\r\n return planType;\r\n }\r\n function getPlanStatus() {\r\n return planStatus;\r\n }\r\n function getPlanActiveStatus() {\r\n return planActiveStatus;\r\n }\r\n function getPlanDropdownData() {\r\n return dropdownData;\r\n }\r\n function getHasPreviousPlans() {\r\n return previousPlansData ? (previousPlansData.length > 0 ? true : false) : false;\r\n }\r\n function getISPValidation() {\r\n return ISPValidationCheck;\r\n }\r\n //-- set\r\n function setSelectedConsumer(consumer) {\r\n selectedConsumer = consumer;\r\n }\r\n function setPlanId(newPlanId) {\r\n planId = newPlanId;\r\n }\r\n function setPlanType(newPlanType) {\r\n planType = newPlanType;\r\n }\r\n function setPlanStatus(newPlanStatus) {\r\n if (planStatus !== newPlanStatus) {\r\n planStatus = newPlanStatus;\r\n\r\n if (planStatus === 'D') {\r\n // do stuff\r\n } else {\r\n // do stuff\r\n }\r\n\r\n //isp informed consent\r\n // informedConsent.planStatusChange();\r\n //isp signatures\r\n // planSignature.planStatusChange();\r\n //isp contact information\r\n // contactInformation.planStatusChange();\r\n }\r\n }\r\n function setRevisionNumber(revNum) {\r\n revisionNumber = revNum;\r\n }\r\n function setPlanActiveStatus(newActiveStatus) {\r\n planActiveStatus = newActiveStatus;\r\n }\r\n //-- clear\r\n function clearAllData() {\r\n selectedConsumer = undefined;\r\n clearAllDataKeepConsumer();\r\n }\r\n function clearAllDataKeepConsumer() {\r\n planId = undefined;\r\n planType = undefined;\r\n planStatus = undefined;\r\n planActiveStatus = undefined;\r\n revisionNumber = undefined;\r\n downloadedFromSalesforce = undefined;\r\n\r\n hasPreviousPlans = undefined;\r\n priorConsumerPlanId = undefined;\r\n\r\n landingPage = undefined;\r\n overviewTable = undefined;\r\n newPlanBtn = undefined;\r\n planSetupPage = undefined;\r\n setupWrap = undefined;\r\n prevPlanTable = undefined;\r\n datesBoxDiv = undefined;\r\n doneBtn = undefined;\r\n planHeader = undefined;\r\n planHeaderButtons = undefined;\r\n planHeaderGeneralInfoBar = undefined;\r\n morePopup = undefined;\r\n morePopupMenu = undefined;\r\n editDatesScreen = undefined;\r\n updateStatusScreen = undefined;\r\n deleteScreen = undefined;\r\n reactivateScreen = undefined;\r\n addWorkflowScreen = undefined;\r\n sentToOnet = '';\r\n\r\n planDates.clearData();\r\n assessmentCard.clearData();\r\n }\r\n function clearPlanId() {\r\n planId = undefined;\r\n }\r\n\r\n // Plan Page - Q&A, ISP, Workflow, etc...\r\n //---------------------------------------------\r\n // more popup\r\n function refreshMoreMenu() {\r\n const newMorePopupMenu = buildMorePopupMenu();\r\n menuInnerWrap.replaceChild(newMorePopupMenu, morePopupMenu);\r\n morePopupMenu = newMorePopupMenu;\r\n }\r\n function buildEditDatesScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'editDatesScreen';\r\n screen.classList.add('screen');\r\n\r\n const validDates = isValid => {\r\n if (isValid) {\r\n updateBtn.classList.remove('disabled');\r\n updateBtn.disabled = false;\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n updateBtn.disabled = true;\r\n }\r\n };\r\n const dateBoxDiv = planDates.buildDatesBox(validDates);\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planDates.updatePlanDates(planId, planType);\r\n // const message = success === 1 ? 'Dates successfully changed.' : 'Plan dates were not able to be changed.';\r\n const message = 'Dates successfully changed.';\r\n const successDiv = successfulSave.get(message, true);\r\n // if (success !== 1) successDiv.classList.add('error');\r\n\r\n dateBoxDiv.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n dateBoxDiv.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n refreshGeneralInfo();\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n }, 1000);\r\n // let cache = {eventTypeId : planId, eventType : \"plan\", eventId : 13};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n planDates.resetPlanDatesToOriginal();\r\n planDates.updateBoxDateValues();\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n screen.appendChild(dateBoxDiv);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildUpdateStatusScreen() {\r\n let newStatus;\r\n\r\n const screen = document.createElement('div');\r\n screen.id = 'updateStatusScreen';\r\n screen.classList.add('screen');\r\n\r\n const currentStatus = document.createElement('div');\r\n currentStatus.classList.add('currentStatus');\r\n currentStatus.innerHTML = `\r\n

    Current Status:

    ${planStatus === 'D' ? '

    Draft

    ' : '

    Complete

    '}\r\n `;\r\n\r\n const statusDropdown = dropdown.build({\r\n className: `statusDropdown`,\r\n label: 'Status',\r\n style: 'secondary',\r\n });\r\n const dropdownData = [\r\n { value: 'D', text: 'Draft' },\r\n { value: 'C', text: 'Complete' },\r\n ];\r\n dropdown.populate(statusDropdown, dropdownData, planStatus);\r\n statusDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newStatus = selectedOption.value;\r\n if (newStatus === planStatus) {\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n updateBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n let success;\r\n\r\n if (newStatus !== planStatus) {\r\n success = await planAjax.updateConsumerPlanSetStatus({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n status: newStatus,\r\n });\r\n planStatus = newStatus;\r\n if (planStatus === 'C') {\r\n finalizeBtn.classList.remove('disabled');\r\n } else {\r\n finalizeBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n const message = success === 1 ? 'Status successfully updated.' : 'Status was not able to be updated.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 1) successDiv.classList.add('error');\r\n\r\n currentStatus.style.display = 'none';\r\n statusDropdown.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n currentStatus.removeAttribute('style');\r\n statusDropdown.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n refreshMoreMenu();\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 1) {\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n }\r\n }, 1000);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n screen.appendChild(currentStatus);\r\n screen.appendChild(statusDropdown);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildDeleteScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'deleteScreen';\r\n screen.classList.add('screen');\r\n\r\n const warningMessage = document.createElement('div');\r\n warningMessage.classList.add('warningMessage');\r\n\r\n const effectiveStart = planDates.getEffectiveStartDate();\r\n const formatedDate = UTIL.formatDateFromDateObj(effectiveStart);\r\n const splitFormatedDate = formatedDate.split('-');\r\n let esDate = `${splitFormatedDate[1]}/${splitFormatedDate[2]}/${splitFormatedDate[0].substring(2)}`;\r\n\r\n if (planType === 'Annual' || planType === 'a') {\r\n warningMessage.innerHTML = `\r\n

    Are you sure you want to delete the entire Annual plan effective on ${esDate} for \r\n ${getConsumerNameFromCard(selectedConsumer)}?

    \r\n `;\r\n } else {\r\n warningMessage.innerHTML = `\r\n

    Are you sure you want to delete the entire Revision ${revisionNumber} plan effective on ${esDate} for \r\n ${getConsumerNameFromCard(selectedConsumer)}?

    \r\n `;\r\n }\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planAjax.deletePlan({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n });\r\n const message = success === 'success' ? 'Plan was deleted.' : 'Unable to delete plan.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 'success') {\r\n successDiv.classList.add('error');\r\n return;\r\n }\r\n\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n outcomes.forEach(async outcome => {\r\n const isNew = outcome.dataset.newOutcome;\r\n const outcomeId = outcome.id;\r\n\r\n if (isNew === 'false') {\r\n await planOutcomesAjax.deletePlanOutcome({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n });\r\n }\r\n });\r\n\r\n warningMessage.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(function () {\r\n screen.removeChild(successDiv);\r\n\r\n warningMessage.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 'success') {\r\n POPUP.hide(morePopup);\r\n loadLandingPage();\r\n }\r\n }, 1000);\r\n // let cache27 = {eventTypeId : planId, eventType : \"plan\", eventId : 27};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache27);\r\n // let cache28 = {eventTypeId : planId, eventType : \"plan\", eventId : 28};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache28);\r\n },\r\n });\r\n\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n screen.appendChild(warningMessage);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildReactivateScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reactivateScreen';\r\n screen.classList.add('screen');\r\n\r\n const warningMessage = document.createElement('div');\r\n warningMessage.classList.add('warningMessage');\r\n warningMessage.innerHTML = '

    Are you sure you want to reactivate this plan?

    ';\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planAjax.updateConsumerPlanReactivate({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n });\r\n\r\n const message = success === 1 ? 'Plan successfully reactivated.' : 'Unable to reactivate plan.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 1) successDiv.classList.add('error');\r\n\r\n warningMessage.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n warningMessage.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 1) {\r\n planActiveStatus = !planActiveStatus;\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n }\r\n }, 1000);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n screen.appendChild(warningMessage);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function buildAddWorkflowScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'addWorkflowScreen';\r\n screen.classList.add('screen');\r\n\r\n screen.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n\r\n selectedWorkflows.length > 0\r\n ? addWorkflowDoneBtn.classList.remove('disabled')\r\n : addWorkflowDoneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n return screen;\r\n }\r\n async function populateAddWorkflowScreen() {\r\n const processId = planWorkflow.getProcessId(planType);\r\n selectedWorkflows = [];\r\n\r\n const screen = document.getElementById('addWorkflowScreen');\r\n screen.innerHTML = '';\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select workflow(s) to attach.';\r\n screen.appendChild(title);\r\n\r\n const wfvData = await planWorkflow.getWorkflowList(processId, planId);\r\n if (wfvData && wfvData.length > 0) {\r\n const list = planWorkflow.buildWorkflowList(wfvData);\r\n screen.appendChild(list);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n addWorkflowDoneBtn.classList.add('disabled');\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n addWorkflowDoneBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['copySelectedBtn', 'disabled'],\r\n callback: () => {\r\n addWorkflowDoneBtn.classList.add('disabled');\r\n cancelBtn.classList.add('disabled');\r\n\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n selectedWorkflows.forEach(workflowTemplateId => {\r\n WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: workflowTemplateId,\r\n referenceId: planId,\r\n peopleId: selectedConsumer.id,\r\n });\r\n });\r\n\r\n const message = 'Workflows Added';\r\n const successDiv = successfulSave.get(null, true);\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n }, 1000);\r\n }\r\n },\r\n });\r\n\r\n btnWrap.appendChild(addWorkflowDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n screen.appendChild(btnWrap);\r\n }\r\n function buildReportsScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reportsScreen';\r\n screen.classList.add('screen');\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be included with the report.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const planAttWrap = document.createElement('div');\r\n planAttWrap.classList.add('planAttWrap');\r\n const workflowAttWrap = document.createElement('div');\r\n workflowAttWrap.classList.add('workflowAttWrap');\r\n const signatureAttWrap = document.createElement('div');\r\n signatureAttWrap.classList.add('signatureAttWrap');\r\n attachmentsWrap.appendChild(planAttWrap);\r\n attachmentsWrap.appendChild(workflowAttWrap);\r\n attachmentsWrap.appendChild(signatureAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n planAttWrap.appendChild(planHeading);\r\n workflowAttWrap.appendChild(workflowHeading);\r\n signatureAttWrap.appendChild(signHeading);\r\n\r\n planAttBody = document.createElement('div');\r\n signatureAttBody = document.createElement('div');\r\n workflowAttBody = document.createElement('div');\r\n planAttWrap.appendChild(planAttBody);\r\n signatureAttWrap.appendChild(signatureAttBody);\r\n workflowAttWrap.appendChild(workflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n function buildReportsAttachmentsScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reportsAttachmentScreen';\r\n screen.classList.add('screen');\r\n\r\n return screen;\r\n }\r\n function buildDODDScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'DODDScreen';\r\n screen.classList.add('screen');\r\n\r\n //const message = document.createElement('p');\r\n //message.classList.add('doddMessage');\r\n //screen.appendChild(message);\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be sent to DODD with the plan.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const DODDplanAttWrap = document.createElement('div');\r\n DODDplanAttWrap.classList.add('planAttWrap');\r\n const DODDsignatureAttWrap = document.createElement('div');\r\n DODDsignatureAttWrap.classList.add('signatureAttWrap');\r\n const DODDworkflowAttWrap = document.createElement('div');\r\n DODDworkflowAttWrap.classList.add('workflowAttWrap');\r\n attachmentsWrap.appendChild(DODDplanAttWrap);\r\n attachmentsWrap.appendChild(DODDsignatureAttWrap);\r\n attachmentsWrap.appendChild(DODDworkflowAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan and Assessment Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n DODDplanAttWrap.appendChild(planHeading);\r\n DODDsignatureAttWrap.appendChild(signHeading);\r\n DODDworkflowAttWrap.appendChild(workflowHeading);\r\n\r\n DODDplanAttBody = document.createElement('div');\r\n DODDsignAttBody = document.createElement('div');\r\n DODDworkflowAttBody = document.createElement('div');\r\n DODDplanAttWrap.appendChild(DODDplanAttBody);\r\n DODDsignatureAttWrap.appendChild(DODDsignAttBody);\r\n DODDworkflowAttWrap.appendChild(DODDworkflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n function buildPortalScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'portalScreen';\r\n screen.classList.add('screen');\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be included with the report.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const portalPlanAttWrap = document.createElement('div');\r\n portalPlanAttWrap.classList.add('planAttWrap');\r\n const portalWorkflowAttWrap = document.createElement('div');\r\n portalWorkflowAttWrap.classList.add('workflowAttWrap');\r\n const portalSignatureAttWrap = document.createElement('div');\r\n portalSignatureAttWrap.classList.add('signatureAttWrap');\r\n attachmentsWrap.appendChild(portalPlanAttWrap);\r\n attachmentsWrap.appendChild(portalWorkflowAttWrap);\r\n attachmentsWrap.appendChild(portalSignatureAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n portalPlanAttWrap.appendChild(planHeading);\r\n portalWorkflowAttWrap.appendChild(workflowHeading);\r\n portalSignatureAttWrap.appendChild(signHeading);\r\n\r\n portalPlanAttBody = document.createElement('div');\r\n portalSignatureAttBody = document.createElement('div');\r\n portalWorkflowAttBody = document.createElement('div');\r\n portalPlanAttWrap.appendChild(portalPlanAttBody);\r\n portalSignatureAttWrap.appendChild(portalSignatureAttBody);\r\n portalWorkflowAttWrap.appendChild(portalWorkflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n function buildSendToDODDScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'sendToDODDScreen';\r\n screen.classList.add('screen');\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('doddMessage');\r\n screen.appendChild(message);\r\n\r\n return screen;\r\n }\r\n function buildChangePlanTypeScreen() {\r\n let origDateCache;\r\n let origType;\r\n let newType;\r\n let previousPlansTable;\r\n let datesBoxDiv;\r\n // data from prev plan\r\n let newPlan, newPlanData;\r\n\r\n const screen = document.createElement('div');\r\n screen.id = 'changePlanTypeScreen';\r\n screen.classList.add('screen');\r\n\r\n // current type\r\n const currentType = document.createElement('div');\r\n currentType.classList.add('currentType');\r\n currentType.innerHTML = `\r\n

    Current Type:

    ${planType === 'a' ? '

    Annual

    ' : '

    Revision

    '}\r\n `;\r\n\r\n // dropdown\r\n const typeDropdown = dropdown.build({\r\n className: `typeDropdown`,\r\n label: 'Type',\r\n style: 'secondary',\r\n });\r\n dropdown.populate(\r\n typeDropdown,\r\n [\r\n { value: 'a', text: 'Annual' },\r\n { value: 'r', text: 'Revision' },\r\n ],\r\n planType,\r\n );\r\n typeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n newType = selectedOption.value;\r\n if (newType === planType) {\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n updateBtn.classList.remove('disabled');\r\n\r\n if (newType === 'r') {\r\n // prev plans table\r\n previousPlansTable = buildPreviousPlansTable(true, (selectedPlan, planData) => {\r\n newPlan = selectedPlan;\r\n newPlanData = planData;\r\n\r\n origType = planType;\r\n origDateCache = planDates.setRevisionPlanDates(newPlanData);\r\n planType = newType;\r\n\r\n const previouslySeletedRow = previousPlansTable.querySelector('.selected');\r\n if (previouslySeletedRow) previouslySeletedRow.classList.remove('selected');\r\n selectedPlan.classList.add('selected');\r\n\r\n if (screen.contains(datesBoxDiv)) screen.removeChild(datesBoxDiv);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n updateBtn.classList.remove('disabled');\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n }\r\n }, true);\r\n screen.insertBefore(datesBoxDiv, btnWrap);\r\n });\r\n screen.insertBefore(previousPlansTable, btnWrap);\r\n } else {\r\n if (previousPlansTable) screen.removeChild(previousPlansTable);\r\n if (datesBoxDiv) screen.removeChild(datesBoxDiv);\r\n if (origDateCache) planDates.resetPlanDatesFromChangeTypeMenu(origDateCache);\r\n }\r\n }\r\n });\r\n\r\n // btns\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await planAjax.updatePlanType({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n prevPlanId: newType === 'a' ? planId : newPlanData.consumerPlanId,\r\n planType: newType.toUpperCase(),\r\n revisionNumber: newType === 'r' ? parseInt(newPlanData.revisionNumber) + 1 : '',\r\n planYearStart: UTIL.formatDateToIso(dates.formatISO(planDates.getPlanYearStartDate()).split('T')[0]),\r\n planYearEnd: UTIL.formatDateToIso(dates.formatISO(planDates.getPlanYearEndDate()).split('T')[0]),\r\n effectiveStartDate: UTIL.formatDateToIso(dates.formatISO(planDates.getEffectiveStartDate()).split('T')[0]),\r\n effectiveEndDate: UTIL.formatDateToIso(dates.formatISO(planDates.getEffectiveEndDate())).split('T')[0],\r\n reviewDate: UTIL.formatDateToIso(dates.formatISO(planDates.getPlanReviewDate())).split('T')[0],\r\n });\r\n\r\n if (success === 'Success') {\r\n currentType.innerHTML = `

    Current Type:

    ${planType === 'a' ? '

    Annual

    ' : '

    Revision

    '}`;\r\n }\r\n\r\n const message = success === 'Success' ? 'Type successfully updated.' : 'Type was not able to be updated.';\r\n const successDiv = successfulSave.get(message, true);\r\n if (success !== 'Success') successDiv.classList.add('error');\r\n\r\n currentType.style.display = 'none';\r\n typeDropdown.style.display = 'none';\r\n btnWrap.style.display = 'none';\r\n screen.appendChild(successDiv);\r\n\r\n setTimeout(() => {\r\n screen.removeChild(successDiv);\r\n\r\n currentType.removeAttribute('style');\r\n typeDropdown.removeAttribute('style');\r\n btnWrap.removeAttribute('style');\r\n\r\n refreshMoreMenu();\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n if (success === 'Success') {\r\n refreshGeneralInfo();\r\n assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n ISP.refreshISP(planId);\r\n } else {\r\n if (previousPlansTable) screen.removeChild(previousPlansTable);\r\n if (datesBoxDiv) screen.removeChild(datesBoxDiv);\r\n\r\n // reset type dropdown value\r\n const typeSelect = typeDropdown.querySelector('select');\r\n typeSelect.value = planType;\r\n // reset dates\r\n if (origDateCache) planDates.resetPlanDatesFromChangeTypeMenu(origDateCache);\r\n // reset type\r\n plantype = origType;\r\n }\r\n }, 1000);\r\n },\r\n });\r\n updateBtn.classList.add('disabled');\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n if (previousPlansTable) screen.removeChild(previousPlansTable);\r\n if (datesBoxDiv) screen.removeChild(datesBoxDiv);\r\n\r\n // reset type dropdown value\r\n const typeSelect = typeDropdown.querySelector('select');\r\n typeSelect.value = planType;\r\n // reset dates\r\n if (origDateCache) planDates.resetPlanDatesFromChangeTypeMenu(origDateCache);\r\n // reset type\r\n plantype = origType;\r\n\r\n screen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n screen.appendChild(currentType);\r\n screen.appendChild(typeDropdown);\r\n screen.appendChild(btnWrap);\r\n\r\n return screen;\r\n }\r\n function getAttachmentIds(attachments) {\r\n const idArray = [];\r\n\r\n for (const prop in attachments) {\r\n idArray.push(attachments[prop].attachmentId);\r\n }\r\n\r\n return idArray;\r\n }\r\n\r\n function getwfstepdocIds(attachments) {\r\n const idArray = [];\r\n\r\n for (const prop in attachments) {\r\n idArray.push(attachments[prop].workflowstepdocId);\r\n }\r\n\r\n return idArray;\r\n }\r\n\r\n async function runReportScreen(extraSpace) {\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n planAttBody.innerHTML = '';\r\n workflowAttBody.innerHTML = '';\r\n signatureAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId, //TODO\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n signatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n planAttBody.appendChild(attachment);\r\n } else {\r\n workflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n // checkbox\r\n includeCheckbox = input.buildCheckbox({\r\n id: 'reportCheckbox',\r\n // className: 'reportCheckbox',\r\n isChecked: include === 'Y' ? true : false,\r\n });\r\n\r\n includeCheckbox.addEventListener('change', event => {\r\n include = event.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n let isSuccess;\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Building Report...');\r\n const screenInner = reportsScreen.querySelector('.attachmentsWrap');\r\n reportsScreen.removeChild(doneBtn);\r\n reportsScreen.removeChild(checkboxArea);\r\n reportsScreen.removeChild(screenInner);\r\n reportsScreen.appendChild(spinner);\r\n // generate report\r\n if (\r\n Object.keys(selectedAttachmentsPlan).length > 0 ||\r\n Object.keys(selectedAttachmentsWorkflow).length > 0 ||\r\n Object.keys(selectedAttachmentsSignature).length > 0\r\n ) {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n isSuccess = assessment.generateReportWithAttachments(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n } else {\r\n //isSuccess = await assessment.generateReport(planId, '1', extraSpace);\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n isSuccess = assessment.generateReportWithAttachments(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n }\r\n\r\n // remove spinner\r\n reportsScreen.removeChild(spinner);\r\n reportsScreen.appendChild(screenInner);\r\n reportsScreen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n // add checkbox\r\n // const checkboxCheck = document.createElement('div');\r\n // checkboxCheck.appendChild(includeCheckbox);\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n reportsScreen.appendChild(checkboxArea);\r\n reportsScreen.appendChild(doneBtn);\r\n }\r\n\r\n async function runPortalScreen(extraSpace) {\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n portalPlanAttBody.innerHTML = '';\r\n portalWorkflowAttBody.innerHTML = '';\r\n portalSignatureAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n portalSignatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n portalPlanAttBody.appendChild(attachment);\r\n } else {\r\n portalWorkflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n // checkbox\r\n includeCheckbox = input.buildCheckbox({\r\n id: 'portalCheckbox',\r\n isChecked: include === 'Y' ? true : false,\r\n });\r\n\r\n includeCheckbox.addEventListener('change', event => {\r\n include = event.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n let sendSuccess;\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Sending Plan to OhioDD.net');\r\n const screenInner = portalScreen.querySelector('.attachmentsWrap');\r\n portalScreen.removeChild(doneBtn);\r\n portalScreen.removeChild(checkboxArea);\r\n portalScreen.removeChild(screenInner);\r\n portalScreen.appendChild(spinner);\r\n // send report to ohiodd.net\r\n if (\r\n Object.keys(selectedAttachmentsPlan).length > 0 ||\r\n Object.keys(selectedAttachmentsWorkflow).length > 0 ||\r\n Object.keys(selectedAttachmentsSignature).length > 0\r\n ) {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n sendSuccess = await assessment.transeferPlanReportToONET(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n } else {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n sendSuccess = await assessment.transeferPlanReportToONET(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'false', //signatureOnly\r\n include, // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n }\r\n\r\n sendToPortalAlert(sendSuccess);\r\n\r\n // remove spinner\r\n portalScreen.removeChild(spinner);\r\n portalScreen.appendChild(screenInner);\r\n portalScreen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n },\r\n });\r\n\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n portalScreen.appendChild(checkboxArea);\r\n portalScreen.appendChild(doneBtn);\r\n }\r\n\r\n async function runDODDScreen(extraSpace) {\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n DODDplanAttBody.innerHTML = '';\r\n DODDsignAttBody.innerHTML = '';\r\n DODDworkflowAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId, //TODO\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n // attachment.setAttribute('data-WF-stepdocId', a.workflowstepdocId);\r\n // attachment.setAttribute('data-attachmentId', a.attachmentId);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n DODDsignAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n DODDplanAttBody.appendChild(attachment);\r\n } else {\r\n DODDworkflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n const doneBtn = button.build({\r\n text: 'Send To DODD',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n //Send plan to DODD\r\n // runSendToDODDScreen();\r\n\r\n //Send the selected plan attachments to DODD by calling the same function the report uses\r\n let sendSuccess = [];\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Sending to DODD...');\r\n const screenInner = DODDScreen.querySelector('.attachmentsWrap');\r\n DODDScreen.removeChild(doneBtn);\r\n DODDScreen.removeChild(screenInner);\r\n DODDScreen.appendChild(spinner);\r\n // generate report\r\n // if (\r\n // Object.keys(selectedAttachmentsPlan).length > 0 ||\r\n // Object.keys(selectedAttachmentsWorkflow).length > 0 ||\r\n // Object.keys(selectedAttachmentsSignature).length > 0\r\n // ) {\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getwfstepdocIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n try {\r\n // await needed to allow spinner to spin while request is being made\r\n // try catch added to prevent code from stopping on ajax error\r\n sendSuccess = await assessmentAjax.sendSelectedAttachmentsToDODD({\r\n token: $.session.Token,\r\n planAttachmentIds: planAttachmentIds,\r\n wfAttachmentIds: wfAttachmentIds,\r\n sigAttachmentIds: sigAttachmentIds,\r\n planId: planId,\r\n consumerId: selectedConsumer.id,\r\n });\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n //* if we need to upload to dodd after sending attachments\r\n //* below was old code from old sendToDODD screen\r\n // const success = await planAjax.uploadPlanToDODD({\r\n // consumerId: selectedConsumer.id,\r\n // planId,\r\n // });\r\n // }\r\n\r\n if (\r\n sendSuccess &&\r\n (sendSuccess[0] === 'Successfully sent Plan to DODD.' ||\r\n sendSuccess[0] === 'Successfully sent Plan and selected Attachments to DODD.')\r\n ) {\r\n sendtoDODDSuccessMessage(sendSuccess);\r\n } else {\r\n sendtoDODDGeneralErrorMessage(sendSuccess);\r\n }\r\n\r\n DODDScreen.removeChild(spinner);\r\n DODDScreen.appendChild(screenInner);\r\n DODDScreen.classList.remove('visible');\r\n morePopupMenu.classList.add('visible');\r\n\r\n //TODO set date_sent_to_dodd column when the attachment is successfully uploaded to DODD\r\n },\r\n });\r\n\r\n DODDScreen.appendChild(doneBtn);\r\n }\r\n\r\n function sendtoDODDGeneralErrorMessage(sendtoDODDResponse) {\r\n console.log('sendtoDODDGeneralErrorMessage', sendtoDODDResponse[0]);\r\n var generalMessagePopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var generalBtnWrap = document.createElement('div');\r\n generalBtnWrap.classList.add('btnWrap');\r\n var closeBtnWrap = document.createElement('div');\r\n closeBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'Copy Error to Clipboard',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n navigator.clipboard.writeText(sendtoDODDResponse[0]);\r\n // POPUP.hide(generalMessagePopup);\r\n overlay.show();\r\n showOKPopup();\r\n },\r\n });\r\n var displayDetailBtn = button.build({\r\n text: 'Show Error Details',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n POPUP.hide(generalMessagePopup);\r\n overlay.show();\r\n sendtoDODDDetailErrorMessage(sendtoDODDResponse);\r\n },\r\n });\r\n var closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n // classNames: 'btnWrap',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(generalMessagePopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n generalBtnWrap.appendChild(alertokBtn);\r\n generalBtnWrap.appendChild(displayDetailBtn);\r\n closeBtnWrap.appendChild(closeBtn);\r\n var generalMessage = document.createElement('p');\r\n generalMessage.innerHTML = sendtoDODDResponse[0];\r\n generalMessagePopup.appendChild(generalMessage);\r\n generalMessagePopup.appendChild(generalBtnWrap);\r\n generalMessagePopup.appendChild(closeBtnWrap);\r\n POPUP.show(generalMessagePopup);\r\n }\r\n\r\n function sendtoDODDDetailErrorMessage(sendtoDODDResponse) {\r\n console.log('sendtoDODDDetailErrorMessage', sendtoDODDResponse[1]);\r\n var detailMessagePopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var detailBtnWrap = document.createElement('div');\r\n detailBtnWrap.classList.add('btnWrap');\r\n var closeBtnWrap = document.createElement('div');\r\n closeBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'Copy Error to Clipboard',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n navigator.clipboard.writeText(sendtoDODDResponse[0] + ' ' + sendtoDODDResponse[1]);\r\n // POPUP.hide(detailMessagePopup);\r\n overlay.show();\r\n showOKPopup();\r\n },\r\n });\r\n var displayGeneralBtn = button.build({\r\n text: 'Hide Error Details',\r\n style: 'secondary',\r\n type: 'contained',\r\n //icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(detailMessagePopup);\r\n overlay.show();\r\n sendtoDODDGeneralErrorMessage(sendtoDODDResponse);\r\n },\r\n });\r\n var closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n // classNames: 'btnWrap',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(detailMessagePopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n detailBtnWrap.appendChild(alertokBtn);\r\n detailBtnWrap.appendChild(displayGeneralBtn);\r\n closeBtnWrap.appendChild(closeBtn);\r\n var detailMessage = document.createElement('p');\r\n detailMessage.innerHTML = sendtoDODDResponse[0] + '

    ' + sendtoDODDResponse[1];\r\n detailMessagePopup.appendChild(detailMessage);\r\n detailMessagePopup.appendChild(detailBtnWrap);\r\n detailMessagePopup.appendChild(closeBtnWrap);\r\n POPUP.show(detailMessagePopup);\r\n }\r\n\r\n function showOKPopup() {\r\n var OKPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var OKBtnWrap = document.createElement('div');\r\n OKBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(OKPopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n OKBtnWrap.appendChild(alertokBtn);\r\n var OKMessage = document.createElement('p');\r\n OKMessage.innerHTML = 'Error Copied to Clipboard';\r\n OKPopup.appendChild(OKMessage);\r\n OKPopup.appendChild(OKBtnWrap);\r\n POPUP.show(OKPopup);\r\n }\r\n\r\n function sendtoDODDSuccessMessage(sendtoDODDResponse) {\r\n var sendtoDODDSuccessPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var OKBtnWrap = document.createElement('div');\r\n OKBtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(sendtoDODDSuccessPopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n OKBtnWrap.appendChild(alertokBtn);\r\n var sendtoDODDSuccessMesssage = document.createElement('p');\r\n sendtoDODDSuccessMesssage.innerHTML = sendtoDODDResponse[0];\r\n sendtoDODDSuccessPopup.appendChild(sendtoDODDSuccessMesssage);\r\n sendtoDODDSuccessPopup.appendChild(OKBtnWrap);\r\n POPUP.show(sendtoDODDSuccessPopup);\r\n }\r\n\r\n function sendToPortalAlert(sendtoPortalResponse) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n var alertMessage = document.createElement('p');\r\n alertMessage.innerHTML = sendtoPortalResponse;\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n function buildMorePopupMenu() {\r\n const morepopupmenu = document.createElement('div');\r\n morepopupmenu.classList.add('moreMenuPopup__menu', 'visible');\r\n\r\n const reportBtn = button.build({\r\n text: 'Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn'],\r\n });\r\n const reportBtn2 = button.build({\r\n text: 'Report with notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn2'],\r\n });\r\n\r\n const reportSignatureBtn = button.build({\r\n text: 'Print Signature Page',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn2'],\r\n callback: async () => {\r\n let isSuccess;\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n let extraSpace = 'false';\r\n\r\n // build & show spinner\r\n // const spinner = PROGRESS.SPINNER.show('Building Report...');\r\n //const screenInner = reportsScreen.querySelector('.attachmentsWrap');\r\n // reportsScreen.removeChild(doneBtn);\r\n // reportsScreen.removeChild(screenInner);\r\n // reportsScreen.appendChild(spinner);\r\n // generate report\r\n const planAttachmentIds = getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = getAttachmentIds(selectedAttachmentsSignature);\r\n isSuccess = assessment.generateReportWithAttachments(\r\n planId,\r\n '1',\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n 'false', //DODDFlag\r\n 'true', //signatureOnly\r\n 'N', // 'Y' or 'N' -- Include Important to, Important For, Skills and Abilities, and Risks in assessment\r\n );\r\n },\r\n });\r\n\r\n const reportBtn3 = button.build({\r\n text: 'Report with attachments',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['reportBtn2'],\r\n });\r\n const sendtoPortalBtn = button.build({\r\n text: 'Send To Portal',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames:\r\n planStatus === 'C' && $.session.webPermission === 'Web' ? ['sendtoPortalBtn'] : ['sendtoPortalBtn', 'disabled'],\r\n });\r\n const sendToDODDBtn = button.build({\r\n text: 'Send To DODD',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: planStatus === 'C' && $.session.sendToDODD ? ['sendToDODDBtn'] : ['sendToDODDBtn', 'disabled'],\r\n });\r\n const editDatesBtn = button.build({\r\n text: 'Change Dates',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames:\r\n planActiveStatus && $.session.planUpdate && planStatus !== 'C'\r\n ? ['editDatesBtn']\r\n : ['editDatesBtn', 'disabled'],\r\n });\r\n const statusBtn = button.build({\r\n text: 'Change Status',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: planActiveStatus && $.session.planUpdate ? ['statusBtn'] : ['statusBtn', 'disabled'],\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: downloadedFromSalesforce\r\n ? $.session.planDelete\r\n ? ['deleteBtn']\r\n : ['deleteBtn', 'disabled']\r\n : planStatus === 'D' && planActiveStatus && $.session.planUpdate && $.session.planDelete\r\n ? ['deleteBtn']\r\n : ['deleteBtn', 'disabled'],\r\n });\r\n const reactivateBtn = button.build({\r\n text: 'Reactivate Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: downloadedFromSalesforce\r\n ? ['reactivateBtn', 'disabled']\r\n : !planActiveStatus && $.session.planUpdate\r\n ? ['reactivateBtn']\r\n : ['reactivateBtn', 'disabled'],\r\n });\r\n const changeTypeBtn = button.build({\r\n text: 'Change Plan Type',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: downloadedFromSalesforce ? ['planTypeBtn', 'disabled'] : ['planTypeBtn'],\r\n });\r\n\r\n //morepopupmenu.appendChild(addWorkflowBtn);\r\n morepopupmenu.appendChild(reportBtn);\r\n morepopupmenu.appendChild(reportBtn2);\r\n morepopupmenu.appendChild(reportSignatureBtn);\r\n morepopupmenu.appendChild(sendtoPortalBtn);\r\n\r\n if (sentToOnet !== '') {\r\n const sentToOnetPDiv = document.createElement('div');\r\n sentToOnetPDiv.classList.add('sentToOnetDateDiv');\r\n sentToOnetPDiv.innerHTML = `

    Previously sent on: ${sentToOnet}`;\r\n morepopupmenu.appendChild(sentToOnetPDiv);\r\n }\r\n\r\n morepopupmenu.appendChild(sendToDODDBtn);\r\n morepopupmenu.appendChild(editDatesBtn);\r\n morepopupmenu.appendChild(statusBtn);\r\n morepopupmenu.appendChild(deleteBtn);\r\n morepopupmenu.appendChild(reactivateBtn);\r\n morepopupmenu.appendChild(changeTypeBtn);\r\n\r\n morepopupmenu.addEventListener('click', async e => {\r\n e.target.classList.add('disabled');\r\n\r\n let targetScreen;\r\n\r\n switch (e.target) {\r\n case reportBtn:\r\n case reportBtn2: {\r\n targetScreen = 'reportsScreen';\r\n break;\r\n }\r\n case reportSignatureBtn: {\r\n //targetScreen = 'reportsScreen';\r\n break;\r\n }\r\n case reportBtn3: {\r\n // Below 'targetScreen' will be for when we need to select attatchments\r\n targetScreen = 'reportsAttachmentScreen';\r\n retrieveData = {\r\n token: $.session.Token,\r\n assessmentId: getCurrentPlanId(),\r\n };\r\n break;\r\n }\r\n case sendtoPortalBtn: {\r\n // Below 'targetScreen' will be for when we need to select attatchments\r\n targetScreen = 'portalScreen';\r\n retrieveData = {\r\n token: $.session.Token,\r\n assessmentId: getCurrentPlanId(),\r\n };\r\n //assessment.transeferPlanReportToONET(planId, '1');\r\n break;\r\n }\r\n case sendToDODDBtn: {\r\n //Nathan TODO call ajax\r\n targetScreen = 'DODDScreen';\r\n retrieveData = {\r\n token: $.session.Token,\r\n assessmentId: getCurrentPlanId(),\r\n };\r\n break;\r\n }\r\n case editDatesBtn: {\r\n targetScreen = 'editDatesScreen';\r\n break;\r\n }\r\n case statusBtn: {\r\n targetScreen = 'updateStatusScreen';\r\n break;\r\n }\r\n case deleteBtn: {\r\n targetScreen = 'deleteScreen';\r\n break;\r\n }\r\n case reactivateBtn: {\r\n targetScreen = 'reactivateScreen';\r\n break;\r\n }\r\n case changeTypeBtn: {\r\n targetScreen = 'changePlanTypeScreen';\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n e.target.classList.remove('disabled');\r\n\r\n if (targetScreen) {\r\n const targetScreenElement = document.getElementById(targetScreen);\r\n morePopupMenu.classList.remove('visible');\r\n targetScreenElement.classList.add('visible');\r\n }\r\n\r\n if (targetScreen === 'DODDScreen') {\r\n const extraSpace = e.target === sendToDODDBtn ? 'false' : 'true';\r\n // DODDScreen = buildDODDScreen();\r\n runDODDScreen(extraSpace);\r\n }\r\n\r\n if (targetScreen === 'reportsScreen') {\r\n const extraSpace = e.target === reportBtn ? 'false' : 'true';\r\n runReportScreen(extraSpace);\r\n }\r\n\r\n if (targetScreen === 'portalScreen') {\r\n const extraSpace = e.target === sendtoPortalBtn ? 'false' : 'true';\r\n runPortalScreen(extraSpace);\r\n }\r\n });\r\n\r\n return morepopupmenu;\r\n }\r\n async function showMorePopup() {\r\n //sentToOnet = await assessmentAjax.getSentToONETDate({\r\n // token: $.session.Token,\r\n // assessmentId: planId,\r\n //});\r\n //sentToOnet = sentToOnet[0].sentDate;\r\n morePopup = POPUP.build({\r\n classNames: 'moreMenuPopup',\r\n });\r\n\r\n menuInnerWrap = document.createElement('div');\r\n menuInnerWrap.classList.add('moreMenuPopup__innerWrap');\r\n\r\n morePopupMenu = buildMorePopupMenu();\r\n editDatesScreen = buildEditDatesScreen();\r\n updateStatusScreen = buildUpdateStatusScreen();\r\n deleteScreen = buildDeleteScreen();\r\n reactivateScreen = buildReactivateScreen();\r\n addWorkflowScreen = buildAddWorkflowScreen();\r\n reportsScreen = buildReportsScreen();\r\n reportsAttachmentScreen = buildReportsAttachmentsScreen();\r\n DODDScreen = buildDODDScreen();\r\n changePlanTypeScreen = buildChangePlanTypeScreen();\r\n portalScreen = buildPortalScreen();\r\n\r\n menuInnerWrap.appendChild(morePopupMenu);\r\n menuInnerWrap.appendChild(editDatesScreen);\r\n menuInnerWrap.appendChild(updateStatusScreen);\r\n menuInnerWrap.appendChild(deleteScreen);\r\n menuInnerWrap.appendChild(reactivateScreen);\r\n menuInnerWrap.appendChild(addWorkflowScreen);\r\n menuInnerWrap.appendChild(reportsScreen);\r\n menuInnerWrap.appendChild(reportsAttachmentScreen);\r\n menuInnerWrap.appendChild(DODDScreen);\r\n menuInnerWrap.appendChild(changePlanTypeScreen);\r\n menuInnerWrap.appendChild(portalScreen);\r\n\r\n morePopup.appendChild(menuInnerWrap);\r\n\r\n POPUP.show(morePopup);\r\n }\r\n\r\n //* Plan Finalization\r\n function splitStringSentence(sentence) {\r\n const splitsentence = sentence.split('||');\r\n const firstPart = splitsentence[0];\r\n const secondPart = splitsentence[1];\r\n return [firstPart, secondPart];\r\n }\r\n function handleReportStream(report) {\r\n if (!report) return;\r\n\r\n const arr = report;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n }\r\n function mapResultsObj(results) {\r\n const obj = {};\r\n\r\n results.forEach(r => {\r\n const [action, result, ...rest] = r.split(' ');\r\n obj[action] = rest && rest.length ? `${result},${rest}`.replaceAll(',', ' ') : result;\r\n });\r\n\r\n return obj;\r\n }\r\n async function showFinalizePopup() {\r\n let currScreen = 1;\r\n let checkboxesSelected = [];\r\n let finalizationResults;\r\n let includeInAssessment = 'false';\r\n\r\n const finalizePopup = POPUP.build({\r\n classNames: 'finalizePopup',\r\n });\r\n\r\n const screen1 = document.createElement('div');\r\n const screen2 = document.createElement('div');\r\n const screen3 = document.createElement('div');\r\n screen1.classList.add('finalizeSelect', 'finalizeScreen', 'visible');\r\n screen2.classList.add('finalizeAttachments', 'finalizeScreen');\r\n screen3.classList.add('screenThree', 'finalizeScreen');\r\n\r\n const heading1 = document.createElement('p');\r\n const heading2 = document.createElement('p');\r\n heading1.classList.add('finalizeheading');\r\n heading2.classList.add('finalizeheading');\r\n heading1.innerHTML = 'Please select the actions that should take place';\r\n heading2.innerHTML = 'Please select the attachment(s) that should be included with the report.';\r\n\r\n screen1.appendChild(heading1);\r\n screen2.appendChild(heading2);\r\n\r\n const actionBtn = button.build({\r\n text: 'Next',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (currScreen === 1) {\r\n if (selectedCheckboxes.selectAllCheck) {\r\n checkboxesSelected = ['selectAllCheck'];\r\n } else {\r\n checkboxesSelected = Object.entries(selectedCheckboxes)\r\n .filter(([key, value]) => {\r\n // return key === 'selectAllCheck'\r\n if (key === 'selectAllCheck') return false;\r\n if (value) return true;\r\n })\r\n .map(([key, value]) => {\r\n return key;\r\n });\r\n }\r\n\r\n currScreen = 2;\r\n screen1.classList.remove('visible');\r\n screen2.classList.add('visible');\r\n\r\n return;\r\n }\r\n\r\n if (currScreen === 2) {\r\n const spinner = PROGRESS.SPINNER.get('Finalizing Plan...');\r\n screen3.insertBefore(spinner, screen3.firstChild);\r\n\r\n currScreen = 3;\r\n actionBtn.textContent = 'done';\r\n actionBtn.style.display = 'none';\r\n screen2.classList.remove('visible');\r\n screen3.classList.add('visible');\r\n\r\n finalizationResults = await assessmentAjax.finalizationActions({\r\n token: $.session.Token,\r\n planAttachmentIds: getAttachmentIds(selectedAttachmentsPlan),\r\n wfAttachmentIds: getAttachmentIds(selectedAttachmentsSignature),\r\n sigAttachmentIds: getAttachmentIds(selectedAttachmentsWorkflow),\r\n userId: $.session.UserId,\r\n assessmentID: planId,\r\n peopleId: selectedConsumer.id,\r\n emailAddresses: [...Object.values(selectedEmails)],\r\n checkBoxes: [...checkboxesSelected],\r\n extraSpace: 'false',\r\n toONET: false,\r\n isp: false,\r\n oneSpan: false,\r\n signatureOnly: false,\r\n include: includeInAssessment,\r\n versionID: '1',\r\n });\r\n \r\n spinner.remove();\r\n actionBtn.style.display = 'block';\r\n\r\n if (finalizationResults && selectedCheckboxes.downloadReportCheck) {\r\n handleReportStream(finalizationResults.report);\r\n }\r\n\r\n const resultsObj = mapResultsObj(finalizationResults.actions);\r\n console.log('actions', finalizationResults.actions);\r\n console.log('resultsObj', resultsObj);\r\n\r\n if (selectedCheckboxes.selectAllCheck) {\r\n screen3.appendChild(sendToDODDStatus);\r\n screen3.appendChild(sendToOhioNetStatus);\r\n screen3.appendChild(downloadReportStatus);\r\n screen3.appendChild(emailReportStatus);\r\n\r\n if ($.session.sendToDODD) {\r\n if (resultsObj.DODD !== 'Success') {\r\n sendtoDODDGeneralErrorMessage(splitStringSentence(resultsObj.DODD));\r\n }\r\n\r\n sendToDODDStatusIcon.innerHTML = resultsObj.DODD === 'Success' ? icons.checkmark : icons.close;\r\n sendToDODDStatus.classList.toggle('success', resultsObj.DODD === 'Success');\r\n }\r\n if ($.session.sendToPortal) {\r\n sendToOhioNetStatusIcon.innerHTML = resultsObj.ONET === 'Success' ? icons.checkmark : icons.close;\r\n sendToOhioNetStatus.classList.toggle('success', resultsObj.ONET === 'Success');\r\n }\r\n downloadReportStatusIcon.innerHTML = resultsObj.REPORT === 'Success' ? icons.checkmark : icons.close;\r\n downloadReportStatus.classList.toggle('success', resultsObj.REPORT === 'Success');\r\n emailReportStatusIcon.innerHTML = resultsObj.EMAIL === 'Success' ? icons.checkmark : icons.close;\r\n emailReportStatus.classList.toggle('success', resultsObj.EMAIL === 'Success');\r\n } else {\r\n if (selectedCheckboxes.sendToDODDCheck) {\r\n if (resultsObj.DODD !== 'Success') {\r\n sendtoDODDGeneralErrorMessage(splitStringSentence(resultsObj.DODD));\r\n }\r\n\r\n screen3.appendChild(sendToDODDStatus);\r\n sendToDODDStatusIcon.innerHTML = resultsObj.DODD === 'Success' ? icons.checkmark : icons.close;\r\n sendToDODDStatus.classList.toggle('success', resultsObj.DODD === 'Success');\r\n }\r\n if (selectedCheckboxes.sendToOhioNetCheck) {\r\n screen3.appendChild(sendToOhioNetStatus);\r\n sendToOhioNetStatusIcon.innerHTML = resultsObj.ONET === 'Success' ? icons.checkmark : icons.close;\r\n sendToOhioNetStatus.classList.toggle('success', resultsObj.ONET === 'Success');\r\n }\r\n if (selectedCheckboxes.downloadReportCheck) {\r\n screen3.appendChild(downloadReportStatus);\r\n downloadReportStatusIcon.innerHTML = resultsObj.REPORT === 'Success' ? icons.checkmark : icons.close;\r\n downloadReportStatus.classList.toggle('success', resultsObj.REPORT === 'Success');\r\n }\r\n if (selectedCheckboxes.emailReportCheck) {\r\n screen3.appendChild(emailReportStatus);\r\n emailReportStatusIcon.innerHTML = resultsObj.EMAIL === 'Success' ? icons.checkmark : icons.close;\r\n emailReportStatus.classList.toggle('success', resultsObj.EMAIL === 'Success');\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (currScreen === 3) {\r\n actionBtn.remove();\r\n POPUP.hide(finalizePopup);\r\n finalizeBtn.classList.remove('disabled');\r\n }\r\n },\r\n });\r\n\r\n finalizePopup.appendChild(screen1);\r\n finalizePopup.appendChild(screen2);\r\n finalizePopup.appendChild(screen3);\r\n finalizePopup.appendChild(actionBtn);\r\n\r\n //----------------------------------------------\r\n // screen 1\r\n //----------------------------------------------\r\n const selectedCheckboxes = {\r\n selectAllCheck: true,\r\n sendToDODDCheck: true,\r\n sendToOhioNetCheck: true,\r\n downloadReportCheck: true,\r\n emailReportCheck: true,\r\n };\r\n const selectedEmails = {};\r\n const emails = await assessmentAjax.getDefaultEmailsForFinalization();\r\n const checkboxWrap = document.createElement('div');\r\n checkboxWrap.classList.add('checkboxes');\r\n\r\n const selectAllCheck = input.buildCheckbox({\r\n id: 'selectAll',\r\n text: 'Select All',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.selectAllCheck = e.target.checked;\r\n\r\n if (selectedCheckboxes.selectAllCheck) {\r\n if ($.session.sendToDODD) {\r\n sendToDODDCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.sendToDODDCheck = true;\r\n }\r\n\r\n if ($.session.sendToPortal) {\r\n sendToOhioNetCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.sendToOhioNetCheck = true;\r\n }\r\n\r\n downloadReportCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.downloadReportCheck = true;\r\n\r\n emailReportCheck.querySelector('input').checked = true;\r\n selectedCheckboxes.emailReportCheck = true;\r\n }\r\n },\r\n });\r\n const sendToDODDCheck = input.buildCheckbox({\r\n id: 'sendToDODD',\r\n text: 'Send To DODD',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.sendToDODDCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n const sendToOhioNetCheck = input.buildCheckbox({\r\n id: 'sendToOhioNet',\r\n text: 'Send to OhioDD.net',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.sendToOhioNetCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n const downloadReportCheck = input.buildCheckbox({\r\n id: 'downloadReport',\r\n text: 'Download Report',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.downloadReportCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n const emailReportCheck = input.buildCheckbox({\r\n id: 'emailReport',\r\n text: 'Email Report',\r\n isChecked: true,\r\n callback: e => {\r\n selectedCheckboxes.emailReportCheck = e.target.checked;\r\n\r\n if (!e.target.checked) {\r\n selectAllCheck.querySelector('input').checked = false;\r\n selectedCheckboxes.selectAllCheck = false;\r\n }\r\n },\r\n });\r\n\r\n\r\n const addEmailBtn = button.build({\r\n text: 'Add Email',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n //if (Object.values(selectedEmails).length === 5) return;\r\n\r\n const id = _UTIL.autoIncrementId(`email-${Object.values(selectedEmails).length}`);\r\n selectedEmails[id] = '';\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('emailWrap');\r\n\r\n const emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n callback: e => {\r\n selectedEmails[id] = e.target.value;\r\n },\r\n });\r\n\r\n const deleteEmail = document.createElement('span');\r\n deleteEmail.innerHTML = icons.delete;\r\n deleteEmail.addEventListener('click', () => {\r\n wrap.remove();\r\n delete selectedEmails[id];\r\n addEmailBtn.classList.toggle(Object.values(selectedEmails).length === 5, 'disabled');\r\n });\r\n\r\n wrap.appendChild(emailInput);\r\n wrap.appendChild(deleteEmail);\r\n screen1.appendChild(wrap);\r\n\r\n addEmailBtn.classList.toggle(Object.values(selectedEmails).length === 5, 'disabled');\r\n },\r\n });\r\n\r\n screen1.appendChild(checkboxWrap);\r\n screen1.appendChild(addEmailBtn);\r\n checkboxWrap.appendChild(selectAllCheck);\r\n if ($.session.sendToDODD) {\r\n checkboxWrap.appendChild(sendToDODDCheck);\r\n } else {\r\n selectedCheckboxes.sendToDODDCheck = false;\r\n }\r\n if ($.session.sendToPortal) {\r\n checkboxWrap.appendChild(sendToOhioNetCheck);\r\n } else {\r\n selectedCheckboxes.sendToOhioNetCheck = false;\r\n }\r\n checkboxWrap.appendChild(downloadReportCheck);\r\n checkboxWrap.appendChild(emailReportCheck);\r\n\r\n if (emails) {\r\n emails.forEach((email, index) => {\r\n if (email.setting_value === '') {\r\n return;\r\n }\r\n\r\n const id = _UTIL.autoIncrementId(`email-${index + 1}`);\r\n selectedEmails[id] = email.setting_value;\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('emailWrap');\r\n\r\n const emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n value: email.setting_value,\r\n callback: e => {\r\n selectedEmails[id] = e.target.value;\r\n },\r\n });\r\n\r\n const deleteEmail = document.createElement('span');\r\n deleteEmail.innerHTML = icons.delete;\r\n deleteEmail.addEventListener('click', () => {\r\n wrap.remove();\r\n delete selectedEmails[id];\r\n addEmailBtn.classList.toggle(Object.values(selectedEmails).length === 5, 'disabled');\r\n });\r\n\r\n wrap.appendChild(emailInput);\r\n wrap.appendChild(deleteEmail);\r\n screen1.appendChild(wrap);\r\n });\r\n }\r\n\r\n //----------------------------------------------\r\n // screen 2\r\n //----------------------------------------------\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsSignature = {};\r\n const selectedAttachmentsWorkflow = {};\r\n\r\n const attachWraper = document.createElement('div');\r\n attachWraper.classList.add('attachMainWrap');\r\n\r\n const planAttBody = document.createElement('div');\r\n const workflowAttBody = document.createElement('div');\r\n const signatureAttBody = document.createElement('div');\r\n planAttBody.classList.add('attachWrap');\r\n workflowAttBody.classList.add('attachWrap');\r\n signatureAttBody.classList.add('attachWrap');\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n planAttBody.appendChild(planHeading);\r\n workflowAttBody.appendChild(workflowHeading);\r\n signatureAttBody.appendChild(signHeading);\r\n attachWraper.appendChild(planAttBody);\r\n attachWraper.appendChild(workflowAttBody);\r\n attachWraper.appendChild(signatureAttBody);\r\n\r\n screen2.appendChild(attachWraper);\r\n\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n signatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n planAttBody.appendChild(attachment);\r\n } else {\r\n workflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n const includeInAssessmentCheck = input.buildCheckbox({\r\n id: 'includeInAssessmentCheck',\r\n text: 'Include Important to, Important For, Skills and Abilities, and Risks in assessment',\r\n isChecked: false,\r\n callback: e => {\r\n includeInAssessment = e.target.checked ? 'true' : 'false';\r\n },\r\n });\r\n screen2.appendChild(includeInAssessmentCheck);\r\n\r\n //----------------------------------------------\r\n // screen 3\r\n //----------------------------------------------\r\n const sendToDODDStatus = document.createElement('div');\r\n const sendToOhioNetStatus = document.createElement('div');\r\n const downloadReportStatus = document.createElement('div');\r\n const emailReportStatus = document.createElement('div');\r\n sendToDODDStatus.classList.add('finalizeStatus');\r\n sendToOhioNetStatus.classList.add('finalizeStatus');\r\n downloadReportStatus.classList.add('finalizeStatus');\r\n emailReportStatus.classList.add('finalizeStatus');\r\n sendToDODDStatus.innerHTML = '

    Send to DODD

    ';\r\n sendToOhioNetStatus.innerHTML = '

    Send to OhioDD.net

    ';\r\n downloadReportStatus.innerHTML = '

    Download Report

    ';\r\n emailReportStatus.innerHTML = '

    Email Report

    ';\r\n const sendToDODDStatusIcon = document.createElement('span');\r\n const sendToOhioNetStatusIcon = document.createElement('span');\r\n const downloadReportStatusIcon = document.createElement('span');\r\n const emailReportStatusIcon = document.createElement('span');\r\n sendToDODDStatus.appendChild(sendToDODDStatusIcon);\r\n sendToOhioNetStatus.appendChild(sendToOhioNetStatusIcon);\r\n downloadReportStatus.appendChild(downloadReportStatusIcon);\r\n emailReportStatus.appendChild(emailReportStatusIcon);\r\n\r\n POPUP.show(finalizePopup);\r\n }\r\n\r\n // plan header\r\n function refreshGeneralInfo() {\r\n planHeader.removeChild(planHeaderGeneralInfoBar);\r\n\r\n planHeaderGeneralInfoBar = buildGeneralInfoBar();\r\n planHeader.insertBefore(planHeaderGeneralInfoBar, planHeaderButtons);\r\n }\r\n function getConsumerNameFromCard({ card, firstName, lastName }) {\r\n if (!card) {\r\n return `${lastName} ${firstName}`;\r\n }\r\n\r\n const firstName2 = card.querySelector('.name_first');\r\n const lastName2 = card.querySelector('.name_last');\r\n\r\n if (!firstName2 || !lastName2) return;\r\n\r\n return `${lastName2.innerText} ${firstName2.innerText}`;\r\n }\r\n function buildGeneralInfoBar() {\r\n let type;\r\n\r\n if (planType === 'r') {\r\n type = 'Revision';\r\n } else if (planType === 'a') {\r\n type = 'Annual';\r\n }\r\n\r\n const PlanStartDate = planDates.getPlanYearStartDate();\r\n const PlanEndDate = planDates.getPlanYearEndDate();\r\n const EffectiveStartDate = planDates.getEffectiveStartDate();\r\n const EffectiveEndDate = planDates.getEffectiveEndDate();\r\n\r\n const formatedDate = UTIL.formatDateFromDateObj(EffectiveStartDate);\r\n const splitFormatedDate = formatedDate.split('-');\r\n let esDate = `${splitFormatedDate[1]}/${splitFormatedDate[2]}/${splitFormatedDate[0].substring(2)}`;\r\n\r\n const formatedDate2 = UTIL.formatDateFromDateObj(EffectiveEndDate);\r\n const splitFormatedDate2 = formatedDate2.split('-');\r\n let edDate = `${splitFormatedDate2[1]}/${splitFormatedDate2[2]}/${splitFormatedDate2[0].substring(2)}`;\r\n\r\n const formatedDate3 = UTIL.formatDateFromDateObj(PlanStartDate);\r\n const splitFormatedDate3 = formatedDate3.split('-');\r\n let starDate = `${splitFormatedDate3[1]}/${splitFormatedDate3[2]}/${splitFormatedDate3[0].substring(2)}`;\r\n\r\n const formatedDate4 = UTIL.formatDateFromDateObj(PlanEndDate);\r\n const splitFormatedDate4 = formatedDate4.split('-');\r\n let endDate = `${splitFormatedDate4[1]}/${splitFormatedDate4[2]}/${splitFormatedDate4[0].substring(2)}`;\r\n\r\n generalInfoBar = document.createElement('div');\r\n generalInfoBar.classList.add('generalInfo');\r\n generalInfoBar.setAttribute('data-people-id', `${selectedConsumer.id}`);\r\n\r\n const consumerName = `

    ${getConsumerNameFromCard(selectedConsumer)}

    `;\r\n const dateSpan = `

    Span: ${starDate} - ${endDate}

    `;\r\n const dateSpanEff = `

    Eff: ${esDate} - ${edDate}

    `;\r\n const typeAndNum = revisionNumber > 0 ? `

    ${type} ${revisionNumber}

    ` : `

    ${type}

    `;\r\n\r\n generalInfoBar.innerHTML = `\r\n
    ${consumerName}${typeAndNum}
    \r\n
    ${dateSpan}${dateSpanEff}
    \r\n `;\r\n\r\n return generalInfoBar;\r\n }\r\n function buildButtonBar() {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('buttonBar');\r\n\r\n const moreBtn = button.build({\r\n text: 'More',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: showMorePopup,\r\n });\r\n finalizeBtn = button.build({\r\n text: 'Finalize Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n finalizeBtn.classList.add('disabled');\r\n await showFinalizePopup();\r\n finalizeBtn.classList.remove('disabled');\r\n },\r\n });\r\n if (planStatus !== 'C') {\r\n finalizeBtn.classList.add('disabled');\r\n }\r\n\r\n const backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n clearAllDataKeepConsumer();\r\n loadLandingPage();\r\n },\r\n });\r\n\r\n buttonBar.appendChild(moreBtn);\r\n if ($.session.applicationName === 'Gatekeeper' && $.session.planUpdate) {\r\n buttonBar.appendChild(finalizeBtn);\r\n }\r\n buttonBar.appendChild(backBtn);\r\n\r\n return buttonBar;\r\n }\r\n function buildPlanHeader() {\r\n planHeader = document.createElement('div');\r\n planHeader.classList.add('planHeader');\r\n\r\n planHeaderGeneralInfoBar = buildGeneralInfoBar();\r\n planHeaderButtons = buildButtonBar();\r\n\r\n planHeader.appendChild(planHeaderGeneralInfoBar);\r\n planHeader.appendChild(planHeaderButtons);\r\n\r\n return planHeader;\r\n }\r\n // main build\r\n async function getWorkflowMarkup() {\r\n const workflowMarkup = document.createElement('div');\r\n workflowMarkup.classList.add('planWorkflow');\r\n\r\n const processId = planWorkflow.getProcessId(planType);\r\n const workflowViewer = await WorkflowViewerComponent.get(processId, planId);\r\n const addWorkflowBtn = button.build({\r\n id: 'workflow_addWorkflowBtn',\r\n text: 'Add Workflow(s)',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['addWorkflowBtn'],\r\n callback: () => {\r\n planWorkflow.addWorkflowPopup();\r\n },\r\n });\r\n\r\n workflowMarkup.appendChild(addWorkflowBtn);\r\n workflowMarkup.appendChild(workflowViewer);\r\n\r\n return workflowMarkup;\r\n }\r\n async function buildPlanPage(loadingOrder, workflowDashboardCallback) {\r\n // loadingOrder = ['a', 'i', 'w']\r\n document.body.classList.add('planActive');\r\n\r\n const planHeading = buildPlanHeader();\r\n const loadingBar = PROGRESS.SPINNER.get('Loading Plan...');\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(planHeading);\r\n DOM.ACTIONCENTER.appendChild(loadingBar);\r\n // init data for tab sections\r\n await planData.init(planId);\r\n await planAttachment.getAttachments(planId);\r\n\r\n // build tab section wraps\r\n const assessmentWrap = document.createElement('div');\r\n const ispWrap = document.createElement('div');\r\n const workflowWrap = document.createElement('div');\r\n assessmentWrap.id = 'planAssessment';\r\n ispWrap.id = 'planISP';\r\n workflowWrap.id = 'planWorkflow';\r\n\r\n const firstToLoad = loadingOrder ? loadingOrder[0] : 'a';\r\n let defaultActiveTab = firstToLoad === 'a' ? 0 : firstToLoad === 'i' ? 1 : 2;\r\n\r\n // Build Tabs Markup\r\n const tabs = TABS.build(\r\n {\r\n navOnClick: async targetTabIndex => {\r\n if (targetTabIndex === '0') {\r\n $.loadedAppPage = 'planAssessment';\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n await assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n } else if (targetTabIndex === '1') {\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n\r\n $.loadedAppPage = 'planISP';\r\n await ISP.refreshISP(planId);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n DOM.autosizeTextarea();\r\n } else if (targetTabIndex === '2') {\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n\r\n $.loadedAppPage = 'planWorkflow';\r\n const workflowLoadingBar = PROGRESS.SPINNER.get('Loading Workflow...');\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(workflowLoadingBar);\r\n const newWorkflowMarkup = await getWorkflowMarkup();\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(newWorkflowMarkup);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n }\r\n DOM.autosizeTextarea();\r\n },\r\n active: defaultActiveTab,\r\n },\r\n [\r\n {\r\n heading: 'Assessment',\r\n markup: assessmentWrap,\r\n },\r\n {\r\n heading: 'ISP',\r\n markup: ispWrap,\r\n },\r\n {\r\n heading: 'Workflow',\r\n markup: workflowWrap,\r\n },\r\n ],\r\n );\r\n\r\n // initial load by ordering\r\n\r\n switch (firstToLoad) {\r\n case 'a': {\r\n $.loadedAppPage = 'planAssessment';\r\n defaultActiveTab = 0;\r\n\r\n const assessmentData = await assessment.getAssessmentData(planId);\r\n const assessmentMarkup = await assessmentCard.build(assessmentData, {\r\n selectedConsumer,\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n assessmentWrap.appendChild(assessmentMarkup);\r\n\r\n break;\r\n }\r\n case 'i': {\r\n $.loadedAppPage = 'planISP';\r\n defaultActiveTab = 1;\r\n\r\n await ISP.refreshISP(planId);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n break;\r\n }\r\n case 'w': {\r\n $.loadedAppPage = 'planWorkflow';\r\n defaultActiveTab = 2;\r\n\r\n const workflowLoadingBar = PROGRESS.SPINNER.get('Loading ISP...');\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(workflowLoadingBar);\r\n const newWorkflowMarkup = await getWorkflowMarkup();\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(newWorkflowMarkup);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n break;\r\n }\r\n }\r\n\r\n DOM.ACTIONCENTER.removeChild(loadingBar);\r\n DOM.ACTIONCENTER.appendChild(tabs);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n\r\n if (workflowDashboardCallback) workflowDashboardCallback();\r\n\r\n if (defaultActiveTab === 0) {\r\n mainAssessment.markUnansweredQuestions();\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n //sentToOnet = await assessmentAjax.getSentToONETDate({\r\n // token: $.session.Token,\r\n // assessmentId: planId,\r\n //});\r\n //sentToOnet = sentToOnet[0].sentDate;\r\n }\r\n\r\n // New Plan Setup Page\r\n //---------------------------------------------\r\n function sortPreviousPlans(previousPlansData) {\r\n return [...previousPlansData].sort((a, b) => {\r\n const aStart = new Date(a.planYearStart.split(' ')[0]);\r\n const bStart = new Date(b.planYearStart.split(' ')[0]);\r\n\r\n if (aStart === bStart) return 0;\r\n\r\n return aStart > bStart ? -1 : 1;\r\n });\r\n }\r\n async function handleTypeChange(e) {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n planType = selectedOption.value;\r\n\r\n if (setupWrap.contains(prevPlanTable)) setupWrap.removeChild(prevPlanTable);\r\n if (setupWrap.contains(datesBoxDiv)) setupWrap.removeChild(datesBoxDiv);\r\n\r\n if (planType === 'a') {\r\n await planDates.setAnnualPlanDates(previousPlansData);\r\n plan.setPlanType('a');\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.insertBefore(datesBoxDiv, doneBtn);\r\n doneBtn.classList.remove('disabled');\r\n }\r\n\r\n if (planType === 'r') {\r\n prevPlanTable = buildPreviousPlansTable();\r\n plan.setPlanType('r');\r\n setupWrap.insertBefore(prevPlanTable, doneBtn);\r\n doneBtn.classList.add('disabled');\r\n }\r\n }\r\n async function handleDoneBtnClick(selectedConsumer) {\r\n if (doneBtn.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n PROGRESS__BTN.SPINNER.show('annualRevisionDoneBtn', '', true);\r\n const processId = planWorkflow.getProcessId(planType);\r\n const wfvData = await planWorkflow.getWorkflowList(processId, 0);\r\n\r\n if (!wfvData || wfvData.length === 0) {\r\n createNewPlan(selectedConsumer, processId);\r\n return;\r\n }\r\n\r\n //const foo = async (selectedWorkflows) => {\r\n // const workflowCallback = selectedWorkflows => {\r\n const workflowCallback = async selectedWorkflows => {\r\n PROGRESS__BTN.SPINNER.show('workflowContinueBtn', '', false);\r\n // TODO 100969 -- display list of User Forms for the selected Workflows\r\n\r\n if ($.session.planFormCarryover) {\r\n let selectedwfForms = [];\r\n\r\n const wfvPopup = document.querySelector('.workflowListPopup');\r\n if (wfvPopup) {\r\n POPUP.hide(wfvPopup);\r\n }\r\n\r\n // *********FAKE DATA for Step Docs in a Workflow*****Albert Annual 6/23******Annual -- 279, Antnio -- 934*******************\r\n // const wfFormsData2 = [{ docId : 6052 , description : 'Expert 15 test.pdf', WFId: 934, wfName: 'Antinono 3' },\r\n // { docId : 6053 , description : 'FORMS -- General.pdf', WFId: 934, wfName: 'Antinono 3' },\r\n // { docId : 1836 , description : 'Medication -- Med Assessment.pdf', WFId: 279, wfName: 'Annual - Waver'},\r\n /// { docId : 3201 , description : 'Signed_Plan.pdf', WFId: 279, wfName: 'Annual - Waver'} ];\r\n\r\n let thisannual_plan;\r\n // inserting a new plan based on a selected prior plan\r\n if (priorConsumerPlanId && priorConsumerPlanId !== '') {\r\n thisPreviousPlanId = priorConsumerPlanId;\r\n } else {\r\n // // inserting a new plan based on the most recent existing plan\r\n thisannual_plan = previousPlansData.filter(wf => wf.active === 'True');\r\n if (thisannual_plan && thisannual_plan.length > 0) {\r\n thisPreviousPlanId = thisannual_plan[0].consumerPlanId;\r\n }\r\n }\r\n\r\n const wfFormsData = await WorkflowViewerAjax.getWorkFlowFormsfromPreviousPlan({\r\n token: $.session.Token,\r\n selectedWFTemplateIds: selectedWorkflows.join(', '),\r\n previousPlanId: thisPreviousPlanId,\r\n });\r\n\r\n const wfFormsPopup = POPUP.build({\r\n classNames: ['wfFormsPopup'],\r\n });\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select forms to attach.
    ';\r\n const linebr = document.createElement('div');\r\n linebr.innerHTML = '
    ';\r\n wfFormsPopup.appendChild(title);\r\n wfFormsPopup.appendChild(linebr);\r\n\r\n const doneBtn = button.build({\r\n id: 'wfFormsContinueBtn',\r\n text: 'Continue',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['copySelectedBtn', 'disabled'],\r\n classNames: 'copySelectedBtn',\r\n callback: () => {\r\n var selectedPreviousWfForms = planWorkflow.getselectedWorkFlowForms();\r\n var wf_template_selected = selectedWorkflows;\r\n\r\n POPUP.hide(wfFormsPopup);\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows, selectedPreviousWfForms);\r\n },\r\n });\r\n\r\n if (wfFormsData && wfFormsData.length > 0) {\r\n const list = planWorkflow.buildWorkflowFormList(wfFormsData);\r\n wfFormsPopup.appendChild(list);\r\n wfFormsPopup.appendChild(doneBtn);\r\n POPUP.show(wfFormsPopup);\r\n } else {\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows);\r\n }\r\n } else {\r\n // if ($.session.planFormCarryover\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows);\r\n }\r\n };\r\n planWorkflow.showWorkflowListPopup(wfvData, workflowCallback);\r\n }\r\n function getSelectedConsumerName(selectedConsumer) {\r\n const last = selectedConsumer.card.querySelector('.name_last');\r\n const first = selectedConsumer.card.querySelector('.name_first');\r\n return `${first.innerText} ${last.innerText}`;\r\n }\r\n async function createNewPlan(selectedConsumer, processId, selectedWorkflows, selectedPreviousWfForms) {\r\n const EffectiveEndDate = planDates.getEffectiveEndDate();\r\n let edDate = UTIL.formatDateFromDateObj(EffectiveEndDate);\r\n\r\n let currentPlanId;\r\n let workflowId;\r\n let insertedSSA;\r\n const workflowIds = [];\r\n const wfDocIds = [];\r\n\r\n //var selectedConsumer = plan.getSelectedConsumer();\r\n var salesForceCaseManagerId = await consentAndSignAjax.getStateCaseManagerforConsumer({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n if (planType === 'a') {\r\n const planYearStartDate = planDates.getPlanYearStartDate();\r\n const planYearReviewDate = planDates.getPlanReviewDate();\r\n\r\n let returnString = await planAjax.insertAnnualPlan({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n planYearStart: UTIL.formatDateFromDateObj(planYearStartDate),\r\n reviewDate: UTIL.formatDateFromDateObj(planYearReviewDate),\r\n salesForceCaseManagerId: salesForceCaseManagerId,\r\n });\r\n\r\n returnString = returnString.split(',');\r\n currentPlanId = returnString[0];\r\n insertedSSA = returnString[1];\r\n } else {\r\n const EffectiveStartDate = planDates.getEffectiveStartDate();\r\n const esDate = UTIL.formatDateFromDateObj(EffectiveStartDate);\r\n const planYearReviewDate = planDates.getPlanReviewDate();\r\n\r\n let returnString = await planAjax.insertRevisedPlan({\r\n token: $.session.Token,\r\n priorConsumerPlanId,\r\n effectiveStart: esDate,\r\n effectiveEnd: edDate,\r\n reviewDate: UTIL.formatDateFromDateObj(planYearReviewDate),\r\n useLatestPlanVersion: true,\r\n salesForceCaseManagerId: salesForceCaseManagerId,\r\n });\r\n\r\n returnString = returnString.split(',');\r\n currentPlanId = returnString[0];\r\n insertedSSA = returnString[1];\r\n }\r\n // handle selected workflows\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n // does this have any attached WF Forms, if so then wantedFormIds: selectedPreviousWfForms, otherwise wantedFormDescriptions: \"\"\r\n let thiswfForms;\r\n\r\n // handle selected forms\r\n if (selectedPreviousWfForms && selectedPreviousWfForms.length > 0) {\r\n let thiswfFormslist = [];\r\n for (j = 0; j < selectedPreviousWfForms.length; j++) {\r\n if (wftemplateId === selectedPreviousWfForms[j].WFtemplateId) {\r\n //thiswfFormslist.push(selectedPreviousWfForms[j].description);\r\n thiswfFormslist.push(selectedPreviousWfForms[j].attachmentId);\r\n }\r\n }\r\n if (thiswfFormslist && thiswfFormslist.length > 0) {\r\n thiswfForms = thiswfFormslist.join(',');\r\n } else {\r\n thiswfForms = '';\r\n }\r\n } else {\r\n thiswfForms = '';\r\n }\r\n\r\n workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: currentPlanId,\r\n peopleId: selectedConsumer.id,\r\n wantedFormAttachmentIds: thiswfForms,\r\n priorReferenceId: thisPreviousPlanId,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n }\r\n\r\n // START: Josh's WF ------------------\r\n const autoworkflowIds = await planAjax.insertAutomatedWorkflows({\r\n token: $.session.Token,\r\n processId,\r\n peopleId: selectedConsumer.id,\r\n referenceId: currentPlanId,\r\n priorConsumerPlanId: thisPreviousPlanId,\r\n });\r\n var autoWFIds = autoworkflowIds.split(',');\r\n workflowIds.push(...autoWFIds);\r\n // END: Josh's WF ---------------------\r\n\r\n const wfvPopup = document.querySelector('.workflowListPopup');\r\n if (wfvPopup) {\r\n // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n POPUP.hide(wfvPopup);\r\n }\r\n\r\n PROGRESS.SPINNER.show('Building Plan...');\r\n\r\n setActiveModuleSectionAttribute('plan-questionsAndAnswers-edit');\r\n\r\n planId = currentPlanId;\r\n planType = planType;\r\n planStatus = 'D';\r\n planActiveStatus = true;\r\n revisionNumber = undefined;\r\n\r\n if (salesForceCaseManagerId === '0') {\r\n // const wfvPopup = document.querySelector('.workflowListPopup');\r\n // if (wfvPopup) {\r\n // // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n // POPUP.hide(wfvPopup);\r\n // }\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberNoCasemanagerFoundPopup(consumer, () => {\r\n POPUP.hide(addedMemberNoCaseManagerPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n } else if (salesForceCaseManagerId === '-1') {\r\n // const wfvPopup = document.querySelector('.workflowListPopup');\r\n // if (wfvPopup) {\r\n // // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n // POPUP.hide(wfvPopup);\r\n // }\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberPopup(consumer, insertedSSA, () => {\r\n POPUP.hide(addedMemberPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n } else {\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberPopup(consumer, insertedSSA, () => {\r\n POPUP.hide(addedMemberPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n }\r\n }\r\n\r\n function buildPreviousPlansTable(forChangeType, callbackForChangeType) {\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Type', 'Rev #', 'PY Start', 'Eff Start', 'Review'],\r\n tableId: forChangeType ? 'previousPlanTableMoreMenu' : 'previousPlanTable',\r\n headline: 'Select a plan below for revision',\r\n };\r\n\r\n const tableData = previousPlansData\r\n .filter(prevPlan => {\r\n return prevPlan.active === 'True';\r\n })\r\n .map(prevPlan => {\r\n const type = prevPlan.planType === 'A' ? 'Ann' : 'Rev';\r\n const revisionNum = prevPlan.revisionNumber !== '0' ? prevPlan.revisionNumber : '';\r\n const start = prevPlan.planYearStart.split(' ')[0];\r\n const effectiveStart = prevPlan.effectiveStart.split(' ')[0];\r\n const reviewDate = prevPlan.reviewDate ? prevPlan.reviewDate.split(' ')[0] : 'n/a';\r\n\r\n return {\r\n values: [type, revisionNum, start, effectiveStart, reviewDate],\r\n attributes: [{ key: 'data-plan-id', value: prevPlan.consumerPlanId }],\r\n onClick: e => {\r\n if (!forChangeType) {\r\n const row = e.target;\r\n const previouslySeletedRow = prevPlanTable.querySelector('.selected');\r\n if (previouslySeletedRow) previouslySeletedRow.classList.remove('selected');\r\n\r\n row.classList.add('selected');\r\n\r\n planDates.setRevisionPlanDates(prevPlan);\r\n\r\n priorConsumerPlanId = prevPlan.consumerPlanId;\r\n\r\n if (setupWrap.contains(datesBoxDiv)) setupWrap.removeChild(datesBoxDiv);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.insertBefore(datesBoxDiv, prevPlanTable);\r\n } else {\r\n callbackForChangeType(e.target, prevPlan);\r\n }\r\n },\r\n };\r\n });\r\n\r\n const previousPlansTable = table.build(tableOptions);\r\n table.populate(previousPlansTable, tableData);\r\n\r\n return previousPlansTable;\r\n }\r\n function toggleNewPlanDoneBtn(disable) {\r\n if (disable) {\r\n if (doneBtn) doneBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n if (doneBtn) doneBtn.classList.remove('disabled');\r\n }\r\n async function buildNewPlanSetupPage(selectedConsumer) {\r\n setupWrap = document.createElement('div');\r\n setupWrap.classList.add('planSetupPage');\r\n\r\n hasPreviousPlans = previousPlansData && previousPlansData.length > 0 ? true : false;\r\n\r\n typeDropdown = dropdown.build({\r\n label: 'Type',\r\n style: 'secondary',\r\n className: 'planTypeDropdown',\r\n });\r\n\r\n let typeData;\r\n\r\n if (hasPreviousPlans) {\r\n planType = '%';\r\n typeData = [\r\n { value: '%', text: '' },\r\n { value: 'a', text: 'Annual' },\r\n { value: 'r', text: 'Revision' },\r\n ];\r\n } else {\r\n planType = 'a';\r\n typeData = [{ value: 'a', text: 'Annual' }];\r\n }\r\n\r\n dropdown.populate(typeDropdown, typeData);\r\n\r\n typeDropdown.addEventListener('change', handleTypeChange);\r\n\r\n doneBtn = button.build({\r\n id: 'annualRevisionDoneBtn',\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['setupDoneBtn', 'disabled'],\r\n callback: () => handleDoneBtnClick(selectedConsumer),\r\n });\r\n\r\n setupWrap.appendChild(typeDropdown);\r\n\r\n if (!hasPreviousPlans) {\r\n plan.setPlanType('a');\r\n await planDates.setAnnualPlanDates(previousPlansData);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.appendChild(datesBoxDiv);\r\n }\r\n\r\n setupWrap.appendChild(doneBtn);\r\n\r\n return setupWrap;\r\n }\r\n\r\n // Plan Landing Page\r\n //---------------------------------------------\r\n function showInvalidSalesForceWarningPopup() {\r\n const warningPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n // closeCallback: () => {\r\n // POPUP.hide(warningPopup);\r\n // },\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = `This consumer does not have a Resident Number or a SalesForce ID. Please insert the Resident Number or confirm that it is a valid number in the Desktop before inserting a Plan.`;\r\n\r\n warningPopup.appendChild(message);\r\n\r\n POPUP.show(warningPopup);\r\n }\r\n function showAddedToTeamMemberPopup(consumer, ssa, callback) {\r\n addedMemberPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n if (ssa) {\r\n addedMemberPopup.innerHTML += `

    ${consumer} and ${ssa} have been added as a Team Member to this plan.

    `;\r\n } else {\r\n addedMemberPopup.innerHTML += `

    ${consumer} has been added as a Team Member to this plan.

    `;\r\n // addedMemberPopup.innerHTML += `

    ${consumer} has been added as a Team Member to this plan.

    \r\n //

    No SSA/QIDP assigned to this consumer in Salesforce. Please assign SSA/QIDP.

    \r\n // `;\r\n }\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: callback,\r\n });\r\n\r\n addedMemberPopup.appendChild(okButton);\r\n\r\n POPUP.show(addedMemberPopup);\r\n }\r\n\r\n function showAddedToTeamMemberNoCasemanagerFoundPopup(consumer, callback) {\r\n addedMemberNoCaseManagerPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n addedMemberNoCaseManagerPopup.innerHTML += `

    ${consumer} has been added as a Team Member to this plan.

    \r\n

    No SSA/QIDP assigned to this consumer in Salesforce. Please assign SSA/QIDP.

    `;\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: callback,\r\n });\r\n\r\n addedMemberNoCaseManagerPopup.appendChild(okButton);\r\n\r\n POPUP.show(addedMemberNoCaseManagerPopup);\r\n }\r\n\r\n function buildNewPlanBtn() {\r\n return button.build({\r\n text: 'Add New Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.planUpdate ? ['disabled'] : ['newPlanBtn'],\r\n callback: async () => {\r\n if (newPlanBtn.innerText === 'ADD NEW PLAN') {\r\n PROGRESS__BTN.SPINNER.show(newPlanBtn);\r\n\r\n if ($.session.areInSalesForce) {\r\n // validate salesforce\r\n isValidSalesforce = await consentAndSignAjax.validateConsumerForSalesForceId({\r\n consumerId: selectedConsumer.id,\r\n });\r\n if (!isValidSalesforce) {\r\n PROGRESS__BTN.SPINNER.hide(newPlanBtn);\r\n showInvalidSalesForceWarningPopup();\r\n return;\r\n }\r\n }\r\n\r\n planSetupPage = await buildNewPlanSetupPage(selectedConsumer);\r\n\r\n landingPage.removeChild(overviewTable);\r\n landingPage.appendChild(planSetupPage);\r\n\r\n PROGRESS__BTN.SPINNER.hide(newPlanBtn);\r\n newPlanBtn.innerText = 'Back';\r\n\r\n if (assignCaseLoadBtn) {\r\n assignCaseLoadBtn.style.display = 'none';\r\n }\r\n } else {\r\n landingPage.removeChild(planSetupPage);\r\n landingPage.appendChild(overviewTable);\r\n\r\n newPlanBtn.innerText = 'Add New Plan';\r\n if (assignCaseLoadBtn) {\r\n assignCaseLoadBtn.style.display = 'block';\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n function buildAssignCaseloadBtn() {\r\n return button.build({\r\n id: 'assign-case-load-btn',\r\n text: $.session.applicationName === 'Gatekeeper' ? 'ASSIGN CASE LOAD' : 'ASSIGN QIDP',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.planUpdate ? ['disabled'] : ['newPlanBtn'],\r\n callback: () => {\r\n csAssignCaseload.showAssignCaseLoadPopup();\r\n },\r\n });\r\n }\r\n\r\n function buildDownloadPlanBtn() {\r\n return button.build({\r\n text: 'DOWNLOAD PLAN',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['downloadPlanBtn'],\r\n callback: downloadPlanFromSalesforceProgress,\r\n });\r\n }\r\n\r\n async function downloadPlanFromSalesforceProgress() {\r\n pendingSave.show('Downloading Plan...');\r\n\r\n const sentStatus = await planAjax.downloadPlanFromSalesforce({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n userId: $.session.UserId,\r\n });\r\n\r\n if (sentStatus === 'Download complete') {\r\n success = true;\r\n } else {\r\n success = false;\r\n }\r\n\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n // Handles popup actions based on whether the One Span delivery was successsful\r\n if (success) {\r\n pendingSave.fulfill('Download Successful!');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n overlay.hide();\r\n\r\n loadLandingPage();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to download plan, please try again.');\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n overlay.hide();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n function buildOverviewTable() {\r\n const tableOptions = {\r\n plain: false,\r\n columnHeadings: ['Type', 'Rev #', 'Downloaded', 'PY Start', 'Eff Start', 'Review', 'Sent To DODD'],\r\n tableId: 'planOverviewTable',\r\n };\r\n\r\n const tableData = previousPlansData.map(pd => {\r\n const type = pd.planType === 'A' ? 'Annual' : 'Revision';\r\n const revisionNum = pd.revisionNumber !== '0' ? pd.revisionNumber : '';\r\n const downloadedDate = pd.downloadDate ? pd.downloadDate.split(' ')[0] : '';\r\n const startDate = pd.planYearStart.split(' ')[0];\r\n const endDate = pd.planYearEnd.split(' ')[0];\r\n const effectiveStart = pd.effectiveStart.split(' ')[0];\r\n const effectiveEnd = pd.effectiveEnd.split(' ')[0];\r\n let isActive = pd.active === 'True' ? true : false;\r\n const reviewDate = pd.reviewDate ? pd.reviewDate.split(' ')[0] : 'n/a';\r\n let sentToDODD = pd.dateSentDODD ? pd.dateSentDODD : '';\r\n sentToDODD = `${pd.userSentDODD} - ${sentToDODD}`;\r\n if (downloadedDate !== '') {\r\n downloadPlanBtn.classList.add('disabled');\r\n }\r\n\r\n return {\r\n values: [type, revisionNum, downloadedDate, startDate, effectiveStart, reviewDate, sentToDODD],\r\n attributes: [\r\n { key: 'data-plan-active', value: isActive },\r\n { key: 'data-plan-id', value: pd.consumerPlanId },\r\n ],\r\n onClick: async () => {\r\n planId = pd.consumerPlanId;\r\n planType = pd.planType.toLowerCase();\r\n planStatus = pd.planStatus ? pd.planStatus : 'D';\r\n planActiveStatus = isActive;\r\n revisionNumber = pd.revisionNumber;\r\n downloadedFromSalesforce = downloadedDate ? true : false;\r\n\r\n planDates.setReviewPlanDates({\r\n startDate: new Date(startDate),\r\n endDate: new Date(endDate),\r\n effectiveStart: new Date(effectiveStart),\r\n effectiveEnd: new Date(effectiveEnd),\r\n reviewDate: new Date(reviewDate),\r\n });\r\n\r\n buildPlanPage();\r\n },\r\n };\r\n });\r\n\r\n const oTable = table.build(tableOptions);\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Type\r\n headers[1].setAttribute('data-type', 'number'); // Rev\r\n headers[2].setAttribute('data-type', 'string'); // Downloaded data\r\n headers[3].setAttribute('data-type', 'date'); // PY Start \r\n headers[4].setAttribute('data-type', 'date'); // Eff Start\r\n headers[5].setAttribute('data-type', 'date'); // Review\r\n headers[6].setAttribute('data-type', 'string'); // send to ddd\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n async function loadLandingPage() {\r\n DOM.clearActionCenter();\r\n\r\n landingPage = document.createElement('div');\r\n landingPage.classList.add('planLandingPage');\r\n\r\n const consumerCard = buildConsumerCard();\r\n newPlanBtn = buildNewPlanBtn();\r\n assignCaseLoadBtn = buildAssignCaseloadBtn();\r\n downloadPlanBtn = buildDownloadPlanBtn();\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('topOutcomeWrap');\r\n\r\n btnWrap.appendChild(newPlanBtn);\r\n if ($.session.planAssignCaseload) btnWrap.appendChild(assignCaseLoadBtn);\r\n\r\n if ($.session.downloadPlans && $.session.areInSalesForce) {\r\n // validate salesforce\r\n isValidSalesforce = await consentAndSignAjax.validateConsumerForSalesForceId({\r\n consumerId: selectedConsumer.id,\r\n });\r\n\r\n if (isValidSalesforce) {\r\n btnWrap.appendChild(downloadPlanBtn);\r\n }\r\n }\r\n\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Plans...');\r\n landingPage.appendChild(spinner);\r\n\r\n previousPlansData = await planAjax.getConsumerPlans({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n previousPlansData.sort((a, b) => {\r\n const aDate = a.effectiveStart.split(' ')[0];\r\n const bDate = b.effectiveStart.split(' ')[0];\r\n const aDateObj = new Date(aDate);\r\n const bDateObj = new Date(bDate);\r\n\r\n return bDateObj - aDateObj;\r\n });\r\n\r\n landingPage.removeChild(spinner);\r\n\r\n overviewTable = buildOverviewTable();\r\n landingPage.appendChild(overviewTable);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('plan');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.show('Gathering Plans...'); \r\n }\r\n\r\n return {\r\n clearAllData,\r\n clearPlanId,\r\n dashHandler,\r\n getCurrentPlanId,\r\n getSelectedConsumer,\r\n getCurrentPlanType,\r\n getPlanStatus,\r\n getPlanActiveStatus,\r\n getPlanDropdownData,\r\n getWorkflowMarkup,\r\n getHasPreviousPlans,\r\n setSelectedConsumer,\r\n setRevisionNumber,\r\n getISPValidation,\r\n getAttachmentIds,\r\n setPlanType,\r\n setPlanId,\r\n setPlanStatus,\r\n setPlanActiveStatus,\r\n toggleNewPlanDoneBtn,\r\n handleActionNavEvent,\r\n buildPlanPage,\r\n buildPreviousPlansTable,\r\n loadLanding: loadLandingPage,\r\n init,\r\n };\r\n})();\r\n","const planAjax = (function () {\r\n // GET\r\n //------------------------------------\r\n async function getConsumerPlans(retrieveData) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPlans/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPlansResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getConsumerPlanYearInfo(retrieveData) {\r\n //token, answerObj array\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPlanYearInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPlanYearInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getPlanDropdownData(retrieveData) {\r\n // TODO: this function can be removed, it lives in planData now\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.getServiceAndSupportsDataResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getPlanAndWorkFlowAttachments(retrieveData) {\r\n //string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAndWorkFlowAttachments/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.getPlanAndWorkFlowAttachmentsResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertAnnualPlan(retrieveData) {\r\n // token, consumerId, planYearStart\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerPlanAnnual/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n const planId = data.insertConsumerPlanAnnualResult;\r\n plan.setPlanId(planId);\r\n return planId;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function insertRevisedPlan(retrieveData) {\r\n // priorConsumerPlanId, effectiveStart, effectiveEnd, useLatestAssessmentVersion\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerPlanRevision/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n const planId = data.insertConsumerPlanRevisionResult;\r\n plan.setPlanId(planId);\r\n return planId;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function insertAutomatedWorkflows(retrieveData) {\r\n // token, processId, peopleId, referenceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAutomatedWorkflows/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertAutomatedWorkflowsResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function addSelectedAttachmentsToReport(retrieveData) {\r\n // string token, string[] attachmentIds, string userId, string assessmentID,,\r\n // string versionID, string extraSpace, bool isp\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addSelectedAttachmentsToReport/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addSelectedAttachmentsToReportResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n // UPDATE\r\n //------------------------------------\r\n async function updateConsumerPlanReactivate(retrieveData) {\r\n // token, consumerPlanId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanReactivate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanReactivateResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanSetStatus(retrieveData) {\r\n // token, consumerPlanId, status\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetStatus/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetStatusResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n return { hasError: true, message: error.statusText };\r\n }\r\n }\r\n async function updateConsumerPlanSetAnnualDates(retrieveData) {\r\n // token, consumerPlanId, newPlanYearStart\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetAnnualDates/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetAnnualDatesResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanSetRevisionEffectiveDates(retrieveData) {\r\n // token, consumerPlanId, newEffectiveStart, newEffectiveEnd\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetRevisionEffectiveDates/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetRevisionEffectiveDatesResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanReviewDate(retrieveData) {\r\n // token, reviewDate, planId (make a integer)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanReviewDate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanReviewDateResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function uploadPlanToDODD(retrieveData) {\r\n // consumerId(peopleId), planId)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/uploadPlanToDODD/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.uploadPlanToDODDResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updatePlanType(retrieveData) {\r\n //string token, string consumerPlanId, string planType, string planYearStart, string planYearEnd, \r\n //string effectiveStartDate, string effectiveEndDate, string reviewDate, string prevPlanId\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/switchPlanType/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.switchPlanTypeResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deletePlan(retrieveData) {\r\n // token, consumerPlanId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerPlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n mainAssessment.clearData();\r\n plan.clearPlanId();\r\n return data.deleteConsumerPlanResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // ATTACHMENTS\r\n // ----------------------------------\r\n function viewPlanAttachment(attachmentId, section) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewPlanAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', section);\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function addPlanAttachment(retrieveData) {\r\n // let abString = btoa(String.fromCharCode.apply(null, new Uint8Array(buf)))\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addPlanAttachment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addPlanAttachmentResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function deletePlanAttachment(planId, attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n planId: planId, //long\r\n attachmentId: attachmentId, //long\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deletePlanAttachmentResult;\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n async function getPlanAttachmentsList(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAttachmentsList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getPlanAttachmentsListResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // OTHER\r\n // ----------------------------------\r\n function getConsumerPeopleId(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPeopleId/',\r\n data: '{\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerPeopleIdResult;\r\n return callback(res);\r\n },\r\n });\r\n }\r\n async function getConsumerPeopleIdAsync(consumerId, callback) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPeopleId/',\r\n data: JSON.stringify({ consumerId: consumerId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPeopleIdResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updatePlanSectionApplicable(retrieveData) {\r\n // string token, long planId, long sectionId, string applicable)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanSectionApplicable/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanSectionApplicableResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function checkForSalesForce() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkForSalesForce/',\r\n data: '{}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (response.checkForSalesForceResult === 'true') {\r\n $.session.areInSalesForce = true;\r\n } else {\r\n $.session.areInSalesForce = false;\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n async function runReOrderSQL() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/runReOrderSQL/',\r\n data: JSON.stringify({}),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.runReOrderSQLResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function downloadPlanFromSalesforce(retrieveData) {\r\n // string token, string userId, string consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/downloadPlanFromSalesforce/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.downloadPlanFromSalesforceResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getConsumerPlans,\r\n getConsumerPlanYearInfo,\r\n getPlanDropdownData,\r\n getPlanAndWorkFlowAttachments,\r\n insertAnnualPlan,\r\n insertRevisedPlan,\r\n insertAutomatedWorkflows,\r\n addSelectedAttachmentsToReport,\r\n updateConsumerPlanReactivate,\r\n updateConsumerPlanSetStatus,\r\n updateConsumerPlanSetAnnualDates,\r\n updateConsumerPlanSetRevisionEffectiveDates,\r\n updateConsumerPlanReviewDate,\r\n updatePlanSectionApplicable,\r\n updatePlanType,\r\n deletePlan,\r\n viewPlanAttachment,\r\n addPlanAttachment,\r\n deletePlanAttachment,\r\n getPlanAttachmentsList,\r\n uploadPlanToDODD,\r\n checkForSalesForce,\r\n getConsumerPeopleId,\r\n getConsumerPeopleIdAsync,\r\n runReOrderSQL,\r\n downloadPlanFromSalesforce\r\n };\r\n})();\r\n","const planAttachment = (() => {\r\n let attachments;\r\n let planId;\r\n\r\n /** Class for attachments in Plan Module */\r\n class PlanAttachment {\r\n /**\r\n * Create a new attachment instance\r\n * @param {[string]} header Header for Attachment Popup\r\n * @param {string} questionId question ID the attachment button is assoicated with\r\n * @param {string} assessmentId Assessment ID\r\n */\r\n constructor(header, questionId, assessmentId) {\r\n this.attachmentsForQuestion = [];\r\n this.header = header;\r\n this.questionId = questionId;\r\n this.assessmentId = assessmentId;\r\n }\r\n\r\n buildAttachmentButton() {\r\n if (attachments.has(this.questionId))\r\n this.attachmentsForQuestion = attachments.get(this.questionId);\r\n\r\n const attachmentButton = button.build({\r\n id: `attach-${this.questionId}`,\r\n text: `ATTACHMENTS (${this.attachmentsForQuestion.length})`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n this.attachmentPopup();\r\n },\r\n });\r\n\r\n attachmentButton.classList.add('attachmentBtn');\r\n if (this.attachmentsForQuestion.length > 0) attachmentButton.classList.add('hasAttachments');\r\n\r\n return attachmentButton;\r\n }\r\n\r\n attachmentPopup() {\r\n const questionId = this.questionId;\r\n const assessmentId = this.assessmentId;\r\n const attachmentsForQuestion = this.attachmentsForQuestion;\r\n const attachmentsToDelete = [];\r\n const attachmentsAdded = [];\r\n // PERMISSIONS\r\n let ro;\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n ro = false;\r\n } else {\r\n ro = true;\r\n }\r\n // =========================\r\n // UTIL FUNCTIONS\r\n // =============================\r\n // Adds attachments to the existing attachments section in popup\r\n function populateExistingAttachments() {\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n\r\n attachmentsForQuestion.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.planAttachmentId);\r\n fileContainer.setAttribute('delete', false);\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n if (!ro) fileContainer.appendChild(removeAttachmentBtn);\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n planAjax.viewPlanAttachment(attachmentId, '');\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n // CB for clicking the delete button on attachments in existing attachment section\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(\r\n attachment => attachment !== attachmentId,\r\n );\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n // checks file is a valid type\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n // CB for clicking the add attachment button. doesn't do anything if they haven't yet chosen an\r\n // attachment for existing add attachment input.\r\n function addNewAttachment() {\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer\r\n .getElementsByTagName('input')[0]\r\n .addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n // CB for Done Button\r\n async function saveAction() {\r\n async function saveAttachmentsToDB() {\r\n const attachmentSaveArray = [];\r\n if (attachmentArray.length === 0) return;\r\n\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n assessmentId: assessmentId,\r\n description: attachment.description,\r\n attachmentType: attachment.type,\r\n attachment: attachment.arrayBuffer,\r\n section: '',\r\n questionId: questionId,\r\n };\r\n planAjax.addPlanAttachment(saveData).then(res => resolve(res));\r\n });\r\n attachmentSaveArray.push(saveProm);\r\n });\r\n\r\n const attSaveRes = await Promise.all(attachmentSaveArray);\r\n attSaveRes.forEach(att => {\r\n attachmentsAdded.push(att[0]);\r\n });\r\n }\r\n // DELETE ATTACHMENTS\r\n attachmentsToDelete.forEach(attachment => {\r\n planAjax.deletePlanAttachment(assessmentId, attachment);\r\n });\r\n\r\n // ADD ATTACHMENTS\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n console.log('no attachments to add');\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n await Promise.all(attachmentProms);\r\n await saveAttachmentsToDB();\r\n }\r\n //===========================================\r\n //===========================================\r\n\r\n const popup = POPUP.build({\r\n header: this.header,\r\n id: 'planAttachmentPopup',\r\n });\r\n\r\n const addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: () => addNewAttachment(),\r\n });\r\n addAttachmentBtn.type = 'button';\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n try {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving Attachment Changes');\r\n await saveAction();\r\n await this.cleanAttachmentLists(attachmentsAdded, attachmentsToDelete);\r\n pendingSave.fulfill('Saved');\r\n setTimeout(async () => {\r\n successfulSave.hide(false);\r\n // popup.remove();\r\n POPUP.hide(popup);\r\n // refresh attachments\r\n attachments = new Map();\r\n const res = await planAjax.getPlanAttachmentsList({\r\n token: $.session.Token,\r\n planId,\r\n section: '',\r\n });\r\n res.forEach(attachment => {\r\n let attArray = [];\r\n if (attachments.has(attachment.questionId)) {\r\n attArray = attachments.get(attachment.questionId);\r\n }\r\n attArray.push(attachment);\r\n attachments.set(attachment.questionId, attArray);\r\n });\r\n // build new button\r\n const newAttachmentBtn = this.buildAttachmentButton();\r\n const oldAttachmentBtn = document.getElementById(`attach-${this.questionId}`);\r\n const attachmentParent = oldAttachmentBtn.parentElement;\r\n attachmentParent.removeChild(oldAttachmentBtn);\r\n attachmentParent.appendChild(newAttachmentBtn);\r\n }, 2000);\r\n } catch (error) {\r\n pendingSave.reject('Error saving attachment changes');\r\n setTimeout(() => {\r\n failSave.hide(false);\r\n popup.style.removeProperty('display');\r\n }, 2000);\r\n console.error(error);\r\n }\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: ro ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n const newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', evt => fileValidation(evt.target));\r\n\r\n let attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n const attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n if (!ro) {\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n popup.appendChild(addAttachmentBtn);\r\n btnWrap.appendChild(saveBtn);\r\n }\r\n\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n if (attachmentsForQuestion.length > 0) populateExistingAttachments();\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n /**\r\n * Gets the attachment button element\r\n * @return {HTMLButtonElement} Attachment Button Element\r\n */\r\n get attachmentButton() {\r\n return this.buildAttachmentButton();\r\n }\r\n\r\n cleanAttachmentLists(attachmentsToAdd, attachmentsToRemove) {\r\n attachmentsToRemove.forEach(attachmentId => {\r\n let list = attachments.get(this.questionId);\r\n let newList = list.filter(a => a.planAttachmentId !== attachmentId);\r\n attachments.set(this.questionId, newList);\r\n });\r\n attachmentsToAdd.forEach(attachment => {\r\n let list = [];\r\n if (attachments.has(this.questionId)) {\r\n list = attachments.get(this.questionId);\r\n }\r\n list.push(attachment);\r\n attachments.set(this.questionId, list);\r\n });\r\n if (attachments.has(this.questionId)) {\r\n this.attachmentsForQuestion = attachments.get(this.questionId);\r\n } else {\r\n this.attachmentsForQuestion = [];\r\n }\r\n\r\n const attachmentBtn = document.getElementById(`attach-${this.questionId}`);\r\n attachmentBtn.innerText = `ATTACHMENTS (${this.attachmentsForQuestion.length})`;\r\n\r\n if (this.attachmentsForQuestion.length > 0) {\r\n attachmentBtn.classList.add('hasAttachments');\r\n } else {\r\n attachmentBtn.classList.remove('hasAttachments');\r\n }\r\n }\r\n }\r\n\r\n async function getAttachments(planID) {\r\n planId = planID;\r\n attachments = new Map();\r\n\r\n const retData = {\r\n token: $.session.Token,\r\n planId,\r\n section: '',\r\n };\r\n const res = await planAjax.getPlanAttachmentsList(retData);\r\n res.forEach(attachment => {\r\n let attArray = [];\r\n if (attachments.has(attachment.questionId)) {\r\n attArray = attachments.get(attachment.questionId);\r\n }\r\n attArray.push(attachment);\r\n attachments.set(attachment.questionId, attArray);\r\n });\r\n }\r\n\r\n return {\r\n PlanAttachment,\r\n getAttachments,\r\n };\r\n})();\r\n","const planData = (() => {\r\n let planId;\r\n let ispData;\r\n let dropdowns;\r\n\r\n // CHARACTER LIMITS\r\n //-----------------------------------------\r\n const characterLimits = {\r\n assessment: {},\r\n isp: {\r\n consentAndSign: {\r\n dissentAreaDisagree: 2500,\r\n dissentHowToAddress: 2500,\r\n },\r\n contactInfo: {\r\n moreDetail: 10000,\r\n },\r\n restrictiveMeasures: {\r\n rmKeepSelfSafe: 2500,\r\n rmFadeRestriction: 10000,\r\n rmWhatCouldHappenGood: 2500,\r\n rmWhatCouldHappenBad: 2500,\r\n rmOtherWayHelpGood: 2500,\r\n rmOtherWayHelpBad: 2500,\r\n },\r\n introduction: {\r\n likeAdmire: 2464,\r\n thingsImportantTo: 2464,\r\n thingsImportantFor: 2464,\r\n howToSupport: 2464,\r\n },\r\n outcomes: {\r\n description: 2500,\r\n details: 2500,\r\n history: 2500,\r\n carryOverReason: 255,\r\n whatNeedsToHappen: 2500, // exp\r\n howItShouldHappen: 2500, // exp\r\n whenHowOften: 255, // exp\r\n whenHowOftenOther: 255, // exp\r\n whatWillHappen: 2500, // rev\r\n whenToCheckIn: 2500, // rev\r\n },\r\n servicesSupports: {\r\n scopeOfService: 10000, // paid supp\r\n fundingSourceOther: 2500, // paid supp\r\n howOftenHowMuch: 255, // paid supp\r\n howOftenOther: 2500, // paid supp\r\n whatSupportLooksLike: 2500, // add supp\r\n whenHowOften: 2500, // add supp\r\n whenHowOftenOther: 2500, // add supp\r\n reasonForReferral: 2500, // prof ref\r\n },\r\n summary: {\r\n aloneTime: 10000,\r\n importantTo: 10000,\r\n importantFor: 10000,\r\n skillsAndAbilities: 10000,\r\n whatIsRisk: 10000,\r\n whatSupportLooksLike: 10000,\r\n },\r\n },\r\n };\r\n function getISPCharacterLimits(section) {\r\n return characterLimits.isp[section];\r\n }\r\n function getAllISPcharacterLimts() {\r\n return characterLimits.isp;\r\n }\r\n function getAssessmentCharacterLimits(section) {\r\n return characterLimits.assessment[section];\r\n }\r\n\r\n // DROPDOWN DATA\r\n //-----------------------------------------\r\n const removeDupRelationships = relationships => {\r\n const unique = [];\r\n const flag = {};\r\n relationships.forEach(el => {\r\n if (!flag[el.peopleId]) {\r\n flag[el.peopleId] = true;\r\n el.lastName = el.lastName.split('|')[0];\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n const removeDups = data => {\r\n const flag = {};\r\n const flagN = {};\r\n const unique = [];\r\n data.forEach(el => {\r\n if (!flag[el.value] && !flagN[el.text]) {\r\n flag[el.value] = true;\r\n flagN[el.text] = true;\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n async function setDropdownData() {\r\n /**\r\n * -- Service Type changes for Ticket 66872 --\r\n * Service Types no longer populate from GK, but instead are static,\r\n * and are also tied to a specific funding source. Some service types\r\n * only show with specific funding sources\r\n * Show with '%' displays with all funding sources\r\n * DON'T CHANGE VALUE!\r\n */\r\n const defaultDropdowns = {\r\n fundingSource: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'HCBS Individual Options Waiver' },\r\n { value: '2', text: 'HCBS Level One Waiver' },\r\n { value: '3', text: 'HCBS SELF Waiver' },\r\n { value: '4', text: 'ICF' },\r\n { value: '5', text: 'State Plan Services' },\r\n { value: '6', text: 'Local Funds' },\r\n { value: '7', text: 'Local Funds--Contracted with Ohio Department of Aging' },\r\n { value: '8', text: 'Other' },\r\n ],\r\n serviceTypes: [\r\n {\r\n value: '1',\r\n text: 'Adult Day Support - Community',\r\n showWith: ['1', '2', '3', '6', '7', '8'],\r\n },\r\n {\r\n value: '2',\r\n text: 'Adult Day Support - Facility',\r\n showWith: ['1', '2', '3', '6', '7', '8'],\r\n },\r\n {\r\n value: '51',\r\n text: 'Adult Day Support - Virtual',\r\n showWith: ['1', '2', '3', '6', '7'],\r\n },\r\n {\r\n value: '3',\r\n text: 'Assistive Technology Consultation & Supports',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '4',\r\n text: 'Assistive Technology Equipment & Supports',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '5', text: 'Career Planning', showWith: ['1', '2', '3', '6', '8'] },\r\n {\r\n value: '6',\r\n text: 'Career Planning--Benefits Education and Analysis',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '7',\r\n text: 'Career Planning--Worksite Accessibility',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '8', text: 'Community Respite', showWith: ['1', '2', '3', '8'] },\r\n { value: '9', text: 'Community Transition', showWith: ['1', '8'] },\r\n {\r\n value: '10',\r\n text: 'CTI--Clinical/Therapeutic Interventionist (SELF Service)',\r\n showWith: ['2', '3', '8'],\r\n },\r\n {\r\n value: '11',\r\n text: 'CTI--Senior Level Specialized Clinical/Therapeutic Interventionist (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n {\r\n value: '12',\r\n text: 'CTI--Specialized Clinical/Therapeutic Interventionist (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n { value: '13', text: 'DD Waiver Nursing', showWith: ['1', '8'] },\r\n { value: '14', text: 'Environmental Accessibility Adaptations', showWith: ['1', '2', '8'] },\r\n {\r\n value: '15',\r\n text: 'Functional Behavioral Assessment (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n { value: '16', text: 'Group Employment Supports', showWith: ['1', '2', '3', '6', '8'] },\r\n { value: '17', text: 'Home Delivered Meals', showWith: ['1', '2', '3', '8'] },\r\n { value: '18', text: 'Homemaker Personal Care', showWith: ['1', '2', '8'] },\r\n {\r\n value: '19',\r\n text: 'Homemaker Personal Care (HPC) Transportation',\r\n showWith: ['1', '2', '3', '8'],\r\n },\r\n { value: '20', text: 'HPC Transportation (Commercial)', showWith: ['1', '2', '8'] },\r\n {\r\n value: '21',\r\n text: 'Individual Employment Supports',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '22', text: 'Informal Respite--Family Only', showWith: ['2', '8'] },\r\n { value: '23', text: 'Informal Respite--Non-Family Only', showWith: ['2', '8'] },\r\n { value: '24', text: 'Intermediate Care Facility', showWith: ['4', '8'] },\r\n { value: '25', text: 'Interpreter Services', showWith: ['1', '8'] },\r\n { value: '26', text: 'Money Management', showWith: ['1', '2', '8'] },\r\n {\r\n value: '27',\r\n text: 'Non-Medical Transportation - Commercial (CNMT)',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '28',\r\n text: 'Non-Medical Transportation (NMT)',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '29', text: 'Nutritional Services', showWith: ['1', '8'] },\r\n { value: '30', text: 'Participant Directed HPC', showWith: ['1', '2', '3', '8'] },\r\n { value: '31', text: 'Participant Directed Goods and Services', showWith: ['2', '3', '8'] },\r\n {\r\n value: '32',\r\n text: 'Participant/Family Stability Assistance--Counseling (SELF Service)',\r\n showWith: ['3', '8'],\r\n },\r\n {\r\n value: '33',\r\n text: 'Participant/Family Stability Assistance--Training (SELF Service)',\r\n showWith: ['2', '3', '8'],\r\n },\r\n { value: '34', text: 'Remote Supports', showWith: ['1', '2', '3', '6', '8'] },\r\n { value: '35', text: 'Residential Respite', showWith: ['1', '2', '3', '8'] },\r\n { value: '36', text: 'Shared Living', showWith: ['1', '8'] },\r\n { value: '37', text: 'Social Work', showWith: ['1', '8'] },\r\n {\r\n value: '38',\r\n text: 'Specialized Medical Equipment (Adaptive Assistive Equipment)',\r\n showWith: ['1', '2', '8'],\r\n },\r\n { value: '39', text: 'Support Brokerage (SELF Service)', showWith: ['3', '8'] },\r\n { value: '40', text: 'Support Brokerage--Unpaid (SELF Service)', showWith: ['3', '8'] },\r\n { value: '41', text: 'Supported Living', showWith: ['8'] },\r\n { value: '42', text: 'Targeted Case Management', showWith: ['8'] },\r\n {\r\n value: '43',\r\n text: 'Vocational Habilitation - Community',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '44',\r\n text: 'Vocational Habilitation - Facility',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n { value: '45', text: 'Waiver Facility Licensee Only', showWith: ['8'] },\r\n { value: '46', text: 'Waiver Nursing Delegation (WND)', showWith: ['1', '2', '3', '8'] },\r\n { value: '47', text: 'Other (please specify)', showWith: ['5', '6'] },\r\n { value: '48', text: 'Self Directed Transportation', showWith: ['1', '2', '3'] },\r\n { value: '49', text: 'Adult Day Support - Both', showWith: ['1', '2', '3', '6', '7', '8'] },\r\n {\r\n value: '50',\r\n text: 'Vocational Habilitation - Both',\r\n showWith: ['1', '2', '3', '6', '8'],\r\n },\r\n {\r\n value: '52',\r\n text: 'Vocational Habilitation - Virtual',\r\n showWith: ['1', '2', '3', '6'],\r\n },\r\n ],\r\n newOrExisting: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'New' },\r\n { value: '2', text: 'Existing' },\r\n ],\r\n howOftenHowMuchFrequency: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'Daily' },\r\n { value: '2', text: 'Weekly' },\r\n { value: '3', text: 'Monthly' },\r\n { value: '4', text: 'Miles' },\r\n { value: '5', text: 'Other' },\r\n ],\r\n whenHowOftenFrequency: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'Daily' },\r\n { value: '2', text: 'Weekly' },\r\n { value: '3', text: 'Monthly' },\r\n { value: '4', text: 'Other' },\r\n ],\r\n howOFtenExperiences: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'Weekly' },\r\n { value: '2', text: 'Monthly' },\r\n { value: '3', text: 'Other' },\r\n ],\r\n communicationType: [\r\n // { value: '%', text: '' },\r\n { value: '1', text: 'Letter / Mail.' },\r\n { value: '2', text: 'Phone Call.' },\r\n { value: '3', text: 'Text.' },\r\n { value: '4', text: 'Email.' },\r\n { value: '5', text: 'Social Media.' },\r\n { value: '6', text: 'Video Meeting.' },\r\n { value: '7', text: 'Other.' },\r\n ],\r\n dailyLifeDropdownType: [\r\n { value: '%', text: '' },\r\n {\r\n value: '1',\r\n text: '1 Person has a job, may be interested in a different one or moving up.',\r\n },\r\n { value: '2', text: '2 Person wants a job and needs help to find one.' },\r\n {\r\n value: '3',\r\n text: `3 Person isn't sure about work and may need to learn more.`,\r\n },\r\n {\r\n value: '4',\r\n text: `4 Person doesn't think they want to work, but may not know enough about it.`,\r\n },\r\n ],\r\n levelsOfSupervision: [\r\n { value: '%', text: '' },\r\n { value: '1', text: 'No Paid Supports' },\r\n { value: '2', text: 'General' },\r\n { value: '3', text: 'Auditory' },\r\n { value: '4', text: 'Visual' },\r\n { value: '5', text: 'Close & Constant' },\r\n { value: '6', text: 'Technology' },\r\n ],\r\n outcomeStatus: [\r\n { value: '0', text: 'In Progress' },\r\n { value: '1', text: 'Complete' },\r\n ],\r\n };\r\n\r\n const retrieveData = {\r\n token: $.session.Token,\r\n effectiveStartDate: UTIL.getFormattedDateFromDate(planDates.getEffectiveStartDate(), {\r\n format: 'iso',\r\n }),\r\n effectiveEndDate: UTIL.getFormattedDateFromDate(planDates.getEffectiveEndDate(), {\r\n format: 'iso',\r\n }),\r\n consumerId: plan.getSelectedConsumer().id,\r\n areInSalesForce: $.session.areInSalesForce,\r\n planId,\r\n };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n dropdowns = {\r\n ...data.getServiceAndSupportsDataResult,\r\n ...defaultDropdowns,\r\n };\r\n\r\n dropdowns.relationshipsWithDups = dropdowns.relationships;\r\n dropdowns.relationships = removeDupRelationships(dropdowns.relationships);\r\n } catch (error) {\r\n console.log(error);\r\n\r\n dropdowns = {\r\n ...defaultDropdowns,\r\n };\r\n }\r\n }\r\n function getDropdownData() {\r\n return dropdowns;\r\n }\r\n async function refreshDropdownData() {\r\n await setDropdownData();\r\n planSummary.refreshDropdownData(dropdowns);\r\n planOutcomes.refreshDropdownData(dropdowns);\r\n servicesSupports.refreshDropdownData(dropdowns);\r\n contactInformation.refreshDropdownData(dropdowns);\r\n }\r\n function getRelationshipNameById(contactId) {\r\n if (!contactId) return '';\r\n\r\n if (contactId.endsWith('V')) {\r\n const supportData = servicesSupports.getSelectedVendors();\r\n const filteredService = supportData.filter(dd => `${dd.providerId}V` === contactId);\r\n if (filteredService.length > 0) {\r\n return `${filteredService[0].providerName}`;\r\n } else {\r\n return '';\r\n }\r\n } else {\r\n const filteredService = dropdowns.relationships.filter(dd => dd.contactId === contactId);\r\n if (filteredService.length > 0) {\r\n if (!filteredService[0].lastName || !filteredService[0].firstName) return '';\r\n return `${filteredService[0].lastName}, ${filteredService[0].firstName}`;\r\n } else {\r\n return '';\r\n }\r\n }\r\n }\r\n function populateRelationshipDropdown(dropdownEle, defaultValue, includeSupports = false) {\r\n //if ($.session.areInSalesForce) {\r\n // group populate\r\n const teamMemberGroup = {\r\n groupLabel: 'Plan Team Member',\r\n groupId: 'teamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const nonTeamMemberGroup = {\r\n groupLabel: 'Not a Team Member on this Plan',\r\n groupId: 'nonTeamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const paidSupportsGroup = {\r\n groupLabel: 'Providers on this Plan',\r\n groupId: 'paidSupportsGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n dropdowns.relationships.forEach(dd => {\r\n if (dd.signatureId) {\r\n teamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n } else {\r\n nonTeamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n }\r\n });\r\n\r\n teamMemberGroup.dropdownValues = removeDups(teamMemberGroup.dropdownValues);\r\n nonTeamMemberGroup.dropdownValues = removeDups(nonTeamMemberGroup.dropdownValues);\r\n\r\n teamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n nonTeamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const groupDropdownData = [];\r\n groupDropdownData.push(teamMemberGroup);\r\n groupDropdownData.push(nonTeamMemberGroup);\r\n\r\n if (includeSupports) {\r\n const supportData = servicesSupports.getSelectedVendors();\r\n paidSupportsGroup.dropdownValues = supportData.map(ps => {\r\n return {\r\n value: `${ps.providerId}V`,\r\n text: ps.providerName,\r\n };\r\n });\r\n\r\n paidSupportsGroup.dropdownValues = removeDups(paidSupportsGroup.dropdownValues);\r\n paidSupportsGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n groupDropdownData.push(paidSupportsGroup);\r\n }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: defaultValue,\r\n });\r\n // } else {\r\n // let data;\r\n // // normal populate\r\n // const data1 = dropdowns.relationships.map(dd => {\r\n // return {\r\n // value: dd.contactId,\r\n // text: `${dd.lastName}, ${dd.firstName}`,\r\n // };\r\n // });\r\n\r\n // if (includeSupports) {\r\n // const supportData = servicesSupports.getSelectedVendors();\r\n // const data2 = supportData.map(ps => {\r\n // return {\r\n // value: `${ps.providerId}V`,\r\n // text: ps.providerName,\r\n // };\r\n // });\r\n\r\n // data = [...data1, ...data2];\r\n // } else {\r\n // data = data1;\r\n // }\r\n\r\n // data.sort((a, b) => {\r\n // const textA = a.text.toUpperCase();\r\n // const textB = b.text.toUpperCase();\r\n // return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n // });\r\n // data.unshift({ value: '', text: '' });\r\n\r\n // dropdown.populate(dropdownEle, removeDups(data), defaultValue);\r\n // }\r\n }\r\n\r\n async function populateOutcomesReviewWhoDropdown(dropdownEle, defaultValue) {\r\n //if ($.session.areInSalesForce) {\r\n // group populate\r\n const teamMemberGroup = {\r\n groupLabel: 'Plan Team Member',\r\n groupId: 'teamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const nonTeamMemberGroup = {\r\n groupLabel: 'Not a Team Member on this Plan',\r\n groupId: 'nonTeamMemberGroup',\r\n dropdownValues: [],\r\n };\r\n const paidSupportsGroup = {\r\n groupLabel: 'Providers on this Plan',\r\n groupId: 'paidSupportsGroup',\r\n dropdownValues: [],\r\n };\r\n const locationsGroup = {\r\n groupLabel: 'Facilities on this Plan ',\r\n groupId: 'locationsGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n dropdowns.relationships.forEach(dd => {\r\n if (dd.signatureId) {\r\n teamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n } else {\r\n nonTeamMemberGroup.dropdownValues.push({\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n });\r\n }\r\n });\r\n\r\n teamMemberGroup.dropdownValues = removeDups(teamMemberGroup.dropdownValues);\r\n nonTeamMemberGroup.dropdownValues = removeDups(nonTeamMemberGroup.dropdownValues);\r\n\r\n teamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n nonTeamMemberGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const groupDropdownData = [];\r\n groupDropdownData.push(teamMemberGroup);\r\n groupDropdownData.push(nonTeamMemberGroup);\r\n\r\n const teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // var theseVendors = teamMemberData.filter(vendor => vendor.vendorId !== '' && vendor.salesForceId !== '');\r\n var theseVendors = teamMemberData.filter(member => member.vendorId !== '');\r\n paidSupportsGroup.dropdownValues = theseVendors.map(ps => {\r\n return {\r\n value: `${ps.vendorId}V`,\r\n text: ps.name,\r\n };\r\n });\r\n\r\n paidSupportsGroup.dropdownValues = removeDups(paidSupportsGroup.dropdownValues);\r\n paidSupportsGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n if (theseVendors.length > 0) groupDropdownData.push(paidSupportsGroup);\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') { \r\n var theseLocations = teamMemberData.filter(member => member.locationId !== '');\r\n //var theseLocations = teamMemberData.filter(member => member.locationId !== '');\r\n locationsGroup.dropdownValues = theseLocations.map(ps => {\r\n return {\r\n value: `${ps.locationId}L`,\r\n text: ps.name,\r\n };\r\n });\r\n\r\n locationsGroup.dropdownValues = removeDups(locationsGroup.dropdownValues);\r\n locationsGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n if (theseLocations.length > 0) groupDropdownData.push(locationsGroup);\r\n }\r\n // }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: defaultValue,\r\n });\r\n \r\n }\r\n\r\n async function init(planID) {\r\n planId = planID;\r\n await setDropdownData();\r\n await planValidation.init(planId);\r\n }\r\n\r\n return {\r\n init,\r\n getDropdownData,\r\n getRelationshipNameById,\r\n getISPCharacterLimits,\r\n getAllISPcharacterLimts,\r\n getAssessmentCharacterLimits,\r\n populateRelationshipDropdown,\r\n populateOutcomesReviewWhoDropdown,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const planDates = (function () {\r\n // DOM\r\n let datesBoxDiv;\r\n let startDateInput;\r\n let endDateInput;\r\n let effectiveStartDateInput;\r\n let effectiveEndDateInput;\r\n let reviewDateInput;\r\n let dateErrorMessage;\r\n // Data\r\n let planYearInfo;\r\n let selectedConsumer;\r\n // Values\r\n let planYearStartDate;\r\n let planYearEndDate;\r\n let effectiveStartDate;\r\n let effectiveEndDate;\r\n let planReviewDate;\r\n // values changed?\r\n let dateChanged;\r\n let reviewDateChanged;\r\n // cahced dated vals\r\n let origPlanYearStartDate;\r\n let origPlanYearEndDate;\r\n let origEffectiveStartDate;\r\n let origEffectiveEndDate;\r\n let origPlanReviewDate;\r\n // prior plan data\r\n let priorPlanYearEndDate;\r\n let priorPlanYearStartDate;\r\n let priorEffectiveStartDate;\r\n let reviewDateOpts;\r\n\r\n let onChangeCallback;\r\n\r\n function clearData() {\r\n datesBoxDiv = undefined;\r\n startDateInput = undefined;\r\n endDateInput = undefined;\r\n effectiveStartDateInput = undefined;\r\n effectiveEndDateInput = undefined;\r\n\r\n planYearInfo = undefined;\r\n selectedConsumer = undefined;\r\n planYearStartDate = undefined;\r\n planYearEndDate = undefined;\r\n effectiveStartDate = undefined;\r\n effectiveEndDate = undefined;\r\n planReviewDate = undefined;\r\n priorPlanYearEndDate = undefined;\r\n priorEffectiveStartDate = undefined;\r\n priorPlanYearStartDate = undefined;\r\n origEffectiveEndDate = undefined;\r\n origEffectiveStartDate = undefined;\r\n origPlanReviewDate = undefined;\r\n origPlanYearEndDate = undefined;\r\n origPlanYearStartDate = undefined;\r\n }\r\n function showReviewDateWarningPopup() {\r\n const warningPop = POPUP.build({\r\n id: 'reviewDateWraningPopup',\r\n hideX: true,\r\n });\r\n const message = document.createElement('p');\r\n message.innerText = `Review date must fall between effective start date and effective end date.`;\r\n\r\n const okBtn = button.build({\r\n text: 'ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n\r\n warningPop.appendChild(message);\r\n warningPop.appendChild(okBtn);\r\n\r\n POPUP.show(warningPop);\r\n }\r\n\r\n // Dates\r\n //------------------------------------\r\n function resetPlanDatesFromChangeTypeMenu(cachedDates) {\r\n cachedDates.planYearStartDate = planYearStartDate;\r\n cachedDates.planYearEndDate = planYearEndDate;\r\n cachedDates.effectiveStartDate = effectiveStartDate;\r\n cachedDates.effectiveEndDate = effectiveEndDate;\r\n cachedDates.planReviewDate = planReviewDate;\r\n }\r\n function setRevisionPlanDates(planDates) {\r\n // cache dates\r\n const cahce = {\r\n planYearStartDate,\r\n planYearEndDate,\r\n effectiveStartDate,\r\n effectiveEndDate,\r\n planReviewDate,\r\n };\r\n\r\n let { effectiveEnd, effectiveStart, planYearStart, planYearEnd, reviewDate } = planDates;\r\n const today = UTIL.getTodaysDate(true);\r\n today.setHours(0, 0, 0, 0);\r\n\r\n // split dates and get obj\r\n effectiveStart = effectiveStart.split(' ')[0];\r\n effectiveEnd = effectiveEnd.split(' ')[0];\r\n planYearStart = planYearStart.split(' ')[0];\r\n planYearEnd = planYearEnd.split(' ')[0];\r\n reviewDate = reviewDate.split(' ')[0];\r\n\r\n effectiveStartDate = today;\r\n effectiveEndDate = new Date(effectiveEnd);\r\n planYearStartDate = new Date(planYearStart);\r\n planYearEndDate = new Date(planYearEnd);\r\n planReviewDate = dates.addMonths(effectiveEndDate, -1);\r\n\r\n priorPlanYearEndDate = planYearEndDate;\r\n priorPlanYearStartDate = planYearStartDate;\r\n priorEffectiveStartDate = new Date(effectiveStart);\r\n\r\n return cahce;\r\n }\r\n async function setAnnualPlanDates(previousPlans) {\r\n selectedConsumer = plan.getSelectedConsumer();\r\n\r\n if (!planYearInfo) {\r\n planYearInfo = await planAjax.getConsumerPlanYearInfo({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n }\r\n\r\n const { startDay, startMonth } = planYearInfo;\r\n let latestActivePlan;\r\n let previousPlanStartDate;\r\n let previousPlanCreatedOnDate;\r\n let planStartDate;\r\n let planEndDate;\r\n let newReviewDate;\r\n\r\n if (previousPlans && previousPlans.length > 0) {\r\n const activeConsumerPlans = previousPlans.filter(p => p.active === 'True');\r\n latestActivePlan = activeConsumerPlans.reduce((a, b) => {\r\n return new Date(a.planYearStart) > new Date(b.planYearStart) ? a : b;\r\n });\r\n\r\n previousPlanStartDate = new Date(latestActivePlan.planYearStart);\r\n previousPlanCreatedOnDate = new Date(latestActivePlan.createdOn);\r\n }\r\n\r\n if (previousPlanStartDate) {\r\n planStartDate = dates.addYears(previousPlanStartDate, 1);\r\n const today = new Date();\r\n //newReviewDate = dates.addMonths(today, 1);\r\n } else {\r\n const today = new Date();\r\n\r\n if (!startDay || !startMonth) {\r\n planStartDate = today;\r\n } else {\r\n const currentYear = today.getFullYear();\r\n planStartDate = new Date(currentYear, startMonth - 1, startDay, 0);\r\n }\r\n\r\n //newReviewDate = dates.addYears(today, 1);\r\n }\r\n\r\n planEndDate = dates.addYears(planStartDate, 1);\r\n planEndDate = dates.subDays(planEndDate, 1);\r\n\r\n newReviewDate = dates.addMonths(planEndDate, -1);\r\n\r\n planYearStartDate = planStartDate;\r\n planYearEndDate = planEndDate;\r\n effectiveStartDate = planYearStartDate;\r\n effectiveEndDate = planYearEndDate;\r\n planReviewDate = newReviewDate;\r\n }\r\n function setReviewPlanDates(dates) {\r\n const { startDate, endDate, effectiveStart, effectiveEnd, reviewDate } = dates;\r\n\r\n planYearStartDate = startDate;\r\n planYearEndDate = endDate;\r\n effectiveStartDate = effectiveStart;\r\n effectiveEndDate = effectiveEnd;\r\n planReviewDate = reviewDate;\r\n\r\n origPlanYearStartDate = startDate;\r\n origPlanYearEndDate = endDate;\r\n origEffectiveStartDate = effectiveStart;\r\n origEffectiveEndDate = effectiveEnd;\r\n origPlanReviewDate = reviewDate;\r\n }\r\n async function updatePlanDates(planId, planType) {\r\n let success;\r\n\r\n if (reviewDateChanged) {\r\n const newPlanReviewDate = UTIL.formatDateFromDateObj(planReviewDate);\r\n await planAjax.updateConsumerPlanReviewDate({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n reviewDate: newPlanReviewDate,\r\n });\r\n origPlanReviewDate = planReviewDate;\r\n }\r\n\r\n if ((planType === 'Annual' || planType === 'a') && dateChanged) {\r\n const newPlanYearStartDate = UTIL.formatDateFromDateObj(planYearStartDate);\r\n success = await planAjax.updateConsumerPlanSetAnnualDates({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n newPlanYearStart: newPlanYearStartDate,\r\n });\r\n origPlanYearStartDate = planYearStartDate;\r\n // let cache13 = {eventTypeId : planId, eventType : \"plan\", eventId : 13};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache13);\r\n // let cache20 = {eventTypeId : planId, eventType : \"plan\", eventId : 20};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache20);\r\n // let cache17 = {eventTypeId : planId, eventType : \"plan\", eventId : 17};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache17);\r\n } else if ((planType === 'Revision' || planType === 'r') && dateChanged) {\r\n const newEffectiveStartDate = UTIL.formatDateFromDateObj(effectiveStartDate);\r\n const newEffectiveEndDate = UTIL.formatDateFromDateObj(effectiveEndDate);\r\n success = await planAjax.updateConsumerPlanSetRevisionEffectiveDates({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n newEffectiveStart: newEffectiveStartDate,\r\n newEffectiveEnd: newEffectiveEndDate,\r\n });\r\n origEffectiveStartDate = effectiveStartDate;\r\n origEffectiveEndDate = effectiveEndDate;\r\n // let cache14 = {eventTypeId : planId, eventType : \"plan\", eventId : 14};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache14);\r\n // let cache19 = {eventTypeId : planId, eventType : \"plan\", eventId : 19};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache19);\r\n // let cache18 = {eventTypeId : planId, eventType : \"plan\", eventId : 18};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache18);\r\n }\r\n\r\n dateChanged = false;\r\n reviewDateChanged = false;\r\n\r\n return success;\r\n }\r\n function resetPlanDatesToOriginal() {\r\n planYearStartDate = origPlanYearStartDate;\r\n planYearEndDate = origPlanYearEndDate;\r\n effectiveStartDate = origEffectiveStartDate;\r\n effectiveEndDate = origEffectiveEndDate;\r\n planReviewDate = origPlanReviewDate;\r\n\r\n dateChanged = false;\r\n reviewDateChanged = false;\r\n }\r\n function getPlanYearStartDate() {\r\n return planYearStartDate;\r\n }\r\n function getPlanYearEndDate() {\r\n return planYearEndDate;\r\n }\r\n function getEffectiveStartDate() {\r\n return effectiveStartDate;\r\n }\r\n function getEffectiveEndDate() {\r\n return effectiveEndDate;\r\n }\r\n function getPlanReviewDate() {\r\n return planReviewDate;\r\n }\r\n\r\n function dashHandler(dates) {\r\n planYearStartDate = dates.planYearStartDate;\r\n planYearEndDate = dates.planYearEndDate;\r\n effectiveStartDate = dates.effectiveStartDate;\r\n effectiveEndDate = dates.effectiveEndDate;\r\n planReviewDate = dates.planReviewDate;\r\n }\r\n\r\n // Date Box\r\n //------------------------------------\r\n function toggleDateInputDisable(forMoreMenu) {\r\n let startInput = startDateInput.querySelector('input');\r\n let endInput = endDateInput.querySelector('input');\r\n let effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n let effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n let planType = plan.getCurrentPlanType();\r\n\r\n if (forMoreMenu) {\r\n //startDateInput.classList.add('disabled');\r\n //endDateInput.classList.add('disabled');\r\n\r\n effectiveStartDateInput.classList.remove('disabled');\r\n effectiveEndDateInput.classList.remove('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '-1');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '0');\r\n effectiveEndInput.setAttribute('tabIndex', '0');\r\n return;\r\n }\r\n\r\n if (!planType) {\r\n startDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n effectiveStartDateInput.classList.add('disabled');\r\n effectiveEndDateInput.classList.add('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '-1');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '-1');\r\n effectiveEndInput.setAttribute('tabIndex', '-1');\r\n return;\r\n }\r\n\r\n if (planType === 'a') {\r\n startDateInput.classList.remove('disabled');\r\n\r\n endDateInput.classList.add('disabled');\r\n effectiveStartDateInput.classList.add('disabled');\r\n effectiveEndDateInput.classList.add('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '0');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '-1');\r\n effectiveEndInput.setAttribute('tabIndex', '-1');\r\n return;\r\n }\r\n\r\n if (planType === 'r') {\r\n startDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n\r\n effectiveStartDateInput.classList.remove('disabled');\r\n effectiveEndDateInput.classList.remove('disabled');\r\n\r\n startInput.setAttribute('tabIndex', '-1');\r\n endInput.setAttribute('tabIndex', '-1');\r\n effectiveStartInput.setAttribute('tabIndex', '0');\r\n effectiveEndInput.setAttribute('tabIndex', '0');\r\n return;\r\n }\r\n }\r\n function validateAnnualDates() {\r\n const startInput = startDateInput.querySelector('input');\r\n const planStartTime = planYearStartDate.getTime();\r\n const templateStartDate = new Date('2020', '0', '1', 0).getTime();\r\n\r\n if (startInput.value === '' || planStartTime < templateStartDate) {\r\n startDateInput.classList.add('error');\r\n plan.toggleNewPlanDoneBtn(true);\r\n return 'error';\r\n } else {\r\n startDateInput.classList.remove('error');\r\n plan.toggleNewPlanDoneBtn();\r\n return 'success';\r\n }\r\n }\r\n function validateRevisionDates() {\r\n const effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n const effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n const priorEffectiveStartTime = priorEffectiveStartDate && priorEffectiveStartDate.getTime();\r\n const planStartTime = planYearStartDate.getTime();\r\n const priorStartTime = priorPlanYearStartDate && priorPlanYearStartDate.getTime();\r\n const planEndTime = planYearEndDate.getTime();\r\n const effectiveStartTime = effectiveStartDate.getTime();\r\n const effectiveEndTime = effectiveEndDate.getTime();\r\n\r\n let startTimeError;\r\n let endTimeError;\r\n\r\n if (priorEffectiveStartTime && effectiveStartTime <= priorEffectiveStartTime) {\r\n startTimeError = true;\r\n }\r\n if (effectiveStartTime < planStartTime) {\r\n startTimeError = true;\r\n }\r\n if (effectiveStartTime > planEndTime) {\r\n startTimeError = true;\r\n }\r\n if (priorStartTime && effectiveStartTime <= priorStartTime) {\r\n startTimeError = true;\r\n }\r\n if (effectiveEndTime < effectiveStartTime) {\r\n endTimeError = true;\r\n }\r\n if (effectiveEndTime > planEndTime) {\r\n endTimeError = true;\r\n }\r\n\r\n if (startTimeError) {\r\n effectiveStartInput.classList.add('error');\r\n } else {\r\n effectiveStartInput.classList.remove('error');\r\n }\r\n\r\n if (endTimeError) {\r\n effectiveEndInput.classList.add('error');\r\n } else {\r\n effectiveEndInput.classList.remove('error');\r\n }\r\n\r\n if (startTimeError || endTimeError) {\r\n plan.toggleNewPlanDoneBtn(true);\r\n return 'error';\r\n } else {\r\n plan.toggleNewPlanDoneBtn();\r\n return 'success';\r\n }\r\n }\r\n function checkRequiredFields() {\r\n if (!datesBoxDiv) return;\r\n\r\n let planType = plan.getCurrentPlanType();\r\n\r\n if (!planType || planType === '%') {\r\n plan.toggleNewPlanDoneBtn(true);\r\n return 'error';\r\n }\r\n\r\n if (planType === 'a') {\r\n return validateAnnualDates(planType);\r\n }\r\n\r\n return validateRevisionDates(planType);\r\n }\r\n function handleDateBoxChange(e) {\r\n const target = e.target.parentElement;\r\n\r\n const isValidDate = UTIL.validateDateFromInput(e.target.value);\r\n let planType = plan.getCurrentPlanType();\r\n let hasError = false;\r\n\r\n switch (target) {\r\n case startDateInput: {\r\n if (e.target.value && planType === 'a') {\r\n if (!isValidDate) {\r\n startDateInput.classList.add('error');\r\n hasError = true;\r\n return;\r\n } else {\r\n startDateInput.classList.remove('error');\r\n }\r\n\r\n let newStartDate = e.target.value.split('-');\r\n newStartDate = new Date(newStartDate[0], newStartDate[1] - 1, newStartDate[2], 0);\r\n\r\n let newEndDate = dates.addYears(newStartDate, 1);\r\n newEndDate = dates.subDays(newEndDate, 1);\r\n\r\n // set new dates\r\n planYearStartDate = newStartDate;\r\n planYearEndDate = newEndDate;\r\n effectiveStartDate = planYearStartDate;\r\n effectiveEndDate = planYearEndDate;\r\n\r\n // check review date\r\n // const isBeforeEnd = dates.isBefore(planReviewDate, effectiveEndDate);\r\n // const isAfterStart = dates.isAfter(planReviewDate, effectiveStartDate);\r\n // if (!isBeforeEnd || !isAfterStart) {\r\n // showReviewDateWarningPopup();\r\n // reviewDateInput.classList.add('error');\r\n // hasError = true;\r\n // // use below if we want to reset date for them to orig requirements\r\n // //planReviewDate = dates.addMonths(effectiveEndDate, -1);\r\n // }\r\n\r\n const endInput = endDateInput.querySelector('input');\r\n const effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n const effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n\r\n endInput.value = UTIL.formatDateFromDateObj(newEndDate);\r\n effectiveEndInput.value = UTIL.formatDateFromDateObj(newEndDate);\r\n effectiveStartInput.value = UTIL.formatDateFromDateObj(newStartDate);\r\n\r\n dateChanged = true;\r\n }\r\n break;\r\n }\r\n case effectiveStartDateInput: {\r\n if (!isValidDate) {\r\n const effectiveStartInput = effectiveStartDateInput.querySelector('input');\r\n effectiveStartInput.classList.add('error');\r\n if (onChangeCallback) onChangeCallback(false);\r\n hasError = true;\r\n return;\r\n }\r\n const newEffectiveStartDate = e.target.value.split('-');\r\n effectiveStartDate = new Date(\r\n newEffectiveStartDate[0],\r\n newEffectiveStartDate[1] - 1,\r\n newEffectiveStartDate[2],\r\n 0,\r\n );\r\n\r\n dateChanged = true;\r\n\r\n break;\r\n }\r\n case effectiveEndDateInput: {\r\n if (!isValidDate) {\r\n const effectiveEndInput = effectiveEndDateInput.querySelector('input');\r\n effectiveEndInput.classList.add('error');\r\n if (onChangeCallback) onChangeCallback(false);\r\n hasError = true;\r\n return;\r\n }\r\n const newEffectiveEndDate = e.target.value.split('-');\r\n effectiveEndDate = new Date(\r\n newEffectiveEndDate[0],\r\n newEffectiveEndDate[1] - 1,\r\n newEffectiveEndDate[2],\r\n 0,\r\n );\r\n\r\n dateChanged = true;\r\n\r\n break;\r\n }\r\n case reviewDateInput: {\r\n // effectiveStartDate = planYearStartDate;\r\n // effectiveEndDate = planYearEndDate;\r\n if (!isValidDate) {\r\n dateErrorMessage.innerText = `Review date must fall between effective start date and effective end date.`;\r\n dateErrorMessage.classList.remove('hidden');\r\n reviewDateInput.classList.add('error');\r\n hasError = true;\r\n break;\r\n }\r\n\r\n let newReviewDate = e.target.value.split('-');\r\n newReviewDate = new Date(newReviewDate[0], newReviewDate[1] - 1, newReviewDate[2], 0);\r\n\r\n // make sure review date falls between effective start and effective end dates\r\n const isBeforeEnd = dates.isBefore(newReviewDate, effectiveEndDate);\r\n const isAfterStart = dates.isAfter(newReviewDate, effectiveStartDate);\r\n if (!isBeforeEnd || !isAfterStart) {\r\n dateErrorMessage.innerText = `Review date must fall between effective start date and effective end date.`;\r\n dateErrorMessage.classList.remove('hidden');\r\n reviewDateInput.classList.add('error');\r\n hasError = true;\r\n break;\r\n } else {\r\n reviewDateInput.classList.remove('error');\r\n dateErrorMessage.innerText = '';\r\n dateErrorMessage.classList.add('hidden');\r\n }\r\n\r\n // cache original date\r\n //origPlanReviewDate = planReviewDate;\r\n // set new date\r\n planReviewDate = newReviewDate;\r\n\r\n const reviewInput = reviewDateInput.querySelector('input');\r\n reviewInput.value = UTIL.formatDateFromDateObj(newReviewDate);\r\n reviewDateChanged = true;\r\n }\r\n }\r\n\r\n const fieldsValid = checkRequiredFields();\r\n const isValid = fieldsValid === 'error' || hasError ? false : true;\r\n if (onChangeCallback) onChangeCallback(isValid);\r\n }\r\n function buildDatesBox(callback, forMoreMenu) {\r\n datesBoxDiv = document.createElement('div');\r\n datesBoxDiv.classList.add('planSetupDates');\r\n if (callback) onChangeCallback = callback;\r\n\r\n let startDateOpts = {\r\n label: 'Plan Start',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'startDateInput' }],\r\n };\r\n let endDateOpts = {\r\n label: 'Plan End',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'endDateInput' }],\r\n };\r\n let effectiveStartDateOpts = {\r\n label: 'Effective Start',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'effectiveStartDateInput' }],\r\n };\r\n let effectiveEndDateOpts = {\r\n label: 'Effective End',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'effectiveEndDateInput' }],\r\n };\r\n reviewDateOpts = {\r\n label: 'Review',\r\n type: 'date',\r\n attributes: [{ key: 'data-plan-date-input', value: 'reviewDateInput' }],\r\n };\r\n\r\n if (planYearStartDate) {\r\n let formatedSD = UTIL.formatDateFromDateObj(planYearStartDate);\r\n // if (origPlanYearStartDate) {\r\n // formatedSD = UTIL.formatDateFromDateObj(origPlanYearStartDate);\r\n // }\r\n startDateOpts.value = formatedSD;\r\n }\r\n if (effectiveStartDate) {\r\n let formatedESD = UTIL.formatDateFromDateObj(effectiveStartDate);\r\n // if (origEffectiveStartDate) {\r\n // formatedESD = UTIL.formatDateFromDateObj(origEffectiveStartDate);\r\n // }\r\n effectiveStartDateOpts.value = formatedESD;\r\n }\r\n if (planYearEndDate) {\r\n let formatedED = UTIL.formatDateFromDateObj(planYearEndDate);\r\n // if (origPlanYearEndDate) {\r\n // formatedED = UTIL.formatDateFromDateObj(origPlanYearEndDate);\r\n // }\r\n endDateOpts.value = formatedED;\r\n }\r\n if (effectiveEndDate) {\r\n let formatedEED = UTIL.formatDateFromDateObj(effectiveEndDate);\r\n // if (origEffectiveEndDate) {\r\n // formatedEED = UTIL.formatDateFromDateObj(origEffectiveEndDate);\r\n // }\r\n effectiveEndDateOpts.value = formatedEED;\r\n }\r\n if (planReviewDate) {\r\n let formatedRD = UTIL.formatDateFromDateObj(planReviewDate);\r\n // if (origPlanReviewDate) {\r\n // formatedRD = UTIL.formatDateFromDateObj(origPlanReviewDate);\r\n // }\r\n reviewDateOpts.value = formatedRD;\r\n }\r\n\r\n startDateInput = input.build(startDateOpts);\r\n endDateInput = input.build(endDateOpts);\r\n effectiveStartDateInput = input.build(effectiveStartDateOpts);\r\n effectiveEndDateInput = input.build(effectiveEndDateOpts);\r\n reviewDateInput = input.build(reviewDateOpts);\r\n dateErrorMessage = document.createElement('p');\r\n dateErrorMessage.classList.add('dateErrorMessage', 'hidden');\r\n\r\n if (!forMoreMenu) {\r\n datesBoxDiv.appendChild(startDateInput);\r\n datesBoxDiv.appendChild(endDateInput);\r\n }\r\n\r\n datesBoxDiv.appendChild(effectiveStartDateInput);\r\n datesBoxDiv.appendChild(effectiveEndDateInput);\r\n datesBoxDiv.appendChild(reviewDateInput);\r\n datesBoxDiv.appendChild(dateErrorMessage);\r\n\r\n toggleDateInputDisable(forMoreMenu);\r\n checkRequiredFields();\r\n\r\n datesBoxDiv.addEventListener('change', handleDateBoxChange);\r\n\r\n return datesBoxDiv;\r\n }\r\n\r\n function updateBoxDateValues() {\r\n const startDateInput = document.querySelector('[data-plan-date-input=\"startDateInput\"]');\r\n const formatedSD = UTIL.formatDateFromDateObj(origPlanYearStartDate);\r\n startDateInput.value = formatedSD;\r\n\r\n const endDateIinput = document.querySelector('[data-plan-date-input=\"endDateInput\"]');\r\n const formatedED = UTIL.formatDateFromDateObj(origPlanYearEndDate);\r\n endDateIinput.value = formatedED;\r\n\r\n const effectiveStartDateInput = document.querySelector(\r\n '[data-plan-date-input=\"effectiveStartDateInput\"]',\r\n );\r\n const formatedESD = UTIL.formatDateFromDateObj(origEffectiveStartDate);\r\n effectiveStartDateInput.value = formatedESD;\r\n\r\n const effectiveEndDateInput = document.querySelector(\r\n '[data-plan-date-input=\"effectiveEndDateInput\"]',\r\n );\r\n const formatedEED = UTIL.formatDateFromDateObj(origEffectiveEndDate);\r\n effectiveEndDateInput.value = formatedEED;\r\n\r\n const reviewDateInput = document.querySelector('[data-plan-date-input=\"reviewDateInput\"]');\r\n const formatedRD = UTIL.formatDateFromDateObj(origPlanReviewDate);\r\n reviewDateInput.value = formatedRD;\r\n }\r\n\r\n return {\r\n buildDatesBox,\r\n updateBoxDateValues,\r\n clearData,\r\n checkRequiredFields,\r\n dashHandler,\r\n getPlanYearStartDate,\r\n getPlanYearEndDate,\r\n getEffectiveStartDate,\r\n getEffectiveEndDate,\r\n getPlanReviewDate,\r\n setAnnualPlanDates,\r\n setRevisionPlanDates,\r\n setReviewPlanDates,\r\n resetPlanDatesToOriginal,\r\n resetPlanDatesFromChangeTypeMenu,\r\n toggleDateInputDisable,\r\n updatePlanDates,\r\n validateAnnualDates,\r\n validateRevisionDates,\r\n };\r\n})();\r\n","var defaults = (function () {\r\n // dom\r\n var rosterLocationDropdown;\r\n var rosterGroupDropdown;\r\n var dayServicesLocationDropdown;\r\n var timeClockLocationDropdown;\r\n var WorkshopLocationDropdown;\r\n var moneyManagementLocationDropdown;\r\n var rosterRLLCheckBox;\r\n var dayServicesRLLCheckBox;\r\n var timeClockRLLCheckBox;\r\n var WorkshopRLLCheckBox;\r\n var moneyManagementRLLCheckBox;\r\n var itDaysBackInput;\r\n var caseNotesDaysBackInput;\r\n var progressNotesDaysBackInput;\r\n\r\n // values\r\n var todaysDate = UTIL.getTodaysDate();\r\n var rosterLocation;\r\n var rosterGroup;\r\n var rosterGroupName;\r\n var dayServicesLocation;\r\n var timeClockLocation;\r\n var WorkshopLocation;\r\n var moneyManagementLocation;\r\n var rosterRLL;\r\n var dayServicesRLL;\r\n var timeClockRLL;\r\n var workshopRLL;\r\n var moneyManagementRLL;\r\n\r\n var defaultRosterLocationFixed;\r\n //dropdown data\r\n var dayServiceDropdownData;\r\n var workshopDropdownData;\r\n var moneyManagementDropdownData;\r\n var timeClockDropdownData;\r\n var rosterLocDropdownData;\r\n var rosterGroupDropdownData;\r\n\r\n function getLocation(module) {\r\n // module ex.. 'roster', 'dayServices'\r\n switch (module) {\r\n case 'roster': {\r\n return $.session.defaultRosterLocation === 'null' ||\r\n $.session.defaultRosterLocation === '0'\r\n ? ''\r\n : $.session.defaultRosterLocation;\r\n break;\r\n }\r\n case 'rosterGroup': {\r\n return $.session.defaultRosterGroupValue;\r\n break;\r\n }\r\n case 'dayServices': {\r\n return $.session.defaultDayServiceLocation;\r\n break;\r\n }\r\n case 'timeClock': {\r\n return $.session.defaultDSTimeClockValue;\r\n break;\r\n }\r\n case 'workshop': {\r\n return $.session.defaultWorkshopLocationValue;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n return $.session.defaultMoneyManagementLocationValue;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function setLocation(module, value, name) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n rosterLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('2', rosterLocation);\r\n //reset session var for the current session\r\n $.session.defaultRosterLocation = rosterLocation;\r\n break;\r\n }\r\n case 'rosterGroup': {\r\n rosterGroup = value;\r\n defaultsAjax.saveDefaultLocationValue('6', rosterGroup, rosterGroupName);\r\n //reset session var for the current session\r\n $.session.defaultRosterGroupValue = rosterGroup;\r\n break;\r\n }\r\n case 'dayServices': {\r\n dayServicesLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('3', dayServicesLocation);\r\n //reset session var for the current session\r\n $.session.defaultDayServiceLocation = dayServicesLocation;\r\n break;\r\n }\r\n case 'timeClock': {\r\n timeClockLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('4', timeClockLocation);\r\n //reset session var for the current session\r\n $.session.defaultDSTimeClockValue = timeClockLocation;\r\n break;\r\n }\r\n case 'workshop': {\r\n WorkshopLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('5', WorkshopLocation);\r\n //reset session var for the current session\r\n $.session.defaultWorkshopLocationValue = WorkshopLocation;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n moneyManagementLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('7', moneyManagementLocation);\r\n //reset session var for the current session\r\n $.session.defaultMoneyManagementLocationValue = moneyManagementLocation;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n\r\n // defaultsAjax.setDefaultValue();\r\n }\r\n\r\n function setRememberLastLocation(module) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n if (rosterRLL) {\r\n defaultsAjax.saveDefaultLocationName('2', 'Remember Last Location');\r\n $.session.defaultRosterLocationName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('2', '');\r\n $.session.defaultRosterLocationName = '';\r\n }\r\n break;\r\n }\r\n case 'dayServices': {\r\n if (dayServicesRLL) {\r\n defaultsAjax.saveDefaultLocationName('3', 'Remember Last Location');\r\n $.session.defaultDayServiceLocationName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('3', '');\r\n $.session.defaultDayServiceLocationName = '';\r\n }\r\n break;\r\n }\r\n case 'timeClock': {\r\n if (timeClockRLL) {\r\n defaultsAjax.saveDefaultLocationName('4', 'Remember Last Location');\r\n $.session.defaultDSTimeClockName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('4', '');\r\n $.session.defaultDSTimeClockName = '';\r\n }\r\n break;\r\n }\r\n case 'workshop': {\r\n if (workshopRLL) {\r\n defaultsAjax.saveDefaultLocationName('5', 'Remember Last Location');\r\n $.session.defaultWorkshopLocation = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('5', '');\r\n $.session.defaultWorkshopLocation = '';\r\n }\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n if (moneyManagementRLL) {\r\n defaultsAjax.saveDefaultLocationName('7', 'Remember Last Location');\r\n $.session.defaultMoneyManagementLocation = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('7', '');\r\n $.session.defaultMoneyManagementLocation = '';\r\n }\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // function updateRememberLastLocation() {\r\n // defaultsAjax.saveDefaultLocationValue();\r\n // }\r\n\r\n function getGroup(module) {\r\n switch (module) {\r\n case 'roster': {\r\n return rosterGroup;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function setGroup(module, newGroup) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n rosterGroup = newGroup;\r\n break;\r\n }\r\n }\r\n\r\n defaultsAjax.setDefaultValue();\r\n }\r\n\r\n function dropdownData() {\r\n var dayServiceLocationPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceLocations(todaysDate, loc => {\r\n dayServiceDropdownData = loc.map(loc => {\r\n var id = `ds-${loc.locationId}`;\r\n var value = loc.locationId;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('dayServices') === '')\r\n dayServiceDropdownData.unshift({\r\n id: 'ds-0',\r\n value: null,\r\n text: 'SELECT A LOCATION',\r\n });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var workshopLocationPromise = new Promise(function (resolve, reject) {\r\n workshopAjax.WorkshopLocations(todaysDate, r => {\r\n workshopDropdownData = r.map(loc => {\r\n var id = `ws-${loc.id}`;\r\n var value = loc.id;\r\n var text = loc.name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('workshop') === '' || getLocation('workshop') === '0')\r\n workshopDropdownData.unshift({ id: 'ws-0', value: '0', text: 'ALL' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var timeClockLocationPromise = new Promise(function (resolve, reject) {\r\n timeClockDropdownData = $.session.locations.map((location, index) => {\r\n var id = `tc-${$.session.locationids[index]}`;\r\n var value = $.session.locationids[index];\r\n var text = location;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('timeClock') === '') {\r\n timeClockDropdownData.unshift({ id: 'tc-0', value: null, text: 'SELECT A LOCATION' });\r\n }\r\n resolve('success');\r\n });\r\n\r\n var rosterLocPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getRosterLocations(loc => {\r\n rosterLocDropdownData = loc.map(loc => {\r\n var id = `ros-${loc.ID}`;\r\n var value = loc.ID;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('roster') === '')\r\n rosterLocDropdownData.unshift({ id: 'ros-0', value: null, text: 'ALL' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var rosterGroupPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getConsumerGroups(\r\n $.session.defaultRosterLocation === 'null' ? '' : $.session.defaultRosterLocation,\r\n res => {\r\n rosterGroupDropdownData = res.map(group => {\r\n var id = `rosGr-${group.GroupCode}-${group.RetrieveID}`;\r\n var value = `${group.GroupCode}-${group.RetrieveID}`;\r\n var text = group.GroupName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n // if (getLocation(\"rosterGroup\") === \"\") rosterGroupDropdownData.unshift({ id: \"rosGr-0\", value: null, text: \"SELECT A GROUP\" });\r\n resolve('success');\r\n },\r\n );\r\n });\r\n\r\n var moneyManagementLocationPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getRosterLocations(loc => {\r\n moneyManagementDropdownData = loc.map(loc => {\r\n var id = `ros-${loc.ID}`;\r\n var value = loc.ID;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n moneyManagementDropdownData.unshift({ id: 'ros-0', value: '0', text: 'ALL' });\r\n resolve('success'); \r\n });\r\n });\r\n\r\n Promise.all([\r\n dayServiceLocationPromise,\r\n workshopLocationPromise,\r\n timeClockLocationPromise,\r\n rosterLocPromise,\r\n rosterGroupPromise,\r\n moneyManagementLocationPromise,\r\n ]).then(() => {\r\n buildPage();\r\n });\r\n }\r\n\r\n function rememberLastLocation(module) {\r\n switch (module) {\r\n case 'roster': {\r\n if ($.session.defaultRosterLocationName === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'dayServices': {\r\n if ($.session.defaultDayServiceLocationName === 'Remember Last Location')\r\n return true;\r\n else return false;\r\n break;\r\n }\r\n case 'timeClock': {\r\n if ($.session.defaultDSTimeClockName === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'workshop': {\r\n if ($.session.defaultWorkshopLocation === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n if ($.session.defaultMoneyManagementLocation === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function repopulateRosterGroupDropdown(loc) {\r\n rosterGroupDropdown.classList.add('disabled');\r\n rosterGroupDropdownData = null;\r\n defaultsAjax.getConsumerGroups(loc, res => {\r\n rosterGroupDropdownData = res.map(group => {\r\n var id = `rosGr-${group.GroupCode}-${group.RetrieveID}`;\r\n var value = `${group.GroupCode}-${group.RetrieveID}`;\r\n var text = group.GroupName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n // if (getLocation(\"rosterGroup\") === \"\") rosterGroupDropdownData.unshift({ id: \"rosGr-0\", value: null, text: \"SELECT A GROUP\" });\r\n setLocation('rosterGroup', `ALL-${loc}`);\r\n dropdown.populate(rosterGroupDropdown, rosterGroupDropdownData, `CAS-${loc}`);\r\n rosterGroupDropdown.classList.remove('disabled');\r\n });\r\n }\r\n\r\n function buildPage() {\r\n var defaultsPage = document.querySelector('.util-menu__defaults');\r\n defaultsPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'Defaults';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n var rosterSection = document.createElement('div');\r\n var rosterSectionHeader = document.createElement('h3');\r\n rosterSection.classList.add('settingMenuCard');\r\n rosterSectionHeader.classList.add('header');\r\n rosterSectionHeader.innerHTML = 'Roster';\r\n\r\n var dayServiceSection = document.createElement('div');\r\n var dayServiceSectionHeader = document.createElement('h3');\r\n dayServiceSection.classList.add('settingMenuCard');\r\n dayServiceSectionHeader.classList.add('header');\r\n dayServiceSectionHeader.innerHTML = 'Day Services';\r\n\r\n var timeClockSection = document.createElement('div');\r\n var timeClockSectionHeader = document.createElement('h3');\r\n timeClockSection.classList.add('settingMenuCard');\r\n timeClockSectionHeader.classList.add('header');\r\n timeClockSectionHeader.innerHTML = 'Day Services Time Clock';\r\n\r\n var WorkshopSection = document.createElement('div');\r\n var WorkshopSectionHeader = document.createElement('h3');\r\n WorkshopSection.classList.add('settingMenuCard');\r\n WorkshopSectionHeader.classList.add('header');\r\n WorkshopSectionHeader.innerHTML = 'Workshop';\r\n\r\n var incidentTrackingSection = document.createElement('div');\r\n var incidentTrackingSectionHeader = document.createElement('h3');\r\n incidentTrackingSection.classList.add('settingMenuCard');\r\n incidentTrackingSectionHeader.classList.add('header');\r\n incidentTrackingSectionHeader.innerHTML = 'Incident Tracking';\r\n\r\n var moneyManagementSection = document.createElement('div');\r\n var moneyManagementSectionHeader = document.createElement('h3');\r\n moneyManagementSection.classList.add('settingMenuCard');\r\n moneyManagementSectionHeader.classList.add('header');\r\n moneyManagementSectionHeader.innerHTML = 'Money Management';\r\n\r\n var caseNotesSection = document.createElement('div');\r\n var caseNotesSectionHeader = document.createElement('h3');\r\n caseNotesSection.classList.add('settingMenuCard');\r\n caseNotesSectionHeader.classList.add('header');\r\n caseNotesSectionHeader.innerHTML = 'Case Notes';\r\n\r\n rosterLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultRosterLocation',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n rosterRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: rosterRLL,\r\n });\r\n rosterGroupDropdown = dropdown.build({\r\n dropdownId: 'defaultRosterGroup',\r\n label: 'Default Group',\r\n style: 'secondary',\r\n });\r\n dayServicesLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultDayServicesLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n dayServicesRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: dayServicesRLL,\r\n });\r\n timeClockLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultTimeClockLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n timeClockRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: timeClockRLL,\r\n });\r\n WorkshopLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultWorkshopLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n WorkshopRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: workshopRLL,\r\n });\r\n moneyManagementLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultMoneyManagementLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n moneyManagementRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: moneyManagementRLL,\r\n });\r\n\r\n var backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n itDaysBackInput = input.build({\r\n id: 'itDaysBack',\r\n label: 'Days Back (max: 365)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '365' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultIncidentTrackingDaysBack,\r\n });\r\n\r\n caseNotesDaysBackInput = input.build({\r\n id: 'cnDaysBack',\r\n label: 'Days Back (max: 99)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '99' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultCaseNoteReviewDays,\r\n });\r\n\r\n progressNotesDaysBackInput = input.build({\r\n id: 'progNotesDaysBack',\r\n label: 'Progress Notes Days Back (max: 99)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '999' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultProgressNoteReviewDays,\r\n });\r\n\r\n //Display for current menu\r\n defaultsPage.appendChild(currMenu);\r\n\r\n //if remember last location is enabled, disable the location dropdown\r\n if (rosterRLL) rosterLocationDropdown.classList.add('disabled');\r\n if (rosterRLL) rosterGroupDropdown.classList.add('disabled');\r\n if (dayServicesRLL) dayServicesLocationDropdown.classList.add('disabled');\r\n if (timeClockRLL) timeClockLocationDropdown.classList.add('disabled');\r\n if (workshopRLL) WorkshopLocationDropdown.classList.add('disabled');\r\n if (moneyManagementRLL) moneyManagementLocationDropdown.classList.add('disabled');\r\n\r\n //checkbox div and wraper for right justification\r\n rosterChecboxDiv = document.createElement('div');\r\n dayServicesChecboxDiv = document.createElement('div');\r\n timeClockChecboxDiv = document.createElement('div');\r\n workshopChecboxDiv = document.createElement('div');\r\n moneyManagementChecboxDiv = document.createElement('div');\r\n rosterChecboxDiv.classList.add('checkboxWrap');\r\n dayServicesChecboxDiv.classList.add('checkboxWrap');\r\n timeClockChecboxDiv.classList.add('checkboxWrap');\r\n workshopChecboxDiv.classList.add('checkboxWrap');\r\n moneyManagementChecboxDiv.classList.add('checkboxWrap');\r\n\r\n rosterChecboxDiv.appendChild(rosterRLLCheckBox);\r\n dayServicesChecboxDiv.appendChild(dayServicesRLLCheckBox);\r\n timeClockChecboxDiv.appendChild(timeClockRLLCheckBox);\r\n workshopChecboxDiv.appendChild(WorkshopRLLCheckBox);\r\n moneyManagementChecboxDiv.appendChild(moneyManagementRLLCheckBox);\r\n\r\n //roster settigns\r\n rosterSection.appendChild(rosterSectionHeader);\r\n rosterSection.appendChild(rosterLocationDropdown);\r\n rosterSection.appendChild(rosterChecboxDiv);\r\n rosterSection.appendChild(rosterGroupDropdown);\r\n rosterSection.appendChild(progressNotesDaysBackInput);\r\n\r\n // day service settings\r\n dayServiceSection.appendChild(dayServiceSectionHeader);\r\n dayServiceSection.appendChild(dayServicesLocationDropdown);\r\n dayServiceSection.appendChild(dayServicesChecboxDiv);\r\n\r\n //time clock settings\r\n timeClockSection.appendChild(timeClockSectionHeader);\r\n timeClockSection.appendChild(timeClockLocationDropdown);\r\n timeClockSection.appendChild(timeClockChecboxDiv);\r\n\r\n //workshop settings\r\n if ($.session.applicationName === 'Advisor') {\r\n WorkshopSection.appendChild(WorkshopSectionHeader);\r\n WorkshopSection.appendChild(WorkshopLocationDropdown);\r\n WorkshopSection.appendChild(workshopChecboxDiv);\r\n }\r\n\r\n //Incitent Tracking Settings\r\n if ($.session.applicationName === 'Advisor') {\r\n incidentTrackingSection.appendChild(incidentTrackingSectionHeader);\r\n incidentTrackingSection.appendChild(itDaysBackInput);\r\n }\r\n\r\n //moneyManagement settings\r\n if ($.session.applicationName === 'Advisor') {\r\n moneyManagementSection.appendChild(moneyManagementSectionHeader);\r\n moneyManagementSection.appendChild(moneyManagementLocationDropdown);\r\n moneyManagementSection.appendChild(moneyManagementChecboxDiv);\r\n }\r\n\r\n //case notes settings\r\n caseNotesSection.appendChild(caseNotesSectionHeader);\r\n caseNotesSection.appendChild(caseNotesDaysBackInput);\r\n\r\n defaultsPage.appendChild(backButton);\r\n defaultsPage.appendChild(rosterSection);\r\n defaultsPage.appendChild(dayServiceSection);\r\n defaultsPage.appendChild(caseNotesSection);\r\n if ($.session.dsCertified) defaultsPage.appendChild(timeClockSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(WorkshopSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(incidentTrackingSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(moneyManagementSection);\r\n\r\n rosterLocationDropdown.classList.add('defaultLocationDD');\r\n dayServicesLocationDropdown.classList.add('defaultLocationDD');\r\n timeClockLocationDropdown.classList.add('defaultLocationDD');\r\n WorkshopLocationDropdown.classList.add('defaultLocationDD');\r\n moneyManagementLocationDropdown.classList.add('defaultLocationDD');\r\n\r\n //RESET roster group to all if they have roster remember last location enabled. this is incase they change location but their selected default group is not in that location\r\n if (rosterRLL && $.session.defaultRosterGroupValue !== 'ALL')\r\n setLocation('rosterGroup', 'ALL');\r\n\r\n //populate\r\n //\r\n dropdown.populate(\r\n rosterLocationDropdown,\r\n rosterLocDropdownData,\r\n $.session.defaultRosterLocation === 'null' ? '' : $.session.defaultRosterLocation,\r\n );\r\n\r\n dropdown.populate(\r\n rosterGroupDropdown,\r\n rosterGroupDropdownData,\r\n $.session.defaultRosterGroupValue,\r\n );\r\n\r\n dropdown.populate(\r\n dayServicesLocationDropdown,\r\n dayServiceDropdownData,\r\n $.session.defaultDayServiceLocation,\r\n );\r\n\r\n dropdown.populate(\r\n WorkshopLocationDropdown,\r\n workshopDropdownData,\r\n $.session.defaultWorkshopLocationValue,\r\n );\r\n\r\n dropdown.populate(\r\n moneyManagementLocationDropdown,\r\n moneyManagementDropdownData,\r\n $.session.defaultMoneyManagementLocationValue,\r\n );\r\n if ($.session.dsCertified)\r\n dropdown.populate(\r\n timeClockLocationDropdown,\r\n timeClockDropdownData,\r\n $.session.defaultDSTimeClockValue,\r\n );\r\n addEventListeners();\r\n }\r\n\r\n function checkInitialRememberLastLocation() {\r\n rosterRLL = rememberLastLocation('roster');\r\n dayServicesRLL = rememberLastLocation('dayServices');\r\n timeClockRLL = rememberLastLocation('timeClock');\r\n workshopRLL = rememberLastLocation('workshop');\r\n moneyManagementRLL = rememberLastLocation('moneyManagement');\r\n }\r\n\r\n function addEventListeners() {\r\n //=====\r\n //ROSTER\r\n progressNotesDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 999 && newVal >= 1) {\r\n defaultsAjax.updateConsumerNotesDaysBack(newVal);\r\n }\r\n });\r\n rosterLocationDropdown.addEventListener('change', () => {\r\n setLocation('roster', event.target.options[event.target.selectedIndex].value);\r\n repopulateRosterGroupDropdown(\r\n event.target.options[event.target.selectedIndex].value,\r\n );\r\n //Reset roster group to all\r\n setLocation('rosterGroup', 'ALL', 'Everyone');\r\n });\r\n rosterRLLCheckBox.addEventListener('change', () => {\r\n rosterRLL = !rosterRLL;\r\n setRememberLastLocation('roster');\r\n\r\n if (rosterRLL) {\r\n groupDropdownOptions = document.getElementById('defaultRosterGroup');\r\n rosterLocationDropdown.classList.add('disabled');\r\n rosterGroupDropdown.classList.add('disabled');\r\n groupDropdownOptions.selectedIndex = 'ALL';\r\n setLocation('rosterGroup', 'ALL', 'Everyone');\r\n } else {\r\n rosterLocationDropdown.classList.remove('disabled');\r\n rosterGroupDropdown.classList.remove('disabled');\r\n }\r\n });\r\n rosterGroupDropdown.addEventListener('change', () => {\r\n setLocation(\r\n 'rosterGroup',\r\n event.target.options[event.target.selectedIndex].value,\r\n event.target.options[event.target.selectedIndex].innerHTML,\r\n );\r\n });\r\n //=====\r\n //WORKSHOP\r\n WorkshopLocationDropdown.addEventListener('change', () => {\r\n setLocation('workshop', event.target.options[event.target.selectedIndex].value);\r\n });\r\n WorkshopRLLCheckBox.addEventListener('change', () => {\r\n workshopRLL = !workshopRLL;\r\n setRememberLastLocation('workshop');\r\n if (workshopRLL) WorkshopLocationDropdown.classList.add('disabled');\r\n else WorkshopLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n //MONEY MANAGEMENT\r\n moneyManagementLocationDropdown.addEventListener('change', () => {\r\n if (!moneyManagementLocationDropdown.classList.contains('disabled')) {\r\n setLocation('moneyManagement', event.target.options[event.target.selectedIndex].value);\r\n }\r\n else { \r\n document.getElementById('defaultMoneyManagementLocation').value = $.session.defaultMoneyManagementLocationValue;\r\n }\r\n }); \r\n moneyManagementRLLCheckBox.addEventListener('change', () => {\r\n moneyManagementRLL = !moneyManagementRLL;\r\n setRememberLastLocation('moneyManagement');\r\n if (moneyManagementRLL) moneyManagementLocationDropdown.classList.add('disabled');\r\n else moneyManagementLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n // DAY SERVICES\r\n dayServicesLocationDropdown.addEventListener('change', () => {\r\n setLocation('dayServices', event.target.options[event.target.selectedIndex].value);\r\n });\r\n\r\n dayServicesRLLCheckBox.addEventListener('change', () => {\r\n dayServicesRLL = !dayServicesRLL;\r\n setRememberLastLocation('dayServices');\r\n if (dayServicesRLL) dayServicesLocationDropdown.classList.add('disabled');\r\n else dayServicesLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n //INCIDENT TRACKING\r\n itDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 365 && newVal >= 1) {\r\n $.session.defaultIncidentTrackingDaysBack = newVal;\r\n defaultsAjax.updateIncidentTrackingDaysBack(newVal);\r\n }\r\n });\r\n //=====\r\n //CASE NOTES\r\n caseNotesDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 99 && newVal >= 1) {\r\n $.session.defaultCaseNoteReviewDays = newVal;\r\n defaultsAjax.updateCaseNotesDaysBack(newVal);\r\n }\r\n });\r\n\r\n //=====\r\n //DS TIME CLOCK (NEED TO BE DAY SERVICE CERTIFIED TO USE)\r\n if ($.session.dsCertified) {\r\n timeClockLocationDropdown.addEventListener('change', () => {\r\n setLocation('timeClock', event.target.options[event.target.selectedIndex].value);\r\n });\r\n timeClockRLLCheckBox.addEventListener('change', () => {\r\n timeClockRLL = !timeClockRLL;\r\n setRememberLastLocation('timeClock');\r\n if (timeClockRLL) timeClockLocationDropdown.classList.add('disabled');\r\n else timeClockLocationDropdown.classList.remove('disabled');\r\n });\r\n }\r\n }\r\n // Checks DB for any default locations that have been inactivated\r\n // Resets those locations back to null, and displays a message with locations that were reset\r\n async function getInvalidDefaultLocations() {\r\n const invalidDefaults = await defaultsAjax.getInvalidDefaults();\r\n\r\n if (invalidDefaults.length === 0) return;\r\n\r\n // BUILD POPUP\r\n const invalidDefaultNotificationPopup = POPUP.build({\r\n id: 'invalidDefaultPopup',\r\n });\r\n\r\n const continueBtn = button.build({\r\n id: 'invalidDefaultContinueBtn',\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(invalidDefaultNotificationPopup);\r\n },\r\n });\r\n\r\n continueBtn.style.width = '100%';\r\n\r\n // MAIN MESSAGE\r\n const message = document.createElement('div');\r\n message.classList.add('invalidDefaultMessage');\r\n message.innerHTML = `

    \r\n Some of your default locations are no longer available to view in Anywhere.

    \r\n Go to ${icons.ellipsis} > Set Defaults to select a new default location.


    \r\n

    `;\r\n\r\n const listHeader = document.createElement('p');\r\n listHeader.innerText = 'Locations that were reset:';\r\n listHeader.classList.add('invalidDefaultListHeader');\r\n\r\n // LIST OF INVALID LOCATIONS\r\n const list = document.createElement('ul');\r\n list.classList.add('invalidDefaultList');\r\n\r\n invalidDefaults.forEach(def => {\r\n const listItem = document.createElement('li');\r\n listItem.innerHTML = `Location Name: ${def.locationName}
    As Your: ${def.moduleDefault}`;\r\n list.appendChild(listItem);\r\n });\r\n\r\n // APPEND AND SHOW POPUP\r\n invalidDefaultNotificationPopup.appendChild(message);\r\n invalidDefaultNotificationPopup.appendChild(listHeader);\r\n invalidDefaultNotificationPopup.appendChild(list);\r\n invalidDefaultNotificationPopup.appendChild(continueBtn);\r\n\r\n POPUP.show(invalidDefaultNotificationPopup);\r\n\r\n //RESET VALUES\r\n invalidDefaults.forEach(def => {\r\n switch (def.moduleDefault) {\r\n case 'Default Roster Location':\r\n setLocation('roster', '');\r\n setLocation('rosterGroup', '');\r\n break;\r\n case 'Default Day Services Location':\r\n setLocation('dayServices', '');\r\n break;\r\n case 'Default Time Clock Location':\r\n setLocation('timeClock', '');\r\n break;\r\n case 'Default Workshop Location':\r\n setLocation('workshop', '');\r\n break;\r\n case 'Default MoneyManagement Location':\r\n setLocation('moneyManagement', '');\r\n break;\r\n default:\r\n console.warn(`couldn't reset a default location`);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n checkInitialRememberLastLocation();\r\n dropdownData();\r\n }\r\n\r\n return {\r\n init,\r\n buildPage,\r\n getLocation,\r\n getGroup,\r\n getInvalidDefaultLocations,\r\n setLocation,\r\n setGroup,\r\n rememberLastLocation,\r\n };\r\n})();\r\n","var defaultsAjax = (function () {\r\n function setDefaultValue(type, value, name) { \r\n var typeName = \"\";\r\n var switchCase = 0;\r\n switch (type) {\r\n case 1:\r\n typeName = \"Default Staff Location\";\r\n break;\r\n case 2:\r\n typeName = \"Default Roster Location\";\r\n createCookie(\"defaultRosterGroupName\", \"Everyone\", 7);\r\n createCookie(\"defaultRosterGroupValue\", \"ALL\", 7);\r\n saveDefaultLocationNameAjax(\"6\", \"Everyone\");\r\n saveDefaultLocationValueAjax(\"6\", \"ALL\");\r\n $(\"#rostergroup6\").text(\"Everyone\");\r\n if (value != 0 && name != null) {\r\n getConsumerGroups(value, name);\r\n $.session.defaultRosterLocation = value;\r\n createCookie(\"defaultRosterLocationName\", name, 7);\r\n saveDefaultLocationNameAjax(\"2\", name);\r\n } else {\r\n createCookie(\r\n \"defaultRosterLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"2\", \"Remember Last Location\");\r\n }\r\n break;\r\n case 3:\r\n typeName = \"Default Day Service Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultDayServiceLocationName\", name, 7);\r\n createCookie(\"defaultDayServiceLocationNameValue\", value, 7);\r\n createCookie(\"defaultDayServiceLocationFlag\", false, 7);\r\n saveDefaultLocationNameAjax(\"3\", name);\r\n saveDefaultLocationValueAjax(\"3\", value);\r\n $.session.defaultDayServiceLocationFlag = \"false\";\r\n $.session.dsLocationHistoryFlag = false;\r\n } else {\r\n var test = $(this).text();\r\n saveDefaultLocationNameAjax(\"3\", \"Remember Last Location\");\r\n if (name == null) {\r\n createCookie(\"defaultDayServiceLocationFlag\", true, 7);\r\n $.session.defaultDayServiceLocationFlag = \"true\";\r\n }\r\n }\r\n break;\r\n case 4:\r\n typeName = \"Default Time Clock Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultTimeClockLocationName\", name, 7);\r\n createCookie(\"defaultTimeClockLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"4\", name);\r\n saveDefaultLocationValueAjax(\"4\", value);\r\n } else {\r\n }\r\n //New way to save to the database\r\n switchCase = \"4\";\r\n saveDefaultLocationValueAjax(switchCase, value);\r\n break;\r\n case 5:\r\n typeName = \"Default Workshop Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultWorkshopLocationName\", name, 7);\r\n createCookie(\"defaultWorkshopLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"5\", name);\r\n saveDefaultLocationValueAjax(\"5\", value);\r\n } else {\r\n createCookie(\r\n \"defaultWorkshopLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"5\", \"Remember Last Location\");\r\n }\r\n break;\r\n case 6:\r\n typeName = \"Default Roster Group\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultRosterGroupName\", name, 7);\r\n createCookie(\"defaultRosterGroupValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"6\", name);\r\n saveDefaultLocationValueAjax(\"6\", value);\r\n } else {\r\n createCookie(\"defaultRosterGroupName\", \"Everyone\", 7);\r\n saveDefaultLocationNameAjax(\"6\", \"Everyone\");\r\n }\r\n break;\r\n case 7:\r\n typeName = \"Default MoneyManagement Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultMoneyManagementLocationName\", name, 7);\r\n createCookie(\"defaultMoneyManagementLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"7\", name);\r\n saveDefaultLocationValueAjax(\"7\", value);\r\n } else {\r\n createCookie(\r\n \"defaultMoneyManagementLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"7\", \"Remember Last Location\");\r\n }\r\n break;\r\n }\r\n\r\n setDefaultLoc(type, value);\r\n }\r\n\r\n async function getInvalidDefaults() {\r\n // string token\r\n const retrieveData = {\r\n token: $.session.Token\r\n }\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInvalidDefaults/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getInvalidDefaultsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function saveDefaultLocationValue(switchCase, locationId) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/saveDefaultLocationValue/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"switchCase\":\"' +\r\n switchCase +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n }\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n function saveDefaultLocationName(switchCase, locationName) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/saveDefaultLocationName/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationName\":\"' + locationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n function updateConsumerNotesDaysBack(updatedReviewDays) {\r\n $.session.defaultProgressNoteReviewDays = updatedReviewDays;\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateConsumerNotesDaysBack/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"updatedReviewDays\":\"' +\r\n updatedReviewDays +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function updateConsumerNotesChecklistDaysBack() {\r\n updatedChecklistDays = $(\"#progressnoteschecklistdaysback\").val();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateConsumerNotesChecklistDaysBack/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"updatedChecklistDays\":\"' +\r\n updatedChecklistDays +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //Days back\r\n function updateIncidentTrackingDaysBack(updatedReviewDays) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateIncidentTrackingDaysBack/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedReviewDays + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateIncidentTrackingDaysBackResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Case Note Review Days\r\n function updateCaseNotesDaysBack(updatedDaysBack) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateCaseNotesReviewDays/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedDaysBack + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateCaseNotesReviewDaysResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // Roster ---\r\n // -----------\r\n\r\n function getRosterLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getConsumerGroups(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol + \"://\" +\r\n $.webServer.address + \":\" +\r\n $.webServer.port + \"/\" +\r\n $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n data: '{\"locationId\":\"' + locationId + '\", \"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerGroupsJSONResult;\r\n callback(res);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n setDefaultValue,\r\n updateConsumerNotesDaysBack,\r\n updateConsumerNotesChecklistDaysBack,\r\n saveDefaultLocationValue,\r\n saveDefaultLocationName,\r\n updateIncidentTrackingDaysBack,\r\n updateCaseNotesDaysBack,\r\n getConsumerGroups,\r\n getRosterLocations,\r\n getInvalidDefaults\r\n };\r\n})();\r\n","var help = (function() {\r\n\r\n function buildPage() {\r\n var helpPage = document.querySelector(\".util-menu__help\");\r\n helpPage.innerHTML = \"\";\r\n\r\n var backButton = button.build({\r\n text: \"Back\",\r\n icon: \"arrowBack\",\r\n type: \"text\",\r\n attributes: [{ key: \"data-action\", value: \"back\" }]\r\n });\r\n var linkButton = button.build({\r\n text: \"Anywhere 4.0 Training Videos\",\r\n icon: \"openNew\",\r\n type: \"text\",\r\n attributes: [{ key: \"data-action\", value: \"trainingVideos\" }]\r\n });\r\n\r\n helpPage.appendChild(backButton);\r\n helpPage.appendChild(linkButton);\r\n }\r\n return {\r\n buildPage\r\n };\r\n})();\r\n","const information = (function () {\r\n let demographicInfo;\r\n let updateData;\r\n let mobileCarriersData;\r\n let emailError = false;\r\n // DOM\r\n let infoPage;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipInput;\r\n let phoneInput;\r\n let carrierDropdown;\r\n let emailInput;\r\n\r\n async function getStaffDemographicInformation() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetDemographicInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetDemographicInformationResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateStaffDemographicInformation() {\r\n const mergeUpdateWithDemo = { ...demographicInfo, ...updateData };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/UpdateDemographicInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...mergeUpdateWithDemo,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.UpdateDemographicInformationResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getMobileCarrierDropdown() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getMobileCarrierDropdown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getMobileCarrierDropdownResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateInformationData() {\r\n const newDemoInfo = await getStaffDemographicInformation();\r\n\r\n if (updateData.email && updateData.email !== newDemoInfo.email && !emailError) {\r\n emailError = true;\r\n // show error by email\r\n const emailSectionBody = document.querySelector('.emailSection .informationSection__body');\r\n const errorEle = document.createElement('p');\r\n errorEle.innerText = 'Unable to update email due to eMAR';\r\n emailSectionBody.appendChild(errorEle);\r\n input.disableInputField(emailInput);\r\n }\r\n\r\n const updatedKeys = Object.keys(updateData);\r\n if (updatedKeys.length === 1 && updatedKeys[0] === 'email' && emailError) {\r\n // do nothing\r\n } else {\r\n const saveEle = successfulSave.get('Information Updated.', true);\r\n infoPage.appendChild(saveEle);\r\n setTimeout(() => {\r\n infoPage.removeChild(saveEle);\r\n }, 1000);\r\n }\r\n\r\n demographicInfo = newDemoInfo;\r\n updateData = {};\r\n\r\n address1Input.querySelector('input').value = demographicInfo.addressOne;\r\n address2Input.querySelector('input').value = demographicInfo.addressTwo;\r\n cityInput.querySelector('input').value = demographicInfo.city;\r\n stateInput.querySelector('input').value = demographicInfo.state;\r\n zipInput.querySelector('input').value = demographicInfo.zipCode;\r\n phoneInput.querySelector('input').value = formatPhoneNumber(demographicInfo.mobilePhone);\r\n emailInput.querySelector('input').value = demographicInfo.email;\r\n }\r\n\r\n async function getValidateEmailInformation() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetValidateEmailInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n email: updateData.email,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetValidateEmailInformationResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function emailValidation() {\r\n const result = await getValidateEmailInformation();\r\n if (result.isEmailExist == 0 || result.isEmailExist == '0') {\r\n await updateStaffDemographicInformation();\r\n await updateInformationData();\r\n }\r\n else {\r\n emailDuplicationPopUp();\r\n }\r\n }\r\n\r\n\r\n function emailDuplicationPopUp() {\r\n const emailDuplicationPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(emailDuplicationPOPUP);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const heading = document.createElement('h3');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n heading.innerText = 'Duplicate email address'; \r\n\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'This email address is already in use, please enter a unique address to save.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n emailDuplicationPOPUP.appendChild(heading);\r\n emailDuplicationPOPUP.appendChild(message);\r\n emailDuplicationPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(emailDuplicationPOPUP);\r\n }\r\n\r\n function formatPhoneNumber(number) {\r\n if (!number) return '';\r\n\r\n const splitNumber = number\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .replaceAll('x', '');\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(splitNumber.substr(0, 10));\r\n const phoneExt = splitNumber.substr(10);\r\n\r\n const phone = phoneExt ? `${phoneNumber} (${phoneExt})` : `${phoneNumber}`;\r\n\r\n return phone;\r\n }\r\n function formatZipCode(zipCode) {\r\n const zip = zipCode.replace(/[^\\w\\s]/gi, '').replaceAll(' ', '');\r\n if (zip.length <= 5) {\r\n return zip;\r\n } else {\r\n return zip.slice(0, 5) + '-' + zip.slice(5);\r\n }\r\n }\r\n function setCaretPosition(elem, caretPos) {\r\n if (elem != null) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n } else {\r\n if (elem.selectionStart) {\r\n elem.focus();\r\n elem.setSelectionRange(caretPos, caretPos);\r\n } else elem.focus();\r\n }\r\n }\r\n }\r\n function stringAdd(string, start, newSubStr) {\r\n return string.slice(0, start) + newSubStr + string.slice(start);\r\n }\r\n\r\n function populateCarrierDropdown(dropdownEle) {\r\n const data = mobileCarriersData.map(carrier => {\r\n return {\r\n value: carrier.carrierId,\r\n text: carrier.carrierName,\r\n };\r\n });\r\n data.sort((a, b) => (a.text < b.text ? -1 : 1));\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, demographicInfo.carrier);\r\n }\r\n\r\n function buildAddressSection() {\r\n const addressSection = document.createElement('div');\r\n addressSection.classList.add('addressSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Address';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n address1Input = input.build({\r\n label: 'Address 1',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address1'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: demographicInfo.addressOne,\r\n callback: e => {\r\n updateData.addressOne = e.target.value;\r\n },\r\n });\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address2'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: demographicInfo.addressTwo,\r\n callback: e => {\r\n updateData.addressTwo = e.target.value;\r\n },\r\n });\r\n cityInput = input.build({\r\n label: 'City',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['city'],\r\n attributes: [{ key: 'maxlength', value: '27' }],\r\n value: demographicInfo.city,\r\n callback: e => {\r\n updateData.city = e.target.value;\r\n },\r\n });\r\n stateInput = input.build({\r\n label: 'State',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['state'],\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: demographicInfo.state,\r\n callback: e => {\r\n updateData.state = e.target.value;\r\n },\r\n });\r\n zipInput = input.build({\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '9' }],\r\n value: formatZipCode(demographicInfo.zipCode),\r\n callback: e => {\r\n updateData.zipCode = e.target.value;\r\n },\r\n });\r\n\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(address1Input);\r\n input.disableInputField(address2Input);\r\n input.disableInputField(cityInput);\r\n input.disableInputField(stateInput);\r\n input.disableInputField(zipInput);\r\n }\r\n\r\n const stateZipWrap = document.createElement('div');\r\n stateZipWrap.classList.add('stateZipWrap');\r\n stateZipWrap.appendChild(stateInput);\r\n stateZipWrap.appendChild(zipInput);\r\n\r\n body.appendChild(address1Input);\r\n body.appendChild(address2Input);\r\n body.appendChild(cityInput);\r\n body.appendChild(stateZipWrap);\r\n\r\n addressSection.appendChild(heading);\r\n addressSection.appendChild(body);\r\n\r\n return addressSection;\r\n }\r\n function buildNumbersSection() {\r\n let validPhone = false;\r\n\r\n const numberSection = document.createElement('div');\r\n numberSection.classList.add('numberSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Phone Numbers';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n phoneInput = input.build({\r\n label: 'Mobile',\r\n type: 'tel',\r\n style: 'secondary',\r\n classNames: ['phone'],\r\n value: formatPhoneNumber(demographicInfo.mobilePhone),\r\n callback: e => {\r\n if (e.target.value === '' || !validPhone) {\r\n updateData.mobilePhone = '';\r\n return;\r\n }\r\n\r\n let splitNumber = e.target.value.split(' ');\r\n\r\n let phoneNumber = splitNumber[0].replace(/[^\\w\\s]/gi, '');\r\n let phoneExt = splitNumber[1] ? splitNumber[1].replace('(', '').replace(')', '') : '';\r\n\r\n saveValue = phoneExt ? `${phoneNumber}${phoneExt}` : `${phoneNumber}`;\r\n\r\n updateData.mobilePhone = saveValue;\r\n },\r\n });\r\n phoneInput.addEventListener('keyup', e => {\r\n if (e.code === 'Backspace') return;\r\n\r\n let value = e.target.value\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .slice(0, 14);\r\n\r\n let phoneNumber;\r\n\r\n if (value.length === 0) {\r\n validPhone = true;\r\n return;\r\n }\r\n if (value.length >= 4 && value.length <= 6) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 7 && value.length < 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n phoneNumber = stringAdd(phoneNumber, 12, ' (');\r\n phoneNumber = stringAdd(phoneNumber, phoneNumber.length + 1, ')');\r\n e.target.value = phoneNumber;\r\n\r\n setCaretPosition(e.target, phoneNumber.length - 1);\r\n\r\n validPhone = true;\r\n }\r\n if (!validPhone) {\r\n phoneInput.classList.add('error');\r\n } else {\r\n phoneInput.classList.remove('error');\r\n }\r\n });\r\n\r\n carrierDropdown = dropdown.build({\r\n dropdownId: 'carrierDropdown',\r\n label: 'Carrier',\r\n style: 'secondary',\r\n callback: e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n updateData.carrier = selectedOption.value;\r\n },\r\n });\r\n\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(phoneInput);\r\n input.disableInputField(carrierDropdown);\r\n }\r\n\r\n populateCarrierDropdown(carrierDropdown);\r\n\r\n body.appendChild(phoneInput);\r\n body.appendChild(carrierDropdown);\r\n\r\n numberSection.appendChild(heading);\r\n numberSection.appendChild(body);\r\n\r\n return numberSection;\r\n }\r\n function buildEmailSection() {\r\n const emailSection = document.createElement('div');\r\n emailSection.classList.add('emailSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Email Address';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n style: 'secondary',\r\n value: demographicInfo.email,\r\n callback: e => {\r\n updateData.email = e.target.value;\r\n },\r\n });\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(emailInput);\r\n }\r\n\r\n body.appendChild(emailInput);\r\n\r\n emailSection.appendChild(heading);\r\n emailSection.appendChild(body);\r\n\r\n return emailSection;\r\n }\r\n\r\n function buildPage() {\r\n infoPage = document.querySelector('.util-menu__info');\r\n infoPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'My Information';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n const backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n const updateButton = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'updateInformationBtn',\r\n //callback: async () => {\r\n // await updateStaffDemographicInformation();\r\n // await updateInformationData();\r\n //},\r\n callback: async () => { await emailValidation(); },\r\n\r\n });\r\n\r\n const phoneNumberSection = buildNumbersSection();\r\n const emailSection = buildEmailSection();\r\n\r\n infoPage.appendChild(currMenu);\r\n infoPage.appendChild(backButton);\r\n if ($.session.UpdateMyInformation) {\r\n infoPage.appendChild(updateButton);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n const addressSection = buildAddressSection();\r\n infoPage.appendChild(addressSection);\r\n }\r\n\r\n infoPage.appendChild(phoneNumberSection);\r\n infoPage.appendChild(emailSection);\r\n }\r\n\r\n async function init() {\r\n demographicInfo = await getStaffDemographicInformation();\r\n mobileCarriersData = await getMobileCarrierDropdown();\r\n updateData = {};\r\n if (!demographicInfo) {\r\n demographicInfo = {\r\n addressOne: '',\r\n addressTwo: '',\r\n city: '',\r\n state: '',\r\n zipCode: '',\r\n mobilePhone: '',\r\n carrier: '',\r\n email: '',\r\n };\r\n }\r\n buildPage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var simpleMar = (function () {\r\n let simpleMarModuleButton;\r\n\r\n function showEMARfailurePopup() {\r\n const signOnFailerPop = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: ['emarSignOnFailerPop', 'warning'],\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'Single sign-on failed. Please contact your system administrator.';\r\n\r\n const okBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n POPUP.hide(signOnFailerPop);\r\n simpleMarModuleButton.classList.remove('disabled');\r\n },\r\n });\r\n\r\n signOnFailerPop.appendChild(message);\r\n signOnFailerPop.appendChild(okBtn);\r\n\r\n POPUP.show(signOnFailerPop);\r\n }\r\n\r\n async function simpleMarLogin() {\r\n simpleMarModuleButton = document.getElementById('emarButton');\r\n simpleMarModuleButton.classList.add('disabled');\r\n\r\n try {\r\n const success = await simpleMarAjax.simpleMarLogin();\r\n simpleMarModuleButton.classList.remove('disabled');\r\n } catch (error) {\r\n showEMARfailurePopup();\r\n }\r\n }\r\n\r\n return {\r\n simpleMarLogin,\r\n showEMARfailurePopup,\r\n };\r\n})();\r\n","var simpleMarAjax = (function () {\r\n async function simpleMarLogin() {\r\n retrieveData = {\r\n token: $.session.Token,\r\n };\r\n try {\r\n let data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/simpleMarLogin/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/simpleMarLogin/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n loginURL = data.simpleMarLoginResult;\r\n window.open(loginURL, '_blank');\r\n } catch (error) {\r\n console.log(error.responseText);\r\n simpleMar.showEMARfailurePopup();\r\n }\r\n }\r\n\r\n return {\r\n simpleMarLogin,\r\n };\r\n})();\r\n","var timeEntry = (function () {\r\n var adminPayPeriods = [];\r\n var payPeriods = [];\r\n var currentAdminPayPeriod;\r\n var currentPayPeriod;\r\n var currentAdminDate;\r\n var currentDate;\r\n var locations;\r\n var residenceLocations;\r\n var workCodes;\r\n var evvReasonCodes;\r\n var crossmidnightisadminedit;\r\n var crossmidnightpayperiod;\r\n let saveAndSubmit;\r\n // required fields\r\n var requiredFields = {\r\n isDestinationRequired: '',\r\n isNoteRequired: '',\r\n isOdometerRequired: '',\r\n isLicensePlateRequired: '',\r\n isReasonRequired: '',\r\n supervisorApproval: '',\r\n reconfigImportFile: '',\r\n useFiveCharWorkCode: '',\r\n };\r\n\r\n // overlapping locations variables\r\n let overlapLocationsPopup;\r\n let overlapLocationsDropdown;\r\n let overlapLocationsDoneBtn;\r\n //let locationId = '';\r\n let duplicateconsumerIds;\r\n let consumerswithUniqueLocations;\r\n let consumerswithMultipleLocations;\r\n let overlapconsumerlocationdata;\r\n let selectedOverlapLocIds = {};\r\n\r\n // Save, Update, Delete\r\n //------------------------------------\r\n function getEntryData(keyStartStop, saveAndSubmitBool) {\r\n saveAndSubmit = saveAndSubmitBool;\r\n if (keyStartStop === 'Y') {\r\n var overlapData = timeEntryCard.getOverlapData();\r\n singleEntryAjax.singleEntryOverlapCheck(overlapData, function (results) {\r\n if (results.length > 0) {\r\n showOverlapPopup();\r\n } else {\r\n $.session.singleEntrycrossMidnight\r\n ? showMultipleEntriesPopup()\r\n : getEntryData('', saveAndSubmit);\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n let saveData = timeEntryCard.getSaveUpdateData();\r\n\r\n if ($.session.singleEntrycrossMidnight === false || !saveData.endTime) {\r\n saveEntryData(saveData);\r\n } else {\r\n // entry crosses midnight, meaning two entries need tp be saved to DB\r\n\r\n // first day entry in the database\r\n let saveData1 = timeEntryCard.getSaveUpdateData();\r\n saveData1.checkHours = saveData1.crossMidnightCheckHours[0].day1TotalHours;\r\n saveData1.endTime = '00:00';\r\n\r\n if (!saveData1.defaultStartTimeChanged) {\r\n saveData1.evvReason = '';\r\n checkDeviceType() === 'Mobile'\r\n ? (saveData1.deviceType = 'Mobile')\r\n : (saveData1.deviceType = 'Other');\r\n }\r\n\r\n //saveEntryData(saveData1);\r\n\r\n // second day entry in the database\r\n let saveData2 = timeEntryCard.getSaveUpdateData();\r\n saveData2.checkHours = saveData2.crossMidnightCheckHours[1].day2TotalHours;\r\n saveData2.startTime = '00:00';\r\n\r\n // transportation only saved with the first day entry\r\n saveData2.destination = '';\r\n saveData2.licensePlateNumber = '';\r\n saveData2.odometerEnd = '';\r\n saveData2.odometerStart = '';\r\n saveData2.reason = '';\r\n saveData2.transportationReimbursable = '';\r\n saveData2.transportationUnits = 0;\r\n\r\n // * Date Constructor Doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\r\n // * Note on constructing date on date string is highly discouraged due to browser differences and inconsistencies.\r\n // * This was the issue for the crossing over midnight issue in older versions of safari.\r\n const year = parseInt(saveData2.dateOfService.split('-')[0]);\r\n const month = parseInt(saveData2.dateOfService.split('-')[1]);\r\n const day = parseInt(saveData2.dateOfService.split('-')[2]);\r\n var nextDay = new Date(year, month - 1, day);\r\n nextDay.setDate(nextDay.getDate() + 1);\r\n\r\n var dd = ('0' + nextDay.getDate()).slice(-2);\r\n var mm = ('0' + (nextDay.getMonth() + 1)).slice(-2);\r\n var yyyy = nextDay.getFullYear();\r\n\r\n saveData2.dateOfService = yyyy + '-' + mm + '-' + dd;\r\n\r\n if (!saveData2.defaultEndTimeChanged) {\r\n saveData2.evvReason = '';\r\n checkDeviceType() === 'Mobile'\r\n ? (saveData2.deviceType = 'Mobile')\r\n : (saveData2.deviceType = 'Other');\r\n }\r\n\r\n saveEntryData(saveData1, saveData2);\r\n }\r\n }\r\n function saveEntryData(saveData, saveData2) {\r\n if (saveData.locationId !== '' || saveData.consumerId === '') {\r\n if (saveAndSubmit) {\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed this entry and it is correct to the best of your knowledge.`;\r\n\r\n showWarningPopup(warningMessage, () => {\r\n singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n const entryId = results[1].replace(' {\r\n // 1. Grab the consumer/location data\r\n singleEntryAjax.getSelectedConsumerLocations(saveData, function (results) {\r\n overlapconsumerlocationdata = results;\r\n // no location overlaps for any selected consumer\r\n if (overlapconsumerlocationdata.length === 0) {\r\n singleEntryAjax.preInsertSingleEntry(saveData, function (results) {\r\n const idArray = results.map(r => r.singleEntryId);\r\n const updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: idArray.join(','),\r\n newStatus: 'S',\r\n };\r\n\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, function () {\r\n if (!saveData2) {\r\n successfulSave.show('SAVED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n } else {\r\n singleEntryAjax.preInsertSingleEntry(saveData2, function (results2) {\r\n const idArray = results2.map(r => r.singleEntryId);\r\n const updateObj2 = {\r\n token: $.session.Token,\r\n singleEntryIdString: idArray.join(','),\r\n newStatus: 'S',\r\n };\r\n\r\n singleEntryAjax.updateSingleEntryStatus(updateObj2, function () {\r\n successfulSave.show('SAVED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n });\r\n });\r\n }\r\n });\r\n });\r\n } else {\r\n // location overlaps exist for a selected consumer\r\n displayOverlapLocationsPopup(results);\r\n }\r\n });\r\n });\r\n } else {\r\n // Just the save BTN -- if (saveData.locationId !== '' || saveData.consumerId === '')\r\n\r\n // 1. Grab the consumer/location data\r\n singleEntryAjax.getSelectedConsumerLocations(saveData, function (results) {\r\n overlapconsumerlocationdata = results;\r\n\r\n // no location overlaps for any selected consumer\r\n if (overlapconsumerlocationdata.length === 0) {\r\n singleEntryAjax.preInsertSingleEntry(saveData, function (results) {\r\n if (!saveData2) {\r\n successfulSave.show('SAVED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n } else {\r\n singleEntryAjax.preInsertSingleEntry(saveData2, function (results) {\r\n successfulSave.show('SAVED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n });\r\n }\r\n });\r\n } else {\r\n // location overlaps exist for a selected consumer\r\n displayOverlapLocationsPopup(results);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n function updateSingleEntry(isAdminEdit, payPeriod, updateData) {\r\n singleEntryAjax.updateSingleEntry(updateData, function (results) {\r\n if (!saveAndSubmit) {\r\n // Orig Update\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.show('UPDATED');\r\n }\r\n setTimeout(function () {\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.hide();\r\n }\r\n roster2.clearActiveConsumers();\r\n timeEntryCard.clearAllGlobalVariables();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n } else {\r\n // Update w/Submit\r\n var updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: updateData.singleEntryId,\r\n newStatus: 'S',\r\n };\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed this entry and it is correct to the best of your knowledge.`;\r\n\r\n showWarningPopup(warningMessage, () => {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, () => {\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.show('UPDATED & SUBMITTED');\r\n }\r\n setTimeout(function () {\r\n if (!$.session.singleEntrycrossMidnight) {\r\n successfulSave.hide();\r\n }\r\n roster2.clearActiveConsumers();\r\n timeEntryCard.clearAllGlobalVariables();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n function saveAndUpdateEntryForMidnightCross(saveData, updateData, isAdminEdit, payPeriod) {\r\n singleEntryAjax.updateSingleEntry(updateData, updateResults => {\r\n // Update w/Submit\r\n const updateObj1 = {\r\n token: $.session.Token,\r\n singleEntryIdString: updateData.singleEntryId,\r\n newStatus: 'S',\r\n };\r\n singleEntryAjax.insertSingleEntryNew(saveData, saveResults => {\r\n const updateObj2 = {\r\n token: $.session.Token,\r\n singleEntryIdString: saveResults[1].replace(' {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj1, () => {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj2, () => {\r\n successfulSave.show('UPDATED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n });\r\n });\r\n });\r\n } else {\r\n successfulSave.show('UPDATED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n }, 1000);\r\n }\r\n });\r\n });\r\n }\r\n function updateEntry(isAdminEdit, payPeriod, keyStartStop, saveAndSubmitBool) {\r\n saveAndSubmit = saveAndSubmitBool;\r\n\r\n if (keyStartStop === 'Y') {\r\n if ($.session.singleEntrycrossMidnight) {\r\n crossmidnightisadminedit = isAdminEdit;\r\n crossmidnightpayperiod = payPeriod;\r\n showMultipleEntriesPopup('update');\r\n return;\r\n }\r\n }\r\n\r\n var saveData = timeEntryCard.getSaveUpdateData('Save');\r\n var updateData = timeEntryCard.getSaveUpdateData('Update');\r\n // update an entry that crosses midnight, results in update of original entry and a save of the new entry\r\n if ($.session.singleEntrycrossMidnight) {\r\n // may need overlapcheck on crossmidnight Update because saved record (2nd entry) may overlap with previous edits\r\n // if (keyStartStop === 'Y') {\r\n // \tvar overlapData = timeEntryCard.getOverlapData();\r\n // \tsingleEntryAjax.singleEntryOverlapCheck(overlapData, function(results) {\r\n // \t\tif (results.length > 0) {\r\n // \t\t\tshowOverlapPopup('update');\r\n // \t\t}\r\n // \t});\r\n // \treturn;\r\n // }\r\n\r\n // second day entry in the database -- SAVE\r\n saveData.checkHours = saveData.crossMidnightCheckHours[1].day2TotalHours;\r\n saveData.startTime = '00:00';\r\n\r\n // transportation only saved with the first day entry\r\n saveData.destination = '';\r\n saveData.licensePlateNumber = '';\r\n saveData.odometerEnd = '';\r\n saveData.odometerStart = '';\r\n saveData.reason = '';\r\n saveData.transportationReimbursable = '';\r\n saveData.transportationUnits = 0;\r\n\r\n if (!saveData.defaultEndTimeChanged) {\r\n saveData.evvReason = '';\r\n checkDeviceType() === 'Mobile'\r\n ? (saveData.deviceType = 'Mobile')\r\n : (saveData.deviceType = 'Other');\r\n }\r\n // * Date Constructor Doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\r\n // * Note on constructing date on date string is highly discouraged due to browser differences and inconsistencies.\r\n // * This was the issue for the crossing over midnight issue in older versions of safari.\r\n const year = parseInt(saveData.dateOfService.split('-')[0]);\r\n const month = parseInt(saveData.dateOfService.split('-')[1]);\r\n const day = parseInt(saveData.dateOfService.split('-')[2]);\r\n var nextDay = new Date(year, month - 1, day);\r\n nextDay.setDate(nextDay.getDate() + 1);\r\n\r\n var dd = ('0' + nextDay.getDate()).slice(-2);\r\n var mm = ('0' + (nextDay.getMonth() + 1)).slice(-2);\r\n var yyyy = nextDay.getFullYear();\r\n\r\n saveData.dateOfService = yyyy + '-' + mm + '-' + dd;\r\n\r\n // first day entry in the database -- UPDATE\r\n updateData.checkHours = saveData.crossMidnightCheckHours[0].day1TotalHours;\r\n updateData.endTime = '00:00';\r\n\r\n saveAndUpdateEntryForMidnightCross(\r\n saveData,\r\n updateData,\r\n crossmidnightisadminedit,\r\n crossmidnightpayperiod,\r\n );\r\n } else {\r\n updateSingleEntry(isAdminEdit, payPeriod, updateData);\r\n }\r\n }\r\n function deleteEntry(entryId, isAdminEdit, payPeriod) {\r\n if (!entryId) return;\r\n\r\n singleEntryAjax.deleteSingleEntryRecord(entryId, function (results) {\r\n successfulSave.show('DELETED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod); \r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n function showOverlapPopup(updateorsave = 'save') {\r\n var popup = POPUP.build({});\r\n var message = document.createElement('p');\r\n message.style.marginBottom = '2em';\r\n message.innerHTML = `There is an overlap with an existing Time Entry record. Do you wish to proceed?`;\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if ($.session.singleEntrycrossMidnight && updateorsave === 'save') {\r\n showMultipleEntriesPopup();\r\n }\r\n if (!$.session.singleEntrycrossMidnight && updateorsave === 'save') {\r\n getEntryData('', saveAndSubmit);\r\n }\r\n if ($.session.singleEntrycrossMidnight && updateorsave === 'update') {\r\n showMultipleEntriesPopup('update');\r\n }\r\n if (!$.session.singleEntrycrossMidnight && updateorsave === 'update') {\r\n updateEntry('', '', '', saveAndSubmit);\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n popup.appendChild(message);\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n function showWarningPopup(messageText, callback) {\r\n var popup = POPUP.build({ classNames: ['warning'], hideX: true });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n callback();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n timeEntryCard.enableSaveButtons();\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n function showMultipleEntriesPopup(updateorsave = 'save') {\r\n var popup2 = POPUP.build({});\r\n var message2 = document.createElement('p');\r\n message2.innerHTML = `You have entered an End Time that crosses over midnight. Two separate entries will be created when this record is saved. Do you wish to proceed?`;\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn2 = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup2);\r\n updateorsave === 'save'\r\n ? getEntryData('', saveAndSubmit)\r\n : updateEntry('', '', '', saveAndSubmit);\r\n },\r\n });\r\n var noBtn2 = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup2);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn2);\r\n btnWrap.appendChild(noBtn2);\r\n popup2.appendChild(message2);\r\n popup2.appendChild(btnWrap);\r\n //\tpopup2.appendChild(noBtn2);\r\n\r\n POPUP.show(popup2);\r\n }\r\n\r\n // Overlapping Locations\r\n function getConsumerswithOverlappingLocations(consumerlocatons) {\r\n // get list of consumerIds that are listed more than once (ie, consumers with overlappng locations)\r\n duplicateconsumerIds = consumerlocatons.reduce((a, e) => {\r\n a[e.consumerId] = ++a[e.consumerId] || 0;\r\n return a;\r\n }, {});\r\n\r\n // get list of consumer/locations that DO NOT have overlapping locations\r\n consumerswithUniqueLocations = consumerlocatons.filter(\r\n e => !duplicateconsumerIds[e.consumerId],\r\n );\r\n\r\n // get list of consumer/locations that DO have overlapping locations\r\n consumerswithMultipleLocations = consumerlocatons.filter(\r\n e => duplicateconsumerIds[e.consumerId],\r\n );\r\n }\r\n function checkOverlapPopupForErrors() {\r\n const erros = [...overlapLocationsPopup.querySelectorAll('.error')];\r\n\r\n if (erros.length > 0) {\r\n overlapLocationsDoneBtn.classList.add('disabled');\r\n } else {\r\n overlapLocationsDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populateOverlapLocationsDropdown(locDrop, consumer) {\r\n let thisconsumersLocations = consumerswithMultipleLocations.filter(\r\n val => val.consumerId === consumer.consumerId,\r\n );\r\n\r\n let data = thisconsumersLocations.map(location => ({\r\n id: location.consumerId,\r\n value: location.locationId,\r\n text: location.locationName,\r\n }));\r\n data.unshift({ id: '', value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate(locDrop, data);\r\n }\r\n function buildOverlapLocationsDropdown(consumer, index) {\r\n const wrap = document.createElement('div');\r\n\r\n const overlappedLocationsEntriesMessage = document.createElement('p');\r\n overlappedLocationsEntriesMessage.innerHTML = `${consumer.consumerName}
    `;\r\n\r\n const overlapLocationsDropdown = dropdown.build({\r\n label: 'Locations',\r\n dropdownId: `overlapLocationsDropdown${index}`,\r\n });\r\n\r\n overlapLocationsDropdown.classList.add('error');\r\n\r\n overlapLocationsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n const seletedOverlapLocId = selectedOption.value;\r\n selectedOverlapLocIds[consumer.consumerId] = seletedOverlapLocId;\r\n // selectedOverlapConsumerId\r\n if (!seletedOverlapLocId || seletedOverlapLocId === 'SELECT') {\r\n overlapLocationsDropdown.classList.add('error');\r\n } else {\r\n overlapLocationsDropdown.classList.remove('error');\r\n }\r\n checkOverlapPopupForErrors();\r\n });\r\n\r\n populateOverlapLocationsDropdown(overlapLocationsDropdown, consumer);\r\n\r\n wrap.appendChild(overlappedLocationsEntriesMessage);\r\n wrap.appendChild(overlapLocationsDropdown);\r\n\r\n return wrap;\r\n }\r\n function displayOverlapLocationsPopup(results) {\r\n getConsumerswithOverlappingLocations(results);\r\n\r\n // build overlapLocation Popup\r\n overlapLocationsPopup = POPUP.build({\r\n header: `Overlapping locations for selected consumer(s).`,\r\n hideX: false,\r\n id: 'overlapLocationsPopup',\r\n });\r\n\r\n let overlappedLocationsEntriesMessage = document.createElement('p');\r\n overlappedLocationsEntriesMessage.innerHTML = `Consumers listed below have multiple locations for the selected date. For each consumer, please select the location where these services are being provided.

    `;\r\n\r\n overlapLocationsPopup.appendChild(overlappedLocationsEntriesMessage);\r\n\r\n // reduce the list of consumer/locations with overlapping locations (ie, consumerswithMultipleLocations) to a single/unique record representing each consumer/location pair\r\n let overlapConsumerlist = consumerswithMultipleLocations\r\n .map(item => ({ consumerId: item.consumerId, consumerName: item.consumerName }))\r\n .filter((value, index, self) => self.indexOf(value) === index);\r\n\r\n // consumerNames in OverlapConsumerlist LastName, FirstName\r\n for (const consumer of overlapConsumerlist) {\r\n let firstName = consumer.consumerName.split(' ').slice(0, -1).join(' ');\r\n let lastName = consumer.consumerName.split(' ').slice(-1).join(' ');\r\n consumer.consumerName = lastName + ', ' + firstName;\r\n }\r\n // a single/unique record representing each consumer/location pair\r\n overlapConsumerlist = overlapConsumerlist.filter(\r\n (value, index, self) =>\r\n index ===\r\n self.findIndex(\r\n t => t.consumerId === value.consumerId && t.consumerName === value.consumerName,\r\n ),\r\n );\r\n //alphabatize\r\n // overlapConsumerlist = overlapConsumerlist.sort();\r\n overlapConsumerlist.sort(function (a, b) {\r\n var textA = a.consumerName.toUpperCase();\r\n var textB = b.consumerName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n // cycle through each consumer/location pair to build a dropdown for each unique pair\r\n overlapConsumerlist.forEach((consumer, index) => {\r\n const markup = buildOverlapLocationsDropdown(consumer, index);\r\n overlapLocationsPopup.appendChild(markup);\r\n });\r\n\r\n overlapLocationsDoneBtn = button.build({\r\n id: 'overlapLocationsDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n if (saveAndSubmit) {\r\n // SAve and Submit BTN clicked\r\n\r\n POPUP.hide(overlapLocationsPopup);\r\n var listofSingleEntryIdsSaved = await saveSingleEntrywithLocationOverlaps();\r\n var test = listofSingleEntryIdsSaved;\r\n var updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: listofSingleEntryIdsSaved.join(','),\r\n newStatus: 'S',\r\n };\r\n\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, function () {\r\n successfulSave.show('SAVED & SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init(true);\r\n }, 1000);\r\n }); // end -- singleEntryAjax.updateSingleEntryStatus\r\n\r\n selectedOverlapLocIds = {};\r\n } else {\r\n // Save BTN clicked\r\n\r\n var listofSingleEntryIdsSaved = await saveSingleEntrywithLocationOverlaps();\r\n var test = listofSingleEntryIdsSaved;\r\n\r\n POPUP.hide(overlapLocationsPopup);\r\n successfulSave.show('SAVED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n timeEntryCard.clearAllGlobalVariables();\r\n roster2.clearActiveConsumers();\r\n newTimeEntry.init();\r\n }, 1000);\r\n\r\n selectedOverlapLocIds = {};\r\n }\r\n },\r\n });\r\n this.doneButton = overlapLocationsDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'overlapLocationsCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => {\r\n selectedOverlapLocIds = {};\r\n\r\n POPUP.hide(overlapLocationsPopup);\r\n\r\n if (saveAndSubmit) {\r\n timeEntryCard.enableSaveButtons();\r\n } else {\r\n timeEntryCard.enableSaveButton();\r\n }\r\n },\r\n });\r\n\r\n selectedOverlapConsumerId = consumerswithMultipleLocations[0].consumerId;\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(overlapLocationsDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n overlapLocationsPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(overlapLocationsPopup);\r\n }\r\n async function saveSingleEntrywithLocationOverlaps() {\r\n let savedLocationsSingleEntryPairs = [];\r\n let overlapSavedLocationsSingleEntryPairs = [];\r\n\r\n // ****************// FIRST SAVE SECTION -- SAVING Consumers with NON-Overlapping Locations -- SAVED IN GROUPS OF CONSUMERS WHO SHARE A LOCATIONID\r\n var duplocationIds = consumerswithUniqueLocations.reduce((a, e) => {\r\n a[e.locationId] = ++a[e.locationId] || 0;\r\n return a;\r\n }, {});\r\n\r\n // filtering the consumers with non-overlapping locationsIds (consumerswithUniqueLocations)\r\n // cycle through each duplicate location Id record to get list of LocationIds that have more than one record (ie, duplicates)\r\n var listofDuplicateLocationIds = [];\r\n for (prop in duplocationIds) {\r\n if (duplocationIds[prop] !== 0) {\r\n listofDuplicateLocationIds.push(prop);\r\n }\r\n }\r\n\r\n if (listofDuplicateLocationIds.length > 0) {\r\n for (const duplocatId of listofDuplicateLocationIds) {\r\n // create a subset of records for each duplicate location Id\r\n var nonoverlapconsumerswithsamelocation;\r\n nonoverlapconsumerswithsamelocation = consumerswithUniqueLocations.filter(e => {\r\n return e.locationId === duplocatId;\r\n });\r\n\r\n if (nonoverlapconsumerswithsamelocation.length > 0) {\r\n var strConsumerIds = '';\r\n var locationid;\r\n // putting together list of consumerIds with a shared locationID\r\n nonoverlapconsumerswithsamelocation.forEach(function (item) {\r\n strConsumerIds = strConsumerIds + item.consumerId + ',';\r\n locationid = item.locationId;\r\n });\r\n\r\n strConsumerIds = strConsumerIds.slice(0, -1);\r\n\r\n saveData = timeEntryCard.getSaveUpdateData();\r\n saveData.locationId = locationid;\r\n saveData.consumerId = strConsumerIds;\r\n\r\n // NON-Overlapping Location SAVE -- saving the SingleEntry that has multiple consumers who share a single location\r\n // SAVED -- one record in the AA_Single_Entry Table and multiple records in the AA_Consumers_Present table\r\n let singleentryid;\r\n await singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n singleentryid = results[1].slice(0, -2);\r\n });\r\n savedLocationsSingleEntryPairs.push({\r\n locationId: saveData.locationId,\r\n singleEntryId: singleentryid,\r\n });\r\n } // end if -- if (nonoverlapconsumerswithsamelocation.length > 0)\r\n } // end for -- for (const duplocatId of listofDuplicateLocationIds)\r\n } // end if -- if (listofDuplicateLocationIds.length > 0)\r\n\r\n // ****************// SECOND SAVE SECTION -- SAVING Consumers with NON-Overlapping Locations -- SAVED CONSUMERS WHO HAVE UNIQUE LOCATIONID\r\n // filtering Entries that are non-overlapping (consumerswithUniqueLocations) and have a unique location per unique consumer\r\n var nonoverlapconsumerswithUniqueLocations;\r\n nonoverlapconsumerswithUniqueLocations = consumerswithUniqueLocations.filter(\r\n e => !duplocationIds[e.locationId],\r\n );\r\n\r\n // NON-Overlapping Location SAVE -- saving the SingleEntry that has a single location with an associated single consumer\r\n // SAVED -- one record in the SingleEntr Table and assocciated Single record in the AA_Consumers_Present table\r\n if (nonoverlapconsumerswithUniqueLocations.length > 0) {\r\n for (const item of nonoverlapconsumerswithUniqueLocations) {\r\n saveData = timeEntryCard.getSaveUpdateData();\r\n saveData.locationId = item.locationId;\r\n saveData.consumerId = item.consumerId;\r\n let singleentryid;\r\n await singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n singleentryid = results[1].slice(0, -2);\r\n });\r\n savedLocationsSingleEntryPairs.push({\r\n locationId: saveData.locationId,\r\n singleEntryId: singleentryid,\r\n });\r\n }\r\n }\r\n // ****************// THIRD SAVE SECTION -- SAVING Consumers with Overlapping Locations **************************************************************\r\n // if any non-overlapping locations were saved, then we need to determine how to save the overlapping locations\r\n if (\r\n savedLocationsSingleEntryPairs.length > 0 ||\r\n overlapSavedLocationsSingleEntryPairs.length > 0 ||\r\n Object.values(selectedOverlapLocIds).length !== 0\r\n ) {\r\n // loop through all the selected locations for the overlapping locations\r\n for (prop in selectedOverlapLocIds) {\r\n let foundlocation = false;\r\n let seletedOverlapLocationId = selectedOverlapLocIds[prop];\r\n let selectedOverlapConsumerId = prop;\r\n\r\n if (overlapSavedLocationsSingleEntryPairs.length > 0) {\r\n // loop through all the SAVED 'Overlapping location\" Single Entries (all the overlapping location saves)\r\n for (const item of overlapSavedLocationsSingleEntryPairs) {\r\n // if the current location has already been saved, then just save the Consumer in the AA_Consumers_Present table\r\n if (item.locationId === seletedOverlapLocationId) {\r\n foundlocation = true;\r\n let saveData = timeEntryCard.getSaveUpdateData();\r\n consumerData = {\r\n token: $.session.Token,\r\n singleEntryId: item.singleEntryId,\r\n consumerId: selectedOverlapConsumerId,\r\n deviceType: saveData.deviceType,\r\n evvReason: saveData.evvReason,\r\n };\r\n // Single Entry Record already exists for this location so just save to the AA_Consumers_Present table\r\n await singleEntryAjax.insertConsumerforSavedSingleEntry(\r\n consumerData,\r\n function (res) {},\r\n );\r\n } // end if (item.locationId === seletedOverlapLocationId)\r\n } // end for -- all the saved Single Entries (all the non-overlapping location saves)\r\n } else {\r\n // overlapSavedLocationsSingleEntryPairs.length = 0\r\n\r\n // loop through all the SAVED Single Entries (all the NON-overlapping location saves)\r\n for (const item of savedLocationsSingleEntryPairs) {\r\n // if the current location has already been saved, then just save the Consumer in the AA_Consumers_Present table\r\n if (item.locationId === seletedOverlapLocationId) {\r\n foundlocation = true;\r\n let saveData = timeEntryCard.getSaveUpdateData();\r\n consumerData = {\r\n token: $.session.Token,\r\n singleEntryId: item.singleEntryId,\r\n consumerId: selectedOverlapConsumerId,\r\n deviceType: saveData.deviceType,\r\n evvReason: saveData.evvReason,\r\n };\r\n // Single Entry Record already exists for this location so just save to the AA_Consumers_Present table\r\n await singleEntryAjax.insertConsumerforSavedSingleEntry(\r\n consumerData,\r\n function (res) {},\r\n );\r\n } // end -- if (item.locationId === seletedOverlapLocationId)\r\n } // end for -- all the saved Single Entries (all the non-overlapping location saves)\r\n } // end if/else -- overlapSavedLocationsSingleEntryPairs.length > 0\r\n\r\n // if the location has NOT already been Saved, just save the overlapping location\r\n if (!foundlocation) await saveOverlapLocationasSingleEntry(prop);\r\n } // end for -- the selected locations for the overlapping locations\r\n } else {\r\n // there were NO locations saved in any of the sections above, so just save the overlapping location\r\n\r\n await saveOverlapLocationasSingleEntry(prop);\r\n }\r\n // ****************// ALL SAVES ARE NOW COMPLETE //**************************************************************\r\n\r\n // NESTED/Child FUNCTION inside ==> function saveSingleEntrywithLocationOverlaps() -- handles each new Single Entry Insert from the Parent function\r\n async function saveOverlapLocationasSingleEntry(prop) {\r\n saveData = timeEntryCard.getSaveUpdateData();\r\n\r\n let singleentryid;\r\n const seletedOverlapLocationId = selectedOverlapLocIds[prop];\r\n const selectedOverlapConsumerId = prop;\r\n saveData.locationId = seletedOverlapLocationId;\r\n saveData.consumerId = selectedOverlapConsumerId;\r\n\r\n await singleEntryAjax.insertSingleEntryNew(saveData, function (results) {\r\n singleentryid = results[1].slice(0, -2);\r\n overlapSavedLocationsSingleEntryPairs.push({\r\n locationId: saveData.locationId,\r\n singleEntryId: singleentryid,\r\n });\r\n });\r\n } // end of nested function -- async function saveOverlapLocationasSingleEntry()\r\n\r\n // put together full list of new Single Entry SAVES\r\n var concatsavedLocationsSingleEntryPairs = savedLocationsSingleEntryPairs.concat(\r\n overlapSavedLocationsSingleEntryPairs,\r\n );\r\n\r\n //After all Single Entries have been saved, go get the Consumers Present and update the AA_Single_Entry Table\r\n // let saveData = timeEntryCard.getSaveUpdateData();\r\n for (const item of concatsavedLocationsSingleEntryPairs) {\r\n await singleEntryAjax.getSingleEntryConsumersPresentAsync(item.singleEntryId, function (res) {\r\n saveData.singleEntryId = item.singleEntryId;\r\n saveData.locationId = item.locationId;\r\n saveData.numberOfConsumersPresent = res.length;\r\n });\r\n await singleEntryAjax.updateSingleEntry(saveData, function (results) {});\r\n }\r\n // return list of newly created singleEntryIds (from all the AA_Single_Entry saves/inserts from ALL the SAVES above)\r\n const singleEntryIdArray = concatsavedLocationsSingleEntryPairs.map(r => r.singleEntryId);\r\n\r\n return singleEntryIdArray;\r\n } // end of Parent/containing function -- function populateOverlapLocationsDropdown(locDrop, consumer)\r\n\r\n // Util/CRUD\r\n //------------------------------------\r\n function checkDeviceType() {\r\n if ($.session.OS === 'iPhone/iPod' || $.session.OS === 'Linux') {\r\n return 'Mobile';\r\n } else return 'Other';\r\n }\r\n function setRequiredFields(results) {\r\n var res = results[0];\r\n\r\n requiredFields.isDestinationRequired = res.destinationrequired;\r\n requiredFields.isNoteRequired = res.noterequired;\r\n requiredFields.isOdometerRequired = res.odometerrequired;\r\n requiredFields.isLicensePlateRequired = res.licenseplaterequired;\r\n requiredFields.isReasonRequired = res.reasonrequired;\r\n requiredFields.supervisorApproval = res.supervisorapproval;\r\n requiredFields.reconfigImportFile = res.reconfigimportfile;\r\n requiredFields.useFiveCharWorkCode = res.use5characterworkcode;\r\n }\r\n function setSelectedPayPeriod(dirtyStart, dirtyEnd, dateString) {\r\n // start and end format must be YYYY-MM-DD\r\n var tmpStart = dirtyStart;\r\n var tmpEnd = dirtyEnd;\r\n\r\n return {\r\n start: tmpStart,\r\n end: tmpEnd,\r\n dateString,\r\n };\r\n }\r\n function sortPayPeriods(results) {\r\n var adminDatesSet = false;\r\n var datesSet = false;\r\n var adminDefaultDates;\r\n var defaultDates;\r\n var now = new Date();\r\n now.setHours(0, 0, 0, 0);\r\n\r\n results.forEach((r, i) => {\r\n var anywhereClosed = r.anywhereclosed;\r\n var sendEvvData = r.sendevvdata;\r\n var startDate = r.startdate.split(' ')[0]; // MM/DD/YYYY\r\n var endDate = r.enddate.split(' ')[0]; // MM/DD/YYYY\r\n var startDateIso = UTIL.formatDateToIso(startDate); // YYYY-MM-DD\r\n var endDateIso = UTIL.formatDateToIso(endDate); // YYYY-MM-DD\r\n\r\n var dateString = `${startDate} - ${endDate}`; // for dropdown text only\r\n var newObj = {\r\n start: startDateIso,\r\n end: endDateIso,\r\n dateString,\r\n sendEvvData: sendEvvData,\r\n };\r\n\r\n var startDateObj = new Date(startDate);\r\n var endDateObj = new Date(endDate);\r\n\r\n if (i === 0) {\r\n adminDefaultDates = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n }\r\n if (anywhereClosed === 'False' && !defaultDates) {\r\n defaultDates = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n }\r\n\r\n // getting the current date & pay period\r\n if (now >= startDateObj && now <= endDateObj) {\r\n currentAdminDate = UTIL.formatDateToIso(\r\n `${now.getMonth() + 1}/${now.getDate()}/${now.getFullYear()}`,\r\n );\r\n currentAdminPayPeriod = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n adminDatesSet = true;\r\n\r\n if (anywhereClosed === 'False') {\r\n currentDate = UTIL.formatDateToIso(\r\n `${now.getMonth() + 1}/${now.getDate()}/${now.getFullYear()}`,\r\n );\r\n currentPayPeriod = setSelectedPayPeriod(startDateIso, endDateIso, dateString);\r\n datesSet = true;\r\n }\r\n }\r\n // sorting pay periods\r\n adminPayPeriods.push(newObj);\r\n if (anywhereClosed === 'False') {\r\n payPeriods.push(newObj);\r\n }\r\n });\r\n\r\n if (!adminDatesSet) {\r\n currentAdminDate = adminDefaultDates.start;\r\n currentAdminPayPeriod = adminDefaultDates;\r\n }\r\n if (!datesSet && defaultDates) {\r\n currentDate = defaultDates.start;\r\n currentPayPeriod = defaultDates;\r\n }\r\n }\r\n function getPayPeriods(admin) {\r\n if (admin) {\r\n return [...adminPayPeriods];\r\n } else {\r\n return [...payPeriods];\r\n }\r\n }\r\n function getCurrentPayPeriod(admin) {\r\n if (admin) {\r\n return UTIL.iterationCopy(currentAdminPayPeriod);\r\n } else {\r\n return UTIL.iterationCopy(currentPayPeriod);\r\n }\r\n }\r\n function getCurrentDate(admin) {\r\n if (admin) {\r\n return currentAdminDate;\r\n } else {\r\n return currentDate;\r\n }\r\n }\r\n function getLocations() {\r\n return [...locations];\r\n }\r\n function getEvvReasonCodes() {\r\n return [...evvReasonCodes];\r\n }\r\n function getResidenceLocations() {\r\n if (!residenceLocations) return [];\r\n return [...residenceLocations];\r\n }\r\n async function getWorkCodes(useAllWorkCodes) {\r\n if (!useAllWorkCodes) {\r\n return [...workCodes];\r\n }\r\n\r\n const allWorkCodes = await singleEntryAjax.getWorkCodesAsync(useAllWorkCodes);\r\n\r\n return [...allWorkCodes];\r\n }\r\n function getRequiredFields() {\r\n return UTIL.iterationCopy(requiredFields);\r\n }\r\n function getInitialData(callback) {\r\n if (\r\n payPeriods.length === 0 ||\r\n adminPayPeriods.length === 0 ||\r\n !locations ||\r\n !workCodes ||\r\n !evvReasonCodes\r\n ) {\r\n let promises = [];\r\n\r\n const getSingleEntryPayPeriods = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryPayPeriods(results => {\r\n sortPayPeriods(results);\r\n resolve('getSingleEntryPayPeriods DONE');\r\n });\r\n });\r\n promises.push(getSingleEntryPayPeriods);\r\n\r\n const getSingleEntryLocations = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryLocations(results => {\r\n locations = results;\r\n resolve('getSingleEntryLocations DONE');\r\n });\r\n });\r\n promises.push(getSingleEntryLocations);\r\n\r\n const getRequiredSingleEntryFields = new Promise((resolve, reject) => {\r\n singleEntryAjax.getRequiredSingleEntryFields(results => {\r\n setRequiredFields(results);\r\n resolve('getRequiredSingleEntryFields DONE');\r\n });\r\n });\r\n promises.push(getRequiredSingleEntryFields);\r\n\r\n const getWorkCodes = new Promise((resolve, reject) => {\r\n singleEntryAjax.getWorkCodes(results => {\r\n workCodes = results;\r\n resolve('getWorkCodes DONE');\r\n });\r\n });\r\n promises.push(getWorkCodes);\r\n\r\n const getLocationsAndResidences = new Promise((resolve, reject) => {\r\n singleEntryAjax.getLocationsAndResidences(results => {\r\n residenceLocations = results;\r\n resolve('getWorkCodes DONE');\r\n });\r\n });\r\n promises.push(getLocationsAndResidences);\r\n\r\n const getEvvReasonCodes = new Promise((resolve, reject) => {\r\n singleEntryAjax.getEvvReasonCodes(results => {\r\n evvReasonCodes = results;\r\n resolve('getEvvReasonCodes DONE');\r\n });\r\n });\r\n promises.push(getEvvReasonCodes);\r\n\r\n Promise.all(promises).then(() => {\r\n callback();\r\n });\r\n\r\n // singleEntryAjax.getSingleEntryPayPeriods(function getSingleEntryPayPeriods(results) {\r\n // \tsortPayPeriods(results);\r\n\r\n // \tsingleEntryAjax.getSingleEntryLocations(function getSingleEntryLocations(results) {\r\n // \t\tlocations = results;\r\n\r\n // \t\tsingleEntryAjax.getRequiredSingleEntryFields(function getRequiredSingleEntryFields(results) {\r\n // \t\t\tsetRequiredFields(results);\r\n\r\n // \t\t\tsingleEntryAjax.getWorkCodes(function getWorkCodes(results) {\r\n // workCodes = results;\r\n\r\n // singleEntryAjax.getLocationsAndResidences(function getLocationsAndResidence(results) {\r\n // residenceLocations = results;\r\n // callback();\r\n // });\r\n // \t\t\t});\r\n // \t\t});\r\n // \t});\r\n // });\r\n } else {\r\n callback();\r\n }\r\n }\r\n\r\n function checkLocationServicesEnabled() {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n function (position) {\r\n // if location services are on, continue with normal functionality\r\n $.session.singleEntrycrossMidnight = false;\r\n newTimeEntry.init();\r\n },\r\n function (error) {\r\n // If location services are off, show popup\r\n const locationsWarningpopup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: false,\r\n classNames: 'warning',\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(locationsWarningpopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n \"Location services must be enabled on this device to save a new time entry record. Please contact your company's IT team for assistance.\";\r\n locationsWarningpopup.appendChild(warningMessage);\r\n locationsWarningpopup.appendChild(btnWrap);\r\n POPUP.show(locationsWarningpopup);\r\n },\r\n );\r\n } else {\r\n // If location services are not supported, show popup\r\n const locationsWarningpopup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: false,\r\n classNames: 'warning',\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(locationsWarningpopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n \"Location services must be enabled on this device to save a new time entry record. Please contact your company's IT team for assistance.\";\r\n locationsWarningpopup.appendChild(warningMessage);\r\n locationsWarningpopup.appendChild(btnWrap);\r\n POPUP.show(locationsWarningpopup);\r\n }\r\n }\r\n\r\n // Landing Page\r\n //------------------------------------\r\n async function loadNewTimeEntryPage() {\r\n if ($.session.singleEntryLocationRequired === 'Y') {\r\n // If location settings are required, check location settings\r\n checkLocationServicesEnabled();\r\n } else {\r\n // If location settings are not required, resume normal funcionality\r\n const result = await singleEntryAjax.getExistingTimeEntry();\r\n const { getExistingTimeEntryResult } = result;\r\n if (getExistingTimeEntryResult.length > 0 && $.session.anyRequireEndTime == 'Y') {\r\n newTimeEntry.endDateWarningPopup(getExistingTimeEntryResult); \r\n }\r\n else {\r\n $.session.singleEntrycrossMidnight = false;\r\n newTimeEntry.init();\r\n } \r\n }\r\n }\r\n function loadTimeEntryReviewPage() {\r\n $.session.singleEntrycrossMidnight = false;\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n timeEntryReview.init();\r\n }\r\n function loadTimeEntryApprovalPage() {\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n timeApproval.init();\r\n }\r\n function loadSingleEntryLanding() {\r\n var timeEntryBtn = button.build({\r\n text: 'New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: loadNewTimeEntryPage,\r\n });\r\n var timeReviewBtn = button.build({\r\n text: 'Time Review',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: loadTimeEntryReviewPage,\r\n });\r\n var timeApprovalBtn = button.build({\r\n text: 'Time Approval',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: loadTimeEntryApprovalPage,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(timeEntryBtn);\r\n btnWrap.appendChild(timeReviewBtn);\r\n if ($.session.ViewAdminSingleEntry && $.session.SEViewAdminWidget) {\r\n btnWrap.appendChild(timeApprovalBtn);\r\n }\r\n\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n function init() {\r\n DOM.clearActionCenter();\r\n PROGRESS.SPINNER.show('Loading Time Entry...');\r\n getInitialData(loadSingleEntryLanding);\r\n }\r\n\r\n return {\r\n setSelectedPayPeriod,\r\n getPayPeriods,\r\n getCurrentPayPeriod,\r\n getCurrentDate,\r\n getLocations,\r\n getResidenceLocations,\r\n getWorkCodes,\r\n getRequiredFields,\r\n getInitialData,\r\n getEvvReasonCodes,\r\n getEntryData,\r\n updateEntry,\r\n deleteEntry,\r\n init,\r\n };\r\n})();\r\n","var singleEntryAjax = (function () {\r\n // deletes se record from review table\r\n function deleteSingleEntryRecord(singleEntryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteSingleEntryRecord/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n // gets consumers allowed on card\r\n function getSingleEntryConsumersPresent(singleEntryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryConsumersPresentJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryConsumersPresentJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n\r\n // gets consumers allowed on card\r\n async function getSingleEntryConsumersPresentAsync(singleEntryId, callback) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryConsumersPresentJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n var res = data.getSingleEntryConsumersPresentJSONResult;\r\n callback(res);\r\n\r\n // return data.getSingleEntryConsumersPresentJSONResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function getSubEmployeeListAndCountInfo(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSubEmployeeListAndCountInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSubEmployeeListAndCountInfoJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getSingleEntryPayPeriods(callback) {\r\n //If has value true use in admin only. If has value false use in both dropdowns\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryPayPeriodsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryPayPeriodsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getRequiredSingleEntryFields(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRequiredSingleEntryFieldsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getRequiredSingleEntryFieldsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getWorkCodes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkCodesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getWorkCodesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n async function getWorkCodesAsync(getAllWorkCodes) {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n getAllWorkCodes: !getAllWorkCodes ? 'N' : 'Y',\r\n };\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkCodesJSON/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n console.log(data.getWorkCodesJSONResult);\r\n\r\n return data.getWorkCodesJSONResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n function getSingleEntryLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n // called when location dropdown is changed on se card\r\n function getSingleEntryUsersByLocation(locationId, seDate) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryUsersByLocationJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"seDate\":\"' +\r\n seDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n // $.ajax({\r\n // \ttype: 'POST',\r\n // \turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getSingleEntryUsersByLocationJSON/',\r\n // \tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"seDate\":\"' + seDate + '\"}',\r\n // \tcontentType: 'application/json; charset=utf-8',\r\n // \tdataType: 'json',\r\n // \tsuccess: function(response, status, xhr) {\r\n // \t\tvar res = response.getSingleEntryUsersByLocationJSONResult;\r\n // \t\tcallback(res);\r\n // \t},\r\n // \terror: function(xhr, status, error) {\r\n // \t\tcallback(null);\r\n // \t},\r\n // });\r\n }\r\n // called before buliding review table\r\n function getSingleEntryByDate(dataObj, callback) {\r\n // dataObj = {userId, startDate, endDate, locationId, statusIn}\r\n // This gets data for time entry review page to populate the table\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryByDateJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"userId\":\"' +\r\n dataObj.userId +\r\n '\", \"startDate\":\"' +\r\n dataObj.startDate +\r\n '\", \"endDate\":\"' +\r\n dataObj.endDate +\r\n '\", \"locationId\":\"' +\r\n dataObj.locationId +\r\n '\",\"statusIn\":\"' +\r\n dataObj.statusIn +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryByDateJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n // gets se record by id, used when clicked on row in review table\r\n function getSingleEntryById(singleEntryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryByIdJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryByIdJSONResult;\r\n signatureAjax.getConsumersSignaturesAndNotes(singleEntryId);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n // called when saving new entry, after overlap check has ran\r\n async function insertSingleEntryNew(data, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertSingleEntry/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n res = res.split('@singleEntryRecordID>');\r\n var savedSingleEntryId = res[1].slice(0, -2);\r\n saveSignatureAndNote(savedSingleEntryId);\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function insertConsumerforSavedSingleEntry(consumerData, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerforSavedSingleEntry/',\r\n data: JSON.stringify(consumerData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //clearSavedSignaturesAndNotes();\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n // only called for when there is no locationId and has consumers\r\n function preInsertSingleEntry(insertData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/preInsertSingleEntry/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.preInsertSingleEntryResult;\r\n var savedSingleEntryId = results[0].singleEntryId;\r\n var consumersWithLocIdZero = '';\r\n var filteredResults = results.filter(res => {\r\n if (res.singleEntryId != null) return true;\r\n });\r\n saveSignatureAndNote(filteredResults);\r\n results.forEach(result => {\r\n if (result.locationId === '' || result.locationId === '0') {\r\n consumersWithLocIdZero = consumersWithLocIdZero + result.consumerId + ', ';\r\n }\r\n });\r\n if (consumersWithLocIdZero != '') {\r\n alert(\r\n \"Please contact Primary Solutions, the following consumerId's were saved with a location id of '0'; \" +\r\n consumersWithLocIdZero,\r\n );\r\n }\r\n\r\n callback(results);\r\n },\r\n });\r\n }\r\n\r\n // called for when there is no locationId and has consumers\r\n // if a selected consumer has overlapping locations, this function returns all selected consumers and their locations to be processed\r\n function getSelectedConsumerLocations(insertData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSelectedConsumerLocations/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.getSelectedConsumerLocationsResult;\r\n callback(results);\r\n },\r\n });\r\n }\r\n\r\n // called when saving new entry\r\n function singleEntryOverlapCheck(overlapData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/singleEntryOverlapCheckJSON/',\r\n data: JSON.stringify(overlapData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.singleEntryOverlapCheckJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n // updates se record from review table\r\n function updateSingleEntryStatus(statusData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateSingleEntryStatus/',\r\n data: JSON.stringify(statusData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n // called when updating entry\r\n function updateSingleEntry(updateData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateSingleEntry/',\r\n data: JSON.stringify(updateData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n saveSignatureAndNote(updateData.singleEntryId);\r\n\r\n if (response.updateSingleEntryResult.match('Error ')) {\r\n callback('Your time record cannot be saved. Please contact Primary Solutions.');\r\n return;\r\n }\r\n\r\n callback('Time record has been saved.');\r\n },\r\n error: function (xhr, status, error) {\r\n callback('Your time record cannot be saved. Please contact Primary Solutions.');\r\n },\r\n });\r\n }\r\n\r\n // SE ADMIN AJAX CALLS\r\n //-------------------------------------\r\n function adminUpdateSingleEntryStatus(adminStatusData, callback) {\r\n //(string token, string singleEntryIdString, string newStatus, string userID)\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/adminUpdateSingleEntryStatus/',\r\n data: JSON.stringify(adminStatusData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function approveSingleEntryRecord(singleEntryId) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/approveSingleEntryRecord/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n loadApp('singleentry');\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getSingleEntryEmployees(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntrySupervisorsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getSingleEntrySupervisorsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getSingleEntrySupervisors(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeListAndCountInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getEmployeeListAndCountInfoJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getAdminSingleEntryLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAdminSingleEntryLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getAdminSingleEntryLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function singleEntryFilterAdminList(filterData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/singleEntryFilterAdminListJSON/',\r\n data: JSON.stringify(filterData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.singleEntryFilterAdminListJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getAddressByLatLong(lat, lng, callback) {\r\n $.ajax({\r\n type: 'GET',\r\n url:\r\n 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' +\r\n lat +\r\n ',' +\r\n lng +\r\n '&key=' +\r\n $.googleMapAPI,\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (\r\n response &&\r\n response.results &&\r\n response.results[0] &&\r\n response.results[0].formatted_address\r\n ) {\r\n callback(response.results[0].formatted_address);\r\n } else callback('');\r\n },\r\n error: function (xhr, status, error) {\r\n callback('');\r\n },\r\n });\r\n }\r\n function getUserSingleEntryLocationsForPayPeriod(data, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserSingleEntryLocationsForPayPeriod/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getSingleEntryUsersWC(getUserData, callback) {\r\n //getUserdata must contain token and date from single entry page\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryUsersWCJSON/',\r\n data: JSON.stringify(getUserData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryUsersWCJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n function getLocationsAndResidences(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsAndResidencesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getLocationsAndResidencesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getEvvReasonCodes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryEvvReasonCodesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryEvvReasonCodesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n function getEvvEligibility(consumerId, entryDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryEvvEligibilityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\" , \"entryDate\":\"' +\r\n entryDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n beforeSend: function () {},\r\n complete: function () {},\r\n success: function (response, status, xhr) {\r\n var res = response.getSingleEntryEvvEligibilityJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n\r\n async function getEvvEligibilityAsync(consumerId, entryDate) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSingleEntryEvvEligibilityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\" , \"entryDate\":\"' +\r\n entryDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSingleEntryEvvEligibilityJSONResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getExistingTimeEntry() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getExistingTimeEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteSingleEntryRecord,\r\n getSingleEntryConsumersPresent,\r\n getSingleEntryConsumersPresentAsync,\r\n getSubEmployeeListAndCountInfo,\r\n getSingleEntryPayPeriods,\r\n getRequiredSingleEntryFields,\r\n getWorkCodes,\r\n getWorkCodesAsync,\r\n getSingleEntryLocations,\r\n getSingleEntryUsersByLocation,\r\n getSingleEntryByDate,\r\n getSingleEntryById,\r\n insertSingleEntryNew,\r\n insertConsumerforSavedSingleEntry,\r\n preInsertSingleEntry,\r\n getSelectedConsumerLocations,\r\n singleEntryOverlapCheck,\r\n updateSingleEntryStatus,\r\n updateSingleEntry,\r\n // ADMIN SE FUNCTIONS\r\n approveSingleEntryRecord,\r\n adminUpdateSingleEntryStatus,\r\n getSingleEntryEmployees,\r\n getSingleEntrySupervisors,\r\n //getSingleEntryPayPeriodsAdminAjax,\r\n getAdminSingleEntryLocations,\r\n singleEntryFilterAdminList,\r\n getAddressByLatLong,\r\n getUserSingleEntryLocationsForPayPeriod,\r\n getSingleEntryUsersWC,\r\n getLocationsAndResidences,\r\n getEvvReasonCodes,\r\n getEvvEligibility,\r\n getEvvEligibilityAsync,\r\n getExistingTimeEntry\r\n };\r\n})();\r\n","const timeEntryDetailsPopup = (function() {\r\n let consumerSection;\r\n let loadingSection;\r\n let transportationSection;\r\n\r\n function buildConsumerSection(consumers) {\r\n consumerSection.innerHTML = '
    Consumers
    '\r\n let consumerArr = []\r\n consumers.forEach(consumer => {\r\n const lastName = consumer.consumername.split(\",\")[1];\r\n const firstName = consumer.consumername.split(\",\")[0];\r\n let consumerString = `${lastName}, ${firstName}`;\r\n consumerString = consumerString.trim();\r\n consumerArr.push(consumerString);\r\n });\r\n consumerArr.sort(function (a, b) {\r\n return a.toLowerCase().localeCompare(b.toLowerCase());\r\n });\r\n consumerArr.forEach(consumer => {\r\n const consumerDiv = document.createElement('div');\r\n consumerDiv.classList.add('consumerRow');\r\n consumerDiv.innerHTML = consumer;\r\n consumerSection.appendChild(consumerDiv)\r\n })\r\n }\r\n\r\n function buildTransportationSection(ed) {\r\n entryData = ed[0]\r\n transportationSection.innerHTML = ''\r\n if (entryData.Transportation_Units === '' && entryData.licensePlateNumber === '') return;\r\n let trans_type = entryData.Transportation_reimbursable === \"N\" ? \"Company\" : \"Personal\";\r\n let trans_milage = entryData.Transportation_Units;\r\n let trans_odStart = entryData.odometerstart;\r\n let trans_odEnd = entryData.odometerend;\r\n let trans_destination = entryData.destination;\r\n let trans_licenseplate = entryData.licensePlateNumber;\r\n let trans_reason = entryData.reason;\r\n\r\n transportationSection.innerHTML = `\r\n
    Transportation
    \r\n
    Transportation Type: ${trans_type}
    \r\n ${trans_odStart !== \"\" ? `
    Odometer Start: ${trans_odStart}
    ` : \"\"}\r\n ${trans_odEnd !== \"\" ? `
    Odometer End: ${trans_odEnd}
    ` : \"\"}\r\n
    Total Miles: ${trans_milage}
    \r\n ${trans_licenseplate !== \"\" ? `
    License Plate: ${trans_licenseplate}
    ` : \"\"}\r\n ${trans_destination !== \"\" ? `
    Destination: ${trans_destination}
    ` : \"\"}\r\n ${trans_reason !== \"\" ? `
    Reason: ${trans_reason}
    ` : \"\"}\r\n `\r\n }\r\n\r\n function init(entryId, consumersPresent) {\r\n consumerSection = document.getElementById(\"consumerDisplay\")\r\n loadingSection = document.getElementById(\"loadingDisplay\")\r\n transportationSection = document.getElementById(\"transportationDisplay\")\r\n let entryData = null\r\n let consumers = null\r\n\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(loadingSection, \"Gathering Additional Information...\")\r\n let promises = [];\r\n\r\n const getSEData = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n entryData = results;\r\n resolve(\"gotSEData\");\r\n });\r\n });\r\n promises.push(getSEData);\r\n const getSEConsumers = new Promise((resolve, reject) => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, resConsumers => {\r\n consumers = resConsumers;\r\n resolve(\"gotConsumers\");\r\n });\r\n });\r\n if (consumersPresent !== \"0\") promises.push(getSEConsumers);\r\n\r\n Promise.all(promises).then(() => {\r\n PROGRESS__ANYWHERE.SPINNER.hide()\r\n buildTransportationSection(entryData, consumers)\r\n if (consumersPresent !== \"0\") buildConsumerSection(consumers)\r\n });\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const TRANS_mainLanding = (function() {\r\n //TRANSPORTATION SHARED DATA\r\n let drivers, inspectionCategories, vehicles, locations, altAddresses;\r\n\r\n function loadTransportationLanding(params) {\r\n const myRoutesBtn = button.build({\r\n text: 'MY ROUTES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n TRANS_myRoute.init()\r\n }\r\n })\r\n const manageRoutesBtn = button.build({\r\n text: 'MANAGE ROUTES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_manageRoutes.init()\r\n })\r\n const newRouteBtn = button.build({\r\n text: 'ADD NEW ROUTE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_addRoute.init()\r\n })\r\n const vehicleInspectionBtn = button.build({\r\n text: 'VEHICLE INSPECTION',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_vehicleInspectionLanding.init()\r\n })\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(myRoutesBtn);\r\n if ($.session.transportationManageRoute === true ) btnWrap.appendChild(manageRoutesBtn);\r\n if ($.session.transportationAddRoute === true ) btnWrap.appendChild(newRouteBtn);\r\n btnWrap.appendChild(vehicleInspectionBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function getCategories() {\r\n return inspectionCategories\r\n }\r\n function getVehicles() {\r\n return new Map([...vehicles].filter(([k,v]) => v.Active === 'Y'))\r\n }\r\n function getLocations() {\r\n return locations\r\n }\r\n function getAlternateAddress(consumerId) {\r\n return altAddresses.get(consumerId)\r\n }\r\n\r\n function updateAltAddress() {\r\n TRANS_mainLandingAjax.getAltAddresses().then(res => {\r\n const tempAltAddresses = res.getAlternateAddressesResult\r\n let tempAltAddressesMap = new Map();\r\n tempAltAddresses.forEach(address => {\r\n if (tempAltAddressesMap.has(address.consumerId)) {\r\n const addArr = tempAltAddressesMap.get(address.consumerId);\r\n addArr.push(address);\r\n tempAltAddressesMap.set(address.consumerId, addArr)\r\n } else {\r\n tempAltAddressesMap.set(address.consumerId, [address]);\r\n }\r\n })\r\n altAddresses = tempAltAddressesMap;\r\n })\r\n }\r\n\r\n function getAllDrivers(filteredDate) {\r\n // Pass Date Object as filtered Date\r\n if (!filteredDate) filteredDate = UTIL.getTodaysDate(true)\r\n return new Map(\r\n [...drivers].filter(([k,v]) => {\r\n const catEndDate = new Date(v.catEndDate)\r\n const catStartDate = new Date(v.catStartDate)\r\n const termDate = new Date(v.termDate)\r\n return (\r\n (catEndDate >= filteredDate || v.catEndDate === \"\") &&\r\n (termDate >= filteredDate || v.termDate === \"\") && \r\n (catStartDate <= filteredDate)\r\n )\r\n })\r\n )\r\n }\r\n\r\n function driverLookup(id) {\r\n return drivers.get(id)\r\n }\r\n function vehicleLookup(id) {\r\n const ret = vehicles.has(id) ? vehicles.get(id) : 'Non-Existant Vehicle!';\r\n if (ret === 'Non-Existant Vehicle!' && id !== '%') console.error(`Vehicle ID: ${id} does not exist in the database!`)\r\n return ret\r\n }\r\n function locationLookup(id) {\r\n return locations.get(id)\r\n }\r\n function vehicleFilteredLookup(id) {\r\n return vehicles.get(id)\r\n }\r\n\r\n async function getData() {\r\n PROGRESS.init()\r\n PROGRESS.SPINNER.show('Gathering Data...')\r\n function gatherComplete(res) {\r\n const tmpDrivers = res[0].getDriversResult\r\n const tempCategories = res[1].getInspectionCategoriesResult\r\n const tempVehicles = res[2].getVehicleDropdownResult\r\n const tempLocations = res[3].getLocationsJSONResult\r\n const tempAltAddresses = res[4].getAlternateAddressesResult\r\n\r\n let tmpDriversMap = new Map();\r\n let tempCategoriesMap = new Map();\r\n let tempVehiclesMap = new Map();\r\n let tempLocationsMap = new Map();\r\n let tempAltAddressesMap = new Map();\r\n\r\n tmpDrivers.forEach(driver => {\r\n tmpDriversMap.set(driver.Person_ID, driver);\r\n })\r\n tempCategories.forEach(category => {\r\n tempCategoriesMap.set(category.categoryID, {desc: category.description, allowNA: category.allowNA});\r\n })\r\n tempVehicles.forEach(vehicle => {\r\n tempVehiclesMap.set(vehicle.vehicleInformationId, vehicle);\r\n })\r\n tempLocations.forEach(location => {\r\n // Only N residence locaitons\r\n if (location.Residence === 'N') tempLocationsMap.set(location.ID, location);\r\n })\r\n tempAltAddresses.forEach(address => {\r\n if (tempAltAddressesMap.has(address.consumerId)) {\r\n const addArr = tempAltAddressesMap.get(address.consumerId);\r\n addArr.push(address);\r\n tempAltAddressesMap.set(address.consumerId, addArr)\r\n } else {\r\n tempAltAddressesMap.set(address.consumerId, [address]);\r\n }\r\n })\r\n\r\n drivers = tmpDriversMap;\r\n inspectionCategories = tempCategoriesMap;\r\n vehicles = tempVehiclesMap;\r\n locations = tempLocationsMap;\r\n altAddresses = tempAltAddressesMap;\r\n }\r\n\r\n const promises = []\r\n\r\n const driversProm = TRANS_mainLandingAjax.getDrivers()\r\n promises.push(driversProm)\r\n const categoryProm = TRANS_vehicleInspectionAjax.getInspectionCategories()\r\n promises.push(categoryProm)\r\n const vehicleProm = TRANS_mainLandingAjax.getVehicles()\r\n promises.push(vehicleProm);\r\n const locationProm = rosterAjax.getRosterLocations()\r\n promises.push(locationProm)\r\n const altAddressProm = TRANS_mainLandingAjax.getAltAddresses()\r\n promises.push(altAddressProm)\r\n\r\n await Promise.all(promises)\r\n .then(res => gatherComplete(res))\r\n .catch(err => console.error('ERROR GATHERING DATA! MODULE WILL NOT WORK PROPERLY: ' + err))\r\n }\r\n\r\n async function init() {\r\n if (!drivers || !vehicles || !inspectionCategories) {\r\n await getData()\r\n }\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadTransportationLanding()\r\n if ($.session.transportationUpdate === false) console.info('User does not have update permissions. My Route and Vehicle Inspections will be read only')\r\n }\r\n return {\r\n init,\r\n getAllDrivers,\r\n driverLookup,\r\n getCategories,\r\n getVehicles,\r\n vehicleLookup,\r\n getLocations,\r\n getAlternateAddress,\r\n locationLookup,\r\n vehicleFilteredLookup,\r\n updateAltAddress\r\n }\r\n})();","const TRANS_mainLandingAjax = (function() {\r\n\r\n function getDrivers() {\r\n const data = {\r\n token: $.session.Token\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDrivers/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function getVehicles() {\r\n const data = {\r\n token: $.session.Token,\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getVehicleDropdown/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function getAltAddresses() {\r\n const data = {\r\n token: $.session.Token,\r\n consumerId: \"%\"\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getAlternateAddresses/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getDrivers,\r\n getVehicles,\r\n getAltAddresses\r\n }\r\n})();","const WaitingList = (() => {\r\n function unload() {\r\n _DOM.ACTIONCENTER.removeAttribute('data-ui');\r\n WaitingListAssessment.unload();\r\n }\r\n\r\n async function load() {\r\n _DOM.ACTIONCENTER.innerHTML = '';\r\n _DOM.ACTIONCENTER.setAttribute('data-UI', true);\r\n _DOM.setActiveModuleAttribute('waitingList');\r\n\r\n moduleWrapEle = _DOM.createElement('div', { class: 'waitingList' });\r\n moduleHeaderEle = _DOM.createElement('div', { class: 'waitingList__header' });\r\n moduleBodyEle = _DOM.createElement('div', { class: 'waitingList__body' });\r\n\r\n moduleWrapEle.appendChild(moduleHeaderEle);\r\n moduleWrapEle.appendChild(moduleBodyEle);\r\n _DOM.ACTIONCENTER.appendChild(moduleWrapEle);\r\n\r\n WaitingListOverview.init({ moduleHeader: moduleHeaderEle, moduleBody: moduleBodyEle });\r\n }\r\n\r\n return {\r\n init: load,\r\n unload,\r\n };\r\n})();\r\n","const WaitingListAssessment = (() => {\r\n //--------------------------\r\n // SESSION DATA\r\n //--------------------------\r\n let isNewAssessment = true;\r\n let selectedConsumer;\r\n let wlData;\r\n let wlLinkID;\r\n let wlCircID;\r\n let wlNeedID;\r\n let wlDocuments;\r\n let wlParticipants;\r\n let maxQueueSize = 5;\r\n let isFormComplete;\r\n let isAssessmentComplete;\r\n //--------------------------\r\n // DOM\r\n //--------------------------\r\n let assessmentWrap;\r\n let tableOfContents;\r\n let contributingCircumstancesWrap;\r\n let needsWrap;\r\n let tocLinks;\r\n let doucmentsList;\r\n //--------------------------\r\n // UI INSTANCES\r\n //--------------------------\r\n let updateQueue;\r\n let backButton;\r\n let consumerCard;\r\n let wlForms;\r\n let participantsTable;\r\n let sendEmailButton;\r\n let sendEmailPopup;\r\n let sendEmailForm;\r\n let documentsButton;\r\n let documentsForm;\r\n let documentsPopup;\r\n\r\n const sections = {\r\n waitingListInfo: {\r\n name: 'Waiting List Information',\r\n dbtable: 'WLA_Waiting_List_Information',\r\n enabled: true,\r\n formElements: [\r\n {\r\n id: 'interviewDate',\r\n type: 'date',\r\n label: 'Interview Date',\r\n required: true,\r\n },\r\n {\r\n id: 'personCompleting',\r\n label: 'Name of person completing assessment',\r\n type: 'text',\r\n required: true,\r\n },\r\n {\r\n id: 'personCompletingTitle',\r\n label: 'Title of person completing assessment',\r\n type: 'text',\r\n required: true,\r\n },\r\n {\r\n id: 'currentLivingArrangement',\r\n label: 'Describe the current living arrangement',\r\n type: 'select',\r\n required: true,\r\n data: [\r\n { value: '', text: '' },\r\n { value: 'Lives Alone', text: 'Lives Alone' },\r\n { value: 'Lives with Family or Other Caregivers', text: 'Lives with Family or Other Caregivers' },\r\n { value: 'Lives With Others Who Are Not Caregivers', text: 'Lives With Others Who Are Not Caregivers' },\r\n { value: 'Lives in an Intermediate Care Facility', text: 'Lives in an Intermediate Care Facility' },\r\n { value: 'Lives in a Nursing Facility', text: 'Lives in a Nursing Facility' },\r\n { value: 'Other', text: 'Other' },\r\n ],\r\n },\r\n {\r\n id: 'livingArrangementOther',\r\n label: 'Describe Other Living Arrangement',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n id: 'areasPersonNeedsHelp',\r\n label: 'In what areas does person report needing help?',\r\n fullscreen: true,\r\n type: 'textarea',\r\n required: true,\r\n },\r\n ],\r\n },\r\n participants: {\r\n name: 'Participants',\r\n enabled: true,\r\n },\r\n conditions: {\r\n name: 'Conditions',\r\n dbtable: 'WLA_Conditions',\r\n enabled: true,\r\n formElements: [\r\n {\r\n id: 'otherThanMentalHealth',\r\n type: 'radiogroup',\r\n required: true,\r\n groupLabel: `Does this person have a condition that is attributable to a mental or physical impairment or combination of mental and physical impairments, other than an impairment caused solely by mental illness?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'otherThanMentalHealthyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'otherThanMentalHealthno' },\r\n ],\r\n },\r\n {\r\n id: 'before22',\r\n type: 'radiogroup',\r\n required: true,\r\n groupLabel: `Was the condition present before age 22?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'before22yes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'before22no' },\r\n ],\r\n },\r\n {\r\n id: 'isConditionIndefinite',\r\n type: 'radiogroup',\r\n required: true,\r\n groupLabel: `Is the condition likely to continue indefinitely?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isConditionIndefiniteyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isConditionIndefiniteno' },\r\n ],\r\n },\r\n ],\r\n },\r\n currentAvailableServices: {\r\n name: 'Current/Available Services',\r\n dbtable: 'WLA_Active_Services',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'isCountyBoardFunding',\r\n groupLabel: 'County Board services / funding',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isCountyBoardFundingyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isCountyBoardFundingno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOhioEarlyInterventionService',\r\n groupLabel: 'Help Me Grow / Ohio Early Intervention',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOhioEarlyInterventionServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOhioEarlyInterventionServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isBCMHService',\r\n groupLabel: 'Bureau for Children with Medical Handicaps',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isBCMHServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isBCMHServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isFCFCService',\r\n groupLabel: 'Family and Children First Council',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isFCFCServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isFCFCServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isODEService',\r\n groupLabel: 'Ohio Department of Education',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isODEServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isODEServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOODService',\r\n groupLabel: 'Vocational Rehabilitation / Opportunities for Ohioans with Disabilities',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOODServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOODServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isChildrenServices',\r\n groupLabel: 'Children Services',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isChildrenServicesyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isChildrenServicesno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMedicaidStatePlanHomeHealthAideservice',\r\n groupLabel: 'Medicaid State Plan Home Health Aide',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMedicaidStatePlanHomeHealthAideserviceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMedicaidStatePlanHomeHealthAideserviceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMedicaidStatePlanHomeHealthNursingService',\r\n groupLabel: 'Medicaid State Plan Home Health Nursing',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMedicaidStatePlanHomeHealthNursingServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMedicaidStatePlanHomeHealthNursingServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMedicaidStatePlanService',\r\n groupLabel: 'Medicaid State Plan Private Duty Nursing',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMedicaidStatePlanServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMedicaidStatePlanServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOhioHomeCareWaiverservice',\r\n groupLabel: 'Ohio Home Care Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOhioHomeCareWaiverserviceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOhioHomeCareWaiverserviceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isPassportWaiverService',\r\n groupLabel: 'PASSPORT Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isPassportWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isPassportWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isAssistedLivingWaiverService',\r\n groupLabel: 'Assisted Living Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isAssistedLivingWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isAssistedLivingWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isMYCarewaiverService',\r\n groupLabel: 'MyCare Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isMYCarewaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isMYCarewaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isSelfWaiverService',\r\n groupLabel: 'Self-Empowered Life Funding Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isSelfWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isSelfWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isLevelOneWaiverService',\r\n groupLabel: 'Level One Waiver',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isLevelOneWaiverServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isLevelOneWaiverServiceno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isOtherService',\r\n groupLabel: 'Other',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isOtherServiceyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isOtherServiceno' },\r\n ],\r\n },\r\n {\r\n label: 'Other:',\r\n id: 'otherDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n contributingCircumstances: {\r\n name: 'Contributing Circumstances',\r\n enabled: false,\r\n children: [\r\n 'primaryCaregiver',\r\n 'needs',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n ],\r\n },\r\n primaryCaregiver: {\r\n name: 'Primary Caregiver',\r\n dbtable: 'WLA_Primary_Caregivers',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'isPrimaryCaregiverUnavailable',\r\n required: true,\r\n groupLabel:\r\n 'Is there evidence that the primary caregiver has a declining or chronic condition or is facing other unforeseen circumstances that will limit his or her ability to care for the individual?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isPrimaryCaregiverUnavailableyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isPrimaryCaregiverUnavailableno' },\r\n ],\r\n },\r\n {\r\n label:\r\n 'List documentation used to verify presence of declining or chronic condition or unforeseen circumstances.',\r\n id: 'unavailableDocumentation',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isActionRequiredIn30Days',\r\n groupLabel: `Is action required within the next 30 days due to the caregiver's inability to care for the individual?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isActionRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isActionRequiredIn30Daysno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: 'Describe the action required:',\r\n id: 'actionRequiredDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'isIndividualSkillsDeclined',\r\n groupLabel: `Is there evidence of declining skills the individual has experienced as a result of either the caregiver's condition or insufficient caregivers to meet the individual's current needs?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'isIndividualSkillsDeclinedyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'isIndividualSkillsDeclinedno' },\r\n ],\r\n disabled: true,\r\n },\r\n {\r\n label: `List documentation used to verify presence of caregiver's condition, if not already described above: `,\r\n id: 'declinedSkillsDocumentation',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: 'Describe decline:',\r\n id: 'declinedSkillsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: 'Additional comments:',\r\n id: 'additionalCommentsForUnavailable',\r\n fullscreen: true,\r\n type: 'textarea',\r\n },\r\n ],\r\n },\r\n needs: {\r\n name: 'Needs',\r\n enabled: false,\r\n },\r\n behavioral: {\r\n name: 'Behavioral',\r\n dbtable: 'WLA_Risks',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'risksIsRiskToSelf',\r\n groupLabel:\r\n 'Is the individual a child / adult currently engaging in a pattern of behavior that creates a substantial risk to self / others?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'risksIsRiskToSelfyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'risksIsRiskToSelfno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'risksIs',\r\n groupLabel: 'Check all that apply:',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there is currently no pattern of behavior that creates a substantial risk.',\r\n id: 'risksIsNone',\r\n },\r\n { type: 'checkbox', label: 'Physical Aggression', id: 'risksIsPhysicalAggression' },\r\n { type: 'checkbox', label: 'Self-Injury', id: 'risksIsSelfInjury' },\r\n { type: 'checkbox', label: 'Fire-setting', id: 'risksIsFireSetting' },\r\n { type: 'checkbox', label: 'Elopement', id: 'risksIsElopement' },\r\n { type: 'checkbox', label: 'Sexual Offending', id: 'risksIsSexualOffending' },\r\n { type: 'checkbox', label: 'Other', id: 'risksIsOther' },\r\n ],\r\n required: true,\r\n },\r\n {\r\n label: 'Describe type, frequency, and intensity of behavioral needs:',\r\n id: 'risksFrequencyDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'risksHas',\r\n groupLabel: 'Documentation available (Select at least one):',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there is currently no pattern of behavior that creats a substantial risk',\r\n id: 'risksHasNoDocument',\r\n },\r\n { type: 'checkbox', label: 'Police Report(s)', id: 'risksHasPoliceReport' },\r\n { type: 'checkbox', label: 'Incident Report(s)', id: 'risksHasIncidentReport' },\r\n { type: 'checkbox', label: 'Behavior Tracking Sheets(s)', id: 'risksHasBehaviorTracking' },\r\n { type: 'checkbox', label: 'Psychological Assessment', id: 'risksHasPsychologicalAssessment' },\r\n { type: 'checkbox', label: 'Other', id: 'risksHasOtherDocument' },\r\n ],\r\n required: true,\r\n },\r\n {\r\n label: 'Other:',\r\n id: 'risksOtherDocumentDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n physical: {\r\n name: 'Physical',\r\n dbtable: 'WLA_Physical_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'physicalNeedsIsPhysicalCareNeeded',\r\n groupLabel: 'Is the individual a child / adult with significant physical care needs?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'physicalNeedsIsPhysicalCareNeededyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'physicalNeedsIsPhysicalCareNeededno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'physicalNeeds',\r\n groupLabel: 'Check all that apply:',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there are no significant physical care needs',\r\n id: 'physicalNeedsIsNone',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Frequent hands-on support required with activities of daily living throughout the day and night',\r\n id: 'physicalNeedsIsPersonalCareNeeded',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Size / Condition of the individual creates a risk of injury during physical care',\r\n id: 'physicalNeedsIsRiskDuringPhysicalCare',\r\n },\r\n { type: 'checkbox', label: 'Other', id: 'physicalNeedsIsOther' },\r\n ],\r\n required: true,\r\n },\r\n {\r\n label: 'Describe type, frequency, and intensity of physical care needs:',\r\n id: 'physicalNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n medical: {\r\n name: 'Medical',\r\n dbtable: 'WLA_Medical_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'medicalNeedsIsLifeThreatening',\r\n groupLabel: 'Is the individual a child / adult with significant or life-threatening medical needs?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'medicalNeedsIsLifeThreateningyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'medicalNeedsIsLifeThreateningno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'medicalNeeds',\r\n required: true,\r\n groupLabel: ' (Check all that apply)',\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label: 'Not applicable; there are no significant or life-threatening medical needs',\r\n id: 'medicalNeedsIsNone',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Frequent hospitalizations or emergency room visits for life-sustaining treatment',\r\n id: 'medicalNeedsIsFrequentEmergencyVisit',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'Ongoing medical care provided by caregivers to prevent hospitalization or emergency room intervention',\r\n id: 'medicalNeedsIsOngoingMedicalCare',\r\n },\r\n {\r\n type: 'checkbox',\r\n label: 'Need for specialized training of caregivers to prevent emergency medical intervention',\r\n id: 'medicalNeedsIsSpecializedCareGiveNeeded',\r\n },\r\n { type: 'checkbox', label: 'Other', id: 'medicalNeedsIsOther' },\r\n ],\r\n },\r\n {\r\n label: 'Describe type, frequency, and intensity of medical needs:',\r\n id: 'medicalNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n other: {\r\n name: 'Other',\r\n dbtable: 'WLA_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'needsIsActionRequiredRequiredIn30Days',\r\n groupLabel:\r\n 'Is action required within the next 30 days to reduce the risk(s) presented by the behavioral, physical, and / or medical needs?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'needsIsActionRequiredRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'needsIsActionRequiredRequiredIn30Daysno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'needsIsContinuousSupportRequired',\r\n groupLabel:\r\n 'If No, do the significant behavioral, physical care, and / or medical needs identified require continuous support to reduce risk?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'needsIsContinuousSupportRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'needsIsContinuousSupportRequiredno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n riskMitigation: {\r\n name: 'Risk Mitigation',\r\n dbtable: 'WLA_Risk_Mitigations',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'rMIsSupportNeeded',\r\n groupLabel:\r\n 'Is the individual an adult who has been subjected to abuse, neglect, or exploitation and requires support to reduce risk?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rMIsSupportNeededyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rMIsSupportNeededno' },\r\n ],\r\n },\r\n {\r\n type: 'checkboxgroup',\r\n id: 'rMIs',\r\n required: true,\r\n groupLabel: 'There is currently an open investigation with: (Check all that apply):',\r\n fields: [\r\n { type: 'checkbox', label: 'Not applicable; there is currently no open investigation', id: 'rMIsNone' },\r\n { type: 'checkbox', label: 'Adult Protective Services', id: 'rMIsAdultProtectiveServiceInvestigation' },\r\n { type: 'checkbox', label: 'County Board', id: 'rMIsCountyBoardInvestigation' },\r\n { type: 'checkbox', label: 'Law Enforcement', id: 'rMIsLawEnforcementInvestigation' },\r\n { type: 'checkbox', label: 'Other', id: 'rMIsOtherInvestigation' },\r\n ],\r\n },\r\n {\r\n label: 'Describe incident under investigation and supports needed to reduce the risk:',\r\n id: 'rMdescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rMIsActionRequiredIn3oDays',\r\n groupLabel: 'Is action required within the next 30 days to reduce risk?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rMIsActionRequiredIn3oDaysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rMIsActionRequiredIn3oDaysno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n icfDischarge: {\r\n name: 'ICF Discharge',\r\n dbtable: 'WLA_ICF_Discharges',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'icfDetermination',\r\n groupLabel:\r\n 'Is the individual a resident of an ICFIID or Nursing Facility who has either been issued a 30-day notice of intent to discharge or received an adverse Resident Review determination?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'icfIsICFResident',\r\n required: true,\r\n groupLabel: 'Is the individual currently a resident of an ICFIID or Nursing Facility?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfIsICFResidentyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfIsICFResidentno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'icfIsNoticeIssued',\r\n required: true,\r\n groupLabel:\r\n 'Has the individual been issued a 30-day notice of intent to discharge or received an adverse Resident Review determination?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfIsNoticeIssuedyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfIsNoticeIssuedno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'icfIsActionRequiredIn30Days',\r\n required: true,\r\n groupLabel: 'Is action required with the next 30 days to reduce the risk?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'icfIsActionRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'icfIsActionRequiredIn30Daysno' },\r\n ],\r\n },\r\n ],\r\n },\r\n intermittentSupports: {\r\n name: 'Intermittent Supports',\r\n dbtable: 'WLA_Intermitent_Supports',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'intSupDetermination',\r\n groupLabel:\r\n 'Does the individual have an ongoing need for limited / intermittent supports to address behavioral, physical, or medical needs in order to sustain existing caregivers and remain in the current living with.',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'intSupIsSupportNeededIn12Months',\r\n required: true,\r\n groupLabel: 'Does the individual have a need for limited or intermittent supports within the next 12 months?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupIsSupportNeededIn12Monthsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupIsSupportNeededIn12Monthsno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'intSupIsStayingLivingArrangement',\r\n required: true,\r\n groupLabel: 'Does the individual desire to remain in the current living environment?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupIsStayingLivingArrangementyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupIsStayingLivingArrangementno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'intSupIsActionRequiredIn30Days',\r\n required: true,\r\n groupLabel:\r\n 'Are existing caregivers willing AND able to continue to provide supports, if some relief were provided?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'intSupIsActionRequiredIn30Daysyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'intSupIsActionRequiredIn30Daysno' },\r\n ],\r\n },\r\n ],\r\n },\r\n childProtectionAgency: {\r\n name: 'Child Protection Agency',\r\n dbtable: 'WLA_Child_Protection_Agencies',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'cpaDetermination',\r\n groupLabel:\r\n 'Is the individual reaching the age of majority and being released from the custody of a child protective agency within the next 12 months and has needs that cannot be addressed through alternative services?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'cpaDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'cpaDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'cpaIsReleasedNext12Months',\r\n required: true,\r\n groupLabel:\r\n 'Is the individual being released from the custody of a child protective agency within the next 12 months? ',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'cpaIsReleasedNext12Monthsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'cpaIsReleasedNext12Monthsno' },\r\n ],\r\n },\r\n {\r\n id: 'cpaAnticipateDate',\r\n type: 'date',\r\n label: 'Anticipated Date',\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'cpaHasUnaddressableNeeds',\r\n required: true,\r\n groupLabel: 'Does the individual have needs that cannot be addressed through alternative services?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'cpaHasUnaddressableNeedsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'cpaHasUnaddressableNeedsno' },\r\n ],\r\n },\r\n ],\r\n },\r\n adultDayEmployment: {\r\n name: 'Adult Day/Employment',\r\n dbtable: 'WLA_Require_Waiver_Fundings',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'rwfWaiverFundingRequired',\r\n groupLabel: 'Does the individual require waiver funding for adult day or employment-related services?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfWaiverFundingRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfWaiverFundingRequiredno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rwfNeedsMoreFrequency',\r\n required: true,\r\n groupLabel:\r\n 'Are the needed services required at a level or frequency that exceeds what is able to be sustained through local County Board resources',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfNeedsMoreFrequencyyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfNeedsMoreFrequencyno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rwfNeedsServiceNotMetIDEA',\r\n required: true,\r\n groupLabel:\r\n 'Are the needed services beyond what is available to the individual through the local school district / Individuals with Disabilities Education Act?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfNeedsServiceNotMetIDEAyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfNeedsServiceNotMetIDEAno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'rwfNeedsServicesNotMetOOD',\r\n required: true,\r\n groupLabel:\r\n 'Are the needed services beyond what is available to the individual through Vocational Rehabilitation / Opportunities for Ohioans with Disabilities or other resources?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'rwfNeedsServicesNotMetOODyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'rwfNeedsServicesNotMetOODno' },\r\n ],\r\n },\r\n ],\r\n },\r\n dischargePlan: {\r\n name: 'Discharge Plan',\r\n dbtable: 'WLA_Discharge_Plans',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'dischargeDetermination',\r\n groupLabel:\r\n 'Does the individual have a viable discharge plan from the current facility in which he / she resides?',\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeDeterminationyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeDeterminationno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'dischargeIsICFResident',\r\n required: true,\r\n groupLabel: 'Is the individual currently a resident of an ICFIID or Nursing Facility?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeIsICFResidentyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeIsICFResidentno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'dischargeIsInterestedInMoving',\r\n required: true,\r\n groupLabel:\r\n 'Has the individual / guardian expressed an interest in moving to a community-based setting within the next 12 months?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeIsInterestedInMovingyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeIsInterestedInMovingno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'dischargeHasDischargePlan',\r\n required: true,\r\n groupLabel: `Is the individual's team developing a discharge plan that addresses barries to community living, such as housing and availability of providers?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'dischargeHasDischargePlanyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'dischargeHasDischargePlanno' },\r\n ],\r\n },\r\n ],\r\n },\r\n immediateNeeds: {\r\n name: 'Immediate Needs',\r\n dbtable: 'WLA_Immediate_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'immNeedsRequired',\r\n required: true,\r\n groupLabel: `Is there an immediate need identified that requires an action plan with 30 days to reduce the risk?`,\r\n note: 'This will be selected automatically as the information below is entered.',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'immNeedsRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'immNeedsRequiredno' },\r\n ],\r\n disabled: true,\r\n },\r\n {\r\n label: `if \"Yes\", describe the immediate need:`,\r\n id: 'immNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n required: true,\r\n disabled: true,\r\n },\r\n ],\r\n },\r\n currentNeeds: {\r\n name: 'Current Needs',\r\n dbtable: 'WLA_Unmet_Needs',\r\n enabled: false,\r\n formElements: [\r\n {\r\n disabled: true,\r\n type: 'radiogroup',\r\n id: 'unmetNeedsHas',\r\n groupLabel: 'Does the individual have an identified need?',\r\n note: 'This will be selected automatically as the information above is entered.',\r\n required: true,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'unmetNeedsHasyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'unmetNeedsHasno' },\r\n ],\r\n },\r\n {\r\n type: 'radiogroup',\r\n id: 'unmetNeedsSupports',\r\n groupLabel: `If \"Yes\", will any of those needs be unmet by existing supports / resources within the next 12 months?`,\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'unmetNeedsSupportsyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'unmetNeedsSupportsno' },\r\n ],\r\n disabled: true,\r\n required: true,\r\n },\r\n {\r\n label: `if \"Yes\", describe the unmet need:`,\r\n id: 'unmetNeedsDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n waiverEnrollment: {\r\n name: 'Waiver Enrollment',\r\n dbtable: 'WLA_Waiver_Enrollments',\r\n enabled: false,\r\n formElements: [\r\n {\r\n type: 'radiogroup',\r\n id: 'waivEnrollWaiverEnrollmentIsRequired',\r\n required: true,\r\n groupLabel:\r\n 'Will the unmet immediate need or unmet current need require enrollment in a waiver due to the lack of community-based alternative services to address the need?',\r\n fields: [\r\n { type: 'radio', label: 'Yes', value: 'yes', id: 'waivEnrollWaiverEnrollmentIsRequiredyes' },\r\n { type: 'radio', label: 'No', value: 'no', id: 'waivEnrollWaiverEnrollmentIsRequiredno' },\r\n ],\r\n },\r\n {\r\n label: `If \"No\", describe the community-based alternative services that can address the unmet need:`,\r\n id: 'waivEnrollWaiverEnrollmentDescription',\r\n fullscreen: true,\r\n type: 'textarea',\r\n disabled: true,\r\n required: true,\r\n },\r\n ],\r\n },\r\n conclusion: {\r\n name: 'Conclusion',\r\n enabled: true,\r\n formElements: [\r\n {\r\n type: 'checkboxgroup',\r\n id: 'conclusions',\r\n groupLabel:\r\n 'The options below are selected automatically based on answers provided throughout the assessment.',\r\n disabled: true,\r\n fields: [\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual has unmet needs that require enrollment in a waiver at this time to address circumstances presenting an immediate risk of harm',\r\n id: 'conclusionUnmetNeeds',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual has needs that are likely to require waiver-funded supports within the next 12 months and will be placed on the waiting list for Home and Community-Based Services at this time.',\r\n id: 'conclusionWaiverFunded12Months',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual does not require waiver enrollment or placement on the waiting list for Home and Community-Based Services as either there are no assessed needs or alternate services are available to meet assessed needs.',\r\n id: 'conclusionDoesNotRequireWaiver',\r\n },\r\n {\r\n type: 'checkbox',\r\n label:\r\n 'The individual is not eligible for waiver enrollment or placement on the Waiting List for Home and Community-Based Services, as he/she has no qualifying condition.',\r\n id: 'conclusionNotEligibleForWaiver',\r\n },\r\n ],\r\n },\r\n {\r\n type: 'text',\r\n id: 'conclussionDeterminedBy',\r\n label: 'Name of person determining conclusion:',\r\n required: true,\r\n },\r\n {\r\n type: 'text',\r\n id: 'conclusionDeterminedByTitle',\r\n label: 'Title of person determining conclusion:',\r\n required: true,\r\n },\r\n {\r\n id: 'conclusionDeterminedOn',\r\n type: 'date',\r\n label: 'Date conclusion determined:',\r\n },\r\n {\r\n label: 'Anticipated Waiver Type',\r\n id: 'fundingSourceId',\r\n type: 'select',\r\n includeBlankOption: true,\r\n },\r\n ],\r\n },\r\n };\r\n const sectionResets = {\r\n currentAvailableServices: () => {\r\n wlForms['currentAvailableServices'].clear();\r\n\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].toggleDisabled(true);\r\n },\r\n primaryCaregiver: () => {\r\n wlForms['primaryCaregiver'].clear();\r\n\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(true);\r\n },\r\n behavioral: () => {\r\n wlForms['behavioral'].clear();\r\n\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].toggleDisabled(true);\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].toggleDisabled(true);\r\n\r\n // checkboxes set 1\r\n wlForms['behavioral'].inputs['risksIsNone'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsElopement'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksIsOther'].toggleDisabled(false);\r\n //\r\n wlForms['behavioral'].inputs['risksIsNone'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsElopement'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksIsOther'].toggleRequired(true);\r\n // checkbox set 2\r\n wlForms['behavioral'].inputs['risksHasNoDocument'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].toggleDisabled(false);\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].toggleDisabled(false);\r\n //\r\n wlForms['behavioral'].inputs['risksHasNoDocument'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].toggleRequired(true);\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].toggleRequired(true);\r\n },\r\n physical: () => {\r\n wlForms['physical'].clear();\r\n\r\n wlForms['physical'].inputs['physicalNeedsDescription'].toggleDisabled(true);\r\n\r\n // checkboxes\r\n wlForms['physical'].inputs['physicalNeedsIsNone'].toggleDisabled(false);\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].toggleDisabled(false);\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].toggleDisabled(false);\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].toggleDisabled(false);\r\n //\r\n wlForms['physical'].inputs['physicalNeedsIsNone'].toggleRequired(true);\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].toggleRequired(true);\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].toggleRequired(true);\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].toggleRequired(true);\r\n },\r\n medical: () => {\r\n wlForms['medical'].clear();\r\n\r\n wlForms['medical'].inputs['medicalNeedsDescription'].toggleDisabled(true);\r\n\r\n // checkboxes\r\n wlForms['medical'].inputs['medicalNeedsIsNone'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].toggleDisabled(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].toggleDisabled(false);\r\n //\r\n wlForms['medical'].inputs['medicalNeedsIsNone'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].toggleRequired(true);\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].toggleRequired(true);\r\n },\r\n other: () => {\r\n wlForms['other'].clear();\r\n\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].toggleDisabled(true);\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(true);\r\n },\r\n riskMitigation: () => {\r\n wlForms['riskMitigation'].clear();\r\n\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(true);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(true);\r\n\r\n // checkboxes\r\n wlForms['riskMitigation'].inputs['rMIsNone'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].toggleDisabled(false);\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].toggleDisabled(false);\r\n //\r\n wlForms['riskMitigation'].inputs['rMIsNone'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].toggleRequired(true);\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].toggleRequired(true);\r\n },\r\n icfDischarge: () => {\r\n wlForms['icfDischarge'].clear();\r\n },\r\n intermittentSupports: () => {\r\n wlForms['intermittentSupports'].clear();\r\n },\r\n childProtectionAgency: () => {\r\n wlForms['childProtectionAgency'].clear();\r\n\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].toggleDisabled(true);\r\n },\r\n adultDayEmployment: () => {\r\n wlForms['adultDayEmployment'].clear();\r\n },\r\n dischargePlan: () => {\r\n wlForms['dischargePlan'].clear();\r\n },\r\n immediateNeeds: () => {\r\n wlForms['immediateNeeds'].clear();\r\n\r\n wlForms['immediateNeeds'].inputs['immNeedsDescription'].toggleDisabled(true);\r\n },\r\n currentNeeds: () => {\r\n wlForms['currentNeeds'].clear();\r\n\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].toggleDisabled(true);\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(true);\r\n },\r\n waiverEnrollment: () => {\r\n wlForms['waiverEnrollment'].clear();\r\n\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].toggleDisabled(true);\r\n },\r\n };\r\n\r\n // UTILS\r\n //--------------------------------------------------\r\n async function unload() {\r\n await updateQueue.forceSendUpdates();\r\n\r\n selectedConsumer = undefined;\r\n wlData = undefined;\r\n wlLinkID = undefined;\r\n wlCircID = undefined;\r\n wlNeedID = undefined;\r\n wlDocuments = undefined;\r\n wlParticipants = undefined;\r\n }\r\n function findFieldTypeById(formElements, targetId) {\r\n let fieldtype;\r\n\r\n for (const element of formElements) {\r\n if (element.id === targetId) {\r\n fieldtype = element.type;\r\n break;\r\n }\r\n if (element.type === 'checkboxgroup') {\r\n if (element.fields.some(f => f.id === targetId)) {\r\n fieldtype = 'checkboxgroup';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return fieldtype;\r\n }\r\n function addNewDocumentToList({ documentId, fileName }) {\r\n const documentItem = _DOM.createElement('p', { class: 'docList__Item', text: fileName });\r\n const deleteIcon = Icon.getIcon('delete');\r\n documentItem.appendChild(deleteIcon);\r\n\r\n documentItem.addEventListener('click', async e => {\r\n if (e.target === deleteIcon) {\r\n await _UTIL.fetchData('deleteSupportingDocument', { attachmentId: documentId });\r\n return;\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute(\r\n 'action',\r\n `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewWaitingListAttachment/`,\r\n );\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', () => {});\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', documentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n });\r\n\r\n doucmentsList.appendChild(documentItem);\r\n }\r\n function toggleTocLinksDisabledStatus(links, disable) {\r\n links.forEach(link => {\r\n tocLinks[link].classList.toggle('hiddenPage', disable);\r\n });\r\n }\r\n function updateFormCompletionStatus(formName) {\r\n const requiredInputs = [\r\n ...wlForms[formName].form.querySelectorAll(\r\n 'input:required:not([disabled]), select:required:not([disabled]), textarea:required:not([disabled])',\r\n ),\r\n ];\r\n\r\n isFormComplete = true;\r\n if (requiredInputs.length) {\r\n isFormComplete = requiredInputs.map(input => input.checkValidity()).every(isValid => isValid);\r\n }\r\n\r\n tocLinks[formName].classList.toggle('formComplete', isFormComplete);\r\n }\r\n function checkIsAssessmentComplete() {\r\n const incompleteSections = Object.values(tocLinks).filter(link => {\r\n return (\r\n !link.classList.contains('hiddenPage') &&\r\n !link.classList.contains('formComplete') &&\r\n !link.classList.contains('parent') &&\r\n !link.classList.contains('conclusion')\r\n );\r\n });\r\n\r\n isAssessmentComplete = incompleteSections.length > 0 ? false : true;\r\n }\r\n function toggleSendEmailDisabledStatus() {\r\n // refactor to use the new variable isAssessmentComplete\r\n const incompleteSections = Object.values(tocLinks).filter(link => {\r\n return (\r\n !link.classList.contains('hiddenPage') &&\r\n !link.classList.contains('formComplete') &&\r\n !link.classList.contains('parent')\r\n );\r\n });\r\n\r\n if (!$.session.waitingListUpdate) {\r\n sendEmailButton.toggleDisabled(true);\r\n return;\r\n }\r\n\r\n sendEmailButton.toggleDisabled(incompleteSections.length > 0 && !$.session.sendWaitingListEmail);\r\n }\r\n\r\n // DATA\r\n //--------------------------------------------------\r\n function setAnswerValueForInsertUpdate(value, type) {\r\n if (value === '') return value;\r\n\r\n if (type === 'radio' || type === 'checkbox') {\r\n return value === 'yes' || value === 'on' ? 1 : 0;\r\n }\r\n\r\n return value;\r\n }\r\n function getLinkIdForInsertUpdate(formName, updateOrInsert) {\r\n if (['waitingListInfo', 'conclusion'].includes(formName)) {\r\n return updateOrInsert === 'U' ? 0 : wlLinkID;\r\n }\r\n\r\n if (['behavioral', 'physical', 'medical'].includes(formName)) {\r\n return wlNeedID;\r\n }\r\n\r\n if (\r\n [\r\n 'primaryCaregiver',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n 'other',\r\n ].includes(formName)\r\n ) {\r\n return wlCircID;\r\n }\r\n\r\n return wlLinkID;\r\n }\r\n async function getFundingSources() {\r\n const resp = await _UTIL.fetchData('getWaitingListFundingSources');\r\n const fundingSources = resp.getWaitingListFundingSourcesResult;\r\n return fundingSources.map(fs => {\r\n return {\r\n value: fs.fundingSourceId,\r\n text: fs.description,\r\n };\r\n });\r\n }\r\n async function saveDocument(attachDetails) {\r\n const resp = await _UTIL.fetchData('addWlSupportingDocument', {\r\n waitingListInformationId: wlLinkID,\r\n description: attachDetails.description,\r\n includeOnEmail: data['email'] === 'on' ? 'Y' : 'N',\r\n attachmentType: attachDetails.type,\r\n attachment: attachDetails.attachment,\r\n });\r\n return resp.addWLSupportingDocumentResult[0].supportingDocumentId;\r\n }\r\n //--------------------------------------------------\r\n async function insertNewWaitingListAssessment(consumerId) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id: 0,\r\n linkId: 0,\r\n propertyName: 'consumerId',\r\n value: consumerId,\r\n valueTwo: '',\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n }\r\n async function updateAssessmentData({ id, linkId = 0, propertyName, value, valueTwo = '' }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'U',\r\n });\r\n\r\n return data.insertUpdateWaitingListValueResult;\r\n }\r\n async function insertAssessmentData({ id, linkId, propertyName, value, valueTwo = '' }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n }\r\n async function insertUpdateAssessmentData({ name, formName, type, value }) {\r\n if (!wlFormInfo[formName].id) {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: getLinkIdForInsertUpdate(formName, 'I'),\r\n propertyName: name,\r\n value: setAnswerValueForInsertUpdate(value, type),\r\n });\r\n\r\n wlFormInfo[formName].id = resp[0].newRecordId;\r\n return;\r\n }\r\n\r\n updateQueue.addUpdate({\r\n id: name,\r\n data: {\r\n id: formName === 'other' ? wlNeedID : wlFormInfo[formName].id,\r\n linkId: getLinkIdForInsertUpdate(formName, 'U'),\r\n propertyName: name,\r\n value: setAnswerValueForInsertUpdate(value, type),\r\n valueTwo: '',\r\n insertOrUpdate: 'U',\r\n },\r\n });\r\n }\r\n\r\n // REVIEW / EDIT\r\n //--------------------------------------------------\r\n function mapDataBySection(assessmentData) {\r\n if (!assessmentData) return '';\r\n\r\n wlLinkID = assessmentData.wlInfoId;\r\n wlCircID = assessmentData.circumstanceId;\r\n wlNeedID = assessmentData.needId;\r\n\r\n wlParticipants = {};\r\n if (assessmentData.participants) {\r\n for (const participantData of assessmentData.participants.split('||')) {\r\n const particpant = participantData.split('|');\r\n wlParticipants[particpant[2]] = {\r\n id: particpant[2],\r\n values: [particpant[0], particpant[1]],\r\n };\r\n }\r\n }\r\n\r\n wlFormInfo['waitingListInfo'].id = wlLinkID;\r\n wlFormInfo['conditions'].id = assessmentData.conditionId;\r\n wlFormInfo['currentAvailableServices'].id = assessmentData.activeServiceId;\r\n wlFormInfo['primaryCaregiver'].id = assessmentData.primaryCaregiverId;\r\n wlFormInfo['behavioral'].id = assessmentData.riskId;\r\n wlFormInfo['physical'].id = assessmentData.physicalNeedId;\r\n wlFormInfo['medical'].id = assessmentData.medicalNeedId;\r\n wlFormInfo['other'].id = wlNeedID;\r\n wlFormInfo['riskMitigation'].id = assessmentData.riskMitigationId;\r\n wlFormInfo['icfDischarge'].id = assessmentData.icfDischargeId;\r\n wlFormInfo['intermittentSupports'].id = assessmentData.intermitentSupportsId;\r\n wlFormInfo['childProtectionAgency'].id = assessmentData.childProtectionId;\r\n wlFormInfo['adultDayEmployment'].id = assessmentData.requireWaiverFundingId;\r\n wlFormInfo['dischargePlan'].id = assessmentData.dischargePlanId;\r\n wlFormInfo['immediateNeeds'].id = assessmentData.immediateNeedId;\r\n wlFormInfo['currentNeeds'].id = assessmentData.unmetNeedId;\r\n wlFormInfo['waiverEnrollment'].id = assessmentData.waiverEnrollmentId;\r\n wlFormInfo['conclusion'].id = wlLinkID;\r\n\r\n const data = {\r\n waitingListInfo: {\r\n personCompleting: assessmentData.personCompleting,\r\n personCompletingTitle: assessmentData.personCompletingTitle,\r\n currentLivingArrangement: assessmentData.currentLivingArrangement,\r\n livingArrangementOther: assessmentData.livingArrangementOther,\r\n areasPersonNeedsHelp: assessmentData.areasPersonNeedsHelp,\r\n interviewDate: assessmentData.interviewDate,\r\n },\r\n conditions: {\r\n otherThanMentalHealth: assessmentData.otherThanMentalHealth,\r\n before22: assessmentData.before22,\r\n isConditionIndefinite: assessmentData.isConditionIndefinite,\r\n },\r\n currentAvailableServices: {\r\n isCountyBoardFunding: assessmentData.isCountyBoardFunding,\r\n isOhioEarlyInterventionService: assessmentData.isOhioEarlyInterventionService,\r\n isBCMHService: assessmentData.isBCMHService,\r\n isFCFCService: assessmentData.isFCFCService,\r\n isODEService: assessmentData.isODEService,\r\n isOODService: assessmentData.isOODService,\r\n isChildrenServices: assessmentData.isChildrenServices,\r\n isMedicaidStatePlanHomeHealthAideservice: assessmentData.isMedicaidStatePlanHomeHealthAideservice,\r\n isMedicaidStatePlanHomeHealthNursingService: assessmentData.isMedicaidStatePlanHomeHealthNursingService,\r\n isMedicaidStatePlanService: assessmentData.isMedicaidStatePlanService,\r\n isOhioHomeCareWaiverservice: assessmentData.isOhioHomeCareWaiverservice,\r\n isPassportWaiverService: assessmentData.isPassportWaiverService,\r\n isAssistedLivingWaiverService: assessmentData.isAssistedLivingWaiverService,\r\n isMYCarewaiverService: assessmentData.isMYCarewaiverService,\r\n isSelfWaiverService: assessmentData.isSelfWaiverService,\r\n isLevelOneWaiverService: assessmentData.isLevelOneWaiverService,\r\n isOtherService: assessmentData.isOtherService,\r\n otherDescription: assessmentData.otherDescription,\r\n },\r\n primaryCaregiver: {\r\n isPrimaryCaregiverUnavailable: assessmentData.isPrimaryCaregiverUnavailable,\r\n unavailableDocumentation: assessmentData.unavailableDocumentation,\r\n isActionRequiredIn30Days: assessmentData.isActionRequiredIn30Days,\r\n actionRequiredDescription: assessmentData.actionRequiredDescription,\r\n isIndividualSkillsDeclined: assessmentData.isIndividualSkillsDeclined,\r\n declinedSkillsDocumentation: assessmentData.declinedSkillsDocumentation,\r\n declinedSkillsDescription: assessmentData.declinedSkillsDescription,\r\n additionalCommentsForUnavailable: assessmentData.additionalCommentsForUnavailable,\r\n },\r\n behavioral: {\r\n risksIsNone: assessmentData.risksIsNone,\r\n risksIsRiskToSelf: assessmentData.risksIsRiskToSelf,\r\n risksIsPhysicalAggression: assessmentData.risksIsPhysicalAggression,\r\n risksIsSelfInjury: assessmentData.risksIsSelfInjury,\r\n risksIsFireSetting: assessmentData.risksIsFireSetting,\r\n risksIsElopement: assessmentData.risksIsElopement,\r\n risksIsSexualOffending: assessmentData.risksIsSexualOffending,\r\n risksIsOther: assessmentData.risksIsOther,\r\n risksFrequencyDescription: assessmentData.risksFrequencyDescription,\r\n risksHasNoDocument: assessmentData.risksHasNoDocument,\r\n risksHasPoliceReport: assessmentData.risksHasPoliceReport,\r\n risksHasIncidentReport: assessmentData.risksHasIncidentReport,\r\n risksHasBehaviorTracking: assessmentData.risksHasBehaviorTracking,\r\n risksHasPsychologicalAssessment: assessmentData.risksHasPsychologicalAssessment,\r\n risksHasOtherDocument: assessmentData.risksHasOtherDocument,\r\n risksOtherDocumentDescription: assessmentData.risksOtherDocumentDescription,\r\n },\r\n physical: {\r\n physicalNeedsIsPhysicalCareNeeded: assessmentData.physicalNeedsIsPhysicalCareNeeded,\r\n physicalNeedsIsNone: assessmentData.physicalNeedsIsNone,\r\n physicalNeedsIsPersonalCareNeeded: assessmentData.physicalNeedsIsPersonalCareNeeded,\r\n physicalNeedsIsRiskDuringPhysicalCare: assessmentData.physicalNeedsIsRiskDuringPhysicalCare,\r\n physicalNeedsIsOther: assessmentData.physicalNeedsIsOther,\r\n physicalNeedsDescription: assessmentData.physicalNeedsDescription,\r\n },\r\n medical: {\r\n medicalNeedsIsLifeThreatening: assessmentData.medicalNeedsIsLifeThreatening,\r\n medicalNeedsIsNone: assessmentData.medicalNeedsIsNone,\r\n medicalNeedsIsFrequentEmergencyVisit: assessmentData.medicalNeedsIsFrequentEmergencyVisit,\r\n medicalNeedsIsOngoingMedicalCare: assessmentData.medicalNeedsIsOngoingMedicalCare,\r\n medicalNeedsIsSpecializedCareGiveNeeded: assessmentData.medicalNeedsIsSpecializedCareGiveNeeded,\r\n medicalNeedsIsOther: assessmentData.medicalNeedsIsOther,\r\n medicalNeedsDescription: assessmentData.medicalNeedsDescription,\r\n },\r\n other: {\r\n needsIsActionRequiredRequiredIn30Days: assessmentData.needsIsActionRequiredRequiredIn30Days,\r\n needsIsContinuousSupportRequired: assessmentData.needsIsContinuousSupportRequired,\r\n },\r\n riskMitigation: {\r\n rMIsSupportNeeded: assessmentData.rMIsSupportNeeded,\r\n rMIsNone: assessmentData.rMIsNone,\r\n rMIsAdultProtectiveServiceInvestigation: assessmentData.rMIsAdultProtectiveServiceInvestigation,\r\n rMIsCountyBoardInvestigation: assessmentData.rMIsCountyBoardInvestigation,\r\n rMIsLawEnforcementInvestigation: assessmentData.rMIsLawEnforcementInvestigation,\r\n rMIsOtherInvestigation: assessmentData.rMIsOtherInvestigation,\r\n rMdescription: assessmentData.rMdescription,\r\n rMIsActionRequiredIn3oDays: assessmentData.rMIsActionRequiredIn3oDays,\r\n },\r\n icfDischarge: {\r\n icfDetermination: assessmentData.icfDetermination,\r\n icfIsICFResident: assessmentData.icfIsICFResident,\r\n icfIsNoticeIssued: assessmentData.icfIsNoticeIssued,\r\n icfIsActionRequiredIn30Days: assessmentData.icfIsActionRequiredIn30Days,\r\n },\r\n intermittentSupports: {\r\n intSupDetermination: assessmentData.intSupDetermination,\r\n intSupIsSupportNeededIn12Months: assessmentData.intSupIsSupportNeededIn12Months,\r\n intSupIsStayingLivingArrangement: assessmentData.intSupIsStayingLivingArrangement,\r\n intSupIsActionRequiredIn30Days: assessmentData.intSupIsActionRequiredIn30Days,\r\n },\r\n childProtectionAgency: {\r\n cpaDetermination: assessmentData.cpaDetermination,\r\n cpaIsReleasedNext12Months: assessmentData.cpaIsReleasedNext12Months,\r\n cpaAnticipateDate: assessmentData.cpaAnticipateDate ? assessmentData.cpaAnticipateDate.split(' ')[0] : '',\r\n cpaHasUnaddressableNeeds: assessmentData.cpaHasUnaddressableNeeds,\r\n },\r\n adultDayEmployment: {\r\n rwfWaiverFundingRequired: assessmentData.rwfWaiverFundingRequired,\r\n rwfNeedsMoreFrequency: assessmentData.rwfNeedsMoreFrequency,\r\n rwfNeedsServiceNotMetIDEA: assessmentData.rwfNeedsServiceNotMetIDEA,\r\n rwfNeedsServicesNotMetOOD: assessmentData.rwfNeedsServicesNotMetOOD,\r\n },\r\n dischargePlan: {\r\n dischargeDetermination: assessmentData.dischargeDetermination,\r\n dischargeIsICFResident: assessmentData.dischargeIsICFResident,\r\n dischargeIsInterestedInMoving: assessmentData.dischargeIsInterestedInMoving,\r\n dischargeHasDischargePlan: assessmentData.dischargeHasDischargePlan,\r\n },\r\n immediateNeeds: {\r\n immNeedsRequired: assessmentData.immNeedsRequired,\r\n immNeedsDescription: assessmentData.immNeedsDescription,\r\n },\r\n currentNeeds: {\r\n unmetNeedsHas: assessmentData.unmetNeedsHas,\r\n unmetNeedsSupports: assessmentData.unmetNeedsSupports,\r\n unmetNeedsDescription: assessmentData.unmetNeedsDescription,\r\n },\r\n waiverEnrollment: {\r\n waivEnrollWaiverEnrollmentIsRequired: assessmentData.waivEnrollWaiverEnrollmentIsRequired,\r\n waivEnrollWaiverEnrollmentDescription: assessmentData.waivEnrollWaiverEnrollmentDescription,\r\n },\r\n conclusion: {\r\n conclusionUnmetNeeds: assessmentData.conclusionResult === '1' ? '1' : '0',\r\n conclusionWaiverFunded12Months: assessmentData.conclusionResult === '2' ? '1' : '0',\r\n conclusionDoesNotRequireWaiver: assessmentData.conclusionResult === '3' ? '1' : '0',\r\n conclusionNotEligibleForWaiver: assessmentData.conclusionResult === '0' ? '1' : '0',\r\n //\r\n conclussionDeterminedBy: assessmentData.conclussionDeterminedBy,\r\n conclusionDeterminedByTitle: assessmentData.conclusionDeterminedByTitle,\r\n conclusionDeterminedOn: assessmentData.conclusionDeterminedOn,\r\n fundingSourceId: assessmentData.fundingSourceId,\r\n },\r\n };\r\n\r\n for (d in data) {\r\n for (dd in data[d]) {\r\n const fieldType = findFieldTypeById(sections[d].formElements, dd);\r\n\r\n if (fieldType === 'radiogroup') {\r\n if (data[d][dd] === '0') {\r\n data[d][dd] = `${dd}no`;\r\n }\r\n\r\n if (data[d][dd] === '1') {\r\n data[d][dd] = `${dd}yes`;\r\n }\r\n }\r\n\r\n if (fieldType === 'checkboxgroup') {\r\n if (data[d][dd] === '' || data[d][dd] === '0') {\r\n data[d][dd] = false;\r\n }\r\n\r\n if (data[d][dd] === '1') {\r\n data[d][dd] = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n function enableSectionsForReview() {\r\n const isOtherThanMentalHealthYes = wlData.conditions.otherThanMentalHealth.includes('yes');\r\n const isBefore22Yes = wlData.conditions.before22.includes('yes');\r\n const isConditionIndefiniteYes = wlData.conditions.isConditionIndefinite.includes('yes');\r\n\r\n if (!isOtherThanMentalHealthYes || !isBefore22Yes || !isConditionIndefiniteYes) {\r\n return;\r\n }\r\n\r\n contributingCircumstancesWrap.classList.remove('hiddenPage');\r\n wlForms['primaryCaregiver'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['waiverEnrollment'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['currentAvailableServices'].form.parentElement.classList.remove('hiddenPage');\r\n\r\n tocLinks['contributingCircumstances'].classList.remove('hiddenPage');\r\n tocLinks['primaryCaregiver'].classList.remove('hiddenPage');\r\n tocLinks['waiverEnrollment'].classList.remove('hiddenPage');\r\n tocLinks['currentAvailableServices'].classList.remove('hiddenPage');\r\n\r\n const pgActionRequiredIn30Days = wlData.primaryCaregiver.isActionRequiredIn30Days;\r\n const pgUnavailable = wlData.primaryCaregiver.isPrimaryCaregiverUnavailable;\r\n const needOtherActionRequired = wlData.other.needsIsActionRequiredRequiredIn30Days;\r\n const rmActionRequired = wlData.riskMitigation.rMIsActionRequiredIn3oDays;\r\n const icfIsICFResident = wlData.icfDischarge.icfIsICFResident;\r\n const icfIsNoticeIssued = wlData.icfDischarge.icfIsNoticeIssued;\r\n const icfIsActionRequiredIn30Days = wlData.icfDischarge.icfIsActionRequiredIn30Days;\r\n const isAdultProtectiveServiceInvestigationChecked = wlData.riskMitigation.rMIsAdultProtectiveServiceInvestigation;\r\n const isCountyBoardInvestigationChecked = wlData.riskMitigation.rMIsCountyBoardInvestigation;\r\n const isLawEnforcementInvestigationChecked = wlData.riskMitigation.rMIsLawEnforcementInvestigation;\r\n const isOtherInvestigationChecked = wlData.riskMitigation.rMIsOtherInvestigation;\r\n\r\n if (\r\n pgActionRequiredIn30Days.includes('no') ||\r\n (pgActionRequiredIn30Days.includes('yes') && pgUnavailable.includes('no'))\r\n ) {\r\n needsWrap.classList.remove('hiddenPage');\r\n wlForms['behavioral'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['physical'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['medical'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['needs'].classList.remove('hiddenPage');\r\n tocLinks['behavioral'].classList.remove('hiddenPage');\r\n tocLinks['physical'].classList.remove('hiddenPage');\r\n tocLinks['medical'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (needOtherActionRequired.includes('no')) {\r\n wlForms['riskMitigation'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['riskMitigation'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (rmActionRequired.includes('no')) {\r\n wlForms['icfDischarge'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['icfDischarge'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (\r\n rmActionRequired.includes('no') &&\r\n wlData.riskMitigation.rMIsActionRequiredIn3oDays !== '' &&\r\n needOtherActionRequired.includes('no') &&\r\n wlData.other.needsIsActionRequiredRequiredIn30Days !== ''\r\n ) {\r\n wlForms['currentNeeds'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['currentNeeds'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (\r\n ((isAdultProtectiveServiceInvestigationChecked ||\r\n isCountyBoardInvestigationChecked ||\r\n isLawEnforcementInvestigationChecked ||\r\n isOtherInvestigationChecked) &&\r\n rmActionRequired.includes('yes')) ||\r\n needOtherActionRequired.includes('yes') ||\r\n pgActionRequiredIn30Days.includes('yes')\r\n ) {\r\n wlForms['immediateNeeds'].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks['immediateNeeds'].classList.remove('hiddenPage');\r\n }\r\n\r\n if (\r\n icfIsICFResident.includes('no') ||\r\n icfIsNoticeIssued.includes('no') ||\r\n icfIsActionRequiredIn30Days.includes('no')\r\n ) {\r\n ['intermittentSupports', 'childProtectionAgency', 'adultDayEmployment', 'dischargePlan'].forEach(page => {\r\n wlForms[page].form.parentElement.classList.remove('hiddenPage');\r\n tocLinks[page].classList.remove('hiddenPage');\r\n });\r\n }\r\n }\r\n function enableInputsForReview() {\r\n // waitingListInfo\r\n //-------------------------------\r\n if (wlData.waitingListInfo.currentLivingArrangement === 'Other') {\r\n wlForms.waitingListInfo.inputs['livingArrangementOther'].toggleDisabled(false);\r\n }\r\n\r\n // currentAvailableServices\r\n //-------------------------------\r\n if (wlData.currentAvailableServices.isOtherService.includes('yes')) {\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].toggleDisabled(false);\r\n }\r\n\r\n // primaryCaregiver\r\n //-------------------------------\r\n if (wlData.primaryCaregiver.isPrimaryCaregiverUnavailable.includes('yes')) {\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].toggleDisabled(false);\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].toggleDisabled(false);\r\n } else {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(false);\r\n }\r\n if (wlData.primaryCaregiver.isActionRequiredIn30Days.includes('yes')) {\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(false);\r\n }\r\n if (wlData.primaryCaregiver.isIndividualSkillsDeclined.includes('yes')) {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(false);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(false);\r\n }\r\n\r\n // needs\r\n //-------------------------------\r\n const hasCheckBehavioral = [\r\n wlData.behavioral.risksIsNone,\r\n wlData.behavioral.risksIsPhysicalAggression,\r\n wlData.behavioral.risksIsSelfInjury,\r\n wlData.behavioral.risksIsFireSetting,\r\n wlData.behavioral.risksIsElopement,\r\n wlData.behavioral.risksIsSexualOffending,\r\n wlData.behavioral.risksIsOther,\r\n ].some(value => value === true);\r\n const hasCheckBehavioralDocs = [\r\n wlData.behavioral.risksHasNoDocument,\r\n wlData.behavioral.risksHasPoliceReport,\r\n wlData.behavioral.risksHasIncidentReport,\r\n wlData.behavioral.risksHasBehaviorTracking,\r\n wlData.behavioral.risksHasPsychologicalAssessment,\r\n wlData.behavioral.risksHasOtherDocument,\r\n ].some(value => value === true);\r\n const hasCheckPhysical = [\r\n wlData.physical.physicalNeedsIsNone,\r\n wlData.physical.physicalNeedsIsPersonalCareNeeded,\r\n wlData.physical.physicalNeedsIsRiskDuringPhysicalCare,\r\n wlData.physical.physicalNeedsIsOther,\r\n ].some(value => value === true);\r\n const hasCheckMedical = [\r\n wlData.medical.medicalNeedsIsNone,\r\n wlData.medical.medicalNeedsIsFrequentEmergencyVisit,\r\n wlData.medical.medicalNeedsIsOngoingMedicalCare,\r\n wlData.medical.medicalNeedsIsSpecializedCareGiveNeeded,\r\n wlData.medical.medicalNeedsIsOther,\r\n ].some(value => value === true);\r\n\r\n if (hasCheckBehavioral) {\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].toggleDisabled(wlData.behavioral.risksIsNone);\r\n\r\n wlForms['behavioral'].inputs['risksIsNone'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsElopement'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksIsOther'].toggleRequired(false);\r\n }\r\n if (hasCheckBehavioralDocs) {\r\n wlForms['behavioral'].inputs['risksHasNoDocument'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].toggleRequired(false);\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].toggleRequired(false);\r\n }\r\n if (hasCheckPhysical) {\r\n wlForms['physical'].inputs['physicalNeedsDescription'].toggleDisabled(wlData.physical.physicalNeedsIsNone);\r\n\r\n wlForms['physical'].inputs['physicalNeedsIsNone'].toggleRequired(false);\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].toggleRequired(false);\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].toggleRequired(false);\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].toggleRequired(false);\r\n }\r\n if (hasCheckMedical) {\r\n wlForms['medical'].inputs['medicalNeedsDescription'].toggleDisabled(wlData.medical.medicalNeedsIsNone);\r\n\r\n wlForms['medical'].inputs['medicalNeedsIsNone'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].toggleRequired(false);\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].toggleRequired(false);\r\n }\r\n if ((hasCheckBehavioral && hasCheckBehavioralDocs) || hasCheckPhysical || hasCheckMedical) {\r\n tocLinks['other'].classList.remove('hiddenPage');\r\n wlForms['other'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].toggleDisabled(false);\r\n }\r\n\r\n if (wlData.behavioral.risksHasOtherDocument) {\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].toggleDisabled(false);\r\n }\r\n if (wlData.other.needsIsActionRequiredRequiredIn30Days.includes('no')) {\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(false);\r\n }\r\n\r\n // riskMitigation\r\n //-------------------------------\r\n const hasCheckRisksMitigation = [\r\n wlData.riskMitigation.rMIsNone,\r\n wlData.riskMitigation.rMIsAdultProtectiveServiceInvestigation,\r\n wlData.riskMitigation.rMIsCountyBoardInvestigation,\r\n wlData.riskMitigation.rMIsLawEnforcementInvestigation,\r\n wlData.riskMitigation.rMIsOtherInvestigation,\r\n ].some(value => value === true);\r\n\r\n if (hasCheckRisksMitigation) {\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(wlData.riskMitigation.rMIsNone);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(wlData.riskMitigation.rMIsNone);\r\n\r\n wlForms['riskMitigation'].inputs['rMIsNone'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].toggleRequired(false);\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].toggleRequired(false);\r\n }\r\n\r\n // childProtectionAgency\r\n //-------------------------------\r\n if (wlData.childProtectionAgency.cpaIsReleasedNext12Months.includes('yes')) {\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].toggleDisabled(false);\r\n }\r\n\r\n // currentNeeds\r\n //-------------------------------\r\n if (wlData.currentNeeds.unmetNeedsHas.includes('yes')) {\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].toggleDisabled(false);\r\n }\r\n if (wlData.currentNeeds.unmetNeedsSupports.includes('yes')) {\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(false);\r\n }\r\n\r\n // immediateNeeds\r\n //-------------------------------\r\n if (wlData.immediateNeeds.immNeedsRequired.includes('yes')) {\r\n wlForms['immediateNeeds'].inputs['immNeedsDescription'].toggleDisabled(false);\r\n }\r\n\r\n // waiverEnrollment\r\n //-------------------------------\r\n if (wlData.waiverEnrollment.waivEnrollWaiverEnrollmentIsRequired.includes('no')) {\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].toggleDisabled(false);\r\n }\r\n }\r\n\r\n // EVENTS\r\n //--------------------------------------------------\r\n async function showHideNeedsPages() {\r\n const isPrimaryCaregiverUnavailable =\r\n wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const isActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const showPages = isPrimaryCaregiverUnavailable.includes('no')\r\n ? true\r\n : isPrimaryCaregiverUnavailable.includes('yes') && isActionRequiredIn30Days.includes('no')\r\n ? true\r\n : false;\r\n\r\n needsWrap.classList.toggle('hiddenPage', !showPages);\r\n tocLinks['needs'].classList.toggle('hiddenPage', !showPages);\r\n\r\n ['behavioral', 'physical', 'medical'].forEach(async page => {\r\n wlForms[page].form.parentElement.classList.toggle('hiddenPage', !showPages);\r\n tocLinks[page].classList.toggle('hiddenPage', !showPages);\r\n\r\n if (!showPages) {\r\n sectionResets[page]();\r\n } else {\r\n updateFormCompletionStatus(page);\r\n }\r\n });\r\n\r\n if (!showPages) {\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [\r\n `${wlFormInfo['behavioral'].id}|${wlFormInfo['behavioral'].dbtable}`,\r\n `${wlFormInfo['physical'].id}|${wlFormInfo['physical'].dbtable}`,\r\n `${wlFormInfo['medical'].id}|${wlFormInfo['medical'].dbtable}`,\r\n ],\r\n });\r\n }\r\n }\r\n async function showHideRiskMitigation() {\r\n const isNeedsActionRequired = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const showRM = isNeedsActionRequired.includes('no');\r\n\r\n wlForms['riskMitigation'].form.parentElement.classList.toggle('hiddenPage', !showRM);\r\n tocLinks['riskMitigation'].classList.toggle('hiddenPage', !showRM);\r\n\r\n if (!showRM) {\r\n sectionResets['riskMitigation']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['riskMitigation'].id}|${wlFormInfo['riskMitigation'].dbtable}`],\r\n });\r\n }\r\n }\r\n async function showHidePagesRelatedToICF() {\r\n const icfIsNoticeIssued = wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue();\r\n const icfIsICFResident = wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue();\r\n const icfIsActionRequiredIn30Days = wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue();\r\n\r\n const icfAnyNo = [icfIsNoticeIssued, icfIsICFResident, icfIsActionRequiredIn30Days].some(answer =>\r\n answer.includes('no'),\r\n );\r\n\r\n ['intermittentSupports', 'childProtectionAgency', 'adultDayEmployment', 'dischargePlan'].forEach(page => {\r\n wlForms[page].form.parentElement.classList.toggle('hiddenPage', !icfAnyNo);\r\n tocLinks[page].classList.toggle('hiddenPage', !icfAnyNo);\r\n\r\n if (!icfAnyNo) {\r\n sectionResets[page]();\r\n } else {\r\n updateFormCompletionStatus(page);\r\n }\r\n });\r\n\r\n if (!icfAnyNo) {\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [\r\n `${wlFormInfo['intermittentSupports'].id}|${wlFormInfo['intermittentSupports'].dbtable}`,\r\n `${wlFormInfo['childProtectionAgency'].id}|${wlFormInfo['childProtectionAgency'].dbtable}`,\r\n `${wlFormInfo['adultDayEmployment'].id}|${wlFormInfo['adultDayEmployment'].dbtable}`,\r\n `${wlFormInfo['dischargePlan'].id}|${wlFormInfo['dischargePlan'].dbtable}`,\r\n ],\r\n });\r\n }\r\n }\r\n async function showHideICFDischarge() {\r\n const isRisksActionRequired = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const showICF = isRisksActionRequired.includes('no');\r\n\r\n wlForms['icfDischarge'].form.parentElement.classList.toggle('hiddenPage', !showICF);\r\n tocLinks['icfDischarge'].classList.toggle('hiddenPage', !showICF);\r\n\r\n if (!showICF) {\r\n sectionResets['icfDischarge']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['icfDischarge'].id}|${wlFormInfo['icfDischarge'].dbtable}`],\r\n });\r\n }\r\n }\r\n async function showHideImmediateNeeds() {\r\n const isRMChecked = isAnyCheckboxCheckedRiskMitigation();\r\n const isActionRequiredRM = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const isActionRequiredOther = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const isPGActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const noticeIssuedICF = wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue();\r\n const isActionRequiredICF = wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue();\r\n const isResidentICF = wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue();\r\n\r\n const isAllYesICF =\r\n noticeIssuedICF.includes('yes') && isActionRequiredICF.includes('yes') && isResidentICF.includes('yes');\r\n\r\n const showImmediateNeeds =\r\n isActionRequiredOther.includes('yes') ||\r\n (isActionRequiredRM.includes('yes') && isRMChecked) ||\r\n isPGActionRequiredIn30Days.includes('yes') ||\r\n isAllYesICF;\r\n\r\n wlForms['immediateNeeds'].form.parentElement.classList.toggle('hiddenPage', !showImmediateNeeds);\r\n tocLinks['immediateNeeds'].classList.toggle('hiddenPage', !showImmediateNeeds);\r\n wlForms['immediateNeeds'].inputs['immNeedsDescription'].toggleDisabled(!showImmediateNeeds);\r\n\r\n if (showImmediateNeeds) {\r\n wlForms['immediateNeeds'].inputs['immNeedsRequired'].setValue('immNeedsRequiredyes');\r\n await insertUpdateAssessmentData({\r\n value: 'yes',\r\n name: 'immNeedsRequired',\r\n type: 'radio',\r\n formName: 'immediateNeeds',\r\n });\r\n } else {\r\n sectionResets['immediateNeeds']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['immediateNeeds'].id}|${wlFormInfo['immediateNeeds'].dbtable}`],\r\n });\r\n }\r\n }\r\n async function showHideCurrentNeeds() {\r\n const isNeedsActionRequired = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const isRisksActionRequired = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const noticeIssuedICF = wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue();\r\n const isActionRequiredICF = wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue();\r\n const isResidentICF = wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue();\r\n\r\n const isAnyNoICF =\r\n noticeIssuedICF.includes('no') || isActionRequiredICF.includes('no') || isResidentICF.includes('no');\r\n const isAllYesICF = noticeIssuedICF.includes('yes') && isActionRequiredICF.includes('yes') && isResidentICF.includes('yes');\r\n let showCurrentNeeds;\r\n\r\n if (isAllYesICF) {\r\n showCurrentNeeds = false;\r\n } else if (isAnyNoICF) {\r\n showCurrentNeeds = true;\r\n } else {\r\n showCurrentNeeds = isNeedsActionRequired.includes('no') && isRisksActionRequired.includes('no');\r\n }\r\n\r\n wlForms['currentNeeds'].form.parentElement.classList.toggle('hiddenPage', !showCurrentNeeds);\r\n tocLinks['currentNeeds'].classList.toggle('hiddenPage', !showCurrentNeeds);\r\n\r\n if (!showCurrentNeeds) {\r\n sectionResets['currentNeeds']();\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['currentNeeds'].id}|${wlFormInfo['currentNeeds'].dbtable}`],\r\n });\r\n }\r\n }\r\n //--------------------------------------------------\r\n function isConditionInputsAllYes() {\r\n return [\r\n wlForms['conditions'].inputs['otherThanMentalHealth'].getValue('otherThanMentalHealthyes'),\r\n wlForms['conditions'].inputs['before22'].getValue('before22yes'),\r\n wlForms['conditions'].inputs['isConditionIndefinite'].getValue('isConditionIndefiniteyes'),\r\n ].every(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedRiskMitigation() {\r\n return [\r\n wlForms['riskMitigation'].inputs['rMIsAdultProtectiveServiceInvestigation'].getValue(),\r\n wlForms['riskMitigation'].inputs['rMIsCountyBoardInvestigation'].getValue(),\r\n wlForms['riskMitigation'].inputs['rMIsLawEnforcementInvestigation'].getValue(),\r\n wlForms['riskMitigation'].inputs['rMIsOtherInvestigation'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedBehaviors() {\r\n return [\r\n wlForms['behavioral'].inputs['risksIsPhysicalAggression'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsSelfInjury'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsFireSetting'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsElopement'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsSexualOffending'].getValue(),\r\n wlForms['behavioral'].inputs['risksIsOther'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedBehaviorsDocs() {\r\n return [\r\n wlForms['behavioral'].inputs['risksHasPoliceReport'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasIncidentReport'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasBehaviorTracking'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasPsychologicalAssessment'].getValue(),\r\n wlForms['behavioral'].inputs['risksHasOtherDocument'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedPhysical() {\r\n return [\r\n wlForms['physical'].inputs['physicalNeedsIsPersonalCareNeeded'].getValue(),\r\n wlForms['physical'].inputs['physicalNeedsIsRiskDuringPhysicalCare'].getValue(),\r\n wlForms['physical'].inputs['physicalNeedsIsOther'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n function isAnyCheckboxCheckedMedical() {\r\n return [\r\n wlForms['medical'].inputs['medicalNeedsIsFrequentEmergencyVisit'].getValue(),\r\n wlForms['medical'].inputs['medicalNeedsIsOngoingMedicalCare'].getValue(),\r\n wlForms['medical'].inputs['medicalNeedsIsSpecializedCareGiveNeeded'].getValue(),\r\n wlForms['medical'].inputs['medicalNeedsIsOther'].getValue(),\r\n ].some(element => element === true);\r\n }\r\n //--------------------------------------------------\r\n async function needsOtherCheck() {\r\n const hasCheckBehaviorOne = isAnyCheckboxCheckedBehaviors();\r\n const hasCheckBehaviorTwo = isAnyCheckboxCheckedBehaviorsDocs();\r\n const hasCheckPhysical = isAnyCheckboxCheckedPhysical();\r\n const hasCheckMedical = isAnyCheckboxCheckedMedical();\r\n\r\n const needsIsActionEnabled = (hasCheckBehaviorOne && hasCheckBehaviorTwo) || hasCheckPhysical || hasCheckMedical;\r\n\r\n wlForms['other'].form.parentElement.classList.toggle('hiddenPage', !needsIsActionEnabled);\r\n tocLinks['other'].classList.toggle('hiddenPage', !needsIsActionEnabled);\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].toggleDisabled(needsIsActionEnabled === false);\r\n\r\n if (!needsIsActionEnabled) {\r\n wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].setValue('');\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].setValue('');\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(true);\r\n }\r\n\r\n updateFormCompletionStatus('other');\r\n\r\n if (!needsIsActionEnabled) {\r\n _UTIL.fetchData('deleteFromWaitingList', {\r\n properties: [`${wlFormInfo['other'].id}|${wlFormInfo['other'].dbtable}`],\r\n });\r\n }\r\n }\r\n //--------------------------------------------------\r\n async function intermittentSupportsDetermination() {\r\n const data = [\r\n wlForms['intermittentSupports'].inputs['intSupIsSupportNeededIn12Months'].getValue(\r\n 'intSupIsSupportNeededIn12Monthsyes',\r\n ),\r\n wlForms['intermittentSupports'].inputs['intSupIsStayingLivingArrangement'].getValue(\r\n 'intSupIsStayingLivingArrangementyes',\r\n ),\r\n wlForms['intermittentSupports'].inputs['intSupIsActionRequiredIn30Days'].getValue(\r\n 'intSupIsActionRequiredIn30Daysyes',\r\n ),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'intSupDeterminationyes' : 'intSupDeterminationno';\r\n\r\n wlForms['intermittentSupports'].inputs['intSupDetermination'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'intSupDetermination',\r\n type: 'radio',\r\n formName: 'intermittentSupports',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function icfDischargeDetermination() {\r\n const data = [\r\n wlForms['icfDischarge'].inputs['icfIsICFResident'].getValue('icfIsICFResidentyes'),\r\n wlForms['icfDischarge'].inputs['icfIsNoticeIssued'].getValue('icfIsNoticeIssuedyes'),\r\n wlForms['icfDischarge'].inputs['icfIsActionRequiredIn30Days'].getValue('icfIsActionRequiredIn30Daysyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'icfDeterminationyes' : 'icfDeterminationno';\r\n\r\n wlForms['icfDischarge'].inputs['icfDetermination'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'icfDetermination',\r\n type: 'radio',\r\n formName: 'icfDischarge',\r\n });\r\n }\r\n async function childProtectionAgencyDetermination() {\r\n const data = [\r\n wlForms['childProtectionAgency'].inputs['cpaIsReleasedNext12Months'].getValue('cpaIsReleasedNext12Monthsyes'),\r\n wlForms['childProtectionAgency'].inputs['cpaHasUnaddressableNeeds'].getValue('cpaHasUnaddressableNeedsyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'cpaDeterminationyes' : 'cpaDeterminationno';\r\n\r\n wlForms['childProtectionAgency'].inputs['cpaDetermination'].setValue(inputId);\r\n\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'cpaDetermination',\r\n type: 'radio',\r\n formName: 'childProtectionAgency',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function adultDayEmploymentDetermination() {\r\n const data = [\r\n wlForms['adultDayEmployment'].inputs['rwfNeedsMoreFrequency'].getValue('rwfNeedsMoreFrequencyyes'),\r\n wlForms['adultDayEmployment'].inputs['rwfNeedsServiceNotMetIDEA'].getValue('rwfNeedsServiceNotMetIDEAyes'),\r\n wlForms['adultDayEmployment'].inputs['rwfNeedsServicesNotMetOOD'].getValue('rwfNeedsServicesNotMetOODyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'rwfWaiverFundingRequiredyes' : 'rwfWaiverFundingRequiredno';\r\n\r\n wlForms['adultDayEmployment'].inputs['rwfWaiverFundingRequired'].setValue(inputId);\r\n\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'rwfWaiverFundingRequired',\r\n type: 'radio',\r\n formName: 'adultDayEmployment',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function dischargePlanDetermination() {\r\n const data = [\r\n wlForms['dischargePlan'].inputs['dischargeIsICFResident'].getValue('dischargeIsICFResidentyes'),\r\n wlForms['dischargePlan'].inputs['dischargeIsInterestedInMoving'].getValue('dischargeIsInterestedInMovingyes'),\r\n wlForms['dischargePlan'].inputs['dischargeHasDischargePlan'].getValue('dischargeHasDischargePlanyes'),\r\n ];\r\n\r\n const allHaveCheck = data.every(element => element === true);\r\n const inputId = allHaveCheck ? 'dischargeDeterminationyes' : 'dischargeDeterminationno';\r\n\r\n wlForms['dischargePlan'].inputs['dischargeDetermination'].setValue(inputId);\r\n\r\n await insertUpdateAssessmentData({\r\n value: allHaveCheck ? 'yes' : 'no',\r\n name: 'dischargeDetermination',\r\n type: 'radio',\r\n formName: 'dischargePlan',\r\n });\r\n\r\n await currentNeedsDetermination();\r\n }\r\n async function currentNeedsDetermination() {\r\n if (tocLinks['currentNeeds'].classList.contains('hiddenPage')) return;\r\n\r\n const isPrimaryCaregiverUnavailable =\r\n wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const isActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const isIndividualSkillsDeclined = wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].getValue();\r\n const risksIsRiskToSelf = wlForms['behavioral'].inputs['risksIsRiskToSelf'].getValue();\r\n const physicalNeedsIsPhysicalCareNeeded =\r\n wlForms['physical'].inputs['physicalNeedsIsPhysicalCareNeeded'].getValue();\r\n const medicalNeedsIsLifeThreatening = wlForms['medical'].inputs['medicalNeedsIsLifeThreatening'].getValue();\r\n const needsIsContinuousSupportRequired = wlForms['other'].inputs['needsIsContinuousSupportRequired'].getValue();\r\n const intSupDetermination = wlForms['intermittentSupports'].inputs['intSupDetermination'].getValue();\r\n const cpaDetermination = wlForms['childProtectionAgency'].inputs['cpaDetermination'].getValue();\r\n const rwfWaiverFundingRequired = wlForms['adultDayEmployment'].inputs['rwfWaiverFundingRequired'].getValue();\r\n const dischargeDetermination = wlForms['dischargePlan'].inputs['dischargeDetermination'].getValue();\r\n\r\n const conditions = [\r\n isPrimaryCaregiverUnavailable.includes('yes') && isActionRequiredIn30Days.includes('no'),\r\n isPrimaryCaregiverUnavailable.includes('no') && isIndividualSkillsDeclined.includes('yes'),\r\n risksIsRiskToSelf.includes('yes'),\r\n physicalNeedsIsPhysicalCareNeeded.includes('yes'),\r\n medicalNeedsIsLifeThreatening.includes('yes') && needsIsContinuousSupportRequired.includes('yes'),\r\n intSupDetermination.includes('yes'),\r\n cpaDetermination.includes('yes'),\r\n rwfWaiverFundingRequired.includes('yes'),\r\n dischargeDetermination.includes('yes'),\r\n ];\r\n\r\n let updateTo = 'no';\r\n\r\n for (const condition of conditions) {\r\n if (condition) {\r\n updateTo = 'yes';\r\n }\r\n }\r\n\r\n wlForms['currentNeeds'].inputs['unmetNeedsHas'].setValue(`unmetNeedsHas${updateTo}`);\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].toggleDisabled(updateTo === 'yes' ? false : true);\r\n\r\n if (updateTo === 'no') {\r\n wlForms['currentNeeds'].inputs['unmetNeedsSupports'].setValue('');\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(true);\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: 'unmetNeedsSupports',\r\n type: 'radio',\r\n formName: 'currentNeeds',\r\n });\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'unmetNeedsDescription',\r\n type: 'text',\r\n formName: 'currentNeeds',\r\n });\r\n }\r\n\r\n await insertUpdateAssessmentData({\r\n value: updateTo,\r\n name: 'unmetNeedsHas',\r\n type: 'radio',\r\n formName: 'currentNeeds',\r\n });\r\n\r\n updateFormCompletionStatus('currentNeeds');\r\n }\r\n async function immediateNeedsDetermination() {\r\n // immNeedsRequired\r\n }\r\n //--------------------------------------------------\r\n function setConclusion() {\r\n if (!isAssessmentComplete) return;\r\n\r\n const conditionPageAllYes = isConditionInputsAllYes();\r\n\r\n const immNeedsRequired = wlForms['immediateNeeds'].inputs['immNeedsRequired'].getValue();\r\n const waiverEnrollRequired = wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentIsRequired'].getValue();\r\n const unmetNeedsHas = wlForms['currentNeeds'].inputs['unmetNeedsHas'].getValue();\r\n const unmetNeedsSupports = wlForms['currentNeeds'].inputs['unmetNeedsSupports'].getValue();\r\n\r\n wlForms['conclusion'].inputs['conclusionUnmetNeeds'].setValue(false);\r\n wlForms['conclusion'].inputs['conclusionNotEligibleForWaiver'].setValue(false);\r\n wlForms['conclusion'].inputs['conclusionDoesNotRequireWaiver'].setValue(false);\r\n wlForms['conclusion'].inputs['conclusionWaiverFunded12Months'].setValue(false);\r\n\r\n if (!conditionPageAllYes) {\r\n wlForms['conclusion'].inputs['conclusionNotEligibleForWaiver'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 0,\r\n });\r\n return;\r\n }\r\n\r\n if (waiverEnrollRequired.includes('no')) {\r\n wlForms['conclusion'].inputs['conclusionDoesNotRequireWaiver'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 3,\r\n });\r\n return;\r\n }\r\n\r\n if (!tocLinks['immediateNeeds'].classList.contains('hiddenPage') && immNeedsRequired.includes('yes')) {\r\n wlForms['conclusion'].inputs['conclusionUnmetNeeds'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 1,\r\n });\r\n return;\r\n }\r\n\r\n if (!tocLinks['currentNeeds'].classList.contains('hiddenPage')) {\r\n if (unmetNeedsHas.includes('yes') && unmetNeedsSupports.includes('yes')) {\r\n wlForms['conclusion'].inputs['conclusionWaiverFunded12Months'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 2,\r\n });\r\n }\r\n if (unmetNeedsHas.includes('no') || unmetNeedsSupports.includes('no')) {\r\n wlForms['conclusion'].inputs['conclusionDoesNotRequireWaiver'].setValue(true);\r\n insertUpdateAssessmentData({\r\n name: 'conclusionResult',\r\n formName: 'waitingListInfo',\r\n type: 'custom',\r\n value: 3,\r\n });\r\n }\r\n }\r\n }\r\n //--------------------------------------------------\r\n const onChangeCallbacks = {\r\n //* waitingListInfo\r\n currentLivingArrangement: async ({ value }) => {\r\n wlForms['waitingListInfo'].inputs['livingArrangementOther'].toggleDisabled(value !== 'Other');\r\n\r\n if (value !== 'Other' && wlForms['waitingListInfo'].inputs['livingArrangementOther'].getValue() !== '') {\r\n wlForms['waitingListInfo'].inputs['livingArrangementOther'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'livingArrangementOther',\r\n type: 'text',\r\n formName: 'waitingListInfo',\r\n });\r\n }\r\n },\r\n //* currentAvailableServices\r\n isOtherService: async ({ value }) => {\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['currentAvailableServices'].inputs['otherDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'otherDescription',\r\n type: 'text',\r\n formName: 'currentAvailableServices',\r\n });\r\n }\r\n },\r\n //* primaryCaregiver\r\n isPrimaryCaregiverUnavailable: async ({ value }) => {\r\n const isActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const enableIsIndividualSkillsDeclined =\r\n value === 'no' ? true : isActionRequiredIn30Days.includes('no') ? true : false;\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(\r\n !enableIsIndividualSkillsDeclined,\r\n );\r\n if (!enableIsIndividualSkillsDeclined) {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'isIndividualSkillsDeclined',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].toggleDisabled(value === 'yes' ? false : true);\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['primaryCaregiver'].inputs['unavailableDocumentation'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(true);\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'unavailableDocumentation',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'isActionRequiredIn30Days',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'actionRequiredDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n } else {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(true);\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDocumentation',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n await showHideNeedsPages();\r\n await showHideImmediateNeeds();\r\n await currentNeedsDetermination();\r\n },\r\n isActionRequiredIn30Days: async ({ value }) => {\r\n const isPrimaryCaregiverUnavailable =\r\n wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const enableIsIndividualSkillsDeclined = isPrimaryCaregiverUnavailable.includes('no')\r\n ? true\r\n : value === 'no'\r\n ? true\r\n : false;\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(\r\n !enableIsIndividualSkillsDeclined,\r\n );\r\n if (!enableIsIndividualSkillsDeclined) {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'isIndividualSkillsDeclined',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(value === 'no' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['primaryCaregiver'].inputs['actionRequiredDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'actionRequiredDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n } else {\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'isIndividualSkillsDeclined',\r\n type: 'radio',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n await showHideNeedsPages();\r\n await showHideImmediateNeeds();\r\n await currentNeedsDetermination();\r\n },\r\n isIndividualSkillsDeclined: async ({ value }) => {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].toggleDisabled(value === 'yes' ? false : true);\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDocumentation'].setValue('');\r\n wlForms['primaryCaregiver'].inputs['declinedSkillsDescription'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDocumentation',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'declinedSkillsDescription',\r\n type: 'text',\r\n formName: 'primaryCaregiver',\r\n });\r\n }\r\n\r\n await currentNeedsDetermination();\r\n },\r\n //* behavioral\r\n risksIs: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'risksIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedBehaviors();\r\n const hasCheckDocs = isAnyCheckboxCheckedBehaviorsDocs();\r\n const risksIsRiskToSelfInputId = hasCheck && hasCheckDocs ? 'risksIsRiskToSelfyes' : 'risksIsRiskToSelfno';\r\n\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].toggleDisabled(!hasCheck);\r\n if (!hasCheck) {\r\n wlForms['behavioral'].inputs['risksFrequencyDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'risksFrequencyDescription',\r\n type: 'text',\r\n formName: 'behavioral',\r\n });\r\n }\r\n\r\n wlForms['behavioral'].inputs['risksIsRiskToSelf'].setValue(risksIsRiskToSelfInputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck && hasCheckDocs ? 'yes' : 'no',\r\n name: 'risksIsRiskToSelf',\r\n type: 'radio',\r\n formName: 'behavioral',\r\n });\r\n\r\n [\r\n 'risksIsNone',\r\n 'risksIsPhysicalAggression',\r\n 'risksIsSelfInjury',\r\n 'risksIsFireSetting',\r\n 'risksIsElopement',\r\n 'risksIsSexualOffending',\r\n 'risksIsOther',\r\n ].forEach(async inputId => {\r\n wlForms['behavioral'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['behavioral'].inputs[inputId].getValue()) {\r\n if (inputId === 'risksIsNone' && hasCheck) {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'risksIsNone') {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n risksHas: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'risksHasNoDocument' && value === 'on';\r\n const hasCheck = isAnyCheckboxCheckedBehaviors();\r\n const hasCheckDocs = isNotAppChecked ? false : isAnyCheckboxCheckedBehaviorsDocs();\r\n const risksIsRiskToSelfInputId = hasCheck && hasCheckDocs ? 'risksIsRiskToSelfyes' : 'risksIsRiskToSelfno';\r\n\r\n wlForms['behavioral'].inputs['risksIsRiskToSelf'].setValue(risksIsRiskToSelfInputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck && hasCheckDocs ? 'yes' : 'no',\r\n name: 'risksIsRiskToSelf',\r\n type: 'radio',\r\n formName: 'behavioral',\r\n });\r\n [\r\n 'risksHasNoDocument',\r\n 'risksHasPoliceReport',\r\n 'risksHasIncidentReport',\r\n 'risksHasBehaviorTracking',\r\n 'risksHasPsychologicalAssessment',\r\n 'risksHasOtherDocument',\r\n ].forEach(async inputId => {\r\n wlForms['behavioral'].inputs[inputId].toggleRequired(hasCheckDocs || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['behavioral'].inputs[inputId].getValue()) {\r\n if (hasCheckDocs && inputId === 'risksHasNoDocument') {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'risksHasNoDocument') {\r\n wlForms['behavioral'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'behavioral',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n risksHasOtherDocument: async ({ name, value }) => {\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].toggleDisabled(value === 'on' ? false : true);\r\n\r\n if (value !== 'on') {\r\n wlForms['behavioral'].inputs['risksOtherDocumentDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: 'risksOtherDocumentDescription',\r\n type: 'text',\r\n formName: 'behavioral',\r\n });\r\n }\r\n },\r\n //* physical\r\n physicalNeeds: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'physicalNeedsIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedPhysical();\r\n const isPhysicalCareNeededInputId = hasCheck\r\n ? 'physicalNeedsIsPhysicalCareNeededyes'\r\n : 'physicalNeedsIsPhysicalCareNeededno';\r\n\r\n wlForms['physical'].inputs['physicalNeedsDescription'].toggleDisabled(!hasCheck);\r\n if (!hasCheck) {\r\n wlForms['physical'].inputs['physicalNeedsDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'physicalNeedsDescription',\r\n type: 'text',\r\n formName: 'physical',\r\n });\r\n }\r\n\r\n wlForms['physical'].inputs['physicalNeedsIsPhysicalCareNeeded'].setValue(isPhysicalCareNeededInputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck ? 'yes' : 'no',\r\n name: 'physicalNeedsIsPhysicalCareNeeded',\r\n type: 'radio',\r\n formName: 'physical',\r\n });\r\n [\r\n 'physicalNeedsIsNone',\r\n 'physicalNeedsIsPersonalCareNeeded',\r\n 'physicalNeedsIsRiskDuringPhysicalCare',\r\n 'physicalNeedsIsOther',\r\n ].forEach(async inputId => {\r\n wlForms['physical'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['physical'].inputs[inputId].getValue()) {\r\n if (hasCheck && inputId === 'physicalNeedsIsNone') {\r\n wlForms['physical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'physical',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'physicalNeedsIsNone') {\r\n wlForms['physical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'physical',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n //* medical\r\n medicalNeeds: async ({ name, value }) => {\r\n const isNotAppChecked = name === 'medicalNeedsIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedMedical();\r\n const inputId = hasCheck ? 'medicalNeedsIsLifeThreateningyes' : 'medicalNeedsIsLifeThreateningno';\r\n\r\n wlForms['medical'].inputs['medicalNeedsDescription'].toggleDisabled(!hasCheck);\r\n if (!hasCheck) {\r\n wlForms['medical'].inputs['medicalNeedsDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'medicalNeedsDescription',\r\n type: 'text',\r\n formName: 'medical',\r\n });\r\n }\r\n\r\n wlForms['medical'].inputs['medicalNeedsIsLifeThreatening'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: hasCheck ? 'yes' : 'no',\r\n name: 'medicalNeedsIsLifeThreatening',\r\n type: 'radio',\r\n formName: 'medical',\r\n });\r\n\r\n [\r\n 'medicalNeedsIsNone',\r\n 'medicalNeedsIsFrequentEmergencyVisit',\r\n 'medicalNeedsIsOngoingMedicalCare',\r\n 'medicalNeedsIsSpecializedCareGiveNeeded',\r\n 'medicalNeedsIsOther',\r\n ].forEach(async inputId => {\r\n wlForms['medical'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['medical'].inputs[inputId].getValue()) {\r\n if (hasCheck && inputId === 'medicalNeedsIsNone') {\r\n wlForms['medical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'medical',\r\n });\r\n } else if (isNotAppChecked && inputId !== 'medicalNeedsIsNone') {\r\n wlForms['medical'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'medical',\r\n });\r\n }\r\n }\r\n });\r\n\r\n await currentNeedsDetermination();\r\n await needsOtherCheck();\r\n },\r\n //* other\r\n needsIsActionRequiredRequiredIn30Days: async ({ value }) => {\r\n const isNeedsActionRequiredYes = value === 'yes';\r\n\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].toggleDisabled(isNeedsActionRequiredYes);\r\n\r\n if (isNeedsActionRequiredYes) {\r\n wlForms['other'].inputs['needsIsContinuousSupportRequired'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'needsIsContinuousSupportRequired',\r\n type: 'radio',\r\n formName: 'other',\r\n });\r\n }\r\n\r\n await showHideRiskMitigation();\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n },\r\n needsIsContinuousSupportRequired: async () => {\r\n await currentNeedsDetermination();\r\n },\r\n //* riskMitigation\r\n rMIs: async ({ name, value }) => {\r\n let cleardNotApp = false;\r\n let hasOtherCheck = isAnyCheckboxCheckedRiskMitigation();\r\n\r\n [\r\n 'rMIsNone',\r\n 'rMIsAdultProtectiveServiceInvestigation',\r\n 'rMIsCountyBoardInvestigation',\r\n 'rMIsLawEnforcementInvestigation',\r\n 'rMIsOtherInvestigation',\r\n ].forEach(async inputId => {\r\n const isRequired = hasOtherCheck || (name === 'rMIsNone' && value === 'on') ? false : true\r\n wlForms['riskMitigation'].inputs[inputId].toggleRequired(isRequired);\r\n\r\n if (wlForms['riskMitigation'].inputs[inputId].getValue()) {\r\n if (name === 'rMIsNone' && inputId !== 'rMIsNone') {\r\n wlForms['riskMitigation'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'riskMitigation',\r\n });\r\n } else if (hasOtherCheck && inputId === 'rMIsNone') {\r\n cleardNotApp = true;\r\n wlForms['riskMitigation'].inputs[inputId].setValue(false);\r\n await insertUpdateAssessmentData({\r\n value: 'off',\r\n name: inputId,\r\n type: 'checkbox',\r\n formName: 'riskMitigation',\r\n });\r\n }\r\n }\r\n });\r\n\r\n hasOtherCheck = isAnyCheckboxCheckedRiskMitigation();\r\n\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(!hasOtherCheck);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(!hasOtherCheck);\r\n\r\n const isNotAppChecked = wlForms['riskMitigation'].inputs['rMIsNone'].getValue();\r\n\r\n if (isNotAppChecked) {\r\n wlForms['riskMitigation'].inputs['rMdescription'].setValue('');\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].setValue('rMIsActionRequiredIn3oDaysno');\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue('rMIsSupportNeededno');\r\n\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'rMIsActionRequiredIn3oDays',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'rMIsSupportNeeded',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMdescription',\r\n type: 'text',\r\n formName: 'riskMitigation',\r\n });\r\n } else if (cleardNotApp) {\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].setValue('');\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue('');\r\n\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMIsActionRequiredIn3oDays',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMIsSupportNeeded',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n }\r\n\r\n await showHideICFDischarge();\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n },\r\n rMIsActionRequiredIn3oDays: async ({ value }) => {\r\n const isRisksActionRequired = value;\r\n const inputId = isRisksActionRequired === 'yes' ? 'rMIsSupportNeededyes' : 'rMIsSupportNeededno';\r\n\r\n // Set Input\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue(inputId);\r\n await insertUpdateAssessmentData({\r\n value: isRisksActionRequired === 'yes' ? 'yes' : 'no',\r\n name: 'rMIsSupportNeeded',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n\r\n await showHideICFDischarge();\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n },\r\n //* icfDischarge\r\n icfIsICFResident: async ({ value }) => {\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n icfIsNoticeIssued: async ({ value }) => {\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n icfIsActionRequiredIn30Days: async ({ value }) => {\r\n await showHideImmediateNeeds();\r\n await showHideCurrentNeeds();\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n //* intermittentSupports\r\n intSupIsSupportNeededIn12Months: intermittentSupportsDetermination,\r\n intSupIsStayingLivingArrangement: intermittentSupportsDetermination,\r\n intSupIsActionRequiredIn30Days: intermittentSupportsDetermination,\r\n //* childProtectionAgency\r\n cpaIsReleasedNext12Months: async ({ value }) => {\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['childProtectionAgency'].inputs['cpaAnticipateDate'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'cpaAnticipateDate',\r\n type: 'date',\r\n formName: 'childProtectionAgency',\r\n });\r\n }\r\n\r\n await childProtectionAgencyDetermination();\r\n },\r\n cpaHasUnaddressableNeeds: childProtectionAgencyDetermination,\r\n //* adultDayEmployment\r\n rwfNeedsMoreFrequency: adultDayEmploymentDetermination,\r\n rwfNeedsServiceNotMetIDEA: adultDayEmploymentDetermination,\r\n rwfNeedsServicesNotMetOOD: adultDayEmploymentDetermination,\r\n //* dischargePlan\r\n dischargeIsICFResident: dischargePlanDetermination,\r\n dischargeIsInterestedInMoving: dischargePlanDetermination,\r\n dischargeHasDischargePlan: dischargePlanDetermination,\r\n //* currentNeeds\r\n unmetNeedsSupports: async ({ value }) => {\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].toggleDisabled(value === 'yes' ? false : true);\r\n\r\n if (value !== 'yes') {\r\n wlForms['currentNeeds'].inputs['unmetNeedsDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'unmetNeedsDescription',\r\n type: 'text',\r\n formName: 'currentNeeds',\r\n });\r\n }\r\n },\r\n //* waiverEnrollment\r\n waivEnrollWaiverEnrollmentIsRequired: async ({ value }) => {\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].toggleDisabled(\r\n value === 'no' ? false : true,\r\n );\r\n\r\n if (value !== 'no') {\r\n wlForms['waiverEnrollment'].inputs['waivEnrollWaiverEnrollmentDescription'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'waivEnrollWaiverEnrollmentDescription',\r\n type: 'text',\r\n formName: 'waiverEnrollment',\r\n });\r\n }\r\n },\r\n };\r\n const onChangeCallbacksFormWatch = {\r\n conditions: async ({ name, value }) => {\r\n const conditionPageAllYes = isConditionInputsAllYes();\r\n\r\n if (!conditionPageAllYes) {\r\n let formsToDelete = [];\r\n\r\n [\r\n 'behavioral',\r\n 'physical',\r\n 'medical',\r\n 'other',\r\n 'waiverEnrollment',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n 'immediateNeeds',\r\n 'currentNeeds',\r\n 'currentAvailableServices',\r\n 'primaryCaregiver',\r\n ].forEach(formName => {\r\n wlForms[formName].form.parentElement.classList.add('hiddenPage');\r\n tocLinks[formName].classList.add('hiddenPage');\r\n wlForms[formName].clear();\r\n tocLinks[formName].classList.remove('formComplete');\r\n if (sectionResets[formName]) {\r\n sectionResets[formName]();\r\n }\r\n\r\n if (wlFormInfo[formName].id) {\r\n formsToDelete.push(`${wlFormInfo[formName].id}|${wlFormInfo[formName].dbtable}`);\r\n wlFormInfo[formName].id = '';\r\n }\r\n });\r\n\r\n contributingCircumstancesWrap.classList.add('hiddenPage');\r\n needsWrap.classList.add('hiddenPage');\r\n\r\n toggleTocLinksDisabledStatus(['contributingCircumstances', 'needs'], true);\r\n\r\n if (formsToDelete.length) {\r\n _UTIL.fetchData('deleteFromWaitingList', { properties: formsToDelete });\r\n wlCircID = '';\r\n wlNeedID = '';\r\n }\r\n\r\n return;\r\n }\r\n\r\n contributingCircumstancesWrap.classList.remove('hiddenPage');\r\n wlForms['primaryCaregiver'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['waiverEnrollment'].form.parentElement.classList.remove('hiddenPage');\r\n wlForms['currentAvailableServices'].form.parentElement.classList.remove('hiddenPage');\r\n\r\n toggleTocLinksDisabledStatus(\r\n ['contributingCircumstances', 'primaryCaregiver', 'waiverEnrollment', 'currentAvailableServices'],\r\n false,\r\n );\r\n\r\n // get circumstance id\r\n if (!wlCircID) {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: wlLinkID,\r\n propertyName: 'getCircumstanceId',\r\n value: '',\r\n });\r\n\r\n wlCircID = resp[0].newRecordId;\r\n }\r\n // get needs id\r\n if (!wlNeedID && wlCircID) {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: wlCircID,\r\n propertyName: 'needsIsActionRequiredRequiredIn30Days',\r\n value: '',\r\n });\r\n wlNeedID = resp[0].newRecordId;\r\n wlFormInfo['other'].id = wlNeedID;\r\n }\r\n },\r\n };\r\n async function onFormChange(event) {\r\n const type = event.target.type;\r\n const name = event.target.name;\r\n const id = event.target.id;\r\n const formName = event.target.form.name;\r\n let value = event.target.value;\r\n let checkboxGroupId;\r\n\r\n if (type === 'checkbox') {\r\n value = event.target.checked ? 'on' : 'off';\r\n checkboxGroupId = event.target.closest('fieldset')?.id;\r\n }\r\n\r\n await insertUpdateAssessmentData({ value, name, type, formName });\r\n\r\n if (onChangeCallbacks[name]) {\r\n await onChangeCallbacks[name]({ value, name });\r\n }\r\n\r\n if (onChangeCallbacks[checkboxGroupId]) {\r\n await onChangeCallbacks[checkboxGroupId]({ value, name });\r\n }\r\n\r\n if (onChangeCallbacksFormWatch[formName]) {\r\n await onChangeCallbacksFormWatch[formName]({\r\n value,\r\n name,\r\n formName,\r\n });\r\n }\r\n\r\n updateFormCompletionStatus(formName);\r\n checkIsAssessmentComplete();\r\n setConclusion();\r\n toggleSendEmailDisabledStatus();\r\n }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n function attachEvents() {\r\n sendEmailButton.onClick(async () => {\r\n sendEmailPopup.show();\r\n await updateQueue.forceSendUpdates();\r\n });\r\n sendEmailForm.onSubmit(async (data, submitter) => {\r\n let resp = await _UTIL.fetchData('generateWaitingListAssessmentReport', {\r\n waitingListId: wlLinkID,\r\n });\r\n resp = resp.generateWaitingListAssessmentReportResult;\r\n\r\n function checkIfReportIsReadyInterval(res) {\r\n // Get the interval in seconds from the session and convert it to milliseconds\r\n const intervalSeconds = parseInt($.session.reportSeconds);\r\n const intervalMilliseconds = intervalSeconds * 250;\r\n\r\n // Set up an interval to execute the checkIfReportExists function periodically\r\n const interval = setInterval(async () => {\r\n const reportExists = await checkIfReportExists(res);\r\n if (reportExists) {\r\n clearInterval(interval);\r\n const resp2 = await _UTIL.fetchData('sendWaitingListAssessmentReport', {\r\n header: data['emailHeader'],\r\n body: data['emailBody'],\r\n reportScheduleId: res,\r\n waitingListId: wlLinkID,\r\n });\r\n }\r\n }, intervalMilliseconds);\r\n }\r\n\r\n async function checkIfReportExists(res) {\r\n const data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n\r\n try {\r\n const response = await $.ajax({\r\n type: 'POST',\r\n url: `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/checkIfReportExists/`,\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return response.checkIfReportExistsResult.indexOf('1') !== -1;\r\n } catch (error) {\r\n console.error('Error:', error);\r\n return false;\r\n }\r\n }\r\n\r\n checkIfReportIsReadyInterval(resp);\r\n\r\n sendEmailPopup.close();\r\n });\r\n sendEmailForm.onReset(() => {\r\n sendEmailPopup.close();\r\n });\r\n\r\n documentsButton.onClick(async () => {\r\n documentsPopup.show();\r\n await updateQueue.forceSendUpdates();\r\n });\r\n documentsForm.onSubmit(async (data, submitter, formId) => {\r\n const attachDetails = await _DOM.getAttachmentDetails(data['test']);\r\n\r\n const documentId = await saveDocument(attachDetails);\r\n\r\n const fileName = _UTIL.truncateFilename(attachDetails.description, 10);\r\n wlDocuments[documentId] = {\r\n id: documentId,\r\n values: [fileName, attachDetails.type],\r\n };\r\n\r\n addNewDocumentToList({ documentId, fileName });\r\n\r\n documentsForm.clear();\r\n });\r\n documentsForm.onReset(() => {\r\n documentsPopup.close();\r\n });\r\n\r\n participantsForm.onSubmit(async (data, submitter, formId) => {\r\n if (formId) {\r\n await updateAssessmentData({\r\n id: formId,\r\n linkId: wlLinkID,\r\n propertyName: 'participants',\r\n value: data.participantName,\r\n valueTwo: data.participantRelationship,\r\n });\r\n wlParticipants[formId].values = [data.participantName, data.participantRelationship];\r\n } else {\r\n const resp = await insertAssessmentData({\r\n id: 0,\r\n linkId: wlLinkID,\r\n propertyName: 'participants',\r\n value: data.participantName,\r\n valueTwo: data.participantRelationship,\r\n });\r\n const participantId = resp[0].newRecordId;\r\n\r\n wlParticipants[participantId] = {\r\n id: participantId,\r\n values: [data.participantName, data.participantRelationship],\r\n };\r\n }\r\n\r\n // clear form\r\n participantsForm.clear();\r\n\r\n // repop table\r\n participantsTable.populate(Object.values(wlParticipants));\r\n\r\n tocLinks['participants'].classList.toggle('formComplete', Object.values(wlParticipants).length);\r\n });\r\n participantsTable.onRowClick(rowId => {\r\n if (!$.session.waitingListUpdate) return;\r\n\r\n const rowData = wlParticipants[rowId];\r\n participantsForm.populate(\r\n {\r\n participantName: rowData.values[0],\r\n participantRelationship: rowData.values[1],\r\n },\r\n rowId,\r\n );\r\n });\r\n participantsTable.onRowDelete(async (row, rowId) => {\r\n if (!$.session.waitingListUpdate) return;\r\n\r\n await _UTIL.fetchData('deleteWaitingListParticipant', {\r\n participantId: parseInt(rowId),\r\n });\r\n\r\n delete wlParticipants[rowId];\r\n\r\n participantsTable.populate(Object.values(wlParticipants));\r\n\r\n tocLinks['participants'].classList.toggle('formComplete', Object.values(wlParticipants).length);\r\n });\r\n\r\n backButton.onClick(async () => {\r\n await updateQueue.forceSendUpdates();\r\n WaitingListOverview.init({ moduleHeader, moduleBody, selectedConsumer });\r\n });\r\n }\r\n function loadPage() {\r\n // Header\r\n consumerCard.renderTo(moduleHeader);\r\n const primaryButtonWrap = _DOM.createElement('div');\r\n backButton.renderTo(primaryButtonWrap);\r\n sendEmailButton.renderTo(primaryButtonWrap);\r\n documentsButton.renderTo(primaryButtonWrap);\r\n moduleHeader.appendChild(primaryButtonWrap);\r\n\r\n sendEmailForm.renderTo(sendEmailPopup.dialog);\r\n sendEmailPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n doucmentsList = _DOM.createElement('div', { class: 'docList' });\r\n documentsPopup.dialog.appendChild(doucmentsList);\r\n documentsForm.renderTo(documentsPopup.dialog);\r\n documentsPopup.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // Assessment\r\n for (section in sections) {\r\n const isContributingCircumstancesSubSection = [\r\n 'needs',\r\n 'primaryCaregiver',\r\n 'riskMitigation',\r\n 'icfDischarge',\r\n 'intermittentSupports',\r\n 'childProtectionAgency',\r\n 'adultDayEmployment',\r\n 'dischargePlan',\r\n ].includes(section);\r\n const isNeedsSubSection = ['behavioral', 'physical', 'medical', 'other'].includes(section);\r\n\r\n // Build TOC\r\n const className = isContributingCircumstancesSubSection || isNeedsSubSection ? 'subsection' : 'section';\r\n const tocSection = _DOM.createElement('p', { class: [className, section] });\r\n const tocSectionLink = _DOM.createElement('a', { href: `#${section}`, text: sections[section].name });\r\n const statusIcon = Icon.getIcon('error');\r\n tocSection.appendChild(tocSectionLink);\r\n tocSection.appendChild(statusIcon);\r\n tableOfContents.appendChild(tocSection);\r\n tocSection.classList.toggle('hiddenPage', !sections[section].enabled);\r\n tocLinks[section] = tocSection;\r\n\r\n // Build Form\r\n const sectionWrap = _DOM.createElement('div', { id: section, class: 'wlPage' });\r\n const sectionHeader = _DOM.createElement('h2', {\r\n text: section === 'icfDischarge' ? 'ICF Discharge' : _UTIL.convertCamelCaseToTitle(section),\r\n });\r\n sectionWrap.appendChild(sectionHeader);\r\n sectionWrap.classList.toggle('hiddenPage', !sections[section].enabled);\r\n\r\n if (section === 'participants') {\r\n participantsTable.renderTo(sectionWrap);\r\n participantsForm.renderTo(sectionWrap);\r\n assessmentWrap.appendChild(sectionWrap);\r\n continue;\r\n }\r\n\r\n if (section === 'contributingCircumstances') {\r\n contributingCircumstancesWrap = sectionWrap;\r\n tocSection.classList.add('parent');\r\n }\r\n if (section === 'needs') {\r\n needsWrap = sectionWrap;\r\n tocSection.classList.add('parent');\r\n }\r\n\r\n if (sections[section].formElements) {\r\n wlForms[section] = new Form({\r\n hideAllButtons: true,\r\n fields: sections[section].formElements,\r\n formName: section,\r\n });\r\n\r\n wlForms[section].renderTo(sectionWrap);\r\n wlForms[section].onChange(onFormChange);\r\n }\r\n\r\n if (isContributingCircumstancesSubSection) {\r\n contributingCircumstancesWrap.appendChild(sectionWrap);\r\n } else if (isNeedsSubSection) {\r\n needsWrap.appendChild(sectionWrap);\r\n } else {\r\n assessmentWrap.appendChild(sectionWrap);\r\n }\r\n }\r\n }\r\n function loadPageSkeleton() {\r\n moduleBody.innerHTML = '';\r\n moduleHeader.innerHTML = '';\r\n\r\n tableOfContents = _DOM.createElement('div', { class: 'waitingListTableOFContents' });\r\n assessmentWrap = _DOM.createElement('div', { class: 'waitingListAssessment' });\r\n\r\n moduleBody.appendChild(tableOfContents);\r\n moduleBody.appendChild(assessmentWrap);\r\n }\r\n\r\n // INIT (data & defaults)\r\n //--------------------------------------------------\r\n function initFormInfo() {\r\n return {\r\n waitingListInfo: { dbtable: 'WLA_Waiting_List_Information' },\r\n conditions: { dbtable: 'WLA_Conditions' },\r\n primaryCaregiver: { dbtable: 'WLA_Primary_Caregivers' },\r\n adultDayEmployment: { dbtable: 'WLA_Require_Waiver_Fundings' },\r\n childProtectionAgency: { dbtable: 'WLA_Child_Protection_Agencies' },\r\n currentAvailableServices: { dbtable: 'WLA_Active_Services' },\r\n currentNeeds: { dbtable: 'WLA_Unmet_Needs' },\r\n dischargePlan: { dbtable: 'WLA_Discharge_Plans' },\r\n icfDischarge: { dbtable: 'WLA_ICF_Discharges' },\r\n intermittentSupports: { dbtable: 'WLA_Intermitent_Supports' },\r\n immediateNeeds: { dbtable: 'WLA_Immediate_Needs' },\r\n riskMitigation: { dbtable: 'WLA_Risk_Mitigations' },\r\n waiverEnrollment: { dbtable: 'WLA_Waiver_Enrollments' },\r\n behavioral: { dbtable: 'WLA_Risks' },\r\n physical: { dbtable: 'WLA_Physical_Needs' },\r\n medical: { dbtable: 'WLA_Medical_Needs' },\r\n other: { dbtable: 'WLA_Needs' },\r\n conclusion: { dbtable: 'WLA_Waiting_List_Information' },\r\n };\r\n }\r\n function initComponents() {\r\n // Participants\r\n participantsTable = new Table({\r\n columnSortable: true,\r\n allowDelete: true,\r\n headings: [\r\n {\r\n text: 'Name of Participant',\r\n type: 'string',\r\n },\r\n {\r\n text: 'Relationship to Individual',\r\n type: 'string',\r\n },\r\n ],\r\n });\r\n participantsForm = new Form({\r\n fields: [\r\n {\r\n type: 'text',\r\n label: 'Name of Participant',\r\n id: 'participantName',\r\n //required: true,\r\n },\r\n {\r\n type: 'text',\r\n label: 'Relationship to Individual',\r\n id: 'participantRelationship',\r\n //required: true,\r\n },\r\n ],\r\n });\r\n\r\n // Reports\r\n sendEmailButton = new Button({\r\n text: 'Send Report',\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: true,\r\n });\r\n sendEmailForm = new Form({\r\n fields: [\r\n {\r\n type: 'text',\r\n label: 'Email Header',\r\n id: 'emailHeader',\r\n value: 'Waiting List Assessment',\r\n },\r\n {\r\n type: 'text',\r\n label: 'Email Body',\r\n id: 'emailBody',\r\n value: `Waiting list assessment for ${selectedConsumer.firstName} ${selectedConsumer.middleName} ${selectedConsumer.lastName} attached`,\r\n },\r\n ],\r\n });\r\n sendEmailPopup = new Dialog({ className: 'wlEmailPopup' });\r\n\r\n // Documents\r\n documentsButton = new Button({\r\n text: 'Add New Documentation',\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: !$.session.waitingListUpdate,\r\n });\r\n documentsForm = new Form({\r\n fields: [\r\n { type: 'file', id: 'test', label: 'Document Upload' },\r\n { type: 'checkbox', id: 'email', label: 'Include in email?' },\r\n ],\r\n });\r\n documentsPopup = new Dialog({ className: 'wlDocumentPopup' });\r\n\r\n // Back to overview\r\n backButton = new Button({\r\n text: 'Back',\r\n style: 'primary',\r\n styleType: 'outlined',\r\n });\r\n\r\n // consumer card\r\n consumerCard = new RosterCard({\r\n consumerId: selectedConsumer.id,\r\n firstName: selectedConsumer.firstName,\r\n middleName: selectedConsumer.middleName,\r\n lastName: selectedConsumer.lastName,\r\n });\r\n\r\n // Save/Update Queue\r\n updateQueue = new _UTIL.AsyncQueue('insertUpdateWaitingListValue', maxQueueSize, responses => {});\r\n }\r\n\r\n async function init(opts) {\r\n wlCircID = '';\r\n wlNeedID = '';\r\n wlForms = {};\r\n tocLinks = {};\r\n wlDocuments = [];\r\n wlParticipants = {};\r\n wlFormInfo = initFormInfo();\r\n wlData = mapDataBySection(opts.wlData);\r\n selectedConsumer = opts.selectedConsumer;\r\n moduleHeader = opts.moduleHeader;\r\n moduleBody = opts.moduleBody;\r\n\r\n loadPageSkeleton();\r\n initComponents();\r\n loadPage();\r\n attachEvents();\r\n\r\n const fundingSources = await getFundingSources();\r\n\r\n if (!wlData) {\r\n const resp = await insertNewWaitingListAssessment(selectedConsumer.id);\r\n wlLinkID = resp[0].newRecordId;\r\n wlFormInfo['waitingListInfo'].id = wlLinkID;\r\n wlFormInfo['conclusion'].id = wlLinkID;\r\n wlForms['conclusion'].inputs['fundingSourceId'].populate(fundingSources);\r\n\r\n return;\r\n }\r\n\r\n isNewAssessment = false;\r\n enableSectionsForReview();\r\n enableInputsForReview();\r\n\r\n for (section in wlData) {\r\n wlForms[section].populate(wlData[section]);\r\n updateFormCompletionStatus(section);\r\n if (!$.session.waitingListUpdate) {\r\n wlForms[section].disableFormInputs(true);\r\n }\r\n }\r\n\r\n if (!$.session.waitingListUpdate) {\r\n participantsForm.disableFormInputs(true);\r\n }\r\n\r\n participantsTable.populate(Object.values(wlParticipants));\r\n\r\n tocLinks['participants'].classList.toggle('formComplete', Object.values(wlParticipants).length);\r\n\r\n wlForms['conclusion'].inputs['fundingSourceId'].populate(fundingSources, wlData['conclusion'].fundingSourceId);\r\n if (!$.session.waitingListUpdate) {\r\n wlForms['conclusion'].inputs['fundingSourceId'].toggleDisabled(true);\r\n }\r\n\r\n toggleSendEmailDisabledStatus();\r\n\r\n const docResp = await _UTIL.fetchData('getWLSupportingDocumentList', { waitingListInformationId: wlLinkID });\r\n for (const doc of docResp.getWLSupportingDocumentListResult) {\r\n const fileName = _UTIL.truncateFilename(doc.description, 10);\r\n wlDocuments[doc.supportingDocumentId] = {\r\n id: doc.supportingDocumentId,\r\n values: [fileName, doc.type],\r\n };\r\n\r\n addNewDocumentToList({ documentId: doc.supportingDocumentId, fileName });\r\n }\r\n }\r\n\r\n return { init, unload };\r\n})();\r\n","(function (global, factory) {\r\n global.WaitingListData = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Constructor function\r\n *\r\n * @constructor\r\n * @returns {WaitingListData}\r\n */\r\n function WaitingListData() {}\r\n\r\n //getWaitingListFundingSources\r\n\r\n WaitingListData.prototype.insertWaitingListAssessment = async function (consumerId) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id: 0,\r\n linkId: 0,\r\n propertyName: 'consumerId',\r\n value: consumerId,\r\n valueTwo: '',\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n };\r\n\r\n WaitingListData.prototype.insertAssessmentData = async function ({ id, linkId, propertyName, value, valueTwo = '' }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'I',\r\n });\r\n\r\n return JSON.parse(data.insertUpdateWaitingListValueResult);\r\n };\r\n\r\n WaitingListData.prototype.updateAssessmentData = async function ({\r\n id,\r\n linkId = 0,\r\n propertyName,\r\n value,\r\n valueTwo = '',\r\n }) {\r\n const data = await _UTIL.fetchData('insertUpdateWaitingListValue', {\r\n id,\r\n linkId,\r\n propertyName,\r\n value,\r\n valueTwo,\r\n insertOrUpdate: 'U',\r\n });\r\n\r\n return data.insertUpdateWaitingListValueResult;\r\n };\r\n\r\n WaitingListData.prototype.getReviewDataByConsumer = async function (consumerId) {\r\n const data = await _UTIL.fetchData('getLandingPageForConsumer', {\r\n consumerId,\r\n });\r\n\r\n // string wlInfoId\r\n // string interviewDate\r\n // string conclusionResult\r\n // string conclusionDate\r\n // string sentToDODD\r\n\r\n // TODO-ASH: replace conclusionResult id with name, get from dropdown data\r\n return data.getLandingPageForConsumerResult.map(\r\n ({ wlInfoId, interviewDate, conclusionResult, conclusionDate, sentToDODD }) => {\r\n return {\r\n id: wlInfoId,\r\n values: [\r\n UTIL.formatDateToIso(interviewDate.split(' ')[0]),\r\n conclusionResult,\r\n conclusionDate,\r\n UTIL.formatDateToIso(sentToDODD.split(' ')[0]),\r\n ],\r\n };\r\n },\r\n );\r\n };\r\n\r\n return WaitingListData;\r\n});\r\n","const WaitingListOverview = (() => {\r\n let selectedRow, selectedRowId;\r\n // UI Instances\r\n let selectedConsumer;\r\n let overviewWrap;\r\n let wlReviewTable;\r\n let deleteWarningPopup;\r\n\r\n // DATA\r\n //--------------------------------------------------\r\n async function getReviewDataByConsumer(consumerId) {\r\n const data = await _UTIL.fetchData('getLandingPageForConsumer', {\r\n consumerId,\r\n });\r\n\r\n // string wlInfoId\r\n // string interviewDate\r\n // string conclusionResult\r\n // string conclusionDate\r\n // string sentToDODD\r\n\r\n const conclusionResults = {\r\n 0: 'No qualifying condition',\r\n 1: 'Immediate Need',\r\n 2: 'Current Need',\r\n 3: 'Neither Immediate Need nor Current Need',\r\n };\r\n\r\n let alreadyHasAssessmentForToday = false;\r\n\r\n const tableData = data.getLandingPageForConsumerResult\r\n .map(({ wlInfoId, interviewDate, conclusionResult, conclusionDate, sentToDODD }) => {\r\n const isToday = new Date().setHours(0, 0, 0, 0) === new Date(interviewDate).setHours(0, 0, 0, 0);\r\n if (isToday) alreadyHasAssessmentForToday = true;\r\n\r\n return {\r\n id: wlInfoId,\r\n values: [\r\n UTIL.formatDateToIso(interviewDate.split(' ')[0]),\r\n conclusionResults[conclusionResult],\r\n UTIL.formatDateToIso(conclusionDate.split(' ')[0]),\r\n UTIL.formatDateToIso(sentToDODD.split(' ')[0]),\r\n ],\r\n };\r\n })\r\n .sort((a, b) => {\r\n const dateA = new Date(a.values[0]).getTime();\r\n const dateB = new Date(b.values[0]).getTime();\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n\r\n return { tableData, alreadyHasAssessmentForToday };\r\n }\r\n\r\n // EVENTS\r\n //--------------------------------------------------\r\n async function populateReviewTable() {\r\n wlReviewTable.clear();\r\n\r\n if (!selectedConsumer) {\r\n newAssessmentBtn.toggleDisabled(true);\r\n return;\r\n };\r\n\r\n const { tableData, alreadyHasAssessmentForToday } = await getReviewDataByConsumer(selectedConsumer.id);\r\n wlReviewTable.populate(tableData);\r\n const isNewAssessmentBtnDisabled = alreadyHasAssessmentForToday || !$.session.waitingListInsert;\r\n newAssessmentBtn.toggleDisabled(isNewAssessmentBtnDisabled);\r\n }\r\n function attachEvents() {\r\n newAssessmentBtn.onClick(() => {\r\n WaitingListAssessment.init({ selectedConsumer, moduleHeader, moduleBody }, true);\r\n });\r\n\r\n rosterPicker.onConsumerSelect(\r\n data => {\r\n selectedConsumer = Object.values(data)[0];\r\n populateReviewTable();\r\n },\r\n { idkyet: true },\r\n );\r\n\r\n wlReviewTable.onRowClick(async rowId => {\r\n if (!$.session.waitingListView) return;\r\n const resp = await _UTIL.fetchData('getWaitingListAssessment', { waitingListAssessmentId: parseInt(rowId) });\r\n WaitingListAssessment.init({\r\n wlData: resp.getWaitingListAssessmentResult[0],\r\n selectedConsumer: selectedConsumer,\r\n moduleHeader,\r\n moduleBody,\r\n });\r\n });\r\n wlReviewTable.onRowDelete(async (row, rowId) => {\r\n selectedRow = row;\r\n selectedRowId = rowId;\r\n\r\n deleteWarningPopup.show();\r\n });\r\n }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n function populateDeleteWarningPopup() {\r\n const messageEle = _DOM.createElement('p', {\r\n class: 'confirmation__message',\r\n text: 'Are you sure you want to delete this assessment?'\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n const confirmButton = new Button({\r\n text: 'Yes',\r\n name: 'confirm',\r\n //icon: 'checkmark', \r\n });\r\n const cancelButton = new Button({\r\n text: 'No',\r\n name: 'cancel',\r\n //icon: 'close',\r\n });\r\n\r\n confirmButton.onClick(async () => {\r\n const resp = await _UTIL.fetchData('deleteWaitingListAssessment', {\r\n waitingListId: parseInt(selectedRowId),\r\n });\r\n\r\n wlReviewTable.removeRow(selectedRow);\r\n\r\n deleteWarningPopup.close();\r\n\r\n selectedRow = null;\r\n selectedRowId = null;\r\n });\r\n cancelButton.onClick(() => {\r\n deleteWarningPopup.close();\r\n });\r\n\r\n confirmButton.renderTo(btnWrap);\r\n cancelButton.renderTo(btnWrap);\r\n\r\n deleteWarningPopup.dialog.appendChild(messageEle);\r\n deleteWarningPopup.dialog.appendChild(btnWrap);\r\n }\r\n async function loadPage() {\r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate();\r\n\r\n deleteWarningPopup.renderTo(_DOM.ACTIONCENTER);\r\n populateDeleteWarningPopup();\r\n }\r\n function loadPageSkeleton() {\r\n moduleBody.innerHTML = '';\r\n moduleHeader.innerHTML = '';\r\n\r\n overviewWrap = _DOM.createElement('div', { class: 'waitingListOverview' });\r\n\r\n moduleBody.appendChild(overviewWrap);\r\n\r\n wlReviewTable.renderTo(overviewWrap);\r\n rosterPicker.renderTo(overviewWrap);\r\n newAssessmentBtn.renderTo(moduleHeader);\r\n }\r\n\r\n // INIT (data & defaults)\r\n //--------------------------------------------------\r\n function initComponents() {\r\n wlReviewTable = new Table({\r\n columnSortable: true,\r\n allowDelete: $.session.waitingListDelete,\r\n headings: [\r\n {\r\n text: 'Interview Date',\r\n type: 'date',\r\n },\r\n {\r\n text: 'Conclusion',\r\n type: 'string',\r\n },\r\n {\r\n text: 'Conclusion Date',\r\n type: 'date',\r\n },\r\n {\r\n text: 'Sent To DODD',\r\n type: 'date',\r\n },\r\n ],\r\n });\r\n\r\n rosterPicker = new RosterPicker({\r\n allowMultiSelect: false,\r\n consumerRequired: true,\r\n });\r\n\r\n newAssessmentBtn = new Button({\r\n text: 'New Assessment',\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: true,\r\n });\r\n\r\n deleteWarningPopup = new Dialog({ className: 'wlDeleteWarningPopup' });\r\n }\r\n async function reload() {\r\n loadPageSkeleton();\r\n await loadPage();\r\n attachEvents();\r\n }\r\n async function init(opts) {\r\n moduleHeader = opts.moduleHeader;\r\n moduleBody = opts.moduleBody;\r\n selectedConsumer = opts.selectedConsumer;\r\n\r\n initComponents();\r\n loadPageSkeleton();\r\n await loadPage();\r\n attachEvents();\r\n\r\n if (selectedConsumer) {\r\n populateReviewTable();\r\n rosterPicker.setSelectedConsumers([selectedConsumer.id]);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n reload,\r\n };\r\n})();\r\n","const workflow = (\r\n function() {\r\n \r\n function init(){ \r\n\r\n \r\n // PRETEND TO BE THE PLAN MODULE \r\n const viewerBtnOpts = {\r\n text: 'Launch Viewer',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => WorkflowViewerComponent.open(WorkflowProcess.CONSUMER_PLAN_ANNUAL, '686614946775502')\r\n };\r\n const viewerBtn = button.build(viewerBtnOpts);\r\n viewerBtn.style = \"margin: 20px\";\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(viewerBtn);\r\n\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n \r\n } \r\n\r\n return {\r\n init\r\n }\r\n\r\n }\r\n)();","$.session.defaultWorkshopLocationId \r\n// if this session varaible is an null, sets 'defaultLocation' to a generic location object {id: 0, text: \"Location\"}.\r\n// Otherwise, sets 'defaultLocation' to object {id: 'defaultWorkshopLocaitonID', text: \"\"}.\r\n// ALSO if this session variable is NOT Null, it assigns a variable 'nullLocation to a generic location object {id: 0, text: \"Location\"}.\r\n\r\n$.session.workshopBatchId\r\n// Used in displaySelectBatch ajax call. THis call creates a list of the 'data' that is passed into it. The session variable is being set to 'data.id' of\r\n// the element that is clicked??\r\n","var workshop = (function () {\r\n //DOM ELEMENTS\r\n var locationDropdown;\r\n var jobDropdown;\r\n var supervisorDropdown;\r\n var multiSelectBtn;\r\n var clockOutNavBtn;\r\n var consumerListBtn;\r\n var filterBtn;\r\n //DROPDOWN DATA\r\n var locationDropdownData;\r\n var locationFilterDropdownData;\r\n var jobDropdownData;\r\n var updateJobFilterDropdownData;\r\n var jobFilterDropdownData;\r\n var supervisorDropdownData;\r\n\r\n var enableMultiEdit = false;\r\n //Values\r\n var locationID;\r\n var selectedBatchId;\r\n var enabledConsumers;\r\n var selectedConsumers = [];\r\n var multiConsumerSelect = [];\r\n var minStart;\r\n var minDateIso;\r\n var maxDateIso;\r\n var maxEnd;\r\n var displayDateIso;\r\n var workshopFilterListData = {\r\n token: \"\",\r\n selectedDate: \"\",\r\n consumerIds: enabledConsumers,\r\n locationId: 0,\r\n jobStepId: 0,\r\n application: \"\",\r\n batchId: selectedBatchId,\r\n locationName: \"\"\r\n };\r\n var filterCache = {\r\n locationSelectedOpt: 0,\r\n jobStepSelectedOpt: 0\r\n };\r\n var mainTableData = {};\r\n var mainJobData = {};\r\n var mainLocationData = {};\r\n let initalRosterLoad\r\n let activeModulesConsumers = []\r\n\r\n let btnWrap;\r\n let locationBtnWrap;\r\n let jobStepBtnWrap;\r\n let serviceDateBtnWrap;\r\n\r\n\r\n //UTIL =====================================\r\n function compareSupList(a, b) {\r\n const nameA = a.text.toUpperCase();\r\n const nameB = b.text.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (nameA > nameB) {\r\n comparison = 1;\r\n } else if (nameA < nameB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n function checkRequiredFields(btn) {\r\n var hasErrors = [].slice.call(document.querySelectorAll(\".error\"));\r\n if (hasErrors.length === 0) {\r\n btn.classList.remove(\"disabled\");\r\n } else {\r\n btn.classList.add(\"disabled\");\r\n }\r\n }\r\n\r\n // ERROR POPUPS\r\n var errorPopup = POPUP.build({\r\n header: \"ERROR\",\r\n id: \"errorPopup\",\r\n classNames: \"error\"\r\n });\r\n var errorPopupText = document.createElement(\"p\");\r\n errorPopupText.classList.add(\"errorTextArea\");\r\n errorPopup.appendChild(errorPopupText);\r\n //=============================================\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function setupActionNav() {\r\n // show clockout button\r\n clockOutNavBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"disabled\",\r\n callback: function () {\r\n multiConsumerSelect.forEach(consumer => {\r\n let obj = {};\r\n obj[\"id\"] = consumer;\r\n selectedConsumers.push(obj);\r\n });\r\n clockInOutActionPopup(\"out\");\r\n //Reset Stuff\r\n consumerListBtn = document.querySelector(\".consumerListBtn\");\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n multiConsumerSelect = [];\r\n filterBtn.classList.remove(\"disabled\");\r\n multiSelectBtn.classList.remove(\"enabled\");\r\n consumerListBtn.classList.remove(\"disabled\");\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll(\".selected\");\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove(\"selected\");\r\n });\r\n }\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([clockOutNavBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n function checkOpenBatches() {\r\n workshopAjax.WorkshopPreBatchLoad(d => {\r\n var openBatches;\r\n openBatches = d;\r\n let batchPickerPopup = document.createElement(\"div\");\r\n batchPickerPopup.classList.add(\"popup\", \"visable\", \"batchPicker\");\r\n\r\n let header = document.createElement(\"h2\");\r\n header.classList.add(\"popupHeader\");\r\n batchPickerPopup.appendChild(header);\r\n\r\n if (openBatches.length == 1) {\r\n selectedBatchId = openBatches[0].id;\r\n minStart = openBatches[0].startdate;\r\n maxEnd = openBatches[0].enddate;\r\n initPageLoad();\r\n } else if (openBatches.length > 1) {\r\n header.innerHTML = \"Please Select A Batch\";\r\n let applyBtn = button.build({\r\n id: \"apply\",\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n selectedBatchId =\r\n selectedBatchId === \"\" ? openBatches[0].id : selectedBatchId;\r\n for (var x = 0; x < openBatches.length; x++) {\r\n if (openBatches[x].id === selectedBatchId) {\r\n minStart = openBatches[x].startdate;\r\n maxEnd = openBatches[x].enddate;\r\n }\r\n }\r\n DOM.ACTIONCENTER.removeChild(batchPickerPopup);\r\n overlay.hide();\r\n initPageLoad();\r\n }\r\n });\r\n\r\n let batchDropdown = dropdown.build({\r\n dropdownId: \"batchDropdown\",\r\n label: \"Batch\",\r\n style: \"secondary\"\r\n });\r\n let today = UTIL.getTodaysDate();\r\n let defaultId = 0;\r\n today = new Date(today.replace(/-/g, '\\/'));\r\n openBatches.forEach(findCorrectDates);\r\n function findCorrectDates(ele) {\r\n let startDate = new Date(ele.startdate);\r\n let endDate = new Date(ele.enddate);\r\n if (today >= startDate && today <= endDate) {\r\n defaultId = ele.id;\r\n openBatches.splice(openBatches.indexOf(ele), 1);\r\n openBatches.unshift(ele);\r\n }\r\n }\r\n let dropdownData = openBatches.map(b => {\r\n var id = b.id;\r\n var value = b.id;\r\n var text = b.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n\r\n batchPickerPopup.appendChild(batchDropdown);\r\n batchPickerPopup.appendChild(applyBtn);\r\n DOM.ACTIONCENTER.appendChild(batchPickerPopup);\r\n dropdown.populate(\"batchDropdown\", dropdownData);\r\n batchDropdown.addEventListener(\"change\", () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedBatchId = selectedOption.id;\r\n selectedBatchId = parseInt(selectedBatchId);\r\n });\r\n overlay.show();\r\n } else {\r\n header.innerHTML =\r\n \"There are no batches available for this date. Please contact your workshop administrator.\";\r\n let exitBtn = button.build({\r\n id: \"exit\",\r\n text: \"Exit\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n DOM.ACTIONCENTER.removeChild(batchPickerPopup);\r\n overlay.hide();\r\n loadApp('home')\r\n }\r\n });\r\n overlay.show();\r\n batchPickerPopup.appendChild(exitBtn);\r\n DOM.ACTIONCENTER.appendChild(batchPickerPopup);\r\n }\r\n });\r\n }\r\n\r\n function breakDownConsumerList(consumerArray) {\r\n var consumerIdList = consumerArray.map(c => c.id).join(\",\");\r\n return consumerIdList;\r\n }\r\n\r\n function buildSelectionFields() {\r\n minDateIso = UTIL.formatDateToIso(minStart.split(\" \")[0]);\r\n maxDateIso = UTIL.formatDateToIso(maxEnd.split(\" \")[0]);\r\n let today = UTIL.getTodaysDate();\r\n\r\n if (today < minDateIso || today > maxDateIso) {\r\n displayDateIso = minDateIso;\r\n } else {\r\n displayDateIso = today;\r\n }\r\n //dropdown supervisor\r\n supervisorDropdown = dropdown.build({\r\n dropdownId: \"supervisorDropdown\",\r\n label: \"Supervisor\",\r\n style: \"secondary\"\r\n });\r\n dateSelection = input.build({\r\n id: \"date\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: displayDateIso,\r\n attributes: [\r\n { key: \"min\", value: minDateIso },\r\n { key: \"max\", value: maxDateIso }\r\n ]\r\n });\r\n\r\n dateSelection.addEventListener(\"keydown\", event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n })\r\n\r\n dateSelection.addEventListener(\"change\", event => {\r\n workshopFilterListData.selectedDate = event.target.value;\r\n })\r\n\r\n }\r\n\r\n function initialData() {\r\n // Initial Date: if todays date is in the current batch, initial date is today.\r\n // else, Initial date is the first day of the batch(minStart).\r\n minDateIso = UTIL.formatDateToIso(minStart.split(\" \")[0]);\r\n maxDateIso = UTIL.formatDateToIso(maxEnd.split(\" \")[0]);\r\n let today = UTIL.getTodaysDate();\r\n let defaultWorkshopLocation = defaults.getLocation(\"workshop\");\r\n if (defaultWorkshopLocation === \"\") defaultWorkshopLocation = 0;\r\n locationID = defaultWorkshopLocation;\r\n if (today < minDateIso || today > maxDateIso) {\r\n displayDateIso = minDateIso;\r\n } else {\r\n displayDateIso = today;\r\n }\r\n roster2.updateSelectedDate(displayDateIso)\r\n workshopFilterListData.selectedDate = displayDateIso;\r\n workshopFilterListData.batchId = selectedBatchId;\r\n workshopFilterListData.token = $.session.Token;\r\n workshopFilterListData.application = $.session.applicationName;\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n //Only allow enabled consumers - Date, LocaitonID, returns consumers (called employee_id).\r\n workshopAjax.getEnabledConsumersForWorkshop(\r\n displayDateIso,\r\n defaultWorkshopLocation,\r\n res => {\r\n const allowedConsumers = []\r\n res.forEach(r => {\r\n var consumer_id = r.employee_id;\r\n const filteredConsumer = activeModulesConsumers.filter(consumer => consumer.id === consumer_id);\r\n if (filteredConsumer.length !== 0) allowedConsumers.push({ 'consumer_id': consumer_id })\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n );\r\n\r\n workshopAjax.WorkshopLocations(displayDateIso, r => {\r\n r.forEach(r => {\r\n if (!mainLocationData[r.id]) {\r\n obj = {\r\n locName: r.name\r\n };\r\n mainLocationData[r.id] = obj;\r\n }\r\n });\r\n\r\n locationDropdownData = r.map(r => {\r\n var id = `loc${r.id}`;\r\n var value = r.id;\r\n var text = r.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n locationFilterDropdownData = [...locationDropdownData];\r\n locationFilterDropdownData.unshift({ id: \"loc0\", value: 0, text: \"All\" });\r\n locationDropdownData.unshift({ id: \"loc0\", value: 0, text: \"\" });\r\n });\r\n\r\n workshopAjax.WorkshopGetSupervisors(displayDateIso, r => {\r\n supervisorDropdownData = r.map(r => {\r\n var id = `sup${r.id}`;\r\n var value = r.id;\r\n var text = r.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n supervisorDropdownData.sort(compareSupList);\r\n supervisorDropdownData.unshift({ id: \"sup0\", value: 0, text: \"\" });\r\n });\r\n\r\n workshopAjax.WorkshopGetJobCode(displayDateIso, 0, r => {\r\n r.forEach(r => {\r\n if (!mainJobData[r.jobstepid]) {\r\n obj = {\r\n activityType: r.activitytype,\r\n jobStepId: r.jobstepid,\r\n jobString: r.shortdescription\r\n };\r\n mainJobData[r.jobstepid] = obj;\r\n }\r\n });\r\n\r\n jobDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n jobFilterDropdownData = [...jobDropdownData];\r\n jobFilterDropdownData.unshift({ id: \"job0\", value: 0, text: \"All\" });\r\n jobDropdownData.unshift({ id: \"job0\", value: \"%\", text: \"\" });\r\n });\r\n }\r\n\r\n function updateJobDropdown(locationId, forFilter) {\r\n workshopAjax.WorkshopGetJobCode(displayDateIso, locationId, r => {\r\n if (forFilter) {\r\n updateJobFilterDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n updateJobFilterDropdownData.unshift({\r\n id: \"job0\",\r\n value: 0,\r\n text: \"All\"\r\n });\r\n dropdown.populate(\"filterJobDropdown\", updateJobFilterDropdownData);\r\n } else {\r\n var updateJobDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n updateJobDropdownData.unshift({ id: \"job0\", value: \"%\", text: \"\" });\r\n dropdown.populate(\"timeClockJobDropdown\", updateJobDropdownData);\r\n }\r\n });\r\n }\r\n\r\n function buildWorkshopTable(data, callback) {\r\n var tableData = data;\r\n\r\n multiSelectBtn = button.build({\r\n id: \"multiSelect\",\r\n text: \"Multi select\",\r\n icon: \"multiSelect\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"multiSelectBtn\",\r\n callback: function () {\r\n enableMultiEditRows(multiSelectBtn);\r\n filterBtn.classList.toggle(\"disabled\");\r\n }\r\n });\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n workshopLocation: workshopFilterListData.locationId,\r\n workshopJob: workshopFilterListData.jobStepId,\r\n workshopDate: workshopFilterListData.selectedDate,\r\n workshopStartDate: minDateIso,\r\n workshopEndDate: maxDateIso\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n reportsBtn = createMainReportButton([{ text: 'Job Activity Detail Report by Employee and Job' }])\r\n\r\n var workshopTableOpts = {\r\n headline: `Batch Period: ${UTIL.formatDateFromIso(\r\n minDateIso\r\n )} - ${UTIL.formatDateFromIso(\r\n maxDateIso\r\n )}
    Date: ${UTIL.formatDateFromIso(displayDateIso)}`,\r\n columnHeadings: [\r\n \"Consumer\",\r\n \"Start Time\",\r\n \"End Time\",\r\n \"Job Code\",\r\n \"Job Step\",\r\n \"Hours\",\r\n \"Quantity\",\r\n \"Supervisor\"\r\n ],\r\n tableId: \"workshopTable\",\r\n // callback: handleWorkshopTableEvents\r\n };\r\n\r\n data.forEach(d => {\r\n if (!mainTableData[d.jobactid]) {\r\n obj = {\r\n startTime: d.starttime,\r\n endTime: d.endtime,\r\n quantity: d.quantity,\r\n consumer: d.name,\r\n consumerid: d.consumerid,\r\n isPieceRate: d.activitytype === \"P\" ? true : false\r\n };\r\n mainTableData[d.jobactid] = obj;\r\n }\r\n });\r\n\r\n tableData = data.map(d => {\r\n consumerName = `${d.name.split(\" \")[1]}, ${d.name.split(\" \")[0]}`;\r\n trimedHour = d.hours.slice(0, -2);\r\n if (d.hours !== \"\") {\r\n trimedHour = Number(trimedHour);\r\n }\r\n //if ($.session.WorkshopUpdate) {\r\n return {\r\n values: [\r\n consumerName,\r\n UTIL.convertFromMilitary(d.starttime),\r\n d.endtime === \"\" ? icons.error : UTIL.convertFromMilitary(d.endtime),\r\n d.jobcode,\r\n d.jobstep,\r\n trimedHour === \"\" ? \"-\" : trimedHour,\r\n d.activitytype !== \"P\"\r\n ? \"-\"\r\n : d.quantity === \"\" || d.quantity === \"0\"\r\n ? icons.error\r\n : d.quantity,\r\n d.supervisor === \" \" ? \"-\" : d.supervisor\r\n ],\r\n id: `jobAct${d.jobactid}`,\r\n attributes: [{ key: \"data-job-activity\", value: d.jobactid }],\r\n onClick: handleWorkshopTableEvents\r\n // }\r\n //}\r\n // else {\r\n // return {\r\n // values: [\r\n // consumerName,\r\n // UTIL.convertFromMilitary(d.starttime),\r\n // d.endtime === \"\" ? icons.error : UTIL.convertFromMilitary(d.endtime),\r\n // d.jobcode,\r\n // d.jobstep,\r\n // trimedHour === \"\" ? \"-\" : trimedHour,\r\n // d.activitytype !== \"P\"\r\n // ? \"-\"\r\n // : d.quantity === \"\" || d.quantity === \"0\"\r\n // ? icons.error\r\n // : d.quantity,\r\n // d.supervisor === \" \" ? \"-\" : d.supervisor\r\n // ],\r\n // id: `jobAct${d.jobactid}` \r\n // // attributes: [{ key: \"data-job-activity\", value: d.jobactid }],\r\n // // onClick: handleWorkshopTableEvents\r\n // }\r\n }\r\n });\r\n\r\n DOM.clearActionCenter();\r\n\r\n filterSelectReportBtnWrap = document.createElement(\"div\");\r\n filterSelectReportBtnWrap.classList.add(\"btnWrap\", \"filterSelectReportBtnWrap\");\r\n\r\n filterSelectReportBtnWrap.appendChild(multiSelectBtn);\r\n filterSelectReportBtnWrap.appendChild(reportsBtn);\r\n\r\n DOM.ACTIONCENTER.appendChild(filterSelectReportBtnWrap);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n var workshopTable = table.build(workshopTableOpts);\r\n DOM.ACTIONCENTER.appendChild(workshopTable);\r\n table.populate(\"workshopTable\", tableData);\r\n\r\n // //permission\r\n if (!$.session.WorkshopUpdate) {\r\n multiSelectBtn.classList.add(\"disabled\")\r\n multiSelectBtn.classList.remove(\"enabled\")\r\n toggleMiniRosterBtnVisible(false)\r\n }\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n function handleWorkshopTableEvents(event) {\r\n var isRow = event.target.classList.contains(\"table__row\");\r\n var jobAct = event.target.dataset.jobActivity;\r\n if (!isRow) return; // if not row return\r\n if (!$.session.WorkshopUpdate) return; // \r\n\r\n if (enableMultiEdit) {\r\n if (mainTableData[jobAct].endTime) return; // If they already clocked out, do nothing\r\n event.target.classList.toggle(\"selected\");\r\n //Add if row is being selected\r\n if (event.target.classList.contains(\"selected\")) {\r\n //and if it doesn't exist in the array\r\n if (!multiConsumerSelect.includes(mainTableData[jobAct].consumerid)) {\r\n multiConsumerSelect.push(mainTableData[jobAct].consumerid);\r\n }\r\n } else {\r\n //Remove the consumer id if it is being deselected\r\n multiConsumerSelect.splice(\r\n multiConsumerSelect.indexOf(mainTableData[jobAct].consumerid),\r\n 1\r\n );\r\n }\r\n //disable clock out button if nothing is selected\r\n if (multiConsumerSelect.length === 0) {\r\n clockOutNavBtn.classList.add(\"disabled\");\r\n } else {\r\n clockOutNavBtn.classList.remove(\"disabled\");\r\n }\r\n } else if (!enableMultiEdit) {\r\n tableRowPopup(event.target);\r\n }\r\n }\r\n\r\n function enableMultiEditRows(multiBtn) {\r\n setupActionNav();\r\n miniRosterBtn = document.querySelector(\".consumerListBtn\");\r\n enableMultiEdit = !enableMultiEdit;\r\n multiBtn.classList.toggle(\"enabled\");\r\n miniRosterBtn.classList.toggle(\"disabled\");\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n selectedConsumers = [];\r\n ACTION_NAV.hide();\r\n }\r\n\r\n var highlightedRows = [].slice.call(\r\n document.querySelectorAll(\".table__row.selected\")\r\n );\r\n highlightedRows.forEach(row => row.classList.remove(\"selected\"));\r\n }\r\n\r\n function tableRowPopup(row) {\r\n // var isPieceRate = row.dataset.pieceRate == \"true\";\r\n jobActivity = row.dataset.jobActivity;\r\n jobActivity = parseInt(jobActivity);\r\n var isPieceRate = mainTableData[jobActivity].isPieceRate;\r\n let rowPopup = POPUP.build({\r\n classNames: \"workshopTableRowPopup\",\r\n header: mainTableData[jobActivity].consumer,\r\n id: `jobAct${jobActivity}`\r\n });\r\n\r\n let startTimeField = input.build({\r\n id: \"startTime\",\r\n label: \"Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: mainTableData[jobActivity].startTime\r\n });\r\n\r\n let endTimeField = input.build({\r\n id: \"endTime\",\r\n label: \"End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: mainTableData[jobActivity].endTime\r\n });\r\n\r\n //only show if they have piece rate\r\n let quantityField = input.build({\r\n id: \"pieceRateQuantity\",\r\n label: \"Quantity\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"90000\" },\r\n { key: \"onkeypress\", value: \"return event.charCode >= 48 && event.charCode <= 57\" }\r\n ],\r\n value: mainTableData[jobActivity].quantity\r\n });\r\n //enable when there are changes to apply\r\n let saveBtn = button.build({\r\n id: \"save\",\r\n text: \"Save\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"save\",\r\n // classNames: 'disabled',\r\n callback: function () {\r\n tableRowApplyChange(jobActivity, row, rowPopup);\r\n }\r\n });\r\n\r\n let deleteEntryBtn = button.build({\r\n id: \"deleteEntry\",\r\n text: \"Delete Entry\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: \"delete\",\r\n callback: function () {\r\n deleteConfirmation(\r\n rowPopup,\r\n (res = () => {\r\n if (res) {\r\n workshopAjax.deleteWorkshopEntry(jobActivity);\r\n var parent = row.parentElement;\r\n parent.removeChild(row);\r\n }\r\n })\r\n );\r\n }\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"rowPopupBtnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteEntryBtn);\r\n\r\n rowPopup.appendChild(startTimeField);\r\n rowPopup.appendChild(endTimeField);\r\n if (isPieceRate) rowPopup.appendChild(quantityField);\r\n rowPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(rowPopup);\r\n }\r\n\r\n function deleteConfirmation(rowPopup, callback) {\r\n POPUP.hide(rowPopup);\r\n var confPopup = POPUP.build({\r\n classNames: \"warning\"\r\n });\r\n var cancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"no\",\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n POPUP.show(rowPopup);\r\n callback((res = false));\r\n }\r\n });\r\n var confirmBtn = button.build({\r\n text: \"Delete Entry\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n id: \"confDeleteBtn\",\r\n icon: \"delete\",\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n callback((res = true));\r\n }\r\n });\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(confirmBtn);\r\n\r\n var textArea = document.createElement(\"p\");\r\n textArea.classList.add(\"warningTextArea\");\r\n textArea.innerHTML = \"Are you sure you want to delete this record?\";\r\n confPopup.appendChild(textArea);\r\n confPopup.appendChild(btnWrap);\r\n POPUP.show(confPopup);\r\n }\r\n\r\n function tableRowApplyChange(jobActivity, row, popup) {\r\n //get time out if exists\r\n //get time in\r\n //get quantity if exists\r\n //clock out if time out exists and is different from previous clockout\r\n //update clock in if time is is different from previous clockin\r\n //update quantity if exists and is different\r\n\r\n var changedStartTime = document.getElementById(\"startTime\").value;\r\n var startTime = mainTableData[jobActivity].startTime;\r\n var endTimeField = document.getElementById(\"endTime\");\r\n var quantityField = document.getElementById(\"pieceRateQuantity\");\r\n\r\n if (endTimeField.value) {\r\n var enteredEndTime = endTimeField.value;\r\n if (enteredEndTime.length < 8) {\r\n enteredEndTime += \":00\";\r\n }\r\n }\r\n if (quantityField) {\r\n if (quantityField.value) { var quantity = quantityField.value; }\r\n else var quantity = \"0\";\r\n }\r\n\r\n if (changedStartTime === enteredEndTime) {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Start Time cannot be the same as End Time.\";\r\n return;\r\n }\r\n\r\n //UPDATE CLOCKIN TIME IF IT HAS CHANGED\r\n //workshopajax.updateworkshopclockin\r\n if (startTime !== document.getElementById(\"startTime\").value) {\r\n var changedStartTime = document.getElementById(\"startTime\").value;\r\n if (changedStartTime.length < 8) {\r\n changedStartTime += \":00\";\r\n }\r\n if (!enteredEndTime || changedStartTime < enteredEndTime) {\r\n workshopAjax.updateWorkshopClockIn(\r\n jobActivity,\r\n changedStartTime,\r\n res => {\r\n try {\r\n if (res.indexOf(\"Start Overlap\") != -1) {\r\n throw \"OverlapError\";\r\n }\r\n mainTableData[jobActivity].startTime = changedStartTime;\r\n let changedStartTimeDISPLAY = UTIL.convertFromMilitary(\r\n changedStartTime\r\n );\r\n row.children[1].innerHTML = changedStartTimeDISPLAY;\r\n row.classList.remove(\"overlapError\"); //If they are saving from Overlap\r\n hours = Number(\r\n UTIL.calculateTotalHours(\r\n mainTableData[jobActivity].startTime,\r\n mainTableData[jobActivity].endTime\r\n )\r\n );\r\n row.children[5].innerHTML = hours;\r\n } catch (e) {\r\n if (e === \"OverlapError\") {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML =\r\n \"Changes overlap with existing record\";\r\n }\r\n }\r\n }\r\n );\r\n } else {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Start Time cannot be set after End Time\";\r\n return;\r\n }\r\n }\r\n\r\n //CLOCK OUT/UPDATE CLOCK OUT TIME\r\n if (enteredEndTime) {\r\n if (\r\n enteredEndTime > mainTableData[jobActivity].startTime &&\r\n enteredEndTime !== mainTableData[jobActivity].endTime\r\n ) {\r\n mainTableData[jobActivity].endTime = enteredEndTime;\r\n workshopAjax.clockoutWorkshopSingle(\r\n jobActivity,\r\n enteredEndTime,\r\n res => {\r\n try {\r\n if (res.indexOf(\"End Overlap\") != -1) {\r\n throw \"OverlapError\";\r\n }\r\n enteredEndTimeDISPLAY = UTIL.convertFromMilitary(enteredEndTime);\r\n row.children[2].innerHTML = enteredEndTimeDISPLAY;\r\n row.classList.remove(\"overlapError\"); //If they are saving from Overlap\r\n hours = Number(\r\n UTIL.calculateTotalHours(\r\n mainTableData[jobActivity].startTime,\r\n mainTableData[jobActivity].endTime\r\n )\r\n );\r\n row.children[5].innerHTML = hours;\r\n } catch (e) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Changes overlap with existing record\";\r\n }\r\n }\r\n );\r\n } else if (enteredEndTime < startTime) {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"End Time cannot be set before Start Time\";\r\n return;\r\n }\r\n }\r\n\r\n //UPDATE QUANTITY\r\n if (quantity && quantity !== mainTableData[jobActivity].quantity) {\r\n mainTableData[jobActivity].quantity = quantity;\r\n workshopAjax.updateWorkshopQuantity(quantity, jobActivity);\r\n row.children[6].innerHTML = quantity === \"0\" ? icons.error : quantity;\r\n }\r\n POPUP.hide(popup);\r\n }\r\n\r\n function tableFilterPopup(IsShow) {\r\n var filterPopup = POPUP.build({\r\n header: \"Table Filter\",\r\n id: \"workhshopFilterTablePopup\"\r\n });\r\n\r\n //dropdown location (needs the selected date)\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationID = selectedOption.value;\r\n filterCache.locationSelectedOpt = event.target.selectedIndex;\r\n workshopFilterListData.locationName = selectedOption.innerHTML;\r\n updateJobDropdown(locationID, true);\r\n });\r\n\r\n //dropdown job\r\n jobDropdown = dropdown.build({\r\n dropdownId: \"filterJobDropdown\",\r\n label: \"Job\",\r\n style: \"secondary\"\r\n });\r\n\r\n let filterApplyBtn = button.build({\r\n id: \"filterApply\",\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n filterApplyAction();\r\n POPUP.hide(filterPopup);\r\n }\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'jobStepBtn')\r\n filterPopup.appendChild(jobDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateBtn')\r\n filterPopup.appendChild(dateSelection);\r\n filterPopup.appendChild(filterApplyBtn);\r\n POPUP.show(filterPopup);\r\n updateJobDropdown(locationID, true);\r\n\r\n locationDropdownSelect = document.getElementById(\"locationDropdown\");\r\n jobDropdownSelect = document.getElementById(\"filterJobDropdown\");\r\n\r\n //Populate Dropdowns and Cache the selection\r\n dropdown.populate(\r\n \"locationDropdown\",\r\n locationFilterDropdownData,\r\n locationID\r\n );\r\n // locationDropdownSelect.options.selectedIndex =\r\n // filterCache.locationSelectedOpt;\r\n jobFilterDropdownData[0].text = \"All\";\r\n jobFilterDropdownData[0].value = 0;\r\n updateJobFilterDropdownData\r\n ? dropdown.populate(\"filterJobDropdown\", updateJobFilterDropdownData)\r\n : dropdown.populate(\"filterJobDropdown\", jobFilterDropdownData);\r\n jobDropdownSelect.options.selectedIndex = filterCache.jobStepSelectedOpt;\r\n }\r\n\r\n function filterApplyAction() {\r\n if (document.getElementById(\"date\") != null) {\r\n displayDateIso = document.getElementById(\"date\").value;\r\n workshopFilterListData.selectedDate = displayDateIso;\r\n }\r\n\r\n if (document.getElementById(\"filterJobDropdown\") != null) {\r\n jobDropdown = document.getElementById(\"filterJobDropdown\");\r\n workshopFilterListData.jobStepId = jobDropdown.options[jobDropdown.selectedIndex].value;\r\n filterCache.jobStepSelectedOpt = jobDropdown.selectedIndex;\r\n }\r\n if (document.getElementById(\"locationDropdown\") != null) {\r\n locationDropdown = document.getElementById(\"locationDropdown\");\r\n workshopFilterListData.locationId = locationDropdown.options[locationDropdown.selectedIndex].value;\r\n locationID = locationDropdown.options[locationDropdown.selectedIndex].value;\r\n filterCache.locationSelectedOpt = locationDropdown.selectedIndex;\r\n }\r\n else {\r\n workshopFilterListData.locationId = locationID;\r\n }\r\n\r\n if (defaults.rememberLastLocation(\"workshop\"))\r\n defaults.setLocation(\"workshop\", locationID);\r\n\r\n //Refresh roster date:\r\n roster2.updateSelectedDate(displayDateIso)\r\n //Update active Consumers based on filter - Date, LocaitonID, returns consumers (called employee_id).\r\n workshopAjax.getEnabledConsumersForWorkshop(\r\n displayDateIso,\r\n workshopFilterListData.locationId,\r\n res => {\r\n const allowedConsumers = []\r\n res.forEach(r => {\r\n var consumer_id = r.employee_id;\r\n const filteredConsumer = activeModulesConsumers.filter(consumer => consumer.id === consumer_id);\r\n if (filteredConsumer.length !== 0) allowedConsumers.push({ 'consumer_id': consumer_id })\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n );\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, buildWorkshopTable);\r\n updateCurrentFilterDisplay();\r\n }\r\n\r\n function updateCurrentFilterDisplay() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n if (!currentFilterDisplay) {\r\n workshopFilterListData.locationName = locationID == 0 ? \"All\" : mainLocationData[locationID].locName;\r\n workshopFilterListData.locationId = locationID;\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (workshopFilterListData.locationId == '0') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n } else {\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + workshopFilterListData.locationName;\r\n btnWrap.appendChild(locationBtnWrap);\r\n }\r\n\r\n if (workshopFilterListData.jobStepId === '0' || workshopFilterListData.jobStepId === 0) {\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n btnWrap.removeChild(jobStepBtnWrap);\r\n } else {\r\n if (document.getElementById('jobStepBtn') != null)\r\n document.getElementById('jobStepBtn').innerHTML = workshopFilterListData.jobStepId == '0' ? 'Job: All' : 'Job: ' + mainJobData[workshopFilterListData.jobStepId].jobString;\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n }\r\n\r\n if (document.getElementById('serviceDateBtn') != null)\r\n document.getElementById('serviceDateBtn').innerHTML = 'Date: ' + workshopFilterListData.selectedDate;\r\n\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { tableFilterPopup('ALL') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + workshopFilterListData.locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n jobStepBtn = button.build({\r\n id: 'jobStepBtn',\r\n text: workshopFilterListData.jobStepId == '0' || workshopFilterListData.jobStepId === 0 ? 'Job: All' : 'Job: ' + mainJobData[workshopFilterListData.jobStepId].jobString,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('jobStepBtn') },\r\n });\r\n jobStepCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('jobStepBtn') },\r\n });\r\n\r\n serviceDateBtn = button.build({\r\n id: 'serviceDateBtn',\r\n text: 'Date: ' + workshopFilterListData.selectedDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('serviceDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n jobStepBtnWrap = document.createElement('div');\r\n jobStepBtnWrap.classList.add('filterSelectionBtnWrap');\r\n jobStepBtnWrap.appendChild(jobStepBtn);\r\n jobStepBtnWrap.appendChild(jobStepCloseBtn);\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n\r\n serviceDateBtnWrap = document.createElement('div');\r\n serviceDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateBtnWrap.appendChild(serviceDateBtn);\r\n btnWrap.appendChild(serviceDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) { \r\n if (closeFilter == 'jobStepBtn') {\r\n workshopFilterListData.jobStepId = 0; \r\n }\r\n if (closeFilter == 'locationBtn') {\r\n locationID = '0'; \r\n workshopFilterListData.locationId = '0'; \r\n }\r\n filterApplyAction();\r\n }\r\n\r\n function clockInOutChoicePopup() {\r\n let popup = POPUP.build({\r\n header: \"Please Choose an Option\",\r\n id: \"clockInOutChoicePopup\"\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: \"Clock In\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup(\"in\");\r\n }\r\n });\r\n let clockOutBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup(\"out\");\r\n }\r\n });\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"choiceBtnWrap\");\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(clockOutBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function clockInOutActionPopup(choice) {\r\n //Display the Date and Location that were selected from the Filter.\r\n let locationDisplay = document.createElement(\"h4\");\r\n locationDisplay.innerHTML = `Location: ${locationID == 0\r\n ? \"No location specified\"\r\n : mainLocationData[locationID].locName\r\n }`;\r\n // locationDisplay.innerHTML = `Location: ${\r\n // workshopFilterListData.locationId == 0\r\n // ? \"No location specified\"\r\n // : mainLocationData[workshopFilterListData.locationId].locName\r\n // }`;\r\n let dateDisplay = document.createElement(\"h4\");\r\n dateDisplay.innerHTML = `Selected Date: ${UTIL.formatDateFromIso(\r\n displayDateIso\r\n )}`;\r\n\r\n timeClockJobDropdown = dropdown.build({\r\n dropdownId: \"timeClockJobDropdown\",\r\n label: \"Job\",\r\n style: \"secondary\"\r\n });\r\n\r\n timeClockLocationDropdown = dropdown.build({\r\n dropdownId: \"timeClockLocationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n let inPopup = POPUP.build({\r\n header: \"Clock In\",\r\n id: \"clockInOutPopup\"\r\n });\r\n\r\n let outPopup = POPUP.build({\r\n header: \"Clock Out\",\r\n id: \"clockInOutPopup\"\r\n });\r\n\r\n let timeInField = input.build({\r\n id: \"inTime\",\r\n label: \"In Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n callback: function () { }\r\n });\r\n timeInField.classList.add(\"error\");\r\n\r\n let timeOutField = input.build({\r\n id: \"outTime\",\r\n label: \"Out Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n timeOutField.classList.add(\"error\");\r\n\r\n let clockInBtn = button.build({\r\n text: \"Clock In\",\r\n style: \"secondary\",\r\n classNames: \"disabled\",\r\n type: \"contained\",\r\n id: \"clockInBtn\",\r\n callback: function () {\r\n clockIn();\r\n POPUP.hide(inPopup);\r\n //Clock in function\r\n }\r\n });\r\n\r\n let clockOutBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n classNames: \"disabled\",\r\n type: \"contained\",\r\n callback: function () {\r\n clockOut();\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n //clock out function\r\n }\r\n });\r\n\r\n let inCancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(inPopup);\r\n }\r\n });\r\n\r\n let outCancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n }\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n timeInField.addEventListener(\"change\", function () {\r\n let inTimeField = document.getElementById(\"inTime\");\r\n if (inTimeField.value === \"\") {\r\n timeInField.classList.add(\"error\");\r\n } else {\r\n timeInField.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockInBtn);\r\n });\r\n timeOutField.addEventListener(\"change\", function () {\r\n let outTimeField = document.getElementById(\"outTime\");\r\n if (outTimeField.value === \"\") {\r\n timeOutField.classList.add(\"error\");\r\n } else {\r\n timeOutField.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockOutBtn);\r\n });\r\n timeClockJobDropdown.classList.add(\"error\");\r\n timeClockJobDropdown.addEventListener(\"change\", function () {\r\n let timeClockJobDropdownField = document.getElementById(\r\n \"timeClockJobDropdown\"\r\n );\r\n if (\r\n timeClockJobDropdownField.options[\r\n timeClockJobDropdownField.selectedIndex\r\n ].value === \"%\"\r\n ) {\r\n timeClockJobDropdown.classList.add(\"error\");\r\n } else {\r\n timeClockJobDropdown.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockInBtn);\r\n });\r\n\r\n switch (choice) {\r\n case \"in\": {\r\n inPopup.appendChild(dateDisplay);\r\n inPopup.appendChild(locationDisplay);\r\n inPopup.appendChild(timeClockJobDropdown);\r\n inPopup.appendChild(supervisorDropdown);\r\n inPopup.appendChild(timeInField);\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(inCancelBtn);\r\n inPopup.appendChild(btnWrap);\r\n POPUP.show(inPopup);\r\n\r\n updateJobDropdown(locationID, false);\r\n // updateJobDropdown(workshopFilterListData.locationId, false);\r\n\r\n // jobFilterDropdownData[0].text = \"\";\r\n // jobFilterDropdownData[0].value = \"%\";\r\n\r\n dropdown.populate(\"timeClockJobDropdown\", jobFilterDropdownData);\r\n dropdown.populate(\r\n \"supervisorDropdown\",\r\n supervisorDropdownData,\r\n $.session.PeopleId\r\n ); // default supervisor to the clocked in user (if supervisor)\r\n break;\r\n }\r\n case \"out\": {\r\n outPopup.appendChild(timeOutField);\r\n btnWrap.appendChild(clockOutBtn);\r\n btnWrap.appendChild(outCancelBtn);\r\n outPopup.appendChild(btnWrap);\r\n POPUP.show(outPopup);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function clockIn() {\r\n var supervisorID;\r\n let jobDropdownSelect = document.getElementById(\"timeClockJobDropdown\");\r\n let jobStepIdInt = parseInt(\r\n jobDropdownSelect.options[jobDropdownSelect.selectedIndex].value\r\n );\r\n // let locationID = workshopFilterListData.locationId;\r\n let supervisorSelect = document.getElementById(\"supervisorDropdown\");\r\n let supSelectedIndex = supervisorSelect.selectedIndex;\r\n if (supSelectedIndex !== -1) {\r\n supervisorID =\r\n supervisorSelect.options[supervisorSelect.selectedIndex].value;\r\n } else {\r\n supervisorID = \"0\";\r\n }\r\n let inTimeField = document.getElementById(\"inTime\");\r\n let inTime = inTimeField.value + \":00\";\r\n\r\n inData = {\r\n batchId: selectedBatchId,\r\n consumerids: selectedConsumers.map(e => e.id).join(\"|\"),\r\n jobActType: mainJobData[jobStepIdInt].activityType,\r\n jobStepId: mainJobData[jobStepIdInt].jobStepId,\r\n jobString: mainJobData[jobStepIdInt].jobString,\r\n location: locationID,\r\n selectedDate: displayDateIso,\r\n startOrEnd: \"Start\",\r\n supervisor: supervisorID,\r\n time: inTime,\r\n token: $.session.Token\r\n };\r\n\r\n workshopFilterListData.jobStepId = 0;\r\n\r\n workshopAjax.WorkshopClockIn(inData, res => {\r\n if (res.length > 0) {\r\n // There are overlaps\r\n overlapErrorPopup(res, \"in\");\r\n } else {\r\n selectedConsumers = [];\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n }\r\n\r\n roster2.clearActiveConsumers();\r\n });\r\n }\r\n\r\n function clockOut() {\r\n let outTimeField = document.getElementById(\"outTime\");\r\n let outTime = outTimeField.value + \":00\";\r\n outData = {\r\n batchId: selectedBatchId,\r\n consumerids: selectedConsumers.map(e => e.id).join(\"|\"),\r\n jobActType: \"\",\r\n jobStepId: \"0\",\r\n jobString: \"\",\r\n location: \"0\",\r\n selectedDate: displayDateIso,\r\n startOrEnd: \"End\",\r\n supervisor: \"0\",\r\n time: outTime,\r\n token: $.session.Token\r\n };\r\n\r\n workshopFilterListData.jobStepId = 0;\r\n\r\n workshopAjax.WorkshopClockOut(outData, res => {\r\n if (res.length > 0) {\r\n overlapErrorPopup(res, \"out\");\r\n } else {\r\n selectedConsumers = [];\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n }\r\n });\r\n }\r\n\r\n function overlapErrorPopup(overlapRecords, inOutString) {\r\n let clockedInConsumers = selectedConsumers.length - overlapRecords.length;\r\n\r\n let overlapErrorPopup = POPUP.build({\r\n header: `\r\n ${clockedInConsumers} ${clockedInConsumers !== 1 ? \"consumers\" : \"consumer\"\r\n } clocked ${inOutString}. \r\n There ${overlapRecords.length === 1 ? \"Is\" : \"Are\"} ${overlapRecords.length\r\n } ${overlapRecords.length === 1 ? \"Overlap.\" : \"Overlaps.\"}\r\n `,\r\n id: \"overlapErrorPopup\"\r\n });\r\n\r\n let overlapDescriptionWrap = document.createElement(\"div\");\r\n\r\n overlapRecords.forEach(r => {\r\n let overlapRecord = document.createElement(\"p\");\r\n overlapRecord.innerHTML = `

    ${mainTableData[r].consumer}


    \r\n Time in: ${UTIL.convertFromMilitary(mainTableData[r].startTime)} -\r\n Time out: ${UTIL.convertFromMilitary(mainTableData[r].endTime)}

    \r\n `;\r\n overlapDescriptionWrap.appendChild(overlapRecord);\r\n });\r\n\r\n let correctBtn = button.build({\r\n text: \"Correct Overlaps\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(overlapErrorPopup);\r\n overlapCorrection(overlapRecords);\r\n }\r\n });\r\n let continueBtn = button.build({\r\n text: \"Continue\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n POPUP.hide(overlapErrorPopup);\r\n }\r\n });\r\n selectedConsumers = [];\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(correctBtn);\r\n btnWrap.appendChild(continueBtn);\r\n overlapErrorPopup.appendChild(overlapDescriptionWrap);\r\n overlapErrorPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(overlapErrorPopup);\r\n }\r\n\r\n function overlapCorrection(overlapRecords) {\r\n workshopFilterListData.consumerIds = overlapRecords\r\n .map(r => mainTableData[r].consumerid)\r\n .join(\",\");\r\n\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, res => {\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n buildWorkshopTable(res, callback => {\r\n overlapRecords.forEach(r => {\r\n row = document.getElementById(`jobAct${r}`);\r\n row.classList.add(\"overlapError\");\r\n });\r\n });\r\n });\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var miniRoster = document.querySelector('[data-roster=\"waiting\"]');\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n consumerListBtn = document.querySelector(\".consumerListBtn\");\r\n\r\n switch (targetAction) {\r\n // case \"rosterDone\": {\r\n // roster.selectedConsumersToEnabledList();\r\n // checkOpenBatches();\r\n // enabledConsumers = roster.getEnabledConsumers();\r\n // workshopFilterListData.consumerIds = breakDownConsumerList(\r\n // enabledConsumers\r\n // );\r\n // break;\r\n // }\r\n // case \"rosterCancel\": {\r\n // unloadApp($.loadedApp);\r\n // setActiveModuleAttribute(\"home\");\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.removeAttribute(\"data-active-section\");\r\n // dashboard.load();\r\n // break;\r\n // }\r\n case \"miniRosterDone\": {\r\n if (initalRosterLoad) {\r\n activeModulesConsumers = roster2.getActiveConsumers();\r\n initalRosterLoad = false\r\n setActiveModuleSectionAttribute(\"workshop\");\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n checkOpenBatches();\r\n } else {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n DOM.toggleNavLayout();\r\n clockInOutChoicePopup();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n if (initalRosterLoad) {\r\n loadApp('home')\r\n } else {\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function initPageLoad() {\r\n DOM.clearActionCenter();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.init();\r\n PROGRESS.SPINNER.show(\"Gathering Data\");\r\n\r\n buildSelectionFields();\r\n initialData();\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, buildWorkshopTable);\r\n }\r\n\r\n function init() {\r\n //RESET FILTERS\r\n filterCache = {\r\n locationSelectedOpt: 0,\r\n jobStepSelectedOpt: 0\r\n };\r\n workshopFilterListData.jobStepId = 0;\r\n selectedBatchId = \"\";\r\n enableMultiEdit = false;\r\n //--------\r\n let defaultWorkshopLocation = defaults.getLocation('workshop');\r\n if (defaultWorkshopLocation === '') {\r\n defaults.setLocation('workshop', 0);\r\n defaultWorkshopLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultWorkshopLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n initalRosterLoad = true\r\n sitenav = document.querySelector(\".nav\");\r\n setActiveModuleSectionAttribute(\"workshop\");\r\n\r\n roster2.showMiniRoster({ hideDate: true })\r\n\r\n\r\n\r\n // enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // // display mini roster for consumer selection\r\n // roster.buildRoster(true, false, function appendMiniRoster(miniRoster) {\r\n // DOM.ACTIONCENTER.appendChild(miniRoster);\r\n // }, true);\r\n // } else {\r\n // checkOpenBatches();\r\n // }\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent\r\n };\r\n})();\r\n","var workshopAjax = (function() {\r\n function clockoutWorkshopSingle(jobActid, timeEntered, callback) {\r\n singleClockOutData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActid,\r\n timeEntered: timeEntered\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/ClockoutWorkshopSingle/\",\r\n data: JSON.stringify(singleClockOutData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // if (res.indexOf(\"End Overlap\") !== -1) {\r\n // timeOverlapPopup(\"End time overlaps with existing record.\");\r\n // } else {\r\n // endTime = formatTimeFromDB(singleClockOutData.timeEntered);\r\n // $(\"#\" + singleClockOutData.jobActivityId + \" td:nth-child(3)\").text(\r\n // endTime\r\n // );\r\n\r\n // // this works now just need to send over the endtime and not starttime input - Ash\r\n // var clockoutEndtime = Array.from(\r\n // $(\"#\" + singleClockOutData.jobActivityId + \" td:nth-child(3)\")\r\n // );\r\n // validateEndTime(clockoutEndtime[0]);\r\n // filterSetup();\r\n // }\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function deleteWorkshopEntry(jobActId, callback) {\r\n deleteData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActId\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/DeleteWorkshopEntry/\",\r\n data: JSON.stringify(deleteData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getDeleteWorkshopEntryResult;\r\n callback();\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //Call to popuate list based on drop down values\r\n function getWorkshopBatchById(data, callback) {\r\n callback();\r\n }\r\n\r\n function getEnabledConsumersForWorkshop(selectedDate, selectedLocation, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n // selectedDate = formatDateForDatabaseSave(selectedDate);\r\n // var selectedLocation = $(\"#workshoplocationname\").attr(\"locationid\");\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getEnabledConsumersForWorkshop/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"selectedDate\":\"' +\r\n selectedDate +\r\n '\", \"selectedLocation\":\"' +\r\n selectedLocation +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n var res = JSON.parse(response.getEnabledConsumersForWorkshopResult);\r\n callback(res);\r\n // disableNonWorkshopConsumers(res);\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function updateWorkshopClockIn(jobActid, timeEntered, callback) {\r\n updateClockInData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActid,\r\n timeEntered: timeEntered\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/UpdateWorkshopClockIn/\",\r\n data: JSON.stringify(updateClockInData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // if (res.indexOf(\"Start Overlap\") != -1) {\r\n // //Show pop up with error message saying start time can not be after end time.\r\n // timeOverlapPopup(\"Start time can not be set after end time.\");\r\n // } else {\r\n // startTime = formatTimeFromDB(updateClockInData.timeEntered);\r\n // $(\"#\" + updateClockInData.jobActivityId + \" td:nth-child(2)\").text(\r\n // startTime\r\n // );\r\n // filterSetup();\r\n // $(\"*\").removeClass(\"waitingCursor\");\r\n // }\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function updateWorkshopQuantity(quantity, jobActId) {\r\n insertData = {\r\n token: $.session.Token,\r\n quantity: quantity,\r\n jobActivityId: jobActId\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/UpdateWorkshopQuantity/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getUpdateWorkshopQuantityResult;\r\n \r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopPreBatchLoad(callback) {\r\n var newDate = new Date();\r\n absenceDate =\r\n newDate.getFullYear() +\r\n \"-\" +\r\n (newDate.getMonth() + 1) +\r\n \"-\" +\r\n newDate.getDate();\r\n $.session.workshopBatchId = \"\";\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/WorkshopPreBatchLoad/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"absenceDate\":\"' +\r\n absenceDate +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n data = response.WorkshopPreBatchLoadResult;\r\n callback(data);\r\n // if (data.length > 1) {\r\n // \tdisplaySelectBatch(data, callback);\r\n // } else if (data.length == 1) {\r\n // \t$.session.workshopBatchId = data[0].id;\r\n // \tcallback(data);\r\n // } else {\r\n // \tdisplayNoBatch();\r\n // \t$('#roostertoolbar').hide();\r\n // \t$('*').removeClass('waitingCursor');\r\n // \tdata = null;\r\n // \tcallback(data);\r\n // }\r\n },\r\n error: function(xhr, status, error) {\r\n callback(error, null);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopLocations(dateSelected, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/WorkshopLocations/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n dateSelected +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.WorkshopLocationsResult;\r\n callback(data);\r\n // populateLocations(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopGetSupervisors(date, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopSupervisors/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"selectedDate\":\"' +\r\n date +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopSupervisorsResult;\r\n callback(data);\r\n // populateSupervisors(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function WorkshopGetJobCode(date, location, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n // var location = $(\"#workshoplocationname\").attr(\"locationid\");\r\n queryData = {\r\n token: $.session.Token,\r\n selectedDate: date,\r\n location: location\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopJobCode/\",\r\n data: JSON.stringify(queryData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopJobCodeResult;\r\n callback(data);\r\n // populateWorkCodes(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function WorkshopFilterList(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopFilterListData/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopFilterListDataResult;\r\n callback(data)\r\n // preFilterListDataSetup(null, data, overlapData);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopClockIn(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/GetWorkshopOverlaps/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n //Returns ConsumerIds of people that already have a record\r\n res = response.GetWorkshopOverlapsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback(e, null);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopClockOut(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/GetWorkshopOverlaps/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n res = response.GetWorkshopOverlapsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback(e, null);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n clockoutWorkshopSingle,\r\n deleteWorkshopEntry,\r\n getWorkshopBatchById,\r\n getEnabledConsumersForWorkshop,\r\n updateWorkshopClockIn,\r\n updateWorkshopQuantity,\r\n WorkshopPreBatchLoad,\r\n WorkshopLocations,\r\n WorkshopGetSupervisors,\r\n WorkshopGetJobCode,\r\n WorkshopFilterList,\r\n WorkshopClockIn,\r\n WorkshopClockOut\r\n };\r\n})();\r\n","/*!\r\n * Chart.js v2.9.3\r\n * https://www.chartjs.org\r\n * (c) 2019 Chart.js Contributors\r\n * Released under the MIT License\r\n */\r\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(function(){try{return require(\"moment\")}catch(t){}}()):\"function\"==typeof define&&define.amd?define([\"require\"],(function(t){return e(function(){try{return t(\"moment\")}catch(t){}}())})):(t=t||self).Chart=e(t.moment)}(this,(function(t){\"use strict\";t=t&&t.hasOwnProperty(\"default\")?t.default:t;var e={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},n=function(t,e){return t(e={exports:{}},e.exports),e.exports}((function(t){var n={};for(var i in e)e.hasOwnProperty(i)&&(n[e[i]]=i);var a=t.exports={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};for(var r in a)if(a.hasOwnProperty(r)){if(!(\"channels\"in a[r]))throw new Error(\"missing channels property: \"+r);if(!(\"labels\"in a[r]))throw new Error(\"missing channel labels property: \"+r);if(a[r].labels.length!==a[r].channels)throw new Error(\"channel and label counts mismatch: \"+r);var o=a[r].channels,s=a[r].labels;delete a[r].channels,delete a[r].labels,Object.defineProperty(a[r],\"channels\",{value:o}),Object.defineProperty(a[r],\"labels\",{value:s})}a.rgb.hsl=function(t){var e,n,i=t[0]/255,a=t[1]/255,r=t[2]/255,o=Math.min(i,a,r),s=Math.max(i,a,r),l=s-o;return s===o?e=0:i===s?e=(a-r)/l:a===s?e=2+(r-i)/l:r===s&&(e=4+(i-a)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s===o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]},a.rgb.hsv=function(t){var e,n,i,a,r,o=t[0]/255,s=t[1]/255,l=t[2]/255,u=Math.max(o,s,l),d=u-Math.min(o,s,l),h=function(t){return(u-t)/6/d+.5};return 0===d?a=r=0:(r=d/u,e=h(o),n=h(s),i=h(l),o===u?a=i-n:s===u?a=1/3+e-i:l===u&&(a=2/3+n-e),a<0?a+=1:a>1&&(a-=1)),[360*a,100*r,100*u]},a.rgb.hwb=function(t){var e=t[0],n=t[1],i=t[2];return[a.rgb.hsl(t)[0],100*(1/255*Math.min(e,Math.min(n,i))),100*(i=1-1/255*Math.max(e,Math.max(n,i)))]},a.rgb.cmyk=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-a)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-a-e)/(1-e)||0),100*e]},a.rgb.keyword=function(t){var i=n[t];if(i)return i;var a,r,o,s=1/0;for(var l in e)if(e.hasOwnProperty(l)){var u=e[l],d=(r=t,o=u,Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2));d.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]},a.rgb.lab=function(t){var e=a.rgb.xyz(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]},a.hsl.rgb=function(t){var e,n,i,a,r,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0===s)return[r=255*l,r,r];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),a=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e,a[u]=255*r;return a},a.hsl.hsv=function(t){var e=t[0],n=t[1]/100,i=t[2]/100,a=n,r=Math.max(i,.01);return n*=(i*=2)<=1?i:2-i,a*=r<=1?r:2-r,[e,100*(0===i?2*a/(r+a):2*n/(i+n)),100*((i+n)/2)]},a.hsv.rgb=function(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,a=Math.floor(e)%6,r=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*r),l=255*i*(1-n*(1-r));switch(i*=255,a){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}},a.hsv.hsl=function(t){var e,n,i,a=t[0],r=t[1]/100,o=t[2]/100,s=Math.max(o,.01);return i=(2-r)*o,n=r*s,[a,100*(n=(n/=(e=(2-r)*s)<=1?e:2-e)||0),100*(i/=2)]},a.hwb.rgb=function(t){var e,n,i,a,r,o,s,l=t[0]/360,u=t[1]/100,d=t[2]/100,h=u+d;switch(h>1&&(u/=h,d/=h),i=6*l-(e=Math.floor(6*l)),0!=(1&e)&&(i=1-i),a=u+i*((n=1-d)-u),e){default:case 6:case 0:r=n,o=a,s=u;break;case 1:r=a,o=n,s=u;break;case 2:r=u,o=n,s=a;break;case 3:r=u,o=a,s=n;break;case 4:r=a,o=u,s=n;break;case 5:r=n,o=u,s=a}return[255*r,255*o,255*s]},a.cmyk.rgb=function(t){var e=t[0]/100,n=t[1]/100,i=t[2]/100,a=t[3]/100;return[255*(1-Math.min(1,e*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a)),255*(1-Math.min(1,i*(1-a)+a))]},a.xyz.rgb=function(t){var e,n,i,a=t[0]/100,r=t[1]/100,o=t[2]/100;return n=-.9689*a+1.8758*r+.0415*o,i=.0557*a+-.204*r+1.057*o,e=(e=3.2406*a+-1.5372*r+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:12.92*e,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:12.92*i,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]},a.xyz.lab=function(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]},a.lab.xyz=function(t){var e,n,i,a=t[0];e=t[1]/500+(n=(a+16)/116),i=n-t[2]/200;var r=Math.pow(n,3),o=Math.pow(e,3),s=Math.pow(i,3);return n=r>.008856?r:(n-16/116)/7.787,e=o>.008856?o:(e-16/116)/7.787,i=s>.008856?s:(i-16/116)/7.787,[e*=95.047,n*=100,i*=108.883]},a.lab.lch=function(t){var e,n=t[0],i=t[1],a=t[2];return(e=360*Math.atan2(a,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+a*a),e]},a.lch.lab=function(t){var e,n=t[0],i=t[1];return e=t[2]/360*2*Math.PI,[n,i*Math.cos(e),i*Math.sin(e)]},a.rgb.ansi16=function(t){var e=t[0],n=t[1],i=t[2],r=1 in arguments?arguments[1]:a.rgb.hsv(t)[2];if(0===(r=Math.round(r/50)))return 30;var o=30+(Math.round(i/255)<<2|Math.round(n/255)<<1|Math.round(e/255));return 2===r&&(o+=60),o},a.hsv.ansi16=function(t){return a.rgb.ansi16(a.hsv.rgb(t),t[2])},a.rgb.ansi256=function(t){var e=t[0],n=t[1],i=t[2];return e===n&&n===i?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(i/255*5)},a.ansi16.rgb=function(t){var e=t%10;if(0===e||7===e)return t>50&&(e+=3.5),[e=e/10.5*255,e,e];var n=.5*(1+~~(t>50));return[(1&e)*n*255,(e>>1&1)*n*255,(e>>2&1)*n*255]},a.ansi256.rgb=function(t){if(t>=232){var e=10*(t-232)+8;return[e,e,e]}var n;return t-=16,[Math.floor(t/36)/5*255,Math.floor((n=t%36)/6)/5*255,n%6/5*255]},a.rgb.hex=function(t){var e=(((255&Math.round(t[0]))<<16)+((255&Math.round(t[1]))<<8)+(255&Math.round(t[2]))).toString(16).toUpperCase();return\"000000\".substring(e.length)+e},a.hex.rgb=function(t){var e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];var n=e[0];3===e[0].length&&(n=n.split(\"\").map((function(t){return t+t})).join(\"\"));var i=parseInt(n,16);return[i>>16&255,i>>8&255,255&i]},a.rgb.hcg=function(t){var e,n=t[0]/255,i=t[1]/255,a=t[2]/255,r=Math.max(Math.max(n,i),a),o=Math.min(Math.min(n,i),a),s=r-o;return e=s<=0?0:r===n?(i-a)/s%6:r===i?2+(a-n)/s:4+(n-i)/s+4,e/=6,[360*(e%=1),100*s,100*(s<1?o/(1-s):0)]},a.hsl.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=1,a=0;return(i=n<.5?2*e*n:2*e*(1-n))<1&&(a=(n-.5*i)/(1-i)),[t[0],100*i,100*a]},a.hsv.hcg=function(t){var e=t[1]/100,n=t[2]/100,i=e*n,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.hcg.rgb=function(t){var e=t[0]/360,n=t[1]/100,i=t[2]/100;if(0===n)return[255*i,255*i,255*i];var a,r=[0,0,0],o=e%1*6,s=o%1,l=1-s;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=l,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=l,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=l}return a=(1-n)*i,[255*(n*r[0]+a),255*(n*r[1]+a),255*(n*r[2]+a)]},a.hcg.hsv=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e),i=0;return n>0&&(i=e/n),[t[0],100*i,100*n]},a.hcg.hsl=function(t){var e=t[1]/100,n=t[2]/100*(1-e)+.5*e,i=0;return n>0&&n<.5?i=e/(2*n):n>=.5&&n<1&&(i=e/(2*(1-n))),[t[0],100*i,100*n]},a.hcg.hwb=function(t){var e=t[1]/100,n=e+t[2]/100*(1-e);return[t[0],100*(n-e),100*(1-n)]},a.hwb.hcg=function(t){var e=t[1]/100,n=1-t[2]/100,i=n-e,a=0;return i<1&&(a=(n-i)/(1-i)),[t[0],100*i,100*a]},a.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]},a.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]},a.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]},a.gray.hsl=a.gray.hsv=function(t){return[0,0,t[0]]},a.gray.hwb=function(t){return[0,100,t[0]]},a.gray.cmyk=function(t){return[0,0,0,t[0]]},a.gray.lab=function(t){return[t[0],0,0]},a.gray.hex=function(t){var e=255&Math.round(t[0]/100*255),n=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(n.length)+n},a.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}}));n.rgb,n.hsl,n.hsv,n.hwb,n.cmyk,n.xyz,n.lab,n.lch,n.hex,n.keyword,n.ansi16,n.ansi256,n.hcg,n.apple,n.gray;function i(t){var e=function(){for(var t={},e=Object.keys(n),i=e.length,a=0;a1&&(e=Array.prototype.slice.call(arguments));var n=t(e);if(\"object\"==typeof n)for(var i=n.length,a=0;a1&&(e=Array.prototype.slice.call(arguments)),t(e))};return\"conversion\"in t&&(e.conversion=t.conversion),e}(i)}))}));var s=o,l={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},u={getRgba:d,getHsla:h,getRgb:function(t){var e=d(t);return e&&e.slice(0,3)},getHsl:function(t){var e=h(t);return e&&e.slice(0,3)},getHwb:c,getAlpha:function(t){var e=d(t);if(e)return e[3];if(e=h(t))return e[3];if(e=c(t))return e[3]},hexString:function(t,e){e=void 0!==e&&3===t.length?e:t[3];return\"#\"+v(t[0])+v(t[1])+v(t[2])+(e>=0&&e<1?v(Math.round(255*e)):\"\")},rgbString:function(t,e){if(e<1||t[3]&&t[3]<1)return f(t,e);return\"rgb(\"+t[0]+\", \"+t[1]+\", \"+t[2]+\")\"},rgbaString:f,percentString:function(t,e){if(e<1||t[3]&&t[3]<1)return g(t,e);var n=Math.round(t[0]/255*100),i=Math.round(t[1]/255*100),a=Math.round(t[2]/255*100);return\"rgb(\"+n+\"%, \"+i+\"%, \"+a+\"%)\"},percentaString:g,hslString:function(t,e){if(e<1||t[3]&&t[3]<1)return p(t,e);return\"hsl(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%)\"},hslaString:p,hwbString:function(t,e){void 0===e&&(e=void 0!==t[3]?t[3]:1);return\"hwb(\"+t[0]+\", \"+t[1]+\"%, \"+t[2]+\"%\"+(void 0!==e&&1!==e?\", \"+e:\"\")+\")\"},keyword:function(t){return b[t.slice(0,3)]}};function d(t){if(t){var e=[0,0,0],n=1,i=t.match(/^#([a-fA-F0-9]{3,4})$/i),a=\"\";if(i){a=(i=i[1])[3];for(var r=0;rn?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?\"AAA\":e>=4.5?\"AA\":\"\"},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues(\"rgb\",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues(\"hsl\",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues(\"hsl\",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues(\"hsl\",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues(\"hsl\",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues(\"hwb\",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues(\"hwb\",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues(\"rgb\",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues(\"alpha\",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues(\"hsl\",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,a=2*i-1,r=this.alpha()-n.alpha(),o=((a*r==-1?a:(a+r)/(1+a*r))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new y,i=this.values,a=n.values;for(var r in i)i.hasOwnProperty(r)&&(t=i[r],\"[object Array]\"===(e={}.toString.call(t))?a[r]=t.slice(0):\"[object Number]\"===e?a[r]=t:console.error(\"unexpected color value:\",t));return n}},y.prototype.spaces={rgb:[\"red\",\"green\",\"blue\"],hsl:[\"hue\",\"saturation\",\"lightness\"],hsv:[\"hue\",\"saturation\",\"value\"],hwb:[\"hue\",\"whiteness\",\"blackness\"],cmyk:[\"cyan\",\"magenta\",\"yellow\",\"black\"]},y.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},y.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i=0;a--)e.call(n,t[a],a);else for(a=0;a=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-S.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*S.easeInBounce(2*t):.5*S.easeOutBounce(2*t-1)+.5}},C={effects:S};M.easingEffects=S;var P=Math.PI,A=P/180,D=2*P,T=P/2,I=P/4,F=2*P/3,L={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,a,r){if(r){var o=Math.min(r,a/2,i/2),s=e+o,l=n+o,u=e+i-o,d=n+a-o;t.moveTo(e,l),se.left-1e-6&&t.xe.top-1e-6&&t.y0&&this.requestAnimationFrame()},advance:function(){for(var t,e,n,i,a=this.animations,r=0;r=n?(V.callback(t.onAnimationComplete,[t],e),e.animating=!1,a.splice(r,1)):++r}},J=V.options.resolve,Q=[\"push\",\"pop\",\"shift\",\"splice\",\"unshift\"];function tt(t,e){var n=t._chartjs;if(n){var i=n.listeners,a=i.indexOf(e);-1!==a&&i.splice(a,1),i.length>0||(Q.forEach((function(e){delete t[e]})),delete t._chartjs)}}var et=function(t,e){this.initialize(t,e)};V.extend(et.prototype,{datasetElementType:null,dataElementType:null,_datasetElementOptions:[\"backgroundColor\",\"borderCapStyle\",\"borderColor\",\"borderDash\",\"borderDashOffset\",\"borderJoinStyle\",\"borderWidth\"],_dataElementOptions:[\"backgroundColor\",\"borderColor\",\"borderWidth\",\"pointStyle\"],initialize:function(t,e){var n=this;n.chart=t,n.index=e,n.linkScales(),n.addElements(),n._type=n.getMeta().type},updateIndex:function(t){this.index=t},linkScales:function(){var t=this.getMeta(),e=this.chart,n=e.scales,i=this.getDataset(),a=e.options.scales;null!==t.xAxisID&&t.xAxisID in n&&!i.xAxisID||(t.xAxisID=i.xAxisID||a.xAxes[0].id),null!==t.yAxisID&&t.yAxisID in n&&!i.yAxisID||(t.yAxisID=i.yAxisID||a.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},_getValueScaleId:function(){return this.getMeta().yAxisID},_getIndexScaleId:function(){return this.getMeta().xAxisID},_getValueScale:function(){return this.getScaleForId(this._getValueScaleId())},_getIndexScale:function(){return this.getScaleForId(this._getIndexScaleId())},reset:function(){this._update(!0)},destroy:function(){this._data&&tt(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],a=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;na?(r=a/e.innerRadius,t.arc(o,s,e.innerRadius-a,i+r,n-r,!0)):t.arc(o,s,a,i+Math.PI/2,n-Math.PI/2),t.closePath(),t.clip()}function rt(t,e,n){var i=\"inner\"===e.borderAlign;i?(t.lineWidth=2*e.borderWidth,t.lineJoin=\"round\"):(t.lineWidth=e.borderWidth,t.lineJoin=\"bevel\"),n.fullCircles&&function(t,e,n,i){var a,r=n.endAngle;for(i&&(n.endAngle=n.startAngle+it,at(t,n),n.endAngle=r,n.endAngle===n.startAngle&&n.fullCircles&&(n.endAngle+=it,n.fullCircles--)),t.beginPath(),t.arc(n.x,n.y,n.innerRadius,n.startAngle+it,n.startAngle,!0),a=0;as;)a-=it;for(;a=o&&a<=s,u=r>=n.innerRadius&&r<=n.outerRadius;return l&&u}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t,e=this._chart.ctx,n=this._view,i=\"inner\"===n.borderAlign?.33:0,a={x:n.x,y:n.y,innerRadius:n.innerRadius,outerRadius:Math.max(n.outerRadius-i,0),pixelMargin:i,startAngle:n.startAngle,endAngle:n.endAngle,fullCircles:Math.floor(n.circumference/it)};if(e.save(),e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,a.fullCircles){for(a.endAngle=a.startAngle+it,e.beginPath(),e.arc(a.x,a.y,a.outerRadius,a.startAngle,a.endAngle),e.arc(a.x,a.y,a.innerRadius,a.endAngle,a.startAngle,!0),e.closePath(),t=0;tt.x&&(e=vt(e,\"left\",\"right\")):t.basen?n:i,r:l.right||a<0?0:a>e?e:a,b:l.bottom||r<0?0:r>n?n:r,l:l.left||o<0?0:o>e?e:o}}function xt(t,e,n){var i=null===e,a=null===n,r=!(!t||i&&a)&&mt(t);return r&&(i||e>=r.left&&e<=r.right)&&(a||n>=r.top&&n<=r.bottom)}z._set(\"global\",{elements:{rectangle:{backgroundColor:gt,borderColor:gt,borderSkipped:\"bottom\",borderWidth:0}}});var yt=X.extend({_type:\"rectangle\",draw:function(){var t=this._chart.ctx,e=this._view,n=function(t){var e=mt(t),n=e.right-e.left,i=e.bottom-e.top,a=bt(t,n/2,i/2);return{outer:{x:e.left,y:e.top,w:n,h:i},inner:{x:e.left+a.l,y:e.top+a.t,w:n-a.l-a.r,h:i-a.t-a.b}}}(e),i=n.outer,a=n.inner;t.fillStyle=e.backgroundColor,t.fillRect(i.x,i.y,i.w,i.h),i.w===a.w&&i.h===a.h||(t.save(),t.beginPath(),t.rect(i.x,i.y,i.w,i.h),t.clip(),t.fillStyle=e.borderColor,t.rect(a.x,a.y,a.w,a.h),t.fill(\"evenodd\"),t.restore())},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){return xt(this._view,t,e)},inLabelRange:function(t,e){var n=this._view;return pt(n)?xt(n,t,null):xt(n,null,e)},inXRange:function(t){return xt(this._view,t,null)},inYRange:function(t){return xt(this._view,null,t)},getCenterPoint:function(){var t,e,n=this._view;return pt(n)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return pt(t)?t.width*Math.abs(t.y-t.base):t.height*Math.abs(t.x-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}}),_t={},kt=ot,wt=ut,Mt=ft,St=yt;_t.Arc=kt,_t.Line=wt,_t.Point=Mt,_t.Rectangle=St;var Ct=V._deprecated,Pt=V.valueOrDefault;function At(t,e,n){var i,a,r=n.barThickness,o=e.stackCount,s=e.pixels[t],l=V.isNullOrUndef(r)?function(t,e){var n,i,a,r,o=t._length;for(a=1,r=e.length;a0?Math.min(o,Math.abs(i-n)):o,n=i;return o}(e.scale,e.pixels):-1;return V.isNullOrUndef(r)?(i=l*n.categoryPercentage,a=n.barPercentage):(i=r*o,a=1),{chunk:i/o,ratio:a,start:s-i/2}}z._set(\"bar\",{hover:{mode:\"label\"},scales:{xAxes:[{type:\"category\",offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:\"linear\"}]}}),z._set(\"global\",{datasets:{bar:{categoryPercentage:.8,barPercentage:.9}}});var Dt=nt.extend({dataElementType:_t.Rectangle,_dataElementOptions:[\"backgroundColor\",\"borderColor\",\"borderSkipped\",\"borderWidth\",\"barPercentage\",\"barThickness\",\"categoryPercentage\",\"maxBarThickness\",\"minBarLength\"],initialize:function(){var t,e,n=this;nt.prototype.initialize.apply(n,arguments),(t=n.getMeta()).stack=n.getDataset().stack,t.bar=!0,e=n._getIndexScale().options,Ct(\"bar chart\",e.barPercentage,\"scales.[x/y]Axes.barPercentage\",\"dataset.barPercentage\"),Ct(\"bar chart\",e.barThickness,\"scales.[x/y]Axes.barThickness\",\"dataset.barThickness\"),Ct(\"bar chart\",e.categoryPercentage,\"scales.[x/y]Axes.categoryPercentage\",\"dataset.categoryPercentage\"),Ct(\"bar chart\",n._getValueScale().options.minBarLength,\"scales.[x/y]Axes.minBarLength\",\"dataset.minBarLength\"),Ct(\"bar chart\",e.maxBarThickness,\"scales.[x/y]Axes.maxBarThickness\",\"dataset.maxBarThickness\")},update:function(t){var e,n,i=this.getMeta().data;for(this._ruler=this.getRuler(),e=0,n=i.length;e=0&&p.min>=0?p.min:p.max,y=void 0===p.start?p.end:p.max>=0&&p.min>=0?p.max-p.min:p.min-p.max,_=g.length;if(v||void 0===v&&void 0!==b)for(i=0;i<_&&(a=g[i]).index!==t;++i)a.stack===b&&(r=void 0===(u=h._parseValue(f[a.index].data[e])).start?u.end:u.min>=0&&u.max>=0?u.max:u.min,(p.min<0&&r<0||p.max>=0&&r>0)&&(x+=r));return o=h.getPixelForValue(x),l=(s=h.getPixelForValue(x+y))-o,void 0!==m&&Math.abs(l)=0&&!c||y<0&&c?o-m:o+m),{size:l,base:o,head:s,center:s+l/2}},calculateBarIndexPixels:function(t,e,n,i){var a=\"flex\"===i.barThickness?function(t,e,n){var i,a=e.pixels,r=a[t],o=t>0?a[t-1]:null,s=t=Ot?-Rt:b<-Ot?Rt:0)+m,y=Math.cos(b),_=Math.sin(b),k=Math.cos(x),w=Math.sin(x),M=b<=0&&x>=0||x>=Rt,S=b<=zt&&x>=zt||x>=Rt+zt,C=b<=-zt&&x>=-zt||x>=Ot+zt,P=b===-Ot||x>=Ot?-1:Math.min(y,y*p,k,k*p),A=C?-1:Math.min(_,_*p,w,w*p),D=M?1:Math.max(y,y*p,k,k*p),T=S?1:Math.max(_,_*p,w,w*p);u=(D-P)/2,d=(T-A)/2,h=-(D+P)/2,c=-(T+A)/2}for(i=0,a=g.length;i0&&!isNaN(t)?Rt*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){var e,n,i,a,r,o,s,l,u=0,d=this.chart;if(!t)for(e=0,n=d.data.datasets.length;e(u=s>u?s:u)?l:u);return u},setHoverStyle:function(t){var e=t._model,n=t._options,i=V.getHoverColor;t.$previousStyle={backgroundColor:e.backgroundColor,borderColor:e.borderColor,borderWidth:e.borderWidth},e.backgroundColor=Lt(n.hoverBackgroundColor,i(n.backgroundColor)),e.borderColor=Lt(n.hoverBorderColor,i(n.borderColor)),e.borderWidth=Lt(n.hoverBorderWidth,n.borderWidth)},_getRingWeightOffset:function(t){for(var e=0,n=0;n0&&Vt(l[t-1]._model,s)&&(n.controlPointPreviousX=u(n.controlPointPreviousX,s.left,s.right),n.controlPointPreviousY=u(n.controlPointPreviousY,s.top,s.bottom)),t0&&(r=t.getDatasetMeta(r[0]._datasetIndex).data),r},\"x-axis\":function(t,e){return ie(t,e,{intersect:!1})},point:function(t,e){return te(t,Jt(e,t))},nearest:function(t,e,n){var i=Jt(e,t);n.axis=n.axis||\"xy\";var a=ne(n.axis);return ee(t,i,n.intersect,a)},x:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inXRange(i.x)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a},y:function(t,e,n){var i=Jt(e,t),a=[],r=!1;return Qt(t,(function(t){t.inYRange(i.y)&&a.push(t),t.inRange(i.x,i.y)&&(r=!0)})),n.intersect&&!r&&(a=[]),a}}},re=V.extend;function oe(t,e){return V.where(t,(function(t){return t.pos===e}))}function se(t,e){return t.sort((function(t,n){var i=e?n:t,a=e?t:n;return i.weight===a.weight?i.index-a.index:i.weight-a.weight}))}function le(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function ue(t,e,n){var i,a,r=n.box,o=t.maxPadding;if(n.size&&(t[n.pos]-=n.size),n.size=n.horizontal?r.height:r.width,t[n.pos]+=n.size,r.getPadding){var s=r.getPadding();o.top=Math.max(o.top,s.top),o.left=Math.max(o.left,s.left),o.bottom=Math.max(o.bottom,s.bottom),o.right=Math.max(o.right,s.right)}if(i=e.outerWidth-le(o,t,\"left\",\"right\"),a=e.outerHeight-le(o,t,\"top\",\"bottom\"),i!==t.w||a!==t.h)return t.w=i,t.h=a,n.horizontal?i!==t.w:a!==t.h}function de(t,e){var n=e.maxPadding;function i(t){var i={left:0,top:0,right:0,bottom:0};return t.forEach((function(t){i[t]=Math.max(e[t],n[t])})),i}return i(t?[\"left\",\"right\"]:[\"top\",\"bottom\"])}function he(t,e,n){var i,a,r,o,s,l,u=[];for(i=0,a=t.length;idiv{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}\"}))&&fe.default||fe,me=\"$chartjs\",ve=\"chartjs-size-monitor\",be=\"chartjs-render-monitor\",xe=\"chartjs-render-animation\",ye=[\"animationstart\",\"webkitAnimationStart\"],_e={touchstart:\"mousedown\",touchmove:\"mousemove\",touchend:\"mouseup\",pointerenter:\"mouseenter\",pointerdown:\"mousedown\",pointermove:\"mousemove\",pointerup:\"mouseup\",pointerleave:\"mouseout\",pointerout:\"mouseout\"};function ke(t,e){var n=V.getStyle(t,e),i=n&&n.match(/^(\\d+)(\\.\\d+)?px$/);return i?Number(i[1]):void 0}var we=!!function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"e\",null,e)}catch(t){}return t}()&&{passive:!0};function Me(t,e,n){t.addEventListener(e,n,we)}function Se(t,e,n){t.removeEventListener(e,n,we)}function Ce(t,e,n,i,a){return{type:t,chart:e,native:a||null,x:void 0!==n?n:null,y:void 0!==i?i:null}}function Pe(t){var e=document.createElement(\"div\");return e.className=t||\"\",e}function Ae(t,e,n){var i,a,r,o,s=t[me]||(t[me]={}),l=s.resizer=function(t){var e=Pe(ve),n=Pe(ve+\"-expand\"),i=Pe(ve+\"-shrink\");n.appendChild(Pe()),i.appendChild(Pe()),e.appendChild(n),e.appendChild(i),e._reset=function(){n.scrollLeft=1e6,n.scrollTop=1e6,i.scrollLeft=1e6,i.scrollTop=1e6};var a=function(){e._reset(),t()};return Me(n,\"scroll\",a.bind(n,\"expand\")),Me(i,\"scroll\",a.bind(i,\"shrink\")),e}((i=function(){if(s.resizer){var i=n.options.maintainAspectRatio&&t.parentNode,a=i?i.clientWidth:0;e(Ce(\"resize\",n)),i&&i.clientWidth0){var r=t[0];r.label?n=r.label:r.xLabel?n=r.xLabel:a>0&&r.index-1?t.split(\"\\n\"):t}function We(t){var e=z.global;return{xPadding:t.xPadding,yPadding:t.yPadding,xAlign:t.xAlign,yAlign:t.yAlign,rtl:t.rtl,textDirection:t.textDirection,bodyFontColor:t.bodyFontColor,_bodyFontFamily:Re(t.bodyFontFamily,e.defaultFontFamily),_bodyFontStyle:Re(t.bodyFontStyle,e.defaultFontStyle),_bodyAlign:t.bodyAlign,bodyFontSize:Re(t.bodyFontSize,e.defaultFontSize),bodySpacing:t.bodySpacing,titleFontColor:t.titleFontColor,_titleFontFamily:Re(t.titleFontFamily,e.defaultFontFamily),_titleFontStyle:Re(t.titleFontStyle,e.defaultFontStyle),titleFontSize:Re(t.titleFontSize,e.defaultFontSize),_titleAlign:t.titleAlign,titleSpacing:t.titleSpacing,titleMarginBottom:t.titleMarginBottom,footerFontColor:t.footerFontColor,_footerFontFamily:Re(t.footerFontFamily,e.defaultFontFamily),_footerFontStyle:Re(t.footerFontStyle,e.defaultFontStyle),footerFontSize:Re(t.footerFontSize,e.defaultFontSize),_footerAlign:t.footerAlign,footerSpacing:t.footerSpacing,footerMarginTop:t.footerMarginTop,caretSize:t.caretSize,cornerRadius:t.cornerRadius,backgroundColor:t.backgroundColor,opacity:0,legendColorBackground:t.multiKeyBackground,displayColors:t.displayColors,borderColor:t.borderColor,borderWidth:t.borderWidth}}function Ve(t,e){return\"center\"===e?t.x+t.width/2:\"right\"===e?t.x+t.width-t.xPadding:t.x+t.xPadding}function He(t){return Be([],Ee(t))}var je=X.extend({initialize:function(){this._model=We(this._options),this._lastActive=[]},getTitle:function(){var t=this,e=t._options,n=e.callbacks,i=n.beforeTitle.apply(t,arguments),a=n.title.apply(t,arguments),r=n.afterTitle.apply(t,arguments),o=[];return o=Be(o,Ee(i)),o=Be(o,Ee(a)),o=Be(o,Ee(r))},getBeforeBody:function(){return He(this._options.callbacks.beforeBody.apply(this,arguments))},getBody:function(t,e){var n=this,i=n._options.callbacks,a=[];return V.each(t,(function(t){var r={before:[],lines:[],after:[]};Be(r.before,Ee(i.beforeLabel.call(n,t,e))),Be(r.lines,i.label.call(n,t,e)),Be(r.after,Ee(i.afterLabel.call(n,t,e))),a.push(r)})),a},getAfterBody:function(){return He(this._options.callbacks.afterBody.apply(this,arguments))},getFooter:function(){var t=this,e=t._options.callbacks,n=e.beforeFooter.apply(t,arguments),i=e.footer.apply(t,arguments),a=e.afterFooter.apply(t,arguments),r=[];return r=Be(r,Ee(n)),r=Be(r,Ee(i)),r=Be(r,Ee(a))},update:function(t){var e,n,i,a,r,o,s,l,u,d,h=this,c=h._options,f=h._model,g=h._model=We(c),p=h._active,m=h._data,v={xAlign:f.xAlign,yAlign:f.yAlign},b={x:f.x,y:f.y},x={width:f.width,height:f.height},y={x:f.caretX,y:f.caretY};if(p.length){g.opacity=1;var _=[],k=[];y=Ne[c.position].call(h,p,h._eventPosition);var w=[];for(e=0,n=p.length;ei.width&&(a=i.width-e.width),a<0&&(a=0)),\"top\"===d?r+=h:r-=\"bottom\"===d?e.height+h:e.height/2,\"center\"===d?\"left\"===u?a+=h:\"right\"===u&&(a-=h):\"left\"===u?a-=c:\"right\"===u&&(a+=c),{x:a,y:r}}(g,x,v=function(t,e){var n,i,a,r,o,s=t._model,l=t._chart,u=t._chart.chartArea,d=\"center\",h=\"center\";s.yl.height-e.height&&(h=\"bottom\");var c=(u.left+u.right)/2,f=(u.top+u.bottom)/2;\"center\"===h?(n=function(t){return t<=c},i=function(t){return t>c}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),a=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},r=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?\"top\":\"bottom\"},n(s.x)?(d=\"left\",a(s.x)&&(d=\"center\",h=o(s.y))):i(s.x)&&(d=\"right\",r(s.x)&&(d=\"center\",h=o(s.y)));var g=t._options;return{xAlign:g.xAlign?g.xAlign:d,yAlign:g.yAlign?g.yAlign:h}}(this,x),h._chart)}else g.opacity=0;return g.xAlign=v.xAlign,g.yAlign=v.yAlign,g.x=b.x,g.y=b.y,g.width=x.width,g.height=x.height,g.caretX=y.x,g.caretY=y.y,h._model=g,t&&c.custom&&c.custom.call(h,g),h},drawCaret:function(t,e){var n=this._chart.ctx,i=this._view,a=this.getCaretPosition(t,e,i);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)},getCaretPosition:function(t,e,n){var i,a,r,o,s,l,u=n.caretSize,d=n.cornerRadius,h=n.xAlign,c=n.yAlign,f=t.x,g=t.y,p=e.width,m=e.height;if(\"center\"===c)s=g+m/2,\"left\"===h?(a=(i=f)-u,r=i,o=s+u,l=s-u):(a=(i=f+p)+u,r=i,o=s-u,l=s+u);else if(\"left\"===h?(i=(a=f+d+u)-u,r=a+u):\"right\"===h?(i=(a=f+p-d-u)-u,r=a+u):(i=(a=n.caretX)-u,r=a+u),\"top\"===c)s=(o=g)-u,l=o;else{s=(o=g+m)+u,l=o;var v=r;r=i,i=v}return{x1:i,x2:a,x3:r,y1:o,y2:s,y3:l}},drawTitle:function(t,e,n){var i,a,r,o=e.title,s=o.length;if(s){var l=ze(e.rtl,e.x,e.width);for(t.x=Ve(e,e._titleAlign),n.textAlign=l.textAlign(e._titleAlign),n.textBaseline=\"middle\",i=e.titleFontSize,a=e.titleSpacing,n.fillStyle=e.titleFontColor,n.font=V.fontString(i,e._titleFontStyle,e._titleFontFamily),r=0;r0&&n.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},a=Math.abs(e.opacity<.001)?0:e.opacity,r=e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length;this._options.enabled&&r&&(t.save(),t.globalAlpha=a,this.drawBackground(i,e,t,n),i.y+=e.yPadding,V.rtl.overrideTextDirection(t,e.textDirection),this.drawTitle(i,e,t),this.drawBody(i,e,t),this.drawFooter(i,e,t),V.rtl.restoreTextDirection(t,e.textDirection),t.restore())}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],\"mouseout\"===t.type?n._active=[]:(n._active=n._chart.getElementsAtEventForMode(t,i.mode,i),i.reverse&&n._active.reverse()),(e=!V.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),qe=Ne,Ue=je;Ue.positioners=qe;var Ye=V.valueOrDefault;function Ge(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){if(\"xAxes\"===t||\"yAxes\"===t){var a,r,o,s=n[t].length;for(e[t]||(e[t]=[]),a=0;a=e[t].length&&e[t].push({}),!e[t][a].type||o.type&&o.type!==e[t][a].type?V.merge(e[t][a],[Oe.getScaleDefaults(r),o]):V.merge(e[t][a],o)}else V._merger(t,e,n,i)}})}function Xe(){return V.merge({},[].slice.call(arguments),{merger:function(t,e,n,i){var a=e[t]||{},r=n[t];\"scales\"===t?e[t]=Ge(a,r):\"scale\"===t?e[t]=V.merge(a,[Oe.getScaleDefaults(r.type),r]):V._merger(t,e,n,i)}})}function Ke(t){var e=t.options;V.each(t.scales,(function(e){ge.removeBox(t,e)})),e=Xe(z.global,z[t.config.type],e),t.options=t.config.options=e,t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.tooltip._options=e.tooltips,t.tooltip.initialize()}function Ze(t,e,n){var i,a=function(t){return t.id===i};do{i=e+n++}while(V.findIndex(t,a)>=0);return i}function $e(t){return\"top\"===t||\"bottom\"===t}function Je(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}z._set(\"global\",{elements:{},events:[\"mousemove\",\"mouseout\",\"click\",\"touchstart\",\"touchmove\"],hover:{onHover:null,mode:\"nearest\",intersect:!0,animationDuration:400},onClick:null,maintainAspectRatio:!0,responsive:!0,responsiveAnimationDuration:0});var Qe=function(t,e){return this.construct(t,e),this};V.extend(Qe.prototype,{construct:function(t,e){var n=this;e=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=Xe(z.global,z[t.type],t.options||{}),t}(e);var i=Fe.acquireContext(t,e),a=i&&i.canvas,r=a&&a.height,o=a&&a.width;n.id=V.uid(),n.ctx=i,n.canvas=a,n.config=e,n.width=o,n.height=r,n.aspectRatio=r?o/r:null,n.options=e.options,n._bufferedRender=!1,n._layers=[],n.chart=n,n.controller=n,Qe.instances[n.id]=n,Object.defineProperty(n,\"data\",{get:function(){return n.config.data},set:function(t){n.config.data=t}}),i&&a?(n.initialize(),n.update()):console.error(\"Failed to create chart: can't acquire context from the given item\")},initialize:function(){var t=this;return Le.notify(t,\"beforeInit\"),V.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.initToolTip(),Le.notify(t,\"afterInit\"),t},clear:function(){return V.canvas.clear(this),this},stop:function(){return $.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,r=Math.max(0,Math.floor(V.getMaximumWidth(i))),o=Math.max(0,Math.floor(a?r/a:V.getMaximumHeight(i)));if((e.width!==r||e.height!==o)&&(i.width=e.width=r,i.height=e.height=o,i.style.width=r+\"px\",i.style.height=o+\"px\",V.retinaScale(e,n.devicePixelRatio),!t)){var s={width:r,height:o};Le.notify(e,\"resize\",[s]),n.onResize&&n.onResize(e,s),e.stop(),e.update({duration:n.responsiveAnimationDuration})}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;V.each(e.xAxes,(function(t,n){t.id||(t.id=Ze(e.xAxes,\"x-axis-\",n))})),V.each(e.yAxes,(function(t,n){t.id||(t.id=Ze(e.yAxes,\"y-axis-\",n))})),n&&(n.id=n.id||\"scale\")},buildOrUpdateScales:function(){var t=this,e=t.options,n=t.scales||{},i=[],a=Object.keys(n).reduce((function(t,e){return t[e]=!1,t}),{});e.scales&&(i=i.concat((e.scales.xAxes||[]).map((function(t){return{options:t,dtype:\"category\",dposition:\"bottom\"}})),(e.scales.yAxes||[]).map((function(t){return{options:t,dtype:\"linear\",dposition:\"left\"}})))),e.scale&&i.push({options:e.scale,dtype:\"radialLinear\",isDefault:!0,dposition:\"chartArea\"}),V.each(i,(function(e){var i=e.options,r=i.id,o=Ye(i.type,e.dtype);$e(i.position)!==$e(e.dposition)&&(i.position=e.dposition),a[r]=!0;var s=null;if(r in n&&n[r].type===o)(s=n[r]).options=i,s.ctx=t.ctx,s.chart=t;else{var l=Oe.getScaleConstructor(o);if(!l)return;s=new l({id:r,type:o,options:i,ctx:t.ctx,chart:t}),n[s.id]=s}s.mergeTicksOptions(),e.isDefault&&(t.scale=s)})),V.each(a,(function(t,e){t||delete n[e]})),t.scales=n,Oe.addScalesToLayout(this)},buildOrUpdateControllers:function(){var t,e,n=this,i=[],a=n.data.datasets;for(t=0,e=a.length;t=0;--n)this.drawDataset(e[n],t);Le.notify(this,\"afterDatasetsDraw\",[t])}},drawDataset:function(t,e){var n={meta:t,index:t.index,easingValue:e};!1!==Le.notify(this,\"beforeDatasetDraw\",[n])&&(t.controller.draw(e),Le.notify(this,\"afterDatasetDraw\",[n]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==Le.notify(this,\"beforeTooltipDraw\",[n])&&(e.draw(),Le.notify(this,\"afterTooltipDraw\",[n]))},getElementAtEvent:function(t){return ae.modes.single(this,t)},getElementsAtEvent:function(t){return ae.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return ae.modes[\"x-axis\"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=ae.modes[e];return\"function\"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return ae.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e.order||0,index:t}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;e3?n[2]-n[1]:n[1]-n[0];Math.abs(i)>1&&t!==Math.floor(t)&&(i=t-Math.floor(t));var a=V.log10(Math.abs(i)),r=\"\";if(0!==t)if(Math.max(Math.abs(n[0]),Math.abs(n[n.length-1]))<1e-4){var o=V.log10(Math.abs(t)),s=Math.floor(o)-Math.floor(a);s=Math.max(Math.min(s,20),0),r=t.toExponential(s)}else{var l=-1*Math.floor(a);l=Math.max(Math.min(l,20),0),r=t.toFixed(l)}else r=\"0\";return r},logarithmic:function(t,e,n){var i=t/Math.pow(10,Math.floor(V.log10(t)));return 0===t?\"0\":1===i||2===i||5===i||0===e||e===n.length-1?t.toExponential():\"\"}}},on=V.isArray,sn=V.isNullOrUndef,ln=V.valueOrDefault,un=V.valueAtIndexOrDefault;function dn(t,e,n){var i,a=t.getTicks().length,r=Math.min(e,a-1),o=t.getPixelForTick(r),s=t._startPixel,l=t._endPixel;if(!(n&&(i=1===a?Math.max(o-s,l-o):0===e?(t.getPixelForTick(1)-o)/2:(o-t.getPixelForTick(r-1))/2,(o+=rl+1e-6)))return o}function hn(t,e,n,i){var a,r,o,s,l,u,d,h,c,f,g,p,m,v=n.length,b=[],x=[],y=[];for(a=0;ae){for(n=0;n=c||d<=1||!s.isHorizontal()?s.labelRotation=h:(e=(t=s._getLabelSizes()).widest.width,n=t.highest.height-t.highest.offset,i=Math.min(s.maxWidth,s.chart.width-e),e+6>(a=l.offset?s.maxWidth/d:i/(d-1))&&(a=i/(d-(l.offset?.5:1)),r=s.maxHeight-cn(l.gridLines)-u.padding-fn(l.scaleLabel),o=Math.sqrt(e*e+n*n),f=V.toDegrees(Math.min(Math.asin(Math.min((t.highest.height+6)/a,1)),Math.asin(Math.min(r/o,1))-Math.asin(n/o))),f=Math.max(h,Math.min(c,f))),s.labelRotation=f)},afterCalculateTickRotation:function(){V.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){V.callback(this.options.beforeFit,[this])},fit:function(){var t=this,e=t.minSize={width:0,height:0},n=t.chart,i=t.options,a=i.ticks,r=i.scaleLabel,o=i.gridLines,s=t._isVisible(),l=\"bottom\"===i.position,u=t.isHorizontal();if(u?e.width=t.maxWidth:s&&(e.width=cn(o)+fn(r)),u?s&&(e.height=cn(o)+fn(r)):e.height=t.maxHeight,a.display&&s){var d=pn(a),h=t._getLabelSizes(),c=h.first,f=h.last,g=h.widest,p=h.highest,m=.4*d.minor.lineHeight,v=a.padding;if(u){var b=0!==t.labelRotation,x=V.toRadians(t.labelRotation),y=Math.cos(x),_=Math.sin(x),k=_*g.width+y*(p.height-(b?p.offset:0))+(b?0:m);e.height=Math.min(t.maxHeight,e.height+k+v);var w,M,S=t.getPixelForTick(0)-t.left,C=t.right-t.getPixelForTick(t.getTicks().length-1);b?(w=l?y*c.width+_*c.offset:_*(c.height-c.offset),M=l?_*(f.height-f.offset):y*f.width+_*f.offset):(w=c.width/2,M=f.width/2),t.paddingLeft=Math.max((w-S)*t.width/(t.width-S),0)+3,t.paddingRight=Math.max((M-C)*t.width/(t.width-C),0)+3}else{var P=a.mirror?0:g.width+v+m;e.width=Math.min(t.maxWidth,e.width+P),t.paddingTop=c.height/2,t.paddingBottom=f.height/2}}t.handleMargins(),u?(t.width=t._length=n.width-t.margins.left-t.margins.right,t.height=e.height):(t.width=e.width,t.height=t._length=n.height-t.margins.top-t.margins.bottom)},handleMargins:function(){var t=this;t.margins&&(t.margins.left=Math.max(t.paddingLeft,t.margins.left),t.margins.top=Math.max(t.paddingTop,t.margins.top),t.margins.right=Math.max(t.paddingRight,t.margins.right),t.margins.bottom=Math.max(t.paddingBottom,t.margins.bottom))},afterFit:function(){V.callback(this.options.afterFit,[this])},isHorizontal:function(){var t=this.options.position;return\"top\"===t||\"bottom\"===t},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(sn(t))return NaN;if((\"number\"==typeof t||t instanceof Number)&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},_convertTicksToLabels:function(t){var e,n,i,a=this;for(a.ticks=t.map((function(t){return t.value})),a.beforeTickToLabelConversion(),e=a.convertTicksToLabels(t)||a.ticks,a.afterTickToLabelConversion(),n=0,i=t.length;nn-1?null:this.getPixelForDecimal(t*i+(e?i/2:0))},getPixelForDecimal:function(t){return this._reversePixels&&(t=1-t),this._startPixel+t*this._length},getDecimalForPixel:function(t){var e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,a,r=this.options.ticks,o=this._length,s=r.maxTicksLimit||o/this._tickSize()+1,l=r.major.enabled?function(t){var e,n,i=[];for(e=0,n=t.length;es)return function(t,e,n){var i,a,r=0,o=e[0];for(n=Math.ceil(n),i=0;iu)return r;return Math.max(u,1)}(l,t,0,s),u>0){for(e=0,n=u-1;e1?(h-d)/(u-1):null,vn(t,i,V.isNullOrUndef(a)?0:d-a,d),vn(t,i,h,V.isNullOrUndef(a)?t.length:h+a),mn(t)}return vn(t,i),mn(t)},_tickSize:function(){var t=this.options.ticks,e=V.toRadians(this.labelRotation),n=Math.abs(Math.cos(e)),i=Math.abs(Math.sin(e)),a=this._getLabelSizes(),r=t.autoSkipPadding||0,o=a?a.widest.width+r:0,s=a?a.highest.height+r:0;return this.isHorizontal()?s*n>o*i?o/n:s/i:s*i=0&&(o=t),void 0!==r&&(t=n.indexOf(r))>=0&&(s=t),e.minIndex=o,e.maxIndex=s,e.min=n[o],e.max=n[s]},buildTicks:function(){var t=this._getLabels(),e=this.minIndex,n=this.maxIndex;this.ticks=0===e&&n===t.length-1?t:t.slice(e,n+1)},getLabelForIndex:function(t,e){var n=this.chart;return n.getDatasetMeta(e).controller._getValueScaleId()===this.id?this.getRightValue(n.data.datasets[e].data[t]):this._getLabels()[t]},_configure:function(){var t=this,e=t.options.offset,n=t.ticks;xn.prototype._configure.call(t),t.isHorizontal()||(t._reversePixels=!t._reversePixels),n&&(t._startValue=t.minIndex-(e?.5:0),t._valueRange=Math.max(n.length-(e?0:1),1))},getPixelForValue:function(t,e,n){var i,a,r,o=this;return yn(e)||yn(n)||(t=o.chart.data.datasets[n].data[e]),yn(t)||(i=o.isHorizontal()?t.x:t.y),(void 0!==i||void 0!==t&&isNaN(e))&&(a=o._getLabels(),t=V.valueOrDefault(i,t),e=-1!==(r=a.indexOf(t))?r:e,isNaN(e)&&(e=t)),o.getPixelForDecimal((e-o._startValue)/o._valueRange)},getPixelForTick:function(t){var e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t],t+this.minIndex)},getValueForPixel:function(t){var e=Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange);return Math.min(Math.max(e,0),this.ticks.length-1)},getBasePixel:function(){return this.bottom}}),kn={position:\"bottom\"};_n._defaults=kn;var wn=V.noop,Mn=V.isNullOrUndef;var Sn=xn.extend({getRightValue:function(t){return\"string\"==typeof t?+t:xn.prototype.getRightValue.call(this,t)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=V.sign(t.min),i=V.sign(t.max);n<0&&i<0?t.max=0:n>0&&i>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,r=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(null===t.min?t.min=e.suggestedMin:t.min=Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(null===t.max?t.max=e.suggestedMax:t.max=Math.max(t.max,e.suggestedMax)),a!==r&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:function(){var t,e=this.options.ticks,n=e.stepSize,i=e.maxTicksLimit;return n?t=Math.ceil(this.max/n)-Math.floor(this.min/n)+1:(t=this._computeTickLimit(),i=i||11),i&&(t=Math.min(i,t)),t},_computeTickLimit:function(){return Number.POSITIVE_INFINITY},handleDirectionalChanges:wn,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),i={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,precision:e.precision,stepSize:V.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,i,a,r,o=[],s=t.stepSize,l=s||1,u=t.maxTicks-1,d=t.min,h=t.max,c=t.precision,f=e.min,g=e.max,p=V.niceNum((g-f)/u/l)*l;if(p<1e-14&&Mn(d)&&Mn(h))return[f,g];(r=Math.ceil(g/p)-Math.floor(f/p))>u&&(p=V.niceNum(r*p/u/l)*l),s||Mn(c)?n=Math.pow(10,V._decimalPlaces(p)):(n=Math.pow(10,c),p=Math.ceil(p*n)/n),i=Math.floor(f/p)*p,a=Math.ceil(g/p)*p,s&&(!Mn(d)&&V.almostWhole(d/p,p/1e3)&&(i=d),!Mn(h)&&V.almostWhole(h/p,p/1e3)&&(a=h)),r=(a-i)/p,r=V.almostEquals(r,Math.round(r),p/1e3)?Math.round(r):Math.ceil(r),i=Math.round(i*n)/n,a=Math.round(a*n)/n,o.push(Mn(d)?i:d);for(var m=1;me.length-1?null:this.getPixelForValue(e[t])}}),Tn=Cn;Dn._defaults=Tn;var In=V.valueOrDefault,Fn=V.math.log10;var Ln={position:\"left\",ticks:{callback:rn.formatters.logarithmic}};function On(t,e){return V.isFinite(t)&&t>=0?t:e}var Rn=xn.extend({determineDataLimits:function(){var t,e,n,i,a,r,o=this,s=o.options,l=o.chart,u=l.data.datasets,d=o.isHorizontal();function h(t){return d?t.xAxisID===o.id:t.yAxisID===o.id}o.min=Number.POSITIVE_INFINITY,o.max=Number.NEGATIVE_INFINITY,o.minNotZero=Number.POSITIVE_INFINITY;var c=s.stacked;if(void 0===c)for(t=0;t0){var e=V.min(t),n=V.max(t);o.min=Math.min(o.min,e),o.max=Math.max(o.max,n)}}))}else for(t=0;t0?t.minNotZero=t.min:t.max<1?t.minNotZero=Math.pow(10,Math.floor(Fn(t.max))):t.minNotZero=1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),i={min:On(e.min),max:On(e.max)},a=t.ticks=function(t,e){var n,i,a=[],r=In(t.min,Math.pow(10,Math.floor(Fn(e.min)))),o=Math.floor(Fn(e.max)),s=Math.ceil(e.max/Math.pow(10,o));0===r?(n=Math.floor(Fn(e.minNotZero)),i=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(r),r=i*Math.pow(10,n)):(n=Math.floor(Fn(r)),i=Math.floor(r/Math.pow(10,n)));var l=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(r),10===++i&&(i=1,l=++n>=0?1:l),r=Math.round(i*Math.pow(10,n)*l)/l}while(ne.length-1?null:this.getPixelForValue(e[t])},_getFirstTickValue:function(t){var e=Math.floor(Fn(t));return Math.floor(t/Math.pow(10,e))*Math.pow(10,e)},_configure:function(){var t=this,e=t.min,n=0;xn.prototype._configure.call(t),0===e&&(e=t._getFirstTickValue(t.minNotZero),n=In(t.options.ticks.fontSize,z.global.defaultFontSize)/t._length),t._startValue=Fn(e),t._valueOffset=n,t._valueRange=(Fn(t.max)-Fn(e))/(1-n)},getPixelForValue:function(t){var e=this,n=0;return(t=+e.getRightValue(t))>e.min&&t>0&&(n=(Fn(t)-e._startValue)/e._valueRange+e._valueOffset),e.getPixelForDecimal(n)},getValueForPixel:function(t){var e=this,n=e.getDecimalForPixel(t);return 0===n&&0===e.min?0:Math.pow(10,e._startValue+(n-e._valueOffset)*e._valueRange)}}),zn=Ln;Rn._defaults=zn;var Nn=V.valueOrDefault,Bn=V.valueAtIndexOrDefault,En=V.options.resolve,Wn={display:!0,animate:!0,position:\"chartArea\",angleLines:{display:!0,color:\"rgba(0,0,0,0.1)\",lineWidth:1,borderDash:[],borderDashOffset:0},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:\"rgba(255,255,255,0.75)\",backdropPaddingY:2,backdropPaddingX:2,callback:rn.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function Vn(t){var e=t.ticks;return e.display&&t.display?Nn(e.fontSize,z.global.defaultFontSize)+2*e.backdropPaddingY:0}function Hn(t,e,n,i,a){return t===i||t===a?{start:e-n/2,end:e+n/2}:ta?{start:e-n,end:e}:{start:e,end:e+n}}function jn(t){return 0===t||180===t?\"center\":t<180?\"left\":\"right\"}function qn(t,e,n,i){var a,r,o=n.y+i/2;if(V.isArray(e))for(a=0,r=e.length;a270||t<90)&&(n.y-=e.h)}function Yn(t){return V.isNumber(t)?t:0}var Gn=Sn.extend({setDimensions:function(){var t=this;t.width=t.maxWidth,t.height=t.maxHeight,t.paddingTop=Vn(t.options)/2,t.xCenter=Math.floor(t.width/2),t.yCenter=Math.floor((t.height-t.paddingTop)/2),t.drawingArea=Math.min(t.height-t.paddingTop,t.width)/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;V.each(e.data.datasets,(function(a,r){if(e.isDatasetVisible(r)){var o=e.getDatasetMeta(r);V.each(a.data,(function(e,a){var r=+t.getRightValue(e);isNaN(r)||o.data[a].hidden||(n=Math.min(r,n),i=Math.max(r,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},_computeTickLimit:function(){return Math.ceil(this.drawingArea/Vn(this.options))},convertTicksToLabels:function(){var t=this;Sn.prototype.convertTicksToLabels.call(t),t.pointLabels=t.chart.data.labels.map((function(){var e=V.callback(t.options.pointLabels.callback,arguments,t);return e||0===e?e:\"\"}))},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t=this.options;t.display&&t.pointLabels.display?function(t){var e,n,i,a=V.options._parseFont(t.options.pointLabels),r={l:0,r:t.width,t:0,b:t.height-t.paddingTop},o={};t.ctx.font=a.string,t._pointLabelSizes=[];var s,l,u,d=t.chart.data.labels.length;for(e=0;er.r&&(r.r=f.end,o.r=h),g.startr.b&&(r.b=g.end,o.b=h)}t.setReductions(t.drawingArea,r,o)}(this):this.setCenterPoint(0,0,0,0)},setReductions:function(t,e,n){var i=this,a=e.l/Math.sin(n.l),r=Math.max(e.r-i.width,0)/Math.sin(n.r),o=-e.t/Math.cos(n.t),s=-Math.max(e.b-(i.height-i.paddingTop),0)/Math.cos(n.b);a=Yn(a),r=Yn(r),o=Yn(o),s=Yn(s),i.drawingArea=Math.min(Math.floor(t-(a+r)/2),Math.floor(t-(o+s)/2)),i.setCenterPoint(a,r,o,s)},setCenterPoint:function(t,e,n,i){var a=this,r=a.width-e-a.drawingArea,o=t+a.drawingArea,s=n+a.drawingArea,l=a.height-a.paddingTop-i-a.drawingArea;a.xCenter=Math.floor((o+r)/2+a.left),a.yCenter=Math.floor((s+l)/2+a.top+a.paddingTop)},getIndexAngle:function(t){var e=this.chart,n=(t*(360/e.data.labels.length)+((e.options||{}).startAngle||0))%360;return(n<0?n+360:n)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(V.isNullOrUndef(t))return NaN;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.cos(n)*e+this.xCenter,y:Math.sin(n)*e+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(t){var e=this.min,n=this.max;return this.getPointPositionForValue(t||0,this.beginAtZero?0:e<0&&n<0?n:e>0&&n>0?e:0)},_drawGrid:function(){var t,e,n,i=this,a=i.ctx,r=i.options,o=r.gridLines,s=r.angleLines,l=Nn(s.lineWidth,o.lineWidth),u=Nn(s.color,o.color);if(r.pointLabels.display&&function(t){var e=t.ctx,n=t.options,i=n.pointLabels,a=Vn(n),r=t.getDistanceFromCenterForValue(n.ticks.reverse?t.min:t.max),o=V.options._parseFont(i);e.save(),e.font=o.string,e.textBaseline=\"middle\";for(var s=t.chart.data.labels.length-1;s>=0;s--){var l=0===s?a/2:0,u=t.getPointPosition(s,r+l+5),d=Bn(i.fontColor,s,z.global.defaultFontColor);e.fillStyle=d;var h=t.getIndexAngle(s),c=V.toDegrees(h);e.textAlign=jn(c),Un(c,t._pointLabelSizes[s],u),qn(e,t.pointLabels[s],u,o.lineHeight)}e.restore()}(i),o.display&&V.each(i.ticks,(function(t,n){0!==n&&(e=i.getDistanceFromCenterForValue(i.ticksAsNumbers[n]),function(t,e,n,i){var a,r=t.ctx,o=e.circular,s=t.chart.data.labels.length,l=Bn(e.color,i-1),u=Bn(e.lineWidth,i-1);if((o||s)&&l&&u){if(r.save(),r.strokeStyle=l,r.lineWidth=u,r.setLineDash&&(r.setLineDash(e.borderDash||[]),r.lineDashOffset=e.borderDashOffset||0),r.beginPath(),o)r.arc(t.xCenter,t.yCenter,n,0,2*Math.PI);else{a=t.getPointPosition(0,n),r.moveTo(a.x,a.y);for(var d=1;d=0;t--)e=i.getDistanceFromCenterForValue(r.ticks.reverse?i.min:i.max),n=i.getPointPosition(t,e),a.beginPath(),a.moveTo(i.xCenter,i.yCenter),a.lineTo(n.x,n.y),a.stroke();a.restore()}},_drawLabels:function(){var t=this,e=t.ctx,n=t.options.ticks;if(n.display){var i,a,r=t.getIndexAngle(0),o=V.options._parseFont(n),s=Nn(n.fontColor,z.global.defaultFontColor);e.save(),e.font=o.string,e.translate(t.xCenter,t.yCenter),e.rotate(r),e.textAlign=\"center\",e.textBaseline=\"middle\",V.each(t.ticks,(function(r,l){(0!==l||n.reverse)&&(i=t.getDistanceFromCenterForValue(t.ticksAsNumbers[l]),n.showLabelBackdrop&&(a=e.measureText(r).width,e.fillStyle=n.backdropColor,e.fillRect(-a/2-n.backdropPaddingX,-i-o.size/2-n.backdropPaddingY,a+2*n.backdropPaddingX,o.size+2*n.backdropPaddingY)),e.fillStyle=s,e.fillText(r,0,-i))})),e.restore()}},_drawTitle:V.noop}),Xn=Wn;Gn._defaults=Xn;var Kn=V._deprecated,Zn=V.options.resolve,$n=V.valueOrDefault,Jn=Number.MIN_SAFE_INTEGER||-9007199254740991,Qn=Number.MAX_SAFE_INTEGER||9007199254740991,ti={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},ei=Object.keys(ti);function ni(t,e){return t-e}function ii(t){return V.valueOrDefault(t.time.min,t.ticks.min)}function ai(t){return V.valueOrDefault(t.time.max,t.ticks.max)}function ri(t,e,n,i){var a=function(t,e,n){for(var i,a,r,o=0,s=t.length-1;o>=0&&o<=s;){if(a=t[(i=o+s>>1)-1]||null,r=t[i],!a)return{lo:null,hi:r};if(r[e]n))return{lo:a,hi:r};s=i-1}}return{lo:r,hi:null}}(t,e,n),r=a.lo?a.hi?a.lo:t[t.length-2]:t[0],o=a.lo?a.hi?a.hi:t[t.length-1]:t[1],s=o[e]-r[e],l=s?(n-r[e])/s:0,u=(o[i]-r[i])*l;return r[i]+u}function oi(t,e){var n=t._adapter,i=t.options.time,a=i.parser,r=a||i.format,o=e;return\"function\"==typeof a&&(o=a(o)),V.isFinite(o)||(o=\"string\"==typeof r?n.parse(o,r):n.parse(o)),null!==o?+o:(a||\"function\"!=typeof r||(o=r(e),V.isFinite(o)||(o=n.parse(o))),o)}function si(t,e){if(V.isNullOrUndef(e))return null;var n=t.options.time,i=oi(t,t.getRightValue(e));return null===i?i:(n.round&&(i=+t._adapter.startOf(i,n.round)),i)}function li(t,e,n,i){var a,r,o,s=ei.length;for(a=ei.indexOf(t);a=0&&(e[r].major=!0);return e}(t,r,o,n):r}var di=xn.extend({initialize:function(){this.mergeTicksOptions(),xn.prototype.initialize.call(this)},update:function(){var t=this,e=t.options,n=e.time||(e.time={}),i=t._adapter=new an._date(e.adapters.date);return Kn(\"time scale\",n.format,\"time.format\",\"time.parser\"),Kn(\"time scale\",n.min,\"time.min\",\"ticks.min\"),Kn(\"time scale\",n.max,\"time.max\",\"ticks.max\"),V.mergeIf(n.displayFormats,i.formats()),xn.prototype.update.apply(t,arguments)},getRightValue:function(t){return t&&void 0!==t.t&&(t=t.t),xn.prototype.getRightValue.call(this,t)},determineDataLimits:function(){var t,e,n,i,a,r,o,s=this,l=s.chart,u=s._adapter,d=s.options,h=d.time.unit||\"day\",c=Qn,f=Jn,g=[],p=[],m=[],v=s._getLabels();for(t=0,n=v.length;t1?function(t){var e,n,i,a={},r=[];for(e=0,n=t.length;e1e5*u)throw e+\" and \"+n+\" are too far apart with stepSize of \"+u+\" \"+l;for(a=h;a=a&&n<=r&&d.push(n);return i.min=a,i.max=r,i._unit=l.unit||(s.autoSkip?li(l.minUnit,i.min,i.max,h):function(t,e,n,i,a){var r,o;for(r=ei.length-1;r>=ei.indexOf(n);r--)if(o=ei[r],ti[o].common&&t._adapter.diff(a,i,o)>=e-1)return o;return ei[n?ei.indexOf(n):0]}(i,d.length,l.minUnit,i.min,i.max)),i._majorUnit=s.major.enabled&&\"year\"!==i._unit?function(t){for(var e=ei.indexOf(t)+1,n=ei.length;ee&&s=0&&t0?s:1}}),hi={position:\"bottom\",distribution:\"linear\",bounds:\"data\",adapters:{},time:{parser:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:\"millisecond\",displayFormats:{}},ticks:{autoSkip:!1,source:\"auto\",major:{enabled:!1}}};di._defaults=hi;var ci={category:_n,linear:Dn,logarithmic:Rn,radialLinear:Gn,time:di},fi={datetime:\"MMM D, YYYY, h:mm:ss a\",millisecond:\"h:mm:ss.SSS a\",second:\"h:mm:ss a\",minute:\"h:mm a\",hour:\"hA\",day:\"MMM D\",week:\"ll\",month:\"MMM YYYY\",quarter:\"[Q]Q - YYYY\",year:\"YYYY\"};an._date.override(\"function\"==typeof t?{_id:\"moment\",formats:function(){return fi},parse:function(e,n){return\"string\"==typeof e&&\"string\"==typeof n?e=t(e,n):e instanceof t||(e=t(e)),e.isValid()?e.valueOf():null},format:function(e,n){return t(e).format(n)},add:function(e,n,i){return t(e).add(n,i).valueOf()},diff:function(e,n,i){return t(e).diff(t(n),i)},startOf:function(e,n,i){return e=t(e),\"isoWeek\"===n?e.isoWeekday(i).valueOf():e.startOf(n).valueOf()},endOf:function(e,n){return t(e).endOf(n).valueOf()},_create:function(e){return t(e)}}:{}),z._set(\"global\",{plugins:{filler:{propagate:!0}}});var gi={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),a=i&&n.isDatasetVisible(e)&&i.dataset._children||[],r=a.length||0;return r?function(t,e){return e=n)&&i;switch(r){case\"bottom\":return\"start\";case\"top\":return\"end\";case\"zero\":return\"origin\";case\"origin\":case\"start\":case\"end\":return r;default:return!1}}function mi(t){return(t.el._scale||{}).getPointPositionForValue?function(t){var e,n,i,a,r,o=t.el._scale,s=o.options,l=o.chart.data.labels.length,u=t.fill,d=[];if(!l)return null;for(e=s.ticks.reverse?o.max:o.min,n=s.ticks.reverse?o.min:o.max,i=o.getPointPositionForValue(0,e),a=0;a0;--r)V.canvas.lineTo(t,n[r],n[r-1],!0);else for(o=n[0].cx,s=n[0].cy,l=Math.sqrt(Math.pow(n[0].x-o,2)+Math.pow(n[0].y-s,2)),r=a-1;r>0;--r)t.arc(o,s,l,n[r].angle,n[r-1].angle,!0)}}function _i(t,e,n,i,a,r){var o,s,l,u,d,h,c,f,g=e.length,p=i.spanGaps,m=[],v=[],b=0,x=0;for(t.beginPath(),o=0,s=g;o=0;--n)(e=l[n].$filler)&&e.visible&&(a=(i=e.el)._view,r=i._children||[],o=e.mapper,s=a.backgroundColor||z.global.defaultColor,o&&s&&r.length&&(V.canvas.clipArea(u,t.chartArea),_i(u,r,o,a,s,i._loop),V.canvas.unclipArea(u)))}},wi=V.rtl.getRtlAdapter,Mi=V.noop,Si=V.valueOrDefault;function Ci(t,e){return t.usePointStyle&&t.boxWidth>e?e:t.boxWidth}z._set(\"global\",{legend:{display:!0,position:\"top\",align:\"center\",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,a=i.getDatasetMeta(n);a.hidden=null===a.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,onLeave:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data.datasets,n=t.options.legend||{},i=n.labels&&n.labels.usePointStyle;return t._getSortedDatasetMetas().map((function(n){var a=n.controller.getStyle(i?0:void 0);return{text:e[n.index].label,fillStyle:a.backgroundColor,hidden:!t.isDatasetVisible(n.index),lineCap:a.borderCapStyle,lineDash:a.borderDash,lineDashOffset:a.borderDashOffset,lineJoin:a.borderJoinStyle,lineWidth:a.borderWidth,strokeStyle:a.borderColor,pointStyle:a.pointStyle,rotation:a.rotation,datasetIndex:n.index}}),this)}}},legendCallback:function(t){var e,n,i,a=document.createElement(\"ul\"),r=t.data.datasets;for(a.setAttribute(\"class\",t.id+\"-legend\"),e=0,n=r.length;el.width)&&(h+=o+n.padding,d[d.length-(e>0?0:1)]=0),s[e]={left:0,top:0,width:i,height:o},d[d.length-1]+=i+n.padding})),l.height+=h}else{var c=n.padding,f=t.columnWidths=[],g=t.columnHeights=[],p=n.padding,m=0,v=0;V.each(t.legendItems,(function(t,e){var i=Ci(n,o)+o/2+a.measureText(t.text).width;e>0&&v+o+2*c>l.height&&(p+=m+n.padding,f.push(m),g.push(v),m=0,v=0),m=Math.max(m,i),v+=o+c,s[e]={left:0,top:0,width:i,height:o}})),p+=m,f.push(m),g.push(v),l.width+=p}t.width=l.width,t.height=l.height}else t.width=l.width=t.height=l.height=0},afterFit:Mi,isHorizontal:function(){return\"top\"===this.options.position||\"bottom\"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,i=z.global,a=i.defaultColor,r=i.elements.line,o=t.height,s=t.columnHeights,l=t.width,u=t.lineWidths;if(e.display){var d,h=wi(e.rtl,t.left,t.minSize.width),c=t.ctx,f=Si(n.fontColor,i.defaultFontColor),g=V.options._parseFont(n),p=g.size;c.textAlign=h.textAlign(\"left\"),c.textBaseline=\"middle\",c.lineWidth=.5,c.strokeStyle=f,c.fillStyle=f,c.font=g.string;var m=Ci(n,p),v=t.legendHitBoxes,b=function(t,i){switch(e.align){case\"start\":return n.padding;case\"end\":return t-i;default:return(t-i+n.padding)/2}},x=t.isHorizontal();d=x?{x:t.left+b(l,u[0]),y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+b(o,s[0]),line:0},V.rtl.overrideTextDirection(t.ctx,e.textDirection);var y=p+n.padding;V.each(t.legendItems,(function(e,i){var f=c.measureText(e.text).width,g=m+p/2+f,_=d.x,k=d.y;h.setWidth(t.minSize.width),x?i>0&&_+g+n.padding>t.left+t.minSize.width&&(k=d.y+=y,d.line++,_=d.x=t.left+b(l,u[d.line])):i>0&&k+y>t.top+t.minSize.height&&(_=d.x=_+t.columnWidths[d.line]+n.padding,d.line++,k=d.y=t.top+b(o,s[d.line]));var w=h.x(_);!function(t,e,i){if(!(isNaN(m)||m<=0)){c.save();var o=Si(i.lineWidth,r.borderWidth);if(c.fillStyle=Si(i.fillStyle,a),c.lineCap=Si(i.lineCap,r.borderCapStyle),c.lineDashOffset=Si(i.lineDashOffset,r.borderDashOffset),c.lineJoin=Si(i.lineJoin,r.borderJoinStyle),c.lineWidth=o,c.strokeStyle=Si(i.strokeStyle,a),c.setLineDash&&c.setLineDash(Si(i.lineDash,r.borderDash)),n&&n.usePointStyle){var s=m*Math.SQRT2/2,l=h.xPlus(t,m/2),u=e+p/2;V.canvas.drawPoint(c,i.pointStyle,s,l,u,i.rotation)}else c.fillRect(h.leftForLtr(t,m),e,m,p),0!==o&&c.strokeRect(h.leftForLtr(t,m),e,m,p);c.restore()}}(w,k,e),v[i].left=h.leftForLtr(w,v[i].width),v[i].top=k,function(t,e,n,i){var a=p/2,r=h.xPlus(t,m+a),o=e+a;c.fillText(n.text,r,o),n.hidden&&(c.beginPath(),c.lineWidth=2,c.moveTo(r,o),c.lineTo(h.xPlus(r,i),o),c.stroke())}(w,k,e,f),x?d.x+=g+n.padding:d.y+=y})),V.rtl.restoreTextDirection(t.ctx,e.textDirection)}},_getLegendItemAt:function(t,e){var n,i,a,r=this;if(t>=r.left&&t<=r.right&&e>=r.top&&e<=r.bottom)for(a=r.legendHitBoxes,n=0;n=(i=a[n]).left&&t<=i.left+i.width&&e>=i.top&&e<=i.top+i.height)return r.legendItems[n];return null},handleEvent:function(t){var e,n=this,i=n.options,a=\"mouseup\"===t.type?\"click\":t.type;if(\"mousemove\"===a){if(!i.onHover&&!i.onLeave)return}else{if(\"click\"!==a)return;if(!i.onClick)return}e=n._getLegendItemAt(t.x,t.y),\"click\"===a?e&&i.onClick&&i.onClick.call(n,t.native,e):(i.onLeave&&e!==n._hoveredItem&&(n._hoveredItem&&i.onLeave.call(n,t.native,n._hoveredItem),n._hoveredItem=e),i.onHover&&e&&i.onHover.call(n,t.native,e))}});function Ai(t,e){var n=new Pi({ctx:t.ctx,options:e,chart:t});ge.configure(t,n,e),ge.addBox(t,n),t.legend=n}var Di={id:\"legend\",_element:Pi,beforeInit:function(t){var e=t.options.legend;e&&Ai(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(V.mergeIf(e,z.global.legend),n?(ge.configure(t,n,e),n.options=e):Ai(t,e)):n&&(ge.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}},Ti=V.noop;z._set(\"global\",{title:{display:!1,fontStyle:\"bold\",fullWidth:!0,padding:10,position:\"top\",text:\"\",weight:2e3}});var Ii=X.extend({initialize:function(t){V.extend(this,t),this.legendHitBoxes=[]},beforeUpdate:Ti,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:Ti,beforeSetDimensions:Ti,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:Ti,beforeBuildLabels:Ti,buildLabels:Ti,afterBuildLabels:Ti,beforeFit:Ti,fit:function(){var t,e=this,n=e.options,i=e.minSize={},a=e.isHorizontal();n.display?(t=(V.isArray(n.text)?n.text.length:1)*V.options._parseFont(n).lineHeight+2*n.padding,e.width=i.width=a?e.maxWidth:t,e.height=i.height=a?t:e.maxHeight):e.width=i.width=e.height=i.height=0},afterFit:Ti,isHorizontal:function(){var t=this.options.position;return\"top\"===t||\"bottom\"===t},draw:function(){var t=this,e=t.ctx,n=t.options;if(n.display){var i,a,r,o=V.options._parseFont(n),s=o.lineHeight,l=s/2+n.padding,u=0,d=t.top,h=t.left,c=t.bottom,f=t.right;e.fillStyle=V.valueOrDefault(n.fontColor,z.global.defaultFontColor),e.font=o.string,t.isHorizontal()?(a=h+(f-h)/2,r=d+l,i=f-h):(a=\"left\"===n.position?h+l:f-l,r=d+(c-d)/2,i=c-d,u=Math.PI*(\"left\"===n.position?-.5:.5)),e.save(),e.translate(a,r),e.rotate(u),e.textAlign=\"center\",e.textBaseline=\"middle\";var g=n.text;if(V.isArray(g))for(var p=0,m=0;m=0;i--){var a=t[i];if(e(a))return a}},V.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},V.almostEquals=function(t,e,n){return Math.abs(t-e)=t},V.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},V.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},V.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0===(t=+t)||isNaN(t)?t:t>0?1:-1},V.toRadians=function(t){return t*(Math.PI/180)},V.toDegrees=function(t){return t*(180/Math.PI)},V._decimalPlaces=function(t){if(V.isFinite(t)){for(var e=1,n=0;Math.round(t*e)/e!==t;)e*=10,n++;return n}},V.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),r=Math.atan2(i,n);return r<-.5*Math.PI&&(r+=2*Math.PI),{angle:r,distance:a}},V.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},V.aliasPixel=function(t){return t%2==0?0:.5},V._alignPixel=function(t,e,n){var i=t.currentDevicePixelRatio,a=n/2;return Math.round((e-a)*i)/i+a},V.splineCurve=function(t,e,n,i){var a=t.skip?e:t,r=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(r.x-a.x,2)+Math.pow(r.y-a.y,2)),l=Math.sqrt(Math.pow(o.x-r.x,2)+Math.pow(o.y-r.y,2)),u=s/(s+l),d=l/(s+l),h=i*(u=isNaN(u)?0:u),c=i*(d=isNaN(d)?0:d);return{previous:{x:r.x-h*(o.x-a.x),y:r.y-h*(o.y-a.y)},next:{x:r.x+c*(o.x-a.x),y:r.y+c*(o.y-a.y)}}},V.EPSILON=Number.EPSILON||1e-14,V.splineCurveMonotone=function(t){var e,n,i,a,r,o,s,l,u,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(a=e0?d[e-1]:null,a=e=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},V.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},V.niceNum=function(t,e){var n=Math.floor(V.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},V.requestAnimFrame=\"undefined\"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},V.getRelativePosition=function(t,e){var n,i,a=t.originalEvent||t,r=t.target||t.srcElement,o=r.getBoundingClientRect(),s=a.touches;s&&s.length>0?(n=s[0].clientX,i=s[0].clientY):(n=a.clientX,i=a.clientY);var l=parseFloat(V.getStyle(r,\"padding-left\")),u=parseFloat(V.getStyle(r,\"padding-top\")),d=parseFloat(V.getStyle(r,\"padding-right\")),h=parseFloat(V.getStyle(r,\"padding-bottom\")),c=o.right-o.left-l-d,f=o.bottom-o.top-u-h;return{x:n=Math.round((n-o.left-l)/c*r.width/e.currentDevicePixelRatio),y:i=Math.round((i-o.top-u)/f*r.height/e.currentDevicePixelRatio)}},V.getConstraintWidth=function(t){return n(t,\"max-width\",\"clientWidth\")},V.getConstraintHeight=function(t){return n(t,\"max-height\",\"clientHeight\")},V._calculatePadding=function(t,e,n){return(e=V.getStyle(t,e)).indexOf(\"%\")>-1?n*parseInt(e,10)/100:parseInt(e,10)},V._getParentNode=function(t){var e=t.parentNode;return e&&\"[object ShadowRoot]\"===e.toString()&&(e=e.host),e},V.getMaximumWidth=function(t){var e=V._getParentNode(t);if(!e)return t.clientWidth;var n=e.clientWidth,i=n-V._calculatePadding(e,\"padding-left\",n)-V._calculatePadding(e,\"padding-right\",n),a=V.getConstraintWidth(t);return isNaN(a)?i:Math.min(i,a)},V.getMaximumHeight=function(t){var e=V._getParentNode(t);if(!e)return t.clientHeight;var n=e.clientHeight,i=n-V._calculatePadding(e,\"padding-top\",n)-V._calculatePadding(e,\"padding-bottom\",n),a=V.getConstraintHeight(t);return isNaN(a)?i:Math.min(i,a)},V.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},V.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||\"undefined\"!=typeof window&&window.devicePixelRatio||1;if(1!==n){var i=t.canvas,a=t.height,r=t.width;i.height=a*n,i.width=r*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=a+\"px\",i.style.width=r+\"px\")}},V.fontString=function(t,e,n){return e+\" \"+t+\"px \"+n},V.longestText=function(t,e,n,i){var a=(i=i||{}).data=i.data||{},r=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(a=i.data={},r=i.garbageCollect=[],i.font=e),t.font=e;var o,s,l,u,d,h=0,c=n.length;for(o=0;on.length){for(o=0;oi&&(i=r),i},V.numberOfLabelLines=function(t){var e=1;return V.each(t,(function(t){V.isArray(t)&&t.length>e&&(e=t.length)})),e},V.color=k?function(t){return t instanceof CanvasGradient&&(t=z.global.defaultColor),k(t)}:function(t){return console.error(\"Color.js not found!\"),t},V.getHoverColor=function(t){return t instanceof CanvasPattern||t instanceof CanvasGradient?t:V.color(t).saturate(.5).darken(.1).rgbString()}}(),tn._adapters=an,tn.Animation=Z,tn.animationService=$,tn.controllers=$t,tn.DatasetController=nt,tn.defaults=z,tn.Element=X,tn.elements=_t,tn.Interaction=ae,tn.layouts=ge,tn.platform=Fe,tn.plugins=Le,tn.Scale=xn,tn.scaleService=Oe,tn.Ticks=rn,tn.Tooltip=Ue,tn.helpers.each(ci,(function(t,e){tn.scaleService.registerScaleType(e,t,t._defaults)})),Li)Li.hasOwnProperty(Ni)&&tn.plugins.register(Li[Ni]);tn.platform.initialize();var Bi=tn;return\"undefined\"!=typeof window&&(window.Chart=tn),tn.Chart=tn,tn.Legend=Li.legend._element,tn.Title=Li.title._element,tn.pluginService=tn.plugins,tn.PluginBase=tn.Element.extend({}),tn.canvasHelpers=tn.helpers.canvas,tn.layoutService=tn.layouts,tn.LinearScaleBase=Sn,tn.helpers.each([\"Bar\",\"Bubble\",\"Doughnut\",\"Line\",\"PolarArea\",\"Radar\",\"Scatter\"],(function(t){tn[t]=function(e,n){return new tn(e,tn.helpers.merge(n||{},{type:t.charAt(0).toLowerCase()+t.slice(1)}))}})),Bi}));\r\n","(function (global, factory) {\r\n global.Notifications = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {};\r\n\r\n /**\r\n * Notifcations builds and stores notification elements,\r\n * this will build multiple different styles of notifications\r\n * depending on the options you pass\r\n *\r\n * @constructor\r\n */\r\n function Notifications(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.notifications = {};\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Notifications.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'notifications' });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Notifications.prototype.show = function () {\r\n if (this.notifications) {\r\n }\r\n\r\n const itemEle = _DOM.createElement('div', { class: ['validationMessage'] });\r\n\r\n return this;\r\n };\r\n\r\n return Notifications;\r\n});\r\n","(function (global, factory) {\r\n global.Tutorial = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {};\r\n\r\n /**\r\n * Merge default options with user options\r\n *\r\n * @function\r\n * @param {Object} userOptions - User defined options object\r\n * @return {Object} - Merged options object\r\n */\r\n const mergOptionsWithDefaults = userOptions => {\r\n return Object.assign({}, DEFAULT_OPTIONS, userOptions);\r\n };\r\n\r\n //=========================\r\n // TUTORIAL SATE\r\n //-------------------------\r\n /**\r\n * Represents the state management system for the tutorial.\r\n * Initializes with default state values if no initial state is provided.\r\n * @constructor\r\n * @param {Object} [initialState] - The initial state of the tutorial.\r\n * @param {number} [initialState.currentStep=1] - The current step of the tutorial.\r\n * @param {number} [initialState.totalSteps=5] - The total number of steps in the tutorial.\r\n */\r\n function TutorialState(initialState = { currentStep: 1, totalSteps: 5 }) {\r\n this.currentStep = initialState.currentStep;\r\n this.totalSteps = initialState.totalSteps;\r\n this.observers = [];\r\n }\r\n\r\n /**\r\n * Subscribe a new observer function.\r\n *\r\n * @param {Function} observerFunction - The function to notify when the state changes.\r\n */\r\n TutorialState.prototype.subscribe = function (observerFunction) {\r\n this.observers.push(observerFunction);\r\n };\r\n\r\n /**\r\n * Unsubscribe an existing observer function.\r\n *\r\n * @param {Function} observerFunction - The function to remove from the observer list.\r\n */\r\n TutorialState.prototype.unsubscribe = function (observerFunction) {\r\n const index = this.observers.indexOf(observerFunction);\r\n if (index > -1) {\r\n this.observers.splice(index, 1);\r\n }\r\n };\r\n\r\n /**\r\n * Update the tutorial state and notify all observers.\r\n * @param {Object} newState - The new state to merge with the current state.\r\n */\r\n TutorialState.prototype.setState = function (newState) {\r\n Object.assign(this, newState);\r\n this.observers.forEach(observerFunction => observerFunction(this));\r\n };\r\n\r\n /**\r\n * Move to the next step in the tutorial if not at the last step.\r\n */\r\n TutorialState.prototype.next = function () {\r\n if (this.currentStep < this.totalSteps) {\r\n this.setState({ currentStep: this.currentStep + 1 });\r\n }\r\n };\r\n\r\n /**\r\n * Move to the previous step in the tutorial if not at the first step.\r\n */\r\n TutorialState.prototype.back = function () {\r\n if (this.currentStep > 1) {\r\n this.setState({ currentStep: this.currentStep - 1 });\r\n }\r\n };\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n\r\n /**\r\n * @constructor\r\n * @param {Object} options\r\n */\r\n function Tutorial(options) {\r\n // Data Init\r\n this.options = mergOptionsWithDefaults(options);\r\n this.initialState = { currentStep: 1, totalSteps: 5 };\r\n this.tutorialState = new TutorialState(initialState);\r\n\r\n // DOM Ref\r\n this.tutorial = null;\r\n }\r\n\r\n /**\r\n * Builds the Tutorial element structure\r\n *\r\n * @function\r\n * @returns {Tutorial} - Returns the current instances for chaining\r\n */\r\n Tutorial.prototype.build = function () {\r\n this.tutorial = _DOM.createElement('div');\r\n\r\n // Subscribe to state changes\r\n this.tutorialState.subscribe(function render(state) {\r\n // Logic to render the current popup based on `state.currentStep`\r\n });\r\n\r\n // Event listeners for Next and Back buttons\r\n // this.nextButton.onClick = tutorialState.next();\r\n // this.backButton.onClick = tutorialState.back();\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Renders the built Tutorial element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render the tutorial to\r\n * @returns {Tutorial} - Returns the current instances for chaining\r\n */\r\n Tutorial.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.tutorial);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Tutorial;\r\n});\r\n","(function (global, factory) {\r\n global.VallidationController = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Validation center is used for grouping error and warning messages together,\r\n * should not be used for Form Input validation, form will handle that for you.\r\n *\r\n * @constructor\r\n */\r\n function VallidationController(options) {\r\n // Data Init\r\n this.options = { ...options };\r\n this.items = {};\r\n // DOM Ref\r\n this.validationWrap = null;\r\n this.errorsWrap = null;\r\n this.warningsWrap = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n VallidationController.prototype._build = function () {\r\n this.validationWrap = _DOM.createElement('div', { class: 'validations' });\r\n\r\n this.errorsWrap = _DOM.createElement('div', { class: 'validationErros' });\r\n\r\n this.warningsWrap = _DOM.createElement('div', { class: 'validationWarnings' });\r\n\r\n this.validationWrap.appendChild(this.errorsWrap);\r\n this.validationWrap.appendChild(this.warningsWrap);\r\n };\r\n /**\r\n * Builds warning message markup, this will auto show\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.addWarning = function ({ name, message }) {\r\n if (this.items[name]) {\r\n console.error(`name: ${name}, is already being used by another error/warning message`);\r\n }\r\n\r\n const itemInstance = new ValidationMessage({\r\n name,\r\n message,\r\n type: 'warning',\r\n });\r\n\r\n itemInstance.renderTo(this.warningsWrap);\r\n\r\n this.items[name] = itemInstance;\r\n };\r\n /**\r\n * Shows warning message\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.showWarning = function ({ name, ...rest }) {\r\n if (!this.items[name]) {\r\n this.addWarning({ name, ...rest });\r\n }\r\n\r\n this.items[name].itemEle.classList.remove('hidden');\r\n };\r\n /**\r\n * Builds error message markup, this will auto show\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.addError = function ({ name, message }) {\r\n if (this.items[name]) {\r\n console.error(`name: ${name}, is already being used by another error/warning message`);\r\n }\r\n\r\n const itemInstance = new ValidationMessage({\r\n name,\r\n message,\r\n type: 'error',\r\n });\r\n\r\n itemInstance.renderTo(this.errorsWrap);\r\n\r\n this.items[name] = itemInstance;\r\n };\r\n /**\r\n * Shows error message\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.showError = function ({ name, ...rest }) {\r\n if (!this.items[name]) {\r\n this.addError({ name, ...rest });\r\n }\r\n\r\n this.items[name].itemEle.classList.remove('hidden');\r\n };\r\n /**\r\n * Hides warning/error message\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.hide = function (name) {\r\n if (!this.items[name]) return;\r\n this.items[name].itemEle.classList.add('hidden');\r\n };\r\n /**\r\n * Sets the status of the error to valid/invalid\r\n *\r\n * @function\r\n */\r\n VallidationController.prototype.toggleErrorStatus = function (name, isError) {\r\n if (isError) {\r\n this.items[name].itemEle.classList.remove('valid');\r\n } else {\r\n this.items[name].itemEle.classList.add('valid');\r\n }\r\n };\r\n\r\n /**\r\n * Renders VallidationController markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render case notes feedback to\r\n * @returns {VallidationController} - Returns the current instances for chaining\r\n */\r\n VallidationController.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.validationWrap);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return VallidationController;\r\n});\r\n","(function (global, factory) {\r\n global.ConfirmationPopup = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n className: null,\r\n };\r\n\r\n function ConfirmationPopup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.messageEle = null;\r\n this.confirmButton = null;\r\n this.cancelButton = null;\r\n\r\n this._build();\r\n }\r\n\r\n ConfirmationPopup.prototype._build = function () {\r\n this.dialog = new Dialog({ className: this.options.className });\r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'confirmation__message',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.confirmButton = new Button({\r\n text: 'Ok',\r\n name: 'confirm',\r\n });\r\n this.cancelButton = new Button({\r\n text: 'Cancel',\r\n styleType: 'outlined',\r\n name: 'cancel',\r\n });\r\n\r\n this.confirmButton.renderTo(btnWrap);\r\n this.cancelButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n ConfirmationPopup.prototype._setupEvents = function (cbFunc) {\r\n this.dialog.dialog.addEventListener('click', e => {\r\n // e.target is confirm or cancel?\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n ConfirmationPopup.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n\r\n return new Promise((resolve, reject) => {\r\n const callbackFunction = e => {\r\n // e.target is confirm or cancel?\r\n this.dialog.dialog.removeEventListener('click', callbackFunction);\r\n this.close();\r\n resolve(e.target.name);\r\n };\r\n\r\n this.dialog.dialog.addEventListener('click', callbackFunction);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n ConfirmationPopup.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Confirmation Popup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Confirmation Popup to\r\n * @returns {ConfirmationPopup} Returns the current instances for chaining\r\n */\r\n ConfirmationPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return ConfirmationPopup;\r\n});\r\n","(function (global, factory) {\r\n global.DateNavigation = factory();\r\n})(this, function () {\r\n const DAYS = {\r\n 0: 'sun',\r\n 1: 'mon',\r\n 2: 'tue',\r\n 3: 'wed',\r\n 4: 'thu',\r\n 5: 'fri',\r\n 6: 'sat',\r\n };\r\n\r\n //=======================================\r\n // CUSTOM DATE PICKER\r\n //---------------------------------------\r\n /**\r\n * Constructor function for creating a Date Picker component.\r\n *\r\n * @constructor\r\n * @returns {DatePicker}\r\n */\r\n function DatePicker() {\r\n this.parentEle = null;\r\n this.input = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the DatePicker component HTML\r\n *\r\n * @function\r\n */\r\n DatePicker.prototype.build = function () {\r\n // INPUT WRAP\r\n this.parentEle = _DOM.createElement('div', {\r\n class: 'datePicker',\r\n });\r\n\r\n // INPUT & LABEL\r\n this.input = _DOM.createElement('input', {\r\n id: 'datePicker',\r\n type: 'date',\r\n name: 'datePicker',\r\n });\r\n const labelEle = _DOM.createElement('label', {\r\n node: Icon.getIcon('calendar'),\r\n for: 'datePicker',\r\n });\r\n labelEle.addEventListener('click', e => {\r\n this.input.showPicker();\r\n });\r\n\r\n this.parentEle.appendChild(this.input);\r\n this.parentEle.appendChild(labelEle);\r\n };\r\n\r\n /**\r\n * On date change method\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n DatePicker.prototype.onDateChange = function (cbFunc) {\r\n this.input.addEventListener('change', e => {\r\n cbFunc(e.target.value);\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built DatePicker element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {DatePicker} Returns the current instances for chaining\r\n */\r\n DatePicker.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.parentEle);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n selectedDate: dates.getTodaysDateObj(),\r\n allowFutureDate: true,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Date Navigation component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Date} [options.selectedDate] Initial date for date nav\r\n * @param {Boolean} [options.allowFutureDate] Whether toallow future dates to be selected\r\n * @returns {DateNavigation}\r\n */\r\n function DateNavigation(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n //? by default selectedDate, weekStart, weekEnd and eachDayoFWeek\r\n //? will be the most current week of calandar year\r\n this.weekStart = dates.startDayOfWeek(this.options.selectedDate);\r\n this.weekEnd = dates.endOfWeek(this.options.selectedDate);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n\r\n if (!this.options.allowFutureDate && dates.isDateInFuture(this.options.selectedDate)) {\r\n throw new Error('Selected date option can not be in future if allow future date option is set to false');\r\n }\r\n\r\n // DOM\r\n this.navigationEle = null;\r\n this.weekWrapEle = null;\r\n this.prevWeekNavBtn = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Navigation component HTML\r\n *\r\n * @function\r\n */\r\n DateNavigation.prototype.build = function () {\r\n this.navigationEle = _DOM.createElement('div', { class: 'dateNavigation' });\r\n this.weekWrapEle = _DOM.createElement('div', { class: 'week' });\r\n\r\n this.prevWeekNavBtn = _DOM.createElement('div', {\r\n class: 'navButtons',\r\n node: Icon.getIcon('arrowLeft'),\r\n });\r\n this.nextWeekNavBtn = _DOM.createElement('div', {\r\n class: this.isCurrentWeek ? ['navButtons', 'disabled'] : 'navButtons',\r\n node: Icon.getIcon('arrowRight'),\r\n });\r\n this.customDatePicker = new DatePicker();\r\n\r\n this.navigationEle.appendChild(this.customDatePicker.parentEle);\r\n this.navigationEle.appendChild(this.prevWeekNavBtn);\r\n this.navigationEle.appendChild(this.weekWrapEle);\r\n this.navigationEle.appendChild(this.nextWeekNavBtn);\r\n\r\n this.populate();\r\n this.setupEvents();\r\n };\r\n\r\n /**\r\n * Populates the navigation with the dates for the selected week range\r\n *\r\n * @function\r\n */\r\n DateNavigation.prototype.populate = function () {\r\n this.weekWrapEle.innerHTML = '';\r\n\r\n this.eachDayOfWeek.forEach(date => {\r\n const isDateCurrentlySelected = date.getTime() === this.options.selectedDate.getTime() ? true : false;\r\n const isDateInFuture = dates.isDateInFuture(date);\r\n\r\n const dayOfWeek = date.getDay();\r\n const month = date.getMonth() + 1;\r\n const day = date.getDate();\r\n\r\n const classArray = ['day'];\r\n if (isDateCurrentlySelected) classArray.push('selected');\r\n if (isDateInFuture && !this.options.allowFutureDate) classArray.push('disabled');\r\n\r\n const dateWrapEle = _DOM.createElement('div', {\r\n class: classArray,\r\n 'data-date': date.toDateString(),\r\n 'data-target': 'date',\r\n });\r\n const dayOfWeekEle = _DOM.createElement('p', { text: DAYS[dayOfWeek], class: 'weekday' });\r\n const dateEle = _DOM.createElement('p', { text: `${month}/${day}`, class: 'date' });\r\n\r\n dateWrapEle.appendChild(dateEle);\r\n dateWrapEle.appendChild(dayOfWeekEle);\r\n\r\n this.weekWrapEle.appendChild(dateWrapEle);\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for navigation\r\n *\r\n * @function\r\n */\r\n DateNavigation.prototype.setupEvents = function () {\r\n this.prevWeekNavBtn.addEventListener('click', e => {\r\n this.weekStart = dates.subWeeks(this.weekStart, 1);\r\n this.weekEnd = dates.subWeeks(this.weekEnd, 1);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.options.selectedDate = this.eachDayOfWeek[1];\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n this.nextWeekNavBtn.classList.toggle('disabled', this.isCurrentWeek);\r\n\r\n this.populate();\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n });\r\n\r\n this.nextWeekNavBtn.addEventListener('click', e => {\r\n this.weekStart = dates.addWeeks(this.weekStart, 1);\r\n this.weekEnd = dates.addWeeks(this.weekEnd, 1);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.options.selectedDate = this.eachDayOfWeek[1];\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n this.nextWeekNavBtn.classList.toggle('disabled', this.isCurrentWeek);\r\n\r\n this.populate();\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n });\r\n\r\n this.weekWrapEle.addEventListener('click', e => {\r\n if (e.target.dataset.target === 'date') {\r\n const currentSelectedDate = this.weekWrapEle.querySelector('.selected');\r\n if (currentSelectedDate) {\r\n currentSelectedDate.classList.remove('selected');\r\n }\r\n\r\n this.options.selectedDate = new Date(e.target.dataset.date);\r\n e.target.classList.add('selected');\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n\r\n return;\r\n }\r\n });\r\n\r\n this.customDatePicker.onDateChange(newDate => {\r\n const newDateValue = new Date(`${newDate}T00:00:00`);\r\n\r\n if (!this.options.allowFutureDate) {\r\n if (dates.isDateInFuture(newDateValue)) {\r\n return;\r\n }\r\n }\r\n\r\n this.options.selectedDate = newDateValue;\r\n this.isCurrentWeek = dates.isDateInCurrentWeek(this.options.selectedDate);\r\n this.weekStart = dates.startDayOfWeek(this.options.selectedDate);\r\n this.weekEnd = dates.endOfWeek(this.options.selectedDate);\r\n this.eachDayOfWeek = dates.eachDayOfInterval({\r\n start: this.weekStart,\r\n end: this.weekEnd,\r\n });\r\n\r\n this.nextWeekNavBtn.classList.toggle('disabled', this.isCurrentWeek);\r\n\r\n this.populate();\r\n\r\n const customEvent = new CustomEvent('onDateChange');\r\n this.weekWrapEle.dispatchEvent(customEvent);\r\n });\r\n };\r\n\r\n /**\r\n * On date change method\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n DateNavigation.prototype.onDateChange = function (cbFunc) {\r\n this.weekWrapEle.addEventListener('onDateChange', () => {\r\n cbFunc(this.options.selectedDate);\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built Date Navigation element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the navigation to\r\n * @returns {DateNavigation} Returns the current instances for chaining\r\n */\r\n DateNavigation.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.navigationEle);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return DateNavigation;\r\n});\r\n","(function (global, factory) {\r\n global.AsyncRequestVisualizer = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n * @param {Number} [options.duration] how long to show popup after success/error\r\n * @param {String} [options.messagePending] message while you wait\r\n * @param {String} [options.messageSuccess] message on success\r\n * @param {String} [options.messageError] message on error\r\n */\r\n const DEFAULT_OPTIONS = {\r\n messagePending: 'Loading...',\r\n messageSuccess: 'Success!',\r\n messageError: 'Error :(',\r\n duration: 2000,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Async Request Visualizer component.\r\n *\r\n * @constructor\r\n * @returns {AsyncRequestVisualizer}\r\n */\r\n function AsyncRequestVisualizer(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n\r\n // Instance Ref\r\n this.dialog = null;\r\n this.spinner = null;\r\n\r\n // DOM Ref\r\n this.iconWrap = null;\r\n this.messageEle = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the AsyncRequestVisualizer component HTML\r\n *\r\n * @function\r\n */\r\n AsyncRequestVisualizer.prototype.build = function () {\r\n this.dialog = new Dialog({\r\n clickOutToClose: false,\r\n className: 'asyncRequestVisualizer',\r\n });\r\n\r\n this.iconWrap = _DOM.createElement('div', { class: 'iconWrap' });\r\n this.dialog.dialog.appendChild(this.iconWrap);\r\n\r\n this.spinner = new Spinner();\r\n this.spinner.renderTo(this.iconWrap);\r\n\r\n this.messageEle = _DOM.createElement('p');\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n };\r\n\r\n /**\r\n * Default function for showing visualizer, use showPending to chain saves\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.show = function (message) {\r\n this.messageEle.innerText = message;\r\n this.dialog.show();\r\n };\r\n\r\n /**\r\n * Shows pending message, shows spinner\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.showPending = function (message) {\r\n this.messageEle.innerText = message;\r\n this.iconWrap.childNodes[0].remove();\r\n this.iconWrap.appendChild(this.spinner.spinnerWrap);\r\n };\r\n\r\n /**\r\n * Shows success message/icon but leaves dialog open for chaining saves\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.showSuccess = async function (message, duration = 2000) {\r\n this.messageEle.innerText = message;\r\n this.spinner.replaceWith(Icon.getIcon('checkmark'));\r\n\r\n this.iconWrap.classList.remove('error');\r\n\r\n await _UTIL.asyncSetTimeout(() => {}, duration);\r\n };\r\n\r\n /**\r\n * Shows error message/icon\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.showError = function (message) {\r\n this.messageEle.innerText = message;\r\n this.spinner.replaceWith(Icon.getIcon('error'));\r\n this.iconWrap.classList.add('error');\r\n };\r\n\r\n /**\r\n * Handle async request completion\r\n *\r\n * @function\r\n * @param {Boolean} isSuccess\r\n * @param {String} message\r\n */\r\n AsyncRequestVisualizer.prototype.fullfill = async function (status, message, duration = 2000) {\r\n // set icon and message\r\n if (status === 'success') {\r\n this.showSuccess(message);\r\n } else {\r\n this.showError(message);\r\n }\r\n\r\n await _UTIL.asyncSetTimeout(() => {\r\n this.dialog.close();\r\n this.iconWrap.childNodes[0].remove();\r\n this.iconWrap.appendChild(this.spinner.spinnerWrap);\r\n }, duration);\r\n };\r\n\r\n /**\r\n * Renders the built AsyncRequestVisualizer to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the AsyncRequestVisualizer to\r\n * @returns {AsyncRequestVisualizer} Returns the current instances for chaining\r\n */\r\n AsyncRequestVisualizer.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return AsyncRequestVisualizer;\r\n});\r\n","(function (global, factory) {\r\n global.RosterCard = factory();\r\n})(this, function () {\r\n /**\r\n * Constructor function for creating a Roster Card component.\r\n *\r\n * @constructor\r\n * @returns {RosterCard}\r\n */\r\n function RosterCard(options) {\r\n this.consumerId = options.consumerId;\r\n this.firstName = options.firstName;\r\n this.middleName = options.middleName;\r\n this.lastName = options.lastName;\r\n this.isInactive = options.isInactive;\r\n this.rootElement = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Roster Card component HTML\r\n *\r\n * @function\r\n */\r\n RosterCard.prototype.build = function () {\r\n this.rootElement = _DOM.createElement('div', {\r\n class: 'rosterCard',\r\n 'data-id': this.consumerId,\r\n 'data-target': 'rosterCard',\r\n });\r\n\r\n // PORTRAIT\r\n const portrait = new Portrait(this.consumerId);\r\n\r\n // DETAILS\r\n const firstName = _DOM.createElement('p', {\r\n text: `${this.firstName.trim()} ${this.middleName?.trim() || ''}`.trim(),\r\n });\r\n const lastName = _DOM.createElement('p', { text: `${this.lastName.trim()},` });\r\n\r\n const fragment = new DocumentFragment();\r\n fragment.append(lastName, firstName);\r\n\r\n\r\n const details = this.isInactive == true ? _DOM.createElement('div', { class: 'inactiveDetails', node: fragment }) : _DOM.createElement('div', { class: 'details', node: fragment });\r\n\r\n // BUILD\r\n portrait.renderTo(this.rootElement);\r\n this.rootElement.appendChild(details);\r\n };\r\n\r\n /**\r\n * Renders the built Roster Card component to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the roster card to\r\n * @returns {RosterCard} Returns the current instances for chaining\r\n */\r\n RosterCard.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return RosterCard;\r\n});\r\n","(function (global, factory) {\r\n global.RosterPicker = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n allowMultiSelect: false,\r\n consumerRequired: false,\r\n isReadOnly: false,\r\n };\r\n let selectionDate;\r\n let selectedActive = 'No';\r\n let filterDate;\r\n /**\r\n * Constructor function for creating a Roster Picker component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.allowMultiSelect]\r\n * @param {Boolean} [options.consumerRequired]\r\n * @returns {RosterPicker}\r\n */\r\n function RosterPicker(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.consumers = {};\r\n this.selectedConsumers = {};\r\n this.failedImageCache = new Set();\r\n this.groupCode = 'ALL';\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.rosterWrapEle = null;\r\n this.rosterSearchInput = null;\r\n this.rosterCaseLoadInput = null;\r\n this.rosterInActiveInput = null;\r\n this.consumerCards = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Roster Picker component HTML\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'rosterPicker' });\r\n this.rosterWrapEle = _DOM.createElement('div', { class: 'rosterPicker__cardsWrap' });\r\n selectionDate = this.options.selectionDate;\r\n this.messageEleIcon = this.options.consumerRequired ? Icon.getIcon('error') : '';\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'rosterPicker__message',\r\n node: this.messageEleIcon,\r\n text: this.options.consumerRequired\r\n ? this.options.allowMultiSelect\r\n ? 'Consumer(s) is required'\r\n : 'Consumer is required'\r\n : 'Please select a consumer',\r\n });\r\n this.messageEle.classList.toggle(\r\n 'error',\r\n this.options.consumerRequired && !Object.keys(this.selectedConsumers).length,\r\n );\r\n\r\n this.rosterSearchInput = new Input({\r\n type: 'search',\r\n id: 'rosterPickerSearch',\r\n name: 'rosterPickerSearch',\r\n placeholder: 'Search...',\r\n });\r\n\r\n this.rosterCaseLoadInput = new Checkbox({\r\n label: 'Only show caseload',\r\n id: 'caseloadtoggle',\r\n name: 'caseload',\r\n checked: false,\r\n });\r\n\r\n this.rosterInActiveInput = new Checkbox({\r\n label: 'Show inactive individuals',\r\n id: 'inactivetoggle',\r\n name: 'inactive',\r\n checked: false,\r\n hidden: $.session.applicationName === 'Advisor',\r\n });\r\n\r\n this.rootElement.append(\r\n this.messageEle,\r\n this.rosterSearchInput.rootElement,\r\n this.rosterCaseLoadInput.rootElement,\r\n this.rosterInActiveInput.rootElement,\r\n this.rosterWrapEle,\r\n );\r\n };\r\n\r\n RosterPicker.prototype._buildMobileButton = function () {\r\n this.mobileRosterBtn = new Button({\r\n icon: 'peopleGroup',\r\n class: ['mobileRosterBtn'],\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for roster picker\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype._setupEvents = function () {\r\n this.rosterWrapEle.addEventListener('click', e => {\r\n if (e.target.dataset.target === 'pinCardIcon') {\r\n if (!e.target.parentNode.parentNode.classList.contains('pinned')) {\r\n e.target.parentNode.parentNode.classList.add('pinned');\r\n } else {\r\n e.target.parentNode.parentNode.classList.remove('pinned');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (e.target.dataset.target === 'rosterCard') {\r\n if (e.target.parentNode.classList.contains('selected')) {\r\n e.target.parentNode.classList.remove('selected');\r\n delete this.selectedConsumers[e.target.dataset.id];\r\n } else {\r\n if (!this.options.allowMultiSelect) this.clearSelectedConsumers();\r\n\r\n e.target.parentNode.classList.add('selected');\r\n this.selectedConsumers[e.target.dataset.id] = e.target;\r\n }\r\n\r\n this._updateMessage();\r\n\r\n const customEvent = new CustomEvent('onConsumerSelect');\r\n this.rosterWrapEle.dispatchEvent(customEvent);\r\n\r\n return;\r\n }\r\n });\r\n\r\n this.rosterWrapEle.addEventListener('error', e => {\r\n if (e.target.tagName === 'IMG') {\r\n this.failedImageCache.add(e.target.src);\r\n }\r\n });\r\n\r\n this.rosterSearchInput.onKeyup(\r\n _UTIL.debounce(e => {\r\n this._filterConsumersOnSearch(e);\r\n }, 500),\r\n );\r\n\r\n this.rosterSearchInput.onChange(e => {\r\n this._filterConsumersOnSearch(e);\r\n });\r\n this.rosterSearchInput.onClick(e => {\r\n console.log(e);\r\n // this._filterConsumersOnSearch(e);\r\n });\r\n\r\n this.rosterCaseLoadInput.onChange(async e => {\r\n this.groupCode = e.target.checked ? 'CAS' : 'ALL';\r\n await this.fetchConsumers();\r\n this.populate();\r\n });\r\n\r\n this.rosterInActiveInput.onChange(async e => {\r\n selectedActive = e.target.checked ? 'Yes' : 'No';\r\n await this.fetchConsumers();\r\n this.populate();\r\n });\r\n };\r\n\r\n /**\r\n * Filters roster picker on search\r\n *\r\n * @function\r\n * @param {Event} e\r\n */\r\n RosterPicker.prototype._filterConsumersOnSearch = function (e) {\r\n for (consumerID in this.consumers) {\r\n const firstName = this.consumers[consumerID].FN.toLowerCase().trim();\r\n const middleName = this.consumers[consumerID].MN.toLowerCase().trim();\r\n const lastName = this.consumers[consumerID].LN.toLowerCase().trim();\r\n\r\n const nameCombinations = [\r\n `${firstName} ${middleName} ${lastName}`,\r\n `${lastName}, ${firstName} ${middleName}`,\r\n `${firstName} ${lastName}`,\r\n `${lastName}, ${firstName}`,\r\n `${firstName} ${middleName}`,\r\n `${middleName} ${lastName}`,\r\n ];\r\n\r\n const isMatch = nameCombinations.some(combo => combo.indexOf(e.target.value.toLowerCase()) !== -1);\r\n if (isMatch) {\r\n this.consumers[consumerID].cardEle.parentNode.classList.remove('isClosed');\r\n } else {\r\n this.consumers[consumerID].cardEle.parentNode.classList.add('isClosed');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n RosterPicker.prototype._scrollToTop = function () {\r\n this.rosterWrapEle.scrollTop = 0;\r\n };\r\n\r\n /**\r\n * Updates the status of the message element\r\n */\r\n RosterPicker.prototype._updateMessage = function () {\r\n let newIcon;\r\n\r\n if (this.options.consumerRequired && !Object.keys(this.selectedConsumers).length) {\r\n newIcon = Icon.getIcon('error');\r\n this.messageEle.classList.add('error');\r\n } else {\r\n newIcon = Icon.getIcon('checkmark');\r\n this.messageEle.classList.remove('error');\r\n }\r\n\r\n this.messageEle.replaceChild(newIcon, this.messageEleIcon);\r\n this.messageEleIcon = newIcon;\r\n };\r\n\r\n /**\r\n * Fetches consumers data by date, group and location\r\n *\r\n * @function\r\n * @param {Object} retrieveData\r\n */\r\n RosterPicker.prototype.fetchConsumers = async function () {\r\n try {\r\n const todaysDate = selectionDate == undefined ? dates.getTodaysDateObj() : selectionDate;\r\n todaysDate.setHours(0, 0, 0, 0);\r\n filterDate = dates.formatISO(todaysDate, { representation: 'date' });\r\n let daysBackDate = dates.subDays(todaysDate, $.session.defaultProgressNoteReviewDays);\r\n\r\n const data = await _UTIL.fetchData('getConsumersByGroupJSON', {\r\n groupCode: this.groupCode,\r\n retrieveId: '0',\r\n serviceDate: filterDate,\r\n daysBackDate: dates.formatISO(daysBackDate, { representation: 'date' }),\r\n isActive: selectedActive,\r\n });\r\n this.consumers = data.getConsumersByGroupJSONResult.reduce((acc, cv) => {\r\n acc[cv.id] = cv;\r\n return acc;\r\n }, {});\r\n } catch (error) {\r\n console.log('uh oh something went horribly wrong :(', error.message);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Populate consumer roster cards\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype.populate = function () {\r\n this.rosterWrapEle.innerHTML = '';\r\n \r\n Object.values(this.consumers)\r\n .sort((a, b) => {\r\n if (a.LN < b.LN) return -1;\r\n if (a.LN > b.LN) return 1;\r\n\r\n if (a.FN < b.FN) return -1;\r\n if (a.FN > b.FN) return 1;\r\n\r\n return 0;\r\n })\r\n .forEach(consumer => {\r\n // ROSTER CARD\r\n const gridAnimationWrapper = _DOM.createElement('div', { class: 'rosterCardWrap' });\r\n var inActive = false; \r\n\r\n if ($.session.applicationName === 'Gatekeeper') { \r\n if (consumer.statusCode == 'I' && consumer.IDa != undefined && consumer.IDa != '' && UTIL.formatDateToIso(consumer.IDa.split(' ')[0]) <= filterDate) {\r\n inActive = true; \r\n } \r\n }\r\n const rosterCard = new RosterCard({\r\n consumerId: consumer.id,\r\n firstName: consumer.FN,\r\n middleName: consumer.MN,\r\n lastName: consumer.LN,\r\n isInactive: inActive,\r\n });\r\n rosterCard.renderTo(gridAnimationWrapper);\r\n\r\n // PIN ICON\r\n const pinCardIcon = Icon.getIcon('pin');\r\n pinCardIcon.setAttribute('data-target', 'pinCardIcon');\r\n rosterCard.rootElement.appendChild(pinCardIcon);\r\n\r\n // BUILD\r\n this.rosterWrapEle.appendChild(gridAnimationWrapper);\r\n\r\n // SET REFERENCE TO DOM NODE ON DATA OBJ\r\n consumer.cardEle = rosterCard.rootElement;\r\n });\r\n };\r\n\r\n /**\r\n * On consumer select method\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n RosterPicker.prototype.onConsumerSelect = function (cbFunc, opts = {}) {\r\n this.rosterWrapEle.addEventListener('onConsumerSelect', () => {\r\n if (opts.idkyet) {\r\n const selectedConsumers = Object.keys(this.selectedConsumers).reduce((acc, cv) => {\r\n const consumer = this.consumers[cv];\r\n acc[cv] = {\r\n id: cv,\r\n firstName: consumer.FN,\r\n middleName: consumer.MN,\r\n lastName: consumer.LN,\r\n };\r\n return acc;\r\n }, {});\r\n\r\n cbFunc(selectedConsumers);\r\n return;\r\n }\r\n\r\n cbFunc(Object.keys(this.selectedConsumers));\r\n });\r\n };\r\n\r\n /**\r\n *\r\n * @function\r\n * @param {Boolean} isDisabled\r\n * @param {Boolean} [forceAll]\r\n */\r\n RosterPicker.prototype.toggleRosterDisabled = function (isDisabled, forceAll = false) {\r\n for (consumers in this.consumers) {\r\n if (!isDisabled) {\r\n this.consumers[consumers].cardEle.parentNode.classList.remove('disabled');\r\n continue;\r\n }\r\n\r\n if (forceAll) {\r\n this.consumers[consumers].cardEle.parentNode.classList.add('disabled');\r\n continue;\r\n }\r\n\r\n const isSelected = this.consumers[consumers].cardEle.parentNode.classList.contains('selected');\r\n const isLocked = this.consumers[consumers].cardEle.parentNode.classList.contains('locked');\r\n\r\n if (!isSelected && !isLocked) {\r\n this.consumers[consumers].cardEle.parentNode.classList.add('disabled');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Updates the allowMultiSelect option property with given value\r\n *\r\n * @function\r\n * @param {Boolean} allowMultiSelect\r\n */\r\n RosterPicker.prototype.toggleMultiSelectOption = function (allowMultiSelect) {\r\n this.options.allowMultiSelect = allowMultiSelect;\r\n\r\n if (this.options.allowMultiSelect) {\r\n // clear selected consumers except locked consumers\r\n for (consumerID in this.selectedConsumers) {\r\n if (!this.selectedConsumers[consumerID].parentNode.classList.contains('locked')) {\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('selected');\r\n delete this.selectedConsumers[consumerID];\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Removes selected consumer\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype.clearSelectedConsumers = function () {\r\n for (consumerID in this.selectedConsumers) {\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('selected');\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('locked');\r\n this.selectedConsumers[consumerID].parentNode.classList.remove('disabled');\r\n delete this.selectedConsumers[consumerID];\r\n }\r\n };\r\n\r\n /**\r\n * Selects consumer(s) in roster picker\r\n *\r\n * @function\r\n * @param {Array} consumerIds\r\n */\r\n RosterPicker.prototype.setSelectedConsumers = function (consumerIds, lockdown = false) {\r\n this.clearSelectedConsumers();\r\n\r\n consumerIds.forEach(cid => {\r\n this.selectedConsumers[cid] = this.consumers[cid].cardEle;\r\n this.consumers[cid].cardEle.parentNode.classList.add('selected');\r\n\r\n if (lockdown) {\r\n this.consumers[cid].cardEle.parentNode.classList.add('locked');\r\n }\r\n });\r\n\r\n this._updateMessage();\r\n\r\n this._scrollToTop();\r\n };\r\n\r\n /**\r\n * Renders the built Roster Picker component to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the roster picker to\r\n * @returns {RosterPicker} Returns the current instances for chaining\r\n */\r\n RosterPicker.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return RosterPicker;\r\n});\r\n","(function (global, factory) {\r\n global.WarningPopup = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n className: null,\r\n };\r\n\r\n function WarningPopup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.messageEle = null;\r\n this.confirmButton = null;\r\n this.cancelButton = null;\r\n\r\n this._build();\r\n }\r\n\r\n WarningPopup.prototype._build = function () {\r\n this.dialog = new Dialog({ hideX: false, className: this.options.className }); \r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'confirmation__message',\r\n });\r\n\r\n const btnWrap = _DOM.createElement('div', { class: 'button-wrap' });\r\n this.confirmButton = new Button({\r\n text: 'Yes',\r\n name: 'confirm',\r\n icon: 'checkmark', \r\n });\r\n this.cancelButton = new Button({\r\n text: 'No',\r\n name: 'cancel',\r\n icon: 'close',\r\n });\r\n\r\n this.confirmButton.renderTo(btnWrap);\r\n this.cancelButton.renderTo(btnWrap);\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.dialog.dialog.appendChild(btnWrap);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n WarningPopup.prototype._setupEvents = function (cbFunc) {\r\n this.dialog.dialog.addEventListener('click', e => {\r\n console.log(e.target);\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n WarningPopup.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n\r\n return new Promise((resolve, reject) => {\r\n const callbackFunction = e => {\r\n // e.target is confirm or cancel?\r\n this.dialog.dialog.removeEventListener('click', callbackFunction);\r\n this.close();\r\n resolve(e.target.name);\r\n };\r\n\r\n this.dialog.dialog.addEventListener('click', callbackFunction);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n WarningPopup.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Confirmation Popup element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Confirmation Popup to\r\n * @returns {WarningPopup} Returns the current instances for chaining\r\n */\r\n WarningPopup.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return WarningPopup;\r\n});\r\n","(function (global, factory) {\r\n global.Attachments = factory();\r\n})(this, function () {\r\n /**\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.type HTML Input type\r\n * @param {String} options.label Text for label input\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n */\r\n function File(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(options);\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.input = null;\r\n this.labelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n File.prototype._build = function () {\r\n // INPUT WRAP\r\n const classArray = ['inputGroup', 'file', `${this.options.attributes.id}`];\r\n const inputGroup = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // INPUT & LABEL\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n\r\n inputGroup.append(this.labelEle, this.input);\r\n\r\n this.rootElement = inputGroup;\r\n };\r\n\r\n /**\r\n * Renders the built File Input element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {Input} Returns the current instances for chaining\r\n */\r\n File.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * @constructor\r\n */\r\n function Attachments(options) {\r\n // Data Init\r\n this.options = options;\r\n this.options.type = 'file';\r\n this.inputs = {};\r\n this.filenamelength = 14;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Attachments.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('div', { class: 'attachments' });\r\n\r\n const input = new File({ ...this.options });\r\n\r\n input.renderTo(this.rootElement);\r\n\r\n this.inputs[this.options.id] = input;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Attachments.prototype._setupEvents = function (cbFunc) {\r\n this.rootElement.addEventListener('change', e => {\r\n const targetID = e.target.id;\r\n\r\n // check file type\r\n const forbiddenTypes = new RegExp('(audio/)|(video/)');\r\n const isFileTypeValid = _UTIL.validateFileType(e, forbiddenTypes);\r\n if (!isFileTypeValid) return;\r\n\r\n // NEW INPUT\r\n const newInputId = _UTIL.autoIncrementId(targetID);\r\n const newInputInstance = new File({\r\n type: 'file',\r\n label: 'Add Attachment',\r\n id: newInputId,\r\n });\r\n this.inputs[newInputId] = newInputInstance;\r\n this.inputs[targetID].rootElement.insertAdjacentElement('beforebegin', newInputInstance.rootElement);\r\n\r\n // update target attachment\r\n this.inputs[targetID].rootElement.classList.add('hasFile');\r\n this.inputs[targetID].labelEle.innerText = _UTIL.truncateFilename(e.target.files[0].name, this.filenamelength);\r\n const deleteIcon = Icon.getIcon('delete');\r\n this.inputs[targetID].labelEle.insertBefore(deleteIcon, this.inputs[targetID].labelEle.firstChild);\r\n deleteIcon.addEventListener('click', e => {\r\n e.stopPropagation();\r\n this.inputs[targetID].rootElement.remove();\r\n delete this.inputs[targetID];\r\n // const customEvent = new CustomEvent('fileDelete', { bubbles: true });\r\n // this.rootElement.dispatchEvent(customEvent);\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Attachments.prototype._viewAttachment = function (attachmentId) {\r\n const action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteAttachment/`;\r\n\r\n const form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', res => JSON.stringify(res));\r\n\r\n const tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n };\r\n\r\n /**\r\n * This does not add a file input, rather a view only attachment\r\n *\r\n * @function\r\n * @param {Object} newAttachments\r\n */\r\n Attachments.prototype.addAttachments = function (newAttachments) {\r\n newAttachments.forEach(newAttachment => {\r\n const inputGroup = _DOM.createElement('div', { class: ['file', 'hasFile'] });\r\n\r\n const label = _DOM.createElement('div', {\r\n class: 'fakelabel',\r\n text: _UTIL.truncateFilename(newAttachment.description, this.filenamelength),\r\n });\r\n\r\n const deleteIcon = Icon.getIcon('delete');\r\n\r\n label.insertBefore(deleteIcon, label.firstChild);\r\n inputGroup.append(label);\r\n\r\n inputGroup.addEventListener('click', e => {\r\n if (e.target === deleteIcon) {\r\n const customEvent = new CustomEvent('fileDelete', {\r\n bubbles: true,\r\n detail: newAttachment.attachmentId,\r\n });\r\n this.rootElement.dispatchEvent(customEvent);\r\n return;\r\n } else {\r\n //this._viewAttachment(newAttachment.attachmentId);\r\n caseNotesAjax.viewCaseNoteAttachment(newAttachment.attachmentId);\r\n }\r\n });\r\n\r\n this.rootElement.append(inputGroup);\r\n });\r\n };\r\n\r\n /**\r\n * Clears out all attachments, does not delete them\r\n *\r\n * @function\r\n */\r\n Attachments.prototype.clear = function () {\r\n this.inputs = {};\r\n\r\n this.rootElement.innerHTML = '';\r\n\r\n const input = new File({ ...this.options });\r\n input.renderTo(this.rootElement);\r\n this.inputs[this.options.id] = input;\r\n };\r\n\r\n return Attachments;\r\n});\r\n","(function (global, factory) {\r\n global.Button = factory();\r\n})(this, function () {\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n text: null,\r\n type: 'button',\r\n icon: null,\r\n style: 'primary',\r\n styleType: 'contained',\r\n disabled: false,\r\n class: [],\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Button component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.type submit or button (don't use reset)\r\n * @param {String} [options.text] button text\r\n * @param {String} [options.name] button name\r\n * @param {String} [options.value] button value\r\n * @param {String} [options.icon] icon to include\r\n * @param {String} [options.style] primary(blue), secondary(green), danger(red), warning(yellow)\r\n * @param {String} [options.styleType] contained(filled), outlined(border, no fill), text(no fill/border)\r\n * @param {Array} [options.class] additional css classes to add ['class1', 'class2']\r\n * @returns {Button}\r\n *\r\n * @example\r\n * const saveButton = new Button({\r\n * text: 'save',\r\n * });\r\n */\r\n function Button(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n\r\n // DOM Ref\r\n this.button = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Button element component HTML\r\n *\r\n * @function\r\n */\r\n Button.prototype._build = function () {\r\n const classes = ['button', this.options.style, this.options.styleType, ...this.options.class];\r\n this.button = _DOM.createElement('button', {\r\n class: this.options.hidden ? [...classes, 'button--hidden'] : classes,\r\n type: this.options.attributes.type,\r\n name: this.options.attributes.name,\r\n value: this.options.attributes.value,\r\n disabled: this.options.attributes.disabled,\r\n });\r\n\r\n if (this.options.icon) {\r\n if (this.options.text) {\r\n const textNode = document.createTextNode(this.options.text);\r\n this.button.append(Icon.getIcon(this.options.icon), textNode);\r\n this.button.classList.add('button--icon');\r\n } else {\r\n this.button.appendChild(Icon.getIcon(this.options.icon));\r\n this.button.classList.add('button--icon-only');\r\n }\r\n } else {\r\n this.button.innerText = this.options.text;\r\n }\r\n };\r\n\r\n /**\r\n * Handles button click event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Button.prototype.onClick = function (cbFunc) {\r\n this.button.addEventListener('click', e => {\r\n e.preventDefault();\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Toggles button disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Button.prototype.toggleDisabled = function (isDisbled) {\r\n this.button.disabled = isDisbled;\r\n };\r\n\r\n /**\r\n * Toggles button visibility state, if true input is hidden\r\n *\r\n * @function\r\n * @param {Boolean} isHidden\r\n */\r\n Button.prototype.toggleVisibility = function (isHidden) {\r\n this.button.classList.toggle('button--hidden', isHidden);\r\n };\r\n\r\n Button.prototype.updateText = function (newText) {\r\n this.button.innerText = '';\r\n\r\n const textNode = document.createTextNode(newText);\r\n\r\n if (this.options.icon) {\r\n this.button.append(Icon.getIcon(this.options.icon));\r\n }\r\n\r\n this.button.append(textNode);\r\n };\r\n\r\n /**\r\n * Renders the built Button element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Button to\r\n * @returns {Button} Returns the current instances for chaining\r\n */\r\n Button.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.button);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Button;\r\n});\r\n","(function (global, factory) {\r\n global.Checkbox = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n note: null,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Checkbox component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.label Text for label input\r\n * @param {Boolean} [options.required] Whether input is required for submission\r\n * @param {String} [options.note] Text for input note/message, displayed underneath input field\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n * @param {Boolean} [options.toggle] *Checkbox only (instead of checkbox you will get a toggle button)\r\n * @returns {Checkbox}\r\n *\r\n * @example\r\n * const fnInput = new Checkbox({\r\n * label: 'First Name',\r\n * id: 'firstName'\r\n * });\r\n */\r\n function Checkbox(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n this.options.attributes.type = 'checkbox';\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.inputWrap = null;\r\n this.input = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the checkbox component HTML\r\n *\r\n * @function\r\n * @returns {Checkbox} Current instances for chaining\r\n */\r\n Checkbox.prototype._build = function () {\r\n // CHECKBOX WRAP\r\n const classArray = ['inputGroup', `${this.options.attributes.id}`];\r\n this.options.toggle ? classArray.push('checkbox_toggle') : classArray.push('checkbox');\r\n this.rootElement = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // CHECKBOX & LABEL\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n this.rootElement.appendChild(this.input);\r\n this.rootElement.appendChild(this.labelEle);\r\n\r\n // CHECKBOX NOTE\r\n if (this.options.note) {\r\n const inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note });\r\n this.rootElement.appendChild(inputNote);\r\n }\r\n };\r\n\r\n /**\r\n * Sets value of checkbox\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n Checkbox.prototype.setValue = function (value) {\r\n if (value === '') return;\r\n \r\n this.input.checked = value;\r\n };\r\n\r\n /**\r\n * Returns value of checkbox\r\n *\r\n * @function\r\n * @returns {String} Value of checkbox\r\n */\r\n Checkbox.prototype.getValue = function () {\r\n return this.input.checked;\r\n };\r\n\r\n /**\r\n * Clears checkbox value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Checkbox.prototype.clear = function () {\r\n this.input.checked = false;\r\n };\r\n\r\n /**\r\n * Toggles inputs required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} isRequired\r\n */\r\n Checkbox.prototype.toggleRequired = function (isRequired) {\r\n this.input.required = isRequired;\r\n };\r\n\r\n /**\r\n * Toggles checkbox disabled state, if true checkbox is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Checkbox.prototype.toggleDisabled = function (isDisbled) {\r\n this.input.disabled = isDisbled;\r\n this.input.readOnly = isDisbled;\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on checkbox\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Checkbox.prototype.setValidtyError = function (message) {\r\n this.input.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Handles checkbox change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Checkbox.prototype.onChange = function (cbFunc) {\r\n this.input.addEventListener('input', e => {\r\n if (this.options.toggle) e.preventDefault();\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Updates the text inside label element\r\n *\r\n * @param {String} newValue\r\n */\r\n Checkbox.prototype.updateLableValue = function (newValue) {\r\n if (_DOM.stringContainsHTML(newValue)) {\r\n this.labelEle.innerHTML = newValue;\r\n\r\n return;\r\n }\r\n\r\n this.labelEle.innerText = newValue;\r\n };\r\n\r\n /**\r\n * Renders the built checkbox element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {Checkbox} Returns the current instances for chaining\r\n */\r\n Checkbox.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Checkbox;\r\n});\r\n","(function (global, factory) {\r\n global.CheckboxGroup = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n groupLabel: null,\r\n fields: null,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a CheckboxGroup component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.disabled]\r\n * @param {Boolean} [options.required]\r\n * @returns {CheckboxGroup}\r\n */\r\n function CheckboxGroup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.inputs = {};\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.groupLabelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n CheckboxGroup.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('fieldset', { id: this.options.id });\r\n this.groupLabelEle = _DOM.createElement('legend', { text: this.options.groupLabel });\r\n this.rootElement.appendChild(this.groupLabelEle);\r\n\r\n this.options.fields.forEach(field => {\r\n let inputInstance = new Checkbox({ ...field, disabled: this.options.disabled, required: this.options.required });\r\n this.rootElement.appendChild(inputInstance.rootElement);\r\n this.inputs[field.id] = inputInstance;\r\n });\r\n };\r\n\r\n return CheckboxGroup;\r\n});\r\n","(function (global, factory) {\r\n global.Dialog = factory();\r\n})(this, function () {\r\n function Confirmation() {}\r\n\r\n function Alert() {}\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n clickOutToClose: true,\r\n className: null,\r\n isModal: true,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Dialog component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.isModal] Whether to display as basic dialog or modal dialog\r\n * @param {String} [options.className] Class name for Element\r\n * @param {Boolean} [options.clickOutToClose] Whether modal closes with backdrop click\r\n * @returns {Dialog}\r\n *\r\n * @example\r\n * const popup = new Dialog();\r\n */\r\n function Dialog(options) {\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n\r\n // Instance Ref\r\n this.dialog = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Dialog element component HTML\r\n *\r\n * @function\r\n * @returns {Dialog} Returns the current instances for chaining\r\n */\r\n Dialog.prototype._build = function () {\r\n let classArray = ['dialog'];\r\n if (this.options.isModal) classArray.push('modal');\r\n if (this.options.className) classArray.push(this.options.className);\r\n\r\n this.dialog = _DOM.createElement('dialog', {\r\n class: classArray,\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for Dialog Box\r\n *\r\n * @function\r\n */\r\n Dialog.prototype._setupEvents = function () {\r\n if (this.options.clickOutToClose) {\r\n this.dialog.addEventListener('click', e => {\r\n const dialogDimensions = this.dialog.getBoundingClientRect();\r\n\r\n if (\r\n e.clientX < dialogDimensions.left ||\r\n e.clientX > dialogDimensions.right ||\r\n e.clientY < dialogDimensions.top ||\r\n e.clientY > dialogDimensions.bottom\r\n ) {\r\n this.close();\r\n\r\n const customEvent = new CustomEvent('onClose');\r\n this.dialog.dispatchEvent(customEvent);\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Dialog.prototype.onClose = function (cbFunc) {\r\n this.dialog.addEventListener('onClose', e => {\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * Shows dialog element\r\n *\r\n * @function\r\n */\r\n Dialog.prototype.show = function () {\r\n if (this.options.isModal) {\r\n this.dialog.showModal();\r\n } else {\r\n this.dialog.show();\r\n }\r\n };\r\n\r\n /**\r\n * Closes dialog element\r\n *\r\n * @function\r\n */\r\n Dialog.prototype.close = function () {\r\n this.dialog.close();\r\n };\r\n\r\n /**\r\n * Renders the built Dialog element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the dialog to\r\n * @returns {Dialog} Returns the current instances for chaining\r\n */\r\n Dialog.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Dialog;\r\n});\r\n","/** DO NOT TOUCH ANY OF THIS CODE PLEASE */\r\n\r\n(function (global, factory) {\r\n global.Form = factory();\r\n})(this, function () {\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n isReadOnly: false,\r\n hideAllButtons: false,\r\n formName: '',\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Form component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @returns {Form}\r\n *\r\n * @example\r\n * const myForm = new Form({\r\n * elements: [],\r\n * buttons: []\r\n * })\r\n */\r\n function Form(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.inputs = {};\r\n this.buttons = {};\r\n this.formData = null;\r\n this.formId = null;\r\n\r\n // DOM Ref\r\n this.form = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Form element HTML\r\n *\r\n * @function\r\n */\r\n Form.prototype._build = function () {\r\n this.form = _DOM.createElement('form', { name: this.options.formName });\r\n\r\n // Build form input fields\r\n this.options.fields.forEach(ele => {\r\n const fieldType = ele.type.toLowerCase();\r\n let inputInstance;\r\n\r\n switch (fieldType) {\r\n case 'radiogroup': {\r\n inputInstance = new RadioGroup({ ...ele });\r\n break;\r\n }\r\n case 'checkbox': {\r\n inputInstance = new Checkbox({ ...ele });\r\n break;\r\n }\r\n case 'checkboxgroup': {\r\n inputInstance = new CheckboxGroup({ ...ele });\r\n break;\r\n }\r\n case 'select': {\r\n const tmpFix = { ...ele };\r\n delete tmpFix.type; // only needed for Form\r\n\r\n inputInstance = new Select({ ...tmpFix });\r\n break;\r\n }\r\n case 'textarea': {\r\n const tmpFix = { ...ele };\r\n delete tmpFix.type; // only needed for Form\r\n inputInstance = new Textarea({ ...tmpFix });\r\n break;\r\n }\r\n case 'attachment': {\r\n const tmpFix = { ...ele };\r\n delete tmpFix.type; // only needed for Form\r\n inputInstance = new Attachments({ ...tmpFix });\r\n break;\r\n }\r\n default: {\r\n inputInstance = new Input({ ...ele });\r\n }\r\n }\r\n\r\n if (typeof this.options.onChange === 'function') {\r\n // this ties together the change events between form and inputs\r\n inputInstance.onChange(this.options.onChange);\r\n }\r\n\r\n this.form.appendChild(inputInstance.rootElement);\r\n\r\n if (fieldType === 'checkboxgroup') {\r\n this.inputs = { ...this.inputs, ...inputInstance.inputs };\r\n } else {\r\n this.inputs[ele.id] = inputInstance;\r\n }\r\n });\r\n\r\n if (!this.options.hideAllButtons) {\r\n const btnWrap = _DOM.createElement('div', { class: 'formButtons' });\r\n // Add default save button for all forms\r\n const submitButton = new Button({\r\n type: 'submit',\r\n text: 'Save',\r\n name: 'save',\r\n icon: 'save',\r\n }).renderTo(btnWrap);\r\n this.buttons['submit'] = submitButton;\r\n\r\n // Add additional form buttons\r\n if (this.options.buttons) {\r\n this.options.buttons.forEach(button => {\r\n const newButton = new Button({ ...button }).renderTo(btnWrap);\r\n if (button.name) {\r\n this.buttons[button.name] = newButton;\r\n }\r\n });\r\n }\r\n\r\n // Add default delete button for all forms (hidden by default)\r\n const deleteButton = new Button({\r\n type: 'button',\r\n text: 'Delete',\r\n name: 'delete',\r\n icon: 'delete',\r\n style: 'danger',\r\n styleType: 'outlined',\r\n hidden: true,\r\n }).renderTo(btnWrap);\r\n this.buttons['delete'] = deleteButton;\r\n\r\n // Add default cancel button for all forms\r\n const cancelButton = new Button({\r\n type: 'reset',\r\n text: 'Cancel',\r\n name: 'cancel',\r\n style: 'primary',\r\n styleType: 'outlined',\r\n }).renderTo(btnWrap);\r\n this.buttons['cancel'] = cancelButton;\r\n\r\n this.form.appendChild(btnWrap);\r\n }\r\n\r\n // if (this.options.isReadOnly) {\r\n // this.disableFormInputs();\r\n // }\r\n };\r\n\r\n Form.prototype._setupEvents = function () {\r\n this.form.addEventListener('change', e => {\r\n const customEvent = new CustomEvent('onChange', { detail: e });\r\n this.form.dispatchEvent(customEvent);\r\n });\r\n\r\n this.form.addEventListener(\r\n 'keyup',\r\n _UTIL.debounce(e => {\r\n const customEvent = new CustomEvent('onKeyup', { detail: e });\r\n this.form.dispatchEvent(customEvent);\r\n }, 100),\r\n );\r\n\r\n if (this.buttons['delete']) {\r\n this.buttons['delete'].onClick(e => {\r\n const customEvent = new CustomEvent('onDelete', { detail: e });\r\n this.form.dispatchEvent(customEvent);\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Handles change event on form inputs\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onSubmit = function (cbFunc) {\r\n this.form.addEventListener('submit', e => {\r\n e.preventDefault();\r\n\r\n const formData = new FormData(this.form);\r\n const entries = formData.entries();\r\n const data = Object.fromEntries(entries);\r\n\r\n cbFunc(data, e.submitter, this.formId);\r\n });\r\n };\r\n\r\n /**\r\n * Handles reset event on form\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onReset = function (cbFunc) {\r\n this.form.addEventListener('reset', e => {\r\n e.preventDefault();\r\n\r\n this.clear();\r\n\r\n cbFunc();\r\n });\r\n };\r\n\r\n /**\r\n * Handles delete event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onDelete = function (cbFunc) {\r\n this.form.addEventListener('onDelete', e => {\r\n e.preventDefault(); \r\n\r\n cbFunc(data, e.submitter);\r\n });\r\n };\r\n\r\n /**\r\n * Handles change event on form inputs\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onChange = function (cbFunc) {\r\n this.form.addEventListener('onChange', e => {\r\n cbFunc(e.detail, this.formId);\r\n });\r\n };\r\n\r\n /**\r\n * Handles keyup event on form inputs\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onKeyup = function (cbFunc) {\r\n this.form.addEventListener(\r\n 'onKeyup',\r\n _UTIL.debounce(e => {\r\n cbFunc(e.detail);\r\n }, 100),\r\n );\r\n };\r\n\r\n /**\r\n * Handles file delete event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Form.prototype.onFileDelete = function (cbFunc) {\r\n this.form.addEventListener('fileDelete', e => {\r\n cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Clears value from all inputs within form\r\n *\r\n * @function\r\n */\r\n Form.prototype.clear = function () {\r\n this.formData = null;\r\n this.formId = null;\r\n\r\n // clear all values from form inputs\r\n for (inputName in this.inputs) {\r\n this.inputs[inputName].clear();\r\n }\r\n };\r\n\r\n /**\r\n * Disables all inputs within form\r\n *\r\n * @function\r\n */\r\n Form.prototype.disableFormInputs = function (disable = true) {\r\n for (inputName in this.inputs) {\r\n this.inputs[inputName].toggleDisabled(disable);\r\n }\r\n };\r\n\r\n /**\r\n * Populates form fields with given data\r\n *\r\n * @function\r\n * @param {Object} data\r\n */\r\n Form.prototype.populate = function (data, formId) {\r\n this.clear();\r\n\r\n this.formData = data;\r\n this.formId = formId;\r\n\r\n for (inputName in data) {\r\n this.inputs[inputName].setValue(data[inputName]);\r\n }\r\n };\r\n\r\n /**\r\n * Renders the built Form element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the form to\r\n * @returns {Form} Returns the current instances for chaining\r\n */\r\n Form.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.form);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Form;\r\n});\r\n","(function (global, factory) {\r\n global.Icon = factory();\r\n})(this, function () {\r\n const svg = {\r\n add: `\r\n \r\n \r\n \r\n `,\r\n attachment: `\r\n \r\n \r\n \r\n `,\r\n arrowRight: `\r\n \r\n \r\n \r\n `,\r\n arrowLeft: `\r\n \r\n \r\n \r\n `,\r\n cancel: `\r\n \r\n \r\n \r\n `,\r\n calendar: `\r\n \r\n \r\n \r\n `,\r\n checkmark: `\r\n \r\n \r\n \r\n `,\r\n chevron: `\r\n \r\n \r\n \r\n `,\r\n close: `\r\n \r\n \r\n \r\n `,\r\n densitySmall: `\r\n \r\n \r\n \r\n `,\r\n densityMedium: `\r\n \r\n \r\n \r\n `,\r\n delete: `\r\n \r\n \r\n \r\n `,\r\n edit: `\r\n \r\n \r\n \r\n `,\r\n error: `\r\n \r\n \r\n \r\n `,\r\n exitFullScreen: `\r\n \r\n \r\n \r\n `,\r\n openFullScreen: `\r\n \r\n \r\n \r\n `,\r\n lock: `\r\n \r\n \r\n \r\n `,\r\n micOn: `\r\n \r\n \r\n \r\n `,\r\n micOff: `\r\n \r\n \r\n \r\n `,\r\n peopleGroup: `\r\n \r\n \r\n \r\n `,\r\n pin: `\r\n \r\n \r\n \r\n `,\r\n play: `\r\n \r\n \r\n \r\n `,\r\n save: `\r\n \r\n \r\n \r\n `,\r\n stop: `\r\n \r\n \r\n \r\n `,\r\n warning: `\r\n \r\n \r\n \r\n `,\r\n };\r\n\r\n const getIcon = name => {\r\n return _DOM.createElement('span', { html: svg[name], class: 'svgIcon' });\r\n };\r\n\r\n const getIconButton = name => {\r\n return _DOM.createElement('div', { html: `${svg[name]}`, class: 'iconButton' });\r\n };\r\n\r\n return {\r\n getIcon,\r\n getIconButton,\r\n };\r\n});\r\n","(function (global, factory) {\r\n global.Input = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n showcount: false,\r\n note: null,\r\n value: null,\r\n };\r\n\r\n /**\r\n * Constructor function for creating an Input component.\r\n *\r\n * Use for text, number, date, time\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.type HTML Input type\r\n * @param {String} options.label Text for label input\r\n * @param {Boolean} [options.required] Whether input is required for submission\r\n * @param {String} [options.note] Text for input note/message, displayed underneath input field\r\n * @param {Boolean} [options.showCount] Whether to show char count or not\r\n * @param {String} [options.minlength] Min char count\r\n * @param {String} [options.maxlength] Max char count\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n * @returns {Input}\r\n *\r\n * @example\r\n * const fnInput = new Input({\r\n * type: 'text',\r\n * label: 'First Name',\r\n * id: 'firstName'\r\n * });\r\n */\r\n function Input(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.input = null;\r\n this.labelEle = null;\r\n this.inputNote = null;\r\n\r\n this._build();\r\n\r\n if (this.options.value) {\r\n this.setValue(this.options.value);\r\n }\r\n }\r\n\r\n /**\r\n * Builds the Input component HTML\r\n *\r\n * @function\r\n * @returns {Input} Current instances for chaining\r\n */\r\n Input.prototype._build = function () {\r\n // INPUT WRAP\r\n const classArray = ['inputGroup', `${this.options.attributes.type}`, `${this.options.attributes.id}`];\r\n const inputGroup = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // INPUT & LABEL\r\n const inputWrap = _DOM.createElement('div', { class: 'inputGroup__inputWrap' });\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n inputWrap.append(this.input);\r\n\r\n inputGroup.append(this.labelEle, inputWrap);\r\n\r\n // INPUT NOTE\r\n this.inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note ?? '' });\r\n inputGroup.append(this.inputNote);\r\n\r\n // CHAR COUNTER\r\n if (this.options.showcount) {\r\n const countMarkup = this.options.attributes.maxlength\r\n ? { html: `${0}/${this.options.attributes.maxlength}` }\r\n : { text: '0' };\r\n const inputCount = _DOM.createElement('div', { class: 'inputGroup__charCount', ...countMarkup });\r\n inputGroup.append(inputCount);\r\n }\r\n\r\n this.rootElement = inputGroup;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets value of input\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n Input.prototype.setValue = function (value) {\r\n if (this.options.attributes.type === 'date') {\r\n if (!value) {\r\n this.input.value = '';\r\n return;\r\n }\r\n\r\n value = value.split(' ')[0];\r\n\r\n const dateformat = dates.checkFormat(value);\r\n if (dateformat === 'standard') {\r\n value = dates.formateToISO(value);\r\n }\r\n }\r\n\r\n this.input.value = value;\r\n };\r\n\r\n /**\r\n * Returns value of input\r\n *\r\n * @function\r\n * @returns {*} Value of input\r\n */\r\n Input.prototype.getValue = function () {\r\n return this.input.value;\r\n };\r\n\r\n /**\r\n * Clears input value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Input.prototype.clear = function () {\r\n this.input.value = '';\r\n };\r\n\r\n /**\r\n * Toggles inputs required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} isRequired\r\n */\r\n Input.prototype.toggleRequired = function (isRequired) {\r\n this.input.required = isRequired;\r\n };\r\n\r\n /**\r\n * Toggles inputs disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Input.prototype.toggleDisabled = function (isDisbled) {\r\n this.input.disabled = isDisbled;\r\n this.input.readOnly = isDisbled;\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on input\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Input.prototype.setValidtyError = function (message) {\r\n this.input.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Adds error icon to end of input and updates note text with given error message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showError = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('error'), message);\r\n };\r\n\r\n /**\r\n * Adds warning icon to end of input and updates note text with given warning message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showWarning = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('warning'), message);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Input.prototype.clearErrorOrWarning = function () {\r\n this.inputNote.innerText = this.options.note;\r\n };\r\n\r\n /**\r\n * Handles input change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Input.prototype.onChange = function (cbFunc) {\r\n this.input.addEventListener('onchange', e => {\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Handles input keyup event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Input.prototype.onKeyup = function (cbFunc) {\r\n this.input.addEventListener('keyup', e => {\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Handles input click event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Input.prototype.onClick = function (cbFunc) {\r\n this.input.addEventListener('click', e => {\r\n if (cbFunc) cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Updates the text inside label element\r\n *\r\n * @param {String} newValue\r\n */\r\n Input.prototype.updateLableValue = function (newValue) {\r\n if (_DOM.stringContainsHTML(newValue)) {\r\n this.labelEle.innerHTML = newValue;\r\n\r\n return;\r\n }\r\n\r\n this.labelEle.innerText = newValue;\r\n };\r\n\r\n /**\r\n * Renders the built Input element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the input to\r\n * @returns {Input} Returns the current instances for chaining\r\n */\r\n Input.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Input;\r\n});\r\n","(function (global, factory) {\r\n global.Portrait = factory();\r\n})(this, function () {\r\n /**\r\n * Constructor function for creating a Portrait component.\r\n *\r\n * @constructor\r\n * @returns {RosterCard}\r\n */\r\n function Portrait(consumerId) {\r\n this.consumerId = consumerId;\r\n\r\n this.rootElement = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Portrait component HTML\r\n *\r\n * @function\r\n */\r\n Portrait.prototype.build = function () {\r\n const imgSource = `./images/portraits/${this.consumerId}.png?${new Date().setHours(0, 0, 0, 0)}`;\r\n const defaultImgSource = `this.src='./images/new-icons/default.jpg'`;\r\n\r\n const image = _DOM.createElement('img', {\r\n src: imgSource,\r\n onerror: defaultImgSource,\r\n loading: 'lazy',\r\n });\r\n\r\n this.rootElement = _DOM.createElement('div', { class: 'portrait', node: image });\r\n };\r\n\r\n /**\r\n * Renders the built Portrait component to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the portrait to\r\n * @returns {RosterCard} Returns the current instances for chaining\r\n */\r\n Portrait.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Portrait;\r\n});\r\n","(function (global, factory) {\r\n global.RadioGroup = factory();\r\n})(this, function () {\r\n /**\r\n * Default configuration\r\n * @typ {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n disabled: false,\r\n required: false,\r\n };\r\n\r\n /**\r\n * @constructor\r\n * @param {String} id\r\n * @param {String} type\r\n * @param {String} label\r\n * @param {Boolean} [options.disabled]\r\n * @param {Boolean} [options.required]\r\n */\r\n function Radio(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.type = 'radio';\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.input = null;\r\n this.labelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Radio element structure\r\n *\r\n * @function\r\n */\r\n Radio.prototype._build = function () {\r\n // RADIO WRAP\r\n const classArray = ['inputGroup', 'radio', `${this.options.attributes.id}`];\r\n this.rootElement = _DOM.createElement('div', {\r\n class: classArray,\r\n });\r\n\r\n // RADIO & LABEL\r\n this.input = _DOM.createElement('input', { ...this.options.attributes });\r\n this.labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n this.rootElement.appendChild(this.input);\r\n this.rootElement.appendChild(this.labelEle);\r\n };\r\n\r\n /**\r\n * Sets value of radio\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n Radio.prototype.setValue = function (value) {\r\n this.input.checked = value;\r\n };\r\n\r\n /**\r\n * Returns value of radio\r\n *\r\n * @function\r\n * @returns {*} Value of radio\r\n */\r\n Radio.prototype.getValue = function () {\r\n return this.input.checked;\r\n };\r\n\r\n /**\r\n * Renders the built Radio element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node - DOM node to render the radio to\r\n * @returns {Radio} - Returns the current instances for chaining\r\n */\r\n Radio.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @typ {Object}\r\n */\r\n const DEFAULT_OPTIONS_2 = {\r\n disabled: false,\r\n required: false,\r\n };\r\n\r\n /**\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id - Id for inputs\r\n * @param {String} options.groupLabel - Text for label input\r\n * @param {Array} options.fields - Radio inputs\r\n * @param {Boolean} [options.disabled]\r\n * @param {Boolean} [options.required]\r\n */\r\n function RadioGroup(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS_2, options);\r\n this.inputs = {};\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.groupLabelEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Radio element structure\r\n *\r\n * @function\r\n */\r\n RadioGroup.prototype._build = function () {\r\n this.rootElement = _DOM.createElement('fieldset');\r\n this.groupLabelEle = _DOM.createElement('legend', { text: this.options.groupLabel });\r\n this.rootElement.appendChild(this.groupLabelEle);\r\n\r\n this.options.fields.forEach(field => {\r\n const inputInstance = new Radio({\r\n ...field,\r\n name: this.options.id,\r\n disabled: this.options.disabled,\r\n required: this.options.required,\r\n });\r\n this.rootElement.appendChild(inputInstance.rootElement);\r\n this.inputs[field.id] = inputInstance;\r\n });\r\n\r\n this.inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note ?? '' });\r\n this.rootElement.append(this.inputNote);\r\n };\r\n\r\n /**\r\n * Set radio input checked status by id\r\n *\r\n * @function\r\n * @param {String | Number} value\r\n */\r\n RadioGroup.prototype.setValue = function (inputId) {\r\n if (!inputId || inputId === '') {\r\n this.clear();\r\n return;\r\n }\r\n\r\n if (!this.inputs[inputId]) {\r\n debugger;\r\n }\r\n\r\n this.inputs[inputId].setValue(true);\r\n };\r\n\r\n /**\r\n * Get radio input checked status by id\r\n *\r\n * @function\r\n * @param {String} [inputId]\r\n */\r\n RadioGroup.prototype.getValue = function (inputId) {\r\n if (!inputId) {\r\n let checkedInputId;\r\n\r\n for (inputId in this.inputs) {\r\n if (this.inputs[inputId].getValue()) {\r\n checkedInputId = this.inputs[inputId].input.id;\r\n }\r\n }\r\n\r\n return checkedInputId ? checkedInputId : '';\r\n }\r\n\r\n return this.inputs[inputId].getValue();\r\n };\r\n\r\n RadioGroup.prototype.clear = function () {\r\n for (inputId in this.inputs) {\r\n this.inputs[inputId].setValue(false);\r\n }\r\n };\r\n\r\n /**\r\n * Toggles inputs disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n RadioGroup.prototype.toggleDisabled = function (isDisbled) {\r\n for (inputId in this.inputs) {\r\n this.inputs[inputId].input.disabled = isDisbled;\r\n this.inputs[inputId].input.readOnly = isDisbled;\r\n }\r\n };\r\n\r\n return RadioGroup;\r\n});\r\n","(function (global, factory) {\r\n global.Select = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @typ {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n data: [],\r\n hidden: false,\r\n note: null,\r\n required: false,\r\n includeBlankOption: false,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Select component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for input, use to link it with label. Also used for name attribute.\r\n * @param {String} options.label Text for label select\r\n * @param {Boolean} [options.required] Whether select is required for submission\r\n * @param {String} [options.note] Text for select note/message, displayed underneath select field\r\n * @param {Boolean} [options.hidden] Whether to show or hide the select\r\n * @param {Boolean} [options.includeBlankOption]\r\n * @returns {Select}\r\n *\r\n * @example\r\n * const dropdown = new Select({\r\n * label: 'Locations',\r\n * id: 'locations'\r\n * });\r\n */\r\n function Select(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.inputWrap = null;\r\n this.select = null;\r\n this.inputNote = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * Builds the Select component HTML\r\n *\r\n * @function\r\n */\r\n Select.prototype._build = function () {\r\n const classArray = ['inputGroup', 'select', `${this.options.attributes.id}`];\r\n this.rootElement = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n this.inputWrap = _DOM.createElement('div', { class: 'inputGroup__inputWrap' });\r\n this.select = _DOM.createElement('select', { ...this.options.attributes });\r\n const labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n\r\n this.inputWrap.appendChild(this.select);\r\n this.inputWrap.appendChild(Icon.getIcon('chevron'));\r\n\r\n this.rootElement.appendChild(labelEle);\r\n this.rootElement.appendChild(this.inputWrap);\r\n\r\n this.inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note ?? '' });\r\n this.rootElement.appendChild(this.inputNote);\r\n\r\n this.populate();\r\n };\r\n\r\n /**\r\n * Populates the select with \r\n *\r\n * @function\r\n * @param {Array} [data] Data to populate select with\r\n */\r\n Select.prototype.populate = function (data, defaultValue) {\r\n if (data && Array.isArray(data)) this.options.data = [...data];\r\n\r\n this.select.innerHTML = '';\r\n\r\n if (this.options.data.length > 0) {\r\n if (this.options.includeBlankOption) {\r\n this.options.data.unshift({ value: '', text: '' });\r\n }\r\n\r\n this.options.data.sort(_UTIL.sortByProperty('text')).forEach(d => {\r\n const optionEle = _DOM.createElement('option', { value: d.value, text: d.text });\r\n this.select.appendChild(optionEle);\r\n });\r\n }\r\n\r\n //! If data is emtpy we set dropdown to disabled\r\n if (!this.options.data || this.options.data.length === 0) {\r\n this.toggleDisabled(true);\r\n } else {\r\n this.toggleDisabled(false);\r\n }\r\n\r\n const dv = defaultValue ? defaultValue : this.options.defaultValue;\r\n this.select.value = dv;\r\n };\r\n\r\n /**\r\n * Sets value of select\r\n *\r\n * @function\r\n * @param {String} Value\r\n */\r\n Select.prototype.setValue = function (value) {\r\n this.select.value = value;\r\n };\r\n\r\n /**\r\n * Gets value of select\r\n *\r\n * @function\r\n * @returns {*} Value of select\r\n */\r\n Select.prototype.getValue = function () {\r\n return this.select.value;\r\n };\r\n\r\n /**\r\n * Clears select value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Select.prototype.clear = function () {\r\n this.select.value = '';\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on select\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Select.prototype.setValidtyError = function (message) {\r\n this.select.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Adds error icon to end of select and updates note text with given error message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showError = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('error'), message);\r\n };\r\n\r\n /**\r\n * Adds warning icon to end of select and updates note text with given warning message\r\n *\r\n * @function\r\n * @param {String} message\r\n */\r\n Input.prototype.showWarning = function (message) {\r\n this.inputNote.innerHTML = message;\r\n //this.inputNote.append(Icon.getIcon('warning'), message);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Input.prototype.clearErrorOrWarning = function () {\r\n this.inputNote.innerText = this.options.note ?? '';\r\n };\r\n\r\n /**\r\n * Toggles select required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} onOff\r\n */\r\n Select.prototype.toggleRequired = function (onOff) {\r\n this.select.required = onOff;\r\n };\r\n\r\n /**\r\n * Toggles select disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Select.prototype.toggleDisabled = function (isDisbled) {\r\n this.select.disabled = isDisbled;\r\n this.select.readOnly = isDisbled;\r\n };\r\n\r\n /**\r\n * Handles select change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Select.prototype.onChange = function (cbFunc) {\r\n this.select.addEventListener('change', e => {\r\n cbFunc(e);\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built Select element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the select to\r\n * @returns {Select} Returns the current instances for chaining\r\n */\r\n Select.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Select;\r\n});\r\n","(function (global, factory) {\r\n global.Spinner = factory();\r\n})(this, function () {\r\n //TODO-ASH: bring in web animation api for more control\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n speed: 'normal',\r\n size: 'large',\r\n };\r\n\r\n /**\r\n * Constructor function for creating a spinner UI component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Number} [options.speed] - The speed ms, spin speed in milliseconds\r\n * @param {String} [options.size] - The size of spinner\r\n * @returns {Spinner}\r\n *\r\n * @example\r\n * var mySpinner = new Spinner();\r\n */\r\n function Spinner(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n\r\n // DOM Ref\r\n this.spinnerWrap = null;\r\n this.spinner = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the Spinner component HTML\r\n *\r\n * @function\r\n */\r\n Spinner.prototype.build = function () {\r\n this.spinnerWrap = _DOM.createElement('div', { class: 'loadingSpinner' });\r\n this.spinner = _DOM.createElement('div', { class: 'loadingSpinner__bar' });\r\n\r\n this.spinnerWrap.appendChild(this.spinner);\r\n };\r\n\r\n /**\r\n * Removes Element From DOM\r\n *\r\n * @function\r\n */\r\n Spinner.prototype.removeElement = function () {\r\n this.spinnerWrap.remove();\r\n };\r\n\r\n /**\r\n * Replaces Element with new one\r\n *\r\n * @function\r\n * @param {Node} node DOM node to replace element with\r\n */\r\n Spinner.prototype.replaceWith = function (node) {\r\n this.spinnerWrap.replaceWith(node);\r\n };\r\n\r\n /**\r\n * Renders the built Spinner element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Loading Animation to\r\n * @returns {Spinner} Returns the current instances for chaining\r\n */\r\n Spinner.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.spinnerWrap);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Spinner;\r\n});\r\n","//? table filtering\r\n//? custom visible columns\r\n//? row styles: grid, horizontal, free form,\r\n//? row subtext, cell subtext? aka row note\r\n//? pagination\r\n//? allow table to go fullscreen\r\n\r\n//TODO-ASH: multiselect rows w/bulk actions\r\n//TODO-ASH: clickable end row icons\r\n//TODO-ASH: table headline \r\n//TODO-ASH: row density control\r\n\r\n(function (global, factory) {\r\n global = global || self;\r\n global.Table = factory();\r\n})(this, function () {\r\n /**\r\n * Get the index of node related to sibilings\r\n * @param {HTMLElement} node\r\n * @returns {Number}\r\n */\r\n const getNodeIndex = node => {\r\n return Array.from(node.parentNode.children).indexOf(node);\r\n };\r\n\r\n function checkDateFormat(dateString) {\r\n // Regex pattern for ISO date format (YYYY-MM-DD)\r\n const isoFormatPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n // Regex pattern for Standard format (MM/DD/YYYY)\r\n const standardFormatPattern = /^\\d{2}\\/\\d{2}\\/\\d{4}$/;\r\n\r\n if (isoFormatPattern.test(dateString)) {\r\n return 'ISO';\r\n } else if (standardFormatPattern.test(dateString)) {\r\n return 'Standard';\r\n } else {\r\n return 'Unknown format';\r\n }\r\n }\r\n\r\n /**\r\n * Formats the date for table view\r\n * @param {String} dateString dateString format must be ISO YYYY-MM-DD\r\n */\r\n const formatDate = dateString => {\r\n if (!dateString) return '';\r\n if (checkDateFormat(dateString) !== 'ISO') return '';\r\n const date = new Date(`${dateString}T00:00`);\r\n return new Intl.DateTimeFormat('en-US').format(date);\r\n };\r\n\r\n //=========================\r\n // MAIN LIB\r\n //-------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n style: 'default',\r\n rowSortable: false,\r\n columnSortable: false,\r\n allowCopy: false,\r\n allowDelete: false,\r\n };\r\n\r\n /**\r\n * @class Table\r\n * @param {Object} options\r\n * @param {Array} options.headings\r\n * @param {String} [options.style] Table style\r\n * @param {Boolean} [options.rowSortable] Row re ordering\r\n * @param {Boolean} [options.columnSortable] Column sorting by header\r\n * @param {Boolean} [options.allowCopy] Row's can be duplicated by copy\r\n * @param {Boolean} [options.allowDelete] Row's can be duplicated by copy\r\n */\r\n function Table(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.rows = {};\r\n this.selectedRows = {};\r\n\r\n this.rootElement = null;\r\n this.table = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n\r\n // this.table = table ref\r\n // this.table.tHead = table header\r\n // this.table.tFoot = table footer\r\n // this.table.tBodies = html collection of table bodies\r\n // this.table.rows = html collection\r\n // this.table[rowID] = row ref\r\n // this.table.caption = table caption\r\n }\r\n\r\n /**\r\n * Builds & Populates Table\r\n */\r\n Table.prototype._build = function () {\r\n //* create table\r\n this.rootElement = _DOM.createElement('div', { class: 'ui_table' });\r\n const tableNav = _DOM.createElement('div', { class: 'ui-table__nav' });\r\n this.table = _DOM.createElement('table');\r\n const tableBody = _DOM.createElement('tbody');\r\n const tableHeader = _DOM.createElement('thead', { node: _DOM.createElement('tr') });\r\n\r\n this.table.appendChild(tableHeader);\r\n this.table.appendChild(tableBody);\r\n\r\n this.rootElement.appendChild(tableNav);\r\n this.rootElement.appendChild(this.table);\r\n\r\n //* populate table header\r\n this.options.headings.forEach(heading => {\r\n const cell = _DOM.createElement('th', {\r\n text: heading.text,\r\n class: this.options.columnSortable ? 'sortable' : '',\r\n 'data-type': heading.type,\r\n });\r\n tableHeader.rows[0].appendChild(cell);\r\n });\r\n\r\n //* add col for delete\r\n if (this.options.allowDelete) {\r\n const cell = _DOM.createElement('th', {\r\n 'data-type': 'deleteRow',\r\n });\r\n tableHeader.rows[0].appendChild(cell);\r\n }\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Table.prototype._setupEvents = function () {\r\n this.table.tBodies[0].addEventListener('click', e => {\r\n if (e.target.dataset.type === 'deleteRow') {\r\n const customEvent = new CustomEvent('onRowDelete', { detail: e.target.closest('tr') });\r\n this.table.tBodies[0].dispatchEvent(customEvent);\r\n return;\r\n }\r\n\r\n const customEvent = new CustomEvent('onRowClick', { detail: e.target.closest('tr') });\r\n this.table.tBodies[0].dispatchEvent(customEvent);\r\n });\r\n };\r\n\r\n /**\r\n * Multi select rows w/bulk actions\r\n */\r\n Table.prototype._multiSelect = function () {\r\n //TODO add bulk action dropdown/list\r\n\r\n // add checkbox to header\r\n const newCheckbox = new Input({\r\n id: 'headerCheckbox',\r\n type: 'checkbox',\r\n label: '',\r\n });\r\n const checkboxInput = newCheckbox.rootElement;\r\n checkboxInput.addEventListener('change', e => {\r\n console.log('I was selected');\r\n });\r\n const th = _DOM.createElement('th', { node: checkboxInput });\r\n this.table.tHead.rows[0].insertBefore(th, this.table.tHead.rows[0].cells[0]);\r\n\r\n // add checkbox to each tbody row\r\n const rows = Array.from(this.table.tBodies[0].rows);\r\n rows.forEach(row => {\r\n const newCheckbox = new Input({\r\n id: `${row.id}checkbox`,\r\n type: 'checkbox',\r\n label: '',\r\n });\r\n const checkboxInput = newCheckbox.rootElement;\r\n checkboxInput.addEventListener('change', e => {\r\n console.log('I was selected', row);\r\n });\r\n const td = _DOM.createElement('td', { node: checkboxInput });\r\n row.insertBefore(td, row.cells[0]);\r\n });\r\n\r\n this.table.addEventListener('click', e => {\r\n console.log(e.target, 'i was clicked');\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Sort by column header\r\n */\r\n Table.prototype._columnSort = function () {\r\n this.table.classList.add('colSort');\r\n\r\n this.table.tHead.addEventListener('click', e => {\r\n if (e.target.nodeName !== 'TH') return;\r\n\r\n const colIndex = getNodeIndex(e.target);\r\n const rows = Array.from(this.table.tBodies[0].rows);\r\n\r\n let direction = !this.lastDirection ? 'asc' : this.lastDirection === 'asc' ? 'desc' : 'asc';\r\n let datetime;\r\n\r\n if (this.lastHeading) {\r\n this.lastHeading.classList.remove(this.lastDirection);\r\n }\r\n\r\n if (this.lastDirection) {\r\n e.target.classList.remove(this.lastDirection);\r\n }\r\n\r\n e.target.classList.add(direction);\r\n\r\n if (e.target.hasAttribute('data-type')) {\r\n if (e.target.getAttribute('data-type') === 'date') {\r\n datetime = true;\r\n }\r\n }\r\n\r\n //* sort table rows\r\n rows.sort((a, b) => {\r\n let ca = a.cells[colIndex].textContent;\r\n let cb = b.cells[colIndex].textContent;\r\n\r\n if (datetime) {\r\n ca = new Date(ca).getTime();\r\n cb = new Date(cb).getTime();\r\n } else {\r\n ca = ca.replace(/(\\$|\\,|\\s|%)/g, '');\r\n cb = cb.replace(/(\\$|\\,|\\s|%)/g, '');\r\n }\r\n\r\n ca = !isNaN(ca) ? parseInt(ca, 10) : ca;\r\n cb = !isNaN(cb) ? parseInt(cb, 10) : cb;\r\n\r\n if (direction === 'asc') {\r\n return ca > cb ? 1 : -1;\r\n } else {\r\n return ca < cb ? 1 : -1;\r\n }\r\n });\r\n\r\n this.lastHeading = e.target;\r\n this.lastDirection = direction;\r\n\r\n //* replace table rows with sorted ones\r\n const clonedTableBody = this.table.tBodies[0].cloneNode();\r\n\r\n for (let i = 0; i < rows.length; i++) {\r\n clonedTableBody.appendChild(rows[i]);\r\n }\r\n\r\n this.table.replaceChild(clonedTableBody, this.table.tBodies[0]);\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Sort table rows (drag and drop)\r\n */\r\n Table.prototype._rowSort = function () {\r\n //* This uses sortable.js\r\n //* https://github.com/SortableJS/Sortable\r\n return new Sortable(this.tableBody, {\r\n handle: 'td:first-child',\r\n draggable: 'tbody tr',\r\n onSort: function (evt) {\r\n const newSort = {\r\n oldIndex: evt.oldIndex,\r\n newIndex: evt.newIndex,\r\n row: evt.item,\r\n };\r\n console.log(newSort);\r\n },\r\n });\r\n\r\n // add drag cell for sorting rows\r\n if (this.options.rowSortable) {\r\n const cell = _DOM.createElement('td', { html: ICONS.drag });\r\n rowEle.appendChild(cell);\r\n }\r\n\r\n // Init Row Sort\r\n if (this.options.rowSortable) {\r\n this.initRowSort();\r\n\r\n const td = _DOM.createElement('th');\r\n this.tableHeader.rows[0].insertBefore(td, this.tableHeader.rows[0].cells[0]);\r\n this.table.classList.add('sortable');\r\n }\r\n };\r\n\r\n /**\r\n * Clears table body\r\n *\r\n * @function\r\n */\r\n Table.prototype.clear = function () {\r\n this.table.tBodies[0].innerHTML = '';\r\n };\r\n\r\n /**\r\n * @function\r\n * @param {Array} data\r\n */\r\n Table.prototype.populate = function (data) {\r\n this.clear();\r\n\r\n //* populate table body\r\n data.forEach((row, i) => {\r\n const rowEle = _DOM.createElement('tr', { ...row.attributes, id: row.id });\r\n\r\n this.rows[row.id] = rowEle;\r\n\r\n // populate row\r\n row.values.forEach((rd, i) => {\r\n const dataType = this.options.headings[i]?.type ?? '';\r\n rd = dataType === 'date' ? formatDate(rd) : rd;\r\n const cell = _DOM.createElement('td', { text: rd, 'data-type': dataType });\r\n rowEle.appendChild(cell);\r\n });\r\n\r\n // add col for delete\r\n if (this.options.allowDelete) {\r\n const cell = _DOM.createElement('td', {\r\n node: Icon.getIcon('delete'),\r\n 'data-type': 'deleteRow',\r\n });\r\n rowEle.appendChild(cell);\r\n }\r\n\r\n this.table.tBodies[0].appendChild(rowEle);\r\n });\r\n };\r\n\r\n /**\r\n * Handles click event for table\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Table.prototype.onRowClick = function (cbFunc) {\r\n this.table.tBodies[0].addEventListener('onRowClick', e => {\r\n cbFunc(e.detail.id);\r\n });\r\n };\r\n\r\n /**\r\n * Handles click event for row delete\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Table.prototype.onRowDelete = function (cbFunc) {\r\n this.table.tBodies[0].addEventListener('onRowDelete', e => {\r\n cbFunc(e.detail, e.detail.id);\r\n });\r\n };\r\n\r\n Table.prototype.removeRow = function (row) {\r\n row.remove();\r\n }\r\n\r\n /**\r\n * Renders Table markup to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render table to\r\n * @returns {Table} Returns the current instances for chaining\r\n */\r\n Table.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Table;\r\n});\r\n","(function (global, factory) {\r\n global.Textarea = factory();\r\n})(this, function () {\r\n //TODO-ASH: create logic to update charcount on keyup, input\r\n\r\n //=======================================\r\n // TEXT TO SPEECH\r\n //---------------------------------------\r\n\r\n /**\r\n * @constructor\r\n * @param {Instance} textareaInstance\r\n * @returns {SpeechToText}\r\n */\r\n function SpeechToText(textareaInstance) {\r\n this.textareaInstance = textareaInstance;\r\n\r\n this.speechConfig = null;\r\n this.audioConfig = null;\r\n this.isSpeechInitialized = false;\r\n this.isListening = false;\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.init = function () {\r\n try {\r\n this.speechConfig = SpeechSDK.SpeechConfig.fromSubscription($.session.azureSTTApi, 'eastus');\r\n this.speechConfig.speechRecognitionLanguage = 'en-US';\r\n this.speechConfig.enableDictation();\r\n this.speechConfig.setServiceProperty(\r\n 'punctuation',\r\n 'explicit',\r\n SpeechSDK.ServicePropertyChannel.UriQueryParameter,\r\n );\r\n this.audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n this.isSpeechInitialized = true;\r\n } catch (error) {\r\n if (error.message === 'throwIfNullOrWhitespace:subscriptionKey') {\r\n const errorMessage =\r\n 'Error initalizing Speech to Text. No API Key found, or API Key has been entered incorrectly. Please contact system administrator to add Azure Speech API Key.';\r\n console.log(errorMessage);\r\n return this;\r\n }\r\n\r\n const errorMessage =\r\n 'Error initalizing Speech to Text. Please contact system administrator to make sure you have a valid Speech to Text connection.';\r\n console.log(errorMessage);\r\n }\r\n\r\n if (this.isSpeechInitialized) {\r\n this.initSpeechRecognizer();\r\n this.mutationObserver();\r\n }\r\n };\r\n\r\n /**\r\n * Builds the SpeechToText component HTML\r\n *\r\n * @function\r\n */\r\n SpeechToText.prototype.initSpeechRecognizer = function () {\r\n this.speechRecognizer = new SpeechSDK.SpeechRecognizer(this.speechConfig, this.audioConfig);\r\n\r\n this.speechRecognizer.recognized = (s, e) => {\r\n if (e.result.reason == SpeechSDK.ResultReason.RecognizedSpeech) {\r\n const currValue = this.textareaInstance.getValue();\r\n const newValue = `${currValue} ${e.result.text} `;\r\n this.textareaInstance.setValue(newValue);\r\n this.textareaInstance.input.dispatchEvent(new Event('change', { bubbles: true }));\r\n } else {\r\n console.log('NOMATCH: Speech could not be recognized.');\r\n }\r\n };\r\n this.speechRecognizer.canceled = (s, e) => {\r\n console.log(`CANCELED: Reason=${e.reason}`);\r\n\r\n if (e.reason == CancellationReason.Error) {\r\n console.log(`\"CANCELED: ErrorCode=${e.errorCode}`);\r\n console.log(`\"CANCELED: ErrorDetails=${e.errorDetails}`);\r\n console.log('CANCELED: Did you update the subscription info?');\r\n }\r\n };\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.startSpeechRecognizer = function () {\r\n this.speechRecognizer.startContinuousRecognitionAsync();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.stopSpeechRecognizer = function () {\r\n this.speechRecognizer.stopContinuousRecognitionAsync();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.closeSpeechRecognizer = function () {\r\n this.speechRecognizer.close();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n SpeechToText.prototype.mutationObserver = function () {\r\n // Mutation Observer for leaving section to disconnect STT API Call\r\n const observer = new MutationObserver(function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n this.closeSpeechRecognizer();\r\n }\r\n }\r\n }\r\n });\r\n\r\n observer.observe(_DOM.ACTIONCENTER, { attributes: true });\r\n };\r\n\r\n //=======================================\r\n // FULLSCREEN MODE\r\n //---------------------------------------\r\n /**\r\n * Contructor function for creating fullscreen textarea component\r\n *\r\n * @constructor\r\n * @param {Textarea} textareaInstance\r\n * @returns {FullscreenTextarea}\r\n */\r\n function FullscreenTextarea(textareaInstance) {\r\n this.textareaInstance = textareaInstance;\r\n\r\n this.fullScreenDialog = null;\r\n this.fullScreenCloseBtn = null;\r\n this.textareaClone = null;\r\n\r\n this.build();\r\n }\r\n\r\n /**\r\n * Builds the FullscreenTextarea component HTML\r\n *\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.build = function () {\r\n // get new Dialog\r\n this.fullScreenDialog = new Dialog({\r\n className: 'fullscreenTextarea',\r\n });\r\n this.fullScreenDialog.renderTo(_DOM.ACTIONCENTER);\r\n\r\n // clone textarea for dialog\r\n this.textareaClone = this.textareaInstance.rootElement.cloneNode(true);\r\n\r\n // build and append dialog close button to textareaClone\r\n this.fullScreenCloseBtn = _DOM.createElement('div', {\r\n class: ['fullscreenToggleBtn', 'close'],\r\n node: Icon.getIcon('exitFullScreen'),\r\n });\r\n this.textareaClone.appendChild(this.fullScreenCloseBtn);\r\n\r\n // remove showBtn from textareaClone\r\n const dupShowModalBtn = this.textareaClone.querySelector('.fullscreenToggleBtn.show');\r\n this.textareaClone.removeChild(dupShowModalBtn);\r\n\r\n // append textareaClone to dialog\r\n this.fullScreenDialog.dialog.appendChild(this.textareaClone);\r\n\r\n this.setupEvents();\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.setupEvents = function () {\r\n this.textareaInstance.fullScreenShowBtn.addEventListener('click', e => {\r\n this.fullScreenDialog.show();\r\n });\r\n this.fullScreenCloseBtn.addEventListener('click', e => {\r\n this.fullScreenDialog.close();\r\n });\r\n this.textareaClone.addEventListener('input', e => {\r\n // update value of orig textarea\r\n this.textareaInstance.setValue(e.target.value);\r\n });\r\n this.textareaClone.addEventListener(\r\n 'keyup',\r\n _UTIL.debounce(e => {\r\n // update value of orig textarea\r\n this.textareaInstance.setValue(e.target.value);\r\n // trigger change event of orig textarea\r\n const event = new CustomEvent('keyup', {\r\n bubbles: true,\r\n cancelable: true,\r\n detail: true,\r\n });\r\n this.textareaInstance.input.dispatchEvent(event);\r\n }, 100),\r\n );\r\n this.fullScreenDialog.onClose(() => {\r\n this.textareaInstance.toggleDisabled(false);\r\n });\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.updateCloneValue = function (value) {\r\n const inputClone = this.textareaClone.querySelector('textarea');\r\n inputClone.value = value;\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n FullscreenTextarea.prototype.disableCloseButon = function (isDisbled) {\r\n this.fullScreenCloseBtn.style.pointerEvents = isDisbled ? 'none' : 'all';\r\n };\r\n\r\n FullscreenTextarea.prototype.toggleDisabled = function (isDisbled) {\r\n const input = this.textareaClone.querySelector('textarea');\r\n input.disabled = isDisbled;\r\n };\r\n FullscreenTextarea.prototype.toggleRequired = function (isRequired) {\r\n const input = this.textareaClone.querySelector('textarea');\r\n input.required = isRequired;\r\n };\r\n\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n showcount: false,\r\n note: null,\r\n fullscreen: false,\r\n };\r\n\r\n /**\r\n * Constructor function for creating a Textarea component.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {String} options.id Id for textarea, use to link it with label. Also used for name attribute.\r\n * @param {String} options.label Text for label\r\n * @param {Boolean} [options.required] Whether textarea is required for submission\r\n * @param {String} [options.note] Text for textarea note/message, displayed underneath textarea field\r\n * @param {Boolean} [options.showCount] Whether to show char count or not\r\n * @param {String} [options.minlength] Min char count\r\n * @param {String} [options.maxlength] Max char count\r\n * @param {Boolean} [options.hidden] Whether to show or hide the input\r\n * @param {Boolean} [options.fullscreen] Enables textarea to enter fullscreen mode\r\n * @param {Boolean} [options.speechToText] Enables speech to text\r\n * @returns {Textarea}\r\n *\r\n * @example\r\n * const note = new Textarea({\r\n * label: 'Note',\r\n * id: 'note'\r\n * });\r\n */\r\n function Textarea(options) {\r\n // Data Init\r\n this.options = _DOM.separateHTMLAttribrutes(_UTIL.mergeObjects(DEFAULT_OPTIONS, options));\r\n this.options.attributes.name = this.options.attributes.id;\r\n\r\n // DOM Ref\r\n this.rootElement = null;\r\n this.inputWrap = null;\r\n this.input = null;\r\n this.fullscreen = null;\r\n this.fullScreenShowBtn = null;\r\n this.speechToTextBtn = null;\r\n\r\n this._build();\r\n this._setupEvents();\r\n }\r\n\r\n /**\r\n * Builds the Textarea component HTML\r\n *\r\n * @function\r\n */\r\n Textarea.prototype._build = function () {\r\n const classArray = ['inputGroup', 'textarea', `${this.options.attributes.id}`];\r\n this.rootElement = _DOM.createElement('div', {\r\n class: this.options.hidden ? [...classArray, 'inputGroup--hidden'] : classArray,\r\n });\r\n\r\n // INPUT & LABEL\r\n this.inputWrap = _DOM.createElement('div', { class: 'inputGroup__inputWrap' });\r\n this.input = _DOM.createElement('textarea', { ...this.options.attributes });\r\n const labelEle = _DOM.createElement('label', {\r\n text: this.options.label,\r\n for: this.options.attributes.id,\r\n });\r\n this.inputWrap.appendChild(this.input);\r\n\r\n this.rootElement.appendChild(labelEle);\r\n this.rootElement.appendChild(this.inputWrap);\r\n\r\n // INPUT NOTE\r\n if (this.options.note) {\r\n const inputNote = _DOM.createElement('div', { class: 'inputGroup__note', text: this.options.note });\r\n this.rootElement.appendChild(inputNote);\r\n }\r\n\r\n // CHAR COUNTER\r\n if (this.options.showcount) {\r\n const countMarkup = this.options.attributes.maxlength\r\n ? { html: `${0}/${this.options.attributes.maxlength}` }\r\n : { text: '0' };\r\n const inputCount = _DOM.createElement('div', { class: 'charCount', ...countMarkup });\r\n this.rootElement.appendChild(inputCount);\r\n }\r\n\r\n // FULLSCREEN MODE\r\n if (this.options.fullscreen) {\r\n this.input.classList.add('fullscreen');\r\n // add open fullscreen to orign textarea\r\n this.fullScreenShowBtn = _DOM.createElement('div', {\r\n class: ['fullscreenToggleBtn', 'show', 'iconButton'],\r\n node: Icon.getIcon('openFullScreen'),\r\n });\r\n this.rootElement.appendChild(this.fullScreenShowBtn);\r\n\r\n // build fullscreenmode\r\n this.fullscreen = new FullscreenTextarea(this);\r\n }\r\n\r\n // SPEECH TO TEXT\r\n if (this.options.speechToText) {\r\n this.input.classList.add('speechToText');\r\n this.speechToTextBtn = _DOM.createElement('div', {\r\n class: ['speechToTextBtn', 'off', 'iconButton'],\r\n node: Icon.getIcon('micOff'),\r\n });\r\n this.rootElement.appendChild(this.speechToTextBtn);\r\n\r\n // init speech to text\r\n this.speechToText = new SpeechToText(this);\r\n this.speechToText.init();\r\n }\r\n\r\n if (this.options.fullscreen || this.options.speechToText) {\r\n this.rootElement.classList.add('inputGroup--top-icons');\r\n }\r\n };\r\n\r\n /**\r\n * Sets up events for textarea\r\n *\r\n * @function\r\n */\r\n Textarea.prototype._setupEvents = function () {\r\n if (this.options.fullscreen) {\r\n this.input.addEventListener('change', e => {\r\n this.fullscreen.updateCloneValue(e.target.value);\r\n });\r\n }\r\n\r\n if (this.options.speechToText && this.speechToText.isSpeechInitialized) {\r\n this.speechToTextBtn.addEventListener('click', e => {\r\n this.speechToText.isListening = !this.speechToText.isListening;\r\n\r\n if (this.speechToText.isListening) {\r\n this.speechToText.startSpeechRecognizer(() => {\r\n // this.speechToTextBtn\r\n this.speechToTextBtn.innerHTML = '';\r\n // set icon to micOn\r\n this.speechToTextBtn.appendChild(Icon.getIcon('micOn'));\r\n // remove class 'off'\r\n this.speechToTextBtn.classList.remove('off');\r\n });\r\n } else {\r\n this.speechToText.stopSpeechRecognizer(() => {\r\n // this.speechToTextBtn\r\n this.speechToTextBtn.innerHTML = '';\r\n // set icon to micOff\r\n this.speechToTextBtn.appendChild(Icon.getIcon('micOff'));\r\n // add class 'off'\r\n this.speechToTextBtn.classList.add('off');\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Sets value of textarea\r\n *\r\n * @function\r\n * @param {String} value\r\n */\r\n Textarea.prototype.setValue = function (value) {\r\n this.input.value = value;\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue(value);\r\n }\r\n };\r\n\r\n /**\r\n * Returns value of textarea\r\n *\r\n * @function\r\n * @param {String} value\r\n */\r\n Textarea.prototype.getValue = function () {\r\n return this.input.value;\r\n };\r\n\r\n /**\r\n * Clears textarea value, sets it to ''\r\n *\r\n * @function\r\n */\r\n Textarea.prototype.clear = function () {\r\n this.input.value = '';\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue('');\r\n }\r\n };\r\n\r\n /**\r\n * Sets Custom Validity on textarea\r\n *\r\n * @function\r\n * @param {String} message Empty string will unset invalid status\r\n */\r\n Textarea.prototype.setValidtyError = function (message) {\r\n this.input.setCustomValidity(message);\r\n };\r\n\r\n /**\r\n * Sets focus to element\r\n *\r\n * @function\r\n */\r\n Textarea.prototype.setFocus = function () {\r\n this.input.focus();\r\n };\r\n\r\n /**\r\n * Toggles textarea required state, if true input is required\r\n *\r\n * @function\r\n * @param {Boolean} isRequired\r\n */\r\n Textarea.prototype.toggleRequired = function (isRequired) {\r\n this.input.required = isRequired;\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.toggleRequired(isRequired);\r\n }\r\n };\r\n\r\n /**\r\n * Toggles inputs disabled state, if true input is disabled\r\n *\r\n * @function\r\n * @param {Boolean} isDisbled\r\n */\r\n Textarea.prototype.toggleDisabled = function (isDisbled) {\r\n this.input.disabled = isDisbled;\r\n this.input.readOnly = isDisbled;\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.toggleDisabled(isDisbled);\r\n }\r\n };\r\n\r\n /**\r\n * Handles textarea change event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Textarea.prototype.onChange = function (cbFunc) {\r\n this.input.addEventListener('input', e => {\r\n if (cbFunc) cbFunc(e);\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue(e.target.value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Handles textarea keyup event\r\n *\r\n * @function\r\n * @param {Function} cbFunc Callback function to call\r\n */\r\n Textarea.prototype.onKeyup = function (cbFunc) {\r\n this.input.addEventListener('keyup', e => {\r\n if (cbFunc) cbFunc(e);\r\n\r\n if (this.options.fullscreen) {\r\n this.fullscreen.updateCloneValue(e.target.value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Renders the built Textarea element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the textarea to\r\n * @returns {Textarea} Returns the current instances for chaining\r\n */\r\n Textarea.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Textarea;\r\n});\r\n","(function (global, factory) {\r\n global.Toast = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n autoClose: false,\r\n waitDuration: null,\r\n };\r\n\r\n /**\r\n * Constructor function for Toast Notifications.\r\n *\r\n * Toast allow you to display a message to user that will not enterfear with user workflow.\r\n * || Example usage would be to show that a report is being generated.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.autoClose] if true, toast will hide after waitDuration\r\n * @param {Number} [options.waitDuration] how long to show toast, ms\r\n * @returns {Toast}\r\n */\r\n function Toast(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.closeToastButton = null;\r\n this.messageEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype._build = function () {\r\n this.dialog = new Dialog({ className: 'toast', isModal: false });\r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'toast__message',\r\n });\r\n\r\n this.closeToastButton = new Button({ icon: 'close', style: 'secondary', styleType: 'text' });\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.closeToastButton.renderTo(this.dialog.dialog);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Toast Notification element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Toast Notification to\r\n * @returns {Toast} Returns the current instances for chaining\r\n */\r\n Toast.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Toast;\r\n});\r\n","(function (global, factory) {\r\n global._DOM = factory();\r\n})(this, function () {\r\n const ACTIONCENTER = document.getElementById('actioncenter');\r\n\r\n /**\r\n * Create DOM element node and set given attributes, html/text, or nodes to append\r\n *\r\n * Examples:\r\n *\r\n * {css: 'classname'} - can be string value or an array of srings\r\n * {text: 'string of text' || 123456}\r\n * {html: '

    innerHTML

    '}\r\n * {node: elementNode} - can be a single node or an array of nodes\r\n * {[attribute]: nativeAttribute} - native HTML attributes\r\n *\r\n * @function\r\n * @param {String} tag - HTML element name\r\n * @param {Object} attributes - Attributes to be applied to element\r\n * @returns {HTMLElement} - Returns created HTML element\r\n */\r\n function createElement(tag, attributes) {\r\n const element = document.createElement(tag);\r\n const fragment = new DocumentFragment();\r\n\r\n if (attributes && typeof attributes === 'object') {\r\n let attributeName;\r\n for (attributeName in attributes) {\r\n if (!attributes[attributeName]) continue;\r\n\r\n switch (attributeName) {\r\n case 'html': {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = attributes[attributeName];\r\n\r\n const htmlFragment = new DocumentFragment();\r\n\r\n while (tempDiv.firstChild) {\r\n htmlFragment.appendChild(tempDiv.firstChild);\r\n }\r\n\r\n fragment.append(htmlFragment);\r\n break;\r\n }\r\n case 'text': {\r\n const textNode = document.createTextNode(attributes[attributeName]);\r\n fragment.append(textNode);\r\n break;\r\n }\r\n case 'node': {\r\n if (Array.isArray(attributes[attributeName])) {\r\n attributes[attributeName].forEach(att => {\r\n fragment.append(att);\r\n });\r\n } else {\r\n fragment.append(attributes[attributeName]);\r\n }\r\n break;\r\n }\r\n case 'class': {\r\n if (Array.isArray(attributes[attributeName])) {\r\n attributes[attributeName].forEach(att => {\r\n element.classList.add(att);\r\n });\r\n } else {\r\n element.classList.add(attributes[attributeName]);\r\n }\r\n break;\r\n }\r\n default: {\r\n if (typeof attributes[attributeName] === 'boolean') {\r\n element.setAttribute(attributeName, '');\r\n } else {\r\n element.setAttribute(attributeName, attributes[attributeName]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n element.append(fragment);\r\n return element;\r\n }\r\n\r\n /**\r\n * Asynchronously fetches attachment details based on the given event object.\r\n *\r\n * @async\r\n * @param {Object} file File object\r\n * @returns {Promise} Returns a Promise that resolves to an object containing attachment details.\r\n * @returns {Object} .attachmentObj - An object containing the description and type of the attachment, as well as its ArrayBuffer.\r\n * @returns {string} .attachmentObj.description - The name of the attachment file.\r\n * @returns {string} .attachmentObj.type - The file extension of the attachment.\r\n * @returns {ArrayBuffer} .attachmentObj.arrayBuffer - The ArrayBuffer of the attachment file.\r\n * @throws {Error} Throws an error if unable to fetch attachment details.\r\n */\r\n async function getAttachmentDetails(file) {\r\n const attachmentObj = {};\r\n const attachmentFile = file;\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n\r\n const response = new Response(attachmentFile);\r\n const arrayBuffer = await response.arrayBuffer();\r\n\r\n // convert arrayBuffer to a base64 encoded string\r\n const bytes = new Uint8Array(arrayBuffer);\r\n const binary = Array.from(bytes).reduce((acc, byte) => {\r\n return acc + String.fromCharCode(byte);\r\n }, '');\r\n const abString = window.btoa(binary);\r\n\r\n attachmentObj.attachment = abString;\r\n\r\n return attachmentObj;\r\n }\r\n\r\n /**\r\n * Test if node is reference-free\r\n *\r\n * @function\r\n * @param {HTMLElement} node - HTML element\r\n * @returns {Boolean} - Returns whether node is reference free or not\r\n */\r\n function isReferenceFree(node) {\r\n return (document.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) === 0;\r\n }\r\n\r\n /**\r\n * Separates valid HTML attributes from options obj\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attributes\r\n *\r\n * @function\r\n * @param {Object} options - Options object\r\n * @return {Object} - Separated options object\r\n */\r\n function separateHTMLAttribrutes(options) {\r\n const props = [\r\n 'accept',\r\n 'alt',\r\n 'autocomplete',\r\n 'checked',\r\n 'disabled',\r\n 'form',\r\n 'id',\r\n 'list',\r\n 'max',\r\n 'maxlength',\r\n 'min',\r\n 'minlength',\r\n 'multiple',\r\n 'name',\r\n 'pattern',\r\n 'placeholder',\r\n 'readonly',\r\n 'required',\r\n 'size',\r\n 'src',\r\n 'type',\r\n 'value',\r\n ];\r\n\r\n const [a, b] = Object.entries(options).reduce(\r\n ([matching, leftover], [key, value]) =>\r\n props.includes(key) || key.startsWith('data-')\r\n ? [Object.assign(matching, { [key]: value }), leftover]\r\n : [matching, Object.assign(leftover, { [key]: value })],\r\n [{}, {}],\r\n );\r\n\r\n return { ...b, attributes: { ...a } };\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function setActiveModuleAttribute(appName) {\r\n ACTIONCENTER.setAttribute('data-active-module', appName);\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function setActiveModuleSectionAttribute(sectionName) {\r\n ACTIONCENTER.setAttribute('data-active-section', sectionName);\r\n }\r\n\r\n /**\r\n * Checks if a given string contains HTML tags.\r\n *\r\n * @param {String} str - The string to be checked for HTML tags.\r\n * @returns {Boolean} - True if the string contains HTML tags, false otherwise.\r\n */\r\n function stringContainsHTML(str) {\r\n const regExp = /<[^>]*>/g;\r\n return regExp.test(str);\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function scrollToTop() {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }\r\n\r\n return {\r\n // DOM ref\r\n ACTIONCENTER,\r\n setActiveModuleAttribute,\r\n setActiveModuleSectionAttribute,\r\n // methods\r\n createElement,\r\n getAttachmentDetails,\r\n isReferenceFree,\r\n separateHTMLAttribrutes,\r\n stringContainsHTML,\r\n scrollToTop,\r\n };\r\n});\r\n","(function (global, factory) {\r\n global._UTIL = factory();\r\n})(this, function () {\r\n /**\r\n * Auto-increments the numeric suffix of an identifier string. If the provided string\r\n * does not end in a hyphen followed by a number, it appends '-1'. If it does end\r\n * with a number, the number is incremented by one.\r\n *\r\n * This function is useful for automatically generating incremented ID values in\r\n * scenarios where unique and sequential identifiers are needed.\r\n *\r\n * @param {string} str - The input string which may or may not end with a numeric suffix.\r\n * @returns {string} The input string\r\n *\r\n * @example\r\n * autoIncrementIdString('example');\r\n * //* returns 'example-1'\r\n *\r\n * @example\r\n * autoIncrementIdString('example-4');\r\n * //* returns 'example-5'\r\n */\r\n function autoIncrementId(str) {\r\n // Regular expression to match the pattern \"-number\" at the end of the string\r\n const regex = /-(\\d+)$/;\r\n\r\n // Check if the string matches the pattern\r\n const match = str.match(regex);\r\n\r\n if (match) {\r\n // If it matches, increment the number and return the string\r\n const number = parseInt(match[1], 10) + 1;\r\n return str.replace(regex, `-${number}`);\r\n } else {\r\n // If it doesn't match, append \"-1\" to the string\r\n return `${str}-1`;\r\n }\r\n }\r\n\r\n /**\r\n * Allows you to use async await with setTimeout\r\n *\r\n * @param {number} ms The number of milliseconds to delay.\r\n * @param {Function} callback The callback function to execute after the delay.\r\n * @returns {Promise} A promise that resolves after the specified delay.\r\n */\r\n function asyncSetTimeout(callback, ms) {\r\n let timeoutId;\r\n\r\n const promise = new Promise(resolve => {\r\n timeoutId = setTimeout(() => {\r\n callback();\r\n resolve();\r\n clearTimeout(timeoutId);\r\n }, ms);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n /**\r\n * Creates an instance of AsyncQueue for managing and sending updates asynchronously.\r\n *\r\n * @constructor\r\n * @param {string} apiEndpoint - The endpoint URL where updates will be sent.\r\n * @param {number} [maxQueueSize=10] - The maximum number of updates before automatically sending them.\r\n */\r\n function AsyncQueue(apiEndpoint, maxQueueSize = 10, onSendComplete = () => {}) {\r\n this.apiEndpoint = apiEndpoint;\r\n this.maxQueueSize = maxQueueSize;\r\n this.onSendComplete = onSendComplete;\r\n\r\n this.queue = {};\r\n this.queueLength = 0;\r\n this.failedUpdates = [];\r\n this.isSending = false;\r\n }\r\n\r\n /**\r\n * Adds an update to the queue. Automatically sends updates if the queue reaches maxQueueSize.\r\n *\r\n * @param {string} inputId - The identifier for the input being updated.\r\n * @param {any} newValue - The new value for the input.\r\n */\r\n AsyncQueue.prototype.addUpdate = function (updateData) {\r\n this.queue[updateData.id] = updateData.data;\r\n this.queueLength = Object.keys(this.queue).length;\r\n\r\n if (this.queueLength >= this.maxQueueSize) {\r\n this.sendUpdates();\r\n }\r\n };\r\n\r\n /**\r\n * Sends updates from the queue to the server endpoint. Can be forced to send all updates regardless of queue size.\r\n *\r\n * @param {boolean} [force=false] - Whether to force sending of updates regardless of the current queue size.\r\n */\r\n AsyncQueue.prototype.sendUpdates = async function (forceUpdate = false) {\r\n if (this.queueLength === 0 || (this.isSending && !forceUpdate)) {\r\n this.onSendComplete([]);\r\n return;\r\n }\r\n\r\n this.isSending = true;\r\n\r\n const updatesToSend = Object.values(this.queue);\r\n this.queue = {};\r\n this.queueLength = 0;\r\n\r\n const sendPromises = updatesToSend.map(async update => {\r\n try {\r\n const response = await _UTIL.fetchData(this.apiEndpoint, update);\r\n return { success: true, data: response, update };\r\n } catch (error) {\r\n console.error('Error sending update:', update, error);\r\n this.failedUpdates.push(update);\r\n return { success: false, error: error.message, update };\r\n }\r\n });\r\n\r\n const results = await Promise.all(sendPromises);\r\n this.isSending = false;\r\n this.onSendComplete(results);\r\n };\r\n\r\n /**\r\n * Sets the callback function to be executed when sending data is complete.\r\n *\r\n * @param {Function} callback - The callback function to be called when sending is complete.\r\n * @returns {void}\r\n */\r\n AsyncQueue.prototype.setSendCompleteCallback = function (callback) {\r\n this.onSendComplete = callback;\r\n };\r\n\r\n /**\r\n * Immediately forces sending of all updates in the queue, regardless of queue size.\r\n */\r\n AsyncQueue.prototype.forceSendUpdates = async function () {\r\n await this.sendUpdates(true);\r\n };\r\n\r\n /**\r\n * Converts a camelCase string to a title case string with spaces.\r\n *\r\n * @param {string} camelCaseStr - The camelCase string to be converted.\r\n * @returns {string} The converted string in title case with spaces.\r\n *\r\n * @example\r\n * // returns 'Hello There World'\r\n * convertCamelCaseToTitle('helloThereWorld');\r\n */\r\n function convertCamelCaseToTitle(camelCaseStr) {\r\n // Add a space before each uppercase letter and trim the result\r\n let spacedStr = camelCaseStr.replace(/([A-Z])/g, ' $1').trim();\r\n\r\n // Capitalize the first letter and concatenate with the rest of the string\r\n return spacedStr.charAt(0).toUpperCase() + spacedStr.slice(1);\r\n }\r\n\r\n function connectionWatch() {\r\n if ($.session.watchingConnection) return;\r\n\r\n const statusPopup = new Dialog({ className: 'connectionWatchStatusPopup' });\r\n const statusMessage = _DOM.createElement('p');\r\n statusPopup.dialog.appendChild(statusMessage);\r\n statusPopup.renderTo(document.body);\r\n\r\n window.addEventListener('offline', event => {\r\n statusMessage.innerText = 'The network connection has been lost.';\r\n statusPopup.show();\r\n });\r\n\r\n window.addEventListener('online', event => {\r\n statusMessage.innerText = 'You are now connected to the network.';\r\n setTimeout(() => {\r\n statusPopup.close();\r\n }, 3000)\r\n });\r\n\r\n console.clear();\r\n console.log('connection watch enabled');\r\n $.session.watchingConnection = true;\r\n }\r\n\r\n /**\r\n * Debounces a function, ensuring that it's not called until after the specified\r\n * amount of time has passed since the last time it was invoked.\r\n *\r\n * @function\r\n * @param {Function} func - The function to debounce.\r\n * @param {Number} wait - The number of milliseconds to delay the function\r\n * @returns {Function} - Returns the debounced version of the provided function\r\n */\r\n function debounce(func, wait) {\r\n let timeout;\r\n\r\n return function executedFunction(...args) {\r\n const context = this;\r\n\r\n const later = function () {\r\n timeout = null;\r\n func.apply(context, args);\r\n };\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n }\r\n\r\n /**\r\n * Ajax call using native Fetch API\r\n *\r\n * @function\r\n * @param {String} service\r\n * @param {Object} [retrieveData]\r\n * @returns {Object}\r\n */\r\n async function fetchData(service, retrieveData) {\r\n const URL_BASE = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}`;\r\n const URL = `${URL_BASE}/${service}/`;\r\n\r\n try {\r\n let response = await fetch(URL, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ token: $.session.Token, ...retrieveData }),\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error('Issue with network, response was not OK');\r\n }\r\n\r\n let data = await response.json();\r\n\r\n return data;\r\n } catch (error) {\r\n console.log(`There was a problem with ${service}`, error.message);\r\n throw error;\r\n }\r\n }\r\n\r\n function getDeviceType() {\r\n const ua = navigator.userAgent;\r\n\r\n // Patterns to detect mobile and tablet devices\r\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua);\r\n const isTablet = /iPad|Android/i.test(ua) && !/Mobile/i.test(ua);\r\n\r\n if (isMobile) {\r\n return isTablet ? 'TABLET' : 'MOBILE';\r\n } else {\r\n return 'DESKTOP';\r\n }\r\n }\r\n\r\n /**\r\n * Provides methods to interact with the browser's localStorage.\r\n * It allows you to get and set values while handling JSON serialization and deserialization automatically.\r\n *\r\n * @namespace localStorageHandler\r\n */\r\n const localStorageHandler = {\r\n /**\r\n * Retrieves a value from local storage\r\n *\r\n * @function\r\n * @memberof localStorageHandler\r\n * @param {String} key\r\n * @returns {Any|Null}\r\n */\r\n get(key) {\r\n try {\r\n // storedValue = {storage_key1:storage_value,storage_key2:value}\r\n const storedValue = localStorage.getItem(`anywstate_${$.session.UserId}`);\r\n if (storedValue) {\r\n try {\r\n const state = JSON.parse(storedValue);\r\n return state ? state[key] : null;\r\n } catch (error) {\r\n return storedValue;\r\n }\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n console.log('An error occurred when getting the value from local storage', error);\r\n }\r\n },\r\n /**\r\n * Sets a value to local storage\r\n *\r\n * @function\r\n * @memberof localStorageHandler\r\n * @param {String} key\r\n * @param {Any} value\r\n */\r\n set(key, value) {\r\n try {\r\n if (typeof value === 'object') {\r\n value = JSON.parse(value);\r\n }\r\n\r\n // get current ls value\r\n const storedValue = localStorage.getItem(`anywstate_${$.session.UserId}`);\r\n if (!storedValue) {\r\n storedValue = {};\r\n }\r\n // set new key/value pair\r\n storedValue[key] = value;\r\n\r\n // update with new value\r\n const updatedValue = JSON.stringify(storedValue);\r\n localStorage.setItem(`anywstate_${$.session.UserId}`, updatedValue);\r\n } catch (error) {\r\n console.log('An error occurred when setting the value to local storage', error);\r\n }\r\n },\r\n };\r\n\r\n /**\r\n * Merge two objects together, baseObject and mergeObject share same prop names they will be overridden\r\n * inside the baseObject.\r\n *\r\n * @function\r\n * @param {Object} baseObject\r\n * @param {Object} mergeObject\r\n * @return {Object} - Merged options object\r\n */\r\n function mergeObjects(baseObject, mergeObject) {\r\n return Object.assign({}, baseObject, mergeObject);\r\n }\r\n\r\n /**\r\n * Pads a number with a leading zero if it is less than 10.\r\n *\r\n * @param {number} number - The number to pad.\r\n * @return {string} - The padded number as a string.\r\n */\r\n function padNumberWithZero(number) {\r\n return number < 10 ? '0' + number : number.toString();\r\n }\r\n\r\n /**\r\n * Removes and replaces certain characters that can't be saved into the DB.\r\n * @param {string} note Text that needs to be converted to a format that will save in the DB.\r\n * @returns {string} Returns the note that can now be saved into the DB.\r\n */\r\n function removeUnsavableNoteText(note) {\r\n if (note == null) return null;\r\n if (note === '') return '';\r\n\r\n // Remove backslashes\r\n if (note.indexOf('\\\\') != -1) {\r\n note = note.replace(/\\\\/g, '');\r\n }\r\n\r\n // Replace double quotes with the same double quotes (seems unnecessary but kept for intent)\r\n if (note.indexOf('\"') != -1) {\r\n note = note.replace(/\\\"/g, '\"');\r\n }\r\n\r\n // Escape single quotes\r\n if (note.indexOf(\"'\") != -1) {\r\n note = note.replace(/'/g, \"''\");\r\n }\r\n\r\n // Remove special tab characters and actual tab characters\r\n note = note.replace(/ |\\t/g, '');\r\n\r\n return note;\r\n }\r\n\r\n /**\r\n * Sorts an Array of Objects by given property, currently property must be a string\r\n *\r\n * @function\r\n * @param {String} sortProp\r\n * @return {Function} - sort comparator function\r\n */\r\n function sortByProperty(sortProp) {\r\n return function (a, b) {\r\n const aValue = a[sortProp] || '';\r\n const bValue = b[sortProp] || '';\r\n\r\n // srings only\r\n return aValue.localeCompare(bValue);\r\n };\r\n }\r\n\r\n /**\r\n * Separate props and methods from obj\r\n *\r\n * @function\r\n * @param {Object} dirtyObj - Object to split\r\n * @param {Array} props - Object props to isolate\r\n * @return {Object} - Separated options object\r\n */\r\n function splitObjectByPropNames(dirtyObj, props) {\r\n const [a, b] = Object.entries(dirtyObj).reduce(\r\n ([matching, leftover], [key, value]) =>\r\n props.includes(key)\r\n ? [Object.assign(matching, { [key]: value }), leftover]\r\n : [matching, Object.assign(leftover, { [key]: value })],\r\n [{}, {}],\r\n );\r\n\r\n return [{ ...a }, { ...b }];\r\n }\r\n\r\n /**\r\n * Truncates a filename to a specified maximum length by removing characters from the middle.\r\n * Appends an ellipsis ('...') to indicate truncation.\r\n *\r\n * @function\r\n * @param {string} filename - The original filename to truncate.\r\n * @param {number} [maxLength=20] - The maximum length for the truncated filename. Default is 20.\r\n *\r\n * @returns {string} The truncated filename with an ellipsis in the middle.\r\n *\r\n * @example\r\n * const original = 'reallyLongfilename.png';\r\n * const truncated = truncateFilename(original, 15);\r\n */\r\n function truncateFilename(filename, maxLength = 20) {\r\n const fileExtension = filename.split('.').pop();\r\n\r\n // 3 characters are reserved for \"...\"\r\n const maxMainLength = maxLength - fileExtension.length - 3;\r\n\r\n if (filename.length > maxLength) {\r\n const firstPartLength = Math.floor(maxMainLength / 2);\r\n const secondPartLength = maxMainLength - firstPartLength;\r\n\r\n // Extract the first and last portions of the main part of the filename\r\n const firstPart = filename.substring(0, firstPartLength);\r\n const secondPart = filename.substring(\r\n filename.length - fileExtension.length - secondPartLength,\r\n filename.length - fileExtension.length,\r\n );\r\n\r\n return `${firstPart}...${secondPart}${fileExtension}`;\r\n }\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Watchs for the value of given variable to change\r\n *\r\n * @namespace watchVariable\r\n */\r\n function watchVariable(initialValue, callback) {\r\n let value = initialValue;\r\n\r\n return {\r\n getValue() {\r\n return value;\r\n },\r\n setValue(newValue) {\r\n if (value !== newValue) {\r\n callback(value, newValue);\r\n }\r\n value = newValue;\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Validates the file type based on the provided regular expression pattern.\r\n *\r\n * @param {Event} event - The Event object, commonly from an input element of type 'file'.\r\n * @param {RegExp} forbiddenTypesPattern - The regular expression pattern to match forbidden file types.\r\n * @returns {boolean} Returns true if the file type is valid, false otherwise.\r\n */\r\n function validateFileType(event, forbiddenTypesPattern) {\r\n const fileType = event.target.files[0]?.type;\r\n\r\n if (!fileType) {\r\n console.warn('No file selected.');\r\n return false;\r\n }\r\n\r\n if (forbiddenTypesPattern.test(fileType)) {\r\n alert('This application currently does not accept the selected file type.');\r\n event.target.value = '';\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n return {\r\n autoIncrementId,\r\n asyncSetTimeout,\r\n AsyncQueue,\r\n connectionWatch,\r\n convertCamelCaseToTitle,\r\n debounce,\r\n getDeviceType,\r\n fetchData,\r\n localStorageHandler,\r\n mergeObjects,\r\n padNumberWithZero,\r\n removeUnsavableNoteText,\r\n sortByProperty,\r\n splitObjectByPropNames,\r\n truncateFilename,\r\n watchVariable,\r\n validateFileType,\r\n };\r\n});\r\n","const cnAttachment = (function () {\r\n // Elements test\r\n let attachmentList, attachmentInput, attachmentContainer, addAttachmentBtn, removeAttachmentBtn;\r\n let reviewAttachmentList, newAttachmentList;\r\n // Data\r\n let cnId;\r\n let attachmentsToDelete, reviewAttachmentArray;\r\n\r\n let isSSANote;\r\n let isBatched;\r\n\r\n const allowedFileTypes = [];\r\n\r\n function attachmentPopup() {\r\n const popup = POPUP.build({\r\n header: 'Attachments',\r\n id: 'cnAttachmentPopup',\r\n });\r\n\r\n addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: addNewAttachment,\r\n });\r\n addAttachmentBtn.type = 'button';\r\n removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n addRemoveAttachmentEventListener(removeAttachmentBtn);\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveAction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n if (isBatched === '' || isBatched === null) {\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n }\r\n\r\n attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.onchange = event => fileValidation(event.target);\r\n\r\n attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n if (isBatched === '' || isBatched === null) {\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n }\r\n // attachmentContainer.appendChild(addAttachmentBtn);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n if (isBatched === '' || isBatched === null) {\r\n popup.appendChild(addAttachmentBtn);\r\n }\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n\r\n function addNewAttachment() {\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer.getElementsByTagName('input')[0].onchange = event =>\r\n fileValidation(event.target);\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n\r\n function saveAction() {\r\n deleteExistingAttachment();\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n Promise.all(attachmentProms).then(res => {\r\n attachmentsToDelete.forEach(remAttachment => {\r\n reviewAttachmentArray = reviewAttachmentArray.filter(\r\n attachment => attachment.attachmentId !== remAttachment,\r\n );\r\n });\r\n //\r\n if (isSSANote) {\r\n noteSSA.addAttachmentsToCN(attachmentArray, reviewAttachmentArray);\r\n } else {\r\n note.addAttachmentsToCN(attachmentArray, reviewAttachmentArray);\r\n }\r\n });\r\n // (isSSANote) ? noteSSA.addAttachmentsToCN(attachmentArray, reviewAttachmentArray) : note.addAttachmentsToCN(attachmentArray, reviewAttachmentArray);\r\n }\r\n\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(attachment => attachment !== attachmentId);\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function deleteExistingAttachment() {\r\n attachmentsToDelete.forEach(attachment => {\r\n caseNotesAjax.deleteCaseNoteAttachment(cnId, attachment);\r\n });\r\n }\r\n\r\n function populateExistingAttachments(reviewAttachments) {\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n //console.table(reviewAttachments)\r\n\r\n reviewAttachments.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentId);\r\n fileContainer.setAttribute('delete', false);\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n if (isBatched === '' || isBatched === null) {\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n }\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n caseNotesAjax.viewCaseNoteAttachment(attachmentId);\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n\r\n function populateNewAttachments(newAttachments) {\r\n newAttachments.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('newAttachmentContainer');\r\n if (isSSANote) {\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => {\r\n const attachmentName =\r\n event.target.parentElement.getElementsByTagName('p')[0].innerText;\r\n noteSSA.removeAttachmentFromTempAttachmentArray(attachmentName);\r\n event.target.parentElement.remove();\r\n },\r\n });\r\n } else {\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => {\r\n const attachmentName =\r\n event.target.parentElement.getElementsByTagName('p')[0].innerText;\r\n note.removeAttachmentFromTempAttachmentArray(attachmentName);\r\n event.target.parentElement.remove();\r\n },\r\n });\r\n }\r\n\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n if (isBatched === '' || isBatched === null) {\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n }\r\n fileContainer.appendChild(file);\r\n newAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n\r\n function init(newAttachments, reviewAttachments, cnBatched, caseNoteId = null, SSANote = false) {\r\n isSSANote = SSANote;\r\n cnId = caseNoteId;\r\n isBatched = cnBatched;\r\n attachmentsToDelete = [];\r\n reviewAttachmentArray = reviewAttachments;\r\n attachmentPopup();\r\n if (newAttachments.length !== 0) populateNewAttachments(newAttachments);\r\n if (reviewAttachments.length !== 0) populateExistingAttachments(reviewAttachments);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const cnInsertPhrases = (function() {\r\n //DOM\r\n let phraseDropdown;\r\n let allPhraseCheckbox;\r\n let phraseNoteTextInput;\r\n let insertPhraseBtn;\r\n const fullPhraseDisplay = document.createElement(\"p\");\r\n fullPhraseDisplay.classList.add(\"fullPhraseDisplay\")\r\n //data\r\n let customPhrases = {};\r\n let selectedPhraseId;\r\n let currentNote;\r\n let cursorSelection;\r\n let showAllPhrases;\r\n\r\n let isSSANote;\r\n\r\n function show(note, SSANote = false) {\r\n isSSANote = SSANote;\r\n currentNote = note;\r\n cursorSelection = null;\r\n selectedPhraseId = null;\r\n fullPhraseDisplay.innerHTML = \"\";\r\n switch (cn_PhraseLS.get()) {\r\n case \"true\":\r\n showAllPhrases = true;\r\n break;\r\n case \"false\":\r\n showAllPhrases = false;\r\n break;\r\n default:\r\n showAllPhrases = false;\r\n break;\r\n }\r\n createPopup();\r\n getData(populateDropdown);\r\n }\r\n\r\n function getData(cb) {\r\n showAll = showAllPhrases === true ? \"Y\" : \"N\";\r\n const getPhrases = new Promise(function(resolve, reject) {\r\n caseNotesAjax.getCustomPhrases(showAll, res => {\r\n res.forEach(phrase => {\r\n let obj = { phrase: phrase.phrase, shortcut: phrase.phrase_shortcut };\r\n customPhrases[phrase.phrase_id] = obj;\r\n });\r\n resolve(\"Done\");\r\n });\r\n });\r\n Promise.all([getPhrases]).then(function() {\r\n cb();\r\n });\r\n }\r\n\r\n function createPopup() {\r\n let phrasesPopup = POPUP.build({\r\n header: \"Phrases\",\r\n hideX: true,\r\n id: \"phrasesPopup\"\r\n });\r\n\r\n phraseDropdown = dropdown.build({\r\n label: \"Phrases\",\r\n dropdownId: \"phraseDropdown\"\r\n });\r\n\r\n phraseNoteTextInput = input.build({\r\n label: \"Note\",\r\n type: \"textarea\",\r\n style: \"secondary\",\r\n value: currentNote\r\n });\r\n\r\n insertPhraseBtn = button.build({\r\n id: \"phraseInsertBtn\",\r\n text: \"insert\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: function() {\r\n insertPhrase();\r\n }\r\n });\r\n\r\n let doneBtn = button.build({\r\n id: \"phraseDoneBtn\",\r\n text: \"done\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: function() {\r\n phraseDone();\r\n }\r\n });\r\n\r\n let cancelBtn = button.build({\r\n id: \"phraseCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: function() {\r\n POPUP.hide(phrasesPopup);\r\n }\r\n });\r\n\r\n let allPhraseRadioDiv = document.createElement(\"div\")\r\n allPhraseRadioDiv.classList.add(\"cn__phraseRadioDiv\")\r\n allPhraseRadioDiv.innerHTML = `\r\n
    My Phrases
    \r\n
    All Phrases
    \r\n `\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n phrasesPopup.appendChild(allPhraseRadioDiv);\r\n phrasesPopup.appendChild(phraseDropdown);\r\n phrasesPopup.appendChild(fullPhraseDisplay);\r\n phrasesPopup.appendChild(insertPhraseBtn);\r\n phrasesPopup.appendChild(phraseNoteTextInput);\r\n phrasesPopup.appendChild(btnWrap);\r\n\r\n \r\n POPUP.show(phrasesPopup);\r\n addEventListeners();\r\n initialCheckRadio()\r\n }\r\n\r\n function initialCheckRadio() {\r\n let myPhraseRadio = document.getElementById(\"myPhraseRadio\")\r\n let allPhraseRadio = document.getElementById(\"allPhraseRadio\")\r\n if (showAllPhrases) {\r\n allPhraseRadio.checked = true;\r\n } else myPhraseRadio.checked = true;\r\n }\r\n\r\n function populateDropdown() {\r\n let data = Object.keys(customPhrases).map(key => {\r\n let fullPhrase = customPhrases[key].phrase;\r\n let trimedPhrase =\r\n fullPhrase.length > 35\r\n ? fullPhrase.slice(0, 35) + \" . . .\"\r\n : fullPhrase;\r\n return {\r\n value: key,\r\n text: `${customPhrases[key].shortcut} - ${trimedPhrase}`\r\n };\r\n });\r\n data.unshift({ value: \"0\", text: \"\" }); //ADD Blank value\r\n\r\n data.sort(function(a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n dropdown.populate(phraseDropdown, data);\r\n }\r\n\r\n function addEventListeners() {\r\n phraseDropdown.addEventListener(\"change\", event => {\r\n selectedPhraseId = event.target.options[event.target.selectedIndex].value;\r\n fullPhraseDisplay.innerHTML =\r\n selectedPhraseId === \"0\" ? \"\" : customPhrases[selectedPhraseId].phrase;\r\n });\r\n phraseNoteTextInput.addEventListener(\"mouseup\", event => {\r\n cursorSelection = {\r\n start: event.target.selectionStart,\r\n end: event.target.selectionEnd\r\n };\r\n });\r\n phraseNoteTextInput.addEventListener(\"keyup\", event => {\r\n currentNote = event.target.value;\r\n cursorSelection = {\r\n start: event.target.selectionStart,\r\n end: event.target.selectionEnd\r\n };\r\n });\r\n\r\n let myPhraseRadio = document.getElementById(\"myPhraseRadio\")\r\n myPhraseRadio.addEventListener(\"change\", event => {\r\n showAllPhrases = false;\r\n cn_PhraseLS.set(showAllPhrases)\r\n customPhrases = {};\r\n selectedPhraseId = null;\r\n fullPhraseDisplay.innerHTML = \"\";\r\n getData(populateDropdown);\r\n })\r\n let allPhraseRadio = document.getElementById(\"allPhraseRadio\")\r\n allPhraseRadio.addEventListener(\"change\", event => {\r\n showAllPhrases = true;\r\n cn_PhraseLS.set(showAllPhrases)\r\n customPhrases = {};\r\n selectedPhraseId = null;\r\n fullPhraseDisplay.innerHTML = \"\";\r\n getData(populateDropdown);\r\n })\r\n }\r\n\r\n function insertPhrase() {\r\n if (selectedPhraseId === \"0\") return;\r\n let insertPoint = [];\r\n if (cursorSelection === null) {\r\n insertPoint = [currentNote.length, currentNote.length];\r\n } else {\r\n insertPoint = [cursorSelection.start, cursorSelection.end];\r\n }\r\n let noteStart = currentNote.substr(0, insertPoint[0]).trim();\r\n let noteInsert = customPhrases[selectedPhraseId].phrase.trim();\r\n let noteEnd = currentNote.substr(insertPoint[1]).trim();\r\n\r\n currentNote = `${noteStart} ${noteInsert} ${noteEnd}`.trim();\r\n phraseNoteTextInput.querySelector(\r\n \".input-field__input\"\r\n ).value = currentNote;\r\n }\r\n\r\n function phraseDone() {\r\n currentNote = phraseNoteTextInput.querySelector(\".input-field__input\")\r\n .value;\r\n POPUP.hide(phrasesPopup);\r\n let cnNoteField = document.getElementById(\"noteTextField\");\r\n cnNoteField.value = currentNote;\r\n\r\n (isSSANote) ? noteSSA.cnPhrasesDone(currentNote) : note.cnPhrasesDone(currentNote)\r\n }\r\n\r\n const cn_PhraseLS = (function() {\r\n function get() {\r\n let user = $.session.UserId\r\n return localStorage.getItem(`user:${user} cn_showAllPhrases`)\r\n }\r\n function set(showAll) {\r\n let user = $.session.UserId\r\n localStorage.setItem(`user:${user} cn_showAllPhrases`, showAll)\r\n }\r\n return {\r\n get: get,\r\n set: set\r\n }\r\n })()\r\n\r\n return {\r\n show,\r\n phraseDone\r\n };\r\n})();\r\n","var newNote = (function () {\r\n let activeConsumers;\r\n // Action Nav Event Handler\r\n // ----------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n\r\n initPageLoad();\r\n\r\n note.moveConsumerToConsumerSection();\r\n note.enableCard();\r\n\r\n DOM.toggleNavLayout();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('casenotes');\r\n\r\n break;\r\n }\r\n }\r\n }\r\n //Save Attachments\r\n function saveAttachments(caseNoteId, attachments, saveAndNew) {\r\n const saveAttachmentPromArray = [];\r\n attachments.forEach(attachment => {\r\n const promise = new Promise((resolve, reject) => {\r\n caseNotesAjax.addCaseNoteAttachment(\r\n caseNoteId,\r\n attachment.description,\r\n attachment.type,\r\n attachment.arrayBuffer,\r\n res => {\r\n resolve('saved');\r\n },\r\n );\r\n });\r\n saveAttachmentPromArray.push(promise);\r\n });\r\n Promise.all(saveAttachmentPromArray).then(() => {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n // Save Note\r\n // ----------------------------------------\r\n /**\r\n *\r\n * @param {object} saveData\r\n * @param {*} overlapData\r\n * @param {*} selectedConsumerIds\r\n * @param {boolean} saveAndNew TRUE = Do Not go to review page, build a blank casenote so user can enter another note\r\n */\r\n function saveGroup(saveData, overlapData, selectedConsumerIds, saveAndNew) {\r\n var groupSavePromises = [];\r\n selectedConsumerIds.forEach(cId => {\r\n groupSavePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n overlapData.consumerId = cId;\r\n\r\n if (saveData.casenotetraveltime === 'N') {\r\n saveData.casenotetraveltime = 0;\r\n }\r\n\r\n caseNotesAjax.caseNoteOverlapCheck(overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n //If the warning popup is already being displayed, skip and just save the record.\r\n //This prevents a popup from being created for each consumer being saved.\r\n if (document.getElementById('warningPopup')) {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n return;\r\n }\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n } else {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n }\r\n });\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(groupSavePromises)\r\n .then(function (res) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n /**\r\n *\r\n * @param {object} saveData GEN Save Data\r\n * @param {array} attachments\r\n * @param {boolean} saveAndNew TRUE = Do Not go to review page, build a blank casenote so user can enter another note\r\n */\r\n function saveSingle(saveData, attachments, saveAndNew) {\r\n pendingSave.show();\r\n const parser = new DOMParser();\r\n caseNotesAjax.saveSingleCaseNote(saveData, function (results) {\r\n //SKIP ATTACHMENTS FOR ADVISOR\r\n if ($.session.applicationName === 'Advisor') {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n } else {\r\n if (results !== null) {\r\n const saveResponseDoc = parser.parseFromString(results, 'text/xml');\r\n const caseNoteId = saveResponseDoc.getElementsByTagName('caseNoteId')[0].childNodes[0].nodeValue;\r\n saveAttachments(caseNoteId, attachments, saveAndNew);\r\n } else {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n note.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n /**\r\n *\r\n * @param {object} opts Save Note Options\r\n * @param {boolean} opts.saveAndNew TRUE = Do Not go to review page, build a blank casenote so user can enter another note\r\n * @param {*} attachments\r\n */\r\n function saveNote(opts, attachments) {\r\n var isGroup = opts.selectedConsumerIds.length > 1 ? true : false;\r\n\r\n if (isGroup) {\r\n caseNotesAjax.getGroupNoteId(function handleGettingGroupNoteId(results) {\r\n opts.saveData.groupNoteId = results[0].groupNoteId;\r\n saveGroup(opts.saveData, opts.overlapData, opts.selectedConsumerIds, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.selectedConsumerIds.forEach(id => {\r\n opts.overlapData.consumerId = id;\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function warningPopup(text, warningBtnFunction) {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n warningBtnFunction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(continueBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n function checkMicError() {\r\n const NUSAI_popup = document.querySelector('.NUSAI_popupMessageContainer.error');\r\n if (NUSAI_popup) {\r\n const parent = NUSAI_popup.parentElement;\r\n parent.removeChild(NUSAI_popup);\r\n document.getElementById('NUSAI_CommandBar_Container').remove();\r\n }\r\n }\r\n\r\n // ----------------------------------------\r\n function initPageLoad(dashboardConsumer) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n // if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n var noConsumerMessage = document.createElement('h3');\r\n noConsumerMessage.setAttribute('id', 'noConsumerMessage');\r\n noConsumerMessage.innerHTML = `Please select a consumer to get started.`;\r\n\r\n var container = document.createElement('div');\r\n container.classList.add('caseNotes');\r\n\r\n var noteCard = note.buildCaseNoteCard();\r\n var consumersList = note.buildConsumersList();\r\n\r\n container.appendChild(noConsumerMessage);\r\n container.appendChild(consumersList);\r\n container.appendChild(noteCard);\r\n DOM.ACTIONCENTER.insertBefore(container, DOM.ACTIONCENTER.childNodes[0]);\r\n\r\n note.disableCard(); // disabled until consumers are moved\r\n\r\n note.checkRequiredFields();\r\n note.setPermissions();\r\n window.setTimeout(checkMicError, 3000);\r\n }\r\n\r\n function init(dashboardConsumer) {\r\n if (dashboardConsumer) {\r\n initPageLoad(dashboardConsumer);\r\n } else {\r\n setActiveModuleSectionAttribute('caseNotes-new');\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.showMiniRoster();\r\n }\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n saveNote,\r\n checkMicError,\r\n init,\r\n };\r\n})();\r\n","var newNoteSSA = (function () {\r\n let selectedConsumers;\r\n let activeConsumers;\r\n // Action Nav Event Handler\r\n // ----------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n if (activeConsumers.length === 1) {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n initPageLoad(activeConsumers[0].id);\r\n var isGroup = false;\r\n noteSSA.moveConsumerToConsumerSection(activeConsumers, isGroup);\r\n noteSSA.enableCard();\r\n DOM.toggleNavLayout();\r\n } else {\r\n // if user selects a consumer without deleting the previously selected consumer\r\n\r\n // 1. get currently selected consumer\r\n var selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n var consumerName = activeConsumers[activeConsumers.length - 1].card.innerText.replace(\r\n /\\s/g,\r\n '',\r\n );\r\n var consumerNameArr = consumerName.split(',');\r\n var consumerFN = consumerNameArr[1];\r\n var consumerLN = consumerNameArr[0];\r\n\r\n // 2. create consumer object (with currently selected consumer)\r\n var consumerobj = null;\r\n consumerobj = roster2.buildConsumerCard({\r\n FN: consumerFN,\r\n LN: consumerLN,\r\n id: selectedConsumerId,\r\n });\r\n\r\n // 3. remove all consumers from the activeConsumers list\r\n if (activeConsumers.length > 0) {\r\n activeConsumers.forEach(consumer => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n\r\n // 4. add the currently selected consumer to the list\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n // 5. Display currently selected consumer\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter(); //\r\n // roster2.selectedConsumersToActiveList();\r\n initPageLoad(activeConsumers[0].id);\r\n var isGroup = false;\r\n noteSSA.moveConsumerToConsumerSection(activeConsumers, isGroup);\r\n noteSSA.enableCard();\r\n DOM.toggleNavLayout();\r\n }\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n // consumerListBtn.classList.add('hidden');\r\n DOM.toggleNavLayout();\r\n loadApp('casenotes');\r\n break;\r\n }\r\n }\r\n }\r\n //Save Attachments\r\n function saveAttachments(caseNoteId, attachments, saveAndNew) {\r\n const saveAttachmentPromArray = [];\r\n attachments.forEach(attachment => {\r\n const promise = new Promise((resolve, reject) => {\r\n caseNotesAjax.addCaseNoteAttachment(\r\n caseNoteId,\r\n attachment.description,\r\n attachment.type,\r\n attachment.arrayBuffer,\r\n res => {\r\n resolve('saved');\r\n },\r\n );\r\n });\r\n saveAttachmentPromArray.push(promise);\r\n });\r\n Promise.all(saveAttachmentPromArray).then(() => {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n // Save Note\r\n // ----------------------------------------\r\n function saveGroup(saveData, overlapData, selectedConsumerIds) {\r\n var groupSavePromises = [];\r\n selectedConsumerIds.forEach(cId => {\r\n groupSavePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n overlapData.consumerId = cId;\r\n\r\n caseNotesAjax.caseNoteOverlapCheck(overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n //If the warning popup is already being displayed, skip and just save the record.\r\n //This prevents a popup from being created for each consumer being saved.\r\n if (document.getElementById('warningPopup')) {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n return;\r\n }\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n } else {\r\n saveData.consumerGroupCount = selectedConsumerIds.length;\r\n saveData.consumerId = cId;\r\n caseNotesAjax.saveGroupCaseNote(saveData, function (results) {\r\n fulfill();\r\n });\r\n }\r\n });\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(groupSavePromises)\r\n .then(function (res) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n }\r\n function saveSingle(saveData, attachments, saveAndNew) {\r\n pendingSave.show();\r\n const parser = new DOMParser();\r\n caseNotesAjax.saveSingleCaseNote(saveData, function (results) {\r\n //SKIP ATTACHMENTS FOR ADVISOR\r\n if ($.session.applicationName === 'Advisor') {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n } else {\r\n if (results !== null) {\r\n const saveResponseDoc = parser.parseFromString(results, 'text/xml');\r\n const caseNoteId = saveResponseDoc.getElementsByTagName('caseNoteId')[0].childNodes[0]\r\n .nodeValue;\r\n saveAttachments(caseNoteId, attachments, saveAndNew);\r\n } else {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (saveAndNew) {\r\n noteSSA.init('new');\r\n } else {\r\n notesOverview.init();\r\n }\r\n }, 1000);\r\n }\r\n }\r\n });\r\n }\r\n function saveNote(opts, attachments) {\r\n var isGroup = opts.selectedConsumerIds.length > 1 ? true : false;\r\n\r\n if (isGroup) {\r\n caseNotesAjax.getGroupNoteId(function handleGettingGroupNoteId(results) {\r\n opts.saveData.groupNoteId = results[0].groupNoteId;\r\n saveGroup(opts.saveData, opts.overlapData, opts.selectedConsumerIds, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.selectedConsumerIds.forEach(id => {\r\n opts.overlapData.consumerId = id;\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function handleOverlapCheck(results) {\r\n if (results.length > 0) {\r\n var uniqueConsumers = [];\r\n results.forEach(r => {\r\n if (!uniqueConsumers.includes(r.consumername)) uniqueConsumers.push(r.consumername);\r\n });\r\n var warningText = `Time Overlap(s): ${uniqueConsumers.join(', ')}`;\r\n warningPopup(warningText, function () {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n });\r\n } else {\r\n opts.saveData.consumerId = id;\r\n saveSingle(opts.saveData, attachments, opts.saveAndNew);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n\r\n function warningPopup(text, warningBtnFunction) {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n warningBtnFunction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(continueBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n function checkMicError() {\r\n const NUSAI_popup = document.querySelector('.NUSAI_popupMessageContainer.error');\r\n if (NUSAI_popup) {\r\n const parent = NUSAI_popup.parentElement;\r\n parent.removeChild(NUSAI_popup);\r\n document.getElementById('NUSAI_CommandBar_Container').remove();\r\n }\r\n }\r\n\r\n // ----------------------------------------\r\n function initPageLoad(selectedConsumerId) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit(); // Only build miniroster if it doesn't exits yet\r\n\r\n var noConsumerMessage = document.createElement('h3');\r\n noConsumerMessage.setAttribute('id', 'noConsumerMessage');\r\n noConsumerMessage.innerHTML = `Please select a consumer to get started.`;\r\n\r\n var container = document.createElement('div');\r\n container.classList.add('caseNotes');\r\n\r\n var noteCard = noteSSA.buildCaseNoteCard(selectedConsumerId);\r\n var consumersList = noteSSA.buildConsumersList();\r\n\r\n container.appendChild(noConsumerMessage);\r\n container.appendChild(consumersList);\r\n container.appendChild(noteCard);\r\n DOM.ACTIONCENTER.insertBefore(container, DOM.ACTIONCENTER.childNodes[0]);\r\n\r\n noteSSA.disableCard(); // disabled until consumers are moved\r\n\r\n noteSSA.checkRequiredFields();\r\n // if ($.session.applicationName === \"Gatekeeper\") noteSSA.checkGKRequiredFields();\r\n noteSSA.setPermissions();\r\n window.setTimeout(checkMicError, 3000);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('caseNotesSSA-new');\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n saveNote,\r\n checkMicError,\r\n init,\r\n };\r\n})();\r\n","var note = (function () {\r\n // DOM Stuff\r\n let caseNoteCard;\r\n let serviceDateInput, startTimeInput, endTimeInput, noteTextInput, mileageInput;\r\n let serviceCodeDropdown; // billing/service code\r\n let locationDropdown,\r\n serviceDropdown,\r\n serviceLocationDropdown,\r\n needDropdown,\r\n vendorDropdown,\r\n contactDropdown;\r\n let myPhrasesBtn,\r\n deleteNoteBtn,\r\n cancelNoteBtn,\r\n timerStartBtn,\r\n timerStopBtn,\r\n consumerListBtn,\r\n attachmentsBtn,\r\n saveAndNewNoteBtn;\r\n let confidentialCheckbox;\r\n let serviceMonitoringCheckbox;\r\n let docTimeMinutesField, travelTimeMinutesField;\r\n let groupNoteDisplay;\r\n // Values & Data\r\n var selectedConsumerIds = [];\r\n var dropdownDataKeys;\r\n var dropdownData = {};\r\n var billers; // for casemanager dropdown\r\n var consumersThatCanHaveMileage;\r\n var defaultServiceCode;\r\n var pageLoaded;\r\n var timerRunning;\r\n var groupData;\r\n var lastUpdatedBy;\r\n var enteredBy;\r\n var lastUpdated;\r\n var groupConsumers;\r\n var mileage;\r\n let billerDropdownData;\r\n let fromDashboard;\r\n let dashboardConsumer;\r\n // GK Required\r\n var gkLocationRequired;\r\n var gkNeedRequired;\r\n var gkContactRequired;\r\n var gkServiceRequired;\r\n var gkAllowGroupNotes;\r\n var gkMileageRequired;\r\n // note data\r\n var noteId;\r\n var credit;\r\n var serviceCode;\r\n var locationId;\r\n var serviceId;\r\n var serviceLocationId;\r\n var needId;\r\n var vendorId;\r\n var contactId;\r\n var serviceDate;\r\n var startTime;\r\n var endTime;\r\n var noteText;\r\n var confidential;\r\n var serviceMonitoring;\r\n var reviewRequired;\r\n var documentationTime;\r\n var travelTime;\r\n //Attachment\r\n let tempAttachmentArray = [],\r\n reviewAttachmentArray = [],\r\n attachmentCount;\r\n // Revew Note Data Only\r\n var caseManagerId;\r\n var consumerId;\r\n var consumerName;\r\n var reviewData; // all the data\r\n var reviewResults;\r\n var reviewRejectReason;\r\n var correctedCheckbox;\r\n var corrected;\r\n let isGroupNote;\r\n var allowGroupNotes;\r\n var convertToGroupNote = false; //When reviewing a single note, more consumers can be added to convert it to group note.\r\n var rd;\r\n // Permisisons\r\n var viewOnly;\r\n var cnBatched;\r\n //need for required fields\r\n var gkLocationRequired = '';\r\n var gkServiceRequired = '';\r\n var gkNeedRequired = '';\r\n var gkContactRequired = '';\r\n var advLocationRequired = '';\r\n var advServiceRequired = '';\r\n var advNeedRequired = '';\r\n var advContactRequired = '';\r\n // case note inputs\r\n var isReadOnly;\r\n\r\n // Utils\r\n // ----------------------------------------\r\n function warningPopup(text, continueFunc, cancelFunc, hide_X = true) {\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n hideX: hide_X,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (continueFunc) {\r\n const continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n continueFunc();\r\n },\r\n });\r\n btnWrap.appendChild(continueBtn);\r\n }\r\n if (cancelFunc) {\r\n var cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n cancelFunc();\r\n },\r\n });\r\n btnWrap.appendChild(cancelBtn);\r\n }\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function validateTimesWhenDateChange() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n // var startTime = UTIL.convertToMilitary(startInput.value);\r\n var startTime = startInput.value;\r\n // var endTime = UTIL.convertToMilitary(endInput.value);\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let isTimeValid;\r\n isTimeValid = true;\r\n\r\n if (dateInput.value === currentDate) {\r\n isTimeValid = currentTime < startTime || currentTime < endTime ? false : true; // current date: can't have Time be future time\r\n }\r\n\r\n if (startTime >= endTime) {\r\n isTimeValid = false; // any date: startTime can't be after endTime\r\n }\r\n\r\n if (startTime === '' || endTime === '') {\r\n isTimeValid = false; // start time and end time are required\r\n }\r\n\r\n //isTimeValid = startTime >= endTime ? false : true; // any date: startTime can't be after endTime\r\n\r\n return {\r\n isValid: isTimeValid,\r\n startTime,\r\n endTime,\r\n };\r\n }\r\n function checkIfSameDates() {\r\n var dateEntered = new Date(serviceDateInput.value);\r\n var todaysDate = new Date();\r\n dateEntered = dateEntered.getMilliseconds();\r\n todaysDate = todaysDate.getMilliseconds();\r\n\r\n return dateEntered === todaysDate ? 0 : 1;\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setNoteValues(reviewData) {\r\n if (pageLoaded === 'new') {\r\n caseManagerId = $.session.PeopleId;\r\n consumerId = '';\r\n consumerName = '';\r\n allowGroupNotes = false;\r\n\r\n noteId = 0;\r\n serviceCode = '';\r\n locationId = '';\r\n serviceId = '';\r\n serviceLocationId = '';\r\n needId = '';\r\n vendorId = '';\r\n contactId = '';\r\n serviceDate = UTIL.getTodaysDate();\r\n startTime = UTIL.getCurrentTime();\r\n endTime = '';\r\n noteText = '';\r\n confidential = 'N';\r\n serviceMonitoring = 'N'\r\n corrected = 'N';\r\n reviewRequired = '';\r\n } else {\r\n rd = reviewData[0];\r\n isGroupNote = rd.groupid === '' ? false : true;\r\n\r\n caseManagerId = rd.casemanagerid;\r\n consumerId = rd.consumerid;\r\n consumerName = rd.consumername;\r\n noteId = rd.noteid;\r\n groupNoteId = rd.groupid === '' ? 0 : rd.groupid;\r\n credit = rd.credit;\r\n serviceCode = rd.mainbillingorservicecodeid; // serv/bill code\r\n locationId = rd.locationcode;\r\n serviceId = rd.servicecode; // services\r\n serviceLocationId = rd.servicelocationid;\r\n needId = rd.serviceneedcode;\r\n vendorId = rd.vendorid;\r\n contactId = rd.contactcode;\r\n serviceDate = UTIL.formatDateToIso(rd.servicedate.split(' ')[0]);\r\n startTime = rd.starttime;\r\n endTime = rd.endtime;\r\n noteText = rd.casenote;\r\n confidential = rd.confidential;\r\n serviceMonitoring = rd.outcomeServiceMonitoring;\r\n corrected = rd.corrected;\r\n reviewRequired = rd.reviewrequired === '' ? 'N' : rd.reviewrequired;\r\n reviewResults = rd.reviewresults;\r\n reviewRejectReason = rd.rejectionreason;\r\n documentationTime = rd.totaldoctime;\r\n travelTime = rd.traveltime;\r\n lastUpdated = rd.lastupdate;\r\n enteredBy = rd.originaluserid;\r\n cnBatched = rd.batched;\r\n originalUserName = rd.originaluserfullname;\r\n mileage = rd.totalmiles;\r\n }\r\n }\r\n function checkIfBatched() {\r\n return cnBatched !== '' ? true : false;\r\n }\r\n\r\n function checkIfCredit() {\r\n return credit === 'Y' || credit === '-1' ? true : false; //ADVUNIT: '-1' and GKUNIT: 'Y'\r\n }\r\n\r\n function isCaseNoteReadOnly() {\r\n if (credit === 'Y' || credit === '-1') {\r\n isReadOnly = true;\r\n // } else if (caseManagerId !== $.session.PeopleId) {\r\n // isReadOnly = true;\r\n } else {\r\n isReadOnly = false;\r\n }\r\n }\r\n function showTimeWarningPopup(callback) {\r\n const timeWarningPop = POPUP.build({\r\n id: 'timeWarningPop',\r\n classNames: 'warning',\r\n hideX: hide_X,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = `The times you have entered\r\n are outside the current normal working hours. Click OK to\r\n proceed or cacnel to return to the form.`;\r\n\r\n const okBtn = button.build({\r\n text: 'ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(timeWarningPop);\r\n callback();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(timeWarningPop);\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n timeWarningPop.appendChild(message);\r\n timeWarningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(timeWarningPop);\r\n }\r\n\r\n async function noteSaveUpdate(saveAndNew) {\r\n //Remove the selected consumer from active list\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n var vendorInput = vendorDropdown.firstElementChild;\r\n var locationInput = locationDropdown.firstElementChild;\r\n var serviceInput = serviceDropdown.firstElementChild;\r\n var needInput = needDropdown.firstElementChild;\r\n var contactInput = contactDropdown.firstElementChild;\r\n documentationTimer.stopTimer;\r\n noteText = UTIL.removeUnsavableNoteText(noteText);\r\n // If they are converting from a single note to a group note, delete existing note and create a new note classified as a group note\r\n if (convertToGroupNote) {\r\n await singleNoteToGroupNote();\r\n }\r\n if (pageLoaded === 'new') {\r\n var overlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId: 0,\r\n groupNoteId: 0,\r\n };\r\n var saveData = {\r\n caseManagerId,\r\n noteId,\r\n // dropdowns\r\n serviceOrBillingCodeId: serviceCode,\r\n locationCode: locationId,\r\n serviceCode: serviceId,\r\n needCode: needId,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId: vendorInput.value,\r\n contactCode: contactId,\r\n serviceLocationCode: serviceLocationId,\r\n caseNote: noteText, // from note input\r\n confidential, // from checkbox\r\n corrected, // from checkbox \r\n \r\n casenotemileage: String(mileage) === 'null' ? '0' : String(mileage),\r\n casenotetraveltime: String(travelTime),\r\n documentationTime: String(documentationTime),\r\n reviewRequired,\r\n serviceMonitoring, // from checkbox\r\n };\r\n newNote.saveNote(\r\n { overlapData, saveData, selectedConsumerIds, saveAndNew },\r\n tempAttachmentArray,\r\n );\r\n return;\r\n }\r\n\r\n if (pageLoaded === 'review') {\r\n // clean start time and end time:\r\n endTime = endTime.length === 8 ? endTime.substring(0, 5) : endTime;\r\n startTime = startTime.length === 8 ? startTime.substring(0, 5) : startTime;\r\n var updateOverlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId,\r\n groupNoteId,\r\n };\r\n var updateData = {\r\n noteId,\r\n groupNoteId,\r\n caseManagerId,\r\n consumerId,\r\n serviceOrBillingCodeId: serviceCode,\r\n locationCode:\r\n locationInput.selectedIndex === -1\r\n ? 0\r\n : locationInput.options[locationInput.selectedIndex].value,\r\n serviceCode:\r\n serviceInput.selectedIndex === -1\r\n ? 0\r\n : serviceInput.options[serviceInput.selectedIndex].value,\r\n needCode:\r\n needInput.selectedIndex === -1 ? 0 : needInput.options[needInput.selectedIndex].value,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId,\r\n contactCode:\r\n contactInput.selectedIndex === -1\r\n ? 0\r\n : contactInput.options[contactInput.selectedIndex].value,\r\n serviceLocationCode: serviceLocationId,\r\n reviewRequired,\r\n confidential,\r\n corrected,\r\n serviceMonitoring,\r\n caseNote: noteText,\r\n casenotemileage: String(mileage) === 'null' ? '' : String(mileage),\r\n casenotetraveltime: travelTime === null ? String(0) : String(travelTime),\r\n documentationTime: documentationTime === null ? String(0) : String(documentationTime),\r\n };\r\n reviewNote.updateNote(\r\n { overlapData: updateOverlapData, updateData, selectedConsumerIds, isGroupNote },\r\n tempAttachmentArray,\r\n );\r\n }\r\n }\r\n\r\n // Dropdowns\r\n // ----------------------------------------\r\n function dealWithDropdownDataHugeString(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n data = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.populateDropdownDataResult,\r\n );\r\n\r\n var billingCodes = [].slice.call(xmlDoc.getElementsByTagName('billingcode'));\r\n billingCodes.forEach(bc => {\r\n var tmpServiceCode = [].slice.call(bc.getElementsByTagName('codename'))[0];\r\n var tmpServiceId = [].slice.call(bc.getElementsByTagName('serviceid'))[0];\r\n var tmpServiceFunding = [].slice.call(bc.getElementsByTagName('includeinfunding'))[0];\r\n var tmpServiceRequired = [].slice.call(bc.getElementsByTagName('servicerequired'))[0];\r\n var tmpLocationRequired = [].slice.call(bc.getElementsByTagName('locationrequired'))[0];\r\n var tmpNeedRequired = [].slice.call(bc.getElementsByTagName('needrequired'))[0];\r\n var tmpContactRequired = [].slice.call(bc.getElementsByTagName('contactrequired'))[0];\r\n var tmpAllowGroupNotes = [].slice.call(bc.getElementsByTagName('allowgroupnotes'))[0];\r\n var tmpMileageRequired = [].slice.call(bc.getElementsByTagName('mileagerequired'))[0];\r\n var tmpDocTimeRequired = [].slice.call(bc.getElementsByTagName('doctimerequired'))[0];\r\n var tmpTravelTimeRequired = [].slice.call(bc.getElementsByTagName('traveltimerequired'))[0];\r\n var locations = [].slice.call(bc.getElementsByTagName('location'));\r\n var contacts = [].slice.call(bc.getElementsByTagName('contact'));\r\n var services = [].slice.call(bc.getElementsByTagName('service'));\r\n var needs = [].slice.call(bc.getElementsByTagName('need'));\r\n\r\n var tmpObject = {};\r\n tmpObject.serviceCode = tmpServiceCode ? tmpServiceCode.textContent : '';\r\n tmpObject.serviceId = tmpServiceId ? tmpServiceId.textContent : '';\r\n tmpObject.serviceFunding = tmpServiceFunding ? tmpServiceFunding.textContent : '';\r\n tmpObject.serviceRequired = tmpServiceRequired ? tmpServiceRequired.textContent : '';\r\n tmpObject.locationRequired = tmpLocationRequired ? tmpLocationRequired.textContent : '';\r\n tmpObject.needRequired = tmpNeedRequired ? tmpNeedRequired.textContent : '';\r\n tmpObject.contactRequired = tmpContactRequired ? tmpContactRequired.textContent : '';\r\n tmpObject.allowGroupNotes = tmpAllowGroupNotes ? tmpAllowGroupNotes.textContent : '';\r\n tmpObject.mileageRequired = tmpMileageRequired ? tmpMileageRequired.textContent : '';\r\n tmpObject.docTimeRequired = tmpDocTimeRequired ? tmpDocTimeRequired.textContent : '';\r\n tmpObject.travelTimeRequired = tmpTravelTimeRequired\r\n ? tmpTravelTimeRequired.textContent\r\n : '';\r\n tmpObject.locations = [];\r\n tmpObject.contacts = [];\r\n tmpObject.services = [];\r\n tmpObject.needs = [];\r\n\r\n locations.forEach(loc => {\r\n var tmpLocName = [].slice.call(loc.getElementsByTagName('locname'))[0].textContent;\r\n var tmpLocCode = [].slice.call(loc.getElementsByTagName('loccode'))[0].textContent;\r\n tmpObject.locations.push({\r\n locName: tmpLocName,\r\n locCode: tmpLocCode,\r\n });\r\n });\r\n contacts.forEach(loc => {\r\n var tmpContactName = [].slice.call(loc.getElementsByTagName('contactname'))[0]\r\n .textContent;\r\n var tmpContactCode = [].slice.call(loc.getElementsByTagName('contactcode'))[0]\r\n .textContent;\r\n tmpObject.contacts.push({\r\n contactName: tmpContactName,\r\n contactCode: tmpContactCode,\r\n });\r\n });\r\n services.forEach(loc => {\r\n var tmpServiceName = [].slice.call(loc.getElementsByTagName('servicename'))[0]\r\n .textContent;\r\n var tmpServiceCode = [].slice.call(loc.getElementsByTagName('servicecode'))[0]\r\n .textContent;\r\n tmpObject.services.push({\r\n serviceName: tmpServiceName,\r\n serviceCode: tmpServiceCode,\r\n });\r\n });\r\n needs.forEach(loc => {\r\n var tmpNeedName = [].slice.call(loc.getElementsByTagName('needname'))[0].textContent;\r\n var tmpNeedCode = [].slice.call(loc.getElementsByTagName('needcode'))[0].textContent;\r\n tmpObject.needs.push({\r\n needName: tmpNeedName,\r\n needCode: tmpNeedCode,\r\n });\r\n });\r\n\r\n data.push(tmpObject);\r\n });\r\n\r\n return data;\r\n }\r\n\r\n var beautifulObject = decipherXML(res);\r\n\r\n // create object for quick access\r\n beautifulObject.forEach(dd => {\r\n // create object for each billercode\r\n if (!dropdownData[dd.serviceId]) {\r\n dropdownData[dd.serviceId] = {\r\n serviceId: dd.serviceId,\r\n serviceCode: dd.serviceCode,\r\n serviceFunding: dd.serviceFunding,\r\n locations: [...dd.locations],\r\n contacts: [...dd.contacts],\r\n services: [...dd.services],\r\n needs: [...dd.needs],\r\n docTimeRequired: dd.docTimeRequired,\r\n travelTimeRequired: dd.travelTimeRequired,\r\n mileageRequired: dd.mileageRequired,\r\n locationRequired: dd.locationRequired,\r\n needRequired: dd.needRequired,\r\n serviceRequired: dd.serviceRequired,\r\n contactRequired: dd.contactRequired,\r\n allowGroupNotes: dd.allowGroupNotes,\r\n };\r\n }\r\n });\r\n // dropdownData[\"\"] = {\r\n // serviceId: \"\",\r\n // serviceCode: \"\",\r\n // serviceFunding: \"\",\r\n // locations: [{locName:\"\", locCode: \"\"}],\r\n // contacts: [{contactName:\"\", contactCode: \"\"}],\r\n // services: [{serviceName:\"\", serviceCode: \"\"}],\r\n // needs: [{needName:\"\", needCode: \"\"}],\r\n // docTimeRequired: \"\",\r\n // travelTimeRequired: \"\",\r\n // mileageRequired: \"\"\r\n // }\r\n dropdownDataKeys = Object.keys(dropdownData);\r\n return dropdownData;\r\n }\r\n\r\n function checkServiceFunding() {\r\n if ($.session.applicationName === 'Advisor') {\r\n if (\r\n serviceCodeDropdown.firstChild.options[\r\n serviceCodeDropdown.firstChild.selectedIndex\r\n ].getAttribute('data-service-funding') === 'N'\r\n ) {\r\n serviceLocationDropdown.classList.add('hidden');\r\n serviceLocationDropdown.classList.remove('error');\r\n serviceLocationDropdown.firstChild.selectedIndex = 0;\r\n serviceLocationId = '00';\r\n } else {\r\n serviceLocationDropdown.classList.remove('hidden');\r\n if (serviceLocationId === '' || serviceLocationId === '00')\r\n serviceLocationDropdown.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n function populateBillerDropdown() {\r\n billerDropdownData = dropdownDataKeys.map((key, index) => {\r\n if (index === 1) serviceCode = key;\r\n return {\r\n value: dropdownData[key].serviceId,\r\n text: UTIL.removeQuotes(dropdownData[key].serviceCode),\r\n attributes: [\r\n { key: 'data-service-funding', value: dropdownData[key].serviceFunding },\r\n { key: 'data-allowGroupNotes', value: dropdownData[key].allowGroupNotes },\r\n ],\r\n };\r\n });\r\n\r\n billerDropdownData.unshift({ id: '0', value: '', text: '' }); //ADD Blank value\r\n billerDropdownData.sort(function (a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n var defaultVal;\r\n\r\n defaultVal = defaultServiceCode;\r\n\r\n if (rd && rd.mainbillingorservicecodeid) {\r\n serviceCode = rd.mainbillingorservicecodeid;\r\n defaultVal = serviceCode;\r\n } else {\r\n serviceCode = defaultVal;\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n allowGroupNotes = true;\r\n } else {\r\n if (pageLoaded === 'review') {\r\n allowGroupNotes = dropdownData[defaultVal].allowGroupNotes === 'Y' ? true : false;\r\n }\r\n }\r\n\r\n dropdown.populate(serviceCodeDropdown, billerDropdownData, defaultVal);\r\n populateBillerRelatedDropdowns();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n checkGKRequiredFields();\r\n }\r\n }\r\n function populateLocationDrodown() {\r\n var locations = dropdownData[serviceCode].locations;\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locCode,\r\n text: loc.locName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.locationcode) {\r\n locationId = rd.locationcode;\r\n defaultVal = rd.locationcode;\r\n } else {\r\n locationId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'locationDropdwn');\r\n\r\n dropdown.populate(locationDropdown, data, defaultVal);\r\n }\r\n function populateServicesDrodown() {\r\n var services = dropdownData[serviceCode].services;\r\n var data = services.map(service => {\r\n return {\r\n value: service.serviceCode,\r\n text: service.serviceName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.servicecode) {\r\n defaultVal = rd.servicecode;\r\n } else {\r\n serviceId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'serviceDropdwn');\r\n\r\n dropdown.populate(serviceDropdown, data, defaultVal);\r\n }\r\n function populateContactsDrodown() {\r\n var contacts = dropdownData[serviceCode].contacts;\r\n\r\n //if contacts.length =\r\n\r\n var data = contacts.map(contact => {\r\n return {\r\n value: contact.contactCode,\r\n text: contact.contactName,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.contactcode) {\r\n defaultVal = rd.contactcode;\r\n } else {\r\n contactId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'contactDropdwn');\r\n\r\n dropdown.populate(contactDropdown, data, defaultVal);\r\n }\r\n function populateNeedsDrodown() {\r\n var needs = dropdownData[serviceCode].needs;\r\n var data = needs.map(need => {\r\n return {\r\n value: need.needCode,\r\n text: need.needName,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.serviceneedcode) {\r\n defaultVal = rd.serviceneedcode;\r\n } else {\r\n needId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'needDropdwn');\r\n\r\n dropdown.populate(needDropdown, data, defaultVal);\r\n }\r\n\r\n function dropDownDisplay(data, dropDown) {\r\n if (data.length > 1) {\r\n document.getElementById(dropDown).parentElement.style.display = '';\r\n //$(\"#needDropdwn\").show();\r\n } else {\r\n document.getElementById(dropDown).parentElement.style.display = 'none';\r\n //$(\"#needDropdwn\").hide();\r\n }\r\n }\r\n\r\n function populateBillerRelatedDropdowns() {\r\n // Skip populating dropdowns if biller doesn have a default service code. Breaks things.\r\n if (serviceCode !== '') {\r\n if (!rd) {\r\n locationId = '';\r\n serviceId = '';\r\n needId = '';\r\n contactId = '';\r\n }\r\n //Below if statement added from ticket #31039 in 2020.3. It was noticed that if the user\r\n //had a default service code that was later set as inactive, they would still\r\n // have this service code associated with them but it would break the module.\r\n //This sould be a temp fix until there are measures put in place that prevent\r\n //this in the desktop application.\r\n if (dropdownData[serviceCode]) {\r\n populateLocationDrodown();\r\n populateServicesDrodown();\r\n populateContactsDrodown();\r\n populateNeedsDrodown();\r\n } else {\r\n serviceCode = '';\r\n dropdown.populate(serviceCodeDropdown, billerDropdownData);\r\n }\r\n }\r\n if (rd) {\r\n selectedConsumerIds[0] = rd.consumerid;\r\n populateVendorDropdown();\r\n populateServiceLocations();\r\n }\r\n }\r\n function populateVendorDropdown() {\r\n caseNotesAjax.getConsumerSpecificVendors(\r\n selectedConsumerIds[0],\r\n serviceDate,\r\n function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.vendorId,\r\n text: r.vendorName,\r\n };\r\n });\r\n // if ($.session.applicationName === 'Gatekeeper')\r\n // data.unshift({ value: '', text: '' }); // add blank value in vendor dropdown for GK only\r\n var defaultVal;\r\n\r\n if (rd && rd.vendorid) {\r\n defaultVal = rd.vendorid;\r\n } else {\r\n vendorId = data[1] && data[1].value ? data[1].value : '';\r\n defaultVal = vendorId;\r\n }\r\n\r\n dropdown.populate(vendorDropdown, data, defaultVal);\r\n },\r\n );\r\n }\r\n function populateServiceLocations() {\r\n var serviceLocData = { serviceDate, consumerId: selectedConsumerIds[0] };\r\n caseNotesAjax.getServiceLocationsForCaseNoteDropDown(serviceLocData, function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.code,\r\n text: r.caption,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.servicelocationid) {\r\n defaultVal = rd.servicelocationid;\r\n } else {\r\n //set to '00' if no val\r\n serviceLocationId = data[0] && data[0].value ? data[0].value : '00';\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor')\r\n dropdown.populate(serviceLocationDropdown, data, defaultVal);\r\n });\r\n }\r\n\r\n // Case Note Card\r\n // ----------------------------------------\r\n function disableCard() {\r\n // card disabled until consumers are moved over\r\n // caseNoteCard.classList.add('disabled');\r\n }\r\n function enableCard() {\r\n caseNoteCard.classList.remove('disabled');\r\n checkRequiredFields();\r\n }\r\n // Consumers\r\n function buildConsumerCard(clone) {\r\n var card = document.createElement('div');\r\n card.classList.add('caseNotes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n\r\n function moveConsumerToConsumerSection() {\r\n //? This function just adds the consumer(s) visibly to note card\r\n\r\n const consumerList = document.querySelector('.consumers-list');\r\n let activeConsumers = roster2.getActiveConsumers();\r\n let newSelectedConsumers = roster2.getSelectedConsumersCache();\r\n\r\n //* NEW\r\n //*-----------------------------------\r\n if (pageLoaded === 'new') {\r\n //Remove the 'no consumer message' when adding a consumer. (only visible on new notes)\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.add('hidden');\r\n\r\n //Will always be just 1 selected consumer for a new note\r\n const sConsumer = activeConsumers[0];\r\n //clone and build card for note\r\n var clone = sConsumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone);\r\n card.classList.remove('highlighted');\r\n consumerList.appendChild(card);\r\n\r\n //remove consumer on click\r\n card.addEventListener('click', event => {\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var consumer = event.target.getAttribute('data-consumer-id');\r\n event.target.parentElement.remove();\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== consumer);\r\n roster2.removeConsumerFromActiveConsumers(consumer);\r\n if (selectedConsumerIds.length === 0) {\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n populateBillerRelatedDropdowns();\r\n //re show the message when there are no consumer selected\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.remove('hidden');\r\n }\r\n }\r\n checkRequiredFields();\r\n checkConsumerForMileage();\r\n if (pageLoaded === 'review') {\r\n if (selectedConsumerIds.length === 1) {\r\n convertToGroupNote = false;\r\n }\r\n }\r\n });\r\n\r\n selectedConsumerIds.push(sConsumer.id);\r\n checkConsumerForMileage();\r\n }\r\n\r\n //* REVIEW\r\n //*-----------------------------------\r\n if (pageLoaded === 'review') {\r\n if (!allowGroupNotes) {\r\n convertToGroupNote = false;\r\n } else if (!isGroupNote && allowGroupNotes) {\r\n convertToGroupNote = true;\r\n }\r\n\r\n if (allowGroupNotes) {\r\n activeConsumers.forEach(aConsumer => {\r\n //check if consumer has already been added to note\r\n if (selectedConsumerIds.filter(id => id === aConsumer.id).length > 0) return;\r\n // only add newly selected consumers\r\n const filteredConsumers = newSelectedConsumers.filter(nsc => {\r\n const isTrue = nsc.id === aConsumer.id;\r\n return isTrue;\r\n });\r\n if (filteredConsumers.length === 0) {\r\n return;\r\n }\r\n\r\n //clone and build card for note\r\n var clone = aConsumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone);\r\n card.classList.remove('highlighted');\r\n consumerList.appendChild(card);\r\n\r\n //remove consumer on click\r\n card.addEventListener('click', event => {\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var consumer = event.target.getAttribute('data-consumer-id');\r\n event.target.parentElement.remove();\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== consumer);\r\n roster2.removeConsumerFromActiveConsumers(consumer);\r\n if (selectedConsumerIds.length === 0) {\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n populateBillerRelatedDropdowns();\r\n //re show the message when there are no consumer selected\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.remove('hidden');\r\n }\r\n }\r\n checkRequiredFields();\r\n checkConsumerForMileage();\r\n if (pageLoaded === 'review') {\r\n if (selectedConsumerIds.length === 1) {\r\n convertToGroupNote = false;\r\n }\r\n }\r\n });\r\n\r\n selectedConsumerIds.push(aConsumer.id);\r\n checkConsumerForMileage();\r\n });\r\n } else {\r\n //* Get currently selected consumer\r\n let selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n const selectedConsumerName = activeConsumers[\r\n activeConsumers.length - 1\r\n ].card.innerText.replace(/\\s/g, '');\r\n const consumerNameArr = selectedConsumerName.split(',');\r\n const consumerFN = consumerNameArr[1];\r\n const consumerLN = consumerNameArr[0];\r\n\r\n //* Create consumer object (with newly selected consumer)\r\n let consumerobj = null;\r\n consumerobj = roster2.buildConsumerCard({\r\n FN: consumerFN,\r\n LN: consumerLN,\r\n id: selectedConsumerId,\r\n });\r\n consumerobj.classList.remove('disabled');\r\n\r\n // only one consumer\r\n consumerId = selectedConsumerId;\r\n consumerName = `${consumerFN} ${consumerLN}`;\r\n\r\n // reset active/selected consumers\r\n selectedConsumerIds = [selectedConsumerId];\r\n roster2.clearActiveConsumers();\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n\r\n // update dom with new name\r\n var cardHeader = document.querySelector('.card__header');\r\n cardHeader.innerHTML = `

    Note Review - ${consumerName}

    `;\r\n }\r\n }\r\n\r\n // consumer specific dropdowns\r\n populateVendorDropdown();\r\n if ($.session.applicationName === 'Advisor') {\r\n populateServiceLocations();\r\n } else {\r\n checkGKRequiredFields('consumerSelect');\r\n }\r\n checkRequiredFields(); //To enable save button if possible\r\n }\r\n // Details\r\n function buildDocTime() {\r\n var docTimeHeader = document.createElement('div');\r\n var docTimeHeaderText = document.createElement('h3');\r\n docTimeHeaderText.innerHTML = 'Doc Time';\r\n docTimeHeader.appendChild(docTimeHeaderText);\r\n docTimeHeader.classList.add('card__header');\r\n var docTimeBody = document.createElement('div');\r\n docTimeBody.classList.add('card__body');\r\n\r\n var docTime = document.createElement('div');\r\n docTime.id = 'docTime';\r\n docTime.classList.add('card');\r\n docTime.appendChild(docTimeHeader);\r\n docTime.appendChild(docTimeBody);\r\n\r\n DOM.ACTIONCENTER.appendChild(docTime);\r\n\r\n if (serviceId === '' || serviceId === '0') docTime.classList.add('hidden');\r\n\r\n // if default billing code requires Doc Time, display\r\n if (defaultServiceCode) {\r\n if (dropdownData[defaultServiceCode].docTimeRequired === 'Y') {\r\n docTime.classList.remove('hidden');\r\n //\tPOPUP.show(docTimePopup);\r\n }\r\n }\r\n\r\n var minutesDisplay = document.createElement('div');\r\n minutesDisplay.classList.add('inputWrap');\r\n\r\n // start/stop buttons\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'cntimerbuttons');\r\n timerStartBtn = button.build({\r\n text: 'Start',\r\n id: 'cnTimerStart',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-toggled', value: 'false' }],\r\n callback: function () {\r\n // caseNotesTimer.startCaseNoteTimer();\r\n if (timerRunning === true) return;\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n // if editing toggleSaveButton()\r\n },\r\n });\r\n timerStopBtn = button.build({\r\n text: 'Stop',\r\n id: 'cnTimerStop',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n // pauseTimer();\r\n if (timerRunning === false) return;\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n },\r\n });\r\n\r\n //PERMISSIONS// Doc Time minutes field is read only when $.session.UpdateCaseNotesDocTime === false\r\n var docTimeMinVal = rd\r\n ? rd.totaldoctime\r\n ? Math.round(Math.floor(parseInt(rd.totaldoctime) / 30) / 2)\r\n : 0\r\n : 0;\r\n docTimeMinutesField = input.build({\r\n label: 'Doc Time Minutes',\r\n id: 'docTimeMinutesDisplay',\r\n type: 'text',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '5' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n readonly: $.session.UpdateCaseNotesDocTime === false ? true : false,\r\n value: String(docTimeMinVal),\r\n });\r\n\r\n travelTimeMinutesField = input.build({\r\n label: 'Travel Time Minutes',\r\n id: 'travelTimeMinutesDisplay',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '4' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: rd ? (rd.traveltime ? rd.traveltime : '') : '',\r\n type: 'text',\r\n });\r\n\r\n //Time field event listeners (to prevent length that is too long)\r\n docTimeMinutesField.addEventListener('keyup', event => {\r\n if (event.target.value.length > 5) {\r\n event.target.value = event.target.value.substr(0, 5);\r\n }\r\n });\r\n travelTimeMinutesField.addEventListener('keyup', event => {\r\n if (event.target.value.length > 4) {\r\n event.target.value = event.target.value.substr(0, 4);\r\n }\r\n });\r\n\r\n minutesDisplay.appendChild(docTimeMinutesField);\r\n minutesDisplay.appendChild(travelTimeMinutesField);\r\n btnWrap.appendChild(timerStartBtn);\r\n btnWrap.appendChild(timerStopBtn);\r\n\r\n docTimeBody.appendChild(btnWrap);\r\n docTimeBody.appendChild(minutesDisplay);\r\n\r\n return docTime;\r\n }\r\n function parseSessionTimes(dirtyTime) {\r\n const isAMorPM = dirtyTime.includes('A') ? 'am' : 'pm';\r\n let time;\r\n\r\n if (isAMorPM === 'am') {\r\n time = `${dirtyTime.split('A')[0]} AM`;\r\n } else {\r\n time = `${dirtyTime.split('P')[0]} PM`;\r\n }\r\n\r\n time = UTIL.convertToMilitary(time);\r\n return time.slice(0, -3);\r\n }\r\n function checkTimesAreWithinWorkHours() {\r\n const warnStart = parseSessionTimes($.session.caseNotesWarningStartTime);\r\n const warnEnd = parseSessionTimes($.session.caseNotesWarningEndTime);\r\n\r\n if (\r\n $.session.caseNotesWarningStartTime === '00:00' ||\r\n $.session.caseNotesWarningEndTime === '00:00' ||\r\n !$.session.caseNotesWarningStartTime ||\r\n !$.session.caseNotesWarningEndTime ||\r\n $.session.caseNotesWarningStartTime === 'Null' ||\r\n $.session.caseNotesWarningEndTime === 'Null'\r\n ) {\r\n return true;\r\n }\r\n\r\n if (startTime < warnStart || startTime > warnEnd || endTime < warnStart || endTime > warnEnd) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n function buildCardDetailsSection() {\r\n async function saveBtnAction(saveAndNew) {\r\n function preSave() {\r\n if ($.session.applicationName === 'Gatekeeper' && timerRunning) {\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n // Stop speech to text if running\r\n if ($.session.sttEnabled && document.querySelectorAll('.stt_listening').length > 0) {\r\n const listeningNodes = document.querySelectorAll('.stt_listening');\r\n listeningNodes.forEach(node => {\r\n node.dispatchEvent(new Event('click'));\r\n });\r\n }\r\n }\r\n\r\n if (\r\n (tempAttachmentArray.length > 0 || reviewAttachmentArray.length > 0) &&\r\n convertToGroupNote\r\n ) {\r\n const warningMessage = `Attachments on this case note will be lost by \r\n converting this single case note to a group case note.`;\r\n warningPopup(\r\n warningMessage,\r\n async () => {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n await noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n async () => {\r\n await noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n await noteSaveUpdate(saveAndNew);\r\n }\r\n },\r\n () => {\r\n return;\r\n },\r\n );\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n await noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n async () => {\r\n await noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n await noteSaveUpdate(saveAndNew);\r\n }\r\n }\r\n }\r\n //----------------------------------------------------------------------\r\n\r\n var details = document.createElement('div');\r\n details.classList.add('card__body', 'caseNoteCard__details');\r\n //Group Note info area:\r\n groupNoteDisplay = document.createElement('div');\r\n groupNoteDisplay.classList.add('groupNoteDisplay');\r\n groupNoteDisplay.innerHTML = groupConsumers;\r\n\r\n // dropdowns\r\n var style = 'secondary';\r\n\r\n isCaseNoteReadOnly();\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n dropdownId: 'serviceCodeDropdown',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Bill Code:' : 'Serv. Code:',\r\n style,\r\n });\r\n // serviceCodeDropdown.id = \"serviceCodeDropdown\"\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdwn',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n serviceDropdown = dropdown.build({\r\n dropdownId: 'serviceDropdwn',\r\n label: 'Service',\r\n style: 'secondary',\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown = dropdown.build({\r\n label: 'Service Location',\r\n style,\r\n });\r\n }\r\n needDropdown = dropdown.build({\r\n dropdownId: 'needDropdwn',\r\n label: 'Need',\r\n style: 'secondary',\r\n });\r\n vendorDropdown = dropdown.build({\r\n label: 'Vendor',\r\n style,\r\n });\r\n contactDropdown = dropdown.build({\r\n dropdownId: 'contactDropdwn',\r\n label: 'Contact',\r\n style: 'secondary',\r\n });\r\n // inputs\r\n serviceDateInput = input.build({\r\n label: 'Service Date',\r\n type: 'date',\r\n style,\r\n value: pageLoaded === 'review' ? serviceDate : UTIL.getTodaysDate(),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n style,\r\n value: startTime,\r\n });\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n style,\r\n value: endTime,\r\n });\r\n mileageInput = input.build({\r\n label: 'Mileage',\r\n style,\r\n value: mileage === '0' || mileage === '0.00' ? '' : mileage,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n myPhrasesBtn = button.build({\r\n id: 'myPhrasesBtn',\r\n text: 'My Phrases',\r\n type: 'contained',\r\n style,\r\n callback: function () {\r\n //pass current note input field value\r\n cnPhrasesPopup();\r\n },\r\n });\r\n noteTextInput = input.build({\r\n id: 'noteTextField',\r\n label: 'Note',\r\n type: 'textarea',\r\n style,\r\n classNames: 'autosize',\r\n value: noteText,\r\n stt: $.session.sttEnabled && !cnBatched && $.session.CaseNotesUpdate,\r\n });\r\n // checkboxes\r\n confidentialCheckbox = input.buildCheckbox({\r\n text: 'Confidential',\r\n isChecked: confidential === 'Y' ? true : false,\r\n });\r\n\r\n serviceMonitoringCheckbox = input.buildCheckbox({\r\n text: 'Outcome/Service Monitoring',\r\n isChecked: serviceMonitoring === 'Y' ? true : false,\r\n });\r\n\r\n // btns\r\n attachmentsBtn = button.build({\r\n text: `Attachments (${attachmentCount})`,\r\n style,\r\n type: 'contained',\r\n icon: 'attachment',\r\n callback: () => {\r\n cnAttachment.init(tempAttachmentArray, reviewAttachmentArray, cnBatched, noteId);\r\n },\r\n });\r\n if (attachmentCount > 0) attachmentsBtn.classList.add('hasAttachments');\r\n\r\n var text = pageLoaded === 'new' ? 'Save' : 'Update';\r\n saveNoteBtn = button.build({\r\n text,\r\n style,\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(false),\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style,\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(true),\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style,\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: function () {\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n if (timerRunning === true) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n notesOverview.init();\r\n },\r\n });\r\n //DELETE ONLY ON REVIEW NOTE\r\n deleteNoteBtn = button.build({\r\n text: 'delete',\r\n style,\r\n type: 'contained',\r\n icon: 'delete',\r\n classNames: ['caseNoteDelete'],\r\n callback: deleteConfirmation,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveNoteBtn);\r\n if (pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n btnWrap.appendChild(deleteNoteBtn);\r\n } else {\r\n btnWrap.appendChild(saveAndNewNoteBtn);\r\n }\r\n\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n //End time on new notes is empty, only add class list of error for this case\r\n if (pageLoaded === 'new') {\r\n endTimeInput.classList.add('error');\r\n }\r\n\r\n // group inputs * for desktop later\r\n var grid_col_1 = document.createElement('div');\r\n var grid_col_2 = document.createElement('div');\r\n\r\n // build details section\r\n grid_col_1.appendChild(serviceCodeDropdown);\r\n grid_col_1.appendChild(locationDropdown);\r\n grid_col_1.appendChild(serviceDropdown);\r\n grid_col_1.appendChild(needDropdown);\r\n grid_col_1.appendChild(contactDropdown);\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n grid_col_1.appendChild(serviceLocationDropdown);\r\n }\r\n grid_col_1.appendChild(vendorDropdown);\r\n\r\n grid_col_2.appendChild(serviceDateInput);\r\n grid_col_2.appendChild(startTimeInput);\r\n grid_col_2.appendChild(endTimeInput); \r\n if (!cnBatched) grid_col_2.appendChild(myPhrasesBtn);\r\n grid_col_2.appendChild(noteTextInput);\r\n grid_col_2.appendChild(mileageInput);\r\n if ($.session.applicationName === 'Gatekeeper') grid_col_2.appendChild(attachmentsBtn);\r\n grid_col_2.appendChild(confidentialCheckbox);\r\n \r\n if ($.session.applicationName === 'Gatekeeper') {\r\n grid_col_2.appendChild(serviceMonitoringCheckbox);\r\n serviceMonitoringCheckbox.classList.add('width100Per');\r\n if (cnBatched) {\r\n serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n serviceMonitoringCheckbox.classList.add('disabled');\r\n }\r\n }\r\n //Hide Mileage Input if they don't have a bill/service code\r\n if (serviceId === '' || serviceId === '0') mileageInput.classList.add('hidden');\r\n\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) grid_col_2.appendChild(groupNoteDisplay);\r\n //Last Updated by message (only on review)\r\n var lastUpdatedDisplay = document.createElement('div');\r\n lastUpdatedDisplay.classList.add('lastUpdatedDisplay');\r\n var lastUpdatedMessage = document.createElement('p');\r\n lastUpdatedMessage.innerHTML = `\r\n Last Edited On: ${lastUpdated}
    Entered By: ${enteredBy} (${originalUserName})
    `;\r\n lastUpdatedDisplay.appendChild(lastUpdatedMessage);\r\n\r\n var correctedCheckboxDiv = document.createElement('div');\r\n correctedCheckboxDiv.classList.add('correctedCheckbox');\r\n correctedCheckbox = input.buildCheckbox({\r\n text: 'Corrected',\r\n isChecked: corrected === 'Y' ? true : false,\r\n });\r\n\r\n correctedCheckboxDiv.appendChild(correctedCheckbox);\r\n\r\n //Review Required Area//////\r\n var reviewText;\r\n switch (reviewResults) {\r\n case 'N':\r\n reviewText = 'Not Reviewed';\r\n break;\r\n case 'P':\r\n reviewText = 'Passed';\r\n break;\r\n case 'R':\r\n reviewText = 'Rejected';\r\n break;\r\n default:\r\n reviewText = reviewResults;\r\n break;\r\n }\r\n\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Gatekeeper') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText} \r\n ${reviewRejectReason === '' ? '' : `
    Rejection Reason: ${reviewRejectReason}`}`;\r\n if (reviewResults === 'R') reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n\r\n ////ADV does not have a rejection reason\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Advisor') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText}`;\r\n reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n }\r\n\r\n grid_col_2.appendChild(btnWrap);\r\n grid_col_2.appendChild(btnWrap2);\r\n details.appendChild(grid_col_1);\r\n details.appendChild(grid_col_2);\r\n if (pageLoaded === 'review') {\r\n grid_col_2.appendChild(lastUpdatedDisplay);\r\n if (reviewRequired === 'Y') grid_col_2.appendChild(reviewMessage);\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') buildDocTime();\r\n\r\n DOM.ACTIONCENTER.appendChild(details);\r\n\r\n populateBillerDropdown();\r\n //ADV check if the consumer on the note has mileage (after populating dropdowns)\r\n checkConsumerForMileage();\r\n setupCardEvents();\r\n checkServiceFunding();\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n return details;\r\n }\r\n function buildConsumersList() {\r\n var consumerList = document.createElement('div');\r\n consumerList.classList.add('consumers-list');\r\n\r\n return consumerList;\r\n }\r\n\r\n function buildCaseNoteCard() {\r\n caseNoteCard = document.createElement('div');\r\n caseNoteCard.classList.add('card', 'caseNoteCard');\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n cardHeader.innerHTML =\r\n pageLoaded === 'new' ? `

    New Note

    ` : `

    Note Review - ${consumerName}

    `;\r\n\r\n var cardDetails = buildCardDetailsSection();\r\n\r\n // note card\r\n caseNoteCard.appendChild(cardHeader);\r\n caseNoteCard.appendChild(cardDetails);\r\n\r\n return caseNoteCard;\r\n }\r\n\r\n function cnPhrasesPopup() {\r\n cnInsertPhrases.show(noteTextInput.querySelector('.input-field__input').value);\r\n }\r\n function cnPhrasesDone(note) {\r\n noteText = note;\r\n checkRequiredFields();\r\n }\r\n\r\n function docTimeRequiredPopup() {\r\n if (document.getElementById('docTimeRequiredPopup')) return; // Prevent multiple popups\r\n docTimePopup = POPUP.build({\r\n id: 'docTimeRequiredPopup',\r\n });\r\n var yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'cnTimerStart',\r\n callback: function () {\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n id: 'cnTimerStop',\r\n callback: function () {\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n var popupText = document.createElement('p');\r\n popupText.innerHTML =\r\n 'Documentation Time is allowed for this bill code. Would you like to start the timer now?';\r\n docTimePopup.appendChild(popupText);\r\n docTimePopup.appendChild(btnWrap);\r\n POPUP.show(docTimePopup);\r\n }\r\n\r\n function checkADVRequiredFields(calledAction) {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n checkRequiredFields();\r\n return;\r\n } else serviceCodeDropdown.classList.remove('error');\r\n advLocationRequired = dropdownData[serviceCode].locationRequired;\r\n advNeedRequired = dropdownData[serviceCode].needRequired;\r\n advContactRequired = dropdownData[serviceCode].contactRequired;\r\n advServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (advLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (advLocationRequired === 'Y' && (locationId === '' || locationId === '0')) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (advNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (advNeedRequired === 'Y' && (needId === '' || needId === '0')) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (advContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (advContactRequired === 'Y' && (contactId === '' || contactId === '0')) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n var services = dropdownData[serviceCode].services;\r\n if (advServiceRequired === 'Y' && services.length === 0) {\r\n serviceDropdown.classList.remove('error');\r\n } else if (advServiceRequired === 'Y' && (serviceId === '' || serviceId === '0')) {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function checkGKRequiredFields(calledAction) {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var docTimeDisplay = document.getElementById('docTime');\r\n var timerButtons = document.querySelector('.cntimerbuttons');\r\n var docTimeMinutesField = document.getElementById('docTimeMinutesDisplay');\r\n var travelTimeMinutesField = document.getElementById('travelTimeMinutesDisplay');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n checkRequiredFields();\r\n return;\r\n } else serviceCodeDropdown.classList.remove('error');\r\n var docTimeRequired = dropdownData[serviceCode].docTimeRequired;\r\n var travelTimeRequired = dropdownData[serviceCode].travelTimeRequired;\r\n gkLocationRequired = dropdownData[serviceCode].locationRequired;\r\n gkNeedRequired = dropdownData[serviceCode].needRequired;\r\n gkContactRequired = dropdownData[serviceCode].contactRequired;\r\n gkAllowGroupNotes = dropdownData[serviceCode].allowGroupNotes;\r\n gkServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n gkMileageRequired = dropdownData[serviceCode].mileageRequired;\r\n\r\n //As per original specs No groups where DOC Time is allowed\r\n if (docTimeRequired === 'Y') gkAllowGroupNotes = 'N';\r\n\r\n //DOCTIME//\r\n //1) if doc time, or travel time are required, display doc time area.\r\n if (docTimeRequired === 'Y' || travelTimeRequired === 'Y') {\r\n docTimeDisplay.classList.remove('hidden');\r\n } else docTimeDisplay.classList.add('hidden');\r\n //2) if doc time required show a popup\r\n //Added calledAction to bypass calling docTimePopup when selecting consumers, only on changing bill codes\r\n //Also no popup if CN is Batched\r\n if (\r\n docTimeRequired === 'Y' &&\r\n calledAction !== 'consumerSelect' &&\r\n (cnBatched === '' || cnBatched === null)\r\n ) {\r\n //popup doctime required popup\r\n if (!isReadOnly) docTimeRequiredPopup();\r\n }\r\n switch (docTimeRequired) {\r\n case 'Y':\r\n docTimeMinutesField.parentElement.classList.remove('hidden');\r\n timerButtons.classList.remove('hidden');\r\n break;\r\n default:\r\n docTimeMinutesField.parentElement.classList.add('hidden');\r\n timerButtons.classList.add('hidden');\r\n docTimeMinutesField.value = '0';\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n documentationTime = '';\r\n break;\r\n }\r\n switch (travelTimeRequired) {\r\n case 'Y':\r\n travelTimeMinutesField.parentElement.classList.remove('hidden');\r\n break;\r\n default:\r\n travelTimeMinutesField.parentElement.classList.add('hidden');\r\n travelTimeMinutesField.value = '0';\r\n travelTime = '';\r\n break;\r\n }\r\n switch (gkMileageRequired) {\r\n case 'Y':\r\n mileageInput.classList.remove('hidden');\r\n break;\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileageInput.value = '';\r\n mileage = '';\r\n break;\r\n }\r\n\r\n ////////////////////////////////////\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (gkLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (gkLocationRequired === 'Y' && (locationId === '' || locationId === '0')) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (gkNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (gkNeedRequired === 'Y' && (needId === '' || needId === '0')) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (gkContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (gkContactRequired === 'Y' && (contactId === '' || contactId === '0')) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n var services = dropdownData[serviceCode].services;\r\n if (gkServiceRequired === 'Y' && services.length === 0) {\r\n serviceDropdown.classList.remove('error');\r\n } else if (gkServiceRequired === 'Y' && (serviceId === '' || serviceId === '0')) {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n\r\n //Mileage\r\n if (gkMileageRequired === 'Y') {\r\n mileageInput.classList.remove('hidden');\r\n } else {\r\n mileageInput.value = '';\r\n mileageInput.classList.add('hidden');\r\n }\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n // ALLOW GROUP NOTES// if they have a group note made up, but change to billing code that doesn't allow group notes\r\n // reset all consumers from note - They will need to re-add a consumer// As per Angie allowGroupNotes === \"\" should allow group notes\r\n if (gkAllowGroupNotes === 'N') {\r\n switch (pageLoaded) {\r\n case 'review':\r\n if (selectedConsumerIds.length > 1) {\r\n if (docTimePopup) POPUP.hide(docTimePopup);\r\n removeAllConsumersFromNote();\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n }\r\n break;\r\n case 'new':\r\n if (selectedConsumerIds.length === 1) {\r\n } else if (selectedConsumerIds.length > 1) {\r\n removeAllConsumersFromNote();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } else {\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n }\r\n checkRequiredFields();\r\n }\r\n\r\n function setupCardEvents() {\r\n var tmpMileage;\r\n // dropdowns\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n allowGroupNotes = event.target.dataset.allowGroupNotes;\r\n serviceCode = selectedOption.value;\r\n // when this changes update following dropdowns\r\n populateBillerRelatedDropdowns();\r\n // reset biller related dropdown values when changing service/bill code:\r\n locationId = '';\r\n serviceId = '';\r\n needId = '';\r\n contactId = '';\r\n locationDropdown.firstElementChild.selectedIndex = 0;\r\n serviceDropdown.firstElementChild.selectedIndex = 0;\r\n needDropdown.firstElementChild.selectedIndex = 0;\r\n contactDropdown.firstElementChild.selectedIndex = 0;\r\n checkServiceFunding();\r\n checkRequiredFields();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n checkGKRequiredFields();\r\n }\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n //if ($.session.applicationName === 'Gatekeeper' && gkLocationRequired === 'Y') {\r\n if (advLocationRequired === 'Y' || gkLocationRequired === 'Y') {\r\n if (locationId === '') {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n serviceDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advServiceRequired === 'Y' || gkServiceRequired === 'Y') {\r\n if (serviceId === '') {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceLocationId = selectedOption.value;\r\n if (serviceLocationId !== '') {\r\n serviceLocationDropdown.classList.remove('error');\r\n } else serviceLocationDropdown.classList.add('error');\r\n checkRequiredFields();\r\n });\r\n }\r\n needDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n needId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advNeedRequired === 'Y' || gkNeedRequired === 'Y') {\r\n if (needId === '') {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n vendorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n vendorId = selectedOption.value;\r\n });\r\n contactDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n contactId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advContactRequired === 'Y' || gkContactRequired === 'Y') {\r\n if (contactId === '') {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n // setup input events\r\n serviceDateInput.addEventListener('change', event => {\r\n var validObj = validateTimesWhenDateChange();\r\n var sameDate = checkIfSameDates();\r\n\r\n var tempServiceDate = serviceDate;\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validObj.isValid && sameDate) {\r\n $.session.caseNoteTimeCheck = 'pass';\r\n } else {\r\n $.session.caseNoteTimeCheck = 'fail';\r\n }\r\n\r\n serviceDate = event.target.value;\r\n if (serviceDate > UTIL.getTodaysDate() || serviceDate === '') {\r\n serviceDateInput.classList.add('error');\r\n serviceDate = tempServiceDate;\r\n } else serviceDateInput.classList.remove('error');\r\n\r\n if (sameDate && currentTime < startTime) {\r\n validObj.startTime = false;\r\n }\r\n if (sameDate && currentTime < endTime) {\r\n validObj.endTime = false;\r\n }\r\n\r\n if (validObj.isValid) {\r\n startTimeInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n if (!validObj.startTime) startTimeInput.classList.add('error');\r\n if (!validObj.endTime) endTimeInput.classList.add('error');\r\n }\r\n\r\n populateVendorDropdown(); // Vendor is based off of date\r\n\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n startTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('startCheck');\r\n startTime = event.target.value;\r\n if (!isValid) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('endCheck')) {\r\n endTimeInput.classList.remove('error');\r\n }\r\n }\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('endCheck');\r\n endTime = event.target.value;\r\n // toggleSaveButton\r\n if (!isValid) {\r\n // show error\r\n endTimeInput.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('startCheck')) {\r\n startTimeInput.classList.remove('error');\r\n }\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n mileageInput.addEventListener('keypress', event => {\r\n //In GK milage is stored to the hundredth so need to check for decimal\r\n tmpMileage = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n //Prevent all but numbers and dec - DEC is only for GK\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode !== 46) {\r\n event.preventDefault();\r\n return;\r\n }\r\n } else {\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n //ADV Mileage 10 numbers no dec point\r\n mileageInput.addEventListener('keyup', event => {\r\n if (event.target.value.length > 10) event.target.value = tmpMileage;\r\n mileage = event.target.value;\r\n });\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n //GK Mileage can have dec point. 5 before dec and 2 after dec point (12345.67)\r\n mileageInput.addEventListener('keyup', event => {\r\n var splitTime = event.target.value.split('.');\r\n if (splitTime[0].length > 5) event.target.value = tmpMileage;\r\n if (splitTime[1] && splitTime[1].length > 2) event.target.value = tmpMileage;\r\n\r\n mileage = parseFloat(event.target.value).toFixed(2);\r\n });\r\n\r\n docTimeMinutesField.addEventListener('change', event => {\r\n documentationTime = parseInt(event.target.value) * 60; //Stored as seconds in DB\r\n });\r\n travelTimeMinutesField.addEventListener('change', event => {\r\n travelTime = event.target.value; //Stored as Minutes in DB\r\n });\r\n }\r\n noteTextInput.addEventListener('input', event => {\r\n noteText = event.target.value;\r\n checkRequiredFields();\r\n });\r\n // checkboxes\r\n confidentialCheckbox.addEventListener('change', event => {\r\n confidential = event.target.checked ? 'Y' : 'N';\r\n });\r\n serviceMonitoringCheckbox.addEventListener('change', event => {\r\n serviceMonitoring = event.target.checked ? 'Y' : 'N';\r\n });\r\n if (pageLoaded === 'review' && reviewRequired === 'Y' && reviewResults === 'R') {\r\n correctedCheckbox.addEventListener('change', event => {\r\n corrected = event.target.checked ? 'Y' : 'N';\r\n });\r\n }\r\n }\r\n // required fields/permissions\r\n function checkRequiredFields() {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n\r\n var noteInput = noteTextInput.querySelector('textarea');\r\n var consumers = document.querySelectorAll('.consumer-selected');\r\n\r\n if (noteInput.value === '') {\r\n noteTextInput.classList.add('error');\r\n } else {\r\n noteTextInput.classList.remove('error');\r\n }\r\n\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n } else {\r\n serviceCodeDropdown.classList.remove('error');\r\n }\r\n\r\n if (selectedConsumerIds.length > 1) {\r\n attachmentsBtn.classList.add('disabled');\r\n tempAttachmentArray = [];\r\n } else {\r\n attachmentsBtn.classList.remove('disabled');\r\n }\r\n\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else if (selectedConsumerIds.length > 0 || pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n deleteNoteBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function checkConsumerForMileage() {\r\n if ($.session.applicationName === 'Gatekeeper') return;\r\n var mileageAllowed = false;\r\n consumersThatCanHaveMileage.forEach(c => {\r\n selectedConsumerIds.forEach(cId => {\r\n if (c === cId) {\r\n mileageAllowed = true;\r\n }\r\n });\r\n });\r\n switch (mileageAllowed) {\r\n case true:\r\n mileageInput.classList.remove('hidden');\r\n break;\r\n\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileage = '';\r\n break;\r\n }\r\n }\r\n\r\n function getTimeFromInactivity(time) {\r\n timerRunning = false;\r\n documentationTime = time;\r\n }\r\n\r\n function removeAllConsumersFromNote() {\r\n var cards = document.querySelectorAll('.consumerCard');\r\n cards.forEach(card => {\r\n var cId = card.getAttribute('data-consumer-id');\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== cId);\r\n card.parentElement.remove();\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n populateBillerRelatedDropdowns();\r\n warningPopup(\r\n 'You have selected a bill code that does not allow group notes. Please select only one consumer.',\r\n null,\r\n null,\r\n false,\r\n );\r\n }\r\n\r\n function deleteConfirmation() {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n if (timerRunning) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n pendingSave.show('Deleting Note...');\r\n await caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you would like to delete this case note?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n async function singleNoteToGroupNote() {\r\n await caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pageLoaded = 'new';\r\n isGroupNote = true;\r\n noteId = 0;\r\n convertToGroupNote = null;\r\n //fix shit\r\n if (travelTime === null) travelTime = 0;\r\n if (documentationTime === null) documentationTime = 0;\r\n endTime = endTime.substring(0, 5);\r\n startTime = startTime.substring(0, 5);\r\n }\r\n\r\n function setGroupData() {\r\n //remove consumers from active list if they are part of the group\r\n groupConsumers = 'Other consumers part of this group ';\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n var splitName = name.split(',');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[1],\r\n LN: splitName[0],\r\n id: id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (id !== consumerId) groupConsumers += ` | ${name} `;\r\n }\r\n }\r\n\r\n function setPermissions() {\r\n //caseNotesUpdate === True means they have view only permisison\r\n //Can't create new notes or update/delete notes.\r\n //Here View Only is the oppsite of update (update = true so viewonly = false)\r\n viewOnly = !$.session.CaseNotesUpdate;\r\n // IF view only permisisons OR the note is batched (batched notes are read only). A batched case note has the batched ID in cnBatched\r\n //if cnBatched is not \"\" it IS batched -- CHECKING IF IT IS BATCHED -- IF NOT EMPTY, THEN IT IS BATCHED\r\n if (viewOnly || (cnBatched && cnBatched !== '')) setInputstoReadOnly();\r\n\r\n // in GK Anywhere, if case note is NOT batched, then check that user has the Case Notes Update Entered permission\r\n // CHECKING IF IT IS NOT BATCHED -- EMPTY STRING IS NOT BATCHED\r\n if ($.session.applicationName === 'Gatekeeper' && (!cnBatched || cnBatched === '')) {\r\n if ($.session.CaseNotesUpdate) {\r\n if (\r\n !$.session.CaseNotesUpdateEntered ||\r\n ($.session.CaseNotesUpdateEntered && caseManagerId === $.session.PeopleId)\r\n ) {\r\n isReadOnly = false; //can edit (correct alignment of Update and UpdateEntered Case Notes permissions)\r\n } else {\r\n isReadOnly = true; //can not edit (with UpdateEntered permission, can't edit other people's case notes)\r\n }\r\n } else {\r\n isReadOnly = true; //can not edit (no overall update permission)\r\n }\r\n }\r\n\r\n if (isReadOnly) setInputstoReadOnly();\r\n\r\n //Set Permissions is the last thing that gets called. Adding Dashboard New CN Events here.\r\n if (fromDashboard) {\r\n moveConsumerToConsumerSection(dashboardConsumer);\r\n }\r\n }\r\n\r\n function setInputstoReadOnly() {\r\n //Set inputs to read only\r\n serviceDateInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n startTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n endTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n mileageInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Disable Dropdowns/Checkbox\r\n serviceCodeDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n locationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n serviceDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n if (serviceLocationDropdown)\r\n serviceLocationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n needDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n vendorDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n contactDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n if ($.session.applicationName === 'Gatekeeper') serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n\r\n if (docTimeMinutesField)\r\n docTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n if (travelTimeMinutesField)\r\n travelTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Remove delete and save buttons\r\n deleteNoteBtn.remove();\r\n saveNoteBtn.remove();\r\n //Remove Start and Stop Doc time buttons\r\n if (timerStopBtn) timerStopBtn.remove();\r\n if (timerStartBtn) timerStartBtn.remove();\r\n //disable consumer list button\r\n var consumerListBtn = document.querySelector('.consumerListBtn');\r\n if (consumerListBtn) {\r\n consumerListBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function addAttachmentsToCN(attachments, reviewAttachments) {\r\n reviewAttachmentArray = reviewAttachments;\r\n attachments.forEach(attachment => {\r\n tempAttachmentArray.push(attachment);\r\n });\r\n attachmentCount = tempAttachmentArray.length + reviewAttachmentArray.length;\r\n attachmentsBtn.getElementsByTagName('span')[0].innerText = `ATTACHMENTS (${attachmentCount})`;\r\n if (attachmentCount > 0) {\r\n attachmentsBtn.classList.add('hasAttachments');\r\n } else attachmentsBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n function removeAttachmentFromTempAttachmentArray(attachmentName) {\r\n tempAttachmentArray = tempAttachmentArray.filter(\r\n attachment => attachment.description !== attachmentName,\r\n );\r\n }\r\n\r\n function checkConfidential() {\r\n if (confidential === 'Y' && caseManagerId !== $.session.PeopleId) {\r\n noteTextInput.querySelector('.input-field__input').value = 'This is a confidential note.';\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n }\r\n }\r\n\r\n function clearAllGlobalVariables() {\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n }\r\n\r\n function loadPage(dashConsumer) {\r\n const advPromises = [];\r\n const gkPromises = [];\r\n const dropdownDataPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getDropdownData(function (dropdownData) {\r\n dealWithDropdownDataHugeString(dropdownData);\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(dropdownDataPromise);\r\n gkPromises.push(dropdownDataPromise);\r\n\r\n const getBillersListPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getBillersListForDropDown(function (results) {\r\n billers = results;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getBillersListPromise);\r\n gkPromises.push(getBillersListPromise);\r\n\r\n //ADV Only\r\n if ($.session.applicationName === 'Advisor') {\r\n const getConsumersThatCanHaveMileagePromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getConsumersThatCanHaveMileage(function (results) {\r\n consumersThatCanHaveMileage = [];\r\n results.forEach(c => {\r\n consumersThatCanHaveMileage.push(c.consumerid);\r\n });\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getConsumersThatCanHaveMileagePromise);\r\n }\r\n\r\n const getReviewRequiredForCaseManagerPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getReviewRequiredForCaseManager($.session.PeopleId, function (results) {\r\n reviewRequired = results[0].reviewrequired === '' ? 'N' : results[0].reviewrequired;\r\n defaultServiceCode = results[0].serviceid;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getReviewRequiredForCaseManagerPromise);\r\n gkPromises.push(getReviewRequiredForCaseManagerPromise);\r\n\r\n //GK Only - review only\r\n if ($.session.applicationName === 'Gatekeeper' && pageLoaded === 'review') {\r\n const getAttachmentsPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getCaseNoteAttachmentsList(noteId, res => {\r\n reviewAttachmentArray = res;\r\n attachmentCount = reviewAttachmentArray.length;\r\n resolve('success');\r\n });\r\n });\r\n gkPromises.push(getAttachmentsPromise);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n Promise.all(advPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n newNote.init(dashConsumer);\r\n return;\r\n } else {\r\n newNote.init();\r\n return;\r\n }\r\n }\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) {\r\n setGroupData(); //Group Note\r\n } else {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n // roster2.refreshRosterList()\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n }\r\n reviewNote.init();\r\n return;\r\n }\r\n });\r\n } else {\r\n Promise.all(gkPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n newNote.init(dashConsumer);\r\n return;\r\n } else {\r\n newNote.init();\r\n return;\r\n }\r\n }\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) {\r\n setGroupData(); //Group Note\r\n } else {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n }\r\n reviewNote.init();\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * GEN init func\r\n * @param {string} pageToLoad 'new' or 'review'\r\n * @param {[object]} reviewNoteData used when page to load = review\r\n * @param {*} gd used when paget to load = review\r\n * @param {object} consumerFromDash used when loading a new note from the dashboard\r\n */\r\n function init(pageToLoad, reviewNoteData, gd, consumerFromDash) {\r\n if (consumerFromDash) {\r\n fromDashboard = true;\r\n } else fromDashboard = false;\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n //Below removes users from the group from the active list\r\n if (groupData && groupNoteId !== 0) {\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n roster2.removeConsumerFromActiveConsumers(id);\r\n }\r\n }\r\n consumerListBtn = document.querySelector('.consumerListBtn');\r\n if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n groupData = gd;\r\n rd = null;\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n travelTime = 0;\r\n timerRunning = false;\r\n documentationTime = 0;\r\n selectedConsumerIds = [];\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n attachmentCount = 0;\r\n pageLoaded = pageToLoad;\r\n setNoteValues(reviewNoteData);\r\n loadPage(consumerFromDash);\r\n }\r\n\r\n return {\r\n checkRequiredFields,\r\n // build\r\n buildCaseNoteCard,\r\n buildConsumersList,\r\n buildDocTime,\r\n // populate\r\n populateBillerDropdown,\r\n // other\r\n disableCard,\r\n enableCard,\r\n moveConsumerToConsumerSection,\r\n checkGKRequiredFields,\r\n checkConfidential,\r\n checkIfBatched,\r\n checkIfCredit,\r\n getTimeFromInactivity,\r\n // Phrases\r\n cnPhrasesDone,\r\n //permissions\r\n setPermissions,\r\n //RESET VALS\r\n clearAllGlobalVariables,\r\n //ATTACHMENTS\r\n addAttachmentsToCN,\r\n removeAttachmentFromTempAttachmentArray,\r\n //Dropdown Data for Overview Filter\r\n dealWithDropdownDataHugeString,\r\n // init\r\n init,\r\n };\r\n})();\r\n","var noteSSA = (function () {\r\n // DOM Stuff\r\n let caseNoteCard;\r\n let serviceDateInput,\r\n startTimeInput,\r\n endTimeInput,\r\n noteTextInput,\r\n mileageInput,\r\n saveAndNewNoteBtn;\r\n let serviceCodeDropdown; // billing/service code\r\n let locationDropdown,\r\n serviceDropdown,\r\n serviceLocationDropdown,\r\n needDropdown,\r\n vendorDropdown,\r\n contactDropdown;\r\n let myPhrasesBtn,\r\n deleteNoteBtn,\r\n cancelNoteBtn,\r\n timerStartBtn,\r\n timerStopBtn,\r\n consumerListBtn,\r\n attachmentsBtn;\r\n let confidentialCheckbox;\r\n let serviceMonitoringCheckbox;\r\n let docTimeMinutesField, travelTimeMinutesField;\r\n let groupNoteDisplay;\r\n // Values & Data\r\n var selectedConsumerIds = [];\r\n var selectedConsumerID;\r\n var dropdownDataKeys;\r\n var dropdownData = {};\r\n var billers; // for casemanager dropdown\r\n var consumersThatCanHaveMileage;\r\n var defaultServiceCode;\r\n var pageLoaded;\r\n var timerRunning;\r\n var groupData;\r\n var lastUpdatedBy;\r\n var enteredBy;\r\n var lastUpdated;\r\n var groupConsumers;\r\n var mileage;\r\n let billerDropdownData;\r\n let fromDashboard;\r\n let dashboardConsumer;\r\n // GK Required\r\n var suppressDocTimePopup;\r\n var gkLocationRequired;\r\n var gkNeedRequired;\r\n var gkContactRequired;\r\n var gkServiceRequired;\r\n var gkAllowGroupNotes;\r\n var gkMileageRequired;\r\n // note data\r\n var isSSANote = true;\r\n var noteId;\r\n var credit;\r\n var serviceCode;\r\n var serviceCodeName;\r\n var locationId;\r\n var serviceId;\r\n var serviceName; // Service DDL current selected value\r\n var servicename; // Service DDL default value from Review Data (rd)\r\n var servicePersonApproved;\r\n var serviceLocationId;\r\n var needId;\r\n var vendorId;\r\n var contactId;\r\n var serviceDate;\r\n var startTime;\r\n var endTime;\r\n var noteText;\r\n var confidential;\r\n var serviceMonitoring;\r\n var reviewRequired;\r\n var documentationTime;\r\n var travelTime;\r\n //Attachment\r\n let tempAttachmentArray = [],\r\n reviewAttachmentArray = [],\r\n attachmentCount;\r\n // Revew Note Data Only\r\n var caseManagerId;\r\n var consumerId;\r\n var reviewData; // all the data\r\n var reviewResults;\r\n var reviewRejectReason;\r\n var correctedCheckbox;\r\n var corrected;\r\n var isGroupNote;\r\n var convertToGroupNote = false; //When reviewing a single note, more consumers can be added to convert it to group note.\r\n var rd;\r\n // Permisisons\r\n var viewOnly;\r\n var cnBatched;\r\n //need for required fields\r\n var gkLocationRequired = '';\r\n var gkServiceRequired = '';\r\n var gkNeedRequired = '';\r\n var gkContactRequired = '';\r\n var advLocationRequired = '';\r\n var advServiceRequired = '';\r\n var advNeedRequired = '';\r\n var advContactRequired = '';\r\n // case note inputs\r\n var isReadOnly;\r\n\r\n // Utils\r\n // ----------------------------------------\r\n function warningPopup(text, continueFunc, cancelFunc, hide_X = true) {\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n hideX: hide_X,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (continueFunc) {\r\n const continueBtn = button.build({\r\n text: 'continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n continueFunc();\r\n },\r\n });\r\n btnWrap.appendChild(continueBtn);\r\n }\r\n if (cancelFunc) {\r\n var cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n cancelFunc();\r\n },\r\n });\r\n btnWrap.appendChild(cancelBtn);\r\n }\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = text;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function validateTimesWhenDateChange() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n // var startTime = UTIL.convertToMilitary(startInput.value);\r\n var startTime = startInput.value;\r\n // var endTime = UTIL.convertToMilitary(endInput.value);\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let isTimeValid;\r\n isTimeValid = true;\r\n\r\n if (dateInput.value === currentDate) {\r\n isTimeValid = currentTime < startTime || currentTime < endTime ? false : true; // current date: can't have Time be future time\r\n }\r\n\r\n if (startTime >= endTime) {\r\n isTimeValid = false; // any date: startTime can't be after endTime\r\n }\r\n\r\n if (startTime === '' || endTime === '') {\r\n isTimeValid = false; // start time and end time are required\r\n }\r\n\r\n //isTimeValid = startTime >= endTime ? false : true; // any date: startTime can't be after endTime\r\n\r\n return {\r\n isValid: isTimeValid,\r\n startTime,\r\n endTime,\r\n };\r\n }\r\n function checkIfSameDates() {\r\n var dateEntered = new Date(serviceDateInput.value);\r\n var todaysDate = new Date();\r\n dateEntered = dateEntered.getMilliseconds();\r\n todaysDate = todaysDate.getMilliseconds();\r\n\r\n return dateEntered === todaysDate ? 0 : 1;\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setNoteValues(reviewData) {\r\n if (pageLoaded === 'new') {\r\n caseManagerId = $.session.PeopleId;\r\n consumerId = '';\r\n\r\n noteId = 0;\r\n serviceCode = '';\r\n locationId = '';\r\n serviceId = '';\r\n serviceLocationId = '';\r\n needId = '';\r\n vendorId = '';\r\n contactId = '';\r\n serviceDate = UTIL.getTodaysDate();\r\n startTime = UTIL.getCurrentTime();\r\n endTime = '';\r\n noteText = '';\r\n confidential = 'N';\r\n serviceMonitoring = 'N';\r\n corrected = 'N';\r\n reviewRequired = '';\r\n } else {\r\n rd = reviewData[0];\r\n isGroupNote = rd.groupid === '' ? false : true;\r\n\r\n caseManagerId = rd.casemanagerid;\r\n consumerId = rd.consumerid;\r\n noteId = rd.noteid;\r\n groupNoteId = rd.groupid === '' ? 0 : rd.groupid;\r\n credit = rd.credit;\r\n serviceCode = rd.mainbillingorservicecodeid; // serv/bill code\r\n serviceCodeName = rd.mainbillingorservicecodename;\r\n locationId = rd.locationcode;\r\n serviceId = rd.servicecode; // services\r\n serviceName = rd.servicename;\r\n serviceLocationId = rd.servicelocationid;\r\n needId = rd.serviceneedcode;\r\n vendorId = rd.vendorid;\r\n contactId = rd.contactcode;\r\n serviceDate = UTIL.formatDateToIso(rd.servicedate.split(' ')[0]);\r\n startTime = rd.starttime;\r\n endTime = rd.endtime;\r\n noteText = rd.casenote;\r\n confidential = rd.confidential;\r\n serviceMonitoring = rd.outcomeServiceMonitoring;\r\n corrected = rd.corrected;\r\n reviewRequired = rd.reviewrequired === '' ? 'N' : rd.reviewrequired;\r\n reviewResults = rd.reviewresults;\r\n reviewRejectReason = rd.rejectionreason;\r\n documentationTime = rd.totaldoctime;\r\n travelTime = rd.traveltime;\r\n lastUpdated = rd.lastupdate;\r\n enteredBy = rd.originaluserid;\r\n originalUserName = rd.originaluserfullname;\r\n cnBatched = rd.batched;\r\n mileage = rd.totalmiles;\r\n }\r\n }\r\n function checkIfBatched() {\r\n return cnBatched !== '' ? true : false;\r\n }\r\n\r\n function checkIfCredit() {\r\n return credit === 'Y' || credit === '1' ? true : false; //ADVUNIT: 1 and GKUNIT: 'Y'\r\n }\r\n\r\n function isCaseNoteReadOnly() {\r\n if (credit === 'Y' || credit === '-1') {\r\n isReadOnly = true;\r\n // } else if (caseManagerId !== $.session.PeopleId) {\r\n // isReadOnly = true;\r\n } else {\r\n isReadOnly = false;\r\n }\r\n }\r\n\r\n function noteSaveUpdate(saveAndNew) {\r\n //Remove the selected consumer from active list\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n var vendorInput = vendorDropdown.firstElementChild;\r\n var locationInput = locationDropdown.firstElementChild;\r\n var serviceInput = serviceDropdown.firstElementChild;\r\n var needInput = needDropdown.firstElementChild;\r\n var contactInput = contactDropdown.firstElementChild;\r\n documentationTimer.stopTimer;\r\n noteText = UTIL.removeUnsavableNoteText(noteText);\r\n // If they are converting from a single note to a group note, delete existing note and create a new note classified as a group note\r\n if (convertToGroupNote) {\r\n singleNoteToGroupNote();\r\n }\r\n if (pageLoaded === 'new') {\r\n var overlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId: 0,\r\n groupNoteId: 0,\r\n };\r\n var saveData = {\r\n caseManagerId,\r\n noteId,\r\n // dropdowns\r\n serviceOrBillingCodeId: serviceCode,\r\n locationCode: locationId,\r\n serviceCode: serviceId,\r\n needCode: needId,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId: vendorInput.options[vendorInput.selectedIndex] == undefined ? '' : vendorInput.options[vendorInput.selectedIndex].value,\r\n contactCode: contactId,\r\n serviceLocationCode: serviceLocationId,\r\n caseNote: noteText, // from note input\r\n confidential, // from checkbox\r\n corrected, // from checkbox\r\n\r\n casenotemileage: String(mileage) === 'null' ? '0' : String(mileage),\r\n casenotetraveltime: String(travelTime),\r\n documentationTime: String(documentationTime),\r\n reviewRequired,\r\n serviceMonitoring, // from checkbox\r\n };\r\n newNoteSSA.saveNote(\r\n { overlapData, saveData, selectedConsumerIds, saveAndNew },\r\n tempAttachmentArray,\r\n );\r\n return;\r\n }\r\n\r\n if (pageLoaded === 'review') {\r\n // clean start time and end time:\r\n endTime = endTime.length === 8 ? endTime.substring(0, 5) : endTime;\r\n startTime = startTime.length === 8 ? startTime.substring(0, 5) : startTime;\r\n var updateOverlapData = {\r\n consumerId,\r\n startTime,\r\n endTime,\r\n serviceDate,\r\n caseManagerId,\r\n noteId,\r\n groupNoteId,\r\n };\r\n var updateData = {\r\n noteId,\r\n groupNoteId,\r\n caseManagerId,\r\n consumerId,\r\n serviceOrBillingCodeId: serviceCode, // for Billing Code DDL\r\n locationCode:\r\n locationInput.selectedIndex === -1\r\n ? null\r\n : locationInput.options[locationInput.selectedIndex].value,\r\n serviceCode: serviceId, // for Service DDL\r\n needCode:\r\n needInput.selectedIndex === -1 ? null : needInput.options[needInput.selectedIndex].value,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n vendorId,\r\n contactCode:\r\n contactInput.selectedIndex === -1\r\n ? null\r\n : contactInput.options[contactInput.selectedIndex].value,\r\n serviceLocationCode: serviceLocationId,\r\n reviewRequired,\r\n confidential,\r\n corrected,\r\n caseNote: noteText,\r\n casenotemileage: String(mileage) === 'null' ? '' : String(mileage),\r\n casenotetraveltime: travelTime === null ? String(0) : String(travelTime),\r\n documentationTime: documentationTime === null ? String(0) : String(documentationTime),\r\n serviceMonitoring,\r\n };\r\n reviewNote.updateNote(\r\n { overlapData: updateOverlapData, updateData, selectedConsumerIds, isGroupNote },\r\n tempAttachmentArray,\r\n );\r\n }\r\n }\r\n\r\n // Dropdowns\r\n // services was left in this data set (same as note.js) but is not used to populate Service DDL\r\n function dealWithDropdownDataHugeString(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n data = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.populateDropdownDataResult,\r\n );\r\n\r\n var billingCodes = [].slice.call(xmlDoc.getElementsByTagName('billingcode'));\r\n billingCodes.forEach(bc => {\r\n var tmpServiceCode = [].slice.call(bc.getElementsByTagName('codename'))[0];\r\n var tmpServiceId = [].slice.call(bc.getElementsByTagName('serviceid'))[0];\r\n var tmpServiceFunding = [].slice.call(bc.getElementsByTagName('includeinfunding'))[0];\r\n var tmpServiceRequired = [].slice.call(bc.getElementsByTagName('servicerequired'))[0];\r\n var tmpLocationRequired = [].slice.call(bc.getElementsByTagName('locationrequired'))[0];\r\n var tmpNeedRequired = [].slice.call(bc.getElementsByTagName('needrequired'))[0];\r\n var tmpContactRequired = [].slice.call(bc.getElementsByTagName('contactrequired'))[0];\r\n var tmpAllowGroupNotes = [].slice.call(bc.getElementsByTagName('allowgroupnotes'))[0];\r\n var tmpMileageRequired = [].slice.call(bc.getElementsByTagName('mileagerequired'))[0];\r\n var tmpDocTimeRequired = [].slice.call(bc.getElementsByTagName('doctimerequired'))[0];\r\n var tmpTravelTimeRequired = [].slice.call(bc.getElementsByTagName('traveltimerequired'))[0];\r\n var locations = [].slice.call(bc.getElementsByTagName('location'));\r\n var contacts = [].slice.call(bc.getElementsByTagName('contact'));\r\n var services = [].slice.call(bc.getElementsByTagName('service'));\r\n var needs = [].slice.call(bc.getElementsByTagName('need'));\r\n\r\n var tmpObject = {};\r\n tmpObject.serviceCode = tmpServiceCode ? tmpServiceCode.textContent : '';\r\n tmpObject.serviceId = tmpServiceId ? tmpServiceId.textContent : '';\r\n tmpObject.serviceFunding = tmpServiceFunding ? tmpServiceFunding.textContent : '';\r\n tmpObject.serviceRequired = tmpServiceRequired ? tmpServiceRequired.textContent : '';\r\n tmpObject.locationRequired = tmpLocationRequired ? tmpLocationRequired.textContent : '';\r\n tmpObject.needRequired = tmpNeedRequired ? tmpNeedRequired.textContent : '';\r\n tmpObject.contactRequired = tmpContactRequired ? tmpContactRequired.textContent : '';\r\n tmpObject.allowGroupNotes = tmpAllowGroupNotes ? tmpAllowGroupNotes.textContent : '';\r\n tmpObject.mileageRequired = tmpMileageRequired ? tmpMileageRequired.textContent : '';\r\n tmpObject.docTimeRequired = tmpDocTimeRequired ? tmpDocTimeRequired.textContent : '';\r\n tmpObject.travelTimeRequired = tmpTravelTimeRequired\r\n ? tmpTravelTimeRequired.textContent\r\n : '';\r\n tmpObject.locations = [];\r\n tmpObject.contacts = [];\r\n tmpObject.services = [];\r\n tmpObject.needs = [];\r\n\r\n locations.forEach(loc => {\r\n var tmpLocName = [].slice.call(loc.getElementsByTagName('locname'))[0].textContent;\r\n var tmpLocCode = [].slice.call(loc.getElementsByTagName('loccode'))[0].textContent;\r\n tmpObject.locations.push({\r\n locName: tmpLocName,\r\n locCode: tmpLocCode,\r\n });\r\n });\r\n contacts.forEach(loc => {\r\n var tmpContactName = [].slice.call(loc.getElementsByTagName('contactname'))[0]\r\n .textContent;\r\n var tmpContactCode = [].slice.call(loc.getElementsByTagName('contactcode'))[0]\r\n .textContent;\r\n tmpObject.contacts.push({\r\n contactName: tmpContactName,\r\n contactCode: tmpContactCode,\r\n });\r\n });\r\n services.forEach(loc => {\r\n var tmpServiceName = [].slice.call(loc.getElementsByTagName('servicename'))[0]\r\n .textContent;\r\n var tmpServiceCode = [].slice.call(loc.getElementsByTagName('servicecode'))[0]\r\n .textContent;\r\n tmpObject.services.push({\r\n serviceName: tmpServiceName,\r\n serviceCode: tmpServiceCode,\r\n });\r\n });\r\n needs.forEach(loc => {\r\n var tmpNeedName = [].slice.call(loc.getElementsByTagName('needname'))[0].textContent;\r\n var tmpNeedCode = [].slice.call(loc.getElementsByTagName('needcode'))[0].textContent;\r\n tmpObject.needs.push({\r\n needName: tmpNeedName,\r\n needCode: tmpNeedCode,\r\n });\r\n });\r\n\r\n data.push(tmpObject);\r\n });\r\n\r\n return data;\r\n }\r\n\r\n var beautifulObject = decipherXML(res);\r\n\r\n // create object for quick access\r\n beautifulObject.forEach(dd => {\r\n // create object for each billercode\r\n if (!dropdownData[dd.serviceId]) {\r\n dropdownData[dd.serviceId] = {\r\n serviceId: dd.serviceId,\r\n serviceCode: dd.serviceCode,\r\n serviceFunding: dd.serviceFunding,\r\n locations: [...dd.locations],\r\n contacts: [...dd.contacts],\r\n services: [...dd.services],\r\n needs: [...dd.needs],\r\n docTimeRequired: dd.docTimeRequired,\r\n travelTimeRequired: dd.travelTimeRequired,\r\n mileageRequired: dd.mileageRequired,\r\n locationRequired: dd.locationRequired,\r\n needRequired: dd.needRequired,\r\n serviceRequired: dd.serviceRequired,\r\n contactRequired: dd.contactRequired,\r\n allowGroupNotes: dd.allowGroupNotes,\r\n };\r\n }\r\n });\r\n\r\n dropdownDataKeys = Object.keys(dropdownData);\r\n return dropdownData;\r\n }\r\n\r\n function checkServiceFunding() {\r\n if ($.session.applicationName === 'Advisor') {\r\n if (\r\n serviceCodeDropdown.firstChild.options[\r\n serviceCodeDropdown.firstChild.selectedIndex\r\n ].getAttribute('data-service-funding') === 'N'\r\n ) {\r\n serviceLocationDropdown.classList.add('hidden');\r\n serviceLocationDropdown.classList.remove('error');\r\n serviceLocationDropdown.firstChild.selectedIndex = 0;\r\n serviceLocationId = '00';\r\n } else {\r\n serviceLocationDropdown.classList.remove('hidden');\r\n if (serviceLocationId === '' || serviceLocationId === '00')\r\n serviceLocationDropdown.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n // populate Service Code DDL on page load\r\n function populateServiceDropdown(ConsumerId) {\r\n caseNotesAjax.getSSAServiceOptionsDropdown(ConsumerId, serviceDate, function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.serviceCode,\r\n text: r.fullName,\r\n attributes: [{ key: 'personApproved', value: r.personApproved }],\r\n };\r\n });\r\n if ($.session.applicationName === 'Gatekeeper') data.unshift({ value: '', text: '' }); // add blank value in service dropdown for GK only\r\n\r\n var defaultVal;\r\n var defaultinlist = false;\r\n var localservicePersonApproved;\r\n\r\n // if this is a review, review data (rd) will have a value\r\n if (rd && rd.servicecode) {\r\n serviceId = rd.servicecode;\r\n defaultVal = serviceId;\r\n // does the review CN service exist in the Service DDL items\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].value === serviceId) {\r\n servicename = data[i].text;\r\n localservicePersonApproved = data[i].attributes[0].value;\r\n defaultinlist = true;\r\n }\r\n }\r\n } else {\r\n serviceId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'serviceDropdwn');\r\n\r\n dropdown.populate(serviceDropdown, data, defaultVal);\r\n\r\n // if Service DDL has no item selected, then clear all DDLs and error condition\r\n if (!defaultVal) {\r\n serviceDropdown.classList.add('error');\r\n // clear Billing DDL (serviceCodeDropDown) and error condition\r\n var serviceCodeDDL = document.getElementById('serviceCodeDropdown');\r\n serviceCodeDDL.options[0] = null;\r\n serviceCodeDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n }\r\n\r\n // if Reviewing a CN, then populate other DDLs using selected servicename (not serviceID)\r\n if (pageLoaded === 'review') {\r\n if (!defaultinlist) {\r\n serviceDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n populateBillerDropdown(servicename, localservicePersonApproved);\r\n populateBillerRelatedDropdowns();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // autopopulate Biller Code DDL after Service Code select\r\n function populateBillerDropdown(servicename, servicepersonapproved) {\r\n caseNotesAjax.getSSABillCodesFromService(\r\n servicename,\r\n servicepersonapproved,\r\n function (results, person) {\r\n let filteredResult = results.filter(arrItem =>\r\n arrItem.noteType === person || arrItem.noteType === 'G' ? true : false,\r\n );\r\n if (filteredResult.length < 1) filteredResult = results;\r\n var data = filteredResult.map(r => {\r\n return {\r\n value: r.service_id,\r\n text: r.fullName,\r\n attributes: [{ key: 'serviceCode', value: r.serviceCode }],\r\n };\r\n });\r\n\r\n var defaultVal = defaultServiceCode;\r\n\r\n // there should always be one Billing Code (else clause is defensive coding)\r\n if (data.length === 1) {\r\n if (pageLoaded === 'review') {\r\n // when auto populating the Billing DDL\r\n // if the saved Billing value is not equal to the selected value, update Billing DDL and related DDLs\r\n if (data[0].value !== rd.mainbillingorservicecodeid) {\r\n //GROUP NOTE CODE: ADD the saved (previous) value to DDL\r\n data.unshift({\r\n id: '0',\r\n value: rd.mainbillingorservicecodeid,\r\n text: rd.mainbillingorservicecodename,\r\n });\r\n\r\n // saved service equal to selected service (initial view of a review CN)\r\n if (servicename === rd.servicename) {\r\n defaultVal = rd.mainbillingorservicecodeid;\r\n serviceCode = rd.mainbillingorservicecodeid;\r\n data.splice(1, 1); //remove unused item from serviceCodeDropDown\r\n } else {\r\n // user has selected new service\r\n defaultVal = data[1].value;\r\n serviceCode = data[1].value;\r\n data.splice(0, 1); //remove unused item from serviceCodeDropDown\r\n checkGKRequiredFields();\r\n displayDocTimeSection();\r\n }\r\n populateBillerRelatedDropdowns();\r\n\r\n //\tif saved Billing value equal to selected\r\n } else {\r\n defaultVal = data[0].value;\r\n serviceCode = data[0].value;\r\n populateBillerRelatedDropdowns();\r\n checkGKRequiredFields();\r\n if (!suppressDocTimePopup) displayDocTimeSection();\r\n }\r\n } else {\r\n //new CN\r\n defaultVal = data[0].value;\r\n serviceCode = data[0].value;\r\n populateBillerRelatedDropdowns();\r\n clearBillerRelatedDropdowns();\r\n }\r\n } else {\r\n //defensive -- should only be one item in data\r\n data.unshift({ id: '0', value: '', text: '' }); //ADD Blank value\r\n data.sort(function (a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n dropdown.populate(serviceCodeDropdown, data, defaultVal);\r\n\r\n // if Billing Code DDL has no item selected, then error condition\r\n if (defaultVal === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceCodeDropdown.classList.remove('error');\r\n // saveNoteBtn.classList.remove('disabled');\r\n checkRequiredFields();\r\n }\r\n\r\n // reset this flag\r\n suppressDocTimePopup = false;\r\n\r\n serviceCodeDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n\r\n // TCM selected on a Group NOte\r\n // if (isGroupNote && dropdownData[serviceCode].docTimeRequired === 'Y') {\r\n // \tserviceCodeDropdown.classList.add('error');\r\n // \twarningPopup('You have selected a bill code that does not allow group notes. Please select only one consumer.', null, null, false);\r\n // \tvar checkGKRequiredFields = false;\r\n // \t clearBillerRelatedDropdowns(checkGKRequiredFields);\r\n // \tcheckRequiredFields();\r\n // }\r\n },\r\n );\r\n }\r\n\r\n function alphabetizeDDL(data) {\r\n data.sort(function (a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n return data;\r\n }\r\n\r\n function populateLocationDrodown() {\r\n var locations = dropdownData[serviceCode].locations;\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locCode,\r\n text: loc.locName,\r\n };\r\n });\r\n\r\n data = alphabetizeDDL(data);\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.locationcode) {\r\n locationId = rd.locationcode;\r\n defaultVal = rd.locationcode;\r\n } else {\r\n locationId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'locationDropdwn');\r\n\r\n dropdown.populate(locationDropdown, data, defaultVal);\r\n }\r\n\r\n function populateContactsDrodown() {\r\n var contacts = dropdownData[serviceCode].contacts;\r\n\r\n var data = contacts.map(contact => {\r\n return {\r\n value: contact.contactCode,\r\n text: contact.contactName,\r\n };\r\n });\r\n\r\n data = alphabetizeDDL(data);\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.contactcode) {\r\n contactId = rd.contactcode;\r\n defaultVal = rd.contactcode;\r\n } else {\r\n contactId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'contactDropdwn');\r\n\r\n dropdown.populate(contactDropdown, data, defaultVal);\r\n }\r\n\r\n function populateNeedsDrodown() {\r\n var needs = dropdownData[serviceCode].needs;\r\n var data = needs.map(need => {\r\n return {\r\n value: need.needCode,\r\n text: need.needName,\r\n };\r\n });\r\n\r\n data = alphabetizeDDL(data);\r\n data.unshift({ value: '', text: '' });\r\n\r\n var defaultVal;\r\n\r\n if (rd && rd.serviceneedcode) {\r\n needId = rd.serviceneedcode;\r\n defaultVal = rd.serviceneedcode;\r\n } else {\r\n needId = data[0] && data[0].value ? data[0].value : '';\r\n }\r\n\r\n dropDownDisplay(data, 'needDropdwn');\r\n\r\n dropdown.populate(needDropdown, data, defaultVal);\r\n }\r\n\r\n function dropDownDisplay(data, dropDown) {\r\n if (data.length > 1) {\r\n document.getElementById(dropDown).parentElement.style.display = '';\r\n //$(\"#needDropdwn\").show();\r\n } else {\r\n document.getElementById(dropDown).parentElement.style.display = 'none';\r\n //$(\"#needDropdwn\").hide();\r\n }\r\n }\r\n\r\n function clearBillerRelatedDropdowns() {\r\n locationId = '';\r\n needId = '';\r\n contactId = '';\r\n locationDropdown.firstElementChild.selectedIndex = 0;\r\n needDropdown.firstElementChild.selectedIndex = 0;\r\n contactDropdown.firstElementChild.selectedIndex = 0;\r\n\r\n checkServiceFunding();\r\n\r\n // if user selection is NULL, then error\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceCodeDropdown.classList.remove('error');\r\n // saveNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n checkGKRequiredFields();\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n }\r\n\r\n function populateBillerRelatedDropdowns() {\r\n // Skip populating dropdowns if biller doesn have a default service code. Breaks things.\r\n if (serviceCode !== '') {\r\n if (!rd) {\r\n locationId = '';\r\n needId = '';\r\n contactId = '';\r\n }\r\n //Below if statement added from ticket #31039 in 2020.3. It was noticed that if the user\r\n //had a default service code that was later set as inactive, they would still\r\n // have this service code associated with them but it would break the module.\r\n //This sould be a temp fix until there are measures put in place that prevent\r\n //this in the desktop application.\r\n if (dropdownData[serviceCode]) {\r\n populateLocationDrodown();\r\n populateContactsDrodown();\r\n populateNeedsDrodown();\r\n } else {\r\n //\tserviceCode = ''\r\n //\tdropdown.populate(serviceCodeDropdown, billerDropdownData);\r\n }\r\n }\r\n if (rd) {\r\n selectedConsumerIds[0] = rd.consumerid;\r\n populateVendorDropdown();\r\n populateServiceLocations();\r\n }\r\n }\r\n\r\n function populateVendorDropdown() {\r\n caseNotesAjax.getConsumerSpecificVendors(\r\n selectedConsumerIds[0],\r\n serviceDate,\r\n function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.vendorId,\r\n text: r.vendorName,\r\n };\r\n });\r\n //\t\t\tif ($.session.applicationName === 'Gatekeeper') data.unshift({ value: '', text: '' }); // add blank value in vendor dropdown for GK only\r\n var defaultVal;\r\n\r\n if (rd && rd.vendorid) {\r\n defaultVal = rd.vendorid;\r\n } else {\r\n vendorId = data[1] && data[1].value ? data[1].value : '';\r\n defaultVal = vendorId;\r\n }\r\n\r\n dropdown.populate(vendorDropdown, data, defaultVal);\r\n },\r\n );\r\n }\r\n\r\n function populateServiceLocations() {\r\n var serviceLocData = { serviceDate, consumerId: selectedConsumerIds[0] };\r\n caseNotesAjax.getServiceLocationsForCaseNoteDropDown(serviceLocData, function (results) {\r\n var data = results.map(r => {\r\n return {\r\n value: r.code,\r\n text: r.caption,\r\n };\r\n });\r\n data.unshift({ value: '', text: '' });\r\n var defaultVal;\r\n\r\n if (rd && rd.servicelocationid) {\r\n defaultVal = rd.servicelocationid;\r\n } else {\r\n //set to '00' if no val\r\n serviceLocationId = data[0] && data[0].value ? data[0].value : '00';\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor')\r\n dropdown.populate(serviceLocationDropdown, data, defaultVal);\r\n });\r\n }\r\n\r\n // Case Note Card\r\n // ----------------------------------------\r\n function disableCard() {\r\n // card disabled until consumers are moved over\r\n // caseNoteCard.classList.add('disabled');\r\n }\r\n function enableCard() {\r\n caseNoteCard.classList.remove('disabled');\r\n checkRequiredFields();\r\n }\r\n // Consumers\r\n function buildConsumerCard(clone) {\r\n var card = document.createElement('div');\r\n card.classList.add('caseNotes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n function moveConsumerToConsumerSection(selectedConsumers, isGroup) {\r\n var consumerList = document.querySelector('.consumers-list');\r\n if (pageLoaded === 'review') {\r\n if (!isGroupNote) {\r\n convertToGroupNote = true;\r\n }\r\n }\r\n //Remove the 'no consumer message' when adding a consumer. (only visible on new notes)\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.add('hidden');\r\n isGroupNote = isGroup;\r\n }\r\n selectedConsumers.forEach(consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (selectedConsumerIds.filter(id => id === consumer.id).length > 0) return;\r\n // If Group note and active consumers already exist on note, ignore.\r\n if (isGroupNote) {\r\n if (Object.keys(groupData[groupNoteId]).filter(id => id === consumer.id).length > 0) return;\r\n }\r\n consumer.card.classList.remove('highlighted');\r\n consumer.card.classList.remove('disabled');\r\n consumer.card.classList.add('consumer-selected');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone);\r\n //remove consumer on click\r\n card.addEventListener('click', () => {\r\n // var consumerListBtn = document.querySelector('.consumerListBtn');\r\n var consumer = event.target.getAttribute('data-consumer-id');\r\n event.target.parentElement.remove();\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== consumer);\r\n roster2.removeConsumerFromActiveConsumers(consumer);\r\n if (selectedConsumerIds.length === 0) {\r\n //\tconsumerListBtn.classList.remove('disabled');\r\n populateBillerRelatedDropdowns();\r\n //re show the message when there are no consumer selected\r\n if (pageLoaded === 'new') {\r\n var noConsumerMessage = document.getElementById('noConsumerMessage');\r\n noConsumerMessage.classList.remove('hidden');\r\n }\r\n }\r\n checkRequiredFields();\r\n checkConsumerForMileage();\r\n if (pageLoaded === 'review') {\r\n if (selectedConsumerIds.length === 1) {\r\n convertToGroupNote = false;\r\n }\r\n }\r\n });\r\n consumerList.appendChild(card);\r\n\r\n // new SSA notes can only have one consumer, reviewed SSA notes can have multiple consumers\r\n if (pageLoaded === 'new') {\r\n selectedConsumerIds.length = 0;\r\n selectedConsumerIds.push(consumer.id);\r\n } else {\r\n if (selectedConsumerIds.includes(consumer.id) === false) {\r\n selectedConsumerIds.push(consumer.id);\r\n }\r\n }\r\n\r\n checkConsumerForMileage();\r\n });\r\n\r\n // consumer specific dropdowns\r\n populateVendorDropdown();\r\n if ($.session.applicationName === 'Advisor') {\r\n populateServiceLocations();\r\n } else {\r\n // checkGKRequiredFields('consumerSelect');\r\n }\r\n checkRequiredFields(); //To enable save button if possible\r\n }\r\n // Details\r\n function buildDocTime() {\r\n var docTimeBody = document.createElement('div');\r\n // docTimeBody.classList.add('card__body');\r\n\r\n var docTime = document.createElement('div');\r\n docTime.id = 'docTime';\r\n //\tdocTime.classList.add('card');\r\n docTime.appendChild(docTimeBody);\r\n\r\n DOM.ACTIONCENTER.appendChild(docTime);\r\n\r\n if (serviceId === '' || serviceId === '0') docTime.classList.add('hidden');\r\n\r\n var minutesDisplay = document.createElement('div');\r\n // minutesDisplay.classList.add('inputWrap');\r\n\r\n // start/stop buttons\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'cntimerbuttons');\r\n timerStartBtn = button.build({\r\n text: 'Start Doc Timer',\r\n id: 'cnTimerStart',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-toggled', value: 'false' }],\r\n callback: function () {\r\n // caseNotesTimer.startCaseNoteTimer();\r\n if (timerRunning === true) return;\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n // if editing toggleSaveButton()\r\n },\r\n });\r\n timerStopBtn = button.build({\r\n text: 'Stop Doc Timer',\r\n id: 'cnTimerStop',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n // pauseTimer();\r\n if (timerRunning === false) return;\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n },\r\n });\r\n\r\n //PERMISSIONS// Doc Time minutes field is read only when $.session.UpdateCaseNotesDocTime === false\r\n var docTimeMinVal = rd\r\n ? rd.totaldoctime\r\n ? Math.round(Math.floor(parseInt(rd.totaldoctime) / 30) / 2)\r\n : 0\r\n : 0;\r\n docTimeMinutesField = input.build({\r\n label: 'Doc Time Minutes',\r\n id: 'docTimeMinutesDisplay',\r\n type: 'text',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '5' },\r\n { key: 'onkeypress', value: 'return event.charCode >= 48 && event.charCode <= 57' },\r\n ],\r\n readonly: $.session.UpdateCaseNotesDocTime === false ? true : false,\r\n value: String(docTimeMinVal),\r\n });\r\n\r\n minutesDisplay.appendChild(docTimeMinutesField);\r\n btnWrap.appendChild(timerStartBtn);\r\n btnWrap.appendChild(timerStopBtn);\r\n\r\n docTimeBody.appendChild(btnWrap);\r\n docTimeBody.appendChild(minutesDisplay);\r\n\r\n return docTime;\r\n }\r\n function parseSessionTimes(dirtyTime) {\r\n const isAMorPM = dirtyTime.includes('A') ? 'am' : 'pm';\r\n let time;\r\n\r\n if (isAMorPM === 'am') {\r\n time = `${dirtyTime.split('A')[0]} AM`;\r\n } else {\r\n time = `${dirtyTime.split('P')[0]} PM`;\r\n }\r\n\r\n time = UTIL.convertToMilitary(time);\r\n return time.slice(0, -3);\r\n }\r\n function checkTimesAreWithinWorkHours() {\r\n const warnStart = parseSessionTimes($.session.caseNotesWarningStartTime);\r\n const warnEnd = parseSessionTimes($.session.caseNotesWarningEndTime);\r\n\r\n if (\r\n $.session.caseNotesWarningStartTime === '00:00' ||\r\n $.session.caseNotesWarningEndTime === '00:00' ||\r\n !$.session.caseNotesWarningStartTime ||\r\n !$.session.caseNotesWarningEndTime ||\r\n $.session.caseNotesWarningStartTime === 'Null' ||\r\n $.session.caseNotesWarningEndTime === 'Null'\r\n ) {\r\n return true;\r\n }\r\n\r\n if (startTime < warnStart || startTime > warnEnd || endTime < warnStart || endTime > warnEnd) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n function buildCardDetailsSection() {\r\n function saveBtnAction(saveAndNew) {\r\n function preSave() {\r\n if ($.session.applicationName === 'Gatekeeper' && timerRunning) {\r\n documentationTime = documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n // Stop speech to text if running\r\n if ($.session.sttEnabled && document.querySelectorAll('.stt_listening').length > 0) {\r\n const listeningNodes = document.querySelectorAll('.stt_listening');\r\n listeningNodes.forEach(node => {\r\n node.dispatchEvent(new Event('click'));\r\n });\r\n }\r\n }\r\n if (\r\n (tempAttachmentArray.length > 0 || reviewAttachmentArray.length > 0) &&\r\n convertToGroupNote\r\n ) {\r\n const warningMessage = `Attachments on this case note will be lost by \r\n\t\t\t\tconverting this single case note to a group case note.`;\r\n warningPopup(\r\n warningMessage,\r\n () => {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n () => {\r\n noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n noteSaveUpdate(saveAndNew);\r\n }\r\n },\r\n () => {\r\n return;\r\n },\r\n );\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n preSave();\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const hoursAreWithinWorkHours = checkTimesAreWithinWorkHours();\r\n if (hoursAreWithinWorkHours) {\r\n noteSaveUpdate(saveAndNew);\r\n } else {\r\n warningPopup(\r\n `The times you have entered are outside the current normal working hours.\r\n Click OK to proceed or cancel to return to the form.`,\r\n () => {\r\n noteSaveUpdate(saveAndNew);\r\n },\r\n () => {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n return;\r\n },\r\n );\r\n }\r\n } else {\r\n noteSaveUpdate(saveAndNew);\r\n }\r\n }\r\n }\r\n var details = document.createElement('div');\r\n details.classList.add('card__body', 'caseNoteCard__details');\r\n //Group Note info area:\r\n groupNoteDisplay = document.createElement('div');\r\n groupNoteDisplay.classList.add('groupNoteDisplay');\r\n groupNoteDisplay.innerHTML = groupConsumers;\r\n\r\n // dropdowns\r\n var style = 'secondary';\r\n\r\n isCaseNoteReadOnly();\r\n\r\n serviceCodeDropdown = dropdown.build({\r\n dropdownId: 'serviceCodeDropdown',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Bill Code:' : 'Serv. Code:',\r\n style,\r\n });\r\n // serviceCodeDropdown.id = \"serviceCodeDropdown\"\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdwn',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n serviceDropdown = dropdown.build({\r\n dropdownId: 'serviceDropdwn',\r\n label: 'Service',\r\n style: 'secondary',\r\n });\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown = dropdown.build({\r\n label: 'Service Location',\r\n style,\r\n });\r\n }\r\n needDropdown = dropdown.build({\r\n dropdownId: 'needDropdwn',\r\n label: 'Need',\r\n style: 'secondary',\r\n });\r\n vendorDropdown = dropdown.build({\r\n label: 'Vendor',\r\n style,\r\n });\r\n contactDropdown = dropdown.build({\r\n dropdownId: 'contactDropdwn',\r\n label: 'Contact',\r\n style: 'secondary',\r\n });\r\n // inputs\r\n serviceDateInput = input.build({\r\n label: 'Service Date',\r\n type: 'date',\r\n style,\r\n value: pageLoaded === 'review' ? serviceDate : serviceDate,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n style,\r\n value: startTime,\r\n });\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n style,\r\n value: endTime,\r\n });\r\n mileageInput = input.build({\r\n id: 'mileageInput',\r\n label: 'Mileage',\r\n style,\r\n value: mileage === '0' || mileage === '0.00' ? '' : mileage,\r\n attributes: [{ key: 'min', value: '0' }],\r\n type: 'text',\r\n });\r\n\r\n travelTimeMinutesField = input.build({\r\n label: 'Travel Time Minutes',\r\n id: 'travelTimeMinutesDisplay',\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'maxlength', value: '4' },\r\n { key: 'onkeypress', value: 'return event.charCode >= 48 && event.charCode <= 57' },\r\n ],\r\n value: rd ? (rd.traveltime ? rd.traveltime : '') : '',\r\n type: 'text',\r\n });\r\n\r\n myPhrasesBtn = button.build({\r\n id: 'myPhrasesBtn',\r\n text: 'My Phrases',\r\n type: 'contained',\r\n style,\r\n callback: function () {\r\n //pass current note input field value\r\n cnPhrasesPopup();\r\n },\r\n });\r\n noteTextInput = input.build({\r\n id: 'noteTextField',\r\n label: 'Note',\r\n type: 'textarea',\r\n style,\r\n classNames: 'autosize',\r\n value: noteText,\r\n stt: $.session.sttEnabled && !cnBatched,\r\n });\r\n // checkboxes\r\n confidentialCheckbox = input.buildCheckbox({\r\n text: 'Confidential',\r\n isChecked: confidential === 'Y' ? true : false,\r\n });\r\n serviceMonitoringCheckbox = input.buildCheckbox({\r\n text: 'Outcome/Service Monitoring',\r\n isChecked: serviceMonitoring === 'Y' ? true : false,\r\n });\r\n // btns\r\n attachmentsBtn = button.build({\r\n text: `Attachments (${attachmentCount})`,\r\n style,\r\n type: 'contained',\r\n icon: 'attachment',\r\n callback: () => {\r\n cnAttachment.init(tempAttachmentArray, reviewAttachmentArray, cnBatched, noteId, isSSANote);\r\n },\r\n });\r\n if (attachmentCount > 0) attachmentsBtn.classList.add('hasAttachments');\r\n\r\n var text = pageLoaded === 'new' ? 'Save' : 'Update';\r\n saveNoteBtn = button.build({\r\n text,\r\n style,\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(false),\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style,\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: () => saveBtnAction(true),\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style,\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: function () {\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n if (timerRunning === true) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n notesOverview.init();\r\n },\r\n });\r\n cancelNoteBtn.style.width = '100%';\r\n //DELETE ONLY ON REVIEW NOTE\r\n deleteNoteBtn = button.build({\r\n text: 'delete',\r\n style,\r\n type: 'contained',\r\n icon: 'delete',\r\n classNames: ['caseNoteDelete'],\r\n callback: deleteConfirmation,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveNoteBtn);\r\n if (pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n btnWrap.appendChild(deleteNoteBtn);\r\n } else {\r\n btnWrap.appendChild(saveAndNewNoteBtn);\r\n }\r\n\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n //Validate end date on new notes,\r\n if (pageLoaded === 'new') {\r\n if (validateStartEndTimes('endCheck')) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n }\r\n }\r\n\r\n // group inputs * for desktop later\r\n var grid_col_1 = document.createElement('div');\r\n var grid_col_2 = document.createElement('div');\r\n\r\n // build details section\r\n grid_col_1.appendChild(serviceDateInput);\r\n grid_col_1.appendChild(startTimeInput);\r\n grid_col_1.appendChild(endTimeInput);\r\n grid_col_1.appendChild(serviceDropdown);\r\n grid_col_1.appendChild(serviceCodeDropdown);\r\n if (!cnBatched) grid_col_1.appendChild(myPhrasesBtn);\r\n grid_col_1.appendChild(noteTextInput);\r\n\r\n var docTime = document.createElement('div');\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n docTime.appendChild(buildDocTime());\r\n }\r\n\r\n var controlWrap = document.createElement('div'); \r\n controlWrap.classList.add('inputSSAWrap'); \r\n var chkboxWrap = document.createElement('div');\r\n chkboxWrap.style.width = '51%';\r\n\r\n var btnAttachWrap = document.createElement('div');\r\n btnAttachWrap.style.width = '49%';\r\n \r\n chkboxWrap.appendChild(confidentialCheckbox); \r\n \r\n if ($.session.applicationName === 'Gatekeeper') { \r\n chkboxWrap.appendChild(serviceMonitoringCheckbox); \r\n if (cnBatched) {\r\n serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n serviceMonitoringCheckbox.classList.add('disabled');\r\n }\r\n } \r\n if ($.session.applicationName === 'Gatekeeper') btnAttachWrap.appendChild(attachmentsBtn);\r\n controlWrap.appendChild(chkboxWrap);\r\n controlWrap.appendChild(btnAttachWrap);\r\n\r\n grid_col_2.appendChild(controlWrap); \r\n grid_col_2.appendChild(vendorDropdown);\r\n grid_col_2.appendChild(locationDropdown);\r\n grid_col_2.appendChild(needDropdown);\r\n grid_col_2.appendChild(contactDropdown);\r\n if ($.session.applicationName === 'Advisor') {\r\n grid_col_2.appendChild(serviceLocationDropdown);\r\n }\r\n if ($.session.applicationName === 'Gatekeeper') grid_col_2.appendChild(docTime);\r\n grid_col_2.appendChild(travelTimeMinutesField);\r\n grid_col_2.appendChild(mileageInput);\r\n //Hide Mileage Input if they don't have a bill/service code\r\n // if (serviceId === '' || serviceId === '0') mileageInput.classList.add('hidden');\r\n\r\n if (pageLoaded === 'review') {\r\n if (groupNoteId !== 0) grid_col_2.appendChild(groupNoteDisplay);\r\n\r\n //Last Updated by message (only on review)\r\n var lastUpdatedDisplay = document.createElement('div');\r\n lastUpdatedDisplay.classList.add('lastUpdatedDisplay');\r\n var lastUpdatedMessage = document.createElement('p');\r\n lastUpdatedMessage.innerHTML = `\r\n Last Edited On: ${lastUpdated}
    Entered By: ${enteredBy} (${originalUserName})
    `;\r\n lastUpdatedDisplay.appendChild(lastUpdatedMessage);\r\n\r\n var correctedCheckboxDiv = document.createElement('div');\r\n correctedCheckboxDiv.classList.add('correctedCheckbox');\r\n correctedCheckbox = input.buildCheckbox({\r\n text: 'Corrected',\r\n isChecked: corrected === 'Y' ? true : false,\r\n });\r\n\r\n correctedCheckboxDiv.appendChild(correctedCheckbox);\r\n\r\n //Review Required Area//////\r\n\r\n var reviewText;\r\n switch (reviewResults) {\r\n case 'N':\r\n reviewText = 'Not Reviewed';\r\n break;\r\n case 'P':\r\n reviewText = 'Passed';\r\n break;\r\n case 'R':\r\n reviewText = 'Rejected';\r\n break;\r\n default:\r\n reviewText = reviewResults;\r\n break;\r\n }\r\n\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Gatekeeper') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText} \r\n ${reviewRejectReason === '' ? '' : `
    Rejection Reason: ${reviewRejectReason}`}`;\r\n if (reviewResults === 'R') reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n\r\n ////ADV does not have a rejection reason\r\n if (reviewRequired === 'Y' && $.session.applicationName === 'Advisor') {\r\n var reviewMessage = document.createElement('p');\r\n reviewMessage.classList.add('reviewMessage');\r\n reviewMessage.innerHTML = `\r\n
    Review Required for this Case Note
    Review Results: ${reviewText}`;\r\n reviewMessage.appendChild(correctedCheckboxDiv);\r\n }\r\n }\r\n\r\n grid_col_2.appendChild(btnWrap);\r\n grid_col_2.appendChild(btnWrap2);\r\n details.appendChild(grid_col_1);\r\n details.appendChild(grid_col_2);\r\n\r\n if (pageLoaded === 'review') {\r\n grid_col_2.appendChild(lastUpdatedDisplay);\r\n if (reviewRequired === 'Y') grid_col_2.appendChild(reviewMessage);\r\n }\r\n\r\n // if ($.session.applicationName === 'Gatekeeper') buildDocTime();\r\n\r\n DOM.ACTIONCENTER.appendChild(details);\r\n\r\n if (pageLoaded === 'review') {\r\n populateServiceDropdown(consumerId);\r\n } else {\r\n //new\r\n populateServiceDropdown(selectedConsumerID);\r\n }\r\n\r\n //ADV check if the consumer on the note has mileage (after populating dropdowns)\r\n checkConsumerForMileage();\r\n setupCardEvents();\r\n checkServiceFunding();\r\n if ($.session.applicationName === 'Advisor') {\r\n checkADVRequiredFields();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n return details;\r\n }\r\n function buildConsumersList() {\r\n var consumerList = document.createElement('div');\r\n consumerList.classList.add('consumers-list');\r\n\r\n return consumerList;\r\n }\r\n\r\n function buildCaseNoteCard(selectedConsumerId) {\r\n selectedConsumerID = selectedConsumerId;\r\n caseNoteCard = document.createElement('div');\r\n caseNoteCard.classList.add('card', 'caseNoteCard');\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n cardHeader.innerHTML =\r\n pageLoaded === 'new'\r\n ? `

    New SSA Note

    `\r\n : `

    Note SSA Review - ${rd.consumername}

    `;\r\n\r\n var cardDetails = buildCardDetailsSection();\r\n\r\n // note card\r\n caseNoteCard.appendChild(cardHeader);\r\n caseNoteCard.appendChild(cardDetails);\r\n\r\n return caseNoteCard;\r\n }\r\n\r\n function cnPhrasesPopup() {\r\n cnInsertPhrases.show(noteTextInput.querySelector('.input-field__input').value, isSSANote);\r\n }\r\n function cnPhrasesDone(note) {\r\n noteText = note;\r\n checkRequiredFields();\r\n }\r\n\r\n function displayDocTimeSection() {\r\n if (dropdownData[serviceCode].docTimeRequired !== 'Y') {\r\n docTime.classList.add('hidden');\r\n } else {\r\n docTime.classList.remove('hidden');\r\n var docTimePopup = document.getElementById('docTImeRequiredPopup');\r\n if (!docTimePopup && !cnBatched) {\r\n if (!isReadOnly) docTimeRequiredPopup();\r\n }\r\n }\r\n }\r\n\r\n function docTimeRequiredPopup() {\r\n if (document.getElementById('docTimeRequiredPopup')) return; // Prevent multiple popups\r\n docTimePopup = POPUP.build({\r\n id: 'docTimeRequiredPopup',\r\n });\r\n var yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n documentationTimer.startTimer(documentationTime);\r\n timerRunning = true;\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(docTimePopup);\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n var popupText = document.createElement('p');\r\n popupText.innerHTML =\r\n 'Documentation Time is allowed for this bill code. Would you like to start the timer now?';\r\n docTimePopup.appendChild(popupText);\r\n docTimePopup.appendChild(btnWrap);\r\n POPUP.show(docTimePopup);\r\n }\r\n\r\n function checkADVRequiredFields(calledAction) {\r\n var serviceCodeDropdownOptions = document.getElementById('serviceCodeDropdown');\r\n serviceCode =\r\n serviceCodeDropdownOptions.options[serviceCodeDropdownOptions.selectedIndex].value;\r\n if (serviceCode === '') {\r\n serviceCodeDropdown.classList.add('error');\r\n checkRequiredFields();\r\n return;\r\n } else serviceCodeDropdown.classList.remove('error');\r\n advLocationRequired = dropdownData[serviceCode].locationRequired;\r\n advNeedRequired = dropdownData[serviceCode].needRequired;\r\n advContactRequired = dropdownData[serviceCode].contactRequired;\r\n advServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (advLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (advLocationRequired === 'Y' && (locationId === '' || locationId === '0')) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (advNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (advNeedRequired === 'Y' && (needId === '' || needId === '0')) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (advContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (advContactRequired === 'Y' && (contactId === '' || contactId === '0')) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n var services = dropdownData[serviceCode].services;\r\n if (advServiceRequired === 'Y' && services.length === 0) {\r\n serviceDropdown.classList.remove('error');\r\n } else if (advServiceRequired === 'Y' && (serviceId === '' || serviceId === '0')) {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function checkGKRequiredFields(calledAction) {\r\n var docTimeDisplay = document.getElementById('docTime');\r\n var timerButtons = document.querySelector('.cntimerbuttons');\r\n var docTimeMinutesField = document.getElementById('docTimeMinutesDisplay');\r\n var travelTimeMinutesField = document.getElementById('travelTimeMinutesDisplay');\r\n var mileageInputField = document.getElementById('mileageInput');\r\n var docTimeRequired = dropdownData[serviceCode].docTimeRequired;\r\n var travelTimeRequired = dropdownData[serviceCode].travelTimeRequired;\r\n\r\n gkLocationRequired = dropdownData[serviceCode].locationRequired;\r\n gkNeedRequired = dropdownData[serviceCode].needRequired;\r\n gkContactRequired = dropdownData[serviceCode].contactRequired;\r\n gkAllowGroupNotes = dropdownData[serviceCode].allowGroupNotes;\r\n gkServiceRequired = dropdownData[serviceCode].serviceRequired;\r\n gkMileageRequired = dropdownData[serviceCode].mileageRequired;\r\n\r\n //As per original specs No groups where DOC Time is allowed\r\n // if (docTimeRequired === 'Y') gkAllowGroupNotes = 'N';\r\n\r\n //DOCTIME//\r\n //1) if doc time, or travel time are required, display doc time area.\r\n if (docTimeRequired === 'Y' || travelTimeRequired === 'Y') {\r\n docTimeDisplay.classList.remove('hidden');\r\n } else docTimeDisplay.classList.add('hidden');\r\n //2) if doc time required show a popup\r\n //Added calledAction to bypass calling docTimePopup when selecting consumers, only on changing bill codes\r\n //Also no popup if CN is Batched AND only show when Billing Code = TCM (10023)\r\n if (\r\n docTimeRequired === 'Y' &&\r\n calledAction !== 'consumerSelect' &&\r\n (cnBatched === '' || cnBatched === null)\r\n ) {\r\n //popup doctime required popup\r\n var docTimePopup = document.getElementById('docTImeRequiredPopup');\r\n if (!docTimePopup && !suppressDocTimePopup) {\r\n if (!isReadOnly) docTimeRequiredPopup();\r\n }\r\n }\r\n\r\n if (docTimeRequired !== 'Y') {\r\n docTime.classList.add('hidden');\r\n } else {\r\n docTime.classList.remove('hidden');\r\n }\r\n\r\n switch (docTimeRequired) {\r\n case 'Y':\r\n docTimeMinutesField.parentElement.classList.remove('hidden');\r\n timerButtons.classList.remove('hidden');\r\n if (rd) {\r\n // Review CN\r\n docTimeMinutesField.value = rd\r\n ? rd.totaldoctime\r\n ? Math.round(Math.floor(parseInt(rd.totaldoctime) / 30) / 2)\r\n : 0\r\n : 0;\r\n } else {\r\n docTimeMinutesField.value = '';\r\n }\r\n break;\r\n default:\r\n docTimeMinutesField.parentElement.classList.add('hidden');\r\n timerButtons.classList.add('hidden');\r\n docTimeMinutesField.value = '0';\r\n if (!cnBatched) documentationTimer.stopTimer();\r\n timerRunning = false;\r\n documentationTime = '';\r\n break;\r\n }\r\n switch (travelTimeRequired) {\r\n case 'Y':\r\n travelTimeMinutesField.parentElement.classList.remove('hidden');\r\n if (rd) {\r\n // Review CN\r\n travelTimeMinutesField.value = rd.traveltime;\r\n } else {\r\n travelTimeMinutesField.value = '';\r\n }\r\n\r\n break;\r\n default:\r\n travelTimeMinutesField.parentElement.classList.add('hidden');\r\n travelTimeMinutesField.value = '0';\r\n travelTime = '';\r\n break;\r\n }\r\n switch (gkMileageRequired) {\r\n case 'Y':\r\n mileageInput.classList.remove('hidden');\r\n if (rd) {\r\n // Review CN\r\n // mileageInput.value = rd.totalmiles\r\n mileageInputField.value = rd.totalmiles;\r\n }\r\n break;\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileageInput.value = '';\r\n // mileageInputField.value = '';\r\n mileage = '';\r\n break;\r\n }\r\n\r\n var locations = dropdownData[serviceCode].locations;\r\n if (gkLocationRequired === 'Y' && locations.length === 0) {\r\n locationDropdown.classList.remove('error');\r\n } else if (\r\n gkLocationRequired === 'Y' &&\r\n (locationId === '' ||\r\n locationId === '0' ||\r\n locations.filter(e => e.locCode === locationId).length === 0)\r\n ) {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n\r\n var needs = dropdownData[serviceCode].needs;\r\n if (gkNeedRequired === 'Y' && needs.length === 0) {\r\n needDropdown.classList.remove('error');\r\n } else if (\r\n gkNeedRequired === 'Y' &&\r\n (needId === '' || needId === '0' || needs.filter(e => e.needCode === needId).length === 0)\r\n ) {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n\r\n var contacts = dropdownData[serviceCode].contacts;\r\n if (gkContactRequired === 'Y' && contacts.length === 0) {\r\n contactDropdown.classList.remove('error');\r\n } else if (\r\n gkContactRequired === 'Y' &&\r\n (contactId === '' ||\r\n contactId === '0' ||\r\n contacts.filter(e => e.contactCode === contactId).length === 0)\r\n ) {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n\r\n //Mileage\r\n if (gkMileageRequired === 'Y') {\r\n mileageInput.classList.remove('hidden');\r\n } else {\r\n mileageInput.value = '';\r\n mileageInput.classList.add('hidden');\r\n }\r\n //ADV Service Code Not Null\r\n if ($.session.applicationName === 'Advisor' && (serviceId === '' || serviceId === '0')) {\r\n serviceCodeDropdown.classList.add('error');\r\n }\r\n\r\n // ALLOW GROUP NOTES// if they have a group note made up, but change to builling code that doesn't allow group notes\r\n // reset all consumers from note - They will need to re-add a consumer// As per Angie allowGroupNotes = \"\" should allow group notes\r\n if (gkAllowGroupNotes === 'N') {\r\n switch (pageLoaded) {\r\n case 'review':\r\n //\tconsumerListBtn.classList.add('disabled');\r\n if (selectedConsumerIds.length > 1) {\r\n if (docTimePopup) POPUP.hide(docTimePopup);\r\n removeAllConsumersFromNote();\r\n // consumerListBtn.classList.remove('disabled');\r\n }\r\n break;\r\n case 'new':\r\n if (selectedConsumerIds.length === 1) {\r\n //\tconsumerListBtn.classList.add('disabled');\r\n } else if (selectedConsumerIds.length > 1) {\r\n removeAllConsumersFromNote();\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n } //consumerListBtn.classList.remove('disabled');\r\n else checkRequiredFields();\r\n }\r\n\r\n function setupCardEvents() {\r\n var tmpMileage;\r\n // dropdowns\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceCode = selectedOption.value;\r\n // when this changes update following dropdowns\r\n populateBillerRelatedDropdowns();\r\n // reset biller related dropdown values when changing service/bill code:\r\n clearBillerRelatedDropdowns();\r\n\r\n // TCM selected on a Group NOte\r\n if (isGroupNote && dropdownData[serviceCode].docTimeRequired === 'Y') {\r\n warningPopup(\r\n 'You have selected a bill code that does not allow group notes. Please select only one consumer.',\r\n null,\r\n null,\r\n false,\r\n );\r\n }\r\n });\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n //if ($.session.applicationName === 'Gatekeeper' && gkLocationRequired === 'Y') {\r\n if (advLocationRequired === 'Y' || gkLocationRequired === 'Y') {\r\n if (locationId === '') {\r\n locationDropdown.classList.add('error');\r\n } else locationDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n });\r\n\r\n serviceDropdown.addEventListener('change', event => {\r\n // user selects empty option -- Service and Billing in error, \"supporting\" DDL empty but not in error\r\n if (event.target.selectedIndex === 0) {\r\n serviceDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n\r\n var emptydata = [];\r\n dropdown.populate(serviceCodeDropdown, emptydata, null);\r\n dropdown.populate(needDropdown, emptydata, null);\r\n dropdown.populate(contactDropdown, emptydata, null);\r\n dropdown.populate(locationDropdown, emptydata, null);\r\n\r\n serviceCodeDropdown.classList.add('error');\r\n needDropdown.classList.remove('error');\r\n contactDropdown.classList.remove('error');\r\n locationDropdown.classList.remove('error');\r\n checkGKRequiredFields();\r\n\r\n return;\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n }\r\n\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceId = selectedOption.value;\r\n serviceName = selectedOption.text;\r\n servicePersonApproved = selectedOption.attributes[1].value;\r\n //GK REQUIRED FIELDS//\r\n if (advServiceRequired === 'Y' || gkServiceRequired === 'Y') {\r\n if (serviceId === '') {\r\n serviceDropdown.classList.add('error');\r\n } else serviceDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n // selection from Service DDL populates BIller DDL\r\n populateBillerDropdown(serviceName, servicePersonApproved);\r\n\r\n // if user selection is NULL, then error\r\n if (!serviceId) {\r\n serviceDropdown.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else {\r\n serviceDropdown.classList.remove('error');\r\n }\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n serviceLocationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n serviceLocationId = selectedOption.value;\r\n if (serviceLocationId !== '') {\r\n serviceLocationDropdown.classList.remove('error');\r\n } else serviceLocationDropdown.classList.add('error');\r\n checkRequiredFields();\r\n });\r\n }\r\n\r\n needDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n needId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advNeedRequired === 'Y' || gkNeedRequired === 'Y') {\r\n if (needId === '') {\r\n needDropdown.classList.add('error');\r\n } else needDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n /////\r\n });\r\n\r\n vendorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n vendorId = selectedOption.value;\r\n });\r\n\r\n contactDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n contactId = selectedOption.value;\r\n //GK REQUIRED FIELDS//\r\n if (advContactRequired === 'Y' || gkContactRequired === 'Y') {\r\n if (contactId === '') {\r\n contactDropdown.classList.add('error');\r\n } else contactDropdown.classList.remove('error');\r\n checkRequiredFields();\r\n }\r\n });\r\n\r\n // setup input events\r\n serviceDateInput.addEventListener('change', event => {\r\n var validObj = validateTimesWhenDateChange();\r\n var sameDate = checkIfSameDates();\r\n\r\n var tempServiceDate = serviceDate;\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validObj.isValid && sameDate) {\r\n $.session.caseNoteTimeCheck = 'pass';\r\n } else {\r\n $.session.caseNoteTimeCheck = 'fail';\r\n }\r\n\r\n serviceDate = event.target.value;\r\n if (serviceDate > UTIL.getTodaysDate() || serviceDate === '') {\r\n serviceDateInput.classList.add('error');\r\n serviceDate = tempServiceDate;\r\n } else serviceDateInput.classList.remove('error');\r\n\r\n if (sameDate && currentTime < startTime) {\r\n validObj.startTime = false;\r\n }\r\n if (sameDate && currentTime < endTime) {\r\n validObj.endTime = false;\r\n }\r\n\r\n if (validObj.isValid) {\r\n startTimeInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n if (!validObj.startTime) startTimeInput.classList.add('error');\r\n if (!validObj.endTime) endTimeInput.classList.add('error');\r\n }\r\n\r\n populateVendorDropdown(); // Vendor is based off of date\r\n\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('startCheck');\r\n startTime = event.target.value;\r\n if (!isValid) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('endCheck')) {\r\n endTimeInput.classList.remove('error');\r\n }\r\n //endTimeInput.classList.remove('error');\r\n // saveNoteBtn.classList.remove('disabled')\r\n }\r\n // toggleSaveButton\r\n checkRequiredFields();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n var isValid = validateStartEndTimes('endCheck');\r\n endTime = event.target.value;\r\n // toggleSaveButton\r\n if (!isValid) {\r\n // show error\r\n endTimeInput.classList.add('error');\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n if (validateStartEndTimes('startCheck')) {\r\n startTimeInput.classList.remove('error');\r\n }\r\n // saveNoteBtn.classList.remove('disabled')\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n mileageInput.addEventListener('keypress', event => {\r\n //In GK milage is stored to the hundredth so need to check for decimal\r\n tmpMileage = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n //Prevent all but numbers and dec - DEC is only for GK\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode !== 46) {\r\n event.preventDefault();\r\n return;\r\n }\r\n } else {\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n });\r\n\r\n //Time field event listeners (to prevent length that is too long)\r\n\r\n travelTimeMinutesField.addEventListener('keyup', event => {\r\n if (event.target.value.length > 4) {\r\n event.target.value = event.target.value.substr(0, 4);\r\n }\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n //ADV Mileage 10 numbers no dec point\r\n mileageInput.addEventListener('keyup', event => {\r\n if (event.target.value.length > 10) event.target.value = tmpMileage;\r\n mileage = event.target.value;\r\n });\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n //GK Mileage can have dec point. 5 before dec and 2 after dec point (12345.67)\r\n mileageInput.addEventListener('keyup', event => {\r\n var splitTime = event.target.value.split('.');\r\n if (splitTime[0].length > 5) event.target.value = tmpMileage;\r\n if (splitTime[1] && splitTime[1].length > 2) event.target.value = tmpMileage;\r\n\r\n mileage = parseFloat(event.target.value).toFixed(2);\r\n });\r\n\r\n docTimeMinutesField.addEventListener('change', event => {\r\n documentationTime = parseInt(event.target.value) * 60; //Stored as seconds in DB\r\n });\r\n travelTimeMinutesField.addEventListener('change', event => {\r\n travelTime = event.target.value; //Stored as Minutes in DB\r\n });\r\n }\r\n\r\n noteTextInput.addEventListener('input', event => {\r\n noteText = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // checkboxes\r\n confidentialCheckbox.addEventListener('change', event => {\r\n confidential = event.target.checked ? 'Y' : 'N';\r\n });\r\n serviceMonitoringCheckbox.addEventListener('change', event => {\r\n serviceMonitoring = event.target.checked ? 'Y' : 'N';\r\n });\r\n if (pageLoaded === 'review' && reviewRequired === 'Y' && reviewResults === 'R') {\r\n correctedCheckbox.addEventListener('change', event => {\r\n corrected = event.target.checked ? 'Y' : 'N';\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFields() {\r\n var noteInput = noteTextInput.querySelector('textarea');\r\n var endtimeInput = endTimeInput.querySelector('input');\r\n var consumers = document.querySelectorAll('.consumer-selected');\r\n\r\n if (noteInput.value === '') {\r\n noteTextInput.classList.add('error');\r\n } else {\r\n noteTextInput.classList.remove('error');\r\n }\r\n\r\n if (selectedConsumerIds.length > 1) {\r\n attachmentsBtn.classList.add('disabled');\r\n tempAttachmentArray = [];\r\n } else {\r\n attachmentsBtn.classList.remove('disabled');\r\n }\r\n\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n } else if (selectedConsumerIds.length > 0 || pageLoaded === 'review') {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n } else {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n deleteNoteBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function checkConsumerForMileage() {\r\n if ($.session.applicationName === 'Gatekeeper') return;\r\n var mileageAllowed = false;\r\n consumersThatCanHaveMileage.forEach(c => {\r\n selectedConsumerIds.forEach(cId => {\r\n if (c === cId) {\r\n mileageAllowed = true;\r\n }\r\n });\r\n });\r\n switch (mileageAllowed) {\r\n case true:\r\n mileageInput.classList.remove('hidden');\r\n break;\r\n\r\n default:\r\n mileageInput.classList.add('hidden');\r\n mileage = '';\r\n break;\r\n }\r\n }\r\n\r\n function getTimeFromInactivity(time) {\r\n timerRunning = false;\r\n documentationTime = time;\r\n }\r\n\r\n function removeAllConsumersFromNote() {\r\n var cards = document.querySelectorAll('.consumerCard');\r\n cards.forEach(card => {\r\n var cId = card.getAttribute('data-consumer-id');\r\n selectedConsumerIds = selectedConsumerIds.filter(item => item !== cId);\r\n card.parentElement.remove();\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n // removeAllConsumers -- Keep the selected Service and Biller Code, but get rid of other selections ??? -- JMM 07/11/2020\r\n populateBillerRelatedDropdowns();\r\n warningPopup(\r\n 'You have selected a bill code that does not allow group notes. Please select only one consumer.',\r\n null,\r\n null,\r\n false,\r\n );\r\n }\r\n\r\n function deleteConfirmation() {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n if (timerRunning) {\r\n documentationTimer.stopTimer();\r\n timerRunning = false;\r\n }\r\n pendingSave.show('Deleting Note...');\r\n await caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you would like to delete this case note?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function singleNoteToGroupNote() {\r\n caseNotesAjax.deleteExistingCaseNote(noteId);\r\n pageLoaded = 'new';\r\n isGroupNote = true;\r\n noteId = 0;\r\n convertToGroupNote = null;\r\n //fix shit\r\n if (travelTime === null) travelTime = 0;\r\n if (documentationTime === null) documentationTime = 0;\r\n endTime = endTime.substring(0, 5);\r\n startTime = startTime.substring(0, 5);\r\n }\r\n\r\n function setGroupData() {\r\n //remove consumers from active list if they are part of the group\r\n groupConsumers = 'Other consumers part of this group ';\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n var splitName = name.split(',');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[1],\r\n LN: splitName[0],\r\n id: id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (id !== consumerId) groupConsumers += ` | ${name} `;\r\n }\r\n }\r\n\r\n function setPermissions() {\r\n //caseNotesUpdate === True means they have view only permisison\r\n //Can't create new notes or update/delete notes.\r\n //Here View Only is the oppsite of update (update = true so viewonly = false)\r\n viewOnly = !$.session.CaseNotesUpdate;\r\n // IF view only permisisons OR the note is batched (batched notes are read only). A batched case note has the batched ID in cnBatched\r\n //if cnBatched is not \"\" it IS batched\r\n if (viewOnly || (cnBatched && cnBatched !== '')) setInputstoReadOnly();\r\n\r\n // if case note is NOT batched, then check if the caseNote is readOnly and check that user has the Case Notes Update Entered permission\r\n // if (!cnBatched && cnBatched !== '' && cnBatched != null) {\r\n // if (isReadOnly || !$.session.CaseNotesUpdateEntered) setInputstoReadOnly();\r\n // }\r\n\r\n // CHECKING IF IT IS NOT BATCHED -- EMPTY STRING IS NOT BATCHED\r\n if (!cnBatched || cnBatched === '') {\r\n if ($.session.CaseNotesUpdate) {\r\n if (\r\n !$.session.CaseNotesUpdateEntered ||\r\n ($.session.CaseNotesUpdateEntered && caseManagerId === $.session.PeopleId)\r\n ) {\r\n isReadOnly = false; //can edit (correct alignment of Update and UpdateEntered Case Notes permissions)\r\n } else {\r\n isReadOnly = true; //can not edit (with UpdateEntered permission, can't edit other people's case notes)\r\n }\r\n } else {\r\n isReadOnly = true; //can not edit (no overall update permission)\r\n }\r\n }\r\n\r\n if (isReadOnly) setInputstoReadOnly();\r\n\r\n //Set Permissions is the last thing that gets called. Adding Dashboard New CN Events here\r\n if (fromDashboard) {\r\n moveConsumerToConsumerSection(dashboardConsumer);\r\n }\r\n }\r\n\r\n function setInputstoReadOnly() {\r\n //Set inputs to read only\r\n serviceDateInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n startTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n endTimeInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n mileageInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Disable Dropdowns/Checkbox\r\n serviceCodeDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n locationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n serviceDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n if (serviceLocationDropdown)\r\n serviceLocationDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n needDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n vendorDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n contactDropdown.querySelector('.dropdown__select').setAttribute('disabled', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n if ($.session.applicationName === 'Gatekeeper') serviceMonitoringCheckbox.firstChild.setAttribute('disabled', true);\r\n\r\n if (docTimeMinutesField)\r\n docTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n if (travelTimeMinutesField)\r\n travelTimeMinutesField.querySelector('.input-field__input').setAttribute('readonly', true);\r\n //Remove delete and save buttons\r\n deleteNoteBtn.remove();\r\n saveNoteBtn.remove();\r\n //Remove Start and Stop Doc time buttons\r\n if (timerStopBtn) timerStopBtn.remove();\r\n if (timerStartBtn) timerStartBtn.remove();\r\n //disable consumer list button\r\n //\tvar consumerListBtn = document.querySelector('.consumerListBtn');\r\n //\tconsumerListBtn.classList.add('disabled');\r\n }\r\n\r\n function addAttachmentsToCN(attachments, reviewAttachments) {\r\n reviewAttachmentArray = reviewAttachments;\r\n attachments.forEach(attachment => {\r\n tempAttachmentArray.push(attachment);\r\n });\r\n attachmentCount = tempAttachmentArray.length + reviewAttachmentArray.length;\r\n attachmentsBtn.getElementsByTagName('span')[0].innerText = `ATTACHMENTS (${attachmentCount})`;\r\n if (attachmentCount > 0) {\r\n attachmentsBtn.classList.add('hasAttachments');\r\n } else attachmentsBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n function removeAttachmentFromTempAttachmentArray(attachmentName) {\r\n tempAttachmentArray = tempAttachmentArray.filter(\r\n attachment => attachment.description !== attachmentName,\r\n );\r\n }\r\n\r\n function checkConfidential() {\r\n if (confidential === 'Y' && caseManagerId !== $.session.PeopleId) {\r\n noteTextInput.querySelector('.input-field__input').value = 'This is a confidential note.';\r\n noteTextInput.querySelector('.input-field__input').setAttribute('readonly', true);\r\n confidentialCheckbox.firstChild.setAttribute('disabled', true);\r\n }\r\n }\r\n function clearAllGlobalVariables() {\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n }\r\n\r\n function loadPage(dashConsumer) {\r\n const advPromises = [];\r\n const gkPromises = [];\r\n const dropdownDataPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getDropdownData(function (dropdownData) {\r\n dealWithDropdownDataHugeString(dropdownData);\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(dropdownDataPromise);\r\n gkPromises.push(dropdownDataPromise);\r\n\r\n const getBillersListPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getBillersListForDropDown(function (results) {\r\n billers = results;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getBillersListPromise);\r\n gkPromises.push(getBillersListPromise);\r\n\r\n //ADV Only\r\n if ($.session.applicationName === 'Advisor') {\r\n const getConsumersThatCanHaveMileagePromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getConsumersThatCanHaveMileage(function (results) {\r\n consumersThatCanHaveMileage = [];\r\n results.forEach(c => {\r\n consumersThatCanHaveMileage.push(c.consumerid);\r\n });\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getConsumersThatCanHaveMileagePromise);\r\n }\r\n\r\n const getReviewRequiredForCaseManagerPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getReviewRequiredForCaseManager($.session.PeopleId, function (results) {\r\n reviewRequired = results[0].reviewrequired === '' ? 'N' : results[0].reviewrequired;\r\n defaultServiceCode = results[0].serviceid;\r\n resolve('success');\r\n });\r\n });\r\n advPromises.push(getReviewRequiredForCaseManagerPromise);\r\n gkPromises.push(getReviewRequiredForCaseManagerPromise);\r\n\r\n //GK Only - review only\r\n if ($.session.applicationName === 'Gatekeeper' && pageLoaded === 'review') {\r\n const getAttachmentsPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getCaseNoteAttachmentsList(noteId, res => {\r\n reviewAttachmentArray = res;\r\n attachmentCount = reviewAttachmentArray.length;\r\n resolve('success');\r\n });\r\n });\r\n gkPromises.push(getAttachmentsPromise);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n Promise.all(advPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n }\r\n newNoteSSA.init();\r\n return;\r\n }\r\n if (pageLoaded === 'review') {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n // roster2.refreshRosterList()\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (groupNoteId !== 0) setGroupData(); //Group Note\r\n reviewNote.init();\r\n return;\r\n }\r\n });\r\n } else {\r\n Promise.all(gkPromises).then(function () {\r\n if (pageLoaded === 'new') {\r\n if (dashConsumer) {\r\n const consumerName = dashConsumer.name.split(',');\r\n const consumer = roster2.buildConsumerCard({\r\n FN: consumerName[1],\r\n LN: consumerName[0],\r\n id: dashConsumer.id,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n dashboardConsumer = roster2.getActiveConsumers();\r\n }\r\n newNoteSSA.init();\r\n return;\r\n }\r\n if (pageLoaded === 'review') {\r\n //Add current consumer to roster active list so they can not be re-selected\r\n var splitName = rd.consumername.split(' ');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: consumerId,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n if (groupNoteId !== 0) setGroupData(); //Group Note\r\n\r\n reviewNote.init(isSSANote);\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function init(pageToLoad, reviewNoteData, gd, consumerFromDash) {\r\n if (consumerFromDash) {\r\n fromDashboard = true;\r\n } else fromDashboard = false;\r\n selectedConsumerIds.forEach(cId => {\r\n roster2.removeConsumerFromActiveConsumers(cId);\r\n });\r\n //Below removes users from the group from the active list\r\n if (groupData && groupNoteId !== 0) {\r\n for (let [id, name] of Object.entries(groupData[groupNoteId])) {\r\n roster2.removeConsumerFromActiveConsumers(id);\r\n }\r\n }\r\n //consumerListBtn = document.querySelector('.consumerListBtn');\r\n //if (consumerListBtn) consumerListBtn.classList.remove('disabled');\r\n groupData = gd;\r\n rd = null;\r\n mileage = null;\r\n reviewRequired = null;\r\n confidential = null;\r\n serviceMonitoring = null;\r\n corrected = null;\r\n cnBatched = null;\r\n travelTime = 0;\r\n timerRunning = false;\r\n documentationTime = 0;\r\n selectedConsumerIds = [];\r\n tempAttachmentArray = [];\r\n reviewAttachmentArray = [];\r\n attachmentCount = 0;\r\n pageLoaded = pageToLoad;\r\n setNoteValues(reviewNoteData);\r\n loadPage(consumerFromDash);\r\n }\r\n\r\n return {\r\n checkRequiredFields,\r\n // build\r\n buildCaseNoteCard,\r\n buildConsumersList,\r\n buildDocTime,\r\n // populate\r\n populateBillerDropdown,\r\n // other\r\n disableCard,\r\n enableCard,\r\n moveConsumerToConsumerSection,\r\n checkGKRequiredFields,\r\n checkConfidential,\r\n checkIfBatched,\r\n checkIfCredit,\r\n getTimeFromInactivity,\r\n // Phrases\r\n cnPhrasesDone,\r\n //permissions\r\n setPermissions,\r\n //RESET VALS\r\n clearAllGlobalVariables,\r\n //ATTACHMENTS\r\n addAttachmentsToCN,\r\n removeAttachmentFromTempAttachmentArray,\r\n //Dropdown Data for Overview Filter\r\n dealWithDropdownDataHugeString,\r\n // init\r\n init,\r\n };\r\n})();\r\n","var reviewNote = (function () {\r\n // review data\r\n var billerId; // caseManager ??\r\n var caseNoteId;\r\n var consumerId;\r\n var contactCode;\r\n var confidential;\r\n var endTime;\r\n var locationCode;\r\n var needCode;\r\n var noteText;\r\n var serviceId;\r\n var serviceCode;\r\n var serviceLocationId;\r\n var serviceDate;\r\n var startTime;\r\n var vendorId;\r\n let attachmentArray;\r\n let isSSANote;\r\n\r\n // Save Note\r\n // ----------------------------------------\r\n function updateGroup(updateData, selectedConsumerIds) {\r\n if (selectedConsumerIds && selectedConsumerIds.length > 0) {\r\n pendingSave.show();\r\n var cIdOfNote = updateData.consumerId;\r\n var groupSavePromises = [];\r\n caseNoteId = updateData.noteId;\r\n // saveAdditionalGroupCaseNote Only gets ran when adding new consumers to a group note, and only gets ran for the new consumers, not existing consumers.\r\n selectedConsumerIds.forEach(cId => {\r\n updateData.noteId = caseNoteId;\r\n groupSavePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n if (cId === cIdOfNote) {\r\n caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n caseNotesAjax.updateGroupNoteValues(\r\n {\r\n noteId: updateData.noteId,\r\n groupNoteId: updateData.groupNoteId,\r\n serviceOrBillingCodeId: updateData.serviceOrBillingCodeId,\r\n serviceDate: updateData.serviceDate,\r\n startTime: updateData.startTime,\r\n endTime: updateData.endTime,\r\n },\r\n function (results) {\r\n fulfill();\r\n },\r\n );\r\n });\r\n } else {\r\n updateData.consumerId = cId;\r\n updateData.noteId = 0;\r\n caseNotesAjax.saveAdditionalGroupCaseNote(updateData, function (results) {\r\n //caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n caseNotesAjax.updateGroupNoteValues(\r\n {\r\n noteId: updateData.noteId,\r\n groupNoteId: updateData.groupNoteId,\r\n serviceOrBillingCodeId: updateData.serviceOrBillingCodeId,\r\n serviceDate: updateData.serviceDate,\r\n startTime: updateData.startTime,\r\n endTime: updateData.endTime,\r\n },\r\n function (results) {\r\n fulfill();\r\n },\r\n );\r\n //});\r\n });\r\n }\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(groupSavePromises).then(function (res) {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n });\r\n } else {\r\n caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n caseNotesAjax.updateGroupNoteValues(\r\n {\r\n noteId: updateData.noteId,\r\n groupNoteId: updateData.groupNoteId,\r\n serviceOrBillingCodeId: updateData.serviceOrBillingCodeId,\r\n serviceDate: updateData.serviceDate,\r\n startTime: updateData.startTime,\r\n endTime: updateData.endTime,\r\n },\r\n function (results) {\r\n fulfill();\r\n },\r\n );\r\n });\r\n }\r\n }\r\n function updateSingle(updateData) {\r\n pendingSave.show();\r\n caseNotesAjax.saveSingleCaseNote(updateData, function (results) {\r\n pendingSave.fulfill();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n notesOverview.init();\r\n }, 1000);\r\n });\r\n }\r\n function updateNote(opts, attachments) {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n attachments.forEach(attachment => {\r\n caseNotesAjax.addCaseNoteAttachment(\r\n opts.updateData.noteId,\r\n attachment.description,\r\n attachment.type,\r\n attachment.arrayBuffer,\r\n );\r\n });\r\n }\r\n if (opts.isGroupNote) {\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function (overlapResults) {\r\n updateGroup(opts.updateData, opts.selectedConsumerIds);\r\n });\r\n } else {\r\n caseNotesAjax.caseNoteOverlapCheck(opts.overlapData, function (overlapResults) {\r\n updateSingle(opts.updateData);\r\n });\r\n }\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n initPageLoad();\r\n\r\n note.moveConsumerToConsumerSection();\r\n note.enableCard();\r\n\r\n DOM.toggleNavLayout();\r\n\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function initPageLoad() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!isSSANote) {\r\n roster2.miniRosterinit();\r\n }\r\n\r\n var container = document.createElement('div');\r\n container.classList.add('caseNotes');\r\n\r\n var noteCard;\r\n if ($.session.CaseNotesSSANotes && isSSANote) {\r\n noteCard = noteSSA.buildCaseNoteCard({\r\n caseNoteId,\r\n contactCode,\r\n endTime,\r\n locationCode,\r\n needCode,\r\n noteText,\r\n serviceId,\r\n serviceCode,\r\n serviceLocationId,\r\n startTime,\r\n serviceDate,\r\n vendorId,\r\n });\r\n } else {\r\n noteCard = note.buildCaseNoteCard();\r\n }\r\n\r\n var consumersList;\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? (consumersList = noteSSA.buildConsumersList())\r\n : (consumersList = note.buildConsumersList());\r\n\r\n //Batched Message\r\n var batchedMessage = document.createElement('h4');\r\n batchedMessage.setAttribute('id', 'batchedMessage');\r\n batchedMessage.innerHTML = 'Case Note is Batched';\r\n\r\n // credit Message\r\n var creditMessage = document.createElement('h4');\r\n creditMessage.setAttribute('id', 'creditMessage');\r\n creditMessage.innerHTML = 'This is a credit note';\r\n\r\n\r\n container.appendChild(consumersList);\r\n container.appendChild(noteCard);\r\n\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? noteSSA.checkConfidential()\r\n : note.checkConfidential(); //Check confidential before notecard is appended\r\n\r\n DOM.ACTIONCENTER.insertBefore(container, DOM.ACTIONCENTER.childNodes[0]);\r\n\r\n //Checking if batched\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? (cnBatched = noteSSA.checkIfBatched())\r\n : (cnBatched = note.checkIfBatched());\r\n\r\n //Checking if credit note\r\n $.session.CaseNotesSSANotes && isSSANote\r\n ? (cnCredit = noteSSA.checkIfCredit())\r\n : (cnCredit = note.checkIfCredit());\r\n\r\n if ($.session.CaseNotesSSANotes && isSSANote) {\r\n if (cnBatched) DOM.ACTIONCENTER.insertBefore(batchedMessage, container);\r\n if (cnCredit) DOM.ACTIONCENTER.insertBefore(creditMessage, container);\r\n noteSSA.checkRequiredFields();\r\n // if ($.session.applicationName === \"Gatekeeper\") noteSSA.checkGKRequiredFields();\r\n } else {\r\n if (cnBatched) DOM.ACTIONCENTER.insertBefore(batchedMessage, container);\r\n if (cnCredit) DOM.ACTIONCENTER.insertBefore(creditMessage, container);\r\n note.checkRequiredFields();\r\n if ($.session.applicationName === 'Gatekeeper') note.checkGKRequiredFields();\r\n }\r\n\r\n $.session.CaseNotesSSANotes && isSSANote ? noteSSA.setPermissions() : note.setPermissions();\r\n }\r\n\r\n function init(IsSSANote) {\r\n isSSANote = IsSSANote;\r\n setActiveModuleSectionAttribute('caseNotes-review');\r\n roster2.setAllowedConsumers(['%']);\r\n initPageLoad();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n updateNote,\r\n init,\r\n };\r\n})();\r\n","const cnFilters = (function () {\r\n //Filter HTML Elements\r\n let billersDropdown, consumerDropdown, billingCodeDropdown, reviewStatusDropdown, correctedDropdown;\r\n let serviceDateStartInput, serviceDateEndInput;\r\n let enteredDateStartInput, enteredDateEndInput;\r\n let applyBtn;\r\n let additionalFilterContainer;\r\n //More Options\r\n let locationFilterCbox,\r\n serviceFiltercCbox,\r\n needFiltercCbox,\r\n contactFiltercCbox,\r\n confidentialFiltercCbox,\r\n showOverlapscCbox;\r\n let billedFiltercCbox, attachmentsFiltercCbox, noteTextFiltercCbox, selectAllFilterCbox;\r\n let locationDropdown, serviceDropdown, needDropdown, contactDropdown, confidentialDropdown, outcomeServiceMonitoringDropdown;\r\n let billedDropdown, attachmentsDropdown, noteTextDropdown, noteTextInput;\r\n let activeAdditionalFilters;\r\n //Filter Values\r\n let filterValues;\r\n let btnWrap;\r\n let billerBtnWrap;\r\n let consumerBtnWrap;\r\n let billingServiceBtnWrap;\r\n let reviewStatusBtnWrap;\r\n let correctedBtnWrap;\r\n let outcomeServiceMonitoringBtnWrap;\r\n let serviceDatesBtnWrap;\r\n let createdDatesBtnWrap;\r\n let locationBtnWrap;\r\n let serviceBtnWrap;\r\n let needBtnWrap;\r\n let contactBtnWrap;\r\n let confidentialBtnWrap; \r\n let billedBtnWrap;\r\n let attachmentsBtnWrap;\r\n let showOverlapsBtnWrap;\r\n let noteTextBtnWrap;\r\n //Dropdown Data\r\n let consumerDropdownData;\r\n let serviceBillingCodes; //Billing Code === Service Code... They are the same thing\r\n let needDropdownData, serviceDropdownData, locationDropdownData, contactDropdownData;\r\n let checkOverlaps = 'N';\r\n\r\n function createFilterElements() {\r\n billersDropdown = dropdown.build({\r\n dropdownId: 'billerDropdown',\r\n label: 'Biller',\r\n style: 'secondary',\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerDropdown',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n });\r\n billingCodeDropdown = dropdown.build({\r\n dropdownId: 'billingCodeDropdown',\r\n label: $.session.applicationName === 'Gatekeeper' ? 'Billing Code' : 'Service Code',\r\n style: 'secondary',\r\n });\r\n reviewStatusDropdown = dropdown.build({\r\n dropdownId: 'reviewStatusDropdown',\r\n label: 'Review Status',\r\n style: 'secondary',\r\n });\r\n correctedDropdown = dropdown.build({\r\n dropdownId: 'correctedDropdown',\r\n label: 'Corrected',\r\n style: 'secondary',\r\n });\r\n outcomeServiceMonitoringDropdown = dropdown.build({\r\n dropdownId: 'outcomeServiceMonitoringDropdown',\r\n label: 'Outcome/Service Monitoring',\r\n style: 'secondary',\r\n });\r\n serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: filterValues.serviceDateStart,\r\n });\r\n serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: filterValues.serviceDateEnd,\r\n });\r\n enteredDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Created Date Start',\r\n style: 'secondary',\r\n //value: filterValues.enteredDateStart === '1900-01-01' ? '': filterValues.enteredDateStart\r\n value: filterValues.enteredDateStart,\r\n });\r\n enteredDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Created Date End',\r\n style: 'secondary',\r\n value: filterValues.enteredDateEnd,\r\n });\r\n //EXTRA FILTER OPTIONS\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n serviceDropdown = dropdown.build({\r\n dropdownId: 'serviceDropdown',\r\n label: 'Service',\r\n style: 'secondary',\r\n });\r\n needDropdown = dropdown.build({\r\n dropdownId: 'needDropdown',\r\n label: 'Need',\r\n style: 'secondary',\r\n });\r\n contactDropdown = dropdown.build({\r\n dropdownId: 'contactDropdown',\r\n label: 'Contact',\r\n style: 'secondary',\r\n });\r\n confidentialDropdown = dropdown.build({\r\n dropdownId: 'confidentialDropdown',\r\n label: 'Confidential',\r\n style: 'secondary',\r\n }); \r\n billedDropdown = dropdown.build({\r\n dropdownId: 'billedDropdown',\r\n label: 'Billed',\r\n style: 'secondary',\r\n });\r\n attachmentsDropdown = dropdown.build({\r\n dropdownId: 'attachmentsDropdown',\r\n label: 'Attachments',\r\n style: 'secondary',\r\n });\r\n noteTextDropdown = dropdown.build({\r\n dropdownId: 'noteTextDropdown',\r\n label: 'Note Text',\r\n style: 'secondary',\r\n });\r\n noteTextInput = input.build({\r\n label: 'Note Text',\r\n style: 'secondary',\r\n value: filterValues.noteText == '%' ? '' : filterValues.noteText, \r\n });\r\n }\r\n\r\n function createMoreFilterOptionElements() {\r\n selectAllFilterCbox = input.buildCheckbox({\r\n text: 'Select All',\r\n });\r\n locationFilterCbox = input.buildCheckbox({\r\n text: 'Location',\r\n isChecked: activeAdditionalFilters.location,\r\n });\r\n serviceFiltercCbox = input.buildCheckbox({\r\n text: 'Service',\r\n isChecked: activeAdditionalFilters.service,\r\n });\r\n needFiltercCbox = input.buildCheckbox({\r\n text: 'Need',\r\n isChecked: activeAdditionalFilters.need,\r\n });\r\n contactFiltercCbox = input.buildCheckbox({\r\n text: 'Contact',\r\n isChecked: activeAdditionalFilters.contact,\r\n });\r\n confidentialFiltercCbox = input.buildCheckbox({\r\n text: 'Confidential',\r\n isChecked: activeAdditionalFilters.confidential,\r\n });\r\n billedFiltercCbox = input.buildCheckbox({\r\n text: 'Billed',\r\n isChecked: activeAdditionalFilters.billed,\r\n });\r\n attachmentsFiltercCbox = input.buildCheckbox({\r\n text: 'Attachments',\r\n isChecked: activeAdditionalFilters.attachments,\r\n });\r\n showOverlapscCbox = input.buildCheckbox({\r\n className: 'checkAlign',\r\n text: 'Check For Overlaps',\r\n isChecked: checkOverlaps === 'Y' ? true : false,\r\n callback: () => setCheckForOverLaps(event.target)\r\n });\r\n showOverlapscCbox.id = 'showOverlapCheckbox';\r\n noteTextFiltercCbox = input.buildCheckbox({\r\n text: 'Note Text',\r\n isChecked: activeAdditionalFilters.noteText,\r\n });\r\n\r\n // Quick inline styles\r\n selectAllFilterCbox.style.fontSize = '18px';\r\n selectAllFilterCbox.style.marginBottom = '10px';\r\n }\r\n\r\n function buildFilterPopup(IsShow) {\r\n const popup = POPUP.build({\r\n classNames: 'caseNoteReviewFilterPopup',\r\n });\r\n\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n setNewFilterValues();\r\n updateCurrentFilterDisplay();\r\n POPUP.hide(popup);\r\n notesOverview.setFilterValFromPopup(filterValues);\r\n },\r\n });\r\n const moreFilterOptBtn = button.build({\r\n text: 'more filter options',\r\n style: 'secondary',\r\n type: 'text',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n moreFilterOptionPopup();\r\n },\r\n });\r\n\r\n const filterBtnWrap = document.createElement('div');\r\n additionalFilterContainer = document.createElement('div');\r\n addAdditionalFilters(IsShow);\r\n filterBtnWrap.classList.add('btnWrap');\r\n\r\n const serviceDateWrap = filterBtnWrap.cloneNode();\r\n serviceDateWrap.classList.add('filterDateWrap');\r\n const createDateWrap = filterBtnWrap.cloneNode();\r\n createDateWrap.classList.add('filterDateWrap');\r\n\r\n filterBtnWrap.appendChild(applyBtn);\r\n\r\n serviceDateWrap.appendChild(serviceDateStartInput);\r\n serviceDateWrap.appendChild(serviceDateEndInput);\r\n\r\n createDateWrap.appendChild(enteredDateStartInput);\r\n createDateWrap.appendChild(enteredDateEndInput);\r\n if (IsShow == 'ALL' || IsShow == 'showOverlapsBtn')\r\n popup.appendChild(showOverlapscCbox);\r\n if (IsShow == 'ALL' || IsShow == 'billerBtn')\r\n popup.appendChild(billersDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'consumerBtn')\r\n popup.appendChild(consumerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'billingServiceCodeBtn')\r\n popup.appendChild(billingCodeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'reviewStatusBtn')\r\n popup.appendChild(reviewStatusDropdown);\r\n if ($.session.applicationName === 'Gatekeeper' && (IsShow == 'ALL' || IsShow == 'correctedBtn'))\r\n popup.appendChild(correctedDropdown);\r\n if ($.session.applicationName === 'Gatekeeper' && (IsShow == 'ALL' || IsShow == 'outcomeServiceMonitoringBtn'))\r\n popup.appendChild(outcomeServiceMonitoringDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDatesBtn')\r\n popup.appendChild(serviceDateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'createdDatesBtn')\r\n popup.appendChild(createDateWrap);\r\n\r\n popup.appendChild(additionalFilterContainer);\r\n\r\n if (IsShow == 'ALL')\r\n popup.appendChild(moreFilterOptBtn);\r\n\r\n popup.appendChild(filterBtnWrap);\r\n\r\n POPUP.show(popup);\r\n addEventListeners();\r\n }\r\n\r\n function moreFilterOptionPopup() {\r\n const moreFilterPopup = POPUP.build({\r\n hideX: true,\r\n classNames: 'caseNoteReviewFilterPopup',\r\n });\r\n\r\n const applyBtn = button.build({\r\n text: 'apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n checkAdditionalFilters();\r\n POPUP.hide(moreFilterPopup);\r\n buildFilterPopup('ALL');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const cBoxContainer = document.createElement('div');\r\n cBoxContainer.classList.add('cboxContainer');\r\n\r\n cBoxContainer.appendChild(selectAllFilterCbox);\r\n cBoxContainer.appendChild(locationFilterCbox);\r\n cBoxContainer.appendChild(serviceFiltercCbox);\r\n cBoxContainer.appendChild(needFiltercCbox);\r\n cBoxContainer.appendChild(contactFiltercCbox);\r\n cBoxContainer.appendChild(confidentialFiltercCbox);\r\n cBoxContainer.appendChild(billedFiltercCbox);\r\n if ($.session.applicationName === 'Gatekeeper')\r\n cBoxContainer.appendChild(attachmentsFiltercCbox);\r\n cBoxContainer.appendChild(noteTextFiltercCbox);\r\n\r\n moreFilterPopup.appendChild(cBoxContainer);\r\n\r\n btnWrap.appendChild(applyBtn);\r\n //Quick inline style:\r\n btnWrap.style.marginTop = '10px';\r\n\r\n moreFilterPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(moreFilterPopup);\r\n }\r\n\r\n function checkAdditionalFilters() {\r\n activeAdditionalFilters.location = locationFilterCbox.firstChild.checked;\r\n activeAdditionalFilters.service = serviceFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.need = needFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.contact = contactFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.confidential = confidentialFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.billed = billedFiltercCbox.firstChild.checked;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n activeAdditionalFilters.attachments = attachmentsFiltercCbox.firstChild.checked;\r\n activeAdditionalFilters.noteText = noteTextFiltercCbox.firstChild.checked;\r\n\r\n if (!activeAdditionalFilters.location) closeFilter('locationBtn');\r\n if (!activeAdditionalFilters.service) closeFilter('serviceBtn');\r\n if (!activeAdditionalFilters.need) closeFilter('needBtn');\r\n if (!activeAdditionalFilters.contact) closeFilter('contactBtn');\r\n if (!activeAdditionalFilters.confidential) closeFilter('confidentialBtn');\r\n if (!activeAdditionalFilters.billed) closeFilter('billedBtn');\r\n if ($.session.applicationName === 'Gatekeeper' && !activeAdditionalFilters.attachments) closeFilter('billedBtn')\r\n if (!activeAdditionalFilters.noteText) closeFilter('noteTextBtn');\r\n }\r\n\r\n function addAdditionalFilters(IsShow) {\r\n if (activeAdditionalFilters.location && (IsShow == 'ALL' || IsShow == 'locationBtn')) additionalFilterContainer.appendChild(locationDropdown);\r\n if (activeAdditionalFilters.service && (IsShow == 'ALL' || IsShow == 'serviceBtn')) additionalFilterContainer.appendChild(serviceDropdown);\r\n if (activeAdditionalFilters.need && (IsShow == 'ALL' || IsShow == 'needBtn')) additionalFilterContainer.appendChild(needDropdown);\r\n if (activeAdditionalFilters.contact && (IsShow == 'ALL' || IsShow == 'contactBtn')) additionalFilterContainer.appendChild(contactDropdown);\r\n if (activeAdditionalFilters.confidential && (IsShow == 'ALL' || IsShow == 'confidentialBtn'))\r\n additionalFilterContainer.appendChild(confidentialDropdown);\r\n if (activeAdditionalFilters.billed && (IsShow == 'ALL' || IsShow == 'billedBtn')) additionalFilterContainer.appendChild(billedDropdown);\r\n if ($.session.applicationName === 'Gatekeeper' && activeAdditionalFilters.attachments && (IsShow == 'ALL' || IsShow == 'attachmentsBtn'))\r\n additionalFilterContainer.appendChild(attachmentsDropdown);\r\n if (activeAdditionalFilters.noteText && (IsShow == 'ALL' || IsShow == 'noteTextBtn')) {\r\n additionalFilterContainer.appendChild(noteTextDropdown);\r\n additionalFilterContainer.appendChild(noteTextInput);\r\n if (filterValues.noteText === '%' || filterValues.noteText === '') {\r\n noteTextInput.style.display = 'none';\r\n } else {\r\n noteTextInput.querySelector('input').value = filterValues.noteText;\r\n }\r\n }\r\n }\r\n\r\n function addEventListeners() {\r\n billingCodeDropdown.addEventListener('change', event => {\r\n // Reset filter values based on service/bill code to all:\r\n filterValues.location = '%';\r\n filterValues.service = '%';\r\n filterValues.need = '%';\r\n filterValues.contact = '%';\r\n //Repopulate dropdowns\r\n getServiceDepententData(event.target.value);\r\n });\r\n noteTextDropdown.addEventListener('change', event => {\r\n if (event.target.value === 'contains') {\r\n noteTextInput.style.removeProperty('display');\r\n } else {\r\n noteTextInput.style.display = 'none';\r\n noteTextInput.firstChild.value = '';\r\n }\r\n });\r\n selectAllFilterCbox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n locationFilterCbox.firstChild.checked = true;\r\n serviceFiltercCbox.firstChild.checked = true;\r\n needFiltercCbox.firstChild.checked = true;\r\n contactFiltercCbox.firstChild.checked = true;\r\n confidentialFiltercCbox.firstChild.checked = true;\r\n billedFiltercCbox.firstChild.checked = true;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n attachmentsFiltercCbox.firstChild.checked = true;\r\n noteTextFiltercCbox.firstChild.checked = true;\r\n } else {\r\n locationFilterCbox.firstChild.checked = false;\r\n serviceFiltercCbox.firstChild.checked = false;\r\n needFiltercCbox.firstChild.checked = false;\r\n contactFiltercCbox.firstChild.checked = false;\r\n confidentialFiltercCbox.firstChild.checked = false;\r\n billedFiltercCbox.firstChild.checked = false;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n attachmentsFiltercCbox.firstChild.checked = false;\r\n noteTextFiltercCbox.firstChild.checked = false;\r\n }\r\n });\r\n }\r\n\r\n function setNewFilterValues() {\r\n filterValues.billerId = billersDropdown.firstChild.value;\r\n filterValues.consumer = consumerDropdown.firstChild.value;\r\n filterValues.billingCode = billingCodeDropdown.firstChild.value;\r\n filterValues.reviewStatus = reviewStatusDropdown.firstChild.value;\r\n filterValues.corrected = correctedDropdown.firstChild.value;\r\n filterValues.outcomeServiceMonitoring = outcomeServiceMonitoringDropdown.firstChild.value;\r\n filterValues.serviceDateStart = serviceDateStartInput.firstChild.value;\r\n filterValues.serviceDateEnd = serviceDateEndInput.firstChild.value;\r\n filterValues.enteredDateStart =\r\n enteredDateStartInput.firstChild.value === ''\r\n ? '1900-01-01'\r\n : enteredDateStartInput.firstChild.value;\r\n filterValues.enteredDateEnd = enteredDateEndInput.firstChild.value;\r\n filterValues.location = locationDropdown.firstChild.value;\r\n filterValues.service = serviceDropdown.firstChild.value;\r\n filterValues.need = needDropdown.firstChild.value;\r\n filterValues.contact = contactDropdown.firstChild.value;\r\n filterValues.confidential = confidentialDropdown.firstChild.value;\r\n filterValues.billed = billedDropdown.firstChild.value;\r\n if ($.session.applicationName === 'Gatekeeper')\r\n filterValues.attachments = attachmentsDropdown.firstChild.value;\r\n filterValues.overlaps = checkOverlaps;\r\n switch (noteTextDropdown.firstChild.value) {\r\n case 'contains':\r\n filterValues.noteText = noteTextInput.firstChild.value;\r\n break;\r\n case 'blank':\r\n filterValues.noteText = '';\r\n break;\r\n case '%':\r\n filterValues.noteText = '%';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function populateStaticFilters() {\r\n const reviewStatusDropdownData = [\r\n { text: 'All', value: '%' },\r\n { text: 'Not Reviewed', value: 'N' },\r\n { text: 'Passed', value: 'P' },\r\n { text: 'Rejected', value: 'R' },\r\n ];\r\n const condfidentialDropdownData = (billedDropdownData = attachmentDropdownData = correctedDropdownData = outcomeServiceMonitoringDropdownData = [\r\n { text: 'All', value: '%' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ]);\r\n const noteTextDropdownData = [\r\n { text: 'All', value: '%' },\r\n { text: 'Blank', value: 'blank' },\r\n { text: 'Contains', value: 'contains' },\r\n ];\r\n // Note text work:\r\n let noteTextDefault;\r\n if (filterValues.noteText === '%') {\r\n noteTextDefault = filterValues.noteText;\r\n } else if (filterValues.noteText === '') {\r\n noteTextDefault = 'blank';\r\n } else {\r\n noteTextDefault = 'contains';\r\n }\r\n dropdown.populate(reviewStatusDropdown, reviewStatusDropdownData, filterValues.reviewStatus);\r\n dropdown.populate(correctedDropdown, correctedDropdownData, filterValues.corrected);\r\n dropdown.populate(confidentialDropdown, condfidentialDropdownData, filterValues.confidential);\r\n dropdown.populate(billedDropdown, billedDropdownData, filterValues.billed);\r\n dropdown.populate(outcomeServiceMonitoringDropdown, outcomeServiceMonitoringDropdownData, filterValues.outcomeServiceMonitoring);\r\n if ($.session.applicationName === 'Gatekeeper')\r\n dropdown.populate(attachmentsDropdown, attachmentDropdownData, filterValues.attachments);\r\n dropdown.populate(noteTextDropdown, noteTextDropdownData, noteTextDefault);\r\n }\r\n\r\n function populateConsumerFilter() {\r\n populateDropdownData = consumerDropdownData.map(el => {\r\n return {\r\n text: `${el.LN}, ${el.FN}`,\r\n value: el.id,\r\n };\r\n });\r\n populateDropdownData.unshift({ text: 'All', value: '%' });\r\n dropdown.populate(consumerDropdown, populateDropdownData, filterValues.consumer);\r\n }\r\n\r\n function populateBillersDropdown(billers) {\r\n var data = billers.map((b, index) => {\r\n if (index === 1) {\r\n caseManagerId = b.billerId;\r\n }\r\n return {\r\n value: b.billerId,\r\n text: b.billerName,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n //If biller ID has not already been set:\r\n if (!filterValues.billerId) filterValues.billerId = $.session.PeopleId;\r\n dropdown.populate(billersDropdown, data, filterValues.billerId);\r\n }\r\n\r\n function populateDropdownsBasedOnServiceCode(selectedServiceBillCode) {\r\n serviceBillingCodes.unshift({ value: '%', text: 'All' });\r\n needDropdownData.unshift({ value: '%', text: 'All' });\r\n serviceDropdownData.unshift({ value: '%', text: 'All' });\r\n contactDropdownData.unshift({ value: '%', text: 'All' });\r\n locationDropdownData.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(billingCodeDropdown, serviceBillingCodes, selectedServiceBillCode);\r\n dropdown.populate(locationDropdown, locationDropdownData, filterValues.location);\r\n dropdown.populate(serviceDropdown, serviceDropdownData, filterValues.service);\r\n dropdown.populate(needDropdown, needDropdownData, filterValues.need);\r\n dropdown.populate(contactDropdown, contactDropdownData, filterValues.contact);\r\n }\r\n\r\n async function getServiceDepententData(selectedServiceBillCode) {\r\n const rawDropdownData = (\r\n await caseNotesAjax.getCNPopulateFilterDropdowns(selectedServiceBillCode)\r\n ).getCNPopulateFilterDropdownsResult;\r\n sortRawDropdownData(rawDropdownData);\r\n populateDropdownsBasedOnServiceCode(selectedServiceBillCode);\r\n }\r\n\r\n function getConsumerDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getConsumersForCNFilter(res => {\r\n consumerDropdownData = res;\r\n populateConsumerFilter();\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function setCheckForOverLaps(input) {\r\n var isChecked = input.checked;\r\n if (isChecked) {\r\n checkOverlaps = 'Y';\r\n } else {\r\n checkOverlaps = 'N';\r\n }\r\n\r\n }\r\n\r\n function getBillersDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getBillersListForDropDown(res => {\r\n populateBillersDropdown(res);\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function sortRawDropdownData(rawDropdownData) {\r\n serviceBillingCodes = [];\r\n needDropdownData = [];\r\n serviceDropdownData = [];\r\n locationDropdownData = [];\r\n contactDropdownData = [];\r\n //Alphabetize Everything\r\n rawDropdownData.sort(function (a, b) {\r\n if (a.caption.toUpperCase() < b.caption.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.caption.toUpperCase() > b.caption.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n //Sort to proper dropdown array\r\n rawDropdownData.forEach(el => {\r\n switch (el.dropdown) {\r\n case 'ServiceCode':\r\n serviceBillingCodes.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Need':\r\n needDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Service':\r\n serviceDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Contact':\r\n contactDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n case 'Location':\r\n locationDropdownData.push({ text: el.caption, value: el.note_code });\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n // filterValues = {\r\n // billerId: '',\r\n // consumer: '',\r\n // consumerName: '',\r\n // billingCode: '',\r\n // reviewStatus: '',\r\n // serviceDateStart: serviceDateStart,\r\n // serviceDateEnd: serviceDateEnd,\r\n // enteredDateStart: datesEnteredStart,\r\n // enteredDateEnd: datesEnteredEnd,\r\n // location: '',\r\n // service: '',\r\n // need: '',\r\n // contact: '',\r\n // confidential: '',\r\n // billed: '',\r\n // attachments: '',\r\n // noteText: '',\r\n // noteTextValue: '',\r\n // filterDisplayHTML: ''\r\n // }\r\n\r\n function updateCurrentFilterDisplay() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n const billerName =\r\n billersDropdown != undefined && billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex] != undefined ? billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.billerName = billerName;\r\n const consumerName =\r\n consumerDropdown != undefined && consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex] != undefined ? consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.consumerName = consumerName;\r\n const billCodeText =\r\n billingCodeDropdown != undefined && billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex] != undefined ? billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n if (filterValues != undefined) filterValues.billCodeText = billCodeText;\r\n const reviewStatusText =\r\n reviewStatusDropdown != undefined && reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex] != undefined ? reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const correctedText =\r\n correctedDropdown != undefined && correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex] != undefined ? correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const outcomeServiceMonitoringText =\r\n outcomeServiceMonitoringDropdown != undefined && outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex] != undefined ? outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const locationText =\r\n locationDropdown != undefined && locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex] != undefined ? locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.locationText = locationText;\r\n const serviceText =\r\n serviceDropdown != undefined && serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex] != undefined ? serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex].innerText : 'All';\r\n if (filterValues != undefined) filterValues.serviceText = serviceText;\r\n const needText =\r\n needDropdown != undefined && needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex] != undefined ? needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex].innerText : 'All';\r\n const contactText =\r\n contactDropdown != undefined && contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex] != undefined ? contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex].innerText : 'All';\r\n const confidentialText =\r\n confidentialDropdown != undefined && confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex] != undefined ? confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n const billedText =\r\n billedDropdown != undefined && billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex] != undefined ? billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex].innerText : 'All';\r\n let attachmentsText;\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n attachmentsText =\r\n attachmentsDropdown != undefined && attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex] != undefined ? attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex]\r\n .innerText : 'All';\r\n attachmentsText = attachmentsText ? attachmentsText : 'All';// \r\n }\r\n let showOverlapsText = 'No';\r\n if (checkOverlaps === 'N') {\r\n showOverlapsText = 'No';\r\n } else {\r\n showOverlapsText = 'Yes';\r\n }\r\n\r\n const noteTextText =\r\n noteTextDropdown != undefined && noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex] != undefined ? noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex].innerText ===\r\n 'Contains'\r\n ? `Contains: ${noteTextInput.firstChild.value}`\r\n : noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex].innerText : 'All';\r\n\r\n const dispalyServiceDateStart = serviceDateStartInput != undefined && filterValues.serviceDateStart != '' ? UTIL.formatDateFromIso(filterValues.serviceDateStart) : filterValues.serviceDateStart;\r\n const dispalyServiceDateEnd = serviceDateEndInput != undefined && filterValues.serviceDateEnd != '' ? UTIL.formatDateFromIso(filterValues.serviceDateEnd) : filterValues.serviceDateEnd;\r\n const displayDateEnteredStart = enteredDateStartInput != undefined && filterValues.enteredDateStart != '' ? UTIL.formatDateFromIso(filterValues.enteredDateStart) : filterValues.enteredDateStart;\r\n const dispalyDatesEnteredEnd = enteredDateEndInput != undefined && filterValues.enteredDateEnd != '' ? UTIL.formatDateFromIso(filterValues.enteredDateEnd) : filterValues.enteredDateEnd;\r\n\r\n ShowHideFilter(billerName, consumerName, billCodeText, reviewStatusText, correctedText, dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n locationText, serviceText, needText, contactText, confidentialText, billedText, attachmentsText, showOverlapsText, noteTextText, outcomeServiceMonitoringText);\r\n\r\n }\r\n\r\n function ShowHideFilter(billerName, consumerName, billCodeText, reviewStatusText, correctedText, dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n locationText, serviceText, needText, contactText, confidentialText, billedText, attachmentsText, showOverlapsText, noteTextText, outcomeServiceMonitoringText) {\r\n\r\n if (!filterValues) {\r\n filterValues = {\r\n billerId: $.session.PeopleId,\r\n consumer: '%',\r\n consumerName: 'All',\r\n billingCode: '%',\r\n reviewStatus: '%',\r\n serviceDateStart: dispalyServiceDateStart,\r\n serviceDateEnd: dispalyServiceDateEnd,\r\n enteredDateStart: displayDateEnteredStart,\r\n enteredDateEnd: dispalyDatesEnteredEnd,\r\n location: '%',\r\n service: '%',\r\n need: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n billed: '%',\r\n attachments: '%',\r\n overlaps: 'N',\r\n noteText: '%',\r\n noteTextValue: '',\r\n outcomeServiceMonitoring: '%',\r\n };\r\n }\r\n\r\n if (billerName === '%' || billerName === 'All') {\r\n btnWrap.appendChild(billerBtnWrap);\r\n btnWrap.removeChild(billerBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(billerBtnWrap);\r\n if (document.getElementById('billerBtn') != null)\r\n document.getElementById('billerBtn').innerHTML = 'Biller: ' + billerName;\r\n }\r\n\r\n if (consumerName === '%' || consumerName === 'All') {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n btnWrap.removeChild(consumerBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n if (document.getElementById('consumerBtn') != null)\r\n document.getElementById('consumerBtn').innerHTML = 'Consumer: ' + consumerName;\r\n }\r\n\r\n if (billCodeText === '%' || billCodeText === 'All') {\r\n btnWrap.appendChild(billingServiceBtnWrap);\r\n btnWrap.removeChild(billingServiceBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(billingServiceBtnWrap);\r\n if (document.getElementById('billingServiceCodeBtn') != null)\r\n document.getElementById('billingServiceCodeBtn').innerHTML = $.session.applicationName === 'Gatekeeper' ? 'Billing Code: ' + billCodeText : 'Service Code: ' + billCodeText;\r\n }\r\n\r\n if (reviewStatusText === '%' || reviewStatusText === 'All') {\r\n btnWrap.appendChild(reviewStatusBtnWrap);\r\n btnWrap.removeChild(reviewStatusBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(reviewStatusBtnWrap);\r\n if (document.getElementById('reviewStatusBtn') != null)\r\n document.getElementById('reviewStatusBtn').innerHTML = 'Review Status: ' + reviewStatusText;\r\n }\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if (correctedText === '%' || correctedText === 'All') {\r\n btnWrap.appendChild(correctedBtnWrap);\r\n btnWrap.removeChild(correctedBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(correctedBtnWrap);\r\n if (document.getElementById('correctedBtn') != null)\r\n document.getElementById('correctedBtn').innerHTML = 'Corrected: ' + correctedText;\r\n }\r\n\r\n if (outcomeServiceMonitoringText === '%' || outcomeServiceMonitoringText === 'All') {\r\n btnWrap.appendChild(outcomeServiceMonitoringBtnWrap);\r\n btnWrap.removeChild(outcomeServiceMonitoringBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(outcomeServiceMonitoringBtnWrap);\r\n if (document.getElementById('outcomeServiceMonitoringBtn') != null)\r\n document.getElementById('outcomeServiceMonitoringBtn').innerHTML = 'Outcome/Service Monitoring: ' + outcomeServiceMonitoringText;\r\n }\r\n }\r\n\r\n if (dispalyServiceDateStart === '' && dispalyServiceDateEnd === '') {\r\n btnWrap.appendChild(serviceDatesBtnWrap);\r\n btnWrap.removeChild(serviceDatesBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(serviceDatesBtnWrap);\r\n if (document.getElementById('serviceDatesBtn') != null)\r\n document.getElementById('serviceDatesBtn').innerHTML = 'Service Dates: ' + dispalyServiceDateStart + ' - ' + dispalyServiceDateEnd;\r\n }\r\n\r\n if (displayDateEnteredStart === '' && dispalyDatesEnteredEnd === '') {\r\n btnWrap.appendChild(createdDatesBtnWrap);\r\n btnWrap.removeChild(createdDatesBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(createdDatesBtnWrap);\r\n if (document.getElementById('createdDatesBtn') != null)\r\n document.getElementById('createdDatesBtn').innerHTML = 'Created Dates: ' + displayDateEnteredStart + ' - ' + dispalyDatesEnteredEnd;\r\n }\r\n\r\n if (locationText === '%' || locationText === 'All') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationText;\r\n }\r\n\r\n if (serviceText === '%' || serviceText === 'All') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n if (document.getElementById('serviceBtn') != null)\r\n document.getElementById('serviceBtn').innerHTML = 'Service: ' + serviceText;\r\n }\r\n\r\n if (needText === '%' || needText === 'All') {\r\n btnWrap.appendChild(needBtnWrap);\r\n btnWrap.removeChild(needBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(needBtnWrap);\r\n if (document.getElementById('needBtn') != null)\r\n document.getElementById('needBtn').innerHTML = 'Need: ' + needText;\r\n }\r\n\r\n if (contactText === '%' || contactText === 'All') {\r\n btnWrap.appendChild(contactBtnWrap);\r\n btnWrap.removeChild(contactBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(contactBtnWrap);\r\n if (document.getElementById('contactBtn') != null)\r\n document.getElementById('contactBtn').innerHTML = 'Contact: ' + contactText;\r\n }\r\n\r\n if (confidentialText === '%' || confidentialText === 'All') {\r\n btnWrap.appendChild(confidentialBtnWrap);\r\n btnWrap.removeChild(confidentialBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(confidentialBtnWrap);\r\n if (document.getElementById('confidentialBtn') != null)\r\n document.getElementById('confidentialBtn').innerHTML = 'Confidential: ' + confidentialText;\r\n }\r\n\r\n if (billedText === '%' || billedText === 'All') {\r\n btnWrap.appendChild(billedBtnWrap);\r\n btnWrap.removeChild(billedBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(billedBtnWrap);\r\n if (document.getElementById('billedBtn') != null)\r\n document.getElementById('billedBtn').innerHTML = 'Billed: ' + billedText;\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n if (attachmentsText === '%' || attachmentsText === 'All') {\r\n btnWrap.appendChild(attachmentsBtnWrap);\r\n btnWrap.removeChild(attachmentsBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(attachmentsBtnWrap);\r\n if (document.getElementById('attachmentsBtn') != null)\r\n document.getElementById('attachmentsBtn').innerHTML = 'Attachments: ' + attachmentsText;\r\n }\r\n }\r\n\r\n btnWrap.appendChild(showOverlapsBtnWrap);\r\n if (document.getElementById('showOverlapsBtn') != null)\r\n document.getElementById('showOverlapsBtn').innerHTML = 'Show Overlaps: ' + showOverlapsText;\r\n\r\n if (noteTextText === '%' || noteTextText === 'All') {\r\n btnWrap.appendChild(noteTextBtnWrap);\r\n btnWrap.removeChild(noteTextBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(noteTextBtnWrap);\r\n if (document.getElementById('noteTextBtn') != null)\r\n document.getElementById('noteTextBtn').innerHTML = 'Note Text: ' + noteTextText;\r\n }\r\n return btnWrap;\r\n }\r\n\r\n function filterButtonSet(billerName, displayConsumerName, billCodeText, reviewStatusText, correctedText, dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n locationText, serviceText, needText, contactText, confidentialText, billedText, attachmentsText, showOverlapsText, noteTextText, filterValues, outcomeServiceMonitoringText) {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { cnFilters.init(filterValues, 'ALL') },\r\n });\r\n\r\n billerBtn = button.build({\r\n id: 'billerBtn',\r\n text: 'Biller: ' + billerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'billerBtn') },\r\n });\r\n billerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('billerBtn') },\r\n });\r\n\r\n consumerBtn = button.build({\r\n id: 'consumerBtn',\r\n text: 'Consumer: ' + displayConsumerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'consumerBtn') },\r\n });\r\n consumerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('consumerBtn') },\r\n });\r\n\r\n billingServiceCodeBtn = button.build({\r\n id: 'billingServiceCodeBtn',\r\n text: $.session.applicationName === 'Gatekeeper' ? 'Billing Code: ' : 'Service Code: ' + billCodeText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'billingServiceCodeBtn') },\r\n });\r\n billingServiceCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('billingServiceCodeBtn') },\r\n });\r\n\r\n reviewStatusBtn = button.build({\r\n id: 'reviewStatusBtn',\r\n text: 'Review Status: ' + reviewStatusText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'reviewStatusBtn') },\r\n });\r\n reviewStatusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('reviewStatusBtn') },\r\n });\r\n\r\n correctedBtn = button.build({\r\n id: 'correctedBtn',\r\n text: 'Corrected: ' + correctedText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'correctedBtn') },\r\n });\r\n correctedCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('correctedBtn') },\r\n });\r\n\r\n outcomeServiceMonitoringBtn = button.build({\r\n id: 'outcomeServiceMonitoringBtn',\r\n text: 'Outcome/Service Monitoring: ' + outcomeServiceMonitoringText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'outcomeServiceMonitoringBtn') },\r\n });\r\n outcomeServiceMonitoringCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('outcomeServiceMonitoringBtn') },\r\n });\r\n\r\n serviceDatesBtn = button.build({\r\n id: 'serviceDatesBtn',\r\n text: 'Service Dates: ' + dispalyServiceDateStart + ' - ' + dispalyServiceDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'serviceDatesBtn') },\r\n });\r\n\r\n createdDatesBtn = button.build({\r\n id: 'createdDatesBtn',\r\n text: 'Created Dates: ' + displayDateEnteredStart + ' - ' + dispalyDatesEnteredEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'createdDatesBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + serviceText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'serviceBtn') },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('serviceBtn') },\r\n });\r\n\r\n needBtn = button.build({\r\n id: 'needBtn',\r\n text: 'Need: ' + needText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'needBtn') },\r\n });\r\n needCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('needBtn') },\r\n });\r\n\r\n contactBtn = button.build({\r\n id: 'contactBtn',\r\n text: 'Contact: ' + contactText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'contactBtn') },\r\n });\r\n contactCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('contactBtn') },\r\n });\r\n\r\n confidentialBtn = button.build({\r\n id: 'confidentialBtn',\r\n text: 'Confidential: ' + confidentialText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'confidentialBtn') },\r\n });\r\n confidentialCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('confidentialBtn') },\r\n });\r\n\r\n attachmentsBtn = button.build({\r\n id: 'attachmentsBtn',\r\n text: 'Attachments: ' + attachmentsText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'attachmentsBtn') },\r\n });\r\n attachmentsCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('attachmentsBtn') },\r\n });\r\n\r\n billedBtn = button.build({\r\n id: 'billedBtn',\r\n text: 'Billed: ' + billedText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'billedBtn') },\r\n });\r\n billedCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('billedBtn') },\r\n });\r\n\r\n\r\n showOverlapsBtn = button.build({\r\n id: 'showOverlapsBtn',\r\n text: 'Show Overlaps: ' + showOverlapsText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'showOverlapsBtn') },\r\n });\r\n\r\n noteTextBtn = button.build({\r\n id: 'noteTextBtn',\r\n text: 'Note Text: ' + noteTextText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { cnFilters.init(filterValues, 'noteTextBtn') },\r\n });\r\n noteTextCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('noteTextBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n billerBtnWrap = document.createElement('div');\r\n billerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n billerBtnWrap.appendChild(billerBtn);\r\n billerBtnWrap.appendChild(billerCloseBtn);\r\n btnWrap.appendChild(billerBtnWrap);\r\n\r\n consumerBtnWrap = document.createElement('div');\r\n consumerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n consumerBtnWrap.appendChild(consumerBtn);\r\n consumerBtnWrap.appendChild(consumerCloseBtn);\r\n btnWrap.appendChild(consumerBtnWrap);\r\n\r\n billingServiceBtnWrap = document.createElement('div');\r\n billingServiceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n billingServiceBtnWrap.appendChild(billingServiceCodeBtn);\r\n billingServiceBtnWrap.appendChild(billingServiceCodeCloseBtn);\r\n btnWrap.appendChild(billingServiceBtnWrap);\r\n\r\n reviewStatusBtnWrap = document.createElement('div');\r\n reviewStatusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n reviewStatusBtnWrap.appendChild(reviewStatusBtn);\r\n reviewStatusBtnWrap.appendChild(reviewStatusCloseBtn);\r\n btnWrap.appendChild(reviewStatusBtnWrap);\r\n\r\n\r\n correctedBtnWrap = document.createElement('div');\r\n correctedBtnWrap.classList.add('filterSelectionBtnWrap');\r\n correctedBtnWrap.appendChild(correctedBtn);\r\n correctedBtnWrap.appendChild(correctedCloseBtn);\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n btnWrap.appendChild(correctedBtnWrap);\r\n }\r\n\r\n outcomeServiceMonitoringBtnWrap = document.createElement('div');\r\n outcomeServiceMonitoringBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeServiceMonitoringBtnWrap.appendChild(outcomeServiceMonitoringBtn);\r\n outcomeServiceMonitoringBtnWrap.appendChild(outcomeServiceMonitoringCloseBtn);\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n btnWrap.appendChild(outcomeServiceMonitoringBtnWrap);\r\n }\r\n\r\n serviceDatesBtnWrap = document.createElement('div');\r\n serviceDatesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDatesBtnWrap.appendChild(serviceDatesBtn);\r\n btnWrap.appendChild(serviceDatesBtnWrap);\r\n\r\n createdDatesBtnWrap = document.createElement('div');\r\n createdDatesBtnWrap.classList.add('filterSelectionBtnWrap');\r\n createdDatesBtnWrap.appendChild(createdDatesBtn);\r\n btnWrap.appendChild(createdDatesBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n needBtnWrap = document.createElement('div');\r\n needBtnWrap.classList.add('filterSelectionBtnWrap');\r\n needBtnWrap.appendChild(needBtn);\r\n needBtnWrap.appendChild(needCloseBtn);\r\n btnWrap.appendChild(needBtnWrap);\r\n\r\n contactBtnWrap = document.createElement('div');\r\n contactBtnWrap.classList.add('filterSelectionBtnWrap');\r\n contactBtnWrap.appendChild(contactBtn);\r\n contactBtnWrap.appendChild(contactCloseBtn);\r\n btnWrap.appendChild(contactBtnWrap);\r\n\r\n confidentialBtnWrap = document.createElement('div');\r\n confidentialBtnWrap.classList.add('filterSelectionBtnWrap');\r\n confidentialBtnWrap.appendChild(confidentialBtn);\r\n confidentialBtnWrap.appendChild(confidentialCloseBtn);\r\n btnWrap.appendChild(confidentialBtnWrap);\r\n\r\n billedBtnWrap = document.createElement('div');\r\n billedBtnWrap.classList.add('filterSelectionBtnWrap');\r\n billedBtnWrap.appendChild(billedBtn);\r\n billedBtnWrap.appendChild(billedCloseBtn);\r\n btnWrap.appendChild(billedBtnWrap);\r\n\r\n\r\n attachmentsBtnWrap = document.createElement('div');\r\n attachmentsBtnWrap.classList.add('filterSelectionBtnWrap');\r\n attachmentsBtnWrap.appendChild(attachmentsBtn);\r\n attachmentsBtnWrap.appendChild(attachmentsCloseBtn);\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n btnWrap.appendChild(attachmentsBtnWrap);\r\n }\r\n\r\n showOverlapsBtnWrap = document.createElement('div');\r\n showOverlapsBtnWrap.classList.add('filterSelectionBtnWrap');\r\n showOverlapsBtnWrap.appendChild(showOverlapsBtn);\r\n btnWrap.appendChild(showOverlapsBtnWrap);\r\n\r\n noteTextBtnWrap = document.createElement('div');\r\n noteTextBtnWrap.classList.add('filterSelectionBtnWrap');\r\n noteTextBtnWrap.appendChild(noteTextBtn);\r\n noteTextBtnWrap.appendChild(noteTextCloseBtn);\r\n btnWrap.appendChild(noteTextBtnWrap);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n\r\n if (closeFilter == 'billerBtn') {\r\n filterValues.billerId = '%';\r\n if (billersDropdown != undefined) {\r\n billersDropdown.firstChild.value = 'All';\r\n if (billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex] != undefined)\r\n billersDropdown.firstChild.options[billersDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n }\r\n if (closeFilter == 'consumerBtn') {\r\n filterValues.consumer = '%';\r\n consumerDropdown.firstChild.value = 'All';\r\n if (consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex] != undefined)\r\n consumerDropdown.firstChild.options[consumerDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'billingServiceCodeBtn') {\r\n filterValues.billingCode = '%';\r\n billingCodeDropdown.firstChild.value = 'All';\r\n if (billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex] != undefined)\r\n billingCodeDropdown.firstChild.options[billingCodeDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'reviewStatusBtn') {\r\n filterValues.reviewStatus = '%';\r\n reviewStatusDropdown.firstChild.value = 'All';\r\n if (reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex] != undefined)\r\n reviewStatusDropdown.firstChild.options[reviewStatusDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'correctedBtn') {\r\n filterValues.corrected = '%';\r\n correctedDropdown.firstChild.value = 'All';\r\n if (correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex] != undefined)\r\n correctedDropdown.firstChild.options[correctedDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'outcomeServiceMonitoringBtn') {\r\n filterValues.outcomeServiceMonitoring = '%';\r\n outcomeServiceMonitoringDropdown.firstChild.value = 'All';\r\n if (outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex] != undefined)\r\n outcomeServiceMonitoringDropdown.firstChild.options[outcomeServiceMonitoringDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'locationBtn') {\r\n filterValues.location = '%';\r\n locationDropdown.firstChild.value = 'All';\r\n if (locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex] != undefined)\r\n locationDropdown.firstChild.options[locationDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'serviceBtn') {\r\n filterValues.service = '%';\r\n serviceDropdown.firstChild.value = 'All';\r\n if (serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex] != undefined)\r\n serviceDropdown.firstChild.options[serviceDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'needBtn') {\r\n filterValues.need = '%';\r\n needDropdown.firstChild.value = 'All';\r\n if (needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex] != undefined)\r\n needDropdown.firstChild.options[needDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'contactBtn') {\r\n filterValues.contact = '%';\r\n contactDropdown.firstChild.value = 'All';\r\n if (contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex] != undefined)\r\n contactDropdown.firstChild.options[contactDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'confidentialBtn') {\r\n filterValues.confidential = '%';\r\n confidentialDropdown.firstChild.value = 'All';\r\n if (confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex] != undefined)\r\n confidentialDropdown.firstChild.options[confidentialDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n if (closeFilter == 'billedBtn') {\r\n filterValues.billed = '%';\r\n billedDropdown.firstChild.value = 'All';\r\n if (billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex] != undefined)\r\n billedDropdown.firstChild.options[billedDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'attachmentsBtn') {\r\n filterValues.attachments = '%';\r\n attachmentsDropdown.firstChild.value = 'All';\r\n if (attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex] != undefined)\r\n attachmentsDropdown.firstChild.options[attachmentsDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n if (closeFilter == 'noteTextBtn') {\r\n filterValues.noteText = '%';\r\n noteTextDropdown.firstChild.value = 'All';\r\n if (noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex] != undefined)\r\n noteTextDropdown.firstChild.options[noteTextDropdown.firstChild.selectedIndex].innerText = 'All';\r\n }\r\n\r\n updateCurrentFilterDisplay();\r\n notesOverview.setFilterValFromPopup(filterValues);\r\n }\r\n\r\n function init(overviewFilterValues, IsShow) {\r\n filterValues = overviewFilterValues;\r\n if (filterValues.overlaps === 'N') {\r\n checkOverlaps = 'N';\r\n }\r\n if (!activeAdditionalFilters) {\r\n activeAdditionalFilters = {\r\n location: false,\r\n service: false,\r\n need: false,\r\n contact: false,\r\n confidential: false,\r\n billed: false,\r\n attachments: false,\r\n noteText: false,\r\n };\r\n }\r\n createFilterElements();\r\n const consumerPromise = getConsumerDropdownData();\r\n const billerPromise = getBillersDropdownData();\r\n Promise.race([consumerPromise, billerPromise]).then(() => { });\r\n getServiceDepententData(filterValues.billingCode);\r\n populateStaticFilters();\r\n createMoreFilterOptionElements();\r\n buildFilterPopup(IsShow);\r\n }\r\n\r\n return {\r\n init,\r\n filterButtonSet,\r\n ShowHideFilter,\r\n updateCurrentFilterDisplay,\r\n };\r\n})();\r\n","var notesOverview = (function () {\r\n // DOM\r\n var overviewTable; \r\n // Values & Data\r\n var billers;\r\n var caseLoadRestriction;\r\n var groups;\r\n var tableConsumers;\r\n //PERMISSIONS\r\n var viewEntered;\r\n var caseloadOnly;\r\n // Filter Values\r\n let filterValues;\r\n var billerId;\r\n var billerName;\r\n var serviceDateStart;\r\n var serviceDateEnd;\r\n var datesEnteredStart; // '1900-01-01'\r\n var datesEnteredEnd; // UTIL.getTodaysDate()\r\n let reviewConsumerId;\r\n // table load vals\r\n var selectedRosterId = '';\r\n let isSSANote;\r\n var interval = null;\r\n // id array\r\n let noteIds = [];\r\n let overLapIds = [];\r\n\r\n let reviewAttachmentList;\r\n let attachcount;\r\n\r\n let reportRunning = false;\r\n\r\n let btnWrapFilter;\r\n // UTIL\r\n //---------------------------------------------\r\n function getServiceDateDefaultValues(startOrEnd) {\r\n var dateOffset = 24 * 60 * 60 * 1000 * parseInt($.session.defaultCaseNoteReviewDays);\r\n var todaysDate = new Date();\r\n var daysBackDate = new Date();\r\n var newDate;\r\n daysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n if (startOrEnd === 'start') {\r\n newDate =\r\n daysBackDate.getFullYear() +\r\n '-' +\r\n ('0' + (daysBackDate.getMonth() + 1)).slice(-2) +\r\n '-' +\r\n ('0' + daysBackDate.getDate()).slice(-2);\r\n } else {\r\n newDate =\r\n todaysDate.getFullYear() +\r\n '-' +\r\n ('0' + (todaysDate.getMonth() + 1)).slice(-2) +\r\n '-' +\r\n ('0' + todaysDate.getDate()).slice(-2);\r\n }\r\n\r\n return newDate;\r\n }\r\n\r\n //MutationObserver to detect when loading and unloading review table to\r\n //disable and re-enable consumer list button\r\n function buildMutationObserver() {\r\n var observNode = document.getElementById('actioncenter');\r\n var config = { attributes: true };\r\n var callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (\r\n mutation.target.dataset.activeSection === 'caseNotes-new' ||\r\n mutation.target.dataset.activeSection === 'caseNotes-review'\r\n ) {\r\n observer.disconnect();\r\n } else if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) miniRosterBtn.classList.remove('disabled');\r\n }\r\n //Reset filter values when leaving casenotes\r\n if (mutation.target.dataset.activeModule !== 'casenotes') {\r\n resetFilterValues();\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n }\r\n\r\n function showCNReportsPopup() {\r\n // popup\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visible', 'popup--filter', 'timeEntryReportsPopup');\r\n popup.setAttribute('data-popup', 'true');\r\n // header\r\n var header = document.createElement('h5');\r\n header.innerHTML = `Select A Report To View`;\r\n // reports list\r\n var reports = `\r\n
      \r\n
    \r\n `;\r\n // var detailBtn = button.build({\r\n // text: 'Detail Report',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // reportRunning = true;\r\n // const notesReportWarningPopup = POPUP.build({\r\n // id: 'notesReportWarningPopup1',\r\n // hideX: false,\r\n // classNames: 'warning',\r\n // });\r\n // const warningMessage = document.createElement('p');\r\n // warningMessage.innerHTML =\r\n // 'Your report is being generated and will be downloaded when finished, in the meantime you may continue with your work.';\r\n // const acceptBtn = button.build({\r\n // text: 'Ok',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // POPUP.hide(notesReportWarningPopup);\r\n // overlay.hide();\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n // actioncenter.removeChild(popup);\r\n // const IDs = noteIds.join(',');\r\n // passFilterValuesForDetailReport(filterValues);\r\n // },\r\n // });\r\n // const btnWrap = document.createElement('div');\r\n // btnWrap.classList.add('btnWrap');\r\n // btnWrap.appendChild(acceptBtn);\r\n // notesReportWarningPopup.appendChild(warningMessage);\r\n // notesReportWarningPopup.appendChild(btnWrap);\r\n // POPUP.show(notesReportWarningPopup);\r\n // },\r\n // });\r\n // var timeEntryBtn = button.build({\r\n // text: 'Time Analysis Report',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // reportRunning = true;\r\n // const notesReportWarningPopup = POPUP.build({\r\n // id: 'notesReportWarningPopup2',\r\n // hideX: false,\r\n // classNames: 'warning',\r\n // });\r\n // const warningMessage = document.createElement('p');\r\n // warningMessage.innerHTML =\r\n // 'Your report is being generated and will be downloaded when finished, in the meantime you may continue with your work.';\r\n // const acceptBtn = button.build({\r\n // text: 'Ok',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // POPUP.hide(notesReportWarningPopup);\r\n // overlay.hide();\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n // actioncenter.removeChild(popup);\r\n // passFilterValuesForTimeEntryReport(filterValues);\r\n // },\r\n // });\r\n // const btnWrap = document.createElement('div');\r\n // btnWrap.classList.add('btnWrap');\r\n // btnWrap.appendChild(acceptBtn);\r\n // notesReportWarningPopup.appendChild(warningMessage);\r\n // notesReportWarningPopup.appendChild(btnWrap);\r\n // POPUP.show(notesReportWarningPopup);\r\n // },\r\n // });\r\n\r\n if (reportRunning) {\r\n detailBtn.disabled = true;\r\n timeEntryBtn.disabled = true;\r\n }\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(detailBtn);\r\n popup.appendChild(timeEntryBtn);\r\n\r\n // append to dom\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n function passFilterValuesForDetailReport(filterValues) {\r\n caseNotesAjax.generateCNDetailReport(filterValues, checkIfCNReportIsReadyInterval);\r\n }\r\n\r\n function passFilterValuesForTimeEntryReport(filterValues) {\r\n caseNotesAjax.generateCNTimeAnalysisReport(filterValues, checkIfCNReportIsReadyInterval);\r\n }\r\n\r\n function checkIfCNReportIsReadyInterval(res) {\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 1000;\r\n interval = setInterval(async () => {\r\n await checkCNReportExists(res);\r\n }, intSeconds);\r\n }\r\n\r\n async function checkCNReportExists(res) {\r\n await caseNotesAjax.checkIfCNReportExists(res, callCNReport);\r\n }\r\n\r\n function callCNReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n caseNotesAjax.viewCaseNoteReport(reportScheduleId);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n }\r\n }\r\n\r\n function initFilterDisplay() {\r\n if (!billerName) {\r\n billers.forEach(biller => {\r\n if (biller.billerId == $.session.PeopleId) {\r\n billerName = biller.billerName;\r\n }\r\n });\r\n }\r\n\r\n const displayConsumerName = filterValues.consumerName;\r\n\r\n let dispalyServiceDateStart = UTIL.formatDateFromIso(serviceDateStart);\r\n let dispalyServiceDateEnd = UTIL.formatDateFromIso(serviceDateEnd);\r\n let displayDateEnteredStart = UTIL.formatDateFromIso(datesEnteredStart);\r\n let dispalyDatesEnteredEnd = UTIL.formatDateFromIso(datesEnteredEnd);\r\n\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n currentFilterDisplay.id = 'notesFilterDiv';\r\n btnWrapFilter = cnFilters.filterButtonSet(billerName, displayConsumerName, 'All', 'All', 'All', dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n 'All', 'All', 'All', 'All', 'All', 'All', 'All', 'No', 'All', filterValues,'All');\r\n currentFilterDisplay.appendChild(btnWrapFilter);\r\n btnWrapFilter = cnFilters.ShowHideFilter(billerName, displayConsumerName, 'All', 'All', 'All', dispalyServiceDateStart, dispalyServiceDateEnd, displayDateEnteredStart, dispalyDatesEnteredEnd,\r\n 'All', 'All', 'All', 'All', 'All', 'All', 'All', 'No', 'All','All'); \r\n currentFilterDisplay.appendChild(btnWrapFilter);\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n function buildTopBtns() {\r\n // custom search stuff\r\n SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('consumerSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n var newNoteBtn = button.build({\r\n text: 'New Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n callback: function () {\r\n //reset filter values when creating new note\r\n resetFilterValues();\r\n $.session.CaseNotesSSANotes && isSSANote ? noteSSA.init('new') : note.init('new');\r\n },\r\n });\r\n // var cnReportBtn = button.build({\r\n // text: 'Reports',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // modal: true,\r\n // icon: 'add',\r\n // callback: function () {\r\n // showCNReportsPopup();\r\n // },\r\n // });\r\n\r\n var cnReportBtn = generateReports.createMainReportButton([ { text: 'Detail Report', filterValues},{ text: 'Minutes By Date', filterValues}, { text: 'Time Analysis Report', filterValues}, { text: 'TXX Case Notes', filterValues}])\r\n\r\n cnADVReportBtn = generateReports.createMainReportButton([{ text: 'Detailed Case Notes By Biller', filterValues }, { text: 'Minutes By Date', filterValues}]);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('cnbtnWrap');\r\n\r\n //PERMISSION// caseNoteUpdate === True means they have they\r\n //Can create new notes or update/delete notes.\r\n if ($.session.CaseNotesUpdate) btnWrap.appendChild(newNoteBtn);\r\n if ($.session.applicationName === 'Gatekeeper') btnWrap.appendChild(cnReportBtn);\r\n if ($.session.applicationName === 'Advisor') btnWrap.appendChild(cnADVReportBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(SEARCH_WRAP); \r\n const filteredBy = initFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy); \r\n }\r\n\r\n // Table\r\n //---------------------------------------------\r\n function handleTableEvents() {\r\n var isRow = event.target.classList.contains('table__row');\r\n if (!isRow) return;\r\n // show row details and/or go to note review\r\n var caseNoteId = event.target.id;\r\n var consumerId = event.target.dataset.consumerId;\r\n var isSSANote = event.target.dataset.isssanote;\r\n\r\n if ($.session.CaseNotesSSANotes && isSSANote === 'Y') {\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function (results) {\r\n noteSSA.init('review', results, groups);\r\n });\r\n } else {\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function (results) {\r\n note.init('review', results, groups);\r\n });\r\n }\r\n }\r\n\r\n function getTableData() {\r\n // const cnData = await fetchData('getConsumersThatCanHaveMileageJSON', {\r\n // applicationName: 'Advisor',\r\n // attachments: '%',\r\n // billed: '%',\r\n // billerId: '7369',\r\n // billingCode: '%',\r\n // confidential: '%',\r\n // consumerId: '%',\r\n // contact: '%',\r\n // corrected: '%',\r\n // dateEnteredEnd: '2023-10-03',\r\n // dateEnteredStart: '1900-01-01',\r\n // location: '%',\r\n // need: '%',\r\n // noteText: '%%%',\r\n // overlaps: 'N',\r\n // reviewStatus: '%',\r\n // service: '%',\r\n // serviceEndDate: '2023-10-03',\r\n // serviceStartDate: '2020-09-26',\r\n // });\r\n // var tableFilterData = {\r\n // billerId,\r\n // selectedRosterUserId: selectedRosterId,\r\n // serviceStartDate: serviceDateStart,\r\n // serviceEndDate: serviceDateEnd,\r\n // dateEnteredStart: datesEnteredStart === \"\" ? '1900-01-01': datesEnteredStart,\r\n // dateEnteredEnd: datesEnteredEnd\r\n // }\r\n caseNotesAjax.getFilteredCaseNotesList(filterValues, filteredData => {\r\n if (filteredData.length !== 0) {\r\n overLapIds = filteredData[0].overlaps;\r\n }\r\n\r\n populateTable(filteredData);\r\n groups = {};\r\n tableConsumers = [];\r\n filteredData.forEach(fd => {\r\n if (fd.numberInGroup !== '1') {\r\n const groupNoteId = fd.groupnoteid.split('.')[0];\r\n var consumerId = fd.consumerid.split('.')[0];\r\n var name = `${fd.lastname}, ${fd.firstname}`;\r\n if (!groups[groupNoteId]) {\r\n groups[groupNoteId] = { [consumerId]: name };\r\n }\r\n groups[groupNoteId][consumerId] = name;\r\n }\r\n });\r\n filteredData.forEach(fd => {\r\n var cnId = fd.casenoteid.split('.')[0];\r\n var firstName = fd.firstname;\r\n var lastName = fd.lastname;\r\n var obj = { id: cnId, FirstName: firstName, LastName: lastName };\r\n tableConsumers.push(obj);\r\n });\r\n });\r\n }\r\n function populateTable(tableData) {\r\n tableData = permissions_Table(tableData);\r\n var groupCounts = {};\r\n\r\n tableData.forEach(td => {\r\n let groupId;\r\n if (td.groupnoteid === null) {\r\n groupId = '';\r\n } else {\r\n groupId = td.groupnoteid.split('.')[0];\r\n }\r\n if (!groupCounts[groupId]) {\r\n groupCounts[groupId] = 0;\r\n }\r\n\r\n groupCounts[groupId]++;\r\n });\r\n\r\n var data = tableData.map(td => {\r\n var hasOverlap = false;\r\n var originalupdateTrim = td.originalupdate.split('T')[0];\r\n var servicedate = UTIL.formatDateFromIso(td.servicedate.split('T')[0]);\r\n var starttime = UTIL.convertFromMilitary(td.starttime);\r\n var endtime = UTIL.convertFromMilitary(td.endtime);\r\n var name = `${td.lastname}, ${td.firstname}`;\r\n var originalUpdate = UTIL.formatDateFromIso(originalupdateTrim);\r\n var lastUpdateBy = td.lastupdatedby;\r\n // var groupCount = groupCounts[td.groupnoteid] === '' ? '0' : groupCounts[td.groupnoteid];\r\n var groupCount = td.numberInGroup;\r\n var caseNoteId = td.casenoteid.split('.')[0];\r\n if (overLapIds !== null) {\r\n if (overLapIds.includes(caseNoteId)) hasOverlap = true;\r\n }\r\n var consumerId = td.consumerid.split('.')[0];\r\n isSSANote = td.isSSANote;\r\n // just for GK - JMM 3/18\r\n attachcount = td.attachcount;\r\n\r\n noteIds.push(caseNoteId);\r\n\r\n var thisendIcon;\r\n var GKendIcon =\r\n !attachcount || attachcount === ' ' || attachcount === '0'\r\n ? `

    XXX

    `\r\n : `${icons['attachment']}`;\r\n var ADVendIcon = null;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n thisendIcon = GKendIcon;\r\n } else {\r\n thisendIcon = ADVendIcon;\r\n }\r\n\r\n return {\r\n values: [servicedate, starttime, endtime, name, originalUpdate, lastUpdateBy, groupCount],\r\n id: caseNoteId,\r\n overlap: hasOverlap,\r\n attributes: [\r\n { key: 'data-consumer-id', value: consumerId },\r\n { key: 'data-isssanote', value: isSSANote },\r\n ],\r\n endIcon: thisendIcon,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n var isParentRow = e.target.parentNode.classList.contains('table__row');\r\n if (!isParentRow) return;\r\n // show row details and/or go to note review\r\n var caseNoteId = e.target.parentNode.id;\r\n var testNoteId = 1298784;\r\n caseNotesAjax.getCaseNoteAttachmentsList(caseNoteId, function (results) {\r\n attachmentPopup();\r\n if (results.length !== 0) populateExistingAttachments(results);\r\n\r\n //cnAttachment.init([], results, '', caseNoteId);\r\n });\r\n },\r\n onClick: handleTableEvents,\r\n };\r\n });\r\n\r\n table.populate(overviewTable, data);\r\n }\r\n\r\n function buildTable() {\r\n var thiscolumnheadings = [];\r\n var GKcolumnheadings = [\r\n 'Service Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Name',\r\n 'Date Created',\r\n 'User Updated',\r\n 'Group',\r\n 'Attach',\r\n ];\r\n var ADVcolumnheadings = ['Service Date', 'Start Time', 'End Time', 'Name', 'Date Created', 'User Updated', 'Group'];\r\n $.session.applicationName === 'Gatekeeper'\r\n ? (thiscolumnheadings = GKcolumnheadings)\r\n : (thiscolumnheadings = ADVcolumnheadings);\r\n\r\n overviewTable = table.build({\r\n tableId: 'caseNotesReviewTable',\r\n columnHeadings: thiscolumnheadings,\r\n endIcon: !attachcount || attachcount === ' ' || attachcount === '0' ? false : true,\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = overviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Service Date\r\n headers[1].setAttribute('data-type', 'date'); // Service Start\r\n headers[2].setAttribute('data-type', 'date'); // Service End\r\n headers[3].setAttribute('data-type', 'string'); // Name\r\n headers[4].setAttribute('data-type', 'date'); // Date Created\r\n headers[5].setAttribute('data-type', 'string'); // User Updated\r\n headers[6].setAttribute('data-type', 'number'); // Group\r\n // headers[7].setAttribute(\"data-type\", \"string\"); // Attach Icon\r\n\r\n // overviewTable.addEventListener('click', handleTableEvents);\r\n DOM.ACTIONCENTER.appendChild(overviewTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(overviewTable);\r\n }\r\n\r\n function tableConsumerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedConsumers = [searchValue];\r\n tableConsumers.forEach(consumer => {\r\n var firstName = consumer.FirstName.toLowerCase();\r\n var lastName = consumer.LastName.toLowerCase();\r\n var fullName = `${lastName}, ${firstName}`; \r\n var fullNameReversed = `${lastName}, ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n var caseNote = document.getElementById(consumer.id);\r\n\r\n if (matchesName !== -1 || matchesNameReverse !== -1) {\r\n caseNote.classList.remove('hidden');\r\n displayedConsumers.push(consumer.id);\r\n } else {\r\n caseNote.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.id);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function setFilterValFromPopup(newFilterValues) {\r\n filterValues = newFilterValues;\r\n getTableData();\r\n }\r\n\r\n function resetFilterValues() {\r\n filterValues = null; \r\n\r\n billerId = null;\r\n serviceDateStart = null;\r\n serviceDateEnd = null;\r\n datesEnteredStart = null;\r\n datesEnteredEnd = null;\r\n }\r\n //permissions_table are permissions that effect what case notes you can see in the table\r\n function permissions_Table(tableData) {\r\n var newTable = [];\r\n //VIEW ENTERED - can only view case notes you have entered. Can't see any other notes.\r\n //CASELOAD ONLY - Can only view consumers that are on your caseload (or any note that you entered. If you were the one to enter a note, this trumps any permission)\r\n if (viewEntered && caseloadOnly) {\r\n for (let tDi = 0; tDi < tableData.length; tDi++) {\r\n for (let cIdx = 0; cIdx < caseLoadRestriction.length; cIdx++) {\r\n if (\r\n caseLoadRestriction[cIdx].id.toUpperCase() === tableData[tDi].consumerid.split('.')[0].toUpperCase() ||\r\n tableData[tDi].enteredby.toUpperCase() === $.session.UserId.toUpperCase()\r\n ) {\r\n newTable.push(tableData[tDi]);\r\n break;\r\n }\r\n }\r\n }\r\n return newTable;\r\n } else if (viewEntered) {\r\n for (let tDi = 0; tDi < tableData.length; tDi++) {\r\n if (tableData[tDi].enteredby.toUpperCase() === $.session.UserId.toUpperCase()) {\r\n newTable.push(tableData[tDi]);\r\n }\r\n }\r\n return newTable;\r\n } else if (caseloadOnly) {\r\n for (let tDi = 0; tDi < tableData.length; tDi++) {\r\n for (let cIdx = 0; cIdx < caseLoadRestriction.length; cIdx++) {\r\n if (caseLoadRestriction[cIdx].id === tableData[tDi].consumerid.split('.')[0]) {\r\n newTable.push(tableData[tDi]);\r\n break;\r\n }\r\n }\r\n }\r\n return newTable;\r\n } else return tableData;\r\n }\r\n\r\n function mainEventListeners() {\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n tableConsumerSearch(event.target.value);\r\n }\r\n });\r\n }\r\n\r\n function disableMiniRosterBtn() {\r\n var btn = document.querySelector('.consumerListBtn');\r\n if (btn) btn.classList.add('disabled');\r\n }\r\n\r\n function loadPage() { \r\n if (!filterValues.billerId) filterValues.billerId = $.session.PeopleId;\r\n DOM.clearActionCenter();\r\n buildTopBtns();\r\n buildTable();\r\n getTableData();\r\n buildMutationObserver();\r\n disableMiniRosterBtn();\r\n mainEventListeners();\r\n document.getElementById('searchBtn').click(); \r\n cnFilters.updateCurrentFilterDisplay();\r\n }\r\n\r\n function initialData(callback) {\r\n const promArray = [];\r\n\r\n if (caseloadOnly) {\r\n const caseloadRestrictionPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getCaseLoadRestriction(res => {\r\n caseLoadRestriction = res;\r\n resolve('success');\r\n });\r\n });\r\n promArray.push(caseloadRestrictionPromise);\r\n }\r\n\r\n //FILTER DROPDOWN DATA\r\n //==========================\r\n //biller Dropdown\r\n const getBillersListPromise = new Promise(function (resolve, reject) {\r\n caseNotesAjax.getBillersListForDropDown(res => {\r\n billers = res;\r\n resolve('success');\r\n });\r\n });\r\n promArray.push(getBillersListPromise);\r\n\r\n Promise.all(promArray).then(function () {\r\n callback();\r\n });\r\n }\r\n /**\r\n * Going from Dashboard to CN Review Table, and filter based on My Case Load widget settings\r\n * @param {intiger} daysBack - Days back setting for the My Case Load Widget\r\n * @param {string} consumerId - ID for the consumer that was clicked on\r\n * @param {string} consumerName - Name of the Consumer. Needed for Filtered by display\r\n * @param {*} viewEnteredWidgetSetting\r\n */\r\n function dashHandeler(daysBack, consumerId, viewEnteredWidgetSetting, consumerName) {\r\n const daysBackDate = new Date();\r\n daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n reviewConsumerId = consumerId;\r\n viewEntered = $.session.CaseNotesViewEntered ? viewEnteredWidgetSetting : false;\r\n caseloadOnly = $.session.CaseNotesCaseloadRestriction;\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n //If statements are to prevent re-setting filter when moving from new note to review note back to the overview\r\n if (!serviceDateStart) serviceDateStart = UTIL.formatDateFromDateObj(daysBackDate);\r\n if (!serviceDateEnd) serviceDateEnd = getServiceDateDefaultValues('end');\r\n datesEnteredStart = '1900-01-01';\r\n if (!datesEnteredEnd) datesEnteredEnd = UTIL.getTodaysDate();\r\n filterValues = {\r\n billerId: $.session.PeopleId,\r\n billerName: '',\r\n consumer: reviewConsumerId,\r\n consumerName: consumerName,\r\n billingCode: '%',\r\n reviewStatus: '%',\r\n serviceDateStart: serviceDateStart,\r\n serviceDateEnd: serviceDateEnd,\r\n enteredDateStart: datesEnteredStart,\r\n enteredDateEnd: datesEnteredEnd,\r\n location: '%',\r\n service: '%',\r\n need: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n billed: '%',\r\n attachments: '%',\r\n noteText: '%',\r\n noteTextValue: '',\r\n outcomeServiceMonitoring: '%', \r\n };\r\n\r\n initialData(loadPage);\r\n }\r\n\r\n function setInitFilterValues() {\r\n //If statements are to prevent re-setting filter when moving from new note to review note back to the overview\r\n if (!serviceDateStart) serviceDateStart = getServiceDateDefaultValues('start');\r\n if (!serviceDateEnd) serviceDateEnd = getServiceDateDefaultValues('end');\r\n if (!datesEnteredStart) datesEnteredStart = '1900-01-01';\r\n if (!datesEnteredEnd) datesEnteredEnd = UTIL.getTodaysDate();\r\n if (!filterValues) {\r\n filterValues = {\r\n billerId: $.session.PeopleId,\r\n consumer: '%',\r\n consumerName: 'All',\r\n billingCode: '%',\r\n reviewStatus: '%',\r\n serviceDateStart: serviceDateStart,\r\n serviceDateEnd: serviceDateEnd,\r\n enteredDateStart: datesEnteredStart,\r\n enteredDateEnd: datesEnteredEnd,\r\n location: '%',\r\n service: '%',\r\n need: '%',\r\n contact: '%',\r\n confidential: '%',\r\n corrected: '%',\r\n billed: '%',\r\n attachments: '%',\r\n overlaps: 'N',\r\n noteText: '%',\r\n noteTextValue: '',\r\n viewEntered,\r\n caseloadOnly,\r\n userId: $.session.UserId,\r\n outcomeServiceMonitoring: '%',\r\n };\r\n }\r\n }\r\n\r\n function attachmentPopup() {\r\n const popup = POPUP.build({\r\n header: 'Attachments',\r\n id: 'cnAttachmentPopup',\r\n });\r\n\r\n addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n // callback: addNewAttachment\r\n });\r\n addAttachmentBtn.type = 'button';\r\n removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n // addRemoveAttachmentEventListener(removeAttachmentBtn);\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n // saveAction();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n // const cancelBtn = button.build({\r\n // id: \"attachmentCancel\",\r\n // text: \"cancel\",\r\n // style: \"secondary\",\r\n // type: \"outlined\",\r\n // callback: () => {\r\n // POPUP.hide(popup);\r\n // }\r\n // });\r\n\r\n reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n // if (isBatched === '' || isBatched === null) {\r\n // newAttachmentList.appendChild(newAttachmentsHeader);\r\n // }\r\n\r\n attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.onchange = event => fileValidation(event.target);\r\n\r\n attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n // if (isBatched === '' || isBatched === null) {\r\n // attachmentList.appendChild(attachmentContainer);\r\n // attachmentContainer.appendChild(removeAttachmentBtn);\r\n // attachmentContainer.appendChild(attachmentInput);\r\n // }\r\n // attachmentContainer.appendChild(addAttachmentBtn);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n // if (isBatched === '' || isBatched === null) {\r\n // popup.appendChild(addAttachmentBtn);\r\n // }\r\n\r\n btnWrap.appendChild(saveBtn);\r\n // btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function populateExistingAttachments(reviewAttachments) {\r\n const header = document.createElement('h5');\r\n header.innerText = 'Select an attachment to view:';\r\n reviewAttachmentList.appendChild(header);\r\n //console.table(reviewAttachments)\r\n\r\n reviewAttachments.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentId);\r\n fileContainer.setAttribute('delete', false);\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n // callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement)\r\n });\r\n\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n // if (isBatched === '' || isBatched === null) {\r\n // fileContainer.appendChild(removeAttachmentBtn);\r\n // }\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n caseNotesAjax.viewCaseNoteAttachment(attachmentId);\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n\r\n function init() {\r\n reviewConsumerId = null;\r\n viewEntered = $.session.CaseNotesViewEntered;\r\n caseloadOnly = $.session.CaseNotesCaseloadRestriction;\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n setInitFilterValues();\r\n initialData(loadPage);\r\n }\r\n\r\n return {\r\n init,\r\n dashHandeler,\r\n setFilterValFromPopup,\r\n permissions_Table, \r\n };\r\n})();\r\n","var absentWidget = (function() {\r\n // DATA\r\n //-----------------------\r\n var date;\r\n // cached data\r\n var absentWidgetDate;\r\n var absentWidgetLocationId;\r\n var absentWidgetLocationName;\r\n var absentWidgetGroupId;\r\n var absentWidgetGroupName;\r\n var absentWidgetGroupCode;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var consumerList;\r\n var totalConsumers;\r\n var filterPopup;\r\n var locationDropdown;\r\n var groupDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n \r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n \r\n var dateInput = input.build({\r\n id: 'absentWidgetDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: absentWidgetDate\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'absentWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n groupDropdown = dropdown.build({\r\n dropdownId: 'absentWidgetGroups',\r\n label: 'Group',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dateInput);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(groupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n // Set date filter to today\r\n date = document.getElementById('absentWidgetDate');\r\n date.value = UTIL.getTodaysDate();\r\n absentWidgetDate = date.value;\r\n }\r\n function eventSetup() {\r\n var oldAbsentDate;\r\n var oldLocationName;\r\n var oldLocationId;\r\n var oldGroupId;\r\n var oldGoupCode;\r\n var oldGroupName;\r\n\r\n date.addEventListener('change', event => {\r\n var absentDate = event.target.value;\r\n oldAbsentDate = absentWidgetDate;\r\n absentWidgetDate = absentDate;\r\n\r\n // cache old values\r\n oldLocationName = absentWidgetLocationName;\r\n oldLocationId = absentWidgetLocationId;\r\n oldGroupId = absentWidgetGroupId;\r\n oldGoupCode = absentWidgetGroupCode;\r\n oldGroupName = absentWidgetGroupName;\r\n //When changing the date - locations get reset, so also reset the ID and Name back to all - which is the default value\r\n absentWidgetLocationId = \"000\";\r\n absentWidgetLocationName = \"ALL\";\r\n absentWidgetGroupId = '0';\r\n absentWidgetGroupCode = 'ALL';\r\n absentWidgetGroupName = 'Everyone';\r\n\r\n absentWidgetAjax.getLocationsForDashboardAbsent(populateAbsentWidgetLocations);\r\n absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache old values\r\n oldLocationName = absentWidgetLocationName;\r\n oldLocationId = absentWidgetLocationId;\r\n // update session variables\r\n absentWidgetLocationName = selectedOption.innerHTML;\r\n absentWidgetLocationId = selectedOption.value;\r\n // reset group session variables since location dropdown change updates group dropdown values\r\n oldGroupId = absentWidgetGroupId;\r\n oldGoupCode = absentWidgetGroupCode;\r\n oldGroupName = absentWidgetGroupName;\r\n absentWidgetGroupId = '0';\r\n absentWidgetGroupCode = 'ALL';\r\n absentWidgetGroupName = 'Everyone';\r\n // update group dropdown\r\n absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n });\r\n groupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache old values\r\n oldGroupId = absentWidgetGroupId;\r\n oldGoupCode = absentWidgetGroupCode;\r\n oldGroupName = absentWidgetGroupName;\r\n // update session variables\r\n absentWidgetGroupId = selectedOption.value;\r\n absentWidgetGroupCode = selectedOption.id;\r\n absentWidgetGroupName = selectedOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n \r\n //Loading\r\n consumerList.innerHTML = '';\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(consumerList, \"Loading\");\r\n\r\n absentWidgetAjax.getAbsentWidgetFilterDataAjax({\r\n token: $.session.Token,\r\n absentDate: absentWidgetDate,\r\n absentLocationId: absentWidgetLocationId,\r\n absentGroupCode: absentWidgetGroupCode,\r\n custGroupId: absentWidgetGroupId\r\n }, populateAbsentWidgetResults);\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n absentWidgetDate = oldAbsentDate;\r\n absentWidgetLocationId = oldLocationId;\r\n absentWidgetLocationName = oldLocationName;\r\n absentWidgetGroupId = oldGroupId;\r\n absentWidgetGroupCode = oldGoupCode;\r\n absentWidgetGroupName = oldGroupName;\r\n });\r\n }\r\n\tfunction populateAbsentWidgetLocations(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name\r\n }\r\n });\r\n\r\n dropdown.populate('absentWidgetLocations', data, absentWidgetLocationId);\r\n }\r\n function populateAbsentWidgetGroups(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.GroupCode,\r\n value: r.RetrieveID,\r\n text: r.GroupName\r\n }\r\n });\r\n\r\n var defaultVal = absentWidgetGroupId\r\n\r\n if (absentWidgetLocationId !== '000') {\r\n var allFiterData = data.filter(d => d.id === 'ALL');\r\n if (allFiterData.length > 0) {\r\n defaultVal = allFiterData[0].value;\r\n }\r\n }\r\n\r\n dropdown.populate('absentWidgetGroups', data, defaultVal);\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, totalConsumers);\r\n }\r\n\r\n var splitDate = absentWidgetDate.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Date: ${filteredDate}

    \r\n

    Location: ${absentWidgetLocationName}

    \r\n

    Group: ${absentWidgetGroupName}

    \r\n
    `;\r\n }\r\n\r\n function populateAbsentWidgetResults(results) {\r\n displayFilteredBy();\r\n\r\n consumerList.innerHTML = '';\r\n\r\n if (results.length < 1) {\r\n totalConsumers.innerHTML = '';\r\n consumerList.innerHTML = `

    No Absent Consumers

    `;\r\n return;\r\n }\r\n\r\n var absentObj = {};\r\n var locations = [];\r\n var totalAbsentCount = 0;\r\n // build absent object\r\n results.forEach(r => {\r\n var locationName = r.Description;\r\n var locationId = r.locId;\r\n var consumerName = `${r.LN}, ${r.FN}`;\r\n if (locationId !== absentWidgetLocationId && absentWidgetLocationId !== '000') return; // This breaks current iteration if you are filtering a location\r\n \r\n if (!absentObj[locationId]) {\r\n absentObj[locationId] = [];\r\n locations.push(`${locationName}{*}${locationId}`);\r\n }\r\n totalAbsentCount ++\r\n absentObj[locationId].push(consumerName);\r\n });\r\n // sort by location name\r\n locations = locations.sort((a, b) => {\r\n return a < b ? 1 : 0;\r\n });\r\n // build & append absent consumer results\r\n locations.forEach(loc => {\r\n loc = loc.split('{*}');\r\n var locName = loc[0];\r\n var locId = loc[1];\r\n var totalAbsent = absentObj[locId].length;\r\n var header = `${locName} - ${totalAbsent}`;\r\n var list = `\r\n
      \r\n ${absentObj[locId].map(c => `
    • ${c}
    • `).join('')}\r\n
    \r\n `;\r\n consumerList.innerHTML += `

    ${header}

    ${list}

    `;\r\n });\r\n \r\n totalConsumers.innerHTML = `

    Total Absent: ${totalAbsentCount}

    `;\r\n }\r\n\r\n\tfunction init() {\r\n if (!absentWidgetDate) absentWidgetDate = UTIL.getTodaysDate();\r\n if (!absentWidgetLocationId) absentWidgetLocationId = '000';\r\n if (!absentWidgetLocationName) absentWidgetLocationName = 'ALL';\r\n if (!absentWidgetGroupId) absentWidgetGroupId = '0';\r\n if (!absentWidgetGroupName) absentWidgetGroupName = 'Everyone';\r\n if (!absentWidgetGroupCode) absentWidgetGroupCode = 'ALL';\r\n \r\n widget = document.getElementById('dashabsentconsumers');\r\n widgetBody = widget.querySelector('.widget__body');\r\n consumerList = document.querySelector('.absentConsumerList');\r\n totalConsumers = document.querySelector('.totalAbsentConsumers');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashabsentconsumers', 'absentFilterBtn');\r\n\r\n buildFilterPopup();\r\n displayFilteredBy();\r\n eventSetup();\r\n \r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(consumerList, \"Loading\");\r\n\r\n absentWidgetAjax.getLocationsForDashboardAbsent(function(locations) {\r\n absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, function(groups) {\r\n populateAbsentWidgetLocations(locations);\r\n populateAbsentWidgetGroups(groups);\r\n\r\n\r\n\r\n absentWidgetAjax.getAbsentWidgetFilterDataAjax({\r\n token: $.session.Token,\r\n absentDate: absentWidgetDate,\r\n absentLocationId: absentWidgetLocationId,\r\n absentGroupCode: absentWidgetGroupCode,\r\n custGroupId: absentWidgetGroupId\r\n }, populateAbsentWidgetResults);\r\n });\r\n });\r\n\r\n // populate widget\r\n // absentWidgetAjax.getLocationsForDashboardAbsent(populateAbsentWidgetLocations);\r\n // absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n\t}\r\n\r\n\treturn {\r\n\t\tinit\r\n\t};\r\n})();","var absentWidgetAjax = (function() {\r\n var absentLocationsArray = [];\r\n\r\n\tfunction getLocationsForDashboardAbsent(callback) {\r\n if (absentLocationsArray.length > 0) {\r\n callback(absentLocationsArray);\r\n return;\r\n }\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getLocationsJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = response.getLocationsJSONResult;\r\n\t\t\t\tres.unshift({\r\n ID: '000',\r\n Name: 'ALL'\r\n\t\t\t\t});\r\n\t\t\t\t// cache results\r\n\t\t\t\tabsentLocationsArray = res;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getConsumerGroupsForDashboardAbsent(locationId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getConsumerGroupsJSON/',\r\n\t\t\tdata: JSON.stringify({ token: $.session.Token, locationId }),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = response.getConsumerGroupsJSONResult;\r\n res = res.filter(r => r.GroupCode !== 'CAS' && r.GroupCode !== 'NAT');\r\n\t\t\t\tcallback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getAbsentWidgetFilterDataAjax(filterData, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getAbsentWidgetFilterData/',\r\n\t\t\tdata: JSON.stringify(filterData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.parse(response.getAbsentWidgetFilterDataResult);\r\n callback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(error, null);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetLocationsForDashboardAbsent: getLocationsForDashboardAbsent,\r\n\t\tgetConsumerGroupsForDashboardAbsent: getConsumerGroupsForDashboardAbsent,\r\n\t\tgetAbsentWidgetFilterDataAjax: getAbsentWidgetFilterDataAjax,\r\n\t};\r\n})();\r\n","const adminSingleEntryWidget = (function () {\r\n var statuses = {\r\n A: 'Needs Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n };\r\n // DATA\r\n //-----------------------\r\n var cachedResults;\r\n var cachedResults_locations;\r\n var selectedConsumerId;\r\n var selectedConsumerName;\r\n var selectedLocationId;\r\n var selectedLocationDescription;\r\n var entriesObj = {};\r\n var consumerNames = {};\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var consumerDropdown;\r\n var locationDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n // Filtering\r\n function buildFilterPopup() {\r\n widget = document.getElementById('admindashsingleentrywidget');\r\n if (!widget) return;\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n widgetBody = widget.querySelector('.widget__body');\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'adminWidgetEmployees',\r\n label: 'Employees',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'adminWidgetLocations',\r\n label: 'Locations',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(consumerDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function populateConsumerDropdown() {\r\n // Consumer drop down should not include Logged in User\r\n for (var key in consumerNames) {\r\n if (consumerNames[key].peopleId === $.session.PeopleId) {\r\n delete consumerNames[key];\r\n }\r\n }\r\n\r\n let data = Object.keys(consumerNames).map(c => {\r\n return {\r\n value: consumerNames[c].peopleId,\r\n text: consumerNames[c].name,\r\n };\r\n });\r\n //order Consumer DropDown by name\r\n data.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n\r\n data.unshift({ value: '%', text: 'ALL' });\r\n\r\n dropdown.populate('adminWidgetEmployees', data, selectedConsumerId);\r\n }\r\n\r\n function populateLocationsDropDown(locationNames) {\r\n if (locationNames.length > 0) {\r\n let data = Object.keys(locationNames).map(l => {\r\n return {\r\n value: locationNames[l].locationId,\r\n text: locationNames[l].description,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'ALL' });\r\n\r\n dropdown.populate('adminWidgetLocations', data, selectedLocationId);\r\n }\r\n }\r\n\r\n function eventSetup() {\r\n var oldSelectedConsumerId;\r\n var oldSelectedConsumerName;\r\n var oldSelectedLocationId;\r\n var oldSelectedLocationDescription;\r\n\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n\r\n oldSelectedConsumerId = selectedConsumerId;\r\n oldSelectedConsumerName = selectedConsumerName;\r\n\r\n selectedConsumerId = selectedConsumerOption.value;\r\n selectedConsumerName = selectedConsumerOption.innerHTML;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedLocationOption = event.target.options[event.target.selectedIndex];\r\n\r\n oldSelectedLocationId = selectedLocationId;\r\n oldSelectedLocationDescription = selectedLocationDescription;\r\n\r\n selectedLocationId = selectedLocationOption.value;\r\n selectedLocationDescription = selectedLocationOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n groupCountInfo(cachedResults, selectedConsumerId, selectedLocationId);\r\n populateCountInfo();\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n // selectedConsumerId = oldSelectedConsumerId;\r\n // selectedConsumerName = oldSelectedConsumerName;\r\n // selectedLocationId = oldSelectedLocationId;\r\n // selectedLocationDescription = oldSelectedLocationDescription;\r\n });\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.appendChild(filteredBy);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Employee: ${selectedConsumerName}

    \r\n

    Location: ${selectedLocationDescription}

    `;\r\n }\r\n\r\n function populateCountInfo() {\r\n displayFilteredBy();\r\n\r\n var pendingSection = widget.querySelector('.pending-section');\r\n var approvalSection = widget.querySelector('.needsapproval-section');\r\n var rejectedSection = widget.querySelector('.rejected-section');\r\n pendingSection.innerHTML = '';\r\n approvalSection.innerHTML = '';\r\n rejectedSection.innerHTML = '';\r\n\r\n var entryGroups = Object.keys(entriesObj);\r\n entryGroups.forEach(group => {\r\n var dateRanges = Object.keys(entriesObj[group]);\r\n dateRanges.sort((a, b) => {\r\n var dateA = a.split('{*}')[0];\r\n var dateB = b.split('{*}')[0];\r\n dateA = new Date(dateA);\r\n dateB = new Date(dateB);\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n dateRanges.forEach(range => {\r\n var text = range.split('{*}').join(' - ');\r\n var count = entriesObj[group][range].count;\r\n var p = document.createElement('p');\r\n p.setAttribute('start-date', range.split('{*}')[0]);\r\n p.setAttribute('end-date', range.split('{*}')[1]);\r\n p.innerHTML = `${text} - ${count}`;\r\n p.classList.add('customLink');\r\n if (group === 'P') {\r\n pendingSection.appendChild(p);\r\n addEvent(p, 'P');\r\n } else if (group === 'A') {\r\n approvalSection.appendChild(p);\r\n addEvent(p, 'A');\r\n } else if (group === 'R') {\r\n rejectedSection.appendChild(p);\r\n addEvent(p, 'R');\r\n }\r\n });\r\n });\r\n }\r\n\r\n function addEvent(element, status) {\r\n element.addEventListener('click', event => {\r\n let startDate = event.target.getAttribute('start-date');\r\n let endDate = event.target.getAttribute('end-date');\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n actioncenter.dataset.activeModule = 'timeEntry';\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n UTIL.toggleMenuItemHighlight('timeEntry');\r\n timeEntry.getInitialData(() => {\r\n timeApproval.dashHandler(startDate, endDate, status);\r\n });\r\n });\r\n }\r\n function buildWidgetTabs() {\r\n var widgetTabs = widgetBody.querySelector('.tabs');\r\n if (!widgetTabs) {\r\n var tabOptions = {\r\n sections: ['Needs Approval', 'Pending', 'Rejected'],\r\n };\r\n\r\n widgetTabs = tabs.build(tabOptions);\r\n\r\n widgetBody.appendChild(widgetTabs);\r\n }\r\n }\r\n function groupCountInfo(data, selectedConsumerId, selectedLocationId) {\r\n entriesObj = {};\r\n data.forEach(d => {\r\n if (statuses[d.Anywhere_Status]) {\r\n if (\r\n selectedConsumerId &&\r\n (selectedConsumerId === d.People_ID || selectedConsumerId === '%')\r\n ) {\r\n if (\r\n selectedLocationId &&\r\n (selectedLocationId === d.Location_ID || selectedLocationId === '%')\r\n ) {\r\n var peopleId = d.People_ID;\r\n var locationId = d.Location_ID;\r\n var name = `${d.last_name}` + ', ' + `${d.first_name}`;\r\n var status = d.Anywhere_Status;\r\n var startDate = d.startdate.split(' ')[0];\r\n var endDate = d.enddate.split(' ')[0];\r\n var dateString = `${startDate}{*}${endDate}`;\r\n\r\n if (!entriesObj[status]) {\r\n entriesObj[status] = {};\r\n }\r\n if (!entriesObj[status][dateString]) {\r\n entriesObj[status][dateString] = { count: 0 };\r\n }\r\n entriesObj[status][dateString].count++;\r\n\r\n if (!consumerNames[peopleId]) {\r\n consumerNames[peopleId] = { peopleId, name };\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n if (!selectedConsumerName) selectedConsumerName = 'ALL';\r\n if (!selectedConsumerId) selectedConsumerId = '%';\r\n if (!selectedLocationDescription) selectedLocationDescription = 'ALL';\r\n if (!selectedLocationId) selectedLocationId = '%';\r\n\r\n widget = document.getElementById('admindashsingleentrywidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n widgetBody.innerHTML = '';\r\n\r\n dashboard.appendFilterButton('admindashsingleentrywidget', 'adminSeFilterBtn');\r\n\r\n // filtering\r\n displayFilteredBy();\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n adminSingleEntryWidgetAjax.getSingleEntryAdminLocations(function (res, error) {\r\n cachedResults_locations = res;\r\n\r\n adminSingleEntryWidgetAjax.getSingleEntryAdminApprovalNumbers(function (results, error) {\r\n cachedResults = results;\r\n groupCountInfo(results, selectedConsumerId, selectedLocationId);\r\n populateConsumerDropdown();\r\n populateLocationsDropDown(cachedResults_locations);\r\n // info/tabs\r\n buildWidgetTabs();\r\n populateCountInfo();\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var adminSingleEntryWidgetAjax = (function() {\r\n\tfunction getSingleEntryAdminApprovalNumbers(callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getSingleEntryAdminApprovalNumbersJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getSingleEntryAdminApprovalNumbersJSONResult;\r\n\t\t\t\tcallback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null, error);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getSingleEntryAdminLocations(callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getSingleEntryAdminLocations/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getSingleEntryAdminLocationsResult;\r\n\t\t\t\tcallback(res, null);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null, error);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetSingleEntryAdminApprovalNumbers,\r\n\t\tgetSingleEntryAdminLocations,\r\n\t};\r\n})();\r\n","var CN_ProductivityWidget = (function() {\r\n let cnProductivityChart\r\n let groupNotes = {}\r\n let timeObj = {}\r\n let widgetSettings\r\n let daysBackWidgetSetting\r\n\r\n function getDates() {\r\n let dateArr = []\r\n\r\n for (let i = 0; i <= (daysBackWidgetSetting - 1); i++ ) {\r\n const date = new Date()\r\n date.setDate(date.getDate() - i);\r\n dateArr.push(`${(date.getMonth() + 1)}/${date.getDate()}/${date.getFullYear()}`)\r\n }\r\n return dateArr\r\n }\r\n\r\n function addChartData(chart, label, data) {\r\n chart.data.labels.push(label);\r\n chart.data.datasets.forEach((dataset) => {\r\n dataset.data.push(data);\r\n });\r\n chart.update();\r\n }\r\n\r\n async function getData() {\r\n daysBackWidgetSetting = widgetSettings.widgetConfig.daysBack\r\n const response = (await CN_ProductivityWidgetAjax.getCaseNoteProductivity(daysBackWidgetSetting)).getDashboardCaseNoteProductivityResult;\r\n preBuildDataObj()\r\n response.forEach(note => {\r\n const serviceDate = note.Service_Date.split(\" \")[0]\r\n const originalEnteredDate = note.Original_Update.split(\" \")[0]\r\n if (note.Case_Note_Group_ID !== \"\") {\r\n groupNotes[note.Case_Note_Group_ID] = note\r\n return;\r\n }\r\n // If the service date is outside of days back, but entered date is note, and it has doc time, \r\n // ONLY calculate doc time.\r\n if (!timeObj[serviceDate] && timeObj[originalEnteredDate]) {\r\n calculateDocTime(note, originalEnteredDate)\r\n return\r\n }\r\n timeObj[serviceDate].noteTime += parseInt(note.diffMinutes);\r\n if (note.Travel_Time !== \"\") {\r\n timeObj[serviceDate].travelTime += parseInt(note.Travel_Time);\r\n }\r\n // NOTE: Doc Time calculation goes towards Original Update date, NOT service date\r\n if (note.Total_Doc_Time !== \"\" && timeObj[originalEnteredDate]) {\r\n calculateDocTime(note, originalEnteredDate)\r\n }\r\n })\r\n if(Object.keys(groupNotes).length > 0) {\r\n Object.keys(groupNotes).forEach(noteID => {\r\n const serviceDate = groupNotes[noteID].Service_Date.split(\" \")[0]\r\n const originalEnteredDate = groupNotes[noteID].Original_Update.split(\" \")[0]\r\n // If the service date is outside of days back, but entered date is note, and it has doc time, \r\n // ONLY calculate doc time.\r\n if ((!timeObj[serviceDate] && timeObj[originalEnteredDate]) && groupNotes[noteID].Total_Doc_Time !== \"\") {\r\n timeObj[originalEnteredDate].docTime += Math.round(Math.floor(groupNotes[noteID].Total_Doc_Time/30) / 2)\r\n return\r\n }\r\n timeObj[serviceDate].noteTime += parseInt(groupNotes[noteID].diffMinutes);\r\n if (groupNotes[noteID].Travel_Time !== \"\") {\r\n timeObj[serviceDate].travelTime += parseInt(groupNotes[noteID].Travel_Time);\r\n }\r\n // NOTE: Doc Time calculation goes towards Original Update date, NOT service date\r\n if (groupNotes[noteID].Total_Doc_Time !== \"\" && timeObj[originalEnteredDate]) {\r\n timeObj[originalEnteredDate].docTime += Math.round(Math.floor(groupNotes[noteID].Total_Doc_Time/30) / 2)\r\n }\r\n })\r\n }\r\n initChart()\r\n }\r\n /** \r\n * Calculates Documentation time for time table\r\n * @param {object} caseNoteData - Note data from getCaseNoteProductivity AJAX call\r\n * @param {string} orgDate - date ISO format of the original entered date of the case note\r\n */\r\n function calculateDocTime(caseNoteData, orgDate) {\r\n if (caseNoteData.Total_Doc_Time === \"\") return\r\n timeObj[orgDate].docTime += Math.round(Math.floor(caseNoteData.Total_Doc_Time/30) / 2)\r\n }\r\n\r\n function preBuildDataObj() {\r\n let dateArr = getDates();\r\n dateArr.forEach(date => {\r\n timeObj[date] = {noteTime: 0, travelTime: 0, docTime: 0}\r\n }) \r\n }\r\n\r\n function calculateBackgroundColor(productivityPercentage) {\r\n const productivityThreshold = widgetSettings.widgetConfig.productivityThreshold\r\n let colors\r\n //first element of color array is Note Time, second is travel, third is doc\r\n if (productivityPercentage < productivityThreshold) { \r\n //Red Bars\r\n colors = [\r\n \"rgba(219, 22, 47, .8)\",\r\n \"rgba(219, 22, 47, .5)\",\r\n \"rgba(219, 22, 47, .2)\",\r\n ]\r\n } else {\r\n //Green Bars\r\n colors = [\r\n \"rgba(129, 185, 65, .8)\",\r\n \"rgba(129, 185, 65, .5)\",\r\n \"rgba(129, 185, 65, .2)\",\r\n ]\r\n }\r\n return colors\r\n }\r\n\r\n function reconfigureDataForChart(workHoursPerDay = 7) {\r\n const minForProductivity = 60 * widgetSettings.widgetConfig.workHoursPerDay;\r\n let noteTimeDataset = {label: 'Note Time (%)', data:[], backgroundColor: [], order: 0}\r\n let travelTimeDataset = {label: 'Travel Time (%)', data:[], backgroundColor: [], order: 1}\r\n let docTimeDataset = {label: 'Documentation Time (%)', data:[], backgroundColor: [], order: 2}\r\n Object.keys(timeObj).forEach(date => {\r\n let totalTime = timeObj[date].noteTime + timeObj[date].travelTime + timeObj[date].docTime\r\n let productivityPercentage = Math.round((totalTime/minForProductivity) * 100)\r\n let colorArr = calculateBackgroundColor(productivityPercentage);\r\n noteTimeDataset.backgroundColor.push(colorArr[0])\r\n travelTimeDataset.backgroundColor.push(colorArr[1])\r\n docTimeDataset.backgroundColor.push(colorArr[2])\r\n noteTimeDataset.data.push(Math.round((timeObj[date].noteTime/minForProductivity) * 100))\r\n travelTimeDataset.data.push(Math.round((timeObj[date].travelTime/minForProductivity) * 100))\r\n docTimeDataset.data.push(Math.round((timeObj[date].docTime/minForProductivity) * 100))\r\n })\r\n return [noteTimeDataset, travelTimeDataset, docTimeDataset]\r\n }\r\n\r\n\r\n function initChart() {\r\n const widgetBody = document.getElementById('cn_productivity');\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 290;\r\n canvas.height = 230;\r\n widgetBody.appendChild(canvas)\r\n\r\n const options = {\r\n scales: {\r\n yAxes: [{\r\n stacked: true,\r\n ticks: {\r\n beginAtZero: true \r\n }\r\n }],\r\n xAxes: [{\r\n stacked:true,\r\n ticks: {\r\n beginAtZero: true,\r\n min: 0,\r\n max: 100,\r\n stepSixe: 10,\r\n precision: 10,\r\n callback: function (value) {\r\n return value + '%';\r\n } \r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Percentage'\r\n }\r\n }]\r\n },\r\n legend: {\r\n display: false,\r\n }\r\n }\r\n \r\n cnProductivityChart = new Chart(canvas, {\r\n type: 'horizontalBar',\r\n data: {\r\n labels: getDates(),\r\n datasets: reconfigureDataForChart()\r\n },\r\n options: options,\r\n })\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n productivityThreshold: 60,\r\n daysBack: 7,\r\n workHoursPerDay: 7\r\n }\r\n widgetSettingsAjax.setWidgetSettingConfig(1, JSON.stringify(widgetSettings.widgetConfig), widgetSettings.showHide)\r\n }\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('1')\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull()\r\n getData()\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\n\r\nconst CN_ProductivityWidgetAjax = (function() {\r\n function getCaseNoteProductivity(daysBack = 7) {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getDashboardCaseNoteProductivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivity\r\n };\r\n})();\r\n","var CN_RejectedWidget = (function() {\r\n let cnProductivityChart\r\n let groupNotes = {}\r\n let timeObj = {}\r\n let rejectedNotes\r\n let widgetSettings\r\n let daysBack;\r\n let groups;\r\n let strgroupids;\r\n let objgroups = [];\r\n let groupids = [];\r\n\r\n function getRejectedData(cb) {\r\n // const response = (await CN_RejectedWidgetAjax.getCaseNotesRejected()).getDashboardCaseNotesRejectedResult;\r\n daysBack = widgetSettings.widgetConfig.daysBack; \r\n CN_RejectedWidgetAjax.getCaseNotesRejected(daysBack, res => {\r\n rejectedNotes = res.map(consumer => {\r\n const consumerObj = {\r\n caseNoteId: consumer.Case_Note_ID,\r\n personId: consumer.ID,\r\n cnGroupId: consumer.Case_Note_Group_ID,\r\n firstName: consumer.first_Name,\r\n lastName: consumer.Last_Name,\r\n serviceDate: consumer.Service_Date,\r\n serviceCode: consumer.Service_Code,\r\n endTime: consumer.End_Time,\r\n startTime: consumer.Start_Time,\r\n lastUpdate: consumer.Last_Update\r\n };\r\n return consumerObj;\r\n });\r\n getRejectedcnGroups();\r\n cb();\r\n });\r\n }\r\n \r\n function getRejectedcnGroups() { \r\n groups = {}\r\n\r\n if (getGroupsIds()) {\r\n\r\n strgroupids = groupids.map(g => g ).join(\",\");\r\n \r\n CN_RejectedWidgetAjax.getGroupCaseNotes(strgroupids, res => {\r\n objgroupids = res.map(grpconsumer => {\r\n const grpconsumerObj = {\r\n caseNoteId: grpconsumer.Case_Note_ID,\r\n personId: grpconsumer.ID,\r\n cnGroupId: grpconsumer.Case_Note_Group_ID,\r\n firstName: grpconsumer.first_Name,\r\n lastName: grpconsumer.Last_Name,\r\n serviceDate: grpconsumer.Service_Date,\r\n serviceCode: grpconsumer.Service_Code,\r\n endTime: grpconsumer.End_Time,\r\n startTime: grpconsumer.Start_Time,\r\n lastUpdate: grpconsumer.Last_Update\r\n };\r\n objgroups.push(grpconsumerObj);\r\n return grpconsumerObj;\r\n });\r\n objgroups.forEach(fn => {\r\n if (fn.cnGroupId !== '') {// \r\n // groupids.push(fn.cnGroupId);\r\n var consumerId = fn.personId;\r\n var name = `${fn.lastName}, ${fn.firstName}`;\r\n if (!groups[fn.cnGroupId]) {\r\n groups[fn.cnGroupId] = {[consumerId]: name}\r\n }\r\n groups[fn.cnGroupId][consumerId] = name;\r\n }\r\n })\r\n });\r\n }\r\n }\r\n\r\n function getGroupsIds() { \r\n rejectedNotes.forEach(fn => {\r\n if (fn.cnGroupId !== '' && groupids.indexOf(fn.cnGroupId) === -1) {\r\n groupids.push(fn.cnGroupId); \r\n }\r\n })\r\n if (groupids.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n function populateRejectedWidget() {\r\n const widget = document.getElementById(\"casenotesrejected\");\r\n if (!widget) return;\r\n const widgetBody = widget.querySelector(\".widget__body\");\r\n // if (rejectedNotes.length === 0) {\r\n if (rejectedNotes.length === 0) {\r\n widgetBody.innerHTML = `\r\n There are no rejected case notes during the past ${daysBack} days.\r\n \r\n `\r\n return\r\n }\r\n \r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: [\"Consumer\", \"Serv Date\", \"Code\", \"Start\", \"End\", \"Update\" ],\r\n tableId: \"rejectedWidgetTable\"\r\n };\r\n const rejectedTable = table.build(tableOptions);\r\n \r\n widgetBody.innerHTML = \"\";\r\n widgetBody.appendChild(rejectedTable);\r\n const tableData = rejectedNotes.map(consumer => {\r\n const name = `${consumer.lastName}, ${consumer.firstName}`;\r\n // const dateString = consumer.lastNoteDate.split(\" \")[0] === \"\" ? \"00/00/0000\" : consumer.lastNoteDate.split(\" \")[0];\r\n \r\n const caseNoteId = consumer.caseNoteId;\r\n const serviceDate = consumer.serviceDate.split(\" \")[0];\r\n const serviceCode = `${consumer.serviceCode}`;\r\n const tmpstartTime = consumer.startTime.split(\":\");\r\n const startTime = tmpstartTime.slice(0,-1).join(\":\");\r\n const frmtStartTime = UTIL.convertFromMilitary(startTime);\r\n const tmpendTime = consumer.endTime.split(\":\");\r\n const endTime = tmpendTime.slice(0,-1).join(\":\");\r\n const frmtEndTime = UTIL.convertFromMilitary(endTime);\r\n\r\n const updateDate = consumer.lastUpdate.split(\" \")[0];\r\n \r\n return {\r\n values: [name, serviceDate, serviceCode, frmtStartTime, frmtEndTime, updateDate],\r\n id: consumer.caseNoteId,\r\n onClick: () => {\r\n DOM.clearActionCenter();\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function(results) {\r\n setActiveModuleAttribute('casenotes')\r\n note.init('review', results, groups);\r\n }); \r\n }\r\n };\r\n });\r\n table.populate(rejectedTable, tableData);\r\n\r\n // window.setTimeout(newNote.checkMicError, 3000);\r\n }\r\n \r\n // function getCaseNote(caseNoteId) {\r\n // var test = caseNotesAjax.getCaseNoteEdit(caseNoteId, function(results) {\r\n // note.init('review', results, groups);\r\n // });\r\n // rowPopup(test);\r\n // }\r\n\r\n // function rowPopup(test) {\r\n // const popup = POPUP.build({\r\n // header: nameStr,\r\n // id: \"caseNotePopup\"\r\n // });\r\n // popup.appendChild(test)\r\n\r\n // POPUP.show(popup);\r\n // }\r\n\r\n // function getDaysBackDate(daysBack) {\r\n // const daysBackDate = new Date();\r\n // daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n // return daysBackDate;\r\n // }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n daysBack: 60 \r\n }\r\n widgetSettingsAjax.setWidgetSettingConfig(3, JSON.stringify(widgetSettings.widgetConfig), widgetSettings.showHide)\r\n }\r\n\r\n function cleanSettings() {\r\n daysBack = widgetSettings.widgetConfig.daysBack;\r\n \r\n }\r\n\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('3')\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull()\r\n cleanSettings();\r\n // daysBackDate = getDaysBackDate(daysBack);\r\n getRejectedData(populateRejectedWidget);\r\n \r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const CN_RejectedWidgetAjax = (function() {\r\n\r\n function getCaseNotesRejected(daysBack, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDashboardCaseNotesRejected/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBack\":\"' + daysBack + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\t// var res = JSON.stringify(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\t\tcallback(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n }\r\n \r\n function getGroupCaseNotes(groupNoteIds, callback) {\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDashboardGroupCaseNoteConsumerNames/',\r\n\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"groupNoteIds\":\"' + groupNoteIds + '\"}',\r\n\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\tdataType: 'json',\r\n\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t// var res = JSON.stringify(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\tcallback(response.getDashboardGroupCaseNoteConsumerNamesResult);\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t});\r\n}\r\n\r\n\r\n return {\r\n\t getCaseNotesRejected,\r\n\t getGroupCaseNotes\r\n };\r\n})();","const consumerProgresNotes = (function() {\r\n\r\n let widget\r\n let widgetBody\r\n let applyFiltersBtn\r\n let cancelFilterBtn\r\n let filterPopup\r\n //DOM\r\n let consumerProgresNoteslocationDropdown\r\n let progressNoteList\r\n //DATA\r\n let locationObject;\r\n let locationLookupObject;\r\n let tmpSelectedLocation;\r\n let filteredLocation;\r\n\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n consumerProgresNoteslocationDropdown = dropdown.build({\r\n dropdownId: 'progressNoteLocations',\r\n label: 'Location',\r\n style: 'secondary'\r\n })\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n filterPopup.appendChild(consumerProgresNoteslocationDropdown)\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n \r\n }\r\n\r\n function populateDropdown() {\r\n let defaultLocation = UTIL.LS.getStorage('dash_consumerProgressNoteLocation');\r\n if (defaultLocation === undefined) {\r\n defaultLocation = \"%\";\r\n UTIL.LS.setStorage('dash_consumerProgressNoteLocation', '%')\r\n }\r\n filteredLocation = defaultLocation;\r\n\r\n let filteredLocationExists = (function () {\r\n if (defaultLocation === \"%\") return true\r\n let exists = false;\r\n locationObject.forEach(loc => {\r\n if (loc.locationId == filteredLocation) {\r\n exists = true\r\n return\r\n }\r\n })\r\n return exists;\r\n })()\r\n\r\n if (!filteredLocationExists) {\r\n defaultLocation = \"%\"\r\n filteredLocation = \"%\"\r\n UTIL.LS.setStorage('dash_consumerProgressNoteLocation', '%');\r\n }\r\n\r\n let data = locationObject.map(loc => {\r\n return {\r\n value: loc.locationId,\r\n text: loc.locationName\r\n }\r\n });\r\n\r\n data.sort(function(a, b) { // alphabetize\r\n if(a.text < b.text) {return -1; }\r\n if(a.text > b.text) {return 1; }\r\n return 0;\r\n });\r\n\r\n data.unshift({id: \"%\", value: \"%\", text: \"All\"}) //ADD All Value\r\n locationObject.unshift({locationId: \"%\", locationName: \"All\"}) //ADD All Value\r\n \r\n dropdown.populate(consumerProgresNoteslocationDropdown, data, defaultLocation)\r\n }\r\n\r\n function eventSetup() {\r\n applyFiltersBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n if (filteredLocation === tmpSelectedLocation || !tmpSelectedLocation) return\r\n filteredLocation = tmpSelectedLocation\r\n UTIL.LS.setStorage('dash_consumerProgressNoteLocation', filteredLocation);\r\n getNotesFiltered()\r\n })\r\n cancelFilterBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n consumerProgresNoteslocationDropdown.addEventListener(\"change\", event => {\r\n tmpSelectedLocation = event.target[event.target.selectedIndex].value\r\n })\r\n }\r\n\r\n function getNotesFiltered() {\r\n PROGRESS__ANYWHERE.init()\r\n progressNoteList.innerHTML = \"\"\r\n PROGRESS__ANYWHERE.SPINNER.show(progressNoteList, \"Loading\");\r\n progressNotesAjax.getConsumersWithUnreadNotesByEmployeeAndLocationPermission(filteredLocation, res => {\r\n PROGRESS__ANYWHERE.SPINNER.hide(progressNoteList)\r\n populateProgressNoteWidgetResult(res)\r\n })\r\n }\r\n\r\n function populateProgressNoteWidgetResult(filteredResults) {\r\n displayFilteredBy()\r\n // progressNoteList.innerHTML = '';\r\n if (filteredResults.length === 0) {\r\n progressNoteList.innerHTML = 'There are no unread notes';\r\n return\r\n }\r\n filteredResults.forEach(progNote => {\r\n let date = progNote.dateEntered.split(\" \")[0]\r\n progressNoteList.innerHTML += `\r\n
    ${progNote.name}: ${progNote.noteTitle} - ${date}\r\n

    Location: ${locationLookupObject[filteredLocation].locationName}

    \r\n
    \r\n `;\r\n }\r\n\r\n function populateLocationLookup() {\r\n locationLookupObject = {}\r\n locationObject.forEach(loc => {\r\n obj = {\r\n locationName: loc.locationName\r\n }\r\n locationLookupObject[loc.locationId] = obj;\r\n })\r\n }\r\n\r\n function getData() {\r\n // const daysBackDateObj = convertDaysBackGoals($.session.defaultProgressNoteReviewDays);\r\n // let daysBackDay = daysBackDateObj.getDate()\r\n // let daysBackMonth = daysBackDateObj.getMonth()\r\n // let daysBackYeah = daysBackDateObj.getFullYear()\r\n // const daysBackDate = `${daysBackYeah}-${daysBackMonth}-${daysBackDay}`\r\n\r\n\r\n let getlocations = new Promise((resolve, reject) => {\r\n progressNotesAjax.getlocationsWithConsumersWithUnreadNotes(res => {\r\n locationObject = JSON.parse(res);\r\n resolve(\"success\")\r\n })\r\n })\r\n \r\n Promise.all([getlocations]).then(() => {\r\n populateDropdown()\r\n populateLocationLookup()\r\n getNotesFiltered()\r\n })\r\n }\r\n\r\n // const dash_consumerProgressNotesLS = (function() {\r\n // function getLocation() {\r\n // let user = $.session.UserId\r\n // return localStorage.getItem(`user:${user} dash_consumerProgressNoteLocation`) \r\n // }\r\n // function setLocaiton(locationId) {\r\n // let user = $.session.UserId\r\n // return localStorage.setItem(`user:${user} dash_consumerProgressNoteLocation`, locationId) \r\n // }\r\n // return {\r\n // getLocation: getLocation,\r\n // setLocation: setLocaiton\r\n // }\r\n // })()\r\n\r\n function init() {\r\n dashboard.appendFilterButton('consumerprogressnoteswidget', 'consumerProgressFilterBtn');\r\n\r\n widget = document.getElementById('consumerprogressnoteswidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n progressNoteList = document.getElementById(\"progressNoteList\");\r\n getData()\r\n buildFilterPopup()\r\n eventSetup()\r\n }\r\n return {\r\n init\r\n }\r\n \r\n})();\r\n","var consumerFinancesWidget = (function () {\r\n // cached data\r\n var cfWidgetLocationId;\r\n var cfWidgetLocationName;\r\n var cfWidgetConsumerName;\r\n var cfWidgetSortOrderId;\r\n var cfWidgetSortOrderName;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var locationDropdown;\r\n var consumerDropdown;\r\n var sortOrderDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetConsumer',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n sortOrderDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetSortOrder',\r\n label: 'Sort Order',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(consumerDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(sortOrderDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function eventSetup() {\r\n var tempCFWidgetLocationName;\r\n var tempCFWidgetConsumerName;\r\n var tempCFWidgetSortOrderName;\r\n\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetLocationName = selectedOption.value;\r\n // cfWidgetLocationName = selectedOption.value;\r\n });\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetConsumerName = selectedOption.value;\r\n // cfWidgetConsumerName = selectedOption.value;\r\n });\r\n sortOrderDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetSortOrderName = selectedOption.value;\r\n // cfWidgetSortOrderName = selectedOption.value;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n updateFilterData({\r\n tempCFWidgetLocationName,\r\n tempCFWidgetConsumerName,\r\n tempCFWidgetSortOrderName\r\n });\r\n\r\n //Loading\r\n widgetBody.innerHTML = '';\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(widgetBody, \"Loading\");\r\n\r\n ConsumerFinancesWidgetAjax.getConsumerFinanceWidgetEntriesDataAjax({\r\n token: $.session.Token,\r\n consumerName: cfWidgetConsumerName,\r\n locationName: cfWidgetLocationName,\r\n sortOrderName: cfWidgetSortOrderName\r\n }, populateConsumerFinanceResults);\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tempCFWidgetLocationName) cfWidgetLocationName = data.tempCFWidgetLocationName;\r\n if (data.tempCFWidgetConsumerName) cfWidgetConsumerName = data.tempCFWidgetConsumerName;\r\n if (data.tempCFWidgetSortOrderName) cfWidgetSortOrderName = data.tempCFWidgetSortOrderName;\r\n }\r\n\r\n function populateCFWidgetLocations(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.Name,\r\n text: r.Name\r\n }\r\n });\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('consumerFinancesWidgetLocations', data, cfWidgetLocationId);\r\n }\r\n function populateCFWidgetConsumers(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.FullName,\r\n text: r.FullName \r\n }\r\n });\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('consumerFinancesWidgetConsumer', data, cfWidgetConsumerName);\r\n }\r\n function populateCFWidgetDropdowns() {\r\n const sortData = ([\r\n { id: 1, value: 'Consumer Last Name Ascending', text: 'Consumer Last Name Ascending' },\r\n { id: 2, value: 'Consumer Last Name Descending', text: 'Consumer Last Name Descending' },\r\n { id: 3, value: 'Account Balance Ascending', text: 'Account Balance Ascending' },\r\n { id: 4, value: 'Account Balance Descending', text: 'Account Balance Descending' },\r\n { id: 5, value: 'Last Transaction Ascending', text: 'Last Transaction Ascending' },\r\n { id: 6, value: 'Last Transaction Descending', text: 'Last Transaction Descending' },\r\n ]);\r\n dropdown.populate(\"consumerFinancesWidgetSortOrder\", sortData, cfWidgetSortOrderName);\r\n }\r\n\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.appendChild(filteredBy);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Consumer: ${(cfWidgetConsumerName == '%') ? 'ALL' : cfWidgetConsumerName}

    \r\n

    Location: ${(cfWidgetLocationName == '%') ? 'ALL' : cfWidgetLocationName}

    \r\n

    Sort Order: ${cfWidgetSortOrderName}

    \r\n
    `;\r\n }\r\n\r\n var tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Name', 'Account', 'Balance', 'Last Transaction'],\r\n tableId: 'consumerFinanceWidgetTable',\r\n };\r\n\r\n function populateConsumerFinanceResults(results) {\r\n displayFilteredBy();\r\n var widget = document.getElementById('dashMoneyManagementwidget');\r\n if (!widget) return;\r\n\r\n\r\n var cfTable = table.build(tableOptions);\r\n widgetBody.appendChild(cfTable);\r\n\r\n cfTableData = results.map(td => {\r\n var ID = td.Id;\r\n var name = td.name;\r\n var account = td.account;\r\n var balance = td.balance;\r\n var lastTransaction = td.lastTransaction;\r\n\r\n return {\r\n id: ID,\r\n values: [name, account, balance == '' ? '' : '$' + balance, lastTransaction == '' ? '' : moment(lastTransaction).format('MM/DD/YY')],\r\n attributes: [\r\n { key: 'data-consumer-id', value: td.Id }, { key: 'consumerId', value: td.Id }, { key: 'registerId', value: td.registerId } \r\n ],\r\n onClick: (e) => { \r\n handleAccountTableEvents(e.target.attributes.consumerId.value,e.target.attributes.registerId.value)\r\n },\r\n };\r\n });\r\n\r\n table.populate(cfTable, cfTableData);\r\n PROGRESS__ANYWHERE.SPINNER.hide(widgetBody, \"Loading\");\r\n }\r\n\r\n function handleAccountTableEvents(consumerId, registerId) {\r\n $.session.consumerId = consumerId;\r\n NewEntryCF.buildNewEntryForm(registerId); \r\n } \r\n\r\n function init() {\r\n if (!cfWidgetLocationName) cfWidgetLocationName = '%';\r\n if (!cfWidgetConsumerName) cfWidgetConsumerName = '%';\r\n if (!cfWidgetSortOrderName) cfWidgetSortOrderName = 'Consumer Last Name Ascending';\r\n\r\n widget = document.getElementById('dashMoneyManagementwidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashMoneyManagementwidget', 'moneyManagementFilterBtn');\r\n\r\n buildFilterPopup();\r\n displayFilteredBy();\r\n eventSetup();\r\n populateCFWidgetDropdowns();\r\n ConsumerFinancesWidgetAjax.getLocationsForDashboardAbsent(populateCFWidgetLocations);\r\n ConsumerFinancesWidgetAjax.getCFWidgetConsumers(populateCFWidgetConsumers);\r\n\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(widgetBody, \"Loading\");\r\n\r\n ConsumerFinancesWidgetAjax.getConsumerFinanceWidgetEntriesDataAjax({\r\n token: $.session.Token,\r\n consumerName: cfWidgetConsumerName,\r\n locationName: cfWidgetLocationName,\r\n sortOrderName: cfWidgetSortOrderName\r\n }, populateConsumerFinanceResults);\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();","var ConsumerFinancesWidgetAjax = (function () {\r\n var absentLocationsArray = [];\r\n var consumerArray = [];\r\n\r\n function getLocationsForDashboardAbsent(callback) {\r\n if (absentLocationsArray.length > 0) {\r\n callback(absentLocationsArray);\r\n return;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsJSONResult;\r\n absentLocationsArray = res;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n },\r\n });\r\n }\r\n\r\n function getCFWidgetConsumers(callback) {\r\n if (consumerArray.length > 0) {\r\n callback(consumerArray);\r\n return;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getCFWidgetConsumers/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCFWidgetConsumersResult;\r\n consumerArray = res; \r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n },\r\n });\r\n }\r\n\r\n function getConsumerFinanceWidgetEntriesDataAjax(filterData, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getConsumerFinanceWidgetEntriesData/',\r\n data: JSON.stringify(filterData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerFinanceWidgetEntriesDataResult;\r\n callback(res, null);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getLocationsForDashboardAbsent: getLocationsForDashboardAbsent,\r\n getCFWidgetConsumers: getCFWidgetConsumers,\r\n getConsumerFinanceWidgetEntriesDataAjax: getConsumerFinanceWidgetEntriesDataAjax,\r\n };\r\n})();\r\n","var linksAndMessages = (function() {\r\n var linksWidget;\r\n var messagesWidget;\r\n var links = [];\r\n var messages = [];\r\n\r\n \r\n function loadCustomLinks() {\r\n var linksList = linksWidget.querySelector('.customLinksList');\r\n linksList.innerHTML = '';\r\n if (links.length < 1) return;\r\n links.forEach(l => {\r\n var link = document.createElement('a');\r\n link.href = l.linkaddress;\r\n link.innerHTML = l.linkname;\r\n link.setAttribute('target', l.linktarget);\r\n linksList.appendChild(link);\r\n if (l.linkname.indexOf('CaraSolva') !== -1) {\r\n link.addEventListener('click', linksAndMessagesWidgetAjax.loadCaraSolva);\r\n }\r\n });\r\n }\r\n\r\n function loadSystemMessages() {\r\n var messageList = messagesWidget.querySelector('.messagesList');\r\n messageList.innerHTML = '';\r\n if (messages.length < 1) return;\r\n messages.forEach(m => {\r\n var message = document.createElement('p');\r\n message.innerHTML = m.description;\r\n messageList.appendChild(message);\r\n });\r\n }\r\n\r\n function separateLinksAndMessages(results) {\r\n results.forEach(r => {\r\n if (r.description === '') {\r\n links.push(r);\r\n } else {\r\n messages.push(r);\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n messagesWidget = document.getElementById('dashsystemmessagewidget');\r\n linksWidget = document.getElementById('dashcustomlinks');\r\n\r\n if (links.length > 0 || messages.length > 0) {\r\n loadSystemMessages();\r\n loadCustomLinks();\r\n return;\r\n }\r\n\r\n linksAndMessagesWidgetAjax.getSystemMessagesAndCustomLinks(function(results, error) {\r\n if (error) {\r\n var messageError = messagesWidget.querySelector('.widget__error');\r\n var linkError = linksWidget.querySelector('.widget__error');\r\n messageError.classList.add('visible');\r\n linkError.classList.add('visible');\r\n return;\r\n }\r\n separateLinksAndMessages(results);\r\n loadSystemMessages();\r\n loadCustomLinks();\r\n });\r\n }\r\n\r\n return {\r\n init\r\n }\r\n \r\n}());","var linksAndMessagesWidgetAjax = (function() {\r\n\tfunction getSystemMessagesAndCustomLinks(callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n $.webServer.protocol + '://' + \r\n $.webServer.address + ':' + \r\n $.webServer.port + '/' + \r\n $.webServer.serviceName + '/getSystemMessagesAndCustomLinksJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res;\r\n\t\t\t\ttry {\r\n res = response.getSystemMessagesAndCustomLinksJSONResult;\r\n callback(res, null);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tcallback(null, error);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(error, null);\r\n\t\t\t},\r\n\t\t});\r\n }\r\n \r\n function loadCaraSolva() {\r\n var data = {token: $.session.Token};\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/CaraSolvaURL/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n if (response && response.CaraSolvaURLResult) {\r\n window.open(response.CaraSolvaURLResult, \"_blank\");\r\n }\r\n },\r\n });\r\n }\r\n\r\n\treturn {\r\n getSystemMessagesAndCustomLinks,\r\n loadCaraSolva\r\n\t};\r\n})();\r\n","//Widget id = 2\r\nconst CN_CaseLoadWidget = (function () {\r\n //Data\r\n let caseLoad, widgetSettings, demographicInfo;\r\n let consumerName;\r\n var widget;\r\n var widgetBody;\r\n let consumerCountlbl;\r\n let currentRowConsumerId;\r\n // Settings\r\n let viewNotesDaysBack, lastNoteEnteredDaysBack, viewEnteredByOtherUsers;\r\n // dates\r\n let lastNoteEnteredDaysBackDate;\r\n\r\n function showSendReportPopup() {\r\n const emailData = {\r\n to: '',\r\n cc: '',\r\n bcc: '',\r\n subject: '',\r\n body: '',\r\n };\r\n const sendReportPopup = POPUP.build({\r\n id: 'myCaseLoadSendReportPopup',\r\n header: 'Email Report',\r\n });\r\n\r\n const emailTo = input.build({\r\n type: 'email',\r\n label: 'Email To Addresses:',\r\n callback: e => {\r\n emailData.to = e.target.value;\r\n },\r\n });\r\n const emailCC = input.build({\r\n type: 'email',\r\n label: 'Email Cc Addresses:',\r\n callback: e => {\r\n emailData.cc = e.target.value;\r\n },\r\n });\r\n const emailBCC = input.build({\r\n type: 'email',\r\n label: 'Email Bcc Addresses:',\r\n callback: e => {\r\n emailData.bcc = e.target.value;\r\n },\r\n });\r\n const emailSubject = input.build({\r\n type: 'text',\r\n label: 'Email Subject:',\r\n callback: e => {\r\n emailData.subject = e.target.value;\r\n },\r\n });\r\n const emailBody = input.build({\r\n type: 'text',\r\n label: 'Email Body:',\r\n callback: e => {\r\n emailData.body = e.target.value;\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendReportPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendReportPopup);\r\n showReportPopup();\r\n },\r\n });\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n sendReportPopup.appendChild(emailTo);\r\n sendReportPopup.appendChild(emailCC);\r\n sendReportPopup.appendChild(emailBCC);\r\n sendReportPopup.appendChild(emailSubject);\r\n sendReportPopup.appendChild(emailBody);\r\n sendReportPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(sendReportPopup);\r\n }\r\n function showReportDownloadPopup() {\r\n const createReportPopup = POPUP.build({\r\n id: 'myCaseLoadCreateReportPopup',\r\n });\r\n const message = document.createElement('div');\r\n message.innerText =\r\n 'Your report is beig generated and will be downloaded when finished, in the meantime you may continue to work.';\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(createReportPopup);\r\n },\r\n });\r\n createReportPopup.appendChild(message);\r\n createReportPopup.appendChild(okBtn);\r\n }\r\n function showReportPopup() {\r\n quickPrintPopup = POPUP.build({\r\n id: 'myCaseLoadReportPopup',\r\n });\r\n\r\n const createReportBtn = button.build({\r\n text: 'Create Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(quickPrintPopup);\r\n showReportDownloadPopup();\r\n },\r\n });\r\n const sendReportBtn = button.build({\r\n text: 'Send Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(quickPrintPopup);\r\n showSendReportPopup();\r\n },\r\n });\r\n\r\n quickPrintPopup.appendChild(createReportBtn);\r\n quickPrintPopup.appendChild(sendReportBtn);\r\n\r\n POPUP.show(quickPrintPopup);\r\n }\r\n\r\n function displayConsumerCount(caseLoad) {\r\n if (caseLoad && caseLoad.length !== 0) {\r\n consumerCountlbl = document.createElement('div');\r\n consumerCountlbl.innerHTML = `
    \r\n

    Consumer Count: ${caseLoad.length}

    \r\n
    `;\r\n }\r\n }\r\n\r\n function populateCaseLoadWidget() {\r\n displayConsumerCount(caseLoad);\r\n\r\n const widget = document.getElementById('casenotescaseload');\r\n if (!widget) return;\r\n\r\n const widgetBody = widget.querySelector('.widget__body');\r\n if (caseLoad.length === 0) {\r\n widgetBody.innerHTML = `No consumers on case load`;\r\n return;\r\n }\r\n\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Consumer', 'Resident Number', 'Last Note'],\r\n tableId: 'caseLoadWidgetTable',\r\n };\r\n const caseLoadTable = table.build(tableOptions);\r\n\r\n widgetBody.innerHTML = '';\r\n widgetBody.appendChild(consumerCountlbl);\r\n widgetBody.appendChild(caseLoadTable);\r\n\r\n let caseLoadTableBody = document.getElementsByClassName('table__body')[0];\r\n caseLoadTableBody.classList.add('caseLoadTableBody');\r\n\r\n const tableData = caseLoad.map(consumer => {\r\n const name = `${consumer.lastName}, ${consumer.firstName}`;\r\n const resNumber = consumer.residentNumber;\r\n const dateString = consumer.lastNoteDate.split(' ')[0];\r\n const lastNoteDate = new Date(dateString);\r\n const dateDisp =\r\n lastNoteEnteredDaysBackDate < lastNoteDate\r\n ? consumer.lastNoteDate.split(' ')[0]\r\n : `${\r\n dateString === '' ? 'No Case Notes Found' : dateString\r\n }`;\r\n\r\n return {\r\n values: [name, resNumber, dateDisp],\r\n id: consumer.id,\r\n onClick: () => {\r\n getConsumerDemographics(consumer.id);\r\n },\r\n };\r\n });\r\n\r\n table.populate(caseLoadTable, tableData);\r\n }\r\n\r\n function rowPopup(consumerId) {\r\n currentRowConsumerId = consumerId;\r\n // Demographics\r\n consumerName = `${demographicInfo.lastname}, ${demographicInfo.firstname}`;\r\n const popup = POPUP.build({\r\n header: consumerName,\r\n id: 'myCaseLoadPopup',\r\n });\r\n //Address\r\n const addressBlock = document.createElement('div');\r\n // addressBlock.classList.add(\"demographicSection\");\r\n const address1 = demographicInfo.addressone;\r\n const address2 = demographicInfo.addresstwo;\r\n const city = demographicInfo.mailcity;\r\n const state = demographicInfo.mailstate;\r\n let zip = demographicInfo.mailzipcode;\r\n zip = zip ? zip.trim() : zip;\r\n addressBlock.innerHTML = `\r\n

    Address

    \r\n

    ${address1}

    \r\n

    ${address2}

    \r\n

    ${city}, ${state} ${zip}

    `;\r\n popup.appendChild(addressBlock);\r\n\r\n //Contact Info\r\n const contactInfoBlock = document.createElement('div');\r\n // contactInfoBlock.classList.add(\"demographicSection\");\r\n const tempPrimaryPhone = demographicInfo.primaryphone.split('%');\r\n const tempSecondaryPhone = demographicInfo.secondaryphone.split('%');\r\n const pPhoneNumber = UTIL.formatPhoneNumber(tempPrimaryPhone[0].trim());\r\n const sPhoneNumber = UTIL.formatPhoneNumber(tempSecondaryPhone[0].trim());\r\n const pPhoneType = tempPrimaryPhone.length > 1 ? tempPrimaryPhone[1] : '';\r\n const sPhoneType = tempSecondaryPhone.length > 1 ? tempSecondaryPhone[1] : '';\r\n const pPhone = `${pPhoneNumber} ${pPhoneType}`;\r\n const sPhone = `${sPhoneNumber} ${sPhoneType}`;\r\n contactInfoBlock.innerHTML = `\r\n

    Contact Info

    \r\n

    Primary: ${pPhone}

    \r\n

    Secondary: ${sPhone}

    `;\r\n popup.appendChild(contactInfoBlock);\r\n\r\n // new case note button\r\n const newNoteBtn = button.build({\r\n text: 'New Case Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.CaseNotesUpdate ? ['newNoteBtn', 'disabled'] : ['newNoteBtn'],\r\n callback: () => {\r\n // Need to finish new note button once new roster is done\r\n POPUP.hide(popup);\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('caseNotes-new');\r\n UTIL.toggleMenuItemHighlight('casenotes');\r\n $.loadedApp = 'casenotes';\r\n actioncenter.dataset.activeModule = 'casenotes';\r\n CaseNotes.init(true);\r\n },\r\n });\r\n\r\n // review case notes\r\n const reviewNotesBtn = button.build({\r\n text: 'Review Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n UTIL.toggleMenuItemHighlight('casenotes');\r\n actioncenter.dataset.activeModule = 'casenotes';\r\n notesOverview.dashHandeler(\r\n viewNotesDaysBack,\r\n consumerId,\r\n viewEnteredByOtherUsers,\r\n consumerName,\r\n );\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(newNoteBtn);\r\n btnWrap.appendChild(reviewNotesBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function getCaseLoadData(cb) {\r\n caseNotesAjax.getCaseLoadRestriction(res => {\r\n caseLoad = res.map(consumer => {\r\n const consumerObj = {\r\n id: consumer.id,\r\n firstName: consumer.FN,\r\n lastName: consumer.LN,\r\n lastNoteDate: consumer.last_note_datetime,\r\n residentNumber: consumer.residentNumber,\r\n };\r\n return consumerObj;\r\n });\r\n cb();\r\n });\r\n }\r\n\r\n function getConsumerDemographics(consumerId) {\r\n rosterAjax.getConsumerDemographics(consumerId, res => {\r\n demographicInfo = res[0];\r\n rowPopup(consumerId);\r\n });\r\n }\r\n\r\n function getCurrentlyselectedConsumerId() {\r\n return currentRowConsumerId;\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 2,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function getDaysBackDate(daysBack) {\r\n const daysBackDate = new Date();\r\n daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n return daysBackDate;\r\n }\r\n\r\n function cleanSettings() {\r\n viewNotesDaysBack = widgetSettings.widgetConfig.viewNotesDaysBack;\r\n lastNoteEnteredDaysBack = widgetSettings.widgetConfig.lastNoteEnteredDaysBack;\r\n viewEnteredByOtherUsers =\r\n widgetSettings.widgetConfig.viewEnteredByOtherUsers === 'N' ? false : true;\r\n }\r\n\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('2');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n cleanSettings();\r\n lastNoteEnteredDaysBackDate = getDaysBackDate(lastNoteEnteredDaysBack);\r\n getCaseLoadData(populateCaseLoadWidget);\r\n\r\n widget = document.getElementById('casenotescaseload');\r\n widgetBody = widget.querySelector('.widget__body');\r\n dashboard.appendPDFButton('casenotescaseload', 'caseloadPDFBtn');\r\n displayConsumerCount();\r\n }\r\n\r\n return {\r\n init,\r\n getCurrentlyselectedConsumerId\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\n\r\nconst CN_CaseLoadWidgetAjax = (function() {\r\n function getCaseNoteProductivity(daysBack = 7) {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getDashboardCaseNoteProductivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivity\r\n };\r\n})();\r\n","var clockedInWidget = (function () {\r\n // DATA\r\n //-----------------------\r\n var locations;\r\n var clockedInConsumers;\r\n var clockedInStaff;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var asOfTime;\r\n var widgetTabs;\r\n var filterPopup;\r\n var locationDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n // VALUES\r\n //-----------------------\r\n var locationId;\r\n var locationName;\r\n\r\n // Filtering\r\n function populateLocations() {\r\n var data = locations.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name,\r\n };\r\n });\r\n\r\n // if (!$.session.defaultDayServiceLocation) $.session.defaultDayServiceLocation = data[0].value;\r\n if (!locationId) locationId = data[0].value;\r\n if (!locationName) locationName = data[0].text;\r\n\r\n dropdown.populate('clockedInLocations', data, locationId);\r\n }\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'clockedInLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, asOfTime);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Location: ${locationName}

    \r\n
    `;\r\n }\r\n\r\n function populateCurrentClockInTime() {\r\n var currentTime = UTIL.getCurrentTime();\r\n currentTime = UTIL.convertFromMilitary(currentTime);\r\n\r\n asOfTime = document.createElement('p');\r\n asOfTime.classList.add('bold', 'clockedInTime');\r\n asOfTime.innerHTML = `Clocked In As Of ${currentTime}`;\r\n\r\n widgetBody.appendChild(asOfTime);\r\n }\r\n function populateConsumersNames() {\r\n var consumers = {};\r\n var totalConsumers = 0;\r\n\r\n clockedInConsumers.forEach(function (consumer) {\r\n var fullName = `${consumer.clockedinconsumername.split(' ')[1]}, ${\r\n consumer.clockedinconsumername.split(' ')[0]\r\n }`;\r\n if (!consumers[fullName]) consumers[fullName] = 0;\r\n consumers[fullName]++;\r\n totalConsumers++;\r\n });\r\n\r\n var consumersSorted = {};\r\n Object.keys(consumers)\r\n .sort()\r\n .forEach(function (key) {\r\n consumersSorted[key] = consumers[key];\r\n });\r\n\r\n // Tab Section\r\n var section = document.querySelector('.consumers-section');\r\n if (!section) return;\r\n section.innerHTML = '';\r\n\r\n var consumerCount = document.createElement('div');\r\n consumerCount.classList.add('clockedInCount');\r\n consumerCount.innerHTML = `Total - ${totalConsumers}`;\r\n\r\n var list = document.createElement('ul');\r\n list.classList.add('clockedInList');\r\n\r\n var names = Object.keys(consumersSorted);\r\n names.forEach(function (name) {\r\n var li = document.createElement('li');\r\n li.innerHTML = name;\r\n list.appendChild(li);\r\n });\r\n\r\n section.appendChild(consumerCount);\r\n section.appendChild(list);\r\n }\r\n function populateStaffNames() {\r\n var consumers = {};\r\n var totalEmployees = 0;\r\n\r\n clockedInStaff.forEach(function (consumer) {\r\n var fullName = `${consumer.staffclockedinname.split(' ')[1]}, ${\r\n consumer.staffclockedinname.split(' ')[0]\r\n }`;\r\n if (!consumers[fullName]) consumers[fullName] = 0;\r\n consumers[fullName]++;\r\n totalEmployees++;\r\n });\r\n\r\n var consumersSorted = {};\r\n Object.keys(consumers)\r\n .sort()\r\n .forEach(function (key) {\r\n consumersSorted[key] = consumers[key];\r\n });\r\n\r\n // Tab Section\r\n var section = document.querySelector('.employees-section');\r\n if (!section) return;\r\n section.innerHTML = '';\r\n\r\n var employeeCount = document.createElement('div');\r\n employeeCount.classList.add('clockedInCount');\r\n employeeCount.innerHTML = `Total - ${totalEmployees}`;\r\n\r\n var list = document.createElement('ul');\r\n list.classList.add('clockedInList');\r\n\r\n var names = Object.keys(consumersSorted);\r\n names.forEach(function (name) {\r\n var li = document.createElement('LI');\r\n li.innerHTML = name;\r\n list.appendChild(li);\r\n });\r\n\r\n section.appendChild(employeeCount);\r\n section.appendChild(list);\r\n }\r\n function buildWidgetTabs() {\r\n var tabOptions = {\r\n sections: ['Consumers', 'Employees'],\r\n };\r\n\r\n var widgetTabs = tabs.build(tabOptions);\r\n\r\n widgetBody.appendChild(widgetTabs);\r\n\r\n populateConsumersNames();\r\n populateStaffNames();\r\n displayFilteredBy();\r\n }\r\n\r\n function eventSetup() {\r\n var oldLocationId;\r\n var oldLocationName;\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldLocationId = locationId;\r\n oldLocationName = locationName;\r\n locationId = selectedOption.value;\r\n locationName = selectedOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n clockedInWidgetAjax.getClockedInConsumerNamesDayServicesAjax(\r\n locationId,\r\n function (consumerNames) {\r\n clockedInConsumers = consumerNames;\r\n clockedInWidgetAjax.getClockedInStaffNamesDayServicesAjax(\r\n locationId,\r\n function (staffNames) {\r\n clockedInStaff = staffNames;\r\n populateConsumersNames();\r\n populateStaffNames();\r\n displayFilteredBy();\r\n },\r\n );\r\n },\r\n );\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n locationId = oldLocationId;\r\n locationName = oldLocationName;\r\n });\r\n }\r\n function getInitialData(callback) {\r\n clockedInWidgetAjax.getLocationsForDashboardDayServices(function (results) {\r\n locations = results;\r\n\r\n clockedInWidgetAjax.getClockedInConsumerNamesDayServicesAjax(\r\n locations[0].ID,\r\n function (results) {\r\n clockedInConsumers = results;\r\n\r\n clockedInWidgetAjax.getClockedInStaffNamesDayServicesAjax(\r\n locations[0].ID,\r\n function (results) {\r\n clockedInStaff = results;\r\n\r\n callback();\r\n },\r\n );\r\n },\r\n );\r\n });\r\n }\r\n\r\n function init() {\r\n // append filter button\r\n dashboard.appendFilterButton('dashdsclockedin', 'clockedInFilterBtn');\r\n\r\n widget = document.getElementById('dashdsclockedin');\r\n widgetBody = widget.querySelector('.widget__body');\r\n widgetBody.innerHTML = '';\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n getInitialData(function () {\r\n populateCurrentClockInTime();\r\n populateLocations();\r\n buildWidgetTabs();\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var clockedInWidgetAjax = (function() {\r\n\r\n function getLocationsForDashboardDayServices(callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/getDashboardDayServicesLocationsJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n res = response.getDashboardDayServicesLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n }\r\n });\r\n }\r\n\r\n function getClockedInConsumerNamesDayServicesAjax(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/getClockedInConsumerNamesDayServicesJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getClockedInConsumerNamesDayServicesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n }\r\n });\r\n }\r\n\r\n function getClockedInStaffNamesDayServicesAjax(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: \r\n $.webServer.protocol + \"://\" + \r\n $.webServer.address + \":\" + \r\n $.webServer.port + \"/\" + \r\n $.webServer.serviceName + \"/getClockedInStaffNamesDayServicesJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getClockedInStaffNamesDayServicesJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getLocationsForDashboardDayServices,\r\n getClockedInConsumerNamesDayServicesAjax,\r\n getClockedInStaffNamesDayServicesAjax\r\n }\r\n}());","var hoursWorkedWidget = (function () {\r\n // DATA\r\n //-----------------------\r\n var hoursWorkedList = {};\r\n var selectedWeekView = 'currweek';\r\n var selectedWeekRange;\r\n var selectedWeekRangeTxt;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var hoursList;\r\n var filterPopup;\r\n var weeksDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function populateWeeksDropdown(results) {\r\n // value\r\n var currStart = moment(results.curr_start_date).format('MM-DD-YYYY');\r\n var currEnd = moment(results.curr_end_date).format('MM-DD-YYYY');\r\n var prevStart = results.prev_start_date\r\n ? moment(results.prev_start_date).format('MM-DD-YYYY')\r\n : null;\r\n var prevEnd = results.prev_end_date ? moment(results.prev_end_date).format('MM-DD-YYYY') : null;\r\n // text\r\n var newCurrStart = currStart.split('-').join('/');\r\n var newCurrEnd = currEnd.split('-').join('/');\r\n var newPrevStart = prevStart ? prevStart.split('-').join('/') : null;\r\n var newPrevEnd = prevEnd ? prevEnd.split('-').join('/') : null;\r\n\r\n var data = [\r\n {\r\n id: 'currweek',\r\n value: `${currStart} - ${currEnd}`,\r\n text: `${newCurrStart} - ${newCurrEnd}`,\r\n },\r\n ];\r\n\r\n if (prevStart && prevEnd) {\r\n data.push({\r\n id: 'prevweek',\r\n value: `${prevStart} - ${prevEnd}`,\r\n text: `${newPrevStart} - ${newPrevEnd}`,\r\n });\r\n }\r\n\r\n if (!selectedWeekRange) selectedWeekRange = data[0].value;\r\n if (!selectedWeekRangeTxt) selectedWeekRangeTxt = data[0].text;\r\n\r\n dropdown.populate('hoursWorkedWeekDropdown', data, selectedWeekRange);\r\n }\r\n\r\n function populateHoursWorkedList(results) {\r\n hoursList.innerHTML = '';\r\n\r\n var dataObj;\r\n\r\n if (!Object.keys(hoursWorkedList).length) {\r\n dataObj = {};\r\n if (results) {\r\n results.forEach(r => {\r\n var date = r.workdate.split(' ')[0].split('/');\r\n date = `${UTIL.leadingZero(date[0])}/${UTIL.leadingZero(date[1])}/${date[2]}`;\r\n var location = r.location;\r\n var hours;\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n if (r.check_hours !== '' && r.check_hours !== '0.00') {\r\n hours = parseFloat(r.check_hours).toFixed(2);\r\n } else if (r.hours !== '' && r.hours !== '0.000000000') {\r\n hours = parseFloat(r.hours).toFixed(2);\r\n } else {\r\n hours = 0;\r\n }\r\n } else {\r\n if (r.check_hours !== '' && r.check_hours !== '0') {\r\n hours = parseFloat(r.check_hours).toFixed(2);\r\n } else if (r.hours !== '' && r.hours !== '0.000000000') {\r\n hours = parseFloat(r.hours).toFixed(2);\r\n } else {\r\n hours = 0;\r\n }\r\n }\r\n\r\n if (!dataObj[r.week]) {\r\n dataObj[r.week] = {};\r\n }\r\n if (!dataObj[r.week][date]) {\r\n dataObj[r.week][date] = {};\r\n }\r\n if (!dataObj[r.week][date][location]) {\r\n dataObj[r.week][date][location] = {\r\n hours: parseFloat(hours).toFixed(2),\r\n name: location,\r\n };\r\n } else {\r\n var newHours = parseFloat(dataObj[r.week][date][location].hours) + parseFloat(hours);\r\n dataObj[r.week][date][location].hours = parseFloat(newHours).toFixed(2);\r\n }\r\n });\r\n }\r\n // cache data\r\n hoursWorkedList = dataObj;\r\n } else {\r\n dataObj = hoursWorkedList;\r\n }\r\n\r\n if (!dataObj[selectedWeekView]) {\r\n hoursList.innerHTML = `

    Nothing scheduled

    `;\r\n displayFilteredBy();\r\n return;\r\n } else {\r\n var overlapDisclaimer = document.createElement('h4');\r\n overlapDisclaimer.classList.add('overlapDisclaimer');\r\n overlapDisclaimer.innerHTML = 'This widget does not reconcile overlapping time entries.';\r\n hoursList.appendChild(overlapDisclaimer);\r\n }\r\n\r\n var weekRange = Object.keys(dataObj[selectedWeekView]);\r\n if (weekRange) {\r\n weekRange.forEach(week => {\r\n var div = document.createElement('div');\r\n\r\n var totalHours = 0;\r\n\r\n var locations = Object.keys(dataObj[selectedWeekView][week]);\r\n locations.forEach(location => {\r\n var hours = dataObj[selectedWeekView][week][location].hours;\r\n hours = parseFloat(hours);\r\n totalHours += hours;\r\n\r\n var locationText = document.createElement('p');\r\n locationText.innerHTML = `${location} - ${hours} hours`;\r\n\r\n div.appendChild(locationText);\r\n });\r\n\r\n var dateText = document.createElement('h4');\r\n dateText.classList.add('dateDisp');\r\n var isoWeek = UTIL.formatDateToIso(week);\r\n dateText.innerHTML = `${moment(isoWeek).format('dddd, MMMM D')} - ${totalHours} hours`;\r\n\r\n div.insertBefore(dateText, div.firstChild);\r\n hoursList.appendChild(div);\r\n });\r\n }\r\n\r\n displayFilteredBy();\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n weeksDropdown = dropdown.build({\r\n dropdownId: 'hoursWorkedWeekDropdown',\r\n label: 'Weeks',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(weeksDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, hoursList);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Weeks: ${selectedWeekRangeTxt}

    \r\n
    `;\r\n }\r\n\r\n function eventSetup() {\r\n var oldSelectedWeekView;\r\n var oldSelectedWeekRange;\r\n var oldSelectedWeekRangeTxt;\r\n\r\n weeksDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldSelectedWeekView = selectedWeekView;\r\n oldSelectedWeekRange = selectedWeekRange;\r\n oldSelectedWeekRangeTxt = selectedWeekRangeTxt;\r\n\r\n selectedWeekView = selectedOption.id;\r\n selectedWeekRange = selectedOption.value;\r\n selectedWeekRangeTxt = selectedOption.innerHTML;\r\n });\r\n applyFiltersBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n populateHoursWorkedList();\r\n });\r\n cancelFilterBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n selectedWeekView = oldSelectedWeekView;\r\n selectedWeekRange = oldSelectedWeekRange;\r\n selectedWeekRangeTxt = oldSelectedWeekRangeTxt;\r\n });\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashhoursworkedwidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n hoursList = document.getElementById('hoursWorkedLists');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashhoursworkedwidget', 'hoursWorkedFilterBtn');\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n hoursWorkedWidgetAjax.getWorkWeeks(function (error, workWeeks) {\r\n populateWeeksDropdown(workWeeks);\r\n displayFilteredBy();\r\n\r\n hoursWorkedWidgetAjax.getHoursWorked(function (error, hoursWorked) {\r\n populateHoursWorkedList(hoursWorked);\r\n });\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var hoursWorkedWidgetAjax = (function () {\r\n function getWorkWeeks(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkWeeks/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getWorkWeeksResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function getHoursWorked(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCompanyWorkWeekAndHours/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCompanyWorkWeekAndHoursResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getWorkWeeks,\r\n getHoursWorked,\r\n };\r\n})();\r\n","var incidentTrackingWidget = (function () {\r\n\r\n let widget;\r\n let widgetBody;\r\n let defaultShow;\r\n let tempShow;\r\n let incidentTrackingWidgetObj = []; \r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector(\".widget__filters\");\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n applyFiltersBtn = button.build({\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n });\r\n cancelFilterBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\"\r\n });\r\n showDropdown = dropdown.build({\r\n dropdownId: \"showDropdown\",\r\n label: \"Show\",\r\n style: \"secondary\"\r\n });\r\n\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n filterPopup.appendChild(showDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n\r\n function eventSetup() {\r\n applyFiltersBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n if (defaultShow === tempShow || !tempShow)\r\n return;\r\n defaultShow = tempShow;\r\n UTIL.LS.setStorage('dash_incidentTrackingShow', defaultShow);\r\n populateIncidentTrackingWidget(incidentTrackingWidgetObj);\r\n });\r\n cancelFilterBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n showDropdown.addEventListener(\"change\", event => {\r\n tempShow = event.target[event.target.selectedIndex].value;\r\n });\r\n }\r\n\r\n function getData() {\r\n let showValue = UTIL.LS.getStorage('dash_incidentTrackingShow');\r\n if (showValue === undefined) {\r\n showValue = \"%\";\r\n UTIL.LS.setStorage('dash_incidentTrackingShow', '%')\r\n }\r\n defaultShow = showValue;\r\n\r\n const showDropdownData = ([\r\n { id: 1, value: 1, text: 'Unread' },\r\n { id: 2, value: 2, text: 'Read' },\r\n ]);\r\n showDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"showDropdown\", showDropdownData, defaultShow);\r\n }\r\n\r\n var tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Consumer Involved', 'Date of Incident', 'Category / Subcategory'],\r\n tableId: 'incidentTrackingWidgetTable',\r\n };\r\n\r\n function populateIncidentTrackingWidget(res) {\r\n var itTable = table.build(tableOptions);\r\n widgetBody.innerHTML = '';\r\n widgetBody.appendChild(itTable);\r\n\r\n var incidents = []; \r\n res.forEach(r => {\r\n if (!incidents[r.incidentId]) {\r\n incidents[r.incidentId] = r;\r\n } else {\r\n const dupName = incidents[r.incidentId].consumerName.includes(r.consumerName);\r\n if (!dupName) {\r\n incidents[r.incidentId].consumerName += `, ${r.consumerName}`;\r\n }\r\n incidents[r.incidentId].viewedBy += `, ${r.viewedBy}`;\r\n }\r\n });\r\n\r\n incidents.sort(function (a, b) {\r\n var o1 = a.consumerName.toLowerCase();\r\n var o2 = b.consumerName.toLowerCase();\r\n\r\n if (o1 < o2) return -1;\r\n if (o1 > o2) return 1;\r\n return 0;\r\n }); \r\n\r\n incidents.sort(function (a, b) {\r\n return new Date(b.incidentDate) - new Date(a.incidentDate);\r\n }); \r\n\r\n var keys = Object.keys(incidents);\r\n const removeArray = [];\r\n var count = 0;\r\n var data = keys\r\n .filter(k => {\r\n var obj = incidents[k];\r\n\r\n if ($.session.incidentTrackingViewPerm.length !== 0) {\r\n if (\r\n obj.description !== '' &&\r\n !$.session.incidentTrackingViewPerm.includes(obj.description.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n .map(r => {\r\n var obj = incidents[r];\r\n\r\n var name = obj.consumerName.split(',');\r\n name = `${name[1]}, ${name[0]}`;\r\n var date = UTIL.abbreviateDateYear(obj.incidentDate.split(' ')[0]);\r\n var viewedOn = r.viewedOn ? true : false;\r\n var orginUser =\r\n obj.originallyEnteredBy.toLowerCase() === $.session.UserId.toLowerCase() ? true : false;\r\n var userHasViewed = obj.viewedBy.includes($.session.UserId) ? true : false;\r\n var showBold;\r\n\r\n if (!orginUser && !userHasViewed) {\r\n showBold = true;\r\n } \r\n if (defaultShow == 2 && showBold) {\r\n removeArray.push(count);\r\n }\r\n else if (defaultShow == 1 && !showBold) {\r\n removeArray.push(count);\r\n }\r\n count = count + 1;\r\n return {\r\n values: [name, date, obj.incidentCategory],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n id: obj.incidentId,\r\n onClick: async () => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: obj.incidentId,\r\n userId: $.session.UserId,\r\n });\r\n\r\n incidentTracking.getDropdownData(() => {\r\n setActiveModuleSectionAttribute('incidentTracking-overview');\r\n UTIL.toggleMenuItemHighlight('incidenttracking');\r\n actioncenter.dataset.activeModule = 'incidenttracking';\r\n reviewIncident.init(obj.incidentId);\r\n });\r\n },\r\n };\r\n });\r\n for (let i = removeArray.length - 1; i >= 0; i--)\r\n data.splice(removeArray[i], 1);\r\n\r\n table.populate(itTable, data);\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('incidenttrackingwidget');\r\n if (!widget) return;\r\n widgetBody = widget.querySelector('.widget__body');\r\n dashboard.appendFilterButton(\r\n \"incidenttrackingwidget\",\r\n \"incidenttrackingFilterBtn\"\r\n );\r\n defaultShow = '%';\r\n buildFilterPopup();\r\n eventSetup();\r\n getData();\r\n incidentTrackingWidgetAjax.getITDashboardWidgetDataAjax(res => {\r\n incidentTrackingWidgetObj = res; \r\n populateIncidentTrackingWidget(incidentTrackingWidgetObj); \r\n }); \r\n \r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var incidentTrackingWidgetAjax = (function () {\r\n //$.session.incidentTrackingViewCaseLoad\r\n function getITDashboardWidgetDataAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITDashboardWidgetData/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"viewCaseLoad\":\"' +\r\n $.session.incidentTrackingViewCaseLoad +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITDashboardWidgetDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getITDashboardWidgetDataAjax,\r\n };\r\n})();\r\n","var infalTimeClockWidget = (function() {\r\n\tvar position;\r\n\tvar tempID = readCookie('id');\r\n\tvar jobs = {};\r\n\tvar timeData = [];\r\n\tvar timeDataLookup = {};\r\n\tvar currentJob;\r\n\tvar currentTimeRecord;\r\n\tvar ID;\r\n\tvar jobDropdown;\r\n\tvar infalPunchClockButton;\r\n\tvar clockedIn = Boolean;\r\n\tvar infalTimeClockTable;\t\r\n\tvar jobSelectionSection = document.createElement('div');\r\n\tvar timeMessageSection = document.createElement('div');\r\n\tvar clockedInStatusMessage = document.createElement('div');\r\n\tvar actioncenter;\r\n\t\r\n\r\n\tfunction setInfalId(err, idObj) {\r\n\t\tif (err) {\r\n\t\t\tthrow 'Error';\r\n\t\t}\r\n\t\t//if (idObj[0] && idObj[0].App_Password) ID = idObj[0].App_Password;\r\n\t\tif (idObj !== undefined) {\r\n\t\t\tif (idObj[0] && idObj[0].App_Username) ID = idObj[0].App_Username;\r\n\t\t\t//else ID = idObj;\r\n\t\t\telse ID = tempID;\r\n\t\t} else {\r\n\t\t\t//ID = idObj;\r\n\t\t\tID = tempID;\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getJobs () {\r\n\t\tinfalAjax.InfalGetJobsAjax({ id: ID }, function(err, returnJobs) {\r\n\t\tif (err) {\r\n\t\t\t$('#dashinfaltimeclockwidget .dashboarderror').show();\r\n\t\t\tif (callback) callback('error');\r\n\t\t\tthrow 'Error';\r\n\t\t} else {\r\n\t\t\tjobs = returnJobs;\r\n\t\t\tpopulateJobDropDown()\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction cacheTimeDataForLookup(data) {\r\n\t\tdata.forEach(d => {\r\n\t\t\tif (!timeDataLookup[d.ID]) {\r\n\t\t\t\ttimeDataLookup[d.ID] = d;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getTimePunches () {\r\n\t\tinfalAjax.InfalGetClockInsAndOutsAjax({ id: ID }, function(err, data){\r\n\t\tif (err) {\r\n\t\t\t$('#dashinfaltimeclockwidget .dashboarderror').show();\r\n\t\t\tif (callback) callback('error');\r\n\t\t\tthrow 'Error';\r\n\t\t} else {\r\n\t\t\ttimeData = data;\r\n\t\t\tcacheTimeDataForLookup(data);\r\n\t\t\t// Sort the punches by ID:\r\n\t\t\ttimeData.sort((a,b) => (a.Job_Description_No > b.Job_Description_No) ? 1 : -1);\r\n\t\t\t//build the table with the punch data\r\n\t\t\ttimeClockTable(timeData)\r\n\t\t\t// set initial clocked in status\r\n\t\t\tconst clockedInRecord = timeData.find(record => record.OutTime === \"\");\r\n\t\t\tif (timeData.length == 0 ) {\r\n\t\t\t\tclockedInStatusMessage.innerHTML = 'You are curently clocked out';\r\n\t\t\t\tclockedIn = false;\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock In';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'in')\r\n\t\t\t\tinfalTimeClockTable.style.display = 'none';\r\n\t\t\t\ttimeMessageSection.innerHTML = 'No time entries for today.'\r\n\t\t\t} else if (clockedInRecord){\r\n\t\t\t\tclockedIn = true;\r\n\t\t\t\tgetCurrentRecord(timeData);\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock Out';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'out')\r\n\t\t\t\tjobDropdown.style.display = 'none';\r\n clockedInStatusMessage.innerHTML = 'Currently clocked in as ' + clockedInRecord.Emp_Job_Description + ' at ' + clockedInRecord.InTime.replace(/^0+/, '');\r\n\t\t\t} else {\r\n\t\t\t\tclockedInStatusMessage.innerHTML = 'You are curently clocked out';\r\n\t\t\t\tclockedIn = false;\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock In';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'in')\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n\t}\r\n\r\n\tfunction populateJobDropDown() {\r\n\t\tvar data = jobs.map(j => {\r\n\t\t\tvar id = j.Job_Description_No\r\n\t\t\tvar value = j.Job_Description;\r\n\t\t\tvar text = j.text;\r\n\t\t\treturn{\r\n\t\t\t\tid,\r\n\t\t\t\tvalue,\r\n\t\t\t\ttext\r\n\t\t\t}\r\n\t\t})\r\n\t\tdropdown.populate('jobsDropdown', data);\r\n\t\tselectedJob = jobs[0].Job_Description_No;\r\n\t\tselectedJobDescription = jobs[0].Job_Description;\r\n\t\tjobDropdown.addEventListener('change', () => {\r\n\t\t\tvar selectedOption = event.target.options[event.target.selectedIndex];\r\n\t\t\tselectedJob = selectedOption.id;\r\n\t\t\tselectedJobDescription = selectedOption.value;\r\n\t\t})\r\n\t}\r\n\r\n\tfunction calcPosition(p) {\r\n\t\tposition = p;\r\n\t\trestOfStuff();\r\n\t}\r\n\t//Geo Location Lat and Long\r\n\tfunction getLocation() {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(calcPosition, restOfStuff);//second parm is for error handling, for example location is blocked.\r\n\t\t} else {\r\n\t\t\t// position = false;\r\n\t\t\trestOfStuff();\r\n\t\t}\r\n\t}\r\n\t//Clock in action \r\n\tfunction clockIn () {\r\n\t\tvar fullDate = moment(new Date()),\r\n\t\tinDate = fullDate.format('MM/DD/YYYY'),\r\n\t\tstartTime = fullDate.format('hh:mm'),\r\n\t\tstartAMPM = fullDate.format('A');\r\n\t\tvar timeObj = {\r\n\t\tempIdString: ID + '',\r\n\t\tjobIdString: selectedJob + '',\r\n\t\tlatInString: '0',\r\n\t\tlongInString: '0',\r\n\t\tinDate: inDate,\r\n\t\tStartTime: startTime + '',\r\n\t\tStartAMPM: startAMPM + '',\r\n\t\t};\r\n\t\r\n\t\tif (position) {\r\n\t\t \tvar latitude = position.coords.latitude;\r\n\t\t \tvar longitude = position.coords.longitude;\r\n\r\n\t\t \ttimeObj.latInString = latitude;\r\n\t\t \ttimeObj.longInString = longitude;\r\n\t\t }\r\n\t\t\r\n\t\tinfalAjax.InfalClockInAjax(timeObj, results => {\r\n\t\t\tcurrentTimeRecord = results.InfalClockInResult;\r\n\t\t\tupdateTimeData();\r\n\t\t\ttimeMessageSection.innerHTML = '';\r\n\t\t});\r\n\t\tjobDropdown.style.display = 'none';\r\n\t\tinfalTimeClockTable.style.display = 'block';\r\n clockedInStatusMessage.innerHTML = 'Currently clocked in as ' + selectedJobDescription + ' at ' + startTime.replace(/^0+/, '') + startAMPM;\r\n\t}\r\n\t//Clock Out action\r\n\tfunction clockOut () {\r\n\t\tclockedInStatusMessage.innerHTML = 'You are curently clocked out';\r\n\t\tgetCurrentRecord(timeData)\r\n\t\tvar fullDate = moment(new Date()),\r\n\t\toutDate = fullDate.format('MM/DD/YYYY'),\r\n\t\tEndTime = fullDate.format('hh:mm'),\r\n\t\tEndTimeAMPM = fullDate.format('A');\r\n\t\tvar timeObj = {\r\n\t\t\tempIdString: ID,\r\n\t\t\tjobIdString: currentJob,\r\n\t\t\trecIdString: currentTimeRecord,\r\n\t\t\tlatOutString: '0',\r\n\t\t\tlongOutString: '0',\r\n\t\t\toutDate: outDate + '',\r\n\t\t\tEndTime: EndTime + '',\r\n\t\t\tEndTimeAMPM: EndTimeAMPM + '',\r\n\t\t\tMemo: timeDataLookup[currentTimeRecord].Memo === null ? '': timeDataLookup[currentTimeRecord].Memo,\r\n\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif (position) {\r\n\t\t\t\tvar latitude = position.coords.latitude;\r\n\t\t\t\tvar longitude = position.coords.longitude;\r\n \r\n\t\t\t\t timeObj.latOutString = latitude;\r\n\t\t\t\ttimeObj.longOutString = longitude;\r\n\t\t\t}\r\n\t\t\r\n\t\tinfalAjax.InfalClockOutAjax(timeObj, r => {\r\n\t\t\tupdateTimeData();\r\n\t\t\tjobDropdown.style.display = 'flex';\r\n\t\t});\r\n\t}\r\n\r\n\tfunction memoPopup(timeRecord) {\r\n\t\tvar widget = document.getElementById('dashinfaltimeclockwidget');\r\n\t\tvar widgetBody = widget.querySelector('.widget__body');\r\n\t\t// var popup = document.createElement('div');\r\n\t\tvar popup = POPUP.build({\r\n\t\t\tclassNames: 'infalTimeMemoPopup',\r\n\t\t\theader: 'Shift Note'\r\n\t\t})\r\n\t\t// popup.classList.add('popup', 'visible', 'infalTimeMemoPopup', 'popup--filter');\r\n\t\t// popup.setAttribute('data-popup', 'true');\r\n\t\t\r\n\t\ttimeRecord = parseInt(timeRecord);\r\n\t\tlet saveBtn = button.build({\r\n\t\t\ttext: 'Save',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\ticon: 'checkmark',\r\n\t\t\tcallback: function() {\r\n\t\t\t\ttimeDataLookup[timeRecord].Memo = document.getElementById('memoInput').value;\r\n\t\t\t\t//Highlight this row if they add a memo, remove the highlight if they clear out the memo:\r\n\t\t\t\tif (timeDataLookup[timeRecord].Memo !== null && timeDataLookup[timeRecord].Memo !== '') {\r\n\t\t\t\t\tlet row = document.getElementById(timeRecord);\r\n\t\t\t\t\trow.classList.add('containsMemo');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet row = document.getElementById(timeRecord);\r\n\t\t\t\t\trow.classList.remove('containsMemo');\r\n\t\t\t\t}\r\n\t\t\t\toverlay.hide();\r\n\t\t\t\tPOPUP.hide(popup)\r\n\t\t\t\t// actioncenter.removeChild(popup);\r\n\t\t\t\tbodyScrollLock.enableBodyScroll(popup);\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet clearBtn = button.build({\r\n\t\t\ttext: 'Clear',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'outlined',\r\n\t\t\ticon: 'clear',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tdocument.getElementById('memoInput').value = '';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet memoInput = input.build({\r\n\t\t\tid: 'memoInput',\r\n\t\t\tlabel: 'Memo',\r\n\t\t\ttype: 'textarea',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tvalue: timeDataLookup[timeRecord].Memo,\r\n\t\t\treadonly: timeRecord === currentTimeRecord && clockedIn ? false : true\r\n\t\t});\r\n\t\tpopup.appendChild(memoInput);\r\n\t\tif (currentTimeRecord === timeRecord && clockedIn) {\r\n\t\t\tbtnWrap = document.createElement('div');\r\n\t\t\tbtnWrap.classList.add('btnWrap')\r\n\t\t\tbtnWrap.appendChild(saveBtn)\r\n\t\t\tbtnWrap.appendChild(clearBtn)\r\n\t\t\tpopup.appendChild(btnWrap);\r\n\t\t}\r\n\t\t\r\n\t\tPOPUP.show(popup);\r\n\t}\r\n\r\n\tinfalPunchClockButton = button.build({\r\n\t\tid: 'infalClockInOutBtn',\r\n\t\tclassNames: 'infalClockInOutBtn',\r\n\t\ttext: '',\r\n\t\tstyle: 'secondary',\r\n\t\ttype: 'contained',\r\n\t\tcallback: function () {\r\n\t\t\tif (clockedIn) {\r\n\t\t\t\tclockOut()\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock In';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'in');\r\n\t\t\t\tcurrentJob = '';\r\n\t\t\t\tclockedIn = !clockedIn;\r\n\t\t\t} else {\r\n\t\t\t\tclockIn();\r\n\t\t\t\tinfalPunchClockButton.innerHTML = 'Clock Out';\r\n\t\t\t\tinfalPunchClockButton.setAttribute('data-clock-action', 'out');\r\n\t\t\t\tclockedIn = !clockedIn;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tfunction timeClockTable(timeData) {\r\n\r\n\t\tvar options = {\r\n\t\t\tcolumnHeadings:[\r\n\t\t\t\t'Job',\r\n\t\t\t\t'Time in',\r\n\t\t\t\t'Time out'\r\n\t\t\t],\r\n\t\t\ttableId: 'infalTimeClockWidgetTable',\r\n\t\t\tcallback: function () {\r\n\t\t\t\tmemoPopup(event.target.id);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tinfalTimeClockTable = table.build(options);\r\n\t\tvar widget = document.getElementById('dashinfaltimeclockwidget');\r\n\t\tvar widgetBody = widget.querySelector('.widget__body');\r\n\r\n\r\n\r\n\r\n\t\twidgetBody.appendChild(infalTimeClockTable);\r\n\t\twidgetBody.appendChild(timeMessageSection);\r\n\t\tlet data = timeData.map(t => {\r\n\t\t\treturn {\r\n\t\t\t\tvalues: [\r\n\t\t\t\t\tt.Emp_Job_Description,\r\n\t\t\t\t\tt.InTime,\r\n\t\t\t\t\tt.OutTime\r\n\t\t\t\t],\r\n\t\t\t\tid: t.ID\r\n\t\t\t}\r\n\t\t});\r\n\t\ttable.populate('infalTimeClockWidgetTable', data)\r\n\r\n\t\t//Highlight the row if it contains a memo:\r\n\t\tvar x;\r\n\t\tfor (x in timeDataLookup) {\r\n\t\t\tif (timeDataLookup[x].Memo !== null && timeDataLookup[x].Memo !== '') {\r\n\t\t\t\tlet row = document.getElementById(x);\r\n\t\t\t\trow.classList.add('containsMemo')\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Updates Current Record variables, and re-populates the time clock table\r\n\tfunction updateTimeData() {\r\n\t\tinfalAjax.InfalGetClockInsAndOutsAjax({ id: ID }, function(err, data){\r\n\t\t\tif (err) {\r\n\t\t\t\t$('#dashinfaltimeclockwidget .dashboarderror').show();\r\n\t\t\t\tif (callback) callback('error');\r\n\t\t\t\tthrow 'Error';\r\n\t\t\t} else {\r\n\t\t\t\ttimeData = data;\r\n\t\t\t\ttimeData.sort((a,b) => (a.Job_Description_No > b.Job_Description_No) ? 1 : -1);\r\n\t\t\t\tgetCurrentRecord(timeData);\r\n\t\t\t\tcacheTimeDataForLookup(data);\r\n\t\t\t\tlet tableData = timeData.map(t => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tvalues: [\r\n\t\t\t\t\t\t\tt.Emp_Job_Description,\r\n\t\t\t\t\t\t\tt.InTime,\r\n\t\t\t\t\t\t\tt.OutTime\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tid: t.ID\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\ttable.populate('infalTimeClockWidgetTable', tableData);\r\n\t\t\t\t//Highlight the row if it contains a memo:\r\n\t\t\t\tvar x;\r\n\t\t\t\tfor (x in timeDataLookup) {\r\n\t\t\t\t\tif (timeDataLookup[x].Memo !== null && timeDataLookup[x].Memo !== '') {\r\n\t\t\t\t\t\tlet row = document.getElementById(x);\r\n\t\t\t\t\t\trow.classList.add('containsMemo');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\t\r\n\t}\t\r\n\r\n\tfunction getCurrentRecord(timeData) {\r\n\t\tconst clockedInRecord = timeData.find(record => record.OutTime === \"\");\r\n\t\tif (!clockedInRecord) return;\r\n\t\tcurrentTimeRecord = clockedInRecord.ID;\r\n\t\tcurrentJob = clockedInRecord.Emp_Job_Id;\r\n\t}\r\n\r\n\tvar buildComponents = (function() {\r\n\t\tvar widget = document.getElementById('dashinfaltimeclockwidget');\r\n\t\tvar widgetBody = widget.querySelector('.widget__body');\r\n\t\tjobSelectionSection.setAttribute('id', 'jobSelectionSection');\r\n\t\ttimeMessageSection.setAttribute('id', 'timeMessageSection');\r\n\t\tclockedInStatusMessage.setAttribute('id', 'clockedInStatusMessage');\r\n\t\tjobDropdown = dropdown.build({\r\n \tdropdownId: 'jobsDropdown',\r\n\t\tlabel: 'Job',\r\n\t\tstyle: 'secondary',\r\n\t\treadonly: false\r\n\t\t});\r\n\t\twidgetBody.appendChild(clockedInStatusMessage);\r\n\t\twidgetBody.appendChild(jobSelectionSection);\r\n\t\tjobSelectionSection.appendChild(jobDropdown);\r\n\t\tjobSelectionSection.appendChild(infalPunchClockButton);\r\n\r\n\t\t\r\n\r\n\t})\r\n\r\n\tfunction restOfStuff(){\r\n\t\tsetInfalId();\r\n\t\tbuildComponents();\r\n\t\tgetTimePunches();\r\n\t\tgetJobs();\r\n\t}\r\n\r\n\tfunction init() {\r\n\t\tactioncenter = document.getElementById('actioncenter');\r\n\t\tgetLocation();\r\n\t}\r\n\r\n\t return {\r\n\t\t init,\r\n\t };\r\n })();","var infalTimeClockAjax = (function () {\r\n //Gets the group note id for inserting new group notes\r\n function getJobs() {\r\n var id = readCookie('id');\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/InfalGetJobs/',\r\n data: '{\"id\":\"' + id + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n createJobButtonsHtml(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function infalClockInDataSetUp(EmpId, jobId, LatIn, LongIn, inDate, startTime, ampm) {\r\n var clockInData = {\r\n empIdString: EmpId,\r\n jobIdString: jobId,\r\n latInString: LatIn,\r\n longInString: LongIn,\r\n inDate: inDate,\r\n StartTime: startTime,\r\n StartAMPM: ampm,\r\n };\r\n\r\n clockIn(clockInData);\r\n }\r\n\r\n function clockIn(clockInData) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/InfalClockIn/',\r\n //data: '{\"empIdString\":\"' + EmpId + '\", \"jobIdString\":\"' + jobId + '\", \"latInString\":\"' + LatIn + '\", \"longInString\":\"' + LongIn + '\", \"inDate\":\"' + inDate + '\", \"StartTime\":\"' + startTime + '\", \"ampm\":\"' + ampm + '\"}',\r\n data: JSON.stringify(clockInData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n checkClockInResult(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function infalClockOutDataSetUp(\r\n EmpId,\r\n jobId,\r\n recId,\r\n LatOut,\r\n LongOut,\r\n outDate,\r\n endTime,\r\n ampm,\r\n memo,\r\n ) {\r\n var clockOutData = {\r\n empIdString: EmpId,\r\n jobIdString: jobId,\r\n recIdString: recId,\r\n latOutString: LatOut,\r\n longOutString: LongOut,\r\n outDate: outDate,\r\n EndTime: endTime,\r\n EndTimeAMPM: ampm,\r\n Memo: memo,\r\n };\r\n\r\n clockOut(clockOutData);\r\n }\r\n\r\n function clockOut(clockOutData) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/InfalClockOut/',\r\n //data: '{\"empIdString\":\"' + EmpId + '\", \"jobIdString\":\"' + jobId + '\", \"recIdString\":\"' + recId + '\", \"latOutString\":\"' + LatOut + '\", \"longOutString\":\"' + LongOut + '\", \"outDate\":\"' + outDate + '\", \"EndTime\":\"' + endTime + '\", \"EndTimeAMPM\":\"' + ampm + '\", \"Memo\":\"' + memo + '\"}',\r\n data: JSON.stringify(clockOutData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n checkClockOutResult(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr, status, error);\r\n },\r\n });\r\n }\r\n\r\n function checkAnticipo(id, pass) {\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/ValidateLogin/',\r\n data: '{\"id\":\"' + id + '\", \"pass\":\"' + pass + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n allowAccess(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr, status, error);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getJobs,\r\n infalClockInDataSetUp,\r\n clockIn,\r\n infalClockOutDataSetUp,\r\n clockOut,\r\n checkAnticipo,\r\n };\r\n})();\r\n","const unreadLocationNotes = (function() {\r\n let widget;\r\n let widgetBody;\r\n let applyFiltersBtn;\r\n let cancelFilterBtn;\r\n let filterPopup;\r\n //DOM\r\n let locationNoteslocationDropdown;\r\n let locationNoteList;\r\n //DATA\r\n let locationNoteLocationObj;\r\n let locationNoteLocationLookupObject;\r\n let tmpSelectedLocation;\r\n let filteredLocation;\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector(\".widget__filters\");\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n applyFiltersBtn = button.build({\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\"\r\n });\r\n cancelFilterBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\"\r\n });\r\n locationNoteslocationDropdown = dropdown.build({\r\n dropdownId: \"locationProgressNoteLocations\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n filterPopup.appendChild(locationNoteslocationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n\r\n function populateDropdown() {\r\n let defaultLocation = UTIL.LS.getStorage('dash_locationProgressNoteLocation');\r\n if (defaultLocation === undefined) {\r\n defaultLocation = \"%\";\r\n UTIL.LS.setStorage('dash_locationProgressNoteLocation', '%')\r\n }\r\n filteredLocation = defaultLocation;\r\n\r\n let filteredLocationExists = (function() {\r\n if (defaultLocation === \"%\") return true;\r\n let exists = false;\r\n locationNoteLocationObj.forEach(loc => {\r\n if (loc.loc_id == filteredLocation) {\r\n exists = true;\r\n return;\r\n }\r\n });\r\n return exists;\r\n })();\r\n\r\n if (!filteredLocationExists) {\r\n defaultLocation = \"%\";\r\n filteredLocation = \"%\";\r\n UTIL.LS.setStorage('dash_locationProgressNoteLocation', '%');\r\n }\r\n\r\n let data = locationNoteLocationObj.map(loc => {\r\n return {\r\n value: loc.loc_id,\r\n text: loc.locationName\r\n };\r\n });\r\n\r\n data.sort(function(a, b) {\r\n // alphabetize\r\n if (a.text < b.text) {\r\n return -1;\r\n }\r\n if (a.text > b.text) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n data.unshift({ id: \"%\", value: \"%\", text: \"All\" }); //ADD All Value\r\n locationNoteLocationObj.unshift({ loc_id: \"%\", locationName: \"All\" }); //ADD All Value\r\n\r\n dropdown.populate(locationNoteslocationDropdown, data, defaultLocation);\r\n }\r\n\r\n function eventSetup() {\r\n applyFiltersBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n if (filteredLocation === tmpSelectedLocation || !tmpSelectedLocation)\r\n return;\r\n filteredLocation = tmpSelectedLocation;\r\n UTIL.LS.setStorage('dash_locationProgressNoteLocation', filteredLocation);\r\n getNotesFiltered();\r\n });\r\n cancelFilterBtn.addEventListener(\"click\", event => {\r\n filterPopup.classList.remove(\"visible\");\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n locationNoteslocationDropdown.addEventListener(\"change\", event => {\r\n tmpSelectedLocation = event.target[event.target.selectedIndex].value;\r\n });\r\n }\r\n\r\n function getNotesFiltered() {\r\n PROGRESS__ANYWHERE.init()\r\n locationNoteList.innerHTML = \"\"\r\n PROGRESS__ANYWHERE.SPINNER.show(locationNoteList, \"Loading\");\r\n locationNotesAjax.getLocationProgressNotesAndPermission(filteredLocation, res => {\r\n PROGRESS__ANYWHERE.SPINNER.hide(locationNoteList)\r\n populateLocationProgressNoteWidgetResult(res);\r\n });\r\n }\r\n\r\n function populateLocationProgressNoteWidgetResult(filteredResults) {\r\n displayFilteredBy();\r\n // locationNoteList.innerHTML = \"\";\r\n if (filteredResults.length === 0) {\r\n locationNoteList.innerHTML = \"There are no unread notes\";\r\n return;\r\n }\r\n filteredResults.forEach(progNote => {\r\n let date = progNote.datecreated.split(\" \")[0];\r\n let location =\r\n locationNoteLocationLookupObject[progNote.Location].locationName;\r\n locationNoteList.innerHTML += `\r\n
    ${location}: ${progNote.title} - ${date}\r\n

    Location: ${locationNoteLocationLookupObject[filteredLocation].locationName}

    \r\n
    \r\n `;\r\n }\r\n\r\n function populateLocationLookup() {\r\n locationNoteLocationLookupObject = {};\r\n locationNoteLocationObj.forEach(loc => {\r\n obj = {\r\n locationName: loc.locationName\r\n };\r\n locationNoteLocationLookupObject[loc.loc_id] = obj;\r\n });\r\n }\r\n\r\n function getData() {\r\n let getlocations = new Promise((resolve, reject) => {\r\n locationNotesAjax.getLocationsWithUnreadNotesAndPermission(res => {\r\n locationNoteLocationObj = res;\r\n resolve(\"success\");\r\n });\r\n });\r\n\r\n Promise.all([getlocations]).then(() => {\r\n populateDropdown();\r\n populateLocationLookup();\r\n getNotesFiltered();\r\n });\r\n }\r\n\r\n // const dash_locationProgressNotesLS = (function() {\r\n // function getLocation() {\r\n // let user = $.session.UserId;\r\n // return localStorage.getItem(\r\n // `user:${user} dash_locationProgressNoteLocation`\r\n // );\r\n // }\r\n // function setLocaiton(locationId) {\r\n // let user = $.session.UserId;\r\n // return localStorage.setItem(\r\n // `user:${user} dash_locationProgressNoteLocation`,\r\n // locationId\r\n // );\r\n // }\r\n // return {\r\n // getLocation: getLocation,\r\n // setLocation: setLocaiton\r\n // };\r\n // })();\r\n\r\n function init() {\r\n dashboard.appendFilterButton(\r\n \"locationprogressnoteswidget\",\r\n \"locationProgressFilterBtn\"\r\n );\r\n\r\n widget = document.getElementById(\"locationprogressnoteswidget\");\r\n widgetBody = widget.querySelector(\".widget__body\");\r\n locationNoteList = document.getElementById(\"locationProgressNoteList\");\r\n \r\n getData();\r\n buildFilterPopup();\r\n eventSetup();\r\n }\r\n return {\r\n init\r\n };\r\n})();\r\n","// Widget id = 4\r\nconst planWorkflowWidget = (function () {\r\n // Data\r\n let planWorkflows, widgetSettings;\r\n let widget, widgetBody, planTasks;\r\n let filterPopup;\r\n let consumers = [],\r\n tasks = [];\r\n let filter = {\r\n dueDateRange: 'today',\r\n dueDateFrom: UTIL.getTodaysDate(),\r\n dueDateTo: UTIL.getTodaysDate(),\r\n consumer: 'all',\r\n task: 'all',\r\n };\r\n\r\n async function init() {\r\n widget = document.getElementById('planworkflow');\r\n widgetBody = widget.querySelector('.widget__body');\r\n planTasks = widget.querySelector('#plan-workflow-tasks');\r\n widgetSettings = dashboard.getWidgetSettings('4');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('planworkflow', 'planToDoFilterBtn');\r\n let data = await getData();\r\n planWorkflows = data;\r\n\r\n consumers = Object.values(\r\n planWorkflows.reduce(\r\n (\r\n acc,\r\n { consumerId, consumerLastName, consumerFirstName, consumerMiddleName, ...wf },\r\n ) => {\r\n if (!acc[consumerId]) {\r\n acc[consumerId] = {\r\n consumerId,\r\n consumerFullName: `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName}`,\r\n };\r\n }\r\n\r\n return acc;\r\n },\r\n {},\r\n ),\r\n );\r\n\r\n consumers.sort((a, b) => {\r\n const textA = a.consumerFullName.toUpperCase();\r\n const textB = b.consumerFullName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n tasks = [...new Set(planWorkflows.map(c => c.workflowStepDescription))];\r\n setFilterDueDates(widgetSettings.widgetConfig.dueDate);\r\n applyFilter(filter);\r\n buildFilterPopup();\r\n }\r\n\r\n function setFilterDueDates(dateRangeText) {\r\n let today = UTIL.getTodaysDate(true);\r\n let dueDates = {};\r\n switch (dateRangeText.toUpperCase()) {\r\n case 'TODAY':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 7 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 30 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 7 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 30 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n default:\r\n dueDates = {\r\n from: filter.dueDateFrom,\r\n to: filter.dueDateTo,\r\n };\r\n break;\r\n }\r\n filter = {\r\n dueDateRange: dateRangeText.toLowerCase(),\r\n dueDateFrom: dueDates.from,\r\n dueDateTo: dueDates.to,\r\n consumer: filter.consumer,\r\n task: filter.task,\r\n };\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n dueDate: filter.dueDateRange,\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 4,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function populatePlanWorkflowWidget(data) {\r\n if (!widget) return;\r\n planTasks.innerHTML = '';\r\n if (data.length === 0) {\r\n planTasks.innerHTML = `No tasks are currently due`;\r\n } else {\r\n buildHtmlFromData(planTasks, data);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n let widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n const showCustomDates = show => {\r\n if (show) {\r\n fromDateInput.classList.remove('hidden');\r\n toDateInput.classList.remove('hidden');\r\n } else {\r\n if (fromDateInput.classList.contains('hidden')) return; // don't add it again\r\n fromDateInput.classList.add('hidden');\r\n toDateInput.classList.add('hidden');\r\n }\r\n };\r\n\r\n let dueDateDropDownValue = filter.dueDateRange;\r\n let fromDateInputValue = filter.dueDateFrom;\r\n let toDateInputValue = filter.dueDateTo;\r\n let consumersDropDownValue = filter.consumer;\r\n let tasksDropDownValue = filter.task;\r\n\r\n let dueDateDropDown = dropdown.build({\r\n id: 'planToDoWidgetDueDates',\r\n label: 'Due Date Range',\r\n type: 'date',\r\n style: 'secondary',\r\n });\r\n\r\n let fromDateInput = input.build({\r\n id: 'planToDoWidgetFromDate',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: fromDateInputValue,\r\n });\r\n\r\n let toDateInput = input.build({\r\n id: 'planToDoWidgetToDate',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: toDateInputValue,\r\n });\r\n\r\n let consumersDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetConsumers',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let tasksDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetTasks',\r\n label: 'Task',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n let cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dueDateDropDown);\r\n filterPopup.appendChild(fromDateInput);\r\n filterPopup.appendChild(toDateInput);\r\n filterPopup.appendChild(consumersDropdown);\r\n filterPopup.appendChild(tasksDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n const dueDateRangeDropDownData = [\r\n {\r\n id: 1,\r\n value: 'custom',\r\n text: 'Custom',\r\n },\r\n {\r\n id: 2,\r\n value: 'today',\r\n text: 'Today',\r\n },\r\n {\r\n id: 3,\r\n value: 'next 7 days',\r\n text: 'Next 7 Days',\r\n },\r\n {\r\n id: 4,\r\n value: 'next 30 days',\r\n text: 'Next 30 Days',\r\n },\r\n {\r\n id: 5,\r\n value: 'prior 7 days',\r\n text: 'Prior 7 Days',\r\n },\r\n {\r\n id: 6,\r\n value: 'prior 30 days',\r\n text: 'Prior 30 Days',\r\n },\r\n ];\r\n dropdown.populate(dueDateDropDown, dueDateRangeDropDownData, dueDateDropDownValue);\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n\r\n const consumerDropdownData = consumers.map(c => {\r\n return {\r\n id: c.consumerId,\r\n value: c.consumerId,\r\n text: c.consumerFullName,\r\n };\r\n });\r\n consumerDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(consumersDropdown, consumerDropdownData, consumersDropDownValue);\r\n\r\n const taskDropdownData = tasks.map((t, i) => {\r\n return {\r\n id: i,\r\n value: t,\r\n text: t,\r\n };\r\n });\r\n taskDropdownData.sort((a, b) =>\r\n a.value.toUpperCase() < b.value.toUpperCase() ? -1 : 1,\r\n );\r\n taskDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(tasksDropdown, taskDropdownData, tasksDropDownValue);\r\n\r\n // event listeners\r\n dueDateDropDown.addEventListener('change', e => {\r\n dueDateDropDownValue = e.target.value;\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n setFilterDueDates(dueDateDropDownValue.toUpperCase());\r\n fromDateInputValue = filter.dueDateFrom;\r\n toDateInputValue = filter.dueDateTo;\r\n });\r\n\r\n fromDateInput.addEventListener('change', e => {\r\n fromDateInputValue = e.target.value;\r\n });\r\n\r\n toDateInput.addEventListener('change', e => {\r\n toDateInputValue = e.target.value;\r\n });\r\n\r\n consumersDropdown.addEventListener('change', e => {\r\n consumersDropDownValue = e.target.value;\r\n });\r\n\r\n tasksDropdown.addEventListener('change', e => {\r\n tasksDropDownValue = e.target.value;\r\n });\r\n\r\n applyFiltersBtn.addEventListener('click', e => {\r\n filter = {\r\n dueDateRange: dueDateDropDownValue,\r\n dueDateFrom: fromDateInputValue,\r\n dueDateTo: toDateInputValue,\r\n consumer: consumersDropDownValue,\r\n task: tasksDropDownValue,\r\n };\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n applyFilter(filter);\r\n });\r\n\r\n cancelFilterBtn.addEventListener('click', e => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n const applyFilter = filter => {\r\n let fromDate = Date.parse(filter.dueDateFrom);\r\n let toDate = Date.parse(filter.dueDateTo);\r\n let filteredData = planWorkflows.filter(p => {\r\n let dueDate = Date.parse(p.workflowStepDueDate);\r\n return dueDate >= fromDate && dueDate <= toDate; // filter by dates\r\n });\r\n filteredData =\r\n filter.consumer.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.consumerId === filter.consumer; // filter by consumer\r\n });\r\n filteredData =\r\n filter.task.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.workflowStepDescription === filter.task; // filter by task\r\n });\r\n populatePlanWorkflowWidget(filteredData);\r\n displayFilteredBy();\r\n };\r\n\r\n function buildHtmlFromData(parent, data) {\r\n const buildPlanWorkflowHTML = (parent, plans) => {\r\n const buildWorkflowStepHTML = (consumer, planId, stepId, step, dueDate) => {\r\n let stepHTML = document.createElement('div');\r\n\r\n stepHTML.setAttribute(\r\n 'style',\r\n 'display: flex; flex-wrap: nowrap; padding-bottom: 5px; cursor: pointer',\r\n );\r\n\r\n stepHTML.innerHTML = `\r\n\t\t\t\t\t
    - ${step}
    \r\n\t\t\t\t\t
    ${\r\n dueDate ? dueDate.split(' ')[0] : ''\r\n }
    \r\n\t\t\t\t`;\r\n stepHTML.addEventListener('click', e => {\r\n plan.dashHandler(consumer, planId, stepId);\r\n });\r\n return stepHTML;\r\n };\r\n\r\n if (plans.length > 0) {\r\n let previousPlanId = '';\r\n\r\n let planTypeContainerHtml = document.createElement('div');\r\n planTypeContainerHtml.setAttribute('style', 'display: flex; flex-wrap: nowrap;');\r\n\r\n let planTypeHtml = document.createElement('div');\r\n planTypeHtml.setAttribute('style', 'display: flex; font-weight: 500;');\r\n planTypeHtml.innerHTML = `\r\n\t\t\t\t\tISP - ${plans[0].planType === 'A' ? 'Annual' : 'Revision'}\r\n\t\t\t\t`;\r\n\r\n let dueDateLabelHtml = document.createElement('div');\r\n dueDateLabelHtml.setAttribute(\r\n 'style',\r\n 'display: flex; margin-left: auto; text-align: right; font-weight: 500;',\r\n );\r\n dueDateLabelHtml.innerHTML = 'Due Date';\r\n\r\n planTypeContainerHtml.appendChild(planTypeHtml);\r\n planTypeContainerHtml.appendChild(dueDateLabelHtml);\r\n parent.appendChild(planTypeContainerHtml);\r\n\r\n for (record in plans) {\r\n let {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName,\r\n //planActive,\r\n planEffectiveStart,\r\n //planEffectiveEnd,\r\n planId,\r\n planRevisionNumber,\r\n //planStatus,\r\n planType,\r\n //planYearEnd,\r\n responsiblePartyId,\r\n workflowStepId,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n ...rest\r\n } = plans[record];\r\n if (previousPlanId !== planId) {\r\n let consumerPlanInfo = document.createElement('div');\r\n consumerPlanInfo.setAttribute(\r\n 'style',\r\n 'font-weight: bold; padding-bottom: 5px;',\r\n );\r\n consumerPlanInfo.innerHTML = `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName} ${\r\n planType === 'R' ? ' - Rev. ' + planRevisionNumber : ''\r\n } - Eff. ${planEffectiveStart ? planEffectiveStart.split(' ')[0] : ''}`;\r\n parent.appendChild(consumerPlanInfo);\r\n previousPlanId = planId;\r\n }\r\n parent.appendChild(\r\n buildWorkflowStepHTML(\r\n {\r\n consumer: {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName,\r\n },\r\n },\r\n planId,\r\n workflowStepId,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n ),\r\n );\r\n }\r\n return parent;\r\n }\r\n };\r\n\r\n let annualPlans = data.filter(d => d.planType === 'A');\r\n let revisionPlans = data.filter(d => d.planType === 'R');\r\n\r\n if (annualPlans.length > 0) buildPlanWorkflowHTML(parent, annualPlans);\r\n if (revisionPlans.length > 0) buildPlanWorkflowHTML(parent, revisionPlans);\r\n\r\n return parent;\r\n }\r\n\r\n function displayFilteredBy() {\r\n let filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, planTasks);\r\n }\r\n\r\n const dueDateRange = filter.dueDateRange.toUpperCase();\r\n const dueDateFrom = moment(filter.dueDateFrom, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const dueDateTo = moment(filter.dueDateTo, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const filterConsumerBy = filter.consumer.toUpperCase();\r\n const task = filter.task.toUpperCase();\r\n\r\n const getFilteredConsumer = () => {\r\n return consumers.find(c => {\r\n return c.consumerId === filter.consumer;\r\n });\r\n };\r\n\r\n // console.log(consumers, \" consumer: \", filter.consumer);\r\n filteredBy.innerHTML = `
    \r\n\t\t

    Due Date: ${\r\n dueDateRange === 'CUSTOM' ? `${dueDateFrom} - ${dueDateTo}` : dueDateRange\r\n }

    \r\n\t\t

    Consumer: ${\r\n filterConsumerBy === 'ALL' ? 'ALL' : getFilteredConsumer().consumerFullName\r\n }

    \r\n\t\t

    Task: ${task}

    \r\n\t\t
    `;\r\n }\r\n\r\n async function getData() {\r\n try {\r\n let {\r\n getPlanWorkflowWidgetDataResult: result,\r\n } = await WorkflowViewerAjax.getPlanWorkflowWidgetData($.session.PeopleId);\r\n return result;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const remainingDailyServicesWidget = (function () {\r\n var filter = {\r\n outcomeType: '%',\r\n location: '%',\r\n group: '%',\r\n date: null,\r\n };\r\n // DATA\r\n //-----------------------\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var goalsWidgetDate;\r\n var outcomeDropdown;\r\n var locationDropdown;\r\n var groupDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function populateFilteredList(res) {\r\n var consumers = {};\r\n var totalServices = 0;\r\n var totalConsumers = 0;\r\n\r\n res.forEach(function (consumer) {\r\n var fullName = consumer.last_name.trim() + ', ' + consumer.first_name;\r\n if (!consumers[fullName]) consumers[fullName] = 0;\r\n consumers[fullName]++;\r\n totalServices++;\r\n });\r\n\r\n var consumersSorted = {};\r\n Object.keys(consumers)\r\n .sort()\r\n .forEach(function (key) {\r\n consumersSorted[key] = consumers[key];\r\n });\r\n\r\n var list = document.getElementById('goalsUL');\r\n if (!list) return;\r\n list.innerHTML = '';\r\n\r\n var names = Object.keys(consumersSorted);\r\n names.forEach(function (name) {\r\n var li = document.createElement('LI');\r\n li.innerText = name + ' - ' + consumers[name];\r\n // li.classList.add('customLink')\r\n list.appendChild(li);\r\n // li.addEventListener(\"click\", event => {\r\n // let consumerid = 34275;\r\n // setActiveModuleSectionAttribute('outcomes');\r\n // actioncenter.dataset.activeModule = \"outcomes\"\r\n // UTIL.toggleMenuItemHighlight(\"outcomes\")\r\n // DOM.clearActionCenter();\r\n // DOM.scrollToTopOfPage();\r\n\r\n // outcomes.dashHandler(consumerid)\r\n //})\r\n totalConsumers++;\r\n });\r\n\r\n var consumerCount = document.getElementById('goalsConsumerCount');\r\n var serviceCount = document.getElementById('goalsCount');\r\n consumerCount.innerText = totalConsumers;\r\n serviceCount.innerText = totalServices;\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n var dateInput = input.build({\r\n id: 'goalsWidgetDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: goalsWidgetDate,\r\n });\r\n\r\n outcomeDropdown = dropdown.build({\r\n dropdownId: 'goalsWidgetOutcomes',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'goalsWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n groupDropdown = dropdown.build({\r\n dropdownId: 'goalsWidgetGroups',\r\n label: 'Group',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dateInput);\r\n filterPopup.appendChild(outcomeDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(groupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n // Set date filter to today\r\n date = document.getElementById('goalsWidgetDate');\r\n date.value = UTIL.getTodaysDate();\r\n goalsWidgetDate = date.value;\r\n filter.date = date.value;\r\n }\r\n\r\n function populateOutcomeTypesFilter(res) {\r\n var dataArr = res.map(function (data) {\r\n return {\r\n id: data.Id,\r\n value: data.Id,\r\n text: data.Description,\r\n };\r\n });\r\n\r\n var defaultOutcome = {\r\n id: '%',\r\n value: '%',\r\n text: 'ALL',\r\n };\r\n dataArr.unshift(defaultOutcome);\r\n\r\n if (!$.session.outcomesWidgetOutcomeTypeId)\r\n $.session.outcomesWidgetOutcomeTypeId = dataArr[0].value;\r\n if (!$.session.outcomesWidgetOutcomeTypeName)\r\n $.session.outcomesWidgetOutcomeTypeName = dataArr[0].text;\r\n\r\n dropdown.populate('goalsWidgetOutcomes', dataArr, $.session.outcomesWidgetOutcomeTypeId);\r\n }\r\n function populateLocationsFilter(res) {\r\n var dataArr = res.map(function (data) {\r\n return {\r\n value: data.ID,\r\n text: data.Name,\r\n };\r\n });\r\n\r\n var defaultLocation = {\r\n id: '%',\r\n value: '%',\r\n text: 'ALL',\r\n };\r\n dataArr.unshift(defaultLocation);\r\n\r\n if (!$.session.outcomeWidgetLocationId) $.session.outcomeWidgetLocationId = dataArr[0].value;\r\n if (!$.session.outcomeWidgetLocationName) $.session.outcomeWidgetLocationName = dataArr[0].text;\r\n\r\n dropdown.populate('goalsWidgetLocations', dataArr, $.session.outcomeWidgetLocationId);\r\n }\r\n function populateGroupsFilter(res) {\r\n var dataArr = res.map(function (data) {\r\n return {\r\n value: data.RetrieveID,\r\n text: data.GroupName,\r\n };\r\n });\r\n\r\n UTIL.findAndSlice(dataArr, 'Caseload', 'text');\r\n UTIL.findAndSlice(dataArr, 'Needs Attention', 'text');\r\n UTIL.findAndSlice(dataArr, 'Everyone', 'text');\r\n\r\n var defaultGroup = {\r\n id: '%',\r\n value: '%',\r\n text: 'EVERYONE',\r\n };\r\n dataArr.unshift(defaultGroup);\r\n\r\n if (!$.session.outcomesWidgetGroupId) $.session.outcomesWidgetGroupId = dataArr[0].value;\r\n if (!$.session.outcomesWidgetGroupName) $.session.outcomesWidgetGroupName = dataArr[0].text; \r\n if (dataArr.find(x => x.value == $.session.outcomesWidgetGroupId) == undefined) $.session.outcomesWidgetGroupId = '%';\r\n dropdown.populate('goalsWidgetGroups', dataArr, $.session.outcomesWidgetGroupId);\r\n }\r\n function eventSetup() {\r\n // for filter values\r\n var oldFilter = {\r\n outcomeType: null,\r\n location: null,\r\n group: null,\r\n date: null,\r\n };\r\n // for session variables\r\n var oldOutcomesWidgetGoalsDate;\r\n var oldOutcomesWidgetOutcomeTypeId;\r\n var oldOutcomesWidgetOutcomeTypeName;\r\n var oldOutcomeWidgetLocationId;\r\n var oldOutcomeWidgetLocationName;\r\n var oldOutcomesWidgetGroupId;\r\n var oldOutcomesWidgetGroupName;\r\n\r\n date.addEventListener('change', event => {\r\n var goalsDate = event.target.value;\r\n oldGoalsDate = goalsWidgetDate;\r\n goalsWidgetDate = goalsDate;\r\n filter.date = goalsWidgetDate;\r\n\r\n // cache old values\r\n oldOutcomesWidgetOutcomeTypeId = $.session.outcomesWidgetOutcomeTypeId;\r\n oldOutcomesWidgetOutcomeTypeName = $.session.outcomesWidgetOutcomeTypeName;\r\n oldOutcomeWidgetLocationId = $.session.outcomeWidgetLocationId;\r\n oldOutcomeWidgetLocationName = $.session.outcomeWidgetLocationName;\r\n oldOutcomesWidgetGroupId = $.session.outcomesWidgetGroupId;\r\n oldOutcomesWidgetGroupName = $.session.outcomesWidgetGroupName;\r\n\r\n //When changing the date - locations get reset, so also reset the ID and Name back to all - which is the default value\r\n OutcomesWidgetOutcomeTypeId = '%';\r\n OutcomesWidgetOutcomeTypeName = 'ALL';\r\n OutcomeWidgetLocationId = '%';\r\n OutcomeWidgetLocationName = 'ALL';\r\n OutcomesWidgetGroupId = '%';\r\n //OutcomesWidgetGroupCode = 'ALL';\r\n OutcomesWidgetGroupName = 'Everyone';\r\n\r\n //absentWidgetAjax.getLocationsForDashboardAbsent(populateAbsentWidgetLocations);\r\n //absentWidgetAjax.getConsumerGroupsForDashboardAbsent(absentWidgetLocationId, populateAbsentWidgetGroups);\r\n });\r\n\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldFilter.outcomeType = filter.outcomeType;\r\n filter.outcomeType =\r\n selectedOption.value === '%' ? '%' : UTIL.removeDecimals(selectedOption.value);\r\n //For remembering filter values\r\n oldOutcomesWidgetOutcomeTypeId = $.session.outcomesWidgetOutcomeTypeId;\r\n oldOutcomesWidgetOutcomeTypeName = $.session.outcomesWidgetOutcomeTypeName;\r\n $.session.outcomesWidgetOutcomeTypeId = selectedOption.value;\r\n $.session.outcomesWidgetOutcomeTypeName = selectedOption.text;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldFilter.location = filter.location;\r\n filter.location =\r\n selectedOption.value === '%' ? '%' : UTIL.removeDecimals(selectedOption.value);\r\n remainingDailyServicesWidgetAjax.populateGroupsFilter(selectedOption.value, function (groups) {\r\n populateGroupsFilter(groups); \r\n }); \r\n //remainingDailyServicesWidgetAjax.populateFilteredList('%', filter.location, '%')//MIke\r\n //For remembering filter values\r\n oldOutcomeWidgetLocationId = $.session.outcomeWidgetLocationId;\r\n oldOutcomeWidgetLocationName = $.session.outcomeWidgetLocationName;\r\n $.session.outcomeWidgetLocationId = selectedOption.value;\r\n $.session.outcomeWidgetLocationName = selectedOption.text;\r\n });\r\n groupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldFilter.group = filter.group;\r\n filter.group = selectedOption.value === '%' ? '%' : UTIL.removeDecimals(selectedOption.value);\r\n //For remembering filter values\r\n oldOutcomesWidgetGroupId = $.session.outcomesWidgetGroupId;\r\n oldOutcomesWidgetGroupName = $.session.outcomesWidgetGroupName;\r\n $.session.outcomesWidgetGroupId = selectedOption.value;\r\n $.session.outcomesWidgetGroupName = selectedOption.text;\r\n });\r\n applyFiltersBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n remainingDailyServicesWidgetAjax.populateFilteredList(\r\n filter.outcomeType,\r\n filter.location,\r\n filter.group,\r\n filter.date, // JMM goalsWidgetDate\r\n function (list) {\r\n populateFilteredList(list);\r\n displayFilteredBy();\r\n },\r\n );\r\n });\r\n cancelFilterBtn.addEventListener('click', () => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n // reset filter values\r\n filter.date = oldFilter.date;\r\n filter.outcomeType = oldFilter.outcomeType;\r\n filter.location = oldFilter.location;\r\n filter.group = oldFilter.group;\r\n // reset session variables\r\n goalsWidgetDate = oldGoalsDate;\r\n $.session.outcomesWidgetgoalsDate = oldOutcomesWidgetGoalsDate;\r\n $.session.outcomesWidgetOutcomeTypeId = oldOutcomesWidgetOutcomeTypeId;\r\n $.session.outcomesWidgetOutcomeTypeName = oldOutcomesWidgetOutcomeTypeName;\r\n $.session.outcomeWidgetLocationId = oldOutcomeWidgetLocationId;\r\n $.session.outcomeWidgetLocationName = oldOutcomeWidgetLocationName;\r\n $.session.outcomesWidgetGroupId = oldOutcomesWidgetGroupId;\r\n $.session.outcomesWidgetGroupName = oldOutcomesWidgetGroupName;\r\n });\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n var widgetBodyNav = widget.querySelector('.widget__body-nav');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, widgetBodyNav);\r\n }\r\n\r\n var splitDate = goalsWidgetDate.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(\r\n splitDate[2],\r\n )}/${splitDate[0].slice(2, 4)}`;\r\n\r\n $.session.outcomesWidgetgoalsDate = goalsWidgetDate;\r\n filter.date = goalsWidgetDate;\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Date: ${filteredDate}

    \r\n

    Outcome: ${$.session.outcomesWidgetOutcomeTypeName}

    \r\n

    Location: ${$.session.outcomeWidgetLocationName}

    \r\n

    Group: ${$.session.outcomesWidgetGroupName}

    \r\n
    `;\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashgoalswidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n // append filter button\r\n dashboard.appendFilterButton('dashgoalswidget', 'goalsFilterBtn');\r\n\r\n if ($.session.outcomesWidgetOutcomeTypeId)\r\n filter.outcomeType = $.session.outcomesWidgetOutcomeTypeId;\r\n if ($.session.outcomeWidgetLocationId) filter.location = $.session.outcomeWidgetLocationId;\r\n if ($.session.outcomesWidgetGroupId) filter.group = $.session.outcomesWidgetGroupId;\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n remainingDailyServicesWidgetAjax.populateOutcomeTypesFilter(function (outcomes) {\r\n remainingDailyServicesWidgetAjax.populateLocationsFilter(function (locations) {\r\n remainingDailyServicesWidgetAjax.populateGroupsFilter(filter.location, function (groups) {\r\n remainingDailyServicesWidgetAjax.populateFilteredList(\r\n filter.outcomeType,\r\n filter.location,\r\n filter.group,\r\n filter.date,\r\n function (list) {\r\n populateOutcomeTypesFilter(outcomes);\r\n populateLocationsFilter(locations);\r\n populateGroupsFilter(groups);\r\n populateFilteredList(list);\r\n displayFilteredBy();\r\n },\r\n );\r\n });\r\n });\r\n });\r\n }\r\n\r\n return {\r\n filter: filter,\r\n populateOutcomeTypesFilter: populateOutcomeTypesFilter,\r\n populateLocationsFilter: populateLocationsFilter,\r\n populateGroupsFilter: populateGroupsFilter,\r\n populateFilteredList: populateFilteredList,\r\n init: init,\r\n };\r\n})();\r\n\r\n// $.session.outcomesWidgetOutcomeTypeName -All\r\n// $.session.outcomesWidgetLocationName -All\r\n// $.session.outcomesWidgetGroupName -Everyone\r\n","var remainingDailyServicesWidgetAjax = (function() {\r\n\tfunction makeAjaxCall(url, successFunction, outcomeType, locationId, group, checkDate) {\r\n\t\tvar todaydate = UTIL.getTodaysDate();\r\n\t\tvar data = {};\r\n\t\tdata.token = $.session.Token;\r\n\t\tif ($.session.outcomesWidgetOutcomeTypeId != undefined) {\r\n\t\t\tdata.outcomeType = $.session.outcomesWidgetOutcomeTypeId;\r\n\t\t} else {\r\n\t\t\tdata.outcomeType = outcomeType ? outcomeType : '%';\r\n\t\t}\r\n\t\tif ($.session.outcomesWidgetLocationId != undefined) {\r\n\t\t\tdata.locationId = $.session.outcomesWidgetLocationId;\r\n\t\t} else {\r\n\t\t\tdata.locationId = locationId ? locationId : '%';\r\n\t\t}\r\n\t\tif ($.session.outcomesWidgetGroupId != undefined) {\r\n\t\t\tdata.group = $.session.outcomesWidgetGroupId;\r\n\t\t} else {\r\n\t\t\tdata.group = group ? group : '%';\r\n\t\t}\r\n\r\n \t\tif (checkDate != null) {\r\n\t\t\tdata.checkDate = checkDate\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata.checkDate = todaydate;\r\n\t\t}\r\n \r\n\r\n\t\t// data.checkDate = \"2020-03-26\"\r\n\r\n\t/* \tif ($.session.outcomesWidgetgoalsDate != null) {\r\n\t\t\tdata.checkDate = $.session.outcomesWidgetgoalsDate;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdata.checkDate = checkDate ? checkDate : todaydate;\r\n\t\t}\r\n */\r\n \r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/' + url + '/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: successFunction,\r\n\t\t});\r\n\t}\r\n\t// Gets data for outcome types filter\r\n\tfunction populateOutcomeTypesFilter(callback) {\r\n\t\tmakeAjaxCall(\r\n\t\t\t'populateOutcomeTypesRemainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.populateOutcomeTypesRemainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull\r\n\t\t);\r\n\t}\r\n\t// Gets data for locations filter\r\n\tfunction populateLocationsFilter(callback) {\r\n\t\tmakeAjaxCall(\r\n\t\t\t'populateLocationsRemainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.populateLocationsRemainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull\r\n\t\t);\r\n\t}\r\n\t// Gets data for groups filter homeajax 310\r\n\tfunction populateGroupsFilter(locationId, callback) {\r\n\t\tmakeAjaxCall(\r\n\t\t\t'populateGroupsRemainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.populateGroupsRemainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\tnull,\r\n\t\t\tlocationId,\r\n\t\t\tnull,\r\n\t\t\tnull\r\n\t\t);\r\n\t}\r\n\t// Gets List of Consumers based off filtering\r\n\tfunction populateFilteredList(outcomeType, locationId, group, checkDate, callback) {\r\n\t\t//populateGroupsFilter(locationId);\r\n\t\tmakeAjaxCall(\r\n\t\t\t'remainingServicesWidgetFilter',\r\n\t\t\tfunction(response, status, xhr) {\r\n\t\t\t\tvar res = response.remainingServicesWidgetFilterResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\toutcomeType,\r\n\t\t\tlocationId,\r\n\t\t\tgroup,\r\n\t\t\tcheckDate\r\n\t\t);\r\n\t}\r\n\r\n\treturn {\r\n\t\tpopulateOutcomeTypesFilter: populateOutcomeTypesFilter,\r\n\t\tpopulateLocationsFilter: populateLocationsFilter,\r\n\t\tpopulateGroupsFilter: populateGroupsFilter,\r\n\t\tpopulateFilteredList: populateFilteredList,\r\n\t};\r\n})();\r\n","// Widget id = 20\r\nconst rosterToDoListWidget = (function () {\r\n // Data\r\n let rosterWorkflows, widgetSettings;\r\n let widget, widgetBody, planTasks;\r\n let filterPopup;\r\n let consumers = [],\r\n tasks = [];\r\n let filter = {\r\n dueDateRange: 'today',\r\n dueDateFrom: UTIL.getTodaysDate(),\r\n dueDateTo: UTIL.getTodaysDate(),\r\n consumer: 'all',\r\n task: 'all',\r\n };\r\n\r\n async function init() {\r\n widget = document.getElementById('rosterToDoList'); \r\n widgetBody = widget.querySelector('.widget__body');\r\n planTasks = widget.querySelector('#roster-workflow-tasks');\r\n widgetSettings = dashboard.getWidgetSettings('20');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('rosterToDoList', 'rosterToDoFilterBtn');\r\n let data = await getData();\r\n rosterWorkflows = data;\r\n\r\n consumers = Object.values(\r\n rosterWorkflows.reduce(\r\n (\r\n acc,\r\n { consumerId, consumerLastName, consumerFirstName, consumerMiddleName, ...wf },\r\n ) => {\r\n if (!acc[consumerId]) {\r\n acc[consumerId] = {\r\n consumerId,\r\n consumerFullName: `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName}`,\r\n };\r\n }\r\n\r\n return acc;\r\n },\r\n {},\r\n ),\r\n );\r\n\r\n consumers.sort((a, b) => {\r\n const textA = a.consumerFullName.toUpperCase();\r\n const textB = b.consumerFullName.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n tasks = [...new Set(rosterWorkflows.map(c => c.workflowStepDescription))];\r\n setFilterDueDates(widgetSettings.widgetConfig.dueDate);\r\n applyFilter(filter);\r\n buildFilterPopup();\r\n }\r\n\r\n function setFilterDueDates(dateRangeText) {\r\n let today = UTIL.getTodaysDate(true);\r\n let dueDates = {};\r\n switch (dateRangeText.toUpperCase()) {\r\n case 'TODAY':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 7 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'NEXT 30 DAYS':\r\n dueDates = {\r\n from: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(dates.addDays(today, 30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 7 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -7), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n case 'PRIOR 30 DAYS':\r\n dueDates = {\r\n from: moment(dates.addDays(today, -30), 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n to: moment(today, 'YYYY-MM-DD').format('YYYY-MM-DD'),\r\n };\r\n break;\r\n default:\r\n dueDates = {\r\n from: filter.dueDateFrom,\r\n to: filter.dueDateTo,\r\n };\r\n break;\r\n }\r\n filter = {\r\n dueDateRange: dateRangeText.toLowerCase(),\r\n dueDateFrom: dueDates.from,\r\n dueDateTo: dueDates.to,\r\n consumer: filter.consumer,\r\n task: filter.task,\r\n };\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n dueDate: filter.dueDateRange,\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 20,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function populatePlanWorkflowWidget(data) {\r\n if (!widget) return;\r\n planTasks.innerHTML = '';\r\n if (data.length === 0) {\r\n planTasks.innerHTML = `No tasks are currently due`;\r\n } else {\r\n buildHtmlFromData(planTasks, data);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n let widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n filterPopup = dashboard.buildFilterPopup();\r\n const showCustomDates = show => {\r\n if (show) {\r\n fromDateInput.classList.remove('hidden');\r\n toDateInput.classList.remove('hidden');\r\n } else {\r\n if (fromDateInput.classList.contains('hidden')) return; // don't add it again\r\n fromDateInput.classList.add('hidden');\r\n toDateInput.classList.add('hidden');\r\n }\r\n };\r\n\r\n let dueDateDropDownValue = filter.dueDateRange;\r\n let fromDateInputValue = filter.dueDateFrom;\r\n let toDateInputValue = filter.dueDateTo;\r\n let consumersDropDownValue = filter.consumer;\r\n let tasksDropDownValue = filter.task;\r\n\r\n let dueDateDropDown = dropdown.build({\r\n id: 'planToDoWidgetDueDates',\r\n label: 'Due Date Range',\r\n type: 'date',\r\n style: 'secondary',\r\n });\r\n\r\n let fromDateInput = input.build({\r\n id: 'planToDoWidgetFromDate',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: fromDateInputValue,\r\n });\r\n\r\n let toDateInput = input.build({\r\n id: 'planToDoWidgetToDate',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: toDateInputValue,\r\n });\r\n\r\n let consumersDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetConsumers',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let tasksDropdown = dropdown.build({\r\n dropdownId: 'planToDoWidgetTasks',\r\n label: 'Task',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n let applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n let cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(dueDateDropDown);\r\n filterPopup.appendChild(fromDateInput);\r\n filterPopup.appendChild(toDateInput);\r\n filterPopup.appendChild(consumersDropdown);\r\n filterPopup.appendChild(tasksDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n const dueDateRangeDropDownData = [\r\n {\r\n id: 1,\r\n value: 'custom',\r\n text: 'Custom',\r\n },\r\n {\r\n id: 2,\r\n value: 'today',\r\n text: 'Today',\r\n },\r\n {\r\n id: 3,\r\n value: 'next 7 days',\r\n text: 'Next 7 Days',\r\n },\r\n {\r\n id: 4,\r\n value: 'next 30 days',\r\n text: 'Next 30 Days',\r\n },\r\n {\r\n id: 5,\r\n value: 'prior 7 days',\r\n text: 'Prior 7 Days',\r\n },\r\n {\r\n id: 6,\r\n value: 'prior 30 days',\r\n text: 'Prior 30 Days',\r\n },\r\n ];\r\n dropdown.populate(dueDateDropDown, dueDateRangeDropDownData, dueDateDropDownValue);\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n\r\n const consumerDropdownData = consumers.map(c => {\r\n return {\r\n id: c.consumerId,\r\n value: c.consumerId,\r\n text: c.consumerFullName,\r\n };\r\n });\r\n consumerDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(consumersDropdown, consumerDropdownData, consumersDropDownValue);\r\n\r\n const taskDropdownData = tasks.map((t, i) => {\r\n return {\r\n id: i,\r\n value: t,\r\n text: t,\r\n };\r\n });\r\n taskDropdownData.sort((a, b) =>\r\n a.value.toUpperCase() < b.value.toUpperCase() ? -1 : 1,\r\n );\r\n taskDropdownData.unshift({ id: 0, value: 'all', text: 'ALL' }); //ADD ALL value\r\n dropdown.populate(tasksDropdown, taskDropdownData, tasksDropDownValue);\r\n\r\n // event listeners\r\n dueDateDropDown.addEventListener('change', e => {\r\n dueDateDropDownValue = e.target.value;\r\n showCustomDates(dueDateDropDownValue.toUpperCase() === 'CUSTOM');\r\n setFilterDueDates(dueDateDropDownValue.toUpperCase());\r\n fromDateInputValue = filter.dueDateFrom;\r\n toDateInputValue = filter.dueDateTo;\r\n });\r\n\r\n fromDateInput.addEventListener('change', e => {\r\n fromDateInputValue = e.target.value;\r\n });\r\n\r\n toDateInput.addEventListener('change', e => {\r\n toDateInputValue = e.target.value;\r\n });\r\n\r\n consumersDropdown.addEventListener('change', e => {\r\n consumersDropDownValue = e.target.value;\r\n });\r\n\r\n tasksDropdown.addEventListener('change', e => {\r\n tasksDropDownValue = e.target.value;\r\n });\r\n\r\n applyFiltersBtn.addEventListener('click', e => {\r\n filter = {\r\n dueDateRange: dueDateDropDownValue,\r\n dueDateFrom: fromDateInputValue,\r\n dueDateTo: toDateInputValue,\r\n consumer: consumersDropDownValue,\r\n task: tasksDropDownValue,\r\n };\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n applyFilter(filter);\r\n });\r\n\r\n cancelFilterBtn.addEventListener('click', e => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n const applyFilter = filter => {\r\n let fromDate = Date.parse(filter.dueDateFrom);\r\n let toDate = Date.parse(filter.dueDateTo);\r\n let filteredData = rosterWorkflows.filter(p => {\r\n let dueDate = Date.parse(p.workflowStepDueDate);\r\n return dueDate >= fromDate && dueDate <= toDate; // filter by dates\r\n });\r\n filteredData =\r\n filter.consumer.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.consumerId === filter.consumer; // filter by consumer\r\n });\r\n filteredData =\r\n filter.task.toUpperCase() === 'ALL'\r\n ? filteredData\r\n : filteredData.filter(d => {\r\n return d.workflowStepDescription === filter.task; // filter by task\r\n });\r\n populatePlanWorkflowWidget(filteredData);\r\n displayFilteredBy();\r\n };\r\n\r\n function buildHtmlFromData(parent, data) {\r\n const buildPlanWorkflowHTML = (parent, plans) => {\r\n const buildWorkflowStepHTML = (consumer, workflowName, step, dueDate) => {\r\n let stepHTML = document.createElement('div');\r\n\r\n stepHTML.setAttribute(\r\n 'style',\r\n 'display: flex; flex-wrap: nowrap; padding-bottom: 5px; cursor: pointer',\r\n );\r\n\r\n stepHTML.innerHTML = `\r\n\t\t\t\t\t
    - ${step}
    \r\n\t\t\t\t\t
    ${dueDate ? dueDate.split(' ')[0] : ''\r\n }
    \r\n\t\t\t\t`;\r\n stepHTML.addEventListener('click', e => {\r\n //plan.dashHandler(consumer, workflowName, stepId);\r\n });\r\n return stepHTML;\r\n };\r\n\r\n if (plans.length > 0) {\r\n let planTypeContainerHtml = document.createElement('div');\r\n planTypeContainerHtml.setAttribute('style', 'display: flex; flex-wrap: nowrap;');\r\n\r\n let planTypeHtml = document.createElement('div');\r\n planTypeHtml.setAttribute('style', 'display: flex; font-weight: 500;');\r\n planTypeHtml.innerHTML = `\r\n\t\t\t\t\t${plans[0].workflowName} \r\n\t\t\t\t`;\r\n\r\n let dueDateLabelHtml = document.createElement('div');\r\n dueDateLabelHtml.setAttribute(\r\n 'style',\r\n 'display: flex; margin-left: auto; text-align: right; font-weight: 500;',\r\n );\r\n dueDateLabelHtml.innerHTML = 'Due Date';\r\n\r\n planTypeContainerHtml.appendChild(planTypeHtml);\r\n planTypeContainerHtml.appendChild(dueDateLabelHtml);\r\n parent.appendChild(planTypeContainerHtml);\r\n\r\n for (record in plans) {\r\n let {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName, \r\n responsiblePartyId,\r\n workflowStepId,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n workflowName,\r\n ...rest\r\n } = plans[record];\r\n let consumerPlanInfo = document.createElement('div');\r\n consumerPlanInfo.setAttribute(\r\n 'style',\r\n 'font-weight: bold; padding-bottom: 5px;',\r\n );\r\n consumerPlanInfo.innerHTML = `${consumerLastName}, ${consumerFirstName} ${consumerMiddleName}`;\r\n parent.appendChild(consumerPlanInfo); \r\n parent.appendChild(\r\n buildWorkflowStepHTML(\r\n {\r\n consumer: {\r\n consumerId,\r\n consumerFirstName,\r\n consumerLastName,\r\n consumerMiddleName,\r\n },\r\n },\r\n workflowName,\r\n workflowStepDescription,\r\n workflowStepDueDate,\r\n ),\r\n );\r\n }\r\n return parent;\r\n }\r\n };\r\n if (data.length > 0) buildPlanWorkflowHTML(parent, data);\r\n return parent;\r\n }\r\n\r\n function displayFilteredBy() {\r\n let filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, planTasks);\r\n }\r\n\r\n const dueDateRange = filter.dueDateRange.toUpperCase();\r\n const dueDateFrom = moment(filter.dueDateFrom, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const dueDateTo = moment(filter.dueDateTo, 'YYYY-MM-DD').format('M/D/YYYY');\r\n const filterConsumerBy = filter.consumer.toUpperCase();\r\n const task = filter.task.toUpperCase();\r\n\r\n const getFilteredConsumer = () => {\r\n return consumers.find(c => {\r\n return c.consumerId === filter.consumer;\r\n });\r\n };\r\n\r\n // console.log(consumers, \" consumer: \", filter.consumer);\r\n filteredBy.innerHTML = `
    \r\n\t\t

    Due Date: ${dueDateRange === 'CUSTOM' ? `${dueDateFrom} - ${dueDateTo}` : dueDateRange\r\n }

    \r\n\t\t

    Consumer: ${filterConsumerBy === 'ALL' ? 'ALL' : getFilteredConsumer().consumerFullName\r\n }

    \r\n\t\t

    Task: ${task}

    \r\n\t\t
    `;\r\n }\r\n\r\n async function getData() {\r\n try {\r\n let {\r\n getRosterToDoListWidgetDataResult: result,\r\n } = await rosterToDoListWidgetAjax.getRosterToDoListWidgetData($.session.PeopleId);\r\n return result;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var rosterToDoListWidgetAjax = (function () {\r\n\r\n async function getRosterToDoListWidgetData(peopleId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRosterToDoListWidgetData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n responsiblePartyId: peopleId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getRosterToDoListWidgetData,\r\n };\r\n})();\r\n","const signatureWidget = (function () {\r\n let missingSignatureData;\r\n let locationDropdownData;\r\n let groupDropdownData;\r\n // cached data\r\n let signaturePlanStatus;\r\n let signatureWidgetGroupId;\r\n let signatureWidgetGroupName;\r\n let signatureWidgetGroupCode;\r\n let signatureWidgetLocationId;\r\n let signatureWidgetLocationName;\r\n // DOM\r\n //-----------------------\r\n let widget;\r\n let widgetBody;\r\n let missingSignaturesList;\r\n let filterPopup;\r\n let applyFiltersBtn;\r\n let cancelFilterBtn;\r\n let planStatusDropdown;\r\n let locationDropdown;\r\n let groupDropdown;\r\n\r\n function populatePlanStatusDropdown() {\r\n var data = [\r\n { value: '%', text: 'All' },\r\n { value: 'D', text: 'Draft' },\r\n { value: 'C', text: 'Complete' },\r\n ];\r\n\r\n dropdown.populate(planStatusDropdown, data, signaturePlanStatus);\r\n }\r\n function populateLocationDropdown(locData) {\r\n locData = locData ? locData : locationDropdownData;\r\n\r\n const dropdownData = locData.map(data => {\r\n return {\r\n value: data.ID,\r\n text: data.Name,\r\n };\r\n });\r\n\r\n const defaultLocation = {\r\n id: '%',\r\n value: '%',\r\n text: 'ALL',\r\n };\r\n dropdownData.unshift(defaultLocation);\r\n\r\n dropdown.populate(locationDropdown, dropdownData, signatureWidgetLocationId);\r\n }\r\n function populateGroupDropdown(groupData) {\r\n groupData = groupData ? groupData : groupDropdownData;\r\n\r\n const dropdownData = groupData.map(function (data) {\r\n return {\r\n //value: data.RetrieveID,\r\n value: data.GroupCode,\r\n text: data.GroupName,\r\n };\r\n });\r\n\r\n // UTIL.findAndSlice(dropdownData, 'Caseload', 'text');\r\n // UTIL.findAndSlice(dropdownData, 'Needs Attention', 'text');\r\n // UTIL.findAndSlice(dropdownData, 'Everyone', 'text');\r\n\r\n // const defaultGroup = {\r\n // id: '%',\r\n // value: '%',\r\n // text: 'EVERYONE',\r\n // };\r\n // dropdownData.unshift(defaultGroup);\r\n\r\n dropdown.populate(groupDropdown, dropdownData, signatureWidgetGroupCode);\r\n }\r\n\r\n function splitName(fullName) {\r\n const [last, first] = fullName.split(', ');\r\n return { first, last };\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n planStatusDropdown = dropdown.build({\r\n dropdownId: 'missingSignaturesPlanStatus',\r\n label: 'Plan Status',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'missingSignaturesLocation',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n // groupDropdown = dropdown.build({\r\n // dropdownId: 'missingSignaturesGroup',\r\n // label: 'Group',\r\n // style: 'secondary',\r\n // readonly: false,\r\n // });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(planStatusDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n //filterPopup.appendChild(groupDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n\r\n populatePlanStatusDropdown();\r\n }\r\n function eventSetup() {\r\n let oldSignaturePlanStatus;\r\n let oldSignatureWidgetGroupId;\r\n let oldSignatureWidgetGroupName;\r\n let oldSignatureWidgetGroupCode;\r\n let oldSignatureWidgetLocationId;\r\n let oldSignatureWidgetLocationName;\r\n\r\n planStatusDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache\r\n oldSignaturePlanStatus = signaturePlanStatus;\r\n // update\r\n signaturePlanStatus = selectedOption.value;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n // cache\r\n oldSignatureWidgetLocationId = signatureWidgetLocationId;\r\n oldSignatureWidgetLocationName = signatureWidgetLocationName;\r\n // update\r\n signatureWidgetLocationId = selectedOption.value;\r\n signatureWidgetLocationName = selectedOption.innerHTML;\r\n });\r\n // groupDropdown.addEventListener('change', event => {\r\n // const selectedOption = event.target.options[event.target.selectedIndex];\r\n // // cache\r\n // oldSignatureWidgetGroupId = signatureWidgetGroupId;\r\n // oldSignatureWidgetGroupCode = signatureWidgetGroupCode;\r\n // oldSignatureWidgetGroupName = signatureWidgetGroupName;\r\n // // update\r\n // signatureWidgetGroupId = selectedOption.value;\r\n // signatureWidgetGroupCode = selectedOption.id;\r\n // signatureWidgetGroupName = selectedOption.innerHTML;\r\n // });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n filteredSignatures = missingSignatureData.filter(ms => {\r\n return (\r\n (ms.planStatus === signaturePlanStatus || signaturePlanStatus === '%') &&\r\n (ms.locationId.includes(signatureWidgetLocationId) || signatureWidgetLocationId === '%')\r\n );\r\n });\r\n populateMissingSignatures(filteredSignatures);\r\n displayFilteredBy();\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n signaturePlanStatus = oldSignaturePlanStatus;\r\n signatureWidgetGroupId = oldSignatureWidgetGroupId;\r\n signatureWidgetGroupName = oldSignatureWidgetGroupName;\r\n signatureWidgetGroupCode = oldSignatureWidgetGroupCode;\r\n });\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, missingSignaturesList);\r\n }\r\n\r\n const statusName =\r\n signaturePlanStatus === '%' ? 'All' : signaturePlanStatus === 'D' ? 'Draft' : 'Complete';\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Plan Status: ${statusName}

    \r\n

    Location: ${signatureWidgetLocationName}

    \r\n \r\n
    `;\r\n }\r\n\r\n function populateMissingSignatures(data) {\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Individual', 'PY Start Date', 'Plan Type'],\r\n tableId: 'missingSignaturesWidgetTable',\r\n };\r\n\r\n const tableData = [];\r\n\r\n data.sort((a, b) => {\r\n const aname = splitName(a.individual);\r\n const bname = splitName(b.individual);\r\n\r\n if (aname.last !== bname.last) {\r\n return aname.last.localeCompare(bname.last);\r\n }\r\n if (aname.first !== bname.first) {\r\n return aname.first.localeCompare(bname.first);\r\n }\r\n const aDate = new Date(a.planYearStart).getTime();\r\n const bDate = new Date(b.planYearStart).getTime();\r\n return aDate < bDate ? -1 : 1;\r\n });\r\n data.forEach(d => {\r\n //if (\r\n // (d.planStatus === signaturePlanStatus || signaturePlanStatus === '%') &&\r\n // (d.locationId.includes(signatureWidgetLocationId) || signatureWidgetLocationId === '%')\r\n //) {\r\n const type = d.planType === 'A' ? 'Annual' : 'Revision';\r\n const startDate = d.planYearStart.split(' ')[0];\r\n const endDate = d.planYearEnd.split(' ')[0];\r\n const effectiveStart = d.effectiveStart.split(' ')[0];\r\n const effectiveEnd = d.effectiveEnd.split(' ')[0];\r\n const reviewDate = d.reviewDate ? d.reviewDate.split(' ')[0] : 'n/a';\r\n const revisionNumber = d.revisionNumber ? d.revisionNumber : '';\r\n const locationID = d.locationId;\r\n\r\n const planType = d.planType === 'R' ? `${type} ${revisionNumber}` : type;\r\n\r\n const individual = d.individual;\r\n const { first, last } = splitName(individual);\r\n\r\n tableData.push({\r\n values: [individual, startDate, planType],\r\n onClick: async () => {\r\n if ($.session.applicationName === 'Advisor') {\r\n const newId = await planAjax.getConsumerPeopleIdAsync(d.consumerId);\r\n if (newId.length) {\r\n $.session.planPeopleId = newId[0].id;\r\n plan.setSelectedConsumer({\r\n id: $.session.planPeopleId,\r\n consumerId: d.consumerId,\r\n firstName: first,\r\n lastName: last,\r\n });\r\n } else {\r\n plan.setSelectedConsumer({\r\n id: d.consumerId,\r\n firstName: first,\r\n lastName: last,\r\n });\r\n }\r\n } else {\r\n plan.setSelectedConsumer({\r\n id: d.consumerId,\r\n firstName: first,\r\n lastName: last,\r\n });\r\n }\r\n\r\n plan.setPlanId(d.planID);\r\n plan.setPlanType(d.planType.toLowerCase());\r\n plan.setPlanStatus(d.planStatus);\r\n plan.setRevisionNumber(d.revisionNumber);\r\n plan.setPlanActiveStatus(d.activeStatus);\r\n\r\n planDates.setReviewPlanDates({\r\n startDate: new Date(startDate),\r\n endDate: new Date(endDate),\r\n effectiveStart: new Date(effectiveStart),\r\n effectiveEnd: new Date(effectiveEnd),\r\n reviewDate: new Date(reviewDate),\r\n });\r\n\r\n $.loadedApp = 'plan';\r\n setActiveModuleAttribute('plan');\r\n DOM.scrollToTopOfPage();\r\n //document.body.classList.add('planActive');\r\n //DOM.clearActionCenter();\r\n //setActiveModuleSectionAttribute('plan-questionsAndAnswers');\r\n UTIL.toggleMenuItemHighlight('plan');\r\n plan.buildPlanPage(['a']);\r\n },\r\n });\r\n //}\r\n });\r\n\r\n const sigTable = table.build(tableOptions);\r\n table.populate(sigTable, tableData);\r\n missingSignaturesList.innerHTML = '';\r\n missingSignaturesList.appendChild(sigTable);\r\n }\r\n\r\n function init() {\r\n // if (!signaturePlanStatus) signaturePlanStatus = '%';\r\n // if (!signatureWidgetGroupId) signatureWidgetGroupId = '0';\r\n // if (!signatureWidgetGroupName) signatureWidgetGroupName = 'Everyone';\r\n // if (!signatureWidgetGroupCode) signatureWidgetGroupCode = 'ALL';\r\n // if (!signatureWidgetLocationId) signatureWidgetLocationId = '%';\r\n // if (!signatureWidgetLocationName) signatureWidgetLocationName = 'ALL';\r\n signaturePlanStatus = '%';\r\n signatureWidgetGroupId = '0';\r\n signatureWidgetGroupName = 'Everyone';\r\n signatureWidgetGroupCode = 'ALL';\r\n signatureWidgetLocationId = '%';\r\n signatureWidgetLocationName = 'ALL';\r\n\r\n widget = document.getElementById('dashmissingsignatures');\r\n widgetBody = widget.querySelector('.widget__body');\r\n missingSignaturesList = document.querySelector('.missingSignatures');\r\n\r\n // append filter button\r\n dashboard.appendFilterButton('dashmissingsignatures', 'missingSignaturesFilterBtn');\r\n\r\n buildFilterPopup();\r\n displayFilteredBy();\r\n eventSetup();\r\n\r\n missingSignatureAjax.getMissingPlanSignatures({ token: $.session.Token }, async res => {\r\n missingSignatureData = res;\r\n populateMissingSignatures(missingSignatureData);\r\n locationDropdownData = await missingSignatureAjax.getLocationDropdownData();\r\n // groupDropdownData = await missingSignatureAjax.getGroupsDropdownData(\r\n // signatureWidgetLocationId,\r\n // );\r\n populateLocationDropdown(locationDropdownData);\r\n //populateGroupDropdown(groupDropdownData);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const missingSignatureAjax = (function () {\r\n function getMissingPlanSignatures(retrieveData, callback) {\r\n // This function is not async bc it needs to work with other\r\n // dashboard functions that are not async,\r\n // if you refactor this you refactor all\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getMissingPlanSignatures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getMissingPlanSignaturesResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n async function getLocationDropdownData() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateLocationsRemainingServicesWidgetFilter/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.populateLocationsRemainingServicesWidgetFilterResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getGroupsDropdownData(locationId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateGroupsRemainingServicesWidgetFilter/',\r\n data: JSON.stringify({ token: $.session.Token, locationId: locationId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.populateGroupsRemainingServicesWidgetFilterResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getMissingPlanSignatures,\r\n getLocationDropdownData,\r\n getGroupsDropdownData,\r\n };\r\n})();\r\n","var schedule = (function () {\r\n // DATA\r\n //-----------------------\r\n var locations = [];\r\n var weeks;\r\n var scheduleObj;\r\n // DOM\r\n //-----------------------\r\n var initialLoad;\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var weeksDropdown;\r\n var locationDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n // VALUES\r\n //-----------------------\r\n var totalHours;\r\n var selectedWeek;\r\n var selectedStart;\r\n var selectedEnd;\r\n\r\n function buildScheduleObj(results) {\r\n scheduleObj = {};\r\n results.forEach(r => {\r\n var location = r.location;\r\n var date = r.service_date.split(' ')[0];\r\n date = UTIL.formatDateToIso(date);\r\n var hours = r.difftime;\r\n var start = r.start_time;\r\n var end = r.end_time;\r\n var timeSpan = `${start} - ${end}`;\r\n var initials = r.initials.trim();\r\n\r\n if (locations.indexOf(location) === -1) {\r\n locations.push(location);\r\n }\r\n\r\n if (!scheduleObj[location]) {\r\n scheduleObj[location] = {};\r\n }\r\n if (!scheduleObj[location][date]) {\r\n scheduleObj[location][date] = {};\r\n }\r\n if (!scheduleObj[location][date][timeSpan]) {\r\n scheduleObj[location][date][timeSpan] = {\r\n initials: [],\r\n time: parseFloat(hours),\r\n };\r\n }\r\n if (initials !== '') {\r\n scheduleObj[location][date][timeSpan].initials.push(initials);\r\n }\r\n });\r\n if (results.length === 0) {\r\n scheduleObj = {};\r\n }\r\n }\r\n\r\n function populateSchedule(filterBy) {\r\n var filteredData = [];\r\n var dataByDate = {};\r\n totalHours = 0; //setting to 0 here so that it clears out when there is no schedule and so it doesn't keep getting appended to\r\n\r\n if (filterBy === 'All') {\r\n Object.keys(scheduleObj).forEach(key => {\r\n filteredData.push({\r\n data: scheduleObj[key],\r\n name: key,\r\n });\r\n });\r\n } else {\r\n filteredData.push({ data: scheduleObj[filterBy], name: filterBy });\r\n }\r\n\r\n if (filteredData.length !== 0 && filteredData[0].data !== undefined) {\r\n filteredData.forEach(d => {\r\n var locationDates = d.data;\r\n var locationName = d.name;\r\n Object.keys(locationDates).forEach(date => {\r\n var locationDateEvents = locationDates[date];\r\n if (!dataByDate[date]) {\r\n dataByDate[date] = {};\r\n }\r\n var timeKeys = Object.keys(d.data[date]);\r\n timeKeys.forEach(key => {\r\n totalHours = totalHours + d.data[date][key].time;\r\n });\r\n\r\n Object.keys(locationDateEvents)\r\n .sort()\r\n .forEach(event => {\r\n if (!dataByDate[date][event]) {\r\n dataByDate[date][event] = {};\r\n }\r\n\r\n dataByDate[date][event][locationName] = locationDateEvents[event];\r\n });\r\n });\r\n });\r\n }\r\n\r\n scheduleList.innerHTML = '';\r\n var divOne = document.createElement('div');\r\n divOne.classList.add('totalHours');\r\n divOne.innerHTML = `

    Total Hours - ${totalHours.toFixed(2)}

    `;\r\n var divTwo = document.createElement('div');\r\n divTwo.innerHTML = `

    Week of ${selectedWeek}

    `;\r\n divTwo.classList.add('weekOf');\r\n\r\n var dates = Object.keys(dataByDate);\r\n dates.sort();\r\n dates.forEach(date => {\r\n var fullDate = moment(date).format('dddd, MMMM D');\r\n var div = document.createElement('div');\r\n div.classList.add('scheduleRow');\r\n div.innerHTML = `

    ${fullDate}

    `;\r\n\r\n // get times for specified date\r\n var times = Object.keys(dataByDate[date]);\r\n times.sort().forEach(timeFrame => {\r\n var times = timeFrame.split(' - ');\r\n var start = times[0].split(':');\r\n var end = times[1].split(':');\r\n var startTime = moment().hour(parseInt(start[0], 10)).minute(parseInt(start[1], 10));\r\n var endTime = moment().hour(parseInt(end[0], 10)).minute(parseInt(end[1], 10));\r\n\r\n var locations = Object.keys(dataByDate[date][timeFrame]).sort();\r\n\r\n locations.forEach(location => {\r\n var initials = dataByDate[date][timeFrame][location].initials;\r\n initials = initials.length > 0 ? initials.join(', ') : '';\r\n\r\n div.innerHTML += `\r\n

    ${startTime.format('h:mma')} to ${endTime.format('h:mma')} - ${location}${\r\n initials !== '' ? ` - ${initials}` : ''\r\n }

    \r\n `;\r\n });\r\n });\r\n\r\n scheduleList.appendChild(div);\r\n });\r\n\r\n scheduleList.insertBefore(divOne, scheduleList.childNodes[0]);\r\n scheduleList.insertBefore(divTwo, scheduleList.childNodes[0]);\r\n\r\n // initialLoad = false;\r\n }\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n weeksDropdown = dropdown.build({\r\n dropdownId: 'dashboardScheduleWeekDropdown',\r\n label: 'Weeks',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'dashboardScheduleLocationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(weeksDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function eventSetup() {\r\n var oldSelectedWeek;\r\n var oldSelectedStart;\r\n var oldSelectedEnd;\r\n var oldMyscheduleWidgetLocationText;\r\n\r\n weeksDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var date = selectedOption.value.split(' - ');\r\n oldSelectedWeek = selectedWeek;\r\n oldSelectedStart = selectedStart;\r\n oldSelectedEnd = selectedEnd;\r\n selectedWeek = event.target.value;\r\n selectedStart = date[0];\r\n selectedEnd = date[1];\r\n });\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldMyscheduleWidgetLocationText = $.session.myscheduleWidgetLocationText;\r\n $.session.myscheduleWidgetLocationText = selectedOption.value;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n scheduleAjax.getSchedulingPeriodsDetailsAjax(\r\n {\r\n token: $.session.Token,\r\n startDate: UTIL.formatDateToIso(selectedStart),\r\n endDate: UTIL.formatDateToIso(selectedEnd),\r\n },\r\n function (results) {\r\n buildScheduleObj(results);\r\n populateLocationDropdown();\r\n displayFilteredBy();\r\n populateSchedule($.session.myscheduleWidgetLocationText);\r\n },\r\n );\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n $.session.myscheduleWidgetLocationText = oldMyscheduleWidgetLocationText;\r\n selectedWeek = oldSelectedWeek;\r\n selectedStart = oldSelectedStart;\r\n selectedEnd = oldSelectedEnd;\r\n });\r\n }\r\n function populateLocationDropdown() {\r\n var data = locations.map(location => {\r\n return {\r\n value: location,\r\n text: location,\r\n };\r\n });\r\n\r\n data.unshift({ value: 'All', text: 'All' });\r\n data.sort();\r\n\r\n if ($.session.myscheduleWidgetLocationText) {\r\n data = data.filter(d => d.value !== $.session.myscheduleWidgetLocationText);\r\n data.unshift({\r\n value: $.session.myscheduleWidgetLocationText,\r\n text: $.session.myscheduleWidgetLocationText,\r\n });\r\n } else {\r\n $.session.myscheduleWidgetLocationText = data[0].value;\r\n }\r\n\r\n dropdown.populate(\r\n 'dashboardScheduleLocationDropdown',\r\n data,\r\n $.session.myscheduleWidgetLocationText,\r\n );\r\n }\r\n function populateWeeksDropdown(results) {\r\n weeks = results;\r\n\r\n let defaultValue;\r\n\r\n var data = results.map(r => {\r\n if (r.currentWeek) {\r\n defaultValue = r.text;\r\n selectedWeek = r.text;\r\n selectedStart = r.start;\r\n selectedEnd = r.end;\r\n }\r\n\r\n return {\r\n value: r.text,\r\n text: r.text,\r\n };\r\n });\r\n\r\n if (!defaultValue) {\r\n selectedWeek = data[0].text;\r\n selectedStart = results[0].start;\r\n selectedEnd = results[0].end;\r\n }\r\n\r\n dropdown.populate('dashboardScheduleWeekDropdown', data, defaultValue);\r\n }\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.insertBefore(filteredBy, scheduleList);\r\n }\r\n\r\n var splitDate = selectedWeek.split('-');\r\n var start = splitDate[0].trim().split('/');\r\n var end = splitDate[1].trim().split('/');\r\n start = `${UTIL.leadingZero(start[0])}/${UTIL.leadingZero(start[1])}/${start[2].slice(2, 4)}`;\r\n end = `${UTIL.leadingZero(end[0])}/${UTIL.leadingZero(end[1])}/${end[2].slice(2, 4)}`;\r\n var filteredDate = `${start} - ${end}`;\r\n\r\n filteredBy.innerHTML = `
    \r\n

    Weeks: ${filteredDate}

    \r\n

    Location: ${$.session.myscheduleWidgetLocationText}

    \r\n
    `;\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashschedulewidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n scheduleList = document.getElementById('scheduleWorkedLists');\r\n\r\n if (!$.session.myscheduleWidgetLocationText) $.session.myscheduleWidgetLocationText = 'All';\r\n\r\n dashboard.appendFilterButton('dashschedulewidget', 'scheduleFilterBtn');\r\n\r\n buildFilterPopup();\r\n eventSetup();\r\n\r\n scheduleAjax.getSchedulingPeriodsAjax(function (results) {\r\n populateWeeksDropdown(results);\r\n\r\n scheduleAjax.getSchedulingPeriodsDetailsAjax(\r\n {\r\n token: $.session.Token,\r\n startDate: UTIL.formatDateToIso(selectedStart),\r\n endDate: UTIL.formatDateToIso(selectedEnd),\r\n },\r\n function (results) {\r\n buildScheduleObj(results);\r\n populateLocationDropdown();\r\n displayFilteredBy();\r\n populateSchedule($.session.myscheduleWidgetLocationText);\r\n },\r\n );\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var scheduleAjax = (function () {\r\n function getSchedulingPeriodsAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSchedulingPeriods/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSchedulingPeriodsResult;\r\n var data = res.map(r => {\r\n var start = r.start_date.split(' ')[0];\r\n var end = r.end_date.split(' ')[0];\r\n var text = `${start} - ${end}`;\r\n return {\r\n start,\r\n end,\r\n text,\r\n currentWeek: r.is_curr_date === '1' ? true : false,\r\n };\r\n });\r\n callback(data);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error);\r\n },\r\n });\r\n }\r\n\r\n function getSchedulingPeriodsDetailsAjax(filterData, callback) {\r\n //Filter data to include token, startDate, endDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSchedulingPeriodsDetails/',\r\n data: JSON.stringify(filterData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSchedulingPeriodsDetailsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getSchedulingPeriodsAjax,\r\n getSchedulingPeriodsDetailsAjax,\r\n };\r\n})();\r\n","var timeClock = (function() {\r\n\t// DOM elements\r\n\tvar widget;\r\n\tvar widgetResults;\r\n\tvar clockInOutBtn;\r\n\tvar rowdataPopup;\r\n\t// Data & Values\r\n\tvar currentLocationId;\r\n\tvar currentStartTime;\r\n\tvar currentEndTime;\r\n\r\n\tfunction giveInvalidTimeError() {\r\n\t\tvar timeError = document.createElement('p');\r\n\t\ttimeError.style.color = 'red';\r\n\t\ttimeError.innerHTML = $.session.timeClockError;\r\n\t\twidgetError.appendChild(timeError);\r\n\t\t$.session.timeClockError = '';\r\n\t}\r\n\tfunction punchClock(event) {\r\n\t\tvar btn = event.target;\r\n\t\tswitch (btn.dataset.clockAction) {\r\n\t\t\tcase 'in':\r\n\t\t\t\ttimeClockAjax.clockInStaff();\r\n\t\t\t\tbtn.innerHTML = 'Clock Out';\r\n\t\t\t\tbtn.setAttribute('data-clock-action', 'out');\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'out':\r\n\t\t\t\ttimeClockAjax.clockOutStaff();\r\n\t\t\t\tbtn.innerHTML = 'Clock In';\r\n\t\t\t\tbtn.setAttribute('data-clock-action', 'in');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tfunction updateStaffTimeClock(data) {\r\n\t\tvar updateKeys = [];\r\n\t\tvar newLocationData = data.newLocationData;\r\n\t\tvar newStartTimeData = data.newStartTimeData;\r\n\t\tvar newEndTimeData = data.newEndTimeData;\r\n\t\tvar currentStartTime = data.data.startTime;\r\n\t\tvar currentEndTime = data.data.stopTime;\r\n\t\tif (newLocationData) {\r\n\t\t\tvar newLocationId = newLocationData.loc;\r\n\r\n\t\t\tif (newLocationId !== currentLocationId) {\r\n\t\t\t\tif (newStartTimeData) newStartTimeData.loc = newLocationId;\r\n\t\t\t\tif (newEndTimeData) newEndTimeData.loc = newLocationId;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//if (newStartTimeData) newEndTimeData.orgTime = newStartTimeData.newTime;\r\n\r\n\t\tif (newLocationData) updateKeys.push('newLocationData');\r\n\t\tif (newStartTimeData) {\r\n\t\t\tif (currentEndTime && newStartTimeData.newTime > currentEndTime) {\r\n\t\t\t\t$.session.timeClockError = 'Invald Time';\r\n\t\t\t\tgiveInvalidTimeError();\r\n\t\t\t\t//return\r\n\t\t\t} else {\r\n\t\t\t\tupdateKeys.push('newStartTimeData');\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (newEndTimeData) {\r\n\t\t\tif (newEndTimeData.newTime < currentStartTime) {\r\n\t\t\t\t$.session.timeClockError = 'Invald Time';\r\n\t\t\t\tgiveInvalidTimeError();\r\n\t\t\t\t//return\r\n\t\t\t} else {\r\n\t\t\t\tupdateKeys.push('newEndTimeData');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tswitch (updateKeys.length) {\r\n\t\t\tcase 1: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 2: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[1]], () => {\r\n\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 3: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[1]], () => {\r\n\t\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[2]], () => {\r\n\t\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction populateLocationsDropdown(description) {\r\n\t\tvar defaultLocation;\r\n\t\t// prepare locations data for dropdown\r\n\t\tvar locations = $.session.locations\r\n\t\t\t.map((location, index) => {\r\n\t\t\t\tif (location === description) {\r\n\t\t\t\t\tdefaultLocation = {\r\n\t\t\t\t\t\tid: $.session.locationids[index],\r\n\t\t\t\t\t\tvalue: location,\r\n\t\t\t\t\t\ttext: location,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: $.session.locationids[index],\r\n\t\t\t\t\tvalue: location,\r\n\t\t\t\t\ttext: location,\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.filter(loc => {\r\n\t\t\t\treturn loc.value !== description;\r\n\t\t\t});\r\n\r\n\t\tlocations.unshift(defaultLocation);\r\n\r\n\t\tdropdown.populate('timeClockLocations', locations);\r\n\t}\r\n\tfunction displayRowData(data) {\r\n\t\treadOnly = false;\r\n\t\tcurrentLocationId = data.locationId;\r\n\t\tcurrentStartTime = data.startTime;\r\n\t\tcurrentEndTime = data.stopTime;\r\n\t\tvar newLocationData;\r\n\t\tvar newStartTimeData;\r\n\t\tvar newEndTimeData;\r\n\r\n\t\tvar rowId = data.rowId;\r\n var locationId = data.locationId;\r\n \r\n if ($.session.DenyStaffClockUpdate === true) {\r\n readOnly = true;\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n rowdataPopup = POPUP.build({ classNames: ['timeClockRowDetailsPopup']});\r\n\r\n\t\t// build popup inner html\r\n\t\tvar locationsDropdown = dropdown.build({\r\n\t\t\tdropdownId: 'timeClockLocations',\r\n\t\t\tlabel: 'Locations',\r\n\t\t\tstyle: 'secondary'\r\n\t\t});\r\n\t\tvar startTimeInput = input.build({\r\n\t\t\tid: 'timeClockStartTime',\r\n\t\t\tlabel: 'Start Time',\r\n\t\t\ttype: 'time',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\treadonly: readOnly,\r\n\t\t\tvalue: data.startTime,\r\n\t\t});\r\n\t\tvar endTimeInput = input.build({\r\n\t\t\tid: 'timeClockEndTime',\r\n\t\t\tlabel: 'End Time',\r\n\t\t\ttype: 'time',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\treadonly: readOnly,\r\n\t\t\tvalue: data.stopTime,\r\n\t\t});\r\n\t\tvar applyChanges = button.build({\r\n\t\t\ttext: 'Apply Changes',\r\n\t\t\tstyle: 'secondary',\r\n type: 'contained',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tPOPUP.hide(rowdataPopup);\r\n\t\t\t\tupdateStaffTimeClock({ newLocationData, newStartTimeData, newEndTimeData, data });\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar deleteEntry = button.build({\r\n\t\t\ttext: 'Delete Entry',\r\n\t\t\tstyle: 'secondary',\r\n type: 'contained',\r\n classNames: 'deleteTimeBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tshowTimeClockDeleteWarning(data);\r\n\t\t\t},\r\n });\r\n \r\n\t\tvar timeWrap = document.createElement('div');\r\n\t\ttimeWrap.classList.add('timeWrap');\r\n\t\ttimeWrap.appendChild(startTimeInput);\r\n timeWrap.appendChild(endTimeInput);\r\n \r\n var btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(applyChanges);\r\n btnWrap.appendChild(deleteEntry);\r\n\r\n\r\n\t\trowdataPopup.appendChild(locationsDropdown);\r\n\t\trowdataPopup.appendChild(timeWrap);\r\n\t\trowdataPopup.appendChild(btnWrap);\r\n\r\n\t\tPOPUP.show(rowdataPopup);\r\n\t\tpopulateLocationsDropdown(data.description);\r\n\r\n\t\t// popup events\r\n\t\tfunction showTimeClockDeleteWarning(data) {\r\n\t\t\tPOPUP.hide(rowdataPopup);\r\n\t\t\tvar timeClockDeleteWarningPop = POPUP.build({\r\n\t\t\t\theader: 'Are you sure you want to delete this entry?',\r\n\t\t\t});\r\n\r\n\t\t\tvar btnWrap = document.createElement('div');\r\n\t\t\tbtnWrap.classList.add('btnWrap');\r\n\t\t\tvar yesBtn = button.build({\r\n\t\t\t\ttext: 'Yes',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function() {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tloc: locationId,\r\n\t\t\t\t\t\t\torgTime: data.startTime,\r\n\t\t\t\t\t\t\tnewTime: data.startTime,\r\n\t\t\t\t\t\t\tisStartTime: 3,\r\n\t\t\t\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t\tPOPUP.hide(timeClockDeleteWarningPop);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tvar noBtn = button.build({\r\n\t\t\t\ttext: 'No',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function() {\r\n\t\t\t\t\tPOPUP.hide(timeClockDeleteWarningPop);\r\n\t\t\t\t\tPOPUP.show(rowdataPopup);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tbtnWrap.appendChild(yesBtn);\r\n\t\t\tbtnWrap.appendChild(noBtn);\r\n\t\t\ttimeClockDeleteWarningPop.appendChild(btnWrap);\r\n\r\n\t\t\tPOPUP.show(timeClockDeleteWarningPop);\r\n\t\t}\r\n\r\n\t\tlocationsDropdown.addEventListener('change', event => {\r\n\t\t\tvar selectedOption = event.target.options[event.target.selectedIndex];\r\n\t\t\tnewLocationData = {\r\n\t\t\t\tloc: selectedOption.id,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: data.startTime,\r\n\t\t\t\tisStartTime: 2,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t\tstartTimeInput.addEventListener('change', event => {\r\n\t\t\tnewStartTimeData = {\r\n\t\t\t\tloc: data.locationId,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: `${event.target.value}:00`,\r\n\t\t\t\tisStartTime: 0,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t\tendTimeInput.addEventListener('change', event => {\r\n\t\t\tnewEndTimeData = {\r\n\t\t\t\tloc: data.locationId,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: `${event.target.value}:00`,\r\n\t\t\t\tisStartTime: 1,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\tfunction processStaffActivity(results) {\r\n\t\tvar lastClockOutTime;\r\n widgetResults.innerHTML = '';\r\n widgetError.innerHTML = '';\r\n\t\tif ($.session.timeClockError) giveInvalidTimeError();\r\n\t\tresults.forEach((r, index) => {\r\n\t\t\tvar staffId = r.Staff_ID;\r\n\t\t\tvar locationId = r.Location_ID;\r\n\t\t\tvar locationCode = r.location_code;\r\n\t\t\tvar startTime = r.Start_Time === '23:59:59' ? '00:00:00' : r.Start_Time;\r\n\t\t\tvar stopTime = r.Stop_Time === '23:59:59' ? '00:00:00' : r.Stop_Time;\r\n\t\t\tvar serviceDate = r.Service_Date.split(' ')[0];\r\n\t\t\tvar description = r.Description;\r\n\r\n\t\t\tvar resultsRow = document.createElement('div');\r\n\t\t\tresultsRow.classList.add('results-row');\r\n\t\t\tresultsRow.setAttribute('data-row-id', index);\r\n\t\t\tresultsRow.innerHTML = `\r\n
    ${description}
    \r\n
    ${UTIL.convertFromMilitary(startTime)}
    \r\n
    ${UTIL.convertFromMilitary(stopTime)}
    \r\n `;\r\n\r\n\t\t\twidgetResults.appendChild(resultsRow);\r\n\r\n\t\t\tresultsRow.addEventListener('click', function() {\r\n\t\t\t\tdisplayRowData({\r\n\t\t\t\t\tstaffId,\r\n\t\t\t\t\tlocationId,\r\n\t\t\t\t\tlocationCode,\r\n\t\t\t\t\tdescription,\r\n\t\t\t\t\tserviceDate,\r\n\t\t\t\t\tstartTime,\r\n\t\t\t\t\tstopTime,\r\n\t\t\t\t\trowId: index,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tlastClockOutTime = stopTime;\r\n\t\t});\r\n\r\n\t\tif (lastClockOutTime !== '') {\r\n\t\t\tclockInOutBtn.innerHTML = 'Clock In';\r\n\t\t\tclockInOutBtn.setAttribute('data-clock-action', 'in');\r\n\t\t} else {\r\n\t\t\tclockInOutBtn.innerHTML = 'Clock Out';\r\n\t\t\tclockInOutBtn.setAttribute('data-clock-action', 'out');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction init() {\r\n widget = document.getElementById('dashtimeclockwidget');\r\n widgetError = widget.querySelector('.overlapError');\r\n\t\twidgetResults = widget.querySelector('.widget__results');\r\n\t\tclockInOutBtn = widget.querySelector('.clockInOutBtn');\r\n\r\n\t\tclockInOutBtn.addEventListener('click', punchClock);\r\n\r\n\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t}\r\n\r\n\treturn {\r\n\t\tprocessStaffActivity,\r\n\t\tgiveInvalidTimeError,\r\n\t\tinit,\r\n\t};\r\n})();\r\n","var timeClockAjax = (function() {\r\n\tfunction clockInStaff() {\r\n\t\tvar locationId = '';\r\n\t\tvar locationId = defaults.getLocation(\"timeClock\");\r\n\t\tif (locationId == null || locationId == '') locationId = 0;\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/clockInStaff/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"createTimeEntries\":\"' + $.session.createTimeEntries + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n success: function (response, status, xhr) { \r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\t if (res.indexOf('517') > -1) {\r\n $.session.timeClockError = 'You are not assigned as Day Service Staff.';\r\n\t\t\t }\r\n\t\t\t\t if (res.indexOf('611') > -1) {\r\n $.session.timeClockError = 'You are not assigned as Day Service Staff';\r\n\t\t\t\t }\r\n\t\t\t\t if (res.indexOf('612') > -1) {\r\n $.session.timeClockError = 'You do not have an active staff location assigned to you.';\r\n\t\t\t\t }\r\n\t\t\t\t if (res.indexOf('610') > -1) {\r\n $.session.timeClockError = 'You are already clocked in!';\r\n\t\t\t\t }\r\n\t\t\t\tif (res.indexOf('613') > -1) {\r\n window.timeOverlapError = true;\r\n $.session.timeClockError = 'Time Overlap';\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.timeOverlapError = false; //needed to reset previous error value\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\tgetStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction clockOutStaff() {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/clockOutStaff/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\tgetStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getStaffActivity(callback) {\r\n\t\tvar d = new Date();\r\n\t\tvar timeClockDate = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getStaffActivityJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + timeClockDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getStaffActivityJSONResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null);\r\n\t\t\t},\r\n\t\t\t// complete: function(jqXHR, status) {\r\n\t\t\t// \tshowDownArrow();\r\n\t\t\t// },\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateStaffClockTime(data, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateStaffClockTime/',\r\n\t\t\tdata:\r\n\t\t\t\t'{\"token\":\"' + $.session.Token +\r\n\t\t\t\t'\", \"serviceDate\":\"' + UTIL.getDBDateNow() +\r\n\t\t\t\t'\", \"orginalTime\":\"' + data.orgTime +\r\n\t\t\t\t'\", \"newTime\":\"' + data.newTime +\r\n\t\t\t\t'\", \"isClockIn\":\"' + data.isStartTime +\r\n\t\t\t\t'\", \"checkedAgainstTime\":\"' + data.orgTime +\r\n\t\t\t\t'\",\"location\":\"' + data.loc + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (res.indexOf('613') > -1) {\r\n $.session.timeClockError = 'Time Overlap';\r\n\t\t\t\t\twindow.timeOverlapError = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.timeOverlapError = false;\r\n }\r\n callback();\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\t//getStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t$.session.initialTimeOut = '';\r\n\t\t$.session.initialTimeIn = '';\r\n\t}\r\n\r\n\treturn {\r\n\t\tclockInStaff,\r\n\t\tclockOutStaff,\r\n\t\tgetStaffActivity,\r\n\t\tupdateStaffClockTime,\r\n\t};\r\n})();\r\n","var singleEntryCountWidget = (function() {\r\n var widget;\r\n var entriesObj;\r\n var statuses = {\r\n \"A\": 'Needs Approval',\r\n \"P\": 'Pending',\r\n \"R\": 'Rejected'\r\n };\r\n\r\n function getEntryInfo(dateRange, code) {\r\n var userId = $.session.UserId;\r\n var startDate = dateRange[0].split('/');\r\n var endDate = dateRange[1].split('/');\r\n startDate = `${startDate[2]}-${UTIL.leadingZero(startDate[0])}-${UTIL.leadingZero(startDate[1])}`;\r\n endDate = `${endDate[2]}-${UTIL.leadingZero(endDate[0])}-${UTIL.leadingZero(endDate[1])}`;\r\n\r\n timeEntryReview.loadReviewPage(startDate, endDate);\r\n //getSingleEntryByDate(userId, startDate, endDate, '%', code, buildSingleEntryTable);\r\n }\r\n\r\n function populateSingleEntryCountInfo(data) {\r\n var pendingSection = widget.querySelector('.pending-section');\r\n var rejectedSection = widget.querySelector('.rejected-section');\r\n var approvalSection = widget.querySelector('.needsapproval-section');\r\n pendingSection.innerHTML = '';\r\n rejectedSection.innerHTML = '';\r\n approvalSection.innerHTML = '';\r\n\r\n var entryGroups = Object.keys(data);\r\n entryGroups.forEach(group => {\r\n var dateRanges = Object.keys(data[group]);\r\n dateRanges.sort((a,b) => {\r\n var dateA = a.split('{*}')[0];\r\n var dateB = b.split('{*}')[0];\r\n dateA = new Date(dateA);\r\n dateB = new Date(dateB);\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n dateRanges.forEach(range => {\r\n var text = range.split('{*}').join(' - ');\r\n var count = data[group][range].count;\r\n var p = document.createElement('p');\r\n p.innerHTML = `${text} - ${count}`;\r\n p.setAttribute(\"start-date\", range.split('{*}')[0])\r\n p.setAttribute(\"end-date\", range.split('{*}')[1])\r\n p.classList.add('customLink')\r\n if (group === 'P') {\r\n pendingSection.appendChild(p);\r\n p.addEventListener(\"click\", event => {\r\n let startDate = event.target.getAttribute(\"start-date\")\r\n let endDate = event.target.getAttribute(\"end-date\")\r\n let status = \"P\"\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n actioncenter.dataset.activeModule = \"timeEntry\"\r\n UTIL.toggleMenuItemHighlight(\"timeEntry\")\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n timeEntry.getInitialData(() => {\r\n timeEntryReview.dashHandler(startDate, endDate, status)\r\n })\r\n })\r\n } else if (group === 'R') {\r\n rejectedSection.appendChild(p);\r\n p.addEventListener(\"click\", event => {\r\n let startDate = event.target.getAttribute(\"start-date\")\r\n let endDate = event.target.getAttribute(\"end-date\")\r\n let status = \"R\"\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n actioncenter.dataset.activeModule = \"timeEntry\"\r\n UTIL.toggleMenuItemHighlight(\"timeEntry\")\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n timeEntry.getInitialData(() => {\r\n timeEntryReview.dashHandler(startDate, endDate, status)\r\n })\r\n })\r\n } else if (group === 'A') {\r\n approvalSection.appendChild(p);\r\n p.addEventListener(\"click\", event => {\r\n let startDate = event.target.getAttribute(\"start-date\")\r\n let endDate = event.target.getAttribute(\"end-date\")\r\n let status = \"A\"\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n actioncenter.dataset.activeModule = \"timeEntry\"\r\n UTIL.toggleMenuItemHighlight(\"timeEntry\")\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n timeEntry.getInitialData(() => {\r\n timeEntryReview.dashHandler(startDate, endDate, status)\r\n })\r\n })\r\n }\r\n });\r\n });\r\n }\r\n \r\n\r\n function buildWidgetTabs() {\r\n var widgetTabs = widgetBody.querySelector('.tabs');\r\n if (!widgetTabs) {\r\n var tabOptions = {\r\n sections: ['Pending', 'Rejected', 'Needs Approval']\r\n };\r\n \r\n widgetTabs = tabs.build(tabOptions);\r\n \r\n widgetBody.appendChild(widgetTabs);\r\n }\r\n }\r\n\r\n function groupSingleEntryCountInfo(results) {\r\n entriesObj = {};\r\n results.forEach(r => {\r\n if (statuses[r.Anywhere_Status]) {\r\n var startDate = r.startdate.split(' ')[0];\r\n var endDate = r.enddate.split(' ')[0];\r\n var dateString = `${startDate}{*}${endDate}`;\r\n\r\n if (!entriesObj[r.Anywhere_Status]) {\r\n entriesObj[r.Anywhere_Status] = {};\r\n }\r\n if (!entriesObj[r.Anywhere_Status][dateString]) {\r\n entriesObj[r.Anywhere_Status][dateString] = {count: 0};\r\n }\r\n entriesObj[r.Anywhere_Status][dateString].count++;\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n widget = document.getElementById('dashsingleentrywidget');\r\n widgetBody = widget.querySelector('.widget__body');\r\n widgetBody.innerHTML = '';\r\n\r\n singleEntryCountWidgetAjax.getSingleEntryCountInfo(function(err, res) {\r\n if (err) {\r\n $('#dashsingleentrywidget .dashboarderror').show();\r\n return;\r\n }\r\n groupSingleEntryCountInfo(res);\r\n buildWidgetTabs();\r\n populateSingleEntryCountInfo(entriesObj);\r\n });\r\n }\r\n\r\n return {\r\n init\r\n }\r\n}());","var singleEntryCountWidgetAjax = (function() {\r\n function getSingleEntryCountInfo(callback) {\r\n //ANYW_Dashboard_GetSingleEntryCountInfo \r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getSingleEntryCountInfoJSON/\",\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n res = response.getSingleEntryCountInfoJSONResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null)\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getSingleEntryCountInfo\r\n }\r\n}());","var incident = (function () {\r\n var updateData = {\r\n token: null,\r\n\r\n incidentTypeId: null, // Incident Details\r\n incidentTypeDesc: null, // Incident Details\r\n incidentDate: null, // Incident Details - incident date\r\n incidentTime: null, // Incident Details - incident time\r\n reportedDate: null, // Incident Details - reported date\r\n reportedTime: null, // Incident Details - reported time\r\n subcategoryId: null, // Incident Details - incident category\r\n locationDetailId: null, // Incident Details - location detail\r\n serviceLocationId: null, // ????????????\r\n summary: null, // Incident Details - summary of incident\r\n note: null, // Incident Details - immediate acction\r\n prevention: null, // Incident Details - preventive plan\r\n contributingFactor: null, // Incident Details - cause & contributing factors\r\n\r\n consumerIdString: null, // Consumers Involved - consumer id\r\n includeInCount: null, // Consumers Involved - PPI checkbox\r\n involvementId: null, // Consumers Involved - involvement type id\r\n consumerIncidentLocationIdString: null, // Consumers Involved - incident location id\r\n consumerInvolvedIdString: null,\r\n\r\n employeeIdString: null, // Employees Involved\r\n notifyEmployeeString: null, // Employees Involved\r\n employeeInvolvementIdString: null, // Employees Involved\r\n\r\n othersInvolvedNameString: null, // Others Involved\r\n othersInvolvedCompanyString: null, // Others Involved\r\n othersInvolvedAddress1String: null, // Others Involved\r\n othersInvolvedAddress2String: null, // Others Involved\r\n othersInvolvedCityString: null, // Others Involved\r\n othersInvolvedStateString: null, // Others Involved\r\n othersInvolvedZipCodeString: null, // Others Involved\r\n othersInvolvedPhoneString: null, // Others Involved\r\n othersInvolvedInvolvementTypeIdString: null, // Others Involved\r\n othersInvolvedInvolvementDescriptionString: null, // Others Involved - ????\r\n\r\n updateIncidentId: null, // set for update only. else make 0\r\n saveUpdate: 'Update', // set either Save or Update\r\n };\r\n var isNewIncident;\r\n var consumersInvolvedIds;\r\n var newConsumersInvolvedIds;\r\n\r\n function clearUpdateData() {\r\n var datakeys = Object.keys(updateData);\r\n datakeys.forEach(key => {\r\n updateData[key] = null;\r\n });\r\n }\r\n\r\n function getIncidentId() {\r\n return updateData.updateIncidentId;\r\n }\r\n\r\n function setNewConsumerInvolvedIds(involvementIds) {\r\n // when saving new incident this handles the new consumerInvolement Ids coming back\r\n newConsumersInvolvedIds = [];\r\n\r\n involvementIds.forEach(ids => {\r\n var idArray = ids.split('|');\r\n var consumerId = idArray[0];\r\n var involvementId = idArray[1];\r\n\r\n newConsumersInvolvedIds.push({\r\n id: consumerId,\r\n involvedId: involvementId,\r\n });\r\n });\r\n }\r\n\r\n //-----------------------------------------------------------\r\n // Saving/Updating Incident Card\r\n //-----------------------------------------------------------\r\n function setUpdateIncidentId(incidentId) {\r\n updateData.updateIncidentId = incidentId;\r\n }\r\n // Gather Data From Each Section\r\n function getConsumersInvolvedUpdateData() {\r\n var consumerIds = [];\r\n var involvementIds = [];\r\n var locationIds = [];\r\n var includeInCount = [];\r\n var consumerInvolvementIds = [];\r\n\r\n var consumersInvolvedIds = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n var data = consumerInvolvement.getData();\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach((key, index) => {\r\n var consumerData = data[key];\r\n var consumerInvolvementId;\r\n\r\n if (consumersInvolvedIds) {\r\n consumerInvolvementId = consumersInvolvedIds.find(e => e.id === key);\r\n consumerInvolvementId = consumerInvolvementId ? consumerInvolvementId.involvedId : 0;\r\n } else {\r\n consumerInvolvementId = 0;\r\n }\r\n\r\n consumerIds.push(key);\r\n involvementIds.push(consumerData.involvementId);\r\n locationIds.push(consumerData.locationId);\r\n includeInCount.push(consumerData.includeInCount);\r\n consumerInvolvementIds.push(consumerInvolvementId);\r\n });\r\n\r\n updateData.consumerIdString = consumerIds.join(',');\r\n updateData.involvementId = involvementIds.join('|');\r\n updateData.consumerIncidentLocationIdString = locationIds.join('|');\r\n updateData.includeInCount = includeInCount.join('|');\r\n updateData.consumerInvolvedIdString = consumerInvolvementIds.join('|');\r\n }\r\n function getEmployeesInvolvedUpdateData() {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"employees\"]');\r\n var employeeRows = [].slice.call(section.querySelectorAll('.employeeRow'));\r\n\r\n var employeeIds = [];\r\n var involvementTypes = [];\r\n var toNotify = [];\r\n\r\n employeeRows.forEach((row, index) => {\r\n var employeeNameDropdown = row.querySelector('.employeeNameDropdown');\r\n var involvementDropdown = row.querySelector('.involvmentTypeDropdown');\r\n var notifyCheckbox = row.querySelector('.checkbox');\r\n var notifyInput = notifyCheckbox.querySelector('input');\r\n var employeeNameDropdownSelectedValue =\r\n employeeNameDropdown.options[employeeNameDropdown.selectedIndex];\r\n\r\n var name = employeeNameDropdownSelectedValue.dataset.employeeid;\r\n var involvement = involvementDropdown.value;\r\n var notify = notifyInput.checked ? 'Y' : 'N';\r\n\r\n employeeIds.push(name);\r\n involvementTypes.push(involvement);\r\n toNotify.push(notify);\r\n });\r\n\r\n updateData.employeeIdString = employeeIds.join('|');\r\n updateData.employeeInvolvementIdString = involvementTypes.join('|');\r\n updateData.notifyEmployeeString = toNotify.join('|');\r\n }\r\n function getPeopleInvolvedUpdateData() {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"people\"]');\r\n var peopleRows = [].slice.call(section.querySelectorAll('.peopleRow'));\r\n\r\n var names = [];\r\n var companies = [];\r\n var addresses1 = [];\r\n var addresses2 = [];\r\n var cities = [];\r\n var states = [];\r\n var zips = [];\r\n var phones = [];\r\n var involevmentTypes = [];\r\n var involevmentDescriptions = [];\r\n\r\n peopleRows.forEach((person, index) => {\r\n var nameInput = person.querySelector('.name');\r\n var companyInput = person.querySelector('.company');\r\n var address1Input = person.querySelector('.address1');\r\n var address2Input = person.querySelector('.address2');\r\n var cityInput = person.querySelector('.city');\r\n var stateInput = person.querySelector('.state');\r\n var zipInput = person.querySelector('.zip');\r\n var phoneInput = person.querySelector('.phone');\r\n var typeDropdown = person.querySelector('.involvmentTypeDropdown');\r\n\r\n var name = UTIL.removeUnsavableNoteText(nameInput.value);\r\n var company = UTIL.removeUnsavableNoteText(companyInput.value);\r\n var address1 = UTIL.removeUnsavableNoteText(address1Input.value);\r\n var address2 = UTIL.removeUnsavableNoteText(address2Input.value);\r\n var city = UTIL.removeUnsavableNoteText(cityInput.value);\r\n var state = stateInput.value;\r\n var zip = zipInput.value;\r\n var phone = phoneInput.value;\r\n var type = typeDropdown.value;\r\n\r\n names.push(name);\r\n companies.push(company);\r\n addresses1.push(address1);\r\n addresses2.push(address2);\r\n cities.push(city);\r\n states.push(state);\r\n zips.push(zip);\r\n phones.push(phone);\r\n involevmentTypes.push(type);\r\n });\r\n\r\n updateData.othersInvolvedNameString = names.join('|');\r\n updateData.othersInvolvedCompanyString = companies.join('|');\r\n updateData.othersInvolvedAddress1String = addresses1.join('|');\r\n updateData.othersInvolvedAddress2String = addresses2.join('|');\r\n updateData.othersInvolvedCityString = cities.join('|');\r\n updateData.othersInvolvedStateString = states.join('|');\r\n updateData.othersInvolvedZipCodeString = zips.join('|');\r\n updateData.othersInvolvedPhoneString = phones.join('|');\r\n updateData.othersInvolvedInvolvementTypeIdString = involevmentTypes.join('|');\r\n }\r\n function getIncidentDetailsUpdateData(details) {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"details\"]');\r\n var iDate = section.querySelector('.iDate');\r\n var iTime = section.querySelector('.iTime');\r\n var rDate = section.querySelector('.rDate');\r\n var rTime = section.querySelector('.rTime');\r\n var category = section.querySelector('.categoryDropdown');\r\n var location = section.querySelector('.locationDropdown');\r\n var summary = section.querySelector('.summary');\r\n var action = section.querySelector('.action');\r\n\r\n updateData.incidentDate = iDate.value;\r\n updateData.incidentTime = iTime.value;\r\n updateData.reportedDate = rDate.value;\r\n updateData.reportedTime = rTime.value;\r\n updateData.subcategoryId = category.value;\r\n updateData.locationDetailId = location.value;\r\n updateData.summary = UTIL.removeUnsavableNoteText(summary.value);\r\n updateData.note = UTIL.removeUnsavableNoteText(action.value);\r\n updateData.prevention = '';\r\n updateData.contributingFactor = '';\r\n\r\n if ($.session.incidentTrackingShowPreventionPlan) {\r\n var prevention = section.querySelector('.prevention');\r\n updateData.prevention = UTIL.removeUnsavableNoteText(prevention.value);\r\n }\r\n if ($.session.incidentTrackingShowCauseAndContributingFactors) {\r\n var factors = section.querySelector('.factors');\r\n updateData.contributingFactor = UTIL.removeUnsavableNoteText(factors.value);\r\n }\r\n\r\n if (details) {\r\n updateData.incidentTypeId = details.incidentTypeId === '' ? null : details.incidentTypeId;\r\n updateData.incidentTypeDesc =\r\n details.incidentTypeDesc === '' ? null : details.incidentTypeDesc;\r\n }\r\n }\r\n\r\n function updateIncidentSaveEditData() {\r\n getConsumersInvolvedUpdateData();\r\n getEmployeesInvolvedUpdateData();\r\n getPeopleInvolvedUpdateData();\r\n getIncidentDetailsUpdateData();\r\n updateData.token = $.session.Token;\r\n updateData.saveUpdate = isNewIncident ? 'Save' : 'Update';\r\n }\r\n\r\n function saveIncident(isNew) {\r\n isNewIncident = isNew;\r\n // update save data\r\n updateIncidentSaveEditData();\r\n // tell roster to clear out its active consumers\r\n roster2.clearActiveConsumers();\r\n // fire ajax save\r\n incidentTrackingAjax.saveUpdateITIncident(updateData, function (involvementIds) {\r\n setNewConsumerInvolvedIds(involvementIds);\r\n // load review page\r\n incidentOverview.init();\r\n saveConsumerData();\r\n deleteConsumerData();\r\n clearUpdateData();\r\n });\r\n }\r\n function deleteIncident() {\r\n var deleteIncidentWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete this incident?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n incidentTrackingAjax.deleteITIncident(updateData.updateIncidentId);\r\n clearUpdateData();\r\n POPUP.hide(deleteIncidentWarningPopup);\r\n incidentOverview.init();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n clearUpdateData();\r\n POPUP.hide(deleteIncidentWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteIncidentWarningPopup.appendChild(message);\r\n deleteIncidentWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteIncidentWarningPopup);\r\n }\r\n function cancelIncident() {\r\n // clear active consumers\r\n roster2.clearActiveConsumers();\r\n // clear data\r\n itConsumerSection.clearData();\r\n // load review page\r\n incidentOverview.init();\r\n }\r\n\r\n //-----------------------------------------------------------\r\n // Saving/Updating Consumer Involved Sub Sections\r\n //-----------------------------------------------------------\r\n function saveConsumerData() {\r\n consumersInvolvedIds = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n var followUpData = consumerFollowUp.getData();\r\n var injuryData = consumerInjuries.getData();\r\n var interventionsData = consumerIntervention.getData();\r\n var reviewData = consumerReview.getData();\r\n var reportData = consumerReporting.getData();\r\n var behaviorData = consumerBehavior.getData();\r\n\r\n var fupPromises = saveConsumerFollowUps(followUpData);\r\n var injPromises = saveConsumerInjuries(injuryData);\r\n var intPromises = saveConsumerInterventions(interventionsData);\r\n var revPromises = saveConsumerReviews(reviewData);\r\n var repPromises = saveConsumerReports(reportData);\r\n var behavPromises = saveConsumerBehaviors(behaviorData);\r\n\r\n var consumerDataSavePromises = [\r\n ...fupPromises,\r\n ...injPromises,\r\n ...intPromises,\r\n ...revPromises,\r\n ...repPromises,\r\n ...behavPromises,\r\n ];\r\n\r\n Promise.all(consumerDataSavePromises).then(() => {\r\n itConsumerSection.clearData();\r\n });\r\n }\r\n function saveConsumerFollowUps(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerFollowUpIdArray: [],\r\n followUpTypeIdArray: [],\r\n personResponsibleArray: [],\r\n dueDateArray: [],\r\n completedDateArray: [],\r\n notesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var fuData = data[key][idKey];\r\n if (!fuData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerFollowUpId = isNew ? '' : idKey;\r\n var followUpTypeId = fuData.followUpTypeId ? fuData.followUpTypeId : '';\r\n var personResponsible = fuData.personResponsible\r\n ? UTIL.removeUnsavableNoteText(fuData.personResponsible)\r\n : '';\r\n var dueDate = fuData.dueDate ? fuData.dueDate : '';\r\n var dateCompleted = fuData.dateCompleted ? fuData.dateCompleted : '';\r\n var notes = fuData.notes ? UTIL.removeUnsavableNoteText(fuData.notes) : '';\r\n\r\n saveData.consumerFollowUpIdArray.push(itConsumerFollowUpId);\r\n saveData.followUpTypeIdArray.push(followUpTypeId);\r\n saveData.personResponsibleArray.push(personResponsible);\r\n saveData.dueDateArray.push(dueDate);\r\n saveData.completedDateArray.push(dateCompleted);\r\n saveData.notesArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerFollowUp(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerInjuries(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerInjuryIdArray: [],\r\n checkedByNurseArray: [],\r\n checkedDateArray: [],\r\n detailsArray: [],\r\n itInjuryLocationIdArray: [],\r\n itInjuryTypeIdArray: [],\r\n treatmentArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var iData = data[key][idKey];\r\n if (!iData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerInjuryId = isNew ? '' : idKey;\r\n var checkedByNurse = iData.checkedByNurse ? iData.checkedByNurse : '';\r\n var checkedDate = iData.checkedDate ? iData.checkedDate : '';\r\n var injuryDetails = iData.injuryDetails\r\n ? UTIL.removeUnsavableNoteText(iData.injuryDetails)\r\n : '';\r\n var injuryLocationId = iData.injuryLocationId ? iData.injuryLocationId : '';\r\n var injuryTypeId = iData.injuryTypeId ? iData.injuryTypeId : '';\r\n var injuryTreatment = iData.injuryTreatment\r\n ? UTIL.removeUnsavableNoteText(iData.injuryTreatment)\r\n : '';\r\n\r\n saveData.itConsumerInjuryIdArray.push(itConsumerInjuryId);\r\n saveData.checkedByNurseArray.push(checkedByNurse);\r\n saveData.checkedDateArray.push(checkedDate);\r\n saveData.detailsArray.push(injuryDetails);\r\n saveData.itInjuryLocationIdArray.push(injuryLocationId);\r\n saveData.itInjuryTypeIdArray.push(injuryTypeId);\r\n saveData.treatmentArray.push(injuryTreatment);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerInjuries(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerInterventions(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerInterventionIdArray: [],\r\n aversiveArray: [],\r\n itConsumerInterventionTypeIdArray: [],\r\n notesArray: [],\r\n startTimeArray: [],\r\n stopTimeArray: [],\r\n timeLengthArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var iData = data[key][idKey];\r\n if (!iData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerInterventionId = isNew ? '' : idKey;\r\n var aversive = iData.aversive ? iData.aversive : '';\r\n var interventionType = iData.interventionType ? iData.interventionType : '';\r\n var interventionNotes = iData.interventionNotes\r\n ? UTIL.removeUnsavableNoteText(iData.interventionNotes)\r\n : '';\r\n var startTime = iData.startTime ? iData.startTime : '';\r\n var stopTime = iData.stopTime ? iData.stopTime : '';\r\n var timeLength = iData.timeLength ? iData.timeLength : '';\r\n\r\n saveData.itConsumerInterventionIdArray.push(itConsumerInterventionId);\r\n saveData.aversiveArray.push(aversive);\r\n saveData.itConsumerInterventionTypeIdArray.push(interventionType);\r\n saveData.notesArray.push(interventionNotes);\r\n saveData.startTimeArray.push(startTime);\r\n saveData.stopTimeArray.push(stopTime);\r\n saveData.timeLengthArray.push(timeLength);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerInterventions(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerReviews(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerReviewIdArray: [],\r\n reviewedByArray: [],\r\n reviewedDateArray: [],\r\n noteArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerReviewId = isNew ? '' : idKey;\r\n var reviewedBy = rData.reviewedBy ? rData.reviewedBy : '';\r\n var reviewedDate = rData.reviewedDate ? rData.reviewedDate : '';\r\n var notes = rData.notes ? UTIL.removeUnsavableNoteText(rData.notes) : '';\r\n\r\n saveData.itConsumerReviewIdArray.push(itConsumerReviewId);\r\n saveData.reviewedByArray.push(reviewedBy);\r\n saveData.reviewedDateArray.push(reviewedDate);\r\n saveData.noteArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerReviews(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerReports(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerReportIdArray: [],\r\n reportDateArray: [],\r\n reportTimeArray: [],\r\n reportingCategoryIdArray: [],\r\n reportToArray: [],\r\n reportByArray: [],\r\n reportMethodArray: [],\r\n notesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerReportId = isNew ? '' : idKey;\r\n var dateReported = rData.dateReported ? rData.dateReported : '';\r\n var timeReported = rData.timeReported ? rData.timeReported : '';\r\n var reportingCategoryID = rData.reportingCategoryID ? rData.reportingCategoryID : '';\r\n var reportTo = rData.reportTo ? UTIL.removeUnsavableNoteText(rData.reportTo) : '';\r\n var reportBy = rData.reportBy ? UTIL.removeUnsavableNoteText(rData.reportBy) : '';\r\n var reportMethod = rData.reportMethod\r\n ? UTIL.removeUnsavableNoteText(rData.reportMethod)\r\n : '';\r\n var notes = rData.notes ? UTIL.removeUnsavableNoteText(rData.notes) : '';\r\n\r\n saveData.consumerReportIdArray.push(itConsumerReportId);\r\n saveData.reportDateArray.push(dateReported);\r\n saveData.reportTimeArray.push(timeReported);\r\n saveData.reportingCategoryIdArray.push(reportingCategoryID);\r\n saveData.reportToArray.push(reportTo);\r\n saveData.reportByArray.push(reportBy);\r\n saveData.reportMethodArray.push(reportMethod);\r\n saveData.notesArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerReporting(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerBehaviors(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerBehaviorIdArray: [],\r\n behaviorTypeIdArray: [],\r\n startTimeArray: [],\r\n endTimeArray: [],\r\n occurrencesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerBehaviorId = isNew ? '' : idKey;\r\n var behaviorTypeId = rData.behaviorTypeId ? rData.behaviorTypeId : '';\r\n var startTime = rData.startTime ? rData.startTime : '';\r\n var endTime = rData.endTime ? rData.endTime : '';\r\n var occurrences = rData.occurrences ? rData.occurrences : '';\r\n\r\n saveData.consumerBehaviorIdArray.push(itConsumerBehaviorId);\r\n saveData.behaviorTypeIdArray.push(behaviorTypeId);\r\n saveData.startTimeArray.push(startTime);\r\n saveData.endTimeArray.push(endTime);\r\n saveData.occurrencesArray.push(occurrences);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerBehaviors(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n\r\n function deleteConsumerData() {\r\n var followUpDeletes = consumerFollowUp.getDeleteData();\r\n var injuryDeletes = consumerInjuries.getDeleteData();\r\n var interventionDeletes = consumerIntervention.getDeleteData();\r\n var reviewDeletes = consumerReview.getDeleteData();\r\n var reportDeletes = consumerReporting.getDeleteData();\r\n var behaviorDeletes = consumerBehavior.getDeleteData();\r\n\r\n if (followUpDeletes) {\r\n var fuKeys = Object.keys(followUpDeletes);\r\n fuKeys.forEach(fuKey => {\r\n var keys = Object.keys(followUpDeletes[fuKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerFollowUp(key, () => {});\r\n });\r\n });\r\n }\r\n if (injuryDeletes) {\r\n var injKeys = Object.keys(injuryDeletes);\r\n injKeys.forEach(injKey => {\r\n var keys = Object.keys(injuryDeletes[injKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerInjuries(key, () => {});\r\n });\r\n });\r\n }\r\n if (interventionDeletes) {\r\n var intKeys = Object.keys(interventionDeletes);\r\n intKeys.forEach(intKey => {\r\n var keys = Object.keys(interventionDeletes[intKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerInterventions(key, () => {});\r\n });\r\n });\r\n }\r\n if (reviewDeletes) {\r\n var revKeys = Object.keys(reviewDeletes);\r\n revKeys.forEach(revKey => {\r\n var keys = Object.keys(reviewDeletes[revKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerReviews(key, () => {});\r\n });\r\n });\r\n }\r\n if (reportDeletes) {\r\n var repKeys = Object.keys(reportDeletes);\r\n repKeys.forEach(repKey => {\r\n var keys = Object.keys(reportDeletes[repKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerReporting(key, () => {});\r\n });\r\n });\r\n }\r\n if (behaviorDeletes) {\r\n var bhKeys = Object.keys(behaviorDeletes);\r\n bhKeys.forEach(fuKey => {\r\n var keys = Object.keys(behaviorDeletes[fuKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerBehavior(key, () => {});\r\n });\r\n });\r\n }\r\n }\r\n\r\n return {\r\n save: saveIncident,\r\n delete: deleteIncident,\r\n cancel: cancelIncident,\r\n setUpdateIncidentId,\r\n saveConsumerData,\r\n getIncidentId,\r\n };\r\n})();\r\n","var newIncident = (function() {\r\n\t// DATA\r\n\t//---------------------\r\n\t// Values\r\n //---------------------\r\n\r\n // Action Nav Event Handler\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch(targetAction) {\r\n // case 'rosterDone': {\r\n // roster.selectedConsumersToEnabledList();\r\n // loadPage();\r\n // break;\r\n // }\r\n // case 'rosterCancel': {\r\n // incidentTracking.loadLandingPage();\r\n // break;\r\n // }\r\n case 'miniRosterDone': {\r\n var selectedConsumers = roster2.getActiveConsumers();\r\n // roster.selectedConsumersToActiveList();\r\n itConsumerSection.addConsumers(selectedConsumers);\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n \r\n function loadPage() {\r\n DOM.clearActionCenter();\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.miniRosterinit();\r\n\r\n var newIncidentCard = incidentCard.build();\r\n\r\n DOM.ACTIONCENTER.appendChild(newIncidentCard);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('incidentTracking-new');\r\n loadPage();\r\n\r\n // var enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // PROGRESS.SPINNER.show('Please wait while we gather everyone up...');\r\n // roster.buildRoster(true, false, rosterList => {\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.appendChild(rosterList);\r\n // }, true);\r\n // } else {\r\n // loadPage();\r\n // }\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n init\r\n }\r\n})();","// Used For Incident Review Page\r\nconst incidentPermissions = (function () {\r\n function incidentDetails(enteredBy) {\r\n const textareas = [...document.querySelectorAll('textarea')];\r\n\r\n textareas.forEach(textarea => {\r\n if ($.session.UserId.toLowerCase() !== enteredBy.toLowerCase()) {\r\n if (\r\n (textarea.classList.contains('summary') && $.session.updateIncidentSummaryText) ||\r\n (textarea.classList.contains('action') && $.session.updateIncidentActionText) ||\r\n (textarea.classList.contains('prevention') && $.session.updateIncidentPreventionText) ||\r\n (textarea.classList.contains('factors') && $.session.updateIncidentCauseText)\r\n ) {\r\n const nonEditableText = textarea.value;\r\n\r\n textarea.addEventListener('keydown', event => {\r\n const updatedText = event.target.value;\r\n\r\n // if noneditable text is not at the beginning or has been changed\r\n if (!updatedText.startsWith(nonEditableText)) {\r\n textarea.blur();\r\n // create and append popup\r\n const popupElement = POPUP.build({\r\n id: 'js-incidentSummaryWarning',\r\n closeCallback: () => {\r\n const resetValue =\r\n nonEditableText + updatedText.substr(nonEditableText.length + 1);\r\n textarea.value = resetValue;\r\n },\r\n });\r\n const message = document.createElement('div');\r\n message.innerHTML = 'You are not allowed to edit previously entered text.';\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popupElement);\r\n const resetValue =\r\n nonEditableText + updatedText.substr(nonEditableText.length + 1);\r\n textarea.value = resetValue;\r\n },\r\n });\r\n\r\n popupElement.appendChild(message);\r\n popupElement.appendChild(okButton);\r\n\r\n POPUP.show(popupElement);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n function permissions(originallyEnteredByUserId) {\r\n // gather all inputs, textareas, and dropdowns\r\n var incidentTrackingCard = document.querySelector('.incidentSection[data-card-page=\"details\"]');\r\n var inputs = [].slice.call(incidentTrackingCard.querySelectorAll('input'));\r\n var textareas = [].slice.call(incidentTrackingCard.querySelectorAll('textarea'));\r\n var dropdowns = [].slice.call(incidentTrackingCard.querySelectorAll('select'));\r\n var formElements = [].concat(inputs, textareas, dropdowns);\r\n if ($.session.incidentTrackingUpdate === false) {\r\n // disable everything\r\n formElements.forEach(element => {\r\n element.disabled = true;\r\n });\r\n } else {\r\n // undisable everything\r\n formElements.forEach(element => {\r\n element.disabled = false;\r\n });\r\n incidentDetails(originallyEnteredByUserId);\r\n }\r\n }\r\n\r\n return {\r\n incidentDetails,\r\n permissions,\r\n };\r\n})();\r\n","var reviewIncident = (function () {\r\n function loadPage(reviewData, incidentId) {\r\n DOM.clearActionCenter();\r\n\r\n var newIncidentCard = incidentCard.build(reviewData);\r\n\r\n DOM.ACTIONCENTER.appendChild(newIncidentCard);\r\n\r\n incidentPermissions.permissions(reviewData.itReviewData[0].originallyEnteredByUserId);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function init(incidentId) {\r\n incidentTrackingAjax.getIncidentEditReviewDataAllObjects(incidentId, results => {\r\n incident.setUpdateIncidentId(incidentId);\r\n loadPage(results, incidentId);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var incidentCard = (function () {\r\n // DOM\r\n //---------------------\r\n var incidentCard;\r\n //*sections\r\n var consumersSection;\r\n var detailsSection;\r\n var employeeSection;\r\n var peopleSection;\r\n //*nav buttons\r\n var nextBtn;\r\n var prevBtn;\r\n //*action buttons\r\n var cardActionBtns;\r\n var saveBtn;\r\n var deleteBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var sections = [\r\n 'Consumers Involved',\r\n 'Incident Details',\r\n 'Employees Involved',\r\n 'People Involved',\r\n ];\r\n var itConsumerInvolved;\r\n var itReviewData;\r\n var itEmployeesInvolved;\r\n var itOthersInvolved;\r\n // Values\r\n //---------------------\r\n var isNewIncident;\r\n var currentSectionNumber;\r\n\r\n function toggleSaveBtnStatus(disableBtn) {\r\n if (disableBtn) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n function toggleActionBtns(hide) {\r\n if (hide) {\r\n cardActionBtns.classList.add('hidden');\r\n } else {\r\n cardActionBtns.classList.remove('hidden');\r\n }\r\n }\r\n function toggleNavBtns() {\r\n if (currentSectionNumber === 3) {\r\n // disable next btn\r\n nextBtn.classList.remove('visible');\r\n } else {\r\n nextBtn.classList.add('visible');\r\n }\r\n if (currentSectionNumber === 0) {\r\n // disable prev btn\r\n prevBtn.classList.remove('visible');\r\n } else {\r\n prevBtn.classList.add('visible');\r\n }\r\n }\r\n function showSection(e) {\r\n if (e.target === nextBtn) currentSectionNumber++;\r\n if (e.target === prevBtn) currentSectionNumber--;\r\n\r\n var currentlyVisibleSection = incidentCard.querySelector('.incidentSection.visible');\r\n var targetSectionSelector = `[data-page-num=\"${currentSectionNumber}\"]`;\r\n var targetSection = incidentCard.querySelector(targetSectionSelector);\r\n\r\n currentlyVisibleSection.classList.remove('visible');\r\n targetSection.classList.add('visible');\r\n\r\n var nextSectionName = sections[currentSectionNumber + 1];\r\n nextBtn.innerHTML = nextSectionName ? nextSectionName : '';\r\n\r\n DOM.autosizeTextarea();\r\n\r\n toggleNavBtns();\r\n }\r\n\r\n function buildNav() {\r\n currentSectionNumber = 0;\r\n\r\n var nav = document.createElement('div');\r\n nav.classList.add('incidentCard__nav');\r\n\r\n nextBtn = button.build({\r\n text: sections[currentSectionNumber + 1],\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: ['nextBtn', 'visible'],\r\n callback: showSection,\r\n });\r\n prevBtn = button.build({\r\n text: 'prev',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'prevBtn',\r\n callback: showSection,\r\n });\r\n\r\n nav.appendChild(prevBtn);\r\n nav.appendChild(nextBtn);\r\n\r\n return nav;\r\n }\r\n function buildActionBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'incidentCard__actionBtns');\r\n\r\n saveBtn = button.build({\r\n text: isNewIncident ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['incidentSave', 'disabled'],\r\n callback: function () {\r\n saveBtn.classList.add('disabled');\r\n incident.save(isNewIncident);\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: incident.delete,\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: incident.cancel,\r\n });\r\n\r\n if ($.session.incidentTrackingUpdate || $.session.incidentTrackingInsert) {\r\n btnWrap.appendChild(saveBtn);\r\n }\r\n if (!isNewIncident && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n btnWrap.appendChild(deleteBtn);\r\n }\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildSections() {\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('incidentCard__sections');\r\n\r\n consumersSection = itConsumerSection.build({ pageNumber: '0' }, itConsumerInvolved);\r\n detailsSection = itDetailsSection.build({ pageNumber: '1' }, itReviewData);\r\n employeeSection = itEmployeeSection.build({ pageNumber: '2' }, itEmployeesInvolved);\r\n peopleSection = itPeopleSection.build({ pageNumber: '3' }, itOthersInvolved);\r\n\r\n wrap.appendChild(consumersSection);\r\n wrap.appendChild(detailsSection);\r\n wrap.appendChild(employeeSection);\r\n wrap.appendChild(peopleSection);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildCard(data) {\r\n if (!data) {\r\n isNewIncident = true;\r\n reviewData = undefined;\r\n itConsumerInvolved = undefined;\r\n itReviewData = undefined;\r\n itEmployeesInvolved = undefined;\r\n itOthersInvolved = undefined;\r\n } else {\r\n isNewIncident = false;\r\n reviewData = data;\r\n itConsumerInvolved = reviewData.itConsumerInvolved;\r\n itReviewData = reviewData.itReviewData;\r\n itEmployeesInvolved = reviewData.itEmployeesInvolved;\r\n itOthersInvolved = reviewData.itOthersInvolved;\r\n }\r\n\r\n incidentCard = document.createElement('div');\r\n incidentCard.classList.add('incidentCard');\r\n\r\n var cardNav = buildNav();\r\n cardActionBtns = buildActionBtns();\r\n var cardSections = buildSections();\r\n\r\n incidentCard.appendChild(cardNav);\r\n incidentCard.appendChild(cardSections);\r\n incidentCard.appendChild(cardActionBtns);\r\n\r\n var consumerSectionHasError = checkforRequiredConsumer();\r\n toggleSaveBtnStatus(consumerSectionHasError);\r\n\r\n return incidentCard;\r\n }\r\n\r\n function checkforRequiredConsumer() {\r\n // number of selected Consumers with an error ; length = 0 on initial display\r\n var selectedErroredConsumers = [].slice.call(\r\n document.querySelectorAll('.consumersWrap .consumerCard.error'),\r\n );\r\n // hasNoErrors = 0 means the \"Select a Consumer\" message is displayed\r\n var hasNoErrors = document.getElementsByClassName('consumerError hidden');\r\n\r\n if (hasNoErrors.length === 0) return true;\r\n\r\n if (selectedErroredConsumers.length === 0 || itConsumerInvolved) {\r\n return false; // false means don't disable the Save BTN\r\n } else {\r\n return true; // true means do disable the Save BTN\r\n }\r\n }\r\n function checkEntireIncidentCardforErrors() {\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n var peopleSectionHasErrors = itPeopleSection.checkRequiredFields();\r\n var consumerSectionHasErrors = checkforRequiredConsumer();\r\n\r\n if (detailSectionHasErrors || peopleSectionHasErrors || consumerSectionHasErrors) {\r\n toggleSaveBtnStatus(true);\r\n } else {\r\n toggleSaveBtnStatus(false);\r\n }\r\n }\r\n\r\n return {\r\n build: buildCard,\r\n toggleSave: toggleSaveBtnStatus,\r\n checkforRequiredConsumer,\r\n checkEntireIncidentCardforErrors,\r\n toggleActionBtns,\r\n };\r\n})();\r\n","const incidentOverview = (function () {\r\n // DOM Elements\r\n let overviewTable;\r\n //Incident Tracking Report Data\r\n let incidentTrackingEmailData = { emailSubject: 'Incidents [Composite] by Consumer, Date' };\r\n //filters\r\n let filterPopup;\r\n let filterBtn;\r\n let applyFilterBtn;\r\n let alphaDropdown;\r\n let locationDropdown;\r\n let consumerDropdown;\r\n let betaDropdown;\r\n let fromDateInput;\r\n let toDateInput;\r\n let categoryDropdown;\r\n let showDropdown;\r\n let consumerDropdownData;\r\n let btnWrap;\r\n let supervisorBtnWrap;\r\n let locationBtnWrap;\r\n let consumerBtnWrap;\r\n let employeeBtnWrap;\r\n let categoryBtnWrap;\r\n let fromDateBtnWrap;\r\n let toDateBtnWrap;\r\n // filter values for remembering\r\n let filterData = {\r\n alpha: null,\r\n alphaName: null,\r\n beta: null,\r\n betaName: null,\r\n location: null,\r\n locationName: null,\r\n consumer: null,\r\n consumerName: null,\r\n category: null,\r\n categoryName: null,\r\n fromDate: null,\r\n toDate: null,\r\n show:null,\r\n };\r\n // alpha beta stuff\r\n let changedSelectedAlphaBetas;\r\n let alphaBetaData;\r\n let selectedAlphaId;\r\n let selectedBetaData = {\r\n id: '',\r\n name: '',\r\n };\r\n let retrieveData = {\r\n token: '',\r\n locationId: '%',\r\n employeeId: null,\r\n supervisorId: '',\r\n subcategoryId: '%',\r\n fromDate: '',\r\n toDate: '',\r\n viewCaseLoad: $.session.incidentTrackingViewCaseLoad,\r\n };\r\n\r\n // Filtering\r\n //------------------------------------\r\n function populateSelectedFilterValues() {\r\n var selectedFilters = document.querySelector('.filteredByData');\r\n if (!selectedFilters) {\r\n selectedFilters = document.createElement('div');\r\n selectedFilters.classList.add('filteredByData');\r\n DOM.ACTIONCENTER.appendChild(selectedFilters);\r\n filterData.alphaName = $.session.LName + ', ' + $.session.Name;\r\n filterButtonSet();\r\n selectedFilters.appendChild(btnWrap); \r\n }\r\n\r\n if (filterData.locationName === null || filterData.locationName === 'All' || filterData.locationName === 'All Locations') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + filterData.locationName;\r\n }\r\n\r\n if (filterData.consumerName === null || filterData.consumerName === 'All' || filterData.consumerName === 'All Consumers') {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n btnWrap.removeChild(consumerBtnWrap);\r\n } else {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n document.getElementById('consumerBtn').innerHTML = 'Consumer: ' + filterData.consumerName;\r\n }\r\n\r\n if (filterData.betaName === null || filterData.betaName === 'All' || filterData.betaName === 'All Employees') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + filterData.betaName;\r\n }\r\n if (filterData.categoryName === null || filterData.categoryName === 'All' || filterData.categoryName === 'All Categories') {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n btnWrap.removeChild(categoryBtnWrap); \r\n }\r\n else {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n document.getElementById('categoryBtn').innerHTML = 'Category / Subcategory: ' + filterData.categoryName;\r\n }\r\n\r\n if (filterData.show === null || filterData.show === 'All' ) {\r\n btnWrap.appendChild(showBtnWrap);\r\n btnWrap.removeChild(showBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(showBtnWrap);\r\n document.getElementById('showBtn').innerHTML = 'Show: ' + filterData.show; \r\n }\r\n \r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + filterData.alphaName;\r\n document.getElementById('fromDateBtn').innerHTML = 'From Date: ' + UTIL.formatDateFromIso(filterData.fromDate);\r\n document.getElementById('toDateBtn').innerHTML = 'To Date: ' + UTIL.formatDateFromIso(filterData.toDate);\r\n\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n supervisorBtn = button.build({\r\n id: 'supervisorBtn',\r\n text: 'Supervisor: ' + filterData.alphaName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('supervisorBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + filterData.locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n consumerBtn = button.build({\r\n id: 'consumerBtn',\r\n text: 'Consumer: ' + filterData.consumerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('consumerBtn') },\r\n });\r\n consumerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('consumerBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + filterData.betaName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n categoryBtn = button.build({\r\n id: 'categoryBtn',\r\n text: 'Category / Subcategory: ' + filterData.categoryName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('categoryBtn') },\r\n });\r\n categoryCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('categoryBtn') },\r\n });\r\n\r\n showBtn = button.build({\r\n id: 'showBtn',\r\n text: 'Show: ' + filterData.show,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('showBtn') },\r\n });\r\n showCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('showBtn') },\r\n });\r\n\r\n fromDateBtn = button.build({\r\n id: 'fromDateBtn',\r\n text: 'From Date: ' + UTIL.formatDateFromIso(filterData.fromDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('fromDateBtn') },\r\n });\r\n\r\n toDateBtn = button.build({\r\n id: 'toDateBtn',\r\n text: 'To Date: ' + UTIL.formatDateFromIso(filterData.toDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('toDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n supervisorBtnWrap = document.createElement('div');\r\n supervisorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n supervisorBtnWrap.appendChild(supervisorBtn);\r\n btnWrap.appendChild(supervisorBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n consumerBtnWrap = document.createElement('div');\r\n consumerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n consumerBtnWrap.appendChild(consumerBtn);\r\n consumerBtnWrap.appendChild(consumerCloseBtn);\r\n btnWrap.appendChild(consumerBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn);\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n categoryBtnWrap = document.createElement('div');\r\n categoryBtnWrap.classList.add('filterSelectionBtnWrap');\r\n categoryBtnWrap.appendChild(categoryBtn);\r\n categoryBtnWrap.appendChild(categoryCloseBtn);\r\n btnWrap.appendChild(categoryBtnWrap);\r\n\r\n showBtnWrap = document.createElement('div');\r\n showBtnWrap.classList.add('filterSelectionBtnWrap');\r\n showBtnWrap.appendChild(showBtn);\r\n showBtnWrap.appendChild(showCloseBtn);\r\n btnWrap.appendChild(showBtnWrap); \r\n\r\n fromDateBtnWrap = document.createElement('div');\r\n fromDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fromDateBtnWrap.appendChild(fromDateBtn);\r\n btnWrap.appendChild(fromDateBtnWrap);\r\n\r\n toDateBtnWrap = document.createElement('div');\r\n toDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n toDateBtnWrap.appendChild(toDateBtn);\r\n btnWrap.appendChild(toDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'locationBtn') {\r\n filterData.locationName = 'All';\r\n retrieveData.locationId = '%';\r\n filterData.location = '%'; \r\n }\r\n if (closeFilter == 'consumerBtn') {\r\n filterData.consumerName = 'All';\r\n retrieveData.consumerId = '%';\r\n filterData.consumer = '%';\r\n }\r\n if (closeFilter == 'employeeBtn') {\r\n retrieveData.employeeId = '%';\r\n filterData.beta = '%';\r\n filterData.betaName = 'All';\r\n }\r\n if (closeFilter == 'categoryBtn') {\r\n retrieveData.subcategoryId = '%';\r\n filterData.category = '%';\r\n filterData.categoryName = 'All';\r\n }\r\n\r\n if (closeFilter == 'showBtn') {\r\n filterData.show = 'All'; \r\n }\r\n\r\n populateSelectedFilterValues();\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, populateOverviewTable);\r\n } \r\n\r\n function saveFilterData(data) {\r\n filterData.alpha = data.alphaId ? data.alphaId : filterData.alpha;\r\n filterData.alphaName = data.alphaName ? data.alphaName : filterData.alphaName;\r\n filterData.beta = data.betaId ? data.betaId : filterData.beta;\r\n filterData.betaName = data.betaName ? data.betaName : filterData.betaName;\r\n filterData.location = data.locationId ? data.locationId : filterData.location;\r\n filterData.locationName = data.locationName ? data.locationName : data.locationName == '' ? null : filterData.locationName;\r\n filterData.consumer = data.consumerId ? data.consumerId : filterData.consumer;\r\n filterData.consumerName = data.consumerName ? data.consumerName : filterData.consumerName;\r\n filterData.category = data.categoryId ? data.categoryId : filterData.category;\r\n filterData.categoryName = data.categoryName ? data.categoryName : filterData.categoryName;\r\n filterData.fromDate = data.fromDate ? data.fromDate : filterData.fromDate;\r\n filterData.toDate = data.toDate ? data.toDate : filterData.toDate;\r\n filterData.show = data.show ? data.show : filterData.show;\r\n }\r\n function populateFilterDropdowns() {\r\n incidentTrackingAjax.getReviewPageLocations(populateLocationsDropdown);\r\n //incidentTrackingAjax.getReviewPageLocations(populateConsumersDropdown);\r\n getConsumerDropdownData();\r\n incidentTrackingAjax.getIncidentCategories(populateCategoriesDropdown);\r\n incidentTrackingAjax.getITReviewPageEmployeeListAndSubList(\r\n $.session.PeopleId,\r\n populateUserAndEmployeeDropdowns,\r\n ); \r\n }\r\n function getFromDateValue() {\r\n if (filterData.fromDate) return filterData.fromDate;\r\n\r\n var fromDate = convertDaysBack($.session.defaultIncidentTrackingDaysBack);\r\n filterData.fromDate = fromDate;\r\n return fromDate;\r\n }\r\n function getToDateValue() {\r\n if (filterData.toDate) return filterData.toDate;\r\n\r\n var today = UTIL.getTodaysDate();\r\n filterData.toDate = today;\r\n return today;\r\n }\r\n function buildFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: ['incidentTrackingFilterPopup'],\r\n });\r\n\r\n alphaDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Supervisor',\r\n style: 'secondary',\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerDropdown',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n });\r\n betaDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Employee',\r\n style: 'secondary',\r\n });\r\n categoryDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Category/Subcategory',\r\n style: 'secondary',\r\n });\r\n showDropdown = dropdown.build({\r\n dropdownId: 'showDropdown',\r\n label: \"Show\",\r\n style: \"secondary\"\r\n });\r\n fromDateInput = input.build({\r\n label: 'From Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: getFromDateValue(),\r\n });\r\n toDateInput = input.build({\r\n label: 'To Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: getToDateValue(),\r\n });\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n // Build Popup\r\n if (IsShow == 'ALL' || IsShow == 'supervisorBtn')\r\n filterPopup.appendChild(alphaDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'consumerBtn')\r\n filterPopup.appendChild(consumerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(betaDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'categoryBtn')\r\n filterPopup.appendChild(categoryDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'showBtn') \r\n filterPopup.appendChild(showDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'fromDateBtn')\r\n filterPopup.appendChild(fromDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'toDateBtn')\r\n filterPopup.appendChild(toDateInput);\r\n\r\n filterPopup.appendChild(applyFilterBtn);\r\n\r\n // Populate Dropodowns\r\n populateFilterDropdowns();\r\n }\r\n function showFilterPopup(IsShow) {\r\n // popup\r\n buildFilterPopup(IsShow);\r\n POPUP.show(filterPopup);\r\n // Setup Events\r\n filterDropdownEventSetup();\r\n }\r\n function setupFiltering() {\r\n const filterAndReportsBtnsWrap = document.createElement('div');\r\n filterAndReportsBtnsWrap.classList.add('filterAndReportsBtnsWrap');\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n ITLocation: retrieveData.locationId,\r\n ITConsumer: retrieveData.consumerId ? retrieveData.consumerId : '%',\r\n ITFromDate: filterData.fromDate,\r\n ITToDate: filterData.toDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n reportsBtn = createMainReportButton([{ text: 'Incident Reporting Log' }]);\r\n\r\n DOM.ACTIONCENTER.appendChild(filterAndReportsBtnsWrap);\r\n filterAndReportsBtnsWrap.appendChild(reportsBtn);\r\n\r\n buildFilterPopup('ALL');\r\n }\r\n function filterDropdownEventSetup() {\r\n var tmpAlphaId;\r\n var tmpAlphaName;\r\n var tmpBetaId;\r\n var tmpBetaName;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpConsumerId;\r\n var tmpConsumerName;\r\n var tmpCategoryId;\r\n var tmpCategoryName;\r\n var tmpToDate;\r\n var tmpFromDate;\r\n var tmpShow;\r\n\r\n alphaDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedAlphaId = selectedOption.value;\r\n // update retrieveData obj\r\n retrieveData.supervisorId = selectedAlphaId;\r\n retrieveData.locationId = '%';\r\n retrieveData.consumerId = '%';\r\n retrieveData.employeeId = '%';\r\n retrieveData.subcategoryId = '%';\r\n retrieveData.viewCaseLoad = $.session.incidentTrackingViewCaseLoad;\r\n // temp cache data\r\n tmpAlphaId = selectedAlphaId;\r\n tmpAlphaName = selectedOption.innerHTML;\r\n // re populate beta dropwond based off selected alpha\r\n alphaBetaData.forEach(d => {\r\n if (d.alpha.personId === selectedAlphaId) {\r\n changedSelectedAlphaBetas = d.betas;\r\n populateBetas(d.betas);\r\n }\r\n });\r\n });\r\n betaDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedBetaData.id = selectedOption.value;\r\n selectedBetaData.name = selectedOption.innerHTML;\r\n retrieveData.employeeId = selectedBetaData.id;\r\n\r\n // temp cache data\r\n tmpBetaId = selectedBetaData.id;\r\n tmpBetaName = selectedBetaData.name;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.locationId = selectedOption.value;\r\n // temp cache data \r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.consumerId = selectedOption.value;\r\n // temp cache data\r\n tmpConsumerId = selectedOption.value;\r\n tmpConsumerName = selectedOption.innerHTML;\r\n });\r\n categoryDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.subcategoryId = selectedOption.value;\r\n // temp cache data\r\n tmpCategoryId = selectedOption.value;\r\n tmpCategoryName = selectedOption.innerHTML;\r\n });\r\n showDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // temp cache data\r\n tmpShow = selectedOption.innerHTML; \r\n });\r\n toDateInput.addEventListener('change', event => {\r\n var selectedDate = event.target.value;\r\n if (selectedDate === '') {\r\n toDateInput.classList.add('error');\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n toDateInput.classList.remove('error');\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n retrieveData.toDate = selectedDate;\r\n filterData.toDate = selectedDate;\r\n toDateVal = selectedDate;\r\n // temp cache data\r\n tmpToDate = selectedDate;\r\n });\r\n fromDateInput.addEventListener('change', event => {\r\n var selectedDate = event.target.value;\r\n if (selectedDate === '') {\r\n fromDateInput.classList.add('error');\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n fromDateInput.classList.remove('error');\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n retrieveData.fromDate = selectedDate;\r\n // temp cache data\r\n tmpFromDate = selectedDate;\r\n });\r\n\r\n applyFilterBtn.addEventListener('click', event => {\r\n POPUP.hide(filterPopup);\r\n saveFilterData({\r\n alphaId: tmpAlphaId,\r\n alphaName: tmpAlphaName,\r\n betaId: tmpBetaId,\r\n betaName: tmpBetaName,\r\n locationId: tmpLocationId,\r\n locationName: tmpLocationName,\r\n consumerId: tmpConsumerId,\r\n consumerName: tmpConsumerName,\r\n categoryId: tmpCategoryId,\r\n categoryName: tmpCategoryName,\r\n toDate: tmpToDate,\r\n fromDate: tmpFromDate,\r\n show: tmpShow\r\n });\r\n populateSelectedFilterValues();\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, populateOverviewTable);\r\n });\r\n }\r\n // Dropdowns\r\n //------------------------------------\r\n function populateAlphas(alphas) {\r\n var data = alphas.map(a => {\r\n var value = a.personId;\r\n var text = `${a.lastName}, ${a.firstName}`;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n if (filterData.alpha) {\r\n dropdown.populate(alphaDropdown, data, filterData.alpha);\r\n } else {\r\n dropdown.populate(alphaDropdown, data);\r\n filterData.alpha = data[0].value;\r\n filterData.alphaName = data[0].text;\r\n }\r\n }\r\n function populateBetas(betas) {\r\n var data = betas.map(b => {\r\n var value = b.personId;\r\n var text = `${b.lastName}, ${b.firstName}`;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n var filteredBetas = betas.filter(b => b.personId === filterData.beta);\r\n\r\n if (filteredBetas.length > 0) {\r\n dropdown.populate(betaDropdown, data, filterData.beta);\r\n } else {\r\n dropdown.populate(betaDropdown, data);\r\n filterData.betaName = 'All Employees';\r\n }\r\n }\r\n function populateUserAndEmployeeDropdowns(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n allEmployees = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.getITReviewPageEmployeeListAndSubListResult,\r\n );\r\n\r\n var employeeobjectArray = [].slice.call(xmlDoc.getElementsByTagName('employeeobject'));\r\n employeeobjectArray.forEach(employeeObject => {\r\n var alphaNode = [].slice.call(employeeObject.getElementsByTagName('alpha'))[0];\r\n var betasNode = [].slice.call(employeeObject.getElementsByTagName('beta'));\r\n var alpha = {\r\n personId: [].slice.call(alphaNode.getElementsByTagName('personid'))[0].textContent,\r\n firstName: [].slice.call(alphaNode.getElementsByTagName('firstname'))[0].textContent,\r\n lastName: [].slice.call(alphaNode.getElementsByTagName('lastname'))[0].textContent,\r\n userName: [].slice.call(alphaNode.getElementsByTagName('username'))[0].textContent,\r\n };\r\n var betas = [];\r\n if (betasNode !== undefined) {\r\n betasNode.forEach(betaNode => {\r\n var beta = {\r\n personId: [].slice.call(betaNode.getElementsByTagName('personid'))[0].textContent,\r\n firstName: [].slice.call(betaNode.getElementsByTagName('firstname'))[0].textContent,\r\n lastName: [].slice.call(betaNode.getElementsByTagName('lastname'))[0].textContent,\r\n userName: [].slice.call(betaNode.getElementsByTagName('username'))[0].textContent,\r\n };\r\n betas.push(beta);\r\n });\r\n }\r\n var alphaAndBeta;\r\n if (betas.length > 0) {\r\n alphaAndBeta = {\r\n alpha: alpha,\r\n betas: betas,\r\n };\r\n } else {\r\n alphaAndBeta = {\r\n alpha: alpha,\r\n betas: [],\r\n };\r\n }\r\n allEmployees.push(alphaAndBeta);\r\n });\r\n return allEmployees;\r\n }\r\n\r\n alphaBetaData = decipherXML(res);\r\n var defaultAlpha;\r\n var alphas = [];\r\n // move default alpha to start\r\n alphaBetaData = alphaBetaData.filter(d => {\r\n if (d.alpha.personId === $.session.PeopleId) defaultAlpha = d;\r\n return d.alpha.personId !== $.session.PeopleId;\r\n });\r\n alphaBetaData.unshift(defaultAlpha);\r\n // set aside alphas\r\n alphaBetaData.forEach(d => {\r\n if (d !== undefined) {\r\n alphas.push(d.alpha);\r\n }\r\n });\r\n // initial population of dropdowns\r\n populateAlphas(alphas);\r\n if (!changedSelectedAlphaBetas) {\r\n populateBetas(alphaBetaData[0].betas);\r\n } else {\r\n populateBetas(changedSelectedAlphaBetas);\r\n }\r\n }\r\n function populateLocationsDropdown(res) {\r\n var data = res.map(r => {\r\n var value = r.ID;\r\n var text = r.Name;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n if (filterData.location) {\r\n dropdown.populate(locationDropdown, data, filterData.location);\r\n } else {\r\n dropdown.populate(locationDropdown, data);\r\n filterData.locationName = 'All Locations';\r\n }\r\n\r\n const showDropdownData = ([\r\n { id: 1, value: 'Unread', text: 'Unread' },\r\n { id: 2, value: 'Read', text: 'Read' },\r\n ]);\r\n showDropdownData.unshift({ id: null, value: 'All', text: 'All' }); \r\n dropdown.populate(showDropdown, showDropdownData, filterData.show); \r\n }\r\n\r\n function populateConsumersDropdown() {\r\n populateDropdownData = consumerDropdownData.map(el => {\r\n return {\r\n text: `${el.LN}, ${el.FN}`,\r\n value: el.id,\r\n };\r\n });\r\n populateDropdownData.unshift({ text: 'All', value: '%' });\r\n\r\n if (filterData.consumer) {\r\n dropdown.populate(consumerDropdown, populateDropdownData, filterData.consumer);\r\n } else {\r\n dropdown.populate(consumerDropdown, populateDropdownData);\r\n filterData.consumerName = 'All Consumers';\r\n }\r\n }\r\n\r\n function getConsumerDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getConsumersForCNFilter(res => {\r\n consumerDropdownData = res;\r\n populateConsumersDropdown();\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function populateCategoriesDropdown(res) {\r\n var data = res.map(r => {\r\n var value = r.subcategoryId;\r\n var text = r.incidentCategory;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n if (filterData.category) {\r\n dropdown.populate(categoryDropdown, data, filterData.category);\r\n } else {\r\n dropdown.populate(categoryDropdown, data);\r\n filterData.categoryName = 'All Categories';\r\n }\r\n }\r\n // Incident Overview Email Button and Popup\r\n async function showIncidentEmailPopup(incidentId) {\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n const incidentEmailPopup = POPUP.build({\r\n header: 'Email Report',\r\n id: 'sig_mainPopup',\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n const toAddress = input.build({\r\n label: 'Email To Addresses:',\r\n callbackType: 'input',\r\n id: 'toAddress',\r\n callback: event => {\r\n // If the toAddresses field is blank, disable the send button\r\n const inputField = document.getElementById('toAddress');\r\n if (inputField.value === '') {\r\n sendBtn.classList.add('disabled');\r\n } else {\r\n sendBtn.classList.remove('disabled');\r\n }\r\n\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.toAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const ccAddress = input.build({\r\n label: 'Email Cc Addresses:',\r\n callbackType: 'input',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.ccAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const bccAddress = input.build({\r\n label: 'Email Bcc Addresses:',\r\n callbackType: 'input',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.bccAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const emailSubject = input.build({\r\n label: 'Email Subject:',\r\n callbackType: 'input',\r\n value: 'Incidents [Composite] by Consumer, Date',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.emailSubject = event.target.value;\r\n },\r\n });\r\n\r\n const emailBody = input.build({\r\n label: 'Email Body:',\r\n callbackType: 'input',\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.emailBody = event.target.value;\r\n },\r\n });\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const sendBtn = button.build({\r\n id: 'incidentEmailSendBtn',\r\n text: 'send',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n incidentTrackingAjax.generateIncidentTrackingReport(\r\n incidentId,\r\n checkIfITReportIsReadyInterval,\r\n );\r\n POPUP.hide(incidentEmailPopup);\r\n },\r\n });\r\n\r\n const cancelBtn = button.build({\r\n id: 'incidentEmailPopup_cancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(incidentEmailPopup);\r\n },\r\n });\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n incidentEmailPopup.appendChild(toAddress);\r\n incidentEmailPopup.appendChild(ccAddress);\r\n incidentEmailPopup.appendChild(bccAddress);\r\n incidentEmailPopup.appendChild(emailSubject);\r\n incidentEmailPopup.appendChild(emailBody);\r\n\r\n const mainWrap = document.createElement('div');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(sendBtn);\r\n sendBtn.classList.add('disabled');\r\n btnWrap2.appendChild(cancelBtn);\r\n mainWrap.appendChild(btnWrap2);\r\n incidentEmailPopup.appendChild(mainWrap);\r\n\r\n POPUP.show(incidentEmailPopup);\r\n }\r\n\r\n // Repeatedly checks to see if the report is ready\r\n function checkIfITReportIsReadyInterval(res) {\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 1000;\r\n interval = setInterval(async () => {\r\n await checkITReportExists(res);\r\n }, intSeconds);\r\n }\r\n\r\n async function checkITReportExists(res) {\r\n await incidentTrackingAjax.checkIfITReportExists(res, callITReport);\r\n }\r\n\r\n // Retrieves the report when it is ready\r\n function callITReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n incidentTrackingAjax.sendIncidentTrackingReport(reportScheduleId, incidentTrackingEmailData);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n\r\n // Reset values of email data\r\n incidentTrackingEmailData = { emailSubject: 'Incidents [Composite] by Consumer, Date' };\r\n }\r\n }\r\n\r\n // OVERVIEW TABLE\r\n //------------------------------------\r\n function buildOverviewTable() {\r\n populateSelectedFilterValues();\r\n\r\n if (!$.session.incidentTrackingEmailIncident) {\r\n var tableOptions = {\r\n tableId: 'incidentOverviewTable',\r\n heading: 'Incident Overview',\r\n columnHeadings: ['Location', 'Entered By', 'Date', 'Time', 'Type', 'Consumer(s) Involved'],\r\n };\r\n } else {\r\n var tableOptions = {\r\n tableId: 'incidentOverviewTable',\r\n heading: 'Incident Overview',\r\n columnHeadings: ['Location', 'Entered By', 'Date', 'Time', 'Type', 'Consumer(s) Involved'],\r\n endIcon: true,\r\n };\r\n }\r\n\r\n overviewTable = table.build(tableOptions);\r\n DOM.ACTIONCENTER.appendChild(overviewTable);\r\n }\r\n function populateOverviewTable(res) {\r\n var incidents = {};\r\n res.forEach(r => {\r\n if (!incidents[r.incidentId]) {\r\n incidents[r.incidentId] = r;\r\n } else {\r\n const dupName = incidents[r.incidentId].consumerName.includes(r.consumerName);\r\n if (!dupName) {\r\n incidents[r.incidentId].consumerName += `, ${r.consumerName}`;\r\n }\r\n incidents[r.incidentId].viewedBy += `, ${r.viewedBy}`;\r\n }\r\n });\r\n\r\n var keys = Object.keys(incidents);\r\n const removeArray = [];\r\n var count = 0;\r\n var data = keys\r\n .filter(k => {\r\n var obj = incidents[k];\r\n\r\n if ($.session.incidentTrackingViewPerm.length !== 0) {\r\n if (\r\n obj.description !== '' &&\r\n !$.session.incidentTrackingViewPerm.includes(obj.description.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n .map(key => {\r\n var obj = incidents[key];\r\n\r\n var rowId = obj.incidentId;\r\n var location = obj.locationName;\r\n var enteredBy = obj.supervisorName;\r\n var date = obj.incidentDate.split(' ')[0];\r\n var time = UTIL.convertFromMilitary(obj.incidentTime);\r\n var category = obj.incidentCategory;\r\n var consumersInvolved = obj.consumerName.replace(/\\|/g, ', ');\r\n var viewedOn = obj.viewedOn ? true : false;\r\n var orginUser =\r\n obj.originallyEnteredBy.toLowerCase() === $.session.UserId.toLowerCase() ? true : false;\r\n var userHasViewed = obj.viewedBy.includes($.session.UserId) ? true : false;\r\n var showBold;\r\n\r\n if (!orginUser && !userHasViewed) {\r\n showBold = true;\r\n }\r\n \r\n if (filterData.show == 'Read' && showBold) {\r\n removeArray.push(count);\r\n }\r\n else if (filterData.show == 'Unread' && !showBold) {\r\n removeArray.push(count);\r\n }\r\n count = count + 1;\r\n var incidentEmailBtn = document.createElement('button');\r\n incidentEmailBtn.classList.add('btn', 'btn--secondary', 'btn--contained');\r\n incidentEmailBtn.textContent = 'EMAIL';\r\n incidentEmailBtn.style.zIndex = '9999';\r\n\r\n if (!$.session.incidentTrackingEmailIncident) {\r\n return {\r\n id: rowId,\r\n values: [location, enteredBy, date, time, category, consumersInvolved],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n onClick: async event => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: rowId,\r\n userId: $.session.UserId,\r\n });\r\n DOM.scrollToTopOfPage();\r\n reviewIncident.init(event.target.id);\r\n },\r\n };\r\n } else {\r\n return {\r\n id: rowId,\r\n values: [location, enteredBy, date, time, category, consumersInvolved],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n endIcon: incidentEmailBtn.outerHTML,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n var isParentRow = e.target.parentNode.classList.contains('table__row');\r\n if (!isParentRow) return;\r\n\r\n showIncidentEmailPopup(obj.incidentId);\r\n },\r\n onClick: async event => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: rowId,\r\n userId: $.session.UserId,\r\n });\r\n DOM.scrollToTopOfPage();\r\n reviewIncident.init(event.target.id);\r\n },\r\n };\r\n }\r\n });\r\n\r\n for (let i = removeArray.length - 1; i >= 0; i--)\r\n data.splice(removeArray[i], 1);\r\n\r\n data.sort(function (a, b) {\r\n var dateOne = UTIL.formatDateToIso(a.values[2]);\r\n var dateTwo = UTIL.formatDateToIso(b.values[2]);\r\n dateOne = new Date(dateOne);\r\n dateTwo = new Date(dateTwo);\r\n var newDateOne = dateOne.getTime();\r\n var newDateTwo = dateTwo.getTime();\r\n\r\n var timeOne = a.values[3];\r\n var timeTwo = b.values[3];\r\n timeOne = UTIL.convertToMilitary(timeOne);\r\n timeTwo = UTIL.convertToMilitary(timeTwo);\r\n timeOne = parseFloat(`${parseInt(timeOne.split(':')[0])}.${parseInt(timeOne.split(':')[1])}`);\r\n timeTwo = parseFloat(`${parseInt(timeTwo.split(':')[0])}.${parseInt(timeTwo.split(':')[1])}`);\r\n\r\n if (newDateOne === newDateTwo) {\r\n return timeOne - timeTwo;\r\n }\r\n\r\n return newDateOne > newDateTwo ? -1 : 1;\r\n });\r\n \r\n table.populate(overviewTable, data);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('incidentTracking-overview');\r\n DOM.clearActionCenter();\r\n\r\n retrieveData.supervisorId = $.session.PeopleId;\r\n retrieveData.token = $.session.Token;\r\n retrieveData.viewCaseLoad = $.session.incidentTrackingViewCaseLoad;\r\n retrieveData.toDate = getToDateValue();\r\n retrieveData.fromDate = getFromDateValue();\r\n\r\n setupFiltering();\r\n\r\n //never need mini roster on reviews\r\n roster2.removeMiniRosterBtn();\r\n\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, function (results) {\r\n buildOverviewTable();\r\n populateOverviewTable(results);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const OODFormTransportation = (() => {\r\n\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n\r\n // buttons\r\nlet saveNoteBtn;\r\nlet saveAndNewNoteBtn;\r\nlet cancelNoteBtn;\r\nlet updateNoteBtn;\r\nlet deleteNoteBtn;\r\n\r\n// OOD Transportation Edit Data\r\nlet consumerId;\r\n//let personId;\r\nlet OODTransportationId;\r\nlet serviceDate;\r\nlet startTime;\r\nlet endTime;\r\nlet startLocation;\r\nlet endLocation;\r\nlet numberInVehicle; \r\n\r\n//OOD Transportation Data\r\nlet caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet referenceNumber;\r\n\r\nlet formReadOnly;\r\n\r\nlet currentEntryUserId;\r\n\r\n async function init(OODTransportationData, currentConsumer, selectedConsumerServiceId, selectedConsumerReferenceNumber, currentRecordUserId, selectedServiceDate, clickSource = 'OODGrid') {\r\n\r\n formReadOnly = false;\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (OODTransportationData && Object.keys(OODTransportationData).length !== 0) {\r\n // consumerId = OODTransportationData[0].consumerId; // consumer_id from consumers table for the selected consumer\r\n // personId = OODTransportationData[0].personId; //the person_id from the persons table of the logged in user\r\n OODTransportationId = OODTransportationData[0].OODTransportationId;\r\n serviceDate = OODTransportationData[0].serviceDate; // Service Date from page\r\n startTime = OODTransportationData[0].startTime; // Start Time from page\r\n endTime = OODTransportationData[0].endTime; // end Time from page\r\n numberInVehicle = OODTransportationData[0].numberInVehicle; // # In Vehicle Per Trip from page\r\n startLocation = OODTransportationData[0].startLocation; // Start Location Street/City from page\r\n endLocation = OODTransportationData[0].endLocation; // End Location Street/City from page\r\n userId = $.session.UserId; // user_id from users_groups of the user who made the last update to the entry\r\n \r\n } else {\r\n // consumerId = OODTransportationData[0].consumerId; // consumer_id from consumers table for the selected consumer\r\n // personId = OODTransportationData[0].personId; //the person_id from the persons table of the logged in user\r\n OODTransportationId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n startTime = '';\r\n endTime = '';\r\n numberInVehicle = '';\r\n startLocation = '';\r\n endLocation = '';\r\n userId = $.session.UserId;\r\n referenceNumber = selectedConsumerReferenceNumber; // the value from consumer_services_master.reference_number for the service selected from NEW ENTRY form in previous page\r\n\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Service Date',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n numberInVehicleInput = input.build({\r\n label: '# in Vehicle Per Trip',\r\n type: 'number',\r\n style: 'secondary',\r\n value: numberInVehicle === '0' || numberInVehicle === '0.00' ? '' : numberInVehicle,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n\r\n startLocationInput = input.build({\r\n label: 'Start Location Street/City',\r\n value: startLocation,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n endLocationInput = input.build({\r\n label: 'End Location Street/City',\r\n value: endLocation,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n checkRequiredFields()\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length === 0)) {\r\n insertFormData('save');\r\n } \r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n checkRequiredFields()\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length === 0)) {\r\n insertFormData('saveandNew');\r\n } \r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n //TODO JOE; Look at DElete\r\n deleteConfirmation(OODTransportationId); \r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Transportation - OOD Form 10';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1'); \r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput); \r\n inputContainer0.appendChild(numberInVehicleInput);\r\n\r\n container.appendChild(inputContainer0);\r\n \r\n container.appendChild(startLocationInput);\r\n container.appendChild(endLocationInput);\r\n \r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (OODTransportationId == '0') ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n (OODTransportationId == '0') ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn) ;\r\n\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n var numInVehicleInput = numberInVehicleInput.querySelector('input');\r\n\r\n if (numInVehicleInput.value === '' || numInVehicleInput.value === 0 || numInVehicleInput.value <= 0) {\r\n numberInVehicleInput.classList.add('error');\r\n } else {\r\n numberInVehicleInput.classList.remove('error');\r\n }\r\n\r\n var startLocInput = startLocationInput.querySelector('textarea');\r\n\r\n if (startLocInput.value === '') {\r\n startLocationInput.classList.add('error');\r\n } else {\r\n startLocationInput.classList.remove('error');\r\n }\r\n\r\n var endLocInput = endLocationInput.querySelector('textarea');\r\n\r\n if (endLocInput.value === '') {\r\n endLocationInput.classList.add('error');\r\n } else {\r\n endLocationInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled')\r\n }\r\n\r\n }\r\n\r\nfunction checkEndInputTime() {\r\n\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value))\r\n {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck')\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n \r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n}\r\n\r\nfunction checkStartInputTime() {\r\n\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value))\r\n {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n}\r\n\r\nfunction checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet =\r\n tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) >\r\n Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n}\r\n\r\n\r\nfunction validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n}\r\n\r\n function setupEvents() {\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n \r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n numberInVehicleInput.addEventListener('input', event => {\r\n numberInVehicle = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n numberInVehicleInput.addEventListener('keypress', event => {\r\n numberInVehicle = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n });\r\n\r\n startLocationInput.addEventListener('input', event => {\r\n startLocation = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n endLocationInput.addEventListener('input', event => {\r\n endLocation = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n \r\n \r\n }\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n\t\t const wrap = document.createElement('div');\r\n\t\t wrap.classList.add('planConsumerCard');\r\n\t\r\n\t\t wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n OODTransportationId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n numberInVehicle,\r\n startLocation,\r\n endLocation,\r\n userId,\r\n };\r\n\r\n OODAjax.updateForm10TransportationData(data, function(results) {\r\n if (results.includes(\"Error\")) {\r\n return;\r\n } else {\r\n\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n\r\n }\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n numberInVehicle,\r\n startLocation,\r\n endLocation, \r\n userId,\r\n referenceNumber,\r\n };\r\n\r\n OODAjax.insertForm10TransportationData(data, function(results) {\r\n if (results.includes(\"Error\")) {\r\n return;\r\n } else {\r\n\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n } \r\n }\r\n });\r\n }\r\n //TODO JOE : Look into DElete for Transporation\r\n function deleteConfirmation(OODTransportationId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODForm10TransportationEntry(OODTransportationId); \r\n if (result.deleteOODForm10TransportationEntryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n return {\r\n init,\r\n \r\n };\r\n})();\r\n","const OODForm4MonthlyPlacement = (() => {\r\n\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let SAMLevelDropdown;\r\n let employerDropdown;\r\n let contactMethodDropdown;\r\n let jobSeekerPresentDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let outcomeDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let TSCNotifiedDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let applicationSubmittedDropdown; \r\n let interviewDropdown; \r\n let bilingualSupplementDropdown;\r\n let narrativeOutcomeInput;\r\n\r\n // buttons\r\nlet saveNoteBtn;\r\nlet saveAndNewNoteBtn;\r\nlet cancelNoteBtn;\r\nlet updateNoteBtn;\r\nlet deleteNoteBtn;\r\n\r\n// Case Note Edit Data\r\nlet consumerId;\r\nlet caseNoteId;\r\nlet serviceDate;\r\nlet startTime;\r\nlet endTime;\r\nlet SAMLevel;\r\nlet employer;\r\nlet contactType;\r\nlet jobSeekerPresent;\r\nlet outcome;\r\nlet TSCNotified;\r\nlet bilingualSupplement;\r\nlet notes;\r\nlet application;\r\nlet interview;\r\n\r\n//Case Note Data\r\nlet caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet referenceNumber;\r\n\r\nlet formReadOnly = false;\r\n\r\nlet currentEntryUserId;\r\n\r\n async function init(caseNoteData, currentConsumer, selectedConsumerServiceId, selectedConsumerReferenceNumber, currentRecordUserId, selectedServiceDate, clickSource = 'OODGrid') {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate;\r\n startTime = caseNoteData[0].startTime;\r\n endTime = caseNoteData[0].endTime;\r\n SAMLevel = caseNoteData[0].SAMLevel;\r\n employer = caseNoteData[0].employer;\r\n contactType = caseNoteData[0].contactType;\r\n jobSeekerPresent = caseNoteData[0].jobSeekerPresent; //-- REMOVED FROM FORM ON 4/8/22\r\n outcome = caseNoteData[0].outcome; //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified = caseNoteData[0].TSCNotified; //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement = caseNoteData[0].bilingualSupplement;\r\n notes = caseNoteData[0].notes;\r\n application = caseNoteData[0].application;\r\n interview = caseNoteData[0].interview;\r\n \r\n } else {\r\n\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n startTime = '';\r\n endTime = '';\r\n SAMLevel = '';\r\n employer = '';\r\n contactType = '';\r\n jobSeekerPresent = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n outcome = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement = '';\r\n notes = '';\r\n application = '';\r\n interview = '';\r\n\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Service Date',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: \"SAMLevelDropdown\",\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n \r\n employerDropdown = dropdown.build({\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n value: employer,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: \"Contact Method\",\r\n dropdownId: \"contactMethodDropdown\",\r\n value: contactType,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n applicationSubmittedDropdown = dropdown.build({\r\n label: 'Application Submitted',\r\n dropdownId: \"applicationSubmittedDropdown\",\r\n value: application,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n interviewDropdown = dropdown.build({\r\n label: 'Interview',\r\n dropdownId: \"interviewDropdown\",\r\n value: interview,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n jobSeekerPresentDropdown = dropdown.build({\r\n label: 'Job Seeker Present ?',\r\n dropdownId: \"jobSeekerPresentDropdown\",\r\n value: jobSeekerPresent,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n outcomeDropdown = dropdown.build({\r\n label: 'Outcome',\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcome,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotifiedDropdown = dropdown.build({\r\n label: 'TSC Notified ?',\r\n dropdownId: \"TSCNotifiedDropdown\",\r\n value: TSCNotified,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n bilingualSupplementDropdown = dropdown.build({\r\n label: 'Bilingual Supplement ?',\r\n dropdownId: \"bilingualSupplementDropdown\",\r\n value: bilingualSupplement,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n narrativeOutcomeInput = input.build({\r\n label: 'Narrative/Outcome',\r\n value: notes,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n insertFormData('save'); \r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId); \r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Monthly Placement - OOD Form 4';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1'); \r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n \r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer1.appendChild(SAMLevelDropdown);\r\n inputContainer1.appendChild(employerDropdown);\r\n inputContainer1.appendChild(contactMethodDropdown);\r\n \r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n //inputContainer2.appendChild(jobSeekerPresentDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n //inputContainer2.appendChild(outcomeDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n //inputContainer2.appendChild(TSCNotifiedDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n inputContainer2.appendChild(applicationSubmittedDropdown);\r\n inputContainer2.appendChild(interviewDropdown);\r\n inputContainer2.appendChild(bilingualSupplementDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeOutcomeInput);\r\n \r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (caseNoteId == '0') ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n (caseNoteId == '0') ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn) ;\r\n\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateConsumerEmployersDropdown(currentConsumer.id);\r\n populateContactTypeDropdown();\r\n populateOutcomeDropdown();\r\n \r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n\tasync function populateConsumerEmployersDropdown(currentConsumerId) { \r\n\t\t\r\n\t\tconst {\r\n\t\t\tgetActiveEmployersResult: employers,\r\n\t\t} = await OODAjax.getActiveEmployersAsync();\r\n\t // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n\t let data = employers.map((employr) => ({\r\n\t\t id: employr.employerId, \r\n\t\t value: employr.employerId, \r\n\t\t text: (employr.address1 == '') ? employr.employerName : employr.employerName + ' -- ' + employr.address1,\r\n\t })); \r\n\r\n \t\tconst index = data.findIndex((x) => x.id == employer);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note employer not in the employers DDL\r\n\t\t\t\t\t\t}\r\n\r\n var filtereddata = data.filter((x) => x.id != 0);\r\n\r\n\t filtereddata.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n\t dropdown.populate(\"employerDropdown\", filtereddata, employer); \r\n }\r\n\r\n\t async function populateContactTypeDropdown() { \r\n\t\t\r\n const {\r\n getContactTypesResult: contactTypes,\r\n } = await OODAjax.getContactTypesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactTypes.map((contactType) => ({\r\n id: contactType.contactCode, \r\n value: contactType.contactCode, \r\n text: contactType.contactCaption,\r\n })); \r\n\r\n const index = data.findIndex((x) => x.id == contactType);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note contactType not in the contactTypes DDL\r\n\t\t\t\t\t\t}\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"contactMethodDropdown\", data, contactType); \r\n }\r\n\r\n async function populateOutcomeDropdown() { \r\n\t\t\r\n const {\r\n getOutcomesResult: outcomes,\r\n } = await OODAjax.getOutcomesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = outcomes.map((outcome) => ({\r\n id: outcome.outcomeCode, \r\n value: outcome.outcomeCode, \r\n text: outcome.outcomeCaption,\r\n })); \r\n\r\n const index = data.findIndex((x) => x.id == outcome);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note outcome not in the outcomes DDL\r\n\t\t\t\t\t\t}\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"outcomeDropdown\", data, outcome); \r\n }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n \r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // dropdown.populate(jobSeekerPresentDropdown, yesNoDropdownData, jobSeekerPresent); //-- REMOVED FROM FORM ON 4/8/22\r\n // dropdown.populate(TSCNotifiedDropdown, yesNoDropdownData, TSCNotified); //-- REMOVED FROM FORM ON 4/8/22\r\n dropdown.populate(applicationSubmittedDropdown, yesNoDropdownData, application); \r\n dropdown.populate(interviewDropdown, yesNoDropdownData, interview); \r\n dropdown.populate(bilingualSupplementDropdown, yesNoDropdownData, bilingualSupplement);\r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!employer || employer === '') {\r\n employerDropdown.classList.add('error');\r\n } else {\r\n employerDropdown.classList.remove('error');\r\n }\r\n\r\n if (!contactType || contactType === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n if (!application || application === '') {\r\n applicationSubmittedDropdown.classList.add('error');\r\n } else {\r\n applicationSubmittedDropdown.classList.remove('error');\r\n }\r\n\r\n if (!interview || interview === '') {\r\n interviewDropdown.classList.add('error');\r\n } else {\r\n interviewDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!jobSeekerPresent || jobSeekerPresent === '') {\r\n jobSeekerPresentDropdown.classList.add('error');\r\n } else {\r\n jobSeekerPresentDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!outcome || outcome === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!TSCNotified || TSCNotified === '') {\r\n TSCNotifiedDropdown.classList.add('error');\r\n } else {\r\n TSCNotifiedDropdown.classList.remove('error');\r\n }\r\n\r\n if (!bilingualSupplement || bilingualSupplement === '') {\r\n bilingualSupplementDropdown.classList.add('error');\r\n } else {\r\n bilingualSupplementDropdown.classList.remove('error');\r\n }\r\n\r\n var noteInput = narrativeOutcomeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeOutcomeInput.classList.add('error');\r\n } else {\r\n narrativeOutcomeInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled')\r\n }\r\n\r\n }\r\n\r\nfunction checkEndInputTime() {\r\n\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value))\r\n {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck')\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n \r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n}\r\n\r\nfunction checkStartInputTime() {\r\n\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value))\r\n {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n}\r\n\r\nfunction checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet =\r\n tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) >\r\n Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n}\r\n\r\n\r\nfunction validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n}\r\n\r\n function setupEvents() {\r\n\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n employerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n employer = '';\r\n } else {\r\n employer = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n contactType = '';\r\n } else {\r\n contactType = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n applicationSubmittedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n application = '';\r\n } else {\r\n application = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n interviewDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n interview = '';\r\n } else {\r\n interview = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n jobSeekerPresentDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n jobSeekerPresent = '';\r\n } else {\r\n jobSeekerPresent = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n outcome = '';\r\n } else {\r\n outcome = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotifiedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n TSCNotified = '';\r\n } else {\r\n TSCNotified = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n bilingualSupplementDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n bilingualSupplement = '';\r\n } else {\r\n bilingualSupplement = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n \r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeOutcomeInput.addEventListener('input', event => {\r\n notes = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n \r\n }\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n\t\t const wrap = document.createElement('div');\r\n\t\t wrap.classList.add('planConsumerCard');\r\n\t\r\n\t\t wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n employer,\r\n contactType,\r\n jobSeekerPresent, //-- REMOVED FROM FORM ON 4/8/22\r\n outcome, //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified, //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement,\r\n notes,\r\n userId,\r\n application, \r\n interview,\r\n };\r\n\r\n OODAjax.updateForm4MonthlyPlacementEditData(data, function(results) {\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n \r\n });\r\n\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n employer,\r\n contactType,\r\n jobSeekerPresent, //-- REMOVED FROM FORM ON 4/8/22\r\n outcome, //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified, //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement,\r\n notes,\r\n caseManagerId,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n application, \r\n interview,\r\n };\r\n\r\n OODAjax.insertForm4MonthlyPlacementEditData(data, function(results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n\r\n }\r\n\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId); \r\n if (result.deleteOODFormEntryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n return {\r\n init,\r\n \r\n };\r\n})();\r\n","const OODForm4MonthlySummary = (() => {\r\n\r\n // Inputs\r\n let monthYearDropdown;\r\n let referenceNumberDropdown;\r\n let nextScheduledReviewInput;\r\n let employmentGoalInput;\r\n let referralQuestionsInput;\r\n let individualsInputInput;\r\n let issuesConcernswithProgressInput;\r\n let planGoalsNextMonthInput;\r\n let numberConsumerContactsInput;\r\n let numberEmployerContactsbyConsumerInput;\r\n let numberEmployerContactsbyStaffInput;\r\n let numberMonthsinJobDevelopmentInput;\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown\r\n let emReviewDateDBValue; // monthYearDropdown \r\n let emReferenceNumber; // referenceNumberDropdown\r\n let emNextScheduledReview; // nextScheduledReviewInput\r\n let emEmploymentGoal; // employmentGoalInput\r\n let emReferralQuestions; //referralQuestionsInput\r\n let emIndivInputonSearch; // individualsInputInput\r\n let emPotentialIssueswithProgress; // issuesConcernswithProgressInput\r\n let emPlanGoalsNextMonth; // planGoalsNextMonthInput\r\n let emNumberofConsumerContacts; // numberConsumerContactsInput\r\n let emNumberEmployerContactsbyConsumer; // numberEmployerContactsbyConsumerInput\r\n let emNumberEmployerContactsbyStaff; // numberEmployerContactsbyStaffInput\r\n let emNumberMonthsJobDevelopment; // numberMonthsinJobDevelopmentInput\r\n\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n//let caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet reviewStartDate;\r\nlet reviewEndDate;\r\n\r\nlet formReadOnly = false;\r\nconst FORMNUMBER = '4'; // Form 4\r\n\r\nlet OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(emReviewData, currentConsumer, selectedServiceId, currentRecordUserId, clickSource = 'OODGrid') {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate); \r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate); \r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emEmploymentGoal = emReviewData.emEmploymentGoal;\r\n emReferralQuestions = emReviewData.emReferralQuestions; //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch = emReviewData.emIndivInputonSearch;\r\n emPotentialIssueswithProgress = emReviewData.emPotentialIssueswithProgress;\r\n emPlanGoalsNextMonth = emReviewData.emPlanGoalsNextMonth; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts = emReviewData.emNumberofConsumerContacts; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer = emReviewData.emNumberEmployerContactsbyConsumer; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff = emReviewData.emNumberEmployerContactsbyStaff; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment = emReviewData.emNumberMonthsJobDevelopment; //-- REMOVED FROM FORM ON 4/7/22\r\n\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear(); \r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1); \r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emEmploymentGoal = '';\r\n emReferralQuestions = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch = '';\r\n emPotentialIssueswithProgress = '';\r\n emPlanGoalsNextMonth = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n \r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n \r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Monthly Placement -- OOD Form 4 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: \"monthYearDropdown\",\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: \"referenceNumberDropdown\",\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Next Scheduled Review',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n // employmentGoalInput textarea\r\n employmentGoalInput = input.build({\r\n label: 'Employment Goal',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emEmploymentGoal,\r\n readonly: formReadOnly,\r\n charLimit: 256,\r\n forceCharLimit: true,\r\n });\r\n // employmentGoalInput.classList.add('OODTextArea');\r\n\r\n // referralQuestionsInput textarea -- REMOVED FROM FORM ON 4/7/22\r\n referralQuestionsInput = input.build({\r\n label: 'Referral Questions',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emReferralQuestions,\r\n readonly: formReadOnly,\r\n });\r\n // referralQuestionsInput.classList.add('introTextArea');\r\n\r\n // individualsInput textarea\r\n individualsInputInput = input.build({\r\n label: `Individual's Self-Assessment`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emIndivInputonSearch,\r\n readonly: formReadOnly,\r\n });\r\n // individualsInputInput.classList.add('introTextArea');\r\n \r\n // issuesConcernswithProgress textarea\r\n issuesConcernswithProgressInput = input.build({\r\n label: `Provider's Assessment & Recommendations`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emPotentialIssueswithProgress,\r\n readonly: formReadOnly,\r\n });\r\n // issuesConcernswithProgressInput.classList.add('introTextArea');\r\n \r\n // planGoalsNextMonth textarea -- REMOVED FROM FORM ON 4/7/22\r\n planGoalsNextMonthInput = input.build({\r\n label: 'Plan/Goals for Next Month',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emPlanGoalsNextMonth,\r\n readonly: formReadOnly,\r\n });\r\n // planGoalsNextMonthInput.classList.add('introTextArea');\r\n planGoalsNextMonthInput.addEventListener('input', e => {\r\n emPlanGoalsNextMonth = e.target.value;\r\n // updateIntroduction();\r\n });\r\n \r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberConsumerContactsInput = input.build({\r\n id: \"numberConsumerContactsInput\",\r\n label: \"No. of Consumer Contacts\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberofConsumerContacts,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyConsumerInput = input.build({\r\n id: \"numberEmployerContactsbyConsumerInput\",\r\n label: \"No. of Employer Contacts by Consumer\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberEmployerContactsbyConsumer,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyStaffInput = input.build({\r\n id: \"numberEmployerContactsbyStaffInput\",\r\n label: \"No. of Employer Contacts by Staff\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberEmployerContactsbyStaff,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberMonthsinJobDevelopmentInput = input.build({\r\n id: \"numberMonthsinJobDevelopmentInput\",\r\n label: \"No. of Months in Job Development\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberMonthsJobDevelopment,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n insertFormData('save'); \r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId); \r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n \r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n container.appendChild(employmentGoalInput); \r\n container.appendChild(individualsInputInput);\r\n container.appendChild(issuesConcernswithProgressInput);\r\n\r\n // container.appendChild(planGoalsNextMonthInput); //-- REMOVED FROM FORM ON 4/7/22\r\n// container.appendChild(referralQuestionsInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // const inputContainer2 = document.createElement('div');\r\n // inputContainer2.classList.add('ood_form4monthlysummary_inputContainer2');\r\n\r\n // inputContainer2.appendChild(numberConsumerContactsInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // inputContainer2.appendChild(numberEmployerContactsbyConsumerInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // inputContainer2.appendChild(numberEmployerContactsbyStaffInput); //-- REMOVED FROM FORM ON 4/7/22\r\n //// inputContainer2.appendChild(numberMonthsinJobDevelopmentInput); //-- REMOVED FROM FORM ON 4/7/22\r\n\r\n // container.appendChild(inputContainer2);\r\n\r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (emReviewId == '0') ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n (emReviewId == '0') ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn) ;\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n \r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n\t // container.appendChild(OODMonthlySummariesTable);\r\n \r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateReferenceNumberDropdown();\r\n populateStaticDropDowns();\r\n\r\n checkRequiredFields(); \r\n\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate = (thisDate.getMonth() + 1).toString().padStart(2, \"0\") + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n\r\n }\r\n\r\n async function populateReferenceNumberDropdown() { \r\n \r\n setReviewStartandEndDates();\r\n\r\n const {\r\n getConsumerReferenceNumbersResult: referencenumbers,\r\n } = await OODAjax.getConsumerReferenceNumbersAsync(consumerId, reviewStartDate, reviewEndDate, FORMNUMBER);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map((referencenumber) => ({\r\n id: referencenumber.referenceNumber, \r\n value: referencenumber.referenceNumber, \r\n text: referencenumber.referenceNumber,\r\n })); \r\n\r\n \r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n } \r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"referenceNumberDropdown\", data, emReferenceNumber); \r\n\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue)\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n\r\n // no reference Numbers\r\n\t\t\tlet noReferenceNumberPopup = POPUP.build({\r\n\t\t\t\theader: \"No Reference Numbers Found\",\r\n\t\t\t\thideX: true,\r\n\t\t\t\tid: \"noReferenceNumberPopup\"\r\n\t\t\t}); \r\n\r\n\t\t\tlet OKBtn = button.build({\r\n\t\t\t\ttext: 'Ok',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t POPUP.hide(noReferenceNumberPopup);\r\n\t\t\t\t // overlay.hide();\r\n\r\n\t\t\t\t},\r\n\t\t\t });\r\n\r\n\t\t\t let btnWrap = document.createElement(\"div\");\r\n\t\t\t let warningMessage = document.createElement('p');\r\n\t\t\t warningMessage.innerHTML = 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n\t\t\t btnWrap.classList.add(\"btnWrap\");\r\n\t\t\t btnWrap.appendChild(OKBtn); \r\n\t\t\t //noServicesPopup.appendChild(consumerServicesDropdown);\r\n\t\t\t noReferenceNumberPopup.appendChild(warningMessage);\r\n\t\t\t noReferenceNumberPopup.appendChild(btnWrap);\r\n\t\t\t \toverlay.show();\r\n\t\t\t POPUP.show(noReferenceNumberPopup);\r\n\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n \r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate: (firstDay.getMonth() +1).toString().padStart(2,\"0\") + '/' + (firstDay.getFullYear().toString()),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map((thisDate) => ({\r\n id: thisDate.fulldate, \r\n value: thisDate.partialdate, \r\n text: thisDate.partialdate,\r\n })); \r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"monthYearDropdown\", data, emReviewDate); \r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var employmentGoalInpt = employmentGoalInput.querySelector('textarea');\r\n if (employmentGoalInpt.value === '') {\r\n employmentGoalInput.classList.add('error');\r\n } else {\r\n employmentGoalInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var referralQuestionsInpt = referralQuestionsInput.querySelector('textarea'); //-- REMOVED FROM FORM ON 4/7/22\r\n if (referralQuestionsInpt.value === '') {\r\n referralQuestionsInput.classList.add('error');\r\n } else {\r\n referralQuestionsInput.classList.remove('error');\r\n }\r\n\r\n var individualsInputInpt = individualsInputInput.querySelector('textarea');\r\n if (individualsInputInpt.value === '') {\r\n individualsInputInput.classList.add('error');\r\n } else {\r\n individualsInputInput.classList.remove('error');\r\n }\r\n\r\n var issuesConcernswithProgressInpt = issuesConcernswithProgressInput.querySelector('textarea');\r\n if (issuesConcernswithProgressInpt.value === '') {\r\n issuesConcernswithProgressInput.classList.add('error');\r\n } else {\r\n issuesConcernswithProgressInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var planGoalsNextMonthInpt = planGoalsNextMonthInput.querySelector('textarea');\r\n if (planGoalsNextMonthInpt.value === '') {\r\n planGoalsNextMonthInput.classList.add('error');\r\n } else {\r\n planGoalsNextMonthInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberConsumerContactsInpt = numberConsumerContactsInput.querySelector('#numberConsumerContactsInput'); \r\n if (numberConsumerContactsInpt.value === '' ) {\r\n numberConsumerContactsInput.classList.add('error');\r\n } else {\r\n numberConsumerContactsInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberEmployerContactsbyConsumerInpt = numberEmployerContactsbyConsumerInput.querySelector('#numberEmployerContactsbyConsumerInput');\r\n if (numberEmployerContactsbyConsumerInpt.value === '' ) {\r\n numberEmployerContactsbyConsumerInput.classList.add('error');\r\n } else {\r\n numberEmployerContactsbyConsumerInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberEmployerContactsbyStaffInpt = numberEmployerContactsbyStaffInput.querySelector('#numberEmployerContactsbyStaffInput');\r\n if (numberEmployerContactsbyStaffInpt.value === '' ) {\r\n numberEmployerContactsbyStaffInput.classList.add('error');\r\n } else {\r\n numberEmployerContactsbyStaffInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberMonthsinJobDevelopmentInpt = numberMonthsinJobDevelopmentInput.querySelector('#numberMonthsinJobDevelopmentInput');\r\n if (numberMonthsinJobDevelopmentInpt.value === '' ) {\r\n numberMonthsinJobDevelopmentInput.classList.add('error');\r\n } else {\r\n numberMonthsinJobDevelopmentInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n \r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n \r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n \r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled')\r\n }\r\n \r\n }\r\n\r\n function setupEvents() {\r\n \r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] -1, 1)\r\n emReviewDateDBValue = updatedFullDate;\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n \r\n });\r\n // nextScheduledReviewInput.addEventListener('keydown', event => {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // });\r\n\r\n\r\n employmentGoalInput.addEventListener('input', event => {\r\n emEmploymentGoal = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n referralQuestionsInput.addEventListener('input', event => {\r\n emReferralQuestions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n individualsInputInput.addEventListener('input', event => {\r\n emIndivInputonSearch = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n issuesConcernswithProgressInput.addEventListener('input', event => {\r\n emPotentialIssueswithProgress = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n planGoalsNextMonthInput.addEventListener('input', event => {\r\n emPlanGoalsNextMonth = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberConsumerContactsInput.addEventListener('input', event => {\r\n emNumberofConsumerContacts = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyConsumerInput.addEventListener('input', event => {\r\n emNumberEmployerContactsbyConsumer = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyStaffInput.addEventListener('input', event => {\r\n emNumberEmployerContactsbyStaff = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberMonthsinJobDevelopmentInput.addEventListener('input', event => {\r\n emNumberMonthsJobDevelopment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n\r\n\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: ['Month','Individual Input on Search', 'Potential Issues/Concerns with Progress', 'Plan/Goals for Next Month'],\r\n endIcon: false,\r\n \r\n };\r\n \r\n\t // FAKE DATA : build table data -- see forms.js line 93\r\n\t\t const tableData = [{ values : ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko']}, \r\n\t\t \t\t\t\t\t{ values : ['11/2021', 'No, this is my input', 'Yes, this is my concern', 'No plans here either']} ];\r\n\r\n\r\n\t\t const oTable = table.build(tableOptions);\r\n\t\t table.populate(oTable, tableData);\r\n\r\n\t return oTable;\r\n }\r\n\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n \r\n consumer.card.classList.remove('highlighted');\r\n \r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n \r\n wrap.appendChild(consumer.card);\r\n \r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate: emReviewDateDBValue.getFullYear() + '-' + (emReviewDateDBValue.getMonth() +1).toString().padStart(2, \"0\") + '-' + '01', \r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]), \r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emEmploymentGoal,\r\n emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch,\r\n emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId,\r\n };\r\n\r\n OODAjax.updateForm4MonthlySummary(data, function(results) {\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n \r\n });\r\n \r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return DBValue.getFullYear() + '-' + (DBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '1';\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate: emReviewDateDBValue.getFullYear() + '-' + (emReviewDateDBValue.getMonth() +1).toString().padStart(2, \"0\") + '-' + '01', \r\n emReferenceNumber,\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emEmploymentGoal,\r\n emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch,\r\n emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId,\r\n serviceId,\r\n };\r\n\r\n OODAjax.insertForm4MonthlySummary(data, function(results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n\r\n }\r\n\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId); \r\n if (result.deleteFormMonthlySummaryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n\r\n return {\r\n init,\r\n \r\n };\r\n })();","const Tier1andJDPlanForm = (() => {\r\n //Inputs\r\n let serviceDateInput; // Default Service Date to the date that is selected \r\n // when the user clicks New Entry in the previous page. Default all other fields to null/unselected\r\n let SAMLevelDropdown; //SAM Level dropdown should have same values/logic as existing dropdown for OOD Form 8\r\n let contactMethodDropdown; // Contact Type dropdown should have values from code_table.caption \r\n //where table_ID = Employment_Code_OOD_6 and code_table.field_id = ContactMethod \r\n let narrativeInput;\r\n \r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n\r\n // Case Note Edit Data\r\n let consumerId; // emp_ood.consumer_id = consumer_id from consumers table for the selected consumer \r\n let caseNoteId;\r\n let serviceDate; // emp_ood.date_of_service = Service Date from page \r\n let SAMLevel; // emp_ood.service_area_modifier = SAM Level from page. Save data to table using same logic as found in OOD Form 8. \r\n let contactMethod; // emp_ood.contact_method = Contact Type from page. Save code_table.code for selected contact method\r\n let narrative; // emp_ood.narrative = Narrative from page \r\n\r\n //Case Note Data\r\n let caseManagerId; // ??? emp_ood.person_id = the person_id from the persons table of the logged in\r\n let userId; // ??? user emp_ood.user_id = user_id from users_groups of the user who made the last update to the entry \r\n let serviceId;\r\n let referenceNumber; // emp_ood.reference_number = copy consumer_services_master.reference_number from the selected service (in pop-up prior to going to this page)\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date \r\n SAMLevel = caseNoteData[0].SAMLevel; //TODO JOE: Case_Notes.Service_Area_Modifier (populates with N/A, 1, 2, or 3)\r\n contactMethod = caseNoteData[0].contactMethod; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.contact_method\r\n narrative = caseNoteData[0].narrative; //TODO JOE: emp_ood.narrative\r\n \r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n SAMLevel = '';\r\n contactMethod = '';\r\n narrative = '';\r\n \r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: 'SAMLevelDropdown',\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: 'Contact Type',\r\n dropdownId: 'contactMethodDropdown',\r\n value: contactMethod,\r\n readonly: formReadOnly,\r\n });\r\n\r\n narrativeInput = input.build({\r\n label: 'Narrative',\r\n value: narrative,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n // heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 8`;\r\n heading.innerHTML = `Tier 1 and JD Plan - OOD Form 6`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(contactMethodDropdown);\r\n inputContainer0.appendChild(SAMLevelDropdown);\r\n\r\n // const inputContainer1 = document.createElement('div');\r\n // inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n \r\n \r\n\r\n // const inputContainer2 = document.createElement('div');\r\n // inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n \r\n\r\n container.appendChild(inputContainer0);\r\n // container.appendChild(inputContainer1);\r\n // container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateContactMethodDropdown();\r\n \r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n // TODO JOE: Double check that AJAX pulls correct data\r\n // Contact Method - Contact Method dropdown should be a list of values (code_table.caption)\r\n // where code_table.table_id = employment_code and code_table.field_id = contactmethod\r\n async function populateContactMethodDropdown() {\r\n const { getContactMethodsResult: contactMethods } = await OODAjax.getContactMethodsAsync('Form6');\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactMethods.map(contactMethod => ({\r\n id: contactMethod.code,\r\n value: contactMethod.code,\r\n text: contactMethod.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == contactMethod);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('contactMethodDropdown', data, contactMethod);\r\n }\r\n\r\n\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Behavioral Indicators (Work Days) dropdown should be a list of\r\n // values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(behavioralIndicatorsDropdown, yesNoDropdownData, behavioralIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quality Indicators -Job Task Quality Indicators (Work Days) dropdown should\r\n // be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQualityIndicatorsDropdown, yesNoDropdownData, jobTaskQualityIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quantity Indicators -Job Task Quantity Indicators (Work Days) dropdown\r\n // should be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQuantityIndicatorsDropdown, yesNoDropdownData, jobTaskQuantityIndicators);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n \r\n if (!contactMethod || contactMethod === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n\r\n var noteInput = narrativeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeInput.classList.add('error');\r\n } else {\r\n narrativeInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n \r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n \r\n function setupEvents() {\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n contactMethod = '';\r\n } else {\r\n contactMethod = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeInput.addEventListener('input', event => {\r\n narrative = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n SAMLevel,\r\n contactMethod,\r\n narrative,\r\n userId,\r\n };\r\n \r\n OODAjax.updateForm6Tier1andJDPLan(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]), \r\n SAMLevel,\r\n contactMethod,\r\n narrative,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n \r\n OODAjax.insertForm6Tier1andJDPLan(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const summerYouthWorkExperienceForm = (() => {\r\n //Inputs\r\n let serviceDateInput; // case_notes.service_date : Default Service Date to the date that is selected when the user clicks New Entry in the previous page. Make this non-editable. \r\n let startTimeInput; // case_notes.start_time : Default \"Start Time\", \"End Time\", and \"Individual Experiences, Performance, & Interventions\" to null.\r\n let endTimeInput; // case_notes.end_time\r\n let positionDropdown; // emp_ood.position_id : Default Position to null (with SELECT selected on). Dropdown values should be same as current Position list on Form 8 New Entry page.\r\n let interventionsInput; // rename -- case_notes.notes : Individual Experiences, Performance, & Interventions = case_notes.notes\r\n let groupSizeInput; // add -- case_notes.ratio_consumers : Group Size should be disabled until the user selects a Position on the same page. \r\n // Once a position is selected, set the value in Group Size to be em_employee_position.default_group_size \r\n // (new column being added via Task on this ticket) for the selected position. \r\n // The user should be able to change the default value here to any positive whole number. This field is required.\r\n\r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n // When the user saves, there will be one record saved into the case_notes table and one record saved to the emp_ood table. \r\n // We are doing the same thing when saving a record from the New Entry screen for OOD Form 8. Let analyst know if you need \r\n // help with data being saved to these tables.\r\n\r\n\r\n // Case Note Edit Data\r\n let consumerId;\r\n let caseNoteId;\r\n let serviceDate;\r\n let startTime;\r\n let endTime;\r\n let position; \r\n let interventions; // rename -- DATA -- Individual Experiences, Performance, & Interventions = case_notes.notes\r\n let groupSize; // add \r\n\r\n //Case Note Data\r\n let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let referenceNumber;\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date\r\n startTime = caseNoteData[0].startTime; //TODO JOE: Case_Notes.Start_Time\r\n endTime = caseNoteData[0].endTime; //TODO JOE: Case_Notes.End_Time\r\n position = caseNoteData[0].position;\r\n groupSize = caseNoteData[0].groupSize;\r\n interventions = caseNoteData[0].interventions; //TODO JOE: emp_ood.interventions\r\n \r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n startTime = '';\r\n endTime = '';\r\n position = '';\r\n groupSize = '';\r\n interventions = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n label: 'Position',\r\n dropdownId: 'positionDropdown',\r\n value: position,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n groupSizeInput = input.build({\r\n label: 'Group Size',\r\n type: 'number',\r\n style: 'secondary',\r\n value: groupSize === '0' || groupSize === '0.00' ? '' : groupSize,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n \r\n\r\n interventionsInput = input.build({\r\n label: 'Individual Experiences, Performance, & Interventions',\r\n value: interventions,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n // heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 16`;\r\n heading.innerHTML = `Summer Youth Work Experience - OOD Form 16`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n inputContainer1.appendChild(positionDropdown);\r\n inputContainer1.appendChild(groupSizeInput);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(interventionsInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populatePositionDropdown();\r\n populateIndicatorsDropdown();\r\n // populateOutcomeDropdown();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n async function populatePositionDropdown() {\r\n const { getOODPositionsResult: positions } = await OODAjax.getPositionsAsync(consumerId);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = positions.map(position => ({\r\n id: (position.defaultGroupSize && position.defaultGroupSize > 0) ? position.defaultGroupSize : '0',\r\n value: position.code,\r\n text: position.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('positionDropdown', data, position);\r\n }\r\n\r\n async function populateIndicatorsDropdown() {\r\n const { getIndicatorsResult: indicators } = await OODAjax.getIndicatorsAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = indicators.map(indicator => ({\r\n id: indicator.code,\r\n value: indicator.code,\r\n text: indicator.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n \r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n }\r\n\r\n function checkRequiredFields() {\r\n \r\n \r\n\r\n if (!position || position === '') {\r\n positionDropdown.classList.add('error');\r\n groupSizeInput.classList.add('disabled');\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n groupSizeInput.classList.remove('disabled');\r\n groupSizeInput.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n var numgroupSizeInput = groupSizeInput.querySelector('input');\r\n if (numgroupSizeInput.value === '' || numgroupSizeInput.value === 0 || numgroupSizeInput.value <= 0) {\r\n groupSizeInput.classList.add('error');\r\n } else {\r\n groupSizeInput.classList.remove('error');\r\n }\r\n\r\n\r\n var interventionInpt = interventionsInput.querySelector('textarea');\r\n\r\n if (interventionInpt.value === '') {\r\n interventionsInput.classList.add('error');\r\n } else {\r\n interventionsInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function checkEndInputTime() {\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value)) {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck');\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n\r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkStartInputTime() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value)) {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setupEvents() {\r\n\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n position = '';\r\n groupSize = '';\r\n var numgroupSizeInput = groupSizeInput.querySelector('input');\r\n numgroupSizeInput.value = '';\r\n\r\n } else {\r\n position = selectedOption.value;\r\n groupSize = selectedOption.id;\r\n var numgroupSizeInput = groupSizeInput.querySelector('input');\r\n numgroupSizeInput.value = (selectedOption.id && selectedOption.id > 0) ? selectedOption.id : '';\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n\r\n groupSizeInput.addEventListener('input', event => {\r\n groupSize = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\t\r\n\t\r\n groupSizeInput.addEventListener('keypress', event => {\r\n groupSize = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n interventionsInput.addEventListener('input', event => {\r\n interventions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n position,\r\n groupSize,\r\n interventions,\r\n userId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.updateForm16SummerYouthWorkExperience(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n position,\r\n groupSize,\r\n interventions,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.insertForm16SummerYouthWorkExperience(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const summerYouthWorkExperienceSummaryForm = (() => {\r\n // Inputs\r\n let monthYearDropdown; // Default Month using the existing logic for current Monthly Summary form. Use same (existing) logic to determine values in dropdown.\r\n let referenceNumberDropdown; // Default Reference number using the existing logic for current Monthly Summary form. \r\n // Dropdown list should show values from consumer_services_master.reference_number where services.ood_form = 16 \r\n // AND the consumer_services_master row is valid for the selected month. For example, if I pick 01/2024 as the month, \r\n // I should see a list of consumer_services_master.reference_number values where the associated service (in services table) \r\n // has ood_form_number = 16 and consumer_services_master.from_date <= 1/1/2024 AND consumer_services_master.to_date >= 1/1/2024.\r\n\r\n let nextScheduledReviewInput; // Default Next Scheduled Review to null. Required field. Validate that this value is > the first day of the selected month in the Month field.\r\n let selfAssessmentInput; // Default Individual's Self Assessment to null. Required field\r\n let providerAssessmentInput; // rename -- maybe -- Default Provider's Summary & Recommendations to null. Required field.\r\n let reviewVTSDropdown; // Default Has the Vocational Training Stipend… to null. Required field. \r\n // Show values for YES and NO (this is currently found in the Form 8 Monthly Summary form)\r\n let wasOfferedHoursNotWorkedDropdown; // add -- Default Was the individual offered additional hours that weren't worked? to null. Required field. \r\n // This value will not be stored in the database.\r\n let offeredHoursNotWorkedInput; // add -- Default Additional Hours Offered to null. Should only be visible if radio button above is answered Yes. \r\n // If visible, it is a required field.\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown -- Month = em_review.em_review_date (set value to first day of selected month)\r\n let emReviewDateDBValue; // monthYearDropdown -- Month = em_review.em_review_date (set value to first day of selected month)\r\n let emReferenceNumber; // referenceNumberDropdown -- Reference Number = em_review.reference_num\r\n let emNextScheduledReview; // nextScheduledReviewInput -- Next Scheduled Review = em_review.em_review_next_date\r\n let emSummaryIndivSelfAssessment; // rename -- maybe -- selfAssessmentInput -- Individual's Self Assessment = em_review.em_sum_ind_self_assess\r\n let emSummaryIndivProviderAssessment; // // rename -- maybe --providerAssessmentInput -- Provider's Summary & Recommendations = em_review.em_sum_provider_assess\r\n let emReviewVTS; // reviewVTSDropdown -- Has the Vocational Training Stipend… = em_review.vts_review\r\n let offeredHoursNotWorked; \r\n let emOfferedHoursNotWorkNumber; // offeredHoursNotWorkedInput -- Additional Hours Offered = em_review.add_hours_offered (new column - see associated task on this ticket)\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n //let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let reviewStartDate;\r\n let reviewEndDate;\r\n\r\n let formReadOnly = false;\r\n const FORMNUMBER = '16'; \r\n\r\n let OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(\r\n emReviewData,\r\n currentConsumer,\r\n selectedServiceId,\r\n currentRecordUserId,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate);\r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate);\r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emSummaryIndivSelfAssessment = emReviewData.emSummaryIndivSelfAssessment;\r\n emSummaryIndivProviderAssessment = emReviewData.emSummaryIndivProviderAssessment;\r\n emReviewVTS = emReviewData.emReviewVTS;\r\n emOfferedHoursNotWorkNumber = emReviewData.emOfferedHoursNotWorkNumber;\r\n offeredHoursNotWorked = (emOfferedHoursNotWorkNumber === '0' || emOfferedHoursNotWorkNumber === '0.00' || emOfferedHoursNotWorkNumber === '') ? 'N' : 'Y';\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear();\r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emSummaryIndivSelfAssessment = '';\r\n emSummaryIndivProviderAssessment = '';\r\n emReviewVTS = '';\r\n offeredHoursNotWorked = ''; \r\n emOfferedHoursNotWorkNumber = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Summer Youth Work Experience - OOD Form 16 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: 'monthYearDropdown',\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumberDropdown',\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n type: 'date',\r\n label: 'Next Scheduled Review',\r\n style: 'secondary',\r\n // classNames: 'nextScheduledReviewInput',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n // selfAssessmentInput textarea\r\n selfAssessmentInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivSelfAssessment,\r\n readonly: formReadOnly,\r\n // charLimit: 256,\r\n // forceCharLimit: true,\r\n });\r\n // selfAssessmentInput.classList.add('OODTextArea');\r\n\r\n // providerAssessment textarea\r\n providerAssessmentInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivProviderAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // providerAssessmentInput.classList.add('introTextArea');\r\n\r\n // reviewVTS textarea\r\n reviewVTSDropdown = dropdown.build({\r\n dropdownId: 'reviewVTSDropdown',\r\n value: emReviewVTS,\r\n readonly: formReadOnly,\r\n });\r\n // reviewVTSDropdown.classList.add('introTextArea');\r\n\r\n // wasOfferedHoursNotWorkedDropdown\r\n wasOfferedHoursNotWorkedDropdown = dropdown.build({\r\n dropdownId: 'wasOfferedHoursNotWorkedDropdown',\r\n value: offeredHoursNotWorked,\r\n readonly: formReadOnly,\r\n });\r\n \r\n offeredHoursNotWorkedInput = input.build({\r\n label: 'Additional Hours Offered',\r\n type: 'number',\r\n style: 'secondary',\r\n value: emOfferedHoursNotWorkNumber === '0' || emOfferedHoursNotWorkNumber === '0.00' ? '' : emOfferedHoursNotWorkNumber,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n \r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId);\r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form8monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n // inputContainer1.appendChild(referenceNumberDropdown);\r\n\r\n //inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n const nextScheduledReviewInputDIV = document.createElement('div');\r\n nextScheduledReviewInputDIV.classList.add('nextScheduledReviewInput');\r\n nextScheduledReviewInputDIV.appendChild(nextScheduledReviewInput);\r\n\r\n inputContainer1.appendChild(nextScheduledReviewInputDIV);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n const selfAssessmentLabel = document.createElement('p');\r\n selfAssessmentLabel.innerHTML = `Individual's Self-Assessment`;\r\n\r\n const providerAssessmentLabel = document.createElement('p');\r\n providerAssessmentLabel.innerHTML = `Provider's Summary & Recommendations`;\r\n\r\n const reviewVTSDropdownLabel = document.createElement('p');\r\n reviewVTSDropdownLabel.innerHTML = `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS? `;\r\n\r\n const wasOfferedHoursNotWorkedDropdownLabel = document.createElement('p');\r\n wasOfferedHoursNotWorkedDropdownLabel.innerHTML = `Was the Individual offered additional hours that weren't worked? `;\r\n\r\n container.appendChild(selfAssessmentLabel);\r\n container.appendChild(selfAssessmentInput);\r\n container.appendChild(providerAssessmentLabel);\r\n container.appendChild(providerAssessmentInput);\r\n \r\n container.appendChild(reviewVTSDropdownLabel);\r\n container.appendChild(reviewVTSDropdown);\r\n\r\n // container.appendChild(wasOfferedHoursNotWorkedDropdownLabel);\r\n // container.appendChild(wasOfferedHoursNotWorkedDropdown);\r\n // container.appendChild(offeredHoursNotWorkedInput);\r\n // if (emOfferedHoursNotWorkNumber === '0' || emOfferedHoursNotWorkNumber === '0.00' || emOfferedHoursNotWorkNumber === '') {\r\n // offeredHoursNotWorkedInput.style.visibility = 'hidden';\r\n // offeredHoursNotWorked = '';\r\n // } else {\r\n // offeredHoursNotWorkedInput.style.visibility = 'visible';\r\n // offeredHoursNotWorked = 'Y';\r\n // }\r\n \r\n \r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n emReviewId == '0' ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n emReviewId == '0' ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n\r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n // container.appendChild(OODMonthlySummariesTable);\r\n\r\n // populateStaticDropDowns();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateStaticDropDowns();\r\n populateReferenceNumberDropdown();\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate =\r\n (thisDate.getMonth() + 1).toString().padStart(2, '0') + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue);\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n // no reference Numbers\r\n let noReferenceNumberPopup = POPUP.build({\r\n header: 'No Reference Numbers Found',\r\n hideX: true,\r\n id: 'noReferenceNumberPopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noReferenceNumberPopup);\r\n // overlay.hide();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noReferenceNumberPopup.appendChild(warningMessage);\r\n noReferenceNumberPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noReferenceNumberPopup);\r\n }\r\n\r\n async function populateReferenceNumberDropdown() {\r\n setReviewStartandEndDates();\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(\r\n consumerId,\r\n reviewStartDate,\r\n reviewEndDate,\r\n FORMNUMBER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n\r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n }\r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('referenceNumberDropdown', data, emReferenceNumber);\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate:\r\n (firstDay.getMonth() + 1).toString().padStart(2, '0') +\r\n '/' +\r\n firstDay.getFullYear().toString(),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map(thisDate => ({\r\n id: thisDate.fulldate,\r\n value: thisDate.partialdate,\r\n text: thisDate.partialdate,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('monthYearDropdown', data, emReviewDate);\r\n\r\n dropdown.populate(reviewVTSDropdown, yesNoDropdownData, emReviewVTS);\r\n dropdown.populate(wasOfferedHoursNotWorkedDropdown, yesNoDropdownData, offeredHoursNotWorked);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var selfAssessmentInpt = selfAssessmentInput.querySelector('textarea');\r\n if (selfAssessmentInpt.value === '') {\r\n selfAssessmentInput.classList.add('error');\r\n } else {\r\n selfAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // provider\r\n var providerAssessmentInpt = providerAssessmentInput.querySelector('textarea');\r\n if (providerAssessmentInpt.value === '') {\r\n providerAssessmentInput.classList.add('error');\r\n } else {\r\n providerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // var reviewVTSInpt = reviewVTSInput.querySelector('textarea');\r\n // if (reviewVTSInpt.value === '') {\r\n // reviewVTSInput.classList.add('error');\r\n // } else {\r\n // reviewVTSInput.classList.remove('error');\r\n // }\r\n\r\n if (!emReviewVTS || emReviewVTS === '') {\r\n reviewVTSDropdown.classList.add('error');\r\n } else {\r\n reviewVTSDropdown.classList.remove('error');\r\n }\r\n\r\n \r\n if (!offeredHoursNotWorked || offeredHoursNotWorked === '') {\r\n wasOfferedHoursNotWorkedDropdown.classList.add('error');\r\n } else {\r\n wasOfferedHoursNotWorkedDropdown.classList.remove('error');\r\n\r\n \r\n\r\n }\r\n\r\n var numofferedHoursNotWorkedInput = offeredHoursNotWorkedInput.querySelector('input');\r\n\r\n if ((numofferedHoursNotWorkedInput.value === '' || numofferedHoursNotWorkedInput.value === 0 || numofferedHoursNotWorkedInput.value <= 0) && numofferedHoursNotWorkedInput.style.visibility === 'visible') {\r\n offeredHoursNotWorkedInput.classList.add('error');\r\n } else {\r\n offeredHoursNotWorkedInput.classList.remove('error');\r\n }\r\n\r\n if (offeredHoursNotWorked === 'Y' && (numofferedHoursNotWorkedInput.value === '' || numofferedHoursNotWorkedInput.value === 0 || numofferedHoursNotWorkedInput.value <= 0)) {\r\n offeredHoursNotWorkedInput.classList.add('error');\r\n }\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n\r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n\r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function setupEvents() {\r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] - 1, 1);\r\n emReviewDateDBValue = updatedFullDate;\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n });\r\n\r\n selfAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivSelfAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // provider\r\n providerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivProviderAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n reviewVTSDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewVTS = '';\r\n } else {\r\n emReviewVTS = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n wasOfferedHoursNotWorkedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n offeredHoursNotWorked = '';\r\n offeredHoursNotWorkedInput.style.visibility = 'hidden';\r\n } else {\r\n offeredHoursNotWorked = selectedOption.value;\r\n if (offeredHoursNotWorked === 'Y') {\r\n offeredHoursNotWorkedInput.style.visibility = 'visible';\r\n } else {\r\n offeredHoursNotWorkedInput.style.visibility = 'hidden';\r\n emOfferedHoursNotWorkNumber = '';\r\n }\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n\r\n offeredHoursNotWorkedInput.addEventListener('input', event => {\r\n emOfferedHoursNotWorkNumber = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\t\r\n\t\r\n //offeredHoursNotWorkedInput.addEventListener('keypress', event => {\r\n // emOfferedHoursNotWorkNumber = event.target.value;\r\n //if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n // event.preventDefault();\r\n // return;\r\n // }\r\n // if (event.keyCode < 48 || event.keyCode > 57) {\r\n // event.preventDefault();\r\n // return;\r\n // }\r\n // });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n\r\n saveBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: [\r\n 'Month',\r\n 'Individual Input on Search',\r\n 'Potential Issues/Concerns with Progress',\r\n 'Plan/Goals for Next Month',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n const tableData = [\r\n { values: ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko'] },\r\n {\r\n values: [\r\n '11/2021',\r\n 'No, this is my input',\r\n 'Yes, this is my concern',\r\n 'No plans here either',\r\n ],\r\n },\r\n ];\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n emReferenceNumber,\r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]),\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emReviewVTS,\r\n emOfferedHoursNotWorkNumber,\r\n userId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.updateForm16MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n\r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return (\r\n DBValue.getFullYear() + '-' + DBValue.getMonth().toString().padStart(2, '0') + '-' + '1'\r\n );\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emReviewVTS,\r\n emOfferedHoursNotWorkNumber,\r\n userId,\r\n serviceId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.insertForm16MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n // TODO JOE: need new C# and SP for Form 8 ???\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId);\r\n if (result.deleteFormMonthlySummaryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const communityBasedAssessmentForm = (() => {\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let SAMLevelDropdown;\r\n let positionDropdown;\r\n let contactMethodDropdown;\r\n let behavioralIndicatorsDropdown;\r\n let jobTaskQualityIndicatorsDropdown;\r\n let jobTaskQuantityIndicatorsDropdown;\r\n let narrativeInput;\r\n let interventionsInput;\r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n\r\n // Case Note Edit Data\r\n let consumerId;\r\n let caseNoteId;\r\n let serviceDate;\r\n let startTime;\r\n let endTime;\r\n let SAMLevel;\r\n let position;\r\n let contactMethod;\r\n let behavioralIndicators;\r\n let jobTaskQualityIndicators;\r\n let jobTaskQuantityIndicators;\r\n let narrative;\r\n let interventions;\r\n\r\n //Case Note Data\r\n let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let referenceNumber;\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date\r\n startTime = caseNoteData[0].startTime; //TODO JOE: Case_Notes.Start_Time\r\n endTime = caseNoteData[0].endTime; //TODO JOE: Case_Notes.End_Time\r\n SAMLevel = caseNoteData[0].SAMLevel; //TODO JOE: Case_Notes.Service_Area_Modifier (populates with N/A, 1, 2, or 3)\r\n position = caseNoteData[0].position;\r\n contactMethod = caseNoteData[0].contactMethod; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.contact_method\r\n jobTaskQuantityIndicators = caseNoteData[0].jobTaskQuantityIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.quantity_indicators\r\n narrative = caseNoteData[0].narrative; //TODO JOE: emp_ood.narrative\r\n interventions = caseNoteData[0].interventions; //TODO JOE: emp_ood.interventions\r\n behavioralIndicators = caseNoteData[0].behavioralIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.behavioral_indicators\r\n jobTaskQualityIndicators = caseNoteData[0].jobTaskQualityIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.quality_indicators\r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n startTime = '';\r\n endTime = '';\r\n SAMLevel = '';\r\n position = '';\r\n contactMethod = '';\r\n jobTaskQuantityIndicators = '';\r\n narrative = '';\r\n interventions = '';\r\n behavioralIndicators = '';\r\n jobTaskQualityIndicators = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: 'SAMLevelDropdown',\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n label: 'Position',\r\n dropdownId: 'positionDropdown',\r\n value: position,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: 'Contact Method',\r\n dropdownId: 'contactMethodDropdown',\r\n value: contactMethod,\r\n readonly: formReadOnly,\r\n });\r\n\r\n behavioralIndicatorsDropdown = dropdown.build({\r\n label: 'Behavioral Indicators (Work Days)',\r\n dropdownId: 'behavioralIndicatorsDropdown',\r\n value: behavioralIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n jobTaskQualityIndicatorsDropdown = dropdown.build({\r\n label: 'Job Task Quality Indicators (Work Days)',\r\n dropdownId: 'jobTaskQualityIndicatorsDropdown',\r\n value: jobTaskQualityIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n jobTaskQuantityIndicatorsDropdown = dropdown.build({\r\n label: 'Job Task Quantity Indicators (Work Days)',\r\n dropdownId: 'jobTaskQuantityIndicatorsDropdown',\r\n value: jobTaskQuantityIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n narrativeInput = input.build({\r\n label: 'Narrative',\r\n value: narrative,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n interventionsInput = input.build({\r\n label: 'Interventions',\r\n value: interventions,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 8`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n inputContainer1.appendChild(positionDropdown);\r\n inputContainer1.appendChild(SAMLevelDropdown);\r\n inputContainer1.appendChild(contactMethodDropdown);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n inputContainer2.appendChild(behavioralIndicatorsDropdown);\r\n inputContainer2.appendChild(jobTaskQualityIndicatorsDropdown);\r\n inputContainer2.appendChild(jobTaskQuantityIndicatorsDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeInput);\r\n container.appendChild(interventionsInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateContactMethodDropdown();\r\n populatePositionDropdown();\r\n populateIndicatorsDropdown();\r\n // populateOutcomeDropdown();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n // TODO JOE: Double check that AJAX pulls correct data\r\n // Contact Method - Contact Method dropdown should be a list of values (code_table.caption)\r\n // where code_table.table_id = employment_code and code_table.field_id = contactmethod\r\n async function populateContactMethodDropdown() {\r\n const { getContactMethodsResult: contactMethods } = await OODAjax.getContactMethodsAsync('Form8');\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactMethods.map(contactMethod => ({\r\n id: contactMethod.code,\r\n value: contactMethod.code,\r\n text: contactMethod.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == contactMethod);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('contactMethodDropdown', data, contactMethod);\r\n }\r\n\r\n async function populatePositionDropdown() {\r\n const { getOODPositionsResult: positions } = await OODAjax.getPositionsAsync(consumerId);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = positions.map(position => ({\r\n id: position.code,\r\n value: position.code,\r\n text: position.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('positionDropdown', data, position);\r\n }\r\n\r\n async function populateIndicatorsDropdown() {\r\n const { getIndicatorsResult: indicators } = await OODAjax.getIndicatorsAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = indicators.map(indicator => ({\r\n id: indicator.code,\r\n value: indicator.code,\r\n text: indicator.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('behavioralIndicatorsDropdown', data, behavioralIndicators);\r\n dropdown.populate('jobTaskQualityIndicatorsDropdown', data, jobTaskQualityIndicators);\r\n dropdown.populate('jobTaskQuantityIndicatorsDropdown', data, jobTaskQuantityIndicators);\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Behavioral Indicators (Work Days) dropdown should be a list of\r\n // values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(behavioralIndicatorsDropdown, yesNoDropdownData, behavioralIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quality Indicators -Job Task Quality Indicators (Work Days) dropdown should\r\n // be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQualityIndicatorsDropdown, yesNoDropdownData, jobTaskQualityIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quantity Indicators -Job Task Quantity Indicators (Work Days) dropdown\r\n // should be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQuantityIndicatorsDropdown, yesNoDropdownData, jobTaskQuantityIndicators);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!position || position === '') {\r\n positionDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!contactMethod || contactMethod === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n if (!behavioralIndicators || behavioralIndicators === '') {\r\n behavioralIndicatorsDropdown.classList.add('error');\r\n } else {\r\n behavioralIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n if (!jobTaskQualityIndicators || jobTaskQualityIndicators === '') {\r\n jobTaskQualityIndicatorsDropdown.classList.add('error');\r\n } else {\r\n jobTaskQualityIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n if (!jobTaskQuantityIndicators || jobTaskQuantityIndicators === '') {\r\n jobTaskQuantityIndicatorsDropdown.classList.add('error');\r\n } else {\r\n jobTaskQuantityIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n var noteInput = narrativeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeInput.classList.add('error');\r\n } else {\r\n narrativeInput.classList.remove('error');\r\n }\r\n\r\n var interventionInpt = interventionsInput.querySelector('textarea');\r\n\r\n if (interventionInpt.value === '') {\r\n interventionsInput.classList.add('error');\r\n } else {\r\n interventionsInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function checkEndInputTime() {\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value)) {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck');\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n\r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkStartInputTime() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value)) {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setupEvents() {\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n position = '';\r\n } else {\r\n position = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n contactMethod = '';\r\n } else {\r\n contactMethod = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n behavioralIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n behavioralIndicators = '';\r\n } else {\r\n behavioralIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n jobTaskQualityIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n jobTaskQualityIndicators = '';\r\n } else {\r\n jobTaskQualityIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n jobTaskQuantityIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n jobTaskQuantityIndicators = '';\r\n } else {\r\n jobTaskQuantityIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeInput.addEventListener('input', event => {\r\n narrative = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n interventionsInput.addEventListener('input', event => {\r\n interventions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n position,\r\n contactMethod,\r\n behavioralIndicators,\r\n jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators,\r\n narrative,\r\n interventions,\r\n userId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.updateForm8CommunityBasedAssessment(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n position,\r\n contactMethod,\r\n behavioralIndicators,\r\n jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators,\r\n narrative,\r\n interventions,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.insertForm8CommunityBasedAssessment(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const communityBasedAssessmentSummaryForm = (() => {\r\n // Inputs\r\n let monthYearDropdown;\r\n let referenceNumberDropdown;\r\n let nextScheduledReviewInput;\r\n let selfAssessmentInput;\r\n let referralQuestionsInput;\r\n let employerAssessmentInput;\r\n let providerAssessmentInput;\r\n let supportAndTransitionInput;\r\n let reviewVTSDropdown;\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown\r\n let emReviewDateDBValue; // monthYearDropdown\r\n let emReferenceNumber; // referenceNumberDropdown\r\n let emNextScheduledReview; // nextScheduledReviewInput\r\n let emSummaryIndivSelfAssessment; // selfAssessmentInput\r\n let emReferralQuestions; //referralQuestionsInput\r\n let emSummaryIndivEmployerAssessment; // employerAssessmentInput\r\n let emSummaryIndivProviderAssessment; // providerAssessmentInput\r\n let emSupportandTransition; //supportAndTransitionInput\r\n let emReviewVTS; // reviewVTSDropdown\r\n\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n //let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let reviewStartDate;\r\n let reviewEndDate;\r\n\r\n let formReadOnly = false;\r\n const FORMNUMBER = '8'; // Form 8\r\n\r\n let OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(\r\n emReviewData,\r\n currentConsumer,\r\n selectedServiceId,\r\n currentRecordUserId,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate);\r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate);\r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emSummaryIndivSelfAssessment = emReviewData.emSummaryIndivSelfAssessment;\r\n emSummaryIndivEmployerAssessment = emReviewData.emSummaryIndivEmployerAssessment;\r\n emSummaryIndivProviderAssessment = emReviewData.emSummaryIndivProviderAssessment;\r\n emSupportandTransition = emReviewData.emSupportandTransition;\r\n emReviewVTS = emReviewData.emReviewVTS;\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear();\r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emSummaryIndivSelfAssessment = '';\r\n emSummaryIndivEmployerAssessment = '';\r\n emSummaryIndivProviderAssessment = '';\r\n emSupportandTransition = '';\r\n emReviewVTS = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Community Based Assessment - OOD Form 8 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: 'monthYearDropdown',\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumberDropdown',\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n type: 'date',\r\n label: 'Next Scheduled Review',\r\n style: 'secondary',\r\n // classNames: 'nextScheduledReviewInput',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n // selfAssessmentInput textarea\r\n selfAssessmentInput = input.build({\r\n //label: `Summary of Individual's Self-Assessment. Likes and/or Dislikes of Work, concerns, etc. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivSelfAssessment,\r\n readonly: formReadOnly,\r\n // charLimit: 256,\r\n // forceCharLimit: true,\r\n });\r\n // selfAssessmentInput.classList.add('OODTextArea');\r\n\r\n // employerAssessment textarea\r\n employerAssessmentInput = input.build({\r\n // label: `Summary of Employer's Assessment of Individual, Performance or Soft Skill Concerns, etc. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivEmployerAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // employerAssessmentInput.classList.add('introTextArea');\r\n\r\n // providerAssessment textarea\r\n providerAssessmentInput = input.build({\r\n // label: `Summary of Provider's Assessment of Individual's Performance and Soft Skill Concerns. Recommendations of next steps or services. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivProviderAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // providerAssessmentInput.classList.add('introTextArea');\r\n\r\n supportAndTransitionInput = input.build({\r\n //label: `Support and Transition Plan. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSupportandTransition,\r\n readonly: formReadOnly,\r\n });\r\n\r\n // reviewVTS textarea\r\n reviewVTSDropdown = dropdown.build({\r\n // label: `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS?`,\r\n dropdownId: 'reviewVTSDropdown',\r\n value: emReviewVTS,\r\n readonly: formReadOnly,\r\n });\r\n // reviewVTSDropdown.classList.add('introTextArea');\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId);\r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form8monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n // inputContainer1.appendChild(referenceNumberDropdown);\r\n\r\n //inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n const nextScheduledReviewInputDIV = document.createElement('div');\r\n nextScheduledReviewInputDIV.classList.add('nextScheduledReviewInput');\r\n nextScheduledReviewInputDIV.appendChild(nextScheduledReviewInput);\r\n\r\n inputContainer1.appendChild(nextScheduledReviewInputDIV);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n const selfAssessmentLabel = document.createElement('p');\r\n selfAssessmentLabel.innerHTML = `Summary of Individual's Self-Assessment. Likes and/or Dislikes of Work, concerns, etc.`;\r\n\r\n const employerAssessmentLabel = document.createElement('p');\r\n employerAssessmentLabel.innerHTML = `Summary of Employer's Assessment of Individual, Performance or Soft Skill Concerns, etc. `;\r\n\r\n const providerAssessmentLabel = document.createElement('p');\r\n providerAssessmentLabel.innerHTML = `Summary of Provider's Assessment of Individual's Performance and Soft Skill Concerns. Recommendations of next steps or services. `;\r\n\r\n const supportAndTransitionLabel = document.createElement('p');\r\n supportAndTransitionLabel.innerHTML = `Support and Transition Plan. `;\r\n\r\n const reviewVTSDropdownLabel = document.createElement('p');\r\n reviewVTSDropdownLabel.innerHTML = `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS? `;\r\n\r\n container.appendChild(selfAssessmentLabel);\r\n container.appendChild(selfAssessmentInput);\r\n container.appendChild(employerAssessmentLabel);\r\n container.appendChild(employerAssessmentInput);\r\n container.appendChild(providerAssessmentLabel);\r\n container.appendChild(providerAssessmentInput);\r\n container.appendChild(supportAndTransitionLabel);\r\n container.appendChild(supportAndTransitionInput);\r\n container.appendChild(reviewVTSDropdownLabel);\r\n container.appendChild(reviewVTSDropdown);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n emReviewId == '0' ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n emReviewId == '0' ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n\r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n // container.appendChild(OODMonthlySummariesTable);\r\n\r\n // populateStaticDropDowns();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateStaticDropDowns();\r\n populateReferenceNumberDropdown();\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate =\r\n (thisDate.getMonth() + 1).toString().padStart(2, '0') + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue);\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n // no reference Numbers\r\n let noReferenceNumberPopup = POPUP.build({\r\n header: 'No Reference Numbers Found',\r\n hideX: true,\r\n id: 'noReferenceNumberPopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noReferenceNumberPopup);\r\n // overlay.hide();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noReferenceNumberPopup.appendChild(warningMessage);\r\n noReferenceNumberPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noReferenceNumberPopup);\r\n }\r\n\r\n async function populateReferenceNumberDropdown() {\r\n setReviewStartandEndDates();\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(\r\n consumerId,\r\n reviewStartDate,\r\n reviewEndDate,\r\n FORMNUMBER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n\r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n }\r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('referenceNumberDropdown', data, emReferenceNumber);\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate:\r\n (firstDay.getMonth() + 1).toString().padStart(2, '0') +\r\n '/' +\r\n firstDay.getFullYear().toString(),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map(thisDate => ({\r\n id: thisDate.fulldate,\r\n value: thisDate.partialdate,\r\n text: thisDate.partialdate,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('monthYearDropdown', data, emReviewDate);\r\n\r\n dropdown.populate(reviewVTSDropdown, yesNoDropdownData, emReviewVTS);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var selfAssessmentInpt = selfAssessmentInput.querySelector('textarea');\r\n if (selfAssessmentInpt.value === '') {\r\n selfAssessmentInput.classList.add('error');\r\n } else {\r\n selfAssessmentInput.classList.remove('error');\r\n }\r\n\r\n var employerAssessmentInpt = employerAssessmentInput.querySelector('textarea');\r\n if (employerAssessmentInpt.value === '') {\r\n employerAssessmentInput.classList.add('error');\r\n } else {\r\n employerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // provider\r\n var providerAssessmentInpt = providerAssessmentInput.querySelector('textarea');\r\n if (providerAssessmentInpt.value === '') {\r\n providerAssessmentInput.classList.add('error');\r\n } else {\r\n providerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n var supportAndTransitionInpt = supportAndTransitionInput.querySelector('textarea');\r\n if (supportAndTransitionInpt.value === '') {\r\n supportAndTransitionInput.classList.add('error');\r\n } else {\r\n supportAndTransitionInput.classList.remove('error');\r\n }\r\n\r\n // var reviewVTSInpt = reviewVTSInput.querySelector('textarea');\r\n // if (reviewVTSInpt.value === '') {\r\n // reviewVTSInput.classList.add('error');\r\n // } else {\r\n // reviewVTSInput.classList.remove('error');\r\n // }\r\n\r\n if (!emReviewVTS || emReviewVTS === '') {\r\n reviewVTSDropdown.classList.add('error');\r\n } else {\r\n reviewVTSDropdown.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n\r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n\r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function setupEvents() {\r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] - 1, 1);\r\n emReviewDateDBValue = updatedFullDate;\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n });\r\n\r\n selfAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivSelfAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n employerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivEmployerAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // provider\r\n providerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivProviderAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n supportAndTransitionInput.addEventListener('input', event => {\r\n emSupportandTransition = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n reviewVTSDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewVTS = '';\r\n } else {\r\n emReviewVTS = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n\r\n saveBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: [\r\n 'Month',\r\n 'Individual Input on Search',\r\n 'Potential Issues/Concerns with Progress',\r\n 'Plan/Goals for Next Month',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n const tableData = [\r\n { values: ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko'] },\r\n {\r\n values: [\r\n '11/2021',\r\n 'No, this is my input',\r\n 'Yes, this is my concern',\r\n 'No plans here either',\r\n ],\r\n },\r\n ];\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n emReferenceNumber,\r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]),\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emSupportandTransition,\r\n emReviewVTS,\r\n userId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.updateForm8MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n\r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return (\r\n DBValue.getFullYear() + '-' + DBValue.getMonth().toString().padStart(2, '0') + '-' + '1'\r\n );\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emSupportandTransition,\r\n emReviewVTS,\r\n userId,\r\n serviceId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.insertForm8MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n // TODO JOE: need new C# and SP for Form 8 ???\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId);\r\n if (result.deleteFormMonthlySummaryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var rosterAbsent = (function() {\r\n //-DATA------------------\r\n var absentReasons;\r\n var notificationTypes;\r\n //-DOM------------------\r\n var MASS_ABSENT_POPUP;\r\n // *absent form inputs\r\n var CONSUMERS_SELECTED_INPUT;\r\n var DATE_OF_ABSENSE_INPUT;\r\n var DATE_REPORTED_INPUT;\r\n var LOCATION_INPUT;\r\n var NOTIFICATION_DROPDOWN;\r\n var REPORTED_BY_INPUT;\r\n var REASON_DROPDOWN;\r\n var TIME_REPORTED_INPUT;\r\n // *absent form btns\r\n var SAVE_ABSENT_BTN;\r\n var DELETE_ABSENT_BTN;\r\n var CANCEL_ABSENT_BTN;\r\n // *action nav btns\r\n var doneBtn;\r\n var cancelBtn;\r\n //-VALUES------------------\r\n var absentLocation;\r\n // save/update\r\n var absenceDate;\r\n var consumerIdString;\r\n var dateReported;\r\n var locationId;\r\n var notificationId;\r\n var reportedBy;\r\n var resonId;\r\n var timeReported;\r\n // delete data\r\n var absentRecordId;\r\n var doPreSaveCheck = true;\r\n\r\n // Absent Save\r\n //---------------------------------------------\r\n function showPreSaveWarningPopup() {\r\n var preSaveWarningPopup = POPUP.build({\r\n header: 'The following consumers have an already existing record in either Outcomes or Day Services. Do you wish to proceed?'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function(event) {\r\n doPreSaveCheck = false;\r\n SAVE_ABSENT_BTN.click();\r\n POPUP.hide(preSaveWarningPopup);\r\n }\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(preSaveWarningPopup);\r\n }\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n preSaveWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(preSaveWarningPopup);\r\n }\r\n function saveSingleAbsent() {\r\n var singleSaveData = {\r\n token: $.session.Token,\r\n absentReasonId: resonId === '%' ? '' : resonId,\r\n absentNotificationId: notificationId === '%' ? '' : notificationId,\r\n consumerIdString: consumerIdString,\r\n absenceDate: absenceDate,\r\n locationId: locationId,\r\n reportedBy: UTIL.removeUnsavableNoteText(reportedBy),\r\n timeReported: timeReported,\r\n dateReported: dateReported\r\n };\r\n var preSaveData = {\r\n token: $.session.Token,\r\n consumerIdString: consumerIdString,\r\n absentDate: absenceDate,\r\n locationId: locationId,\r\n };\r\n\r\n function updateAbsents() {\r\n roster2.refreshRosterList();\r\n var backBtn = document.querySelector('.sectionBackBtn');\r\n backBtn.click();\r\n }\r\n function checkAbsentPreSave(results) {\r\n if (results && results.length) {\r\n // show warning message\r\n showPreSaveWarningPopup()\r\n return;\r\n }\r\n\r\n absentAjax.oneLocationAbsentSave(singleSaveData, updateAbsents);\r\n }\r\n\r\n if (doPreSaveCheck) {\r\n absentAjax.absentPreSaveCheck(preSaveData, checkAbsentPreSave);\r\n } else {\r\n absentAjax.oneLocationAbsentSave(singleSaveData, updateAbsents);\r\n doPreSaveCheck = true;\r\n }\r\n }\r\n function saveMassAbsent() {\r\n var singleSaveData = {\r\n token: $.session.Token,\r\n absentReasonId: resonId === '%' ? '' : resonId,\r\n absentNotificationId: notificationId === '%' ? '' : notificationId,\r\n consumerIdString: consumerIdString,\r\n absenceDate: absenceDate,\r\n locationId: locationId,\r\n reportedBy: UTIL.removeUnsavableNoteText(reportedBy),\r\n timeReported: timeReported,\r\n dateReported: dateReported\r\n };\r\n\r\n absentAjax.oneLocationAbsentSave(singleSaveData, function() {\r\n roster2.refreshRosterList();\r\n });\r\n }\r\n\r\n // UTIL\r\n //---------------------------------------------\r\n async function getAbsentConsumers(locationId, absenceDate, callback) {\r\n try {\r\n let getConsumersByLocationAbsentResults = (await absentAjax.getConsumersByLocationAbsent(locationId, absenceDate)).getConsumersByLocationAbsentResult;\r\n getConsumersByLocationAbsentResults = JSON.parse(getConsumersByLocationAbsentResults);\r\n const absentConsumerIds = createAbsentConsumersObj(getConsumersByLocationAbsentResults);\r\n return absentConsumerIds;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n // absentAjax.getConsumersByLocationAbsent(locationId, absenceDate, function(results) {\r\n // var absentConsumerIds = createAbsentConsumersObj(results);\r\n // if (callback) callback(absentConsumerIds);\r\n // });\r\n }\r\n function getAbsentFormDropdownData(callback) {\r\n if (!notificationTypes || !absentReasons) {\r\n absentAjax.selectAbsentNotificationTypes(function(results) {\r\n notificationTypes = results;\r\n absentAjax.selectAbsentReasons(function(results) {\r\n absentReasons = results;\r\n if (callback) callback();\r\n });\r\n });\r\n } else {\r\n if (callback) callback();\r\n }\r\n }\r\n function createAbsentConsumersObj(results) {\r\n if (!results || results.length === 0) return {};\r\n\r\n var newObj = {};\r\n\r\n results.forEach(r => {\r\n if (!newObj[r.consumer_id]) newObj[r.consumer_id] = r.consumer_id;\r\n });\r\n\r\n return newObj;\r\n }\r\n function setSaveData(absentData) {\r\n if (!absentData) {\r\n var selectedLocationObj = roster2.getSelectedLocationObj();\r\n\r\n absentLocation = selectedLocationObj.locationName;\r\n absenceDate = UTIL.getTodaysDate();\r\n dateReported = UTIL.getTodaysDate();\r\n locationId = selectedLocationObj.locationId;\r\n notificationId = '%';\r\n reportedBy = `${$.session.LName}, ${$.session.Name}`;\r\n resonId = '%';\r\n timeReported = UTIL.getCurrentTime();\r\n\r\n return;\r\n }\r\n\r\n var rosterLocations = roster2.getRosterLocations();\r\n\r\n var data = absentData[0];\r\n var tempLocation = rosterLocations.filter(rl => rl.ID === data.locationId);\r\n var tempLocationName = tempLocation[0].Name;\r\n var tempLocationId = data.locationId;\r\n var tempDateOfAbsense = UTIL.formatDateToIso(data.dateOfAbsence.split(' ')[0]);\r\n var tempReportedBy = data.reportedby;\r\n var tempDatereported = UTIL.formatDateToIso(data.dateReported.split(' ')[0]);\r\n var tempTimereported = data.timereported;\r\n var tempReasonId = data.reasonId;\r\n var tempNotifiId = data.notificationId;\r\n\r\n absentRecordId = data.recordid;\r\n\r\n absentLocation = tempLocationName;\r\n absenceDate = tempDateOfAbsense;\r\n consumerIdString = data.consumerId;\r\n dateReported = tempDatereported;\r\n locationId = tempLocationId;\r\n notificationId = tempNotifiId;\r\n reportedBy = tempReportedBy;\r\n resonId = tempReasonId;\r\n timeReported = tempTimereported;\r\n }\r\n\r\n // Absent Form\r\n //---------------------------------------------\r\n function populateAbsentFormDropdowns(defaultValues) {\r\n var notifValue = defaultValues.notif;\r\n var reasonValue = defaultValues.reason;\r\n\r\n var notificationTypeData = notificationTypes.map(r => {\r\n return {\r\n value: r.notifid,\r\n text: r.notifdesc\r\n }\r\n });\r\n var reasonsData = absentReasons.map(r => {\r\n return {\r\n value: r.reasonid,\r\n text: r.reasondesc\r\n }\r\n });\r\n\r\n var defaultVal = {value: '%', text: ''};\r\n notificationTypeData.unshift(defaultVal);\r\n reasonsData.unshift(defaultVal);\r\n\r\n dropdown.populate(NOTIFICATION_DROPDOWN, notificationTypeData, notifValue);\r\n dropdown.populate(REASON_DROPDOWN, reasonsData, reasonValue);\r\n }\r\n function setupFormEvents(single) {\r\n REASON_DROPDOWN.addEventListener('change', event => {\r\n var selectedOpt = event.target.options[event.target.selectedIndex];\r\n resonId = selectedOpt.value;\r\n });\r\n NOTIFICATION_DROPDOWN.addEventListener('change', event => {\r\n var selectedOpt = event.target.options[event.target.selectedIndex];\r\n notificationId = selectedOpt.value;\r\n });\r\n DATE_OF_ABSENSE_INPUT.addEventListener('change', event => {\r\n absenceDate = event.target.value;\r\n });\r\n DATE_REPORTED_INPUT.addEventListener('change', event => {\r\n dateReported = event.target.value;\r\n });\r\n TIME_REPORTED_INPUT.addEventListener('change', event => {\r\n timeReported = event.target.value;\r\n });\r\n SAVE_ABSENT_BTN.addEventListener('click', () => {\r\n document.getElementById(\"absentSaveBtn\").disabled = true;\r\n if (!single) {\r\n // untoggle MASS_ABSENT_BTN\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n // clear selected consumers\r\n roster2.clearSelectedConsumers();\r\n // hide popup\r\n POPUP.hide(MASS_ABSENT_POPUP);\r\n // reset active section\r\n setActiveModuleSectionAttribute('roster-info');\r\n // save it\r\n saveMassAbsent();\r\n } else {\r\n saveSingleAbsent();\r\n }\r\n });\r\n DELETE_ABSENT_BTN.addEventListener('click', () => {\r\n absentAjax.deleteAbsent(absentRecordId, function(results) {\r\n roster2.refreshRosterList();\r\n });\r\n var backBtn = document.querySelector('.sectionBackBtn');\r\n backBtn.click();\r\n });\r\n CANCEL_ABSENT_BTN.addEventListener('click', () => {\r\n // untoggle MASS_ABSENT_BTN\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n // clear selected consumers\r\n roster2.selectNoneHighlightedConsumers();\r\n roster2.clearSelectedConsumers();\r\n roster2.refreshRosterList();\r\n // hide absent actionnav\r\n ACTION_NAV.hide();\r\n // hide popup\r\n POPUP.hide(MASS_ABSENT_POPUP);\r\n });\r\n }\r\n function buildAbsentForm(single, consumerId, dateOfAbsent, absentData) {\r\n if (absentData && absentData.length) {\r\n setSaveData(absentData);\r\n } else if (single) {\r\n setSaveData();\r\n consumerIdString = consumerId;\r\n absenceDate = dateOfAbsent;\r\n } else {\r\n //setSaveData();\r\n }\r\n\r\n var absentForm = document.createElement('div');\r\n absentForm.classList.add('absentForm');\r\n // inputs & dropdowns\r\n CONSUMERS_SELECTED_INPUT = input.build({\r\n label: 'Consumer(s)',\r\n type: 'text',\r\n style: 'secondary',\r\n value: 'All Selected',\r\n readonly: true\r\n });\r\n LOCATION_INPUT = input.build({\r\n label: 'Location',\r\n type: 'text',\r\n style: 'secondary',\r\n value: absentLocation,\r\n readonly: true\r\n });\r\n DATE_OF_ABSENSE_INPUT = input.build({\r\n label: 'Date Of Absence',\r\n type: 'date',\r\n style: 'secondary',\r\n value: absenceDate ? absenceDate : UTIL.getTodaysDate()\r\n });\r\n REPORTED_BY_INPUT = input.build({\r\n label: 'Reported By',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportedBy ? reportedBy : `${$.session.LName}, ${$.session.Name}`,\r\n readonly: true\r\n });\r\n DATE_REPORTED_INPUT = input.build({\r\n label: 'Date Reported',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateReported ? dateReported : UTIL.getTodaysDate()\r\n });\r\n TIME_REPORTED_INPUT = input.build({\r\n label: 'Time Reported',\r\n type: 'time',\r\n style: 'secondary',\r\n value: timeReported ? timeReported : UTIL.getCurrentTime()\r\n });\r\n REASON_DROPDOWN = dropdown.build({\r\n label: 'Reason',\r\n style: 'secondary'\r\n });\r\n NOTIFICATION_DROPDOWN = dropdown.build({\r\n label: 'Notification Type',\r\n style: 'secondary'\r\n });\r\n\r\n // save, cancel & delete buttons\r\n var ABSENT_BTN_WRAP = document.createElement('div');\r\n ABSENT_BTN_WRAP.classList.add('btnWrap');\r\n SAVE_ABSENT_BTN = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n id: 'absentSaveBtn',\r\n type: 'contained'\r\n });\r\n CANCEL_ABSENT_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n DELETE_ABSENT_BTN = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n if (absentData && absentData.length) {\r\n absentForm.classList.add('disabled');\r\n if ($.session.RosterDeleteAbsent) ABSENT_BTN_WRAP.appendChild(DELETE_ABSENT_BTN);\r\n } else {\r\n ABSENT_BTN_WRAP.appendChild(SAVE_ABSENT_BTN);\r\n }\r\n\r\n if (!single) ABSENT_BTN_WRAP.appendChild(CANCEL_ABSENT_BTN);\r\n if (!single) absentForm.appendChild(CONSUMERS_SELECTED_INPUT);\r\n absentForm.appendChild(LOCATION_INPUT);\r\n absentForm.appendChild(DATE_OF_ABSENSE_INPUT);\r\n absentForm.appendChild(REPORTED_BY_INPUT);\r\n absentForm.appendChild(DATE_REPORTED_INPUT);\r\n absentForm.appendChild(TIME_REPORTED_INPUT);\r\n absentForm.appendChild(REASON_DROPDOWN);\r\n absentForm.appendChild(NOTIFICATION_DROPDOWN);\r\n absentForm.appendChild(ABSENT_BTN_WRAP);\r\n\r\n // populate dropdowns\r\n populateAbsentFormDropdowns({\r\n reason: resonId ? resonId : '%', \r\n notif: notificationId ? notificationId : '%'\r\n });\r\n // set events\r\n setupFormEvents(single);\r\n\r\n return absentForm;\r\n }\r\n\r\n // Single Absent\r\n //---------------------------------------------\r\n function init() {\r\n getAbsentFormDropdownData();\r\n }\r\n\r\n // Mass Absent\r\n //---------------------------------------------\r\n function showAbsentPopup() {\r\n // create popup\r\n MASS_ABSENT_POPUP = POPUP.build({\r\n classNames: 'rosterAbsentPopup'\r\n });\r\n // build form\r\n var absentForm = buildAbsentForm(false);\r\n // append form to popup\r\n MASS_ABSENT_POPUP.appendChild(absentForm);\r\n POPUP.show(MASS_ABSENT_POPUP);\r\n }\r\n function setConsumerIdString() {\r\n var selectedConsumers = roster2.getSelectedConsumers();\r\n consumerIdString = selectedConsumers.map(sc => sc.id).join(',');\r\n }\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch(targetAction) {\r\n case 'absentDone': {\r\n setConsumerIdString();\r\n showAbsentPopup();\r\n document.getElementById('massAbsentSelectAllBtn').style.display = 'none';\r\n document.getElementById('massAbsentDeselectAllBtn').style.display = 'none';\r\n break;\r\n }\r\n case 'absentCancel': {\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n setActiveModuleSectionAttribute('roster-info');\r\n roster2.selectNoneHighlightedConsumers();\r\n roster2.clearSelectedConsumers();\r\n roster2.refreshRosterList();\r\n ACTION_NAV.hide();\r\n document.getElementById('massAbsentSelectAllBtn').style.display = 'none';\r\n document.getElementById('massAbsentDeselectAllBtn').style.display = 'none';\r\n break;\r\n }\r\n }\r\n }\r\n function toggleActionNavBtns() {\r\n var selectedConsumers = roster2.getSelectedConsumers();\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n }\r\n function buildAbsentActionNav() {\r\n doneBtn = button.build({\r\n text: 'Done',\r\n id: 'absentDone',\r\n icon: 'checkmark',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n attributes: [{key: 'data-action-nav', value: 'absentDone'}]\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n icon: 'close',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{key: 'data-action-nav', value: 'absentCancel'}]\r\n });\r\n\r\n ACTION_NAV.populate([doneBtn, cancelBtn]);\r\n }\r\n function initMassAbsent() {\r\n MASS_ABSENT_BTN = document.querySelector('.massAbsentBtn');\r\n getAbsentFormDropdownData(() => {\r\n buildAbsentActionNav();\r\n setSaveData();\r\n });\r\n }\r\n\r\n\r\n return {\r\n buildAbsentForm,\r\n createAbsentConsumersObj,\r\n getAbsentConsumers,\r\n handleActionNavEvent,\r\n initMassAbsent,\r\n init,\r\n toggleActionNavBtns\r\n }\r\n})();","var absentAjax = (function() {\r\n function absentPreSaveCheck(selectData, callback) {\r\n // data = {token, consumerIdString, absentDate, locationId}\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/absentPreSave/',\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(selectData),\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.absentPreSaveResult;\r\n callback(res);\r\n }\r\n });\r\n }\r\n function allLocationSaveAbsent(data, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/allLocationSaveAbsent/',\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.allLocationSaveAbsentResult;\r\n if (callback) callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function deleteAbsent(absentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteAbsent/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"absentId\":\"' + absentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n }\r\n });\r\n }\r\n function getConsumersByLocationAbsent(locationId, absenceDate, callback) {\r\n // returns absent consumers for provided location and date\r\n var selectData = {\r\n token: $.session.Token,\r\n absenceDate: absenceDate ? absenceDate : UTIL.getTodaysDate(),\r\n locationId: locationId,\r\n };\r\n\r\n if (parseInt(locationId, 10) === 0) {\r\n selectData.locationId = \"%\";\r\n }\r\n\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumersByLocationAbsent/',\r\n data: JSON.stringify(selectData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n // $.ajax({\r\n // type: 'POST',\r\n // url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumersByLocationAbsent/',\r\n // data: JSON.stringify(selectData),\r\n // contentType: 'application/json; charset=utf-8',\r\n // dataType: 'json',\r\n // success: function(response, status, xhr) {\r\n // var res = JSON.parse(response.getConsumersByLocationAbsentResult);\r\n // callback(res);\r\n // }\r\n // });\r\n }\r\n function oneLocationAbsentSave(saveData, callback) {\r\n // saveData = {\r\n // token, absentReasonId, absentNotificationId, consumerIdString, absenceDate,\r\n // locationId, reportedBy, timeReported, dateReported\r\n // }\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/oneLocationAbsentSave/',\r\n data: JSON.stringify(saveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.oneLocationAbsentTableSaveResult;\r\n callback();\r\n }\r\n });\r\n }\r\n function selectAbsentNotificationTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsentNotificationTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n if (response.selectAbsentNotificationTypesResult) {\r\n var res = JSON.parse(response.selectAbsentNotificationTypesResult);\r\n callback(res);\r\n return;\r\n } \r\n \r\n callback([]);\r\n }\r\n });\r\n }\r\n function selectAbsentReasons(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsentReasons/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n if (response.selectAbsentReasonsResult) {\r\n var res = JSON.parse(response.selectAbsentReasonsResult);\r\n callback(res);\r\n return;\r\n }\r\n \r\n callback([]);\r\n }\r\n });\r\n }\r\n function selectAbsent(selectData, callback) {\r\n // selectData = {token, consumerId, locationId, statusDate }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsent/',\r\n data: JSON.stringify(selectData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = JSON.parse(response.selectAbsentResult);\r\n callback(res);\r\n }\r\n });\r\n \r\n return false;\r\n }\r\n \r\n return {\r\n absentPreSaveCheck,\r\n allLocationSaveAbsent,\r\n deleteAbsent,\r\n getConsumersByLocationAbsent,\r\n oneLocationAbsentSave,\r\n selectAbsentNotificationTypes,\r\n selectAbsentReasons,\r\n selectAbsent\r\n }\r\n})();\r\n\r\n","const rosterGroupIndividuals = (function () {\r\n\r\n let selectedConsumerIDs = [];\r\n let groupId;\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n selectedConsumerIDs.push(consumer.id);\r\n })\r\n await customGroupsAjax.addConsumerToCustomGroup(selectedConsumerIDs, groupId); \r\n roster2.clearSelectedConsumers(); \r\n roster2.clearActiveConsumers(); \r\n customGroups.loadManageGroupsPage(); \r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n roster2.clearSelectedConsumers();\r\n customGroups.loadManageGroupsPage(); \r\n break;\r\n }\r\n }\r\n }\r\n\r\n async function init(newGroupID) {\r\n selectedConsumerIDs = [];\r\n groupId = newGroupID;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"roster-GroupIndividuals\");\r\n roster2.miniRosterinit(null, { hideDate: true, locationDisabled: true });\r\n roster2.showMiniRoster(); \r\n roster2.removeMiniRosterBtn(); \r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","var customGroups = (function(){\r\n // DOM\r\n var GROUP_ADMIN_POPUP;\r\n var GROUP_LIST; // list of custom groups\r\n // Data & Values\r\n var rosterGroups;\r\n var customGroupData;\r\n var newGroupName;\r\n var consumerId;\r\n // selected location data obj\r\n var location;\r\n var locationId;\r\n let newGroupID;\r\n\r\n async function updateCustomGroupData(callback) {\r\n const results = (await customGroupsAjax.getConsumerGroups(locationId)).getConsumerGroupsJSONResult;\r\n roster2.setRosterGroups(results);\r\n customGroupData = results.filter(res => res.GroupCode === 'CST');\r\n if (callback) callback();\r\n }\r\n function showGroupDeleteWarningPopup(groupId) {\r\n var groupDeleteWarningPop = POPUP.build({\r\n header: 'Are you sure you want to delete this group?'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function(event) {\r\n customGroupsAjax.removeCustomGroup(groupId, async function() {\r\n results = (await customGroupsAjax.getConsumerGroups(locationId)).getConsumerGroupsJSONResult;\r\n roster2.setRosterGroups(results);\r\n\r\n customGroupData = results.filter(res => res.GroupCode === 'CST');\r\n populateGroupList(true);\r\n });\r\n POPUP.hide(groupDeleteWarningPop);\r\n }\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(groupDeleteWarningPop);\r\n }\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n groupDeleteWarningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(groupDeleteWarningPop);\r\n }\r\n // function handleGroupListEvents() {\r\n // // Add Consumer To Group\r\n // if (event.target.classList.contains('groupCheckbox')) {\r\n // var isChecked = event.target.checked;\r\n // var groupId = event.target.dataset.groupId;\r\n // // temp disable input until ajax call is done for click happy users\r\n // var checkbox = event.target.parentElement;\r\n // checkbox.classList.add('disabled');\r\n\r\n // if (isChecked) {\r\n // customGroupsAjax.addConsumerToGroup(groupId, consumerId, function() {\r\n // checkbox.classList.remove('disabled');\r\n // updateCustomGroupData();\r\n // });\r\n // } else {\r\n // customGroupsAjax.removeConsumerFromGroup(groupId, consumerId, function() {\r\n // checkbox.classList.remove('disabled');\r\n // updateCustomGroupData();\r\n // });\r\n // }\r\n\r\n // }\r\n // // Group Admin Page\r\n // if (event.target.classList.contains('groupDelete')) {\r\n // var groupId = event.target.dataset.groupId;\r\n // showGroupDeleteWarningPopup(groupId);\r\n // return;\r\n // }\r\n // }\r\n\r\n function groupCheckboxEvent(inputEl, checkboxEl) {\r\n const isChecked = inputEl.checked;\r\n const groupId = inputEl.dataset.groupId;\r\n checkboxEl.classList.add('disabled');\r\n\r\n if (isChecked) {\r\n customGroupsAjax.addConsumerToGroup(groupId, consumerId, function() {\r\n checkboxEl.classList.remove('disabled');\r\n updateCustomGroupData();\r\n });\r\n } else {\r\n customGroupsAjax.removeConsumerFromGroup(groupId, consumerId, function() {\r\n checkboxEl.classList.remove('disabled');\r\n updateCustomGroupData();\r\n });\r\n }\r\n };\r\n\r\n function groupDeleteEvent(el) {\r\n var groupId = el.dataset.groupId;\r\n showGroupDeleteWarningPopup(groupId);\r\n return;\r\n }\r\n\r\n function addToGroupEvent(el) {\r\n var groupId = el.dataset.groupId;\r\n rosterGroupIndividuals.init(groupId);\r\n return;\r\n }\r\n\r\n function populateGroupList(isAdmin) {\r\n GROUP_LIST.innerHTML = '';\r\n\r\n //updateCustomGroupData(function() {\r\n if (customGroupData !== undefined && customGroupData.length > 0) {\r\n customGroupData.forEach(cg => {\r\n var item = document.createElement('div');\r\n item.classList.add('customGroup');\r\n\r\n var text = document.createElement('p');\r\n text.innerHTML = cg.GroupName;\r\n\r\n var groupMembers = cg.Members.split('|');\r\n var isConsumerGroupMember = groupMembers.filter(gm => gm === consumerId);\r\n\r\n if (!isAdmin) {\r\n var itemAction = input.buildCheckbox({\r\n className: 'groupCheckbox',\r\n isChecked: isConsumerGroupMember.length > 0 ? true : false,\r\n attributes: [{key: 'data-group-id', value: cg.RetrieveID}],\r\n callback: () => groupCheckboxEvent(event.target,itemAction)\r\n });\r\n } else {\r\n var itemAction = button.build({\r\n icon: 'delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: ['groupDelete'],\r\n attributes: [{key: 'data-group-id', value: cg.RetrieveID}],\r\n callback: () => groupDeleteEvent(itemAction)\r\n });\r\n\r\n var manageConsumerAction = button.build({\r\n text: 'Add To Group',\r\n type: 'contained',\r\n style: 'secondary',\r\n attributes: [{ key: 'data-group-id', value: cg.RetrieveID }],\r\n callback: () => addToGroupEvent(manageConsumerAction)\r\n }); \r\n }\r\n\r\n\r\n item.appendChild(text);\r\n if (!isAdmin) {\r\n item.appendChild(itemAction);\r\n }\r\n else {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('groupBtnWrap');\r\n btnWrap.appendChild(manageConsumerAction);\r\n btnWrap.appendChild(itemAction);\r\n item.appendChild(btnWrap);\r\n }\r\n GROUP_LIST.appendChild(item);\r\n });\r\n } else {\r\n GROUP_LIST.innerHTML = `

    No custom groups found

    `;\r\n }\r\n //}); \r\n }\r\n function buildGroupList(isAdmin, consumerID) {\r\n consumerId = consumerID;\r\n GROUP_LIST = document.createElement('div');\r\n GROUP_LIST.classList.add('customGroupList');\r\n\r\n populateGroupList(isAdmin);\r\n\r\n // GROUP_LIST.addEventListener('click', handleGroupListEvents);\r\n\r\n return GROUP_LIST;\r\n }\r\n function showAddNewGroupPopup() {\r\n var newGroupPop = POPUP.build({\r\n classNames: 'addGroupPopup'\r\n });\r\n\r\n var addNewGroupInput = input.build({\r\n label: 'Group Name',\r\n type: 'text',\r\n style: 'secondary'\r\n });\r\n var addNewGroupBtn = button.build({\r\n text: 'Add Group',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['disabled', 'newGroupBtn']\r\n });\r\n\r\n addNewGroupInput.addEventListener('keyup', event => {\r\n newGroupName = event.target.value;\r\n\r\n if (newGroupName.length > 0) {\r\n addNewGroupBtn.classList.remove('disabled');\r\n } else {\r\n addNewGroupBtn.classList.add('disabled');\r\n }\r\n });\r\n addNewGroupBtn.addEventListener('click', event => {\r\n customGroupsAjax.addCustomGroup(newGroupName, locationId, async function (results) {\r\n newGroupID = results[0].CustomGroupID;\r\n results = (await customGroupsAjax.getConsumerGroups(locationId)).getConsumerGroupsJSONResult;\r\n roster2.setRosterGroups(results);\r\n\r\n customGroupData = results.filter(res => res.GroupCode === 'CST');\r\n populateGroupList(true);\r\n\r\n POPUP.hide(newGroupPop);\r\n manageGroupPopup();\r\n });\r\n });\r\n\r\n newGroupPop.appendChild(addNewGroupInput);\r\n newGroupPop.appendChild(addNewGroupBtn);\r\n\r\n POPUP.show(newGroupPop);\r\n }\r\n function buildManageGroupsPage() {\r\n var groupsPage = document.createElement('div');\r\n groupsPage.classList.add('manageGroupsPage');\r\n\r\n var topSection = document.createElement('div');\r\n\r\n var backToRoster = button.build({\r\n text: 'Back To Roster',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: function() {\r\n roster2.loadRosterInfo();\r\n }\r\n });\r\n\r\n var locationLabel = document.createElement('div');\r\n locationLabel.innerHTML = `

    ${location.locationName}

    `;\r\n\r\n topSection.appendChild(backToRoster);\r\n topSection.appendChild(locationLabel);\r\n\r\n var addNewGroupBtn = button.build({\r\n text: 'Create New Group',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newGroupBtn',\r\n callback: showAddNewGroupPopup\r\n });\r\n\r\n var groupsList = buildGroupList(true);\r\n\r\n groupsPage.appendChild(topSection);\r\n groupsPage.appendChild(addNewGroupBtn);\r\n groupsPage.appendChild(groupsList);\r\n\r\n return groupsPage;\r\n }\r\n function loadManageGroupsPage() {\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('roster-groups');\r\n\r\n if (!location || !locationId) {\r\n location = roster2.getSelectedLocationObj();\r\n locationId = location.locationId;\r\n }\r\n\r\n\r\n var manageGroupsPage = buildManageGroupsPage();\r\n\r\n DOM.ACTIONCENTER.appendChild(manageGroupsPage);\r\n }\r\n\r\n function manageGroupPopup() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n rosterGroupIndividuals.init(newGroupID);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'Your group has been created. Would you like to add individuals to this group now?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n function init(groupData) {\r\n customGroupData = groupData.filter(gd => gd.GroupCode === 'CST');\r\n rosterGroups = groupData;\r\n location = roster2.getSelectedLocationObj();\r\n locationId = location.locationId;\r\n // if (document.getElementById('mini_roster') != null)\r\n // document.getElementById('mini_roster').style.display = 'none';\r\n }\r\n\r\n return {\r\n init,\r\n loadManageGroupsPage,\r\n buildGroupList\r\n }\r\n\r\n})();","var customGroupsAjax = (function() {\r\n // Done\r\n function getConsumerGroups(locationId, callback) {\r\n return $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port + \"/\" + $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n data: '{\"locationId\":\"' + locationId +'\", \"token\":\"' + $.session.Token +'\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n });\r\n\r\n // $.ajax({\r\n // type: \"POST\",\r\n // url:\r\n // $.webServer.protocol + \"://\" +\r\n // $.webServer.address + \":\" +\r\n // $.webServer.port + \"/\" +\r\n // $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n // data: '{\"locationId\":\"' + locationId +'\", \"token\":\"' + $.session.Token +'\"}',\r\n // contentType: \"application/json; charset=utf-8\",\r\n // dataType: \"json\",\r\n // success: function(response, status, xhr) {\r\n // var res = response.getConsumerGroupsJSONResult;\r\n // callback(res);\r\n // }\r\n // });\r\n }\r\n\r\n function addCustomGroup(groupName, locationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/addCustomGroupJSON/',\r\n data: '{\"groupName\":\"' + groupName + '\",\"locationId\":\"' + locationId + '\",\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = response.addCustomGroupJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function removeCustomGroup(groupId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/removeCustomGroup/',\r\n data: '{\"groupId\":\"' + groupId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n });\r\n $.session.deletedGroupId = groupId;\r\n }\r\n function addConsumerToGroup(groupId, consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/addConsumerToGroup/',\r\n data: '{\"groupId\":\"' + groupId + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n }\r\n });\r\n }\r\n function removeConsumerFromGroup(groupId, consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/removeConsumerFromGroup/',\r\n data: '{\"groupId\":\"' + groupId + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n async function addConsumerToCustomGroup(consumerIDs, groupId, callback) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addConsumerToCustomGroupJSON/',\r\n data: JSON.stringify({ \r\n consumerIDs: consumerIDs,\r\n groupId: groupId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n // Old Ajax\r\n getConsumerGroups,\r\n addCustomGroup,\r\n addConsumerToGroup,\r\n removeCustomGroup,\r\n removeConsumerFromGroup,\r\n addConsumerToCustomGroup\r\n };\r\n})();\r\n","const consumerInfo = (function () {\r\n let locationId;\r\n let consumerId;\r\n let consumerName\r\n let selectedDate;\r\n let consumerInfoCard;\r\n let currentlyVisibleSection;\r\n let hasUnreadNote;\r\n let modalOverlay;\r\n let menuNewList = [];\r\n let currentScreen;\r\n let previousScreen = '';\r\n let nextScreen = '';\r\n\r\n function getImageOrientation(file, callback) {\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n var view = new DataView(e.target.result);\r\n if (view.getUint16(0, false) != 0xffd8) {\r\n return callback(-2);\r\n }\r\n var length = view.byteLength,\r\n offset = 2;\r\n while (offset < length) {\r\n if (view.getUint16(offset + 2, false) <= 8) return callback(-1);\r\n var marker = view.getUint16(offset, false);\r\n offset += 2;\r\n if (marker == 0xffe1) {\r\n if (view.getUint32((offset += 2), false) != 0x45786966) {\r\n return callback(-1);\r\n }\r\n\r\n var little = view.getUint16((offset += 6), false) == 0x4949;\r\n offset += view.getUint32(offset + 4, little);\r\n var tags = view.getUint16(offset, little);\r\n offset += 2;\r\n for (var i = 0; i < tags; i++) {\r\n if (view.getUint16(offset + i * 12, little) == 0x0112) {\r\n return callback(view.getUint16(offset + i * 12 + 8, little));\r\n }\r\n }\r\n } else if ((marker & 0xff00) != 0xff00) {\r\n break;\r\n } else {\r\n offset += view.getUint16(offset, false);\r\n }\r\n }\r\n return callback(-1);\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n\r\n // Workers\r\n function formatPortraitPath(portraitPath) {\r\n var splitPath = portraitPath.split('\\\\');\r\n var newPath = '\\\\\\\\\\\\\\\\';\r\n splitPath.forEach(sp => {\r\n if (sp === '') return;\r\n newPath += `${sp}\\\\\\\\`;\r\n });\r\n\r\n return newPath;\r\n }\r\n function updatePhotoToDefault() {\r\n var targetConsumerId = consumerInfoCard.dataset.consumerid;\r\n var consumerCardFromRosterList = document.querySelector(`[data-consumer-id=\"${targetConsumerId}\"]`);\r\n var rosterPic = consumerCardFromRosterList.querySelector('img');\r\n var infoCardPic = consumerInfoCard.querySelector('img');\r\n rosterPic.setAttribute('src', './images/new-icons/default.jpg');\r\n infoCardPic.setAttribute('src', './images/new-icons/default.jpg');\r\n rosterPic.setAttribute('onerror', './images/new-icons/default.jpg');\r\n infoCardPic.setAttribute('onerror', './images/new-icons/default.jpg');\r\n }\r\n async function updateConsumerPhoto(event) {\r\n event.preventDefault();\r\n var targetConsumerId = consumerInfoCard.dataset.consumerid;\r\n var consumerCardFromRosterList = document.querySelector(`[data-consumer-id=\"${targetConsumerId}\"]`);\r\n\r\n var pic2 = consumerCardFromRosterList.querySelector('img');\r\n pic2.setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n var pic1 = consumerInfoCard.querySelector('img');\r\n pic1.setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n\r\n var id = `${targetConsumerId}`;\r\n id = parseInt(id);\r\n var portraitPath = $.session.portraitPath;\r\n portraitPath = formatPortraitPath(portraitPath);\r\n\r\n var canvas = document.createElement('canvas');\r\n canvas.height = 127;\r\n canvas.width = 150;\r\n\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imageObj = new Image(152, 127);\r\n\r\n pic2.onload = function () {\r\n ctx.drawImage(pic2, 0, 0, 152, 127);\r\n\r\n var srcData = canvas.toDataURL('image/jpeg');\r\n srcData = srcData.replace('data:image/jpeg;base64,', '');\r\n\r\n rosterAjax.updatePortrait(srcData, id, portraitPath);\r\n\r\n getImageOrientation(event.target.files[0], function (orientation) {});\r\n };\r\n //ctx.drawImage(imageObj, 0, 0, 152, 127);\r\n var imageObjSrcVal = `#${id}`;\r\n imageObj.setAttribute('src', imageObjSrcVal);\r\n ctx.drawImage(imageObj, 0, 0, 152, 127);\r\n\r\n //var srcData = canvas.toDataURL('image/jpeg');\r\n //srcData = srcData.replace(\"data:image/jpeg;base64,\", \"\");\r\n //rosterAjax.updatePortrait(srcData, id, portraitPath);\r\n }\r\n function orderScheduleData(data) {\r\n var tableData = [\r\n {\r\n id: 'startTime',\r\n values: [\r\n data.start.Sun,\r\n data.start.Mon,\r\n data.start.Tues,\r\n data.start.Wed,\r\n data.start.Thur,\r\n data.start.Fri,\r\n data.start.Sat,\r\n ],\r\n },\r\n {\r\n id: 'endTime',\r\n values: [data.end.Sun, data.end.Mon, data.end.Tues, data.end.Wed, data.end.Thur, data.end.Fri, data.end.Sat],\r\n },\r\n ];\r\n\r\n return tableData;\r\n }\r\n function toggleHideShowAbsentMenuSection(locationid) {\r\n var menulist = document.querySelector('.menuList');\r\n var absentMenuItem = menulist.querySelector('[data-info-task=\"Mark As Absent\"]');\r\n if ((locationid === '000' || locationid === '0') && absentMenuItem !== null) {\r\n absentMenuItem.classList.add('hidden');\r\n const index = menuNewList.findIndex(x => x.title == 'Mark As Absent');\r\n if (index != -1) {\r\n menuNewList.splice(index, 1);\r\n }\r\n } else if (absentMenuItem !== null) {\r\n absentMenuItem.classList.remove('hidden');\r\n }\r\n }\r\n function downloadAttachment(attachmentid) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/getIndividualAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentid);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n // Hide/Show\r\n function showCard(consumer) {\r\n var consumersWithUnreadNotes = roster2.getConsumersWithUnreadNotes();\r\n hasUnreadNote = consumersWithUnreadNotes[consumer.dataset.consumerId];\r\n\r\n if ($.session.selectedLocation[0] === '0') {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.add('hidden');\r\n const index = menuNewList.findIndex(x => x.title == 'Progress Notes');\r\n if (index != -1) {\r\n menuNewList.splice(index, 1);\r\n }\r\n } else {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.remove('hidden');\r\n }\r\n\r\n if (hasUnreadNote) {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.add('needsAttention');\r\n } else {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.remove('needsAttention');\r\n }\r\n\r\n // shows consumer info card\r\n var locationObj = roster2.getSelectedLocationObj();\r\n locationId = locationObj.locationId;\r\n selectedDate = roster2.getSelectedDate();\r\n\r\n setConsumerToCard(consumer);\r\n\r\n var rosterList = document.querySelector('.roster');\r\n rosterList.classList.add('fadeOut');\r\n DOM.toggleHeaderOpacity();\r\n\r\n setTimeout(function () {\r\n consumerInfoCard.classList.add('visible');\r\n if (!isMobile) {\r\n bodyScrollLock.disableBodyScroll(consumerInfoCard);\r\n }\r\n modalOverlay.classList.add('modal');\r\n }, 300);\r\n }\r\n function closeCard() {\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n roster2.toggleRosterListLockdown(false);\r\n progressNotes.clearAllGlobalVariables();\r\n // hides consumer info card\r\n // grab visible section & subsection, then hide them\r\n var visibleSection = consumerInfoCard.querySelector('.infoCardSection.visible');\r\n var visibleSubSection = consumerInfoCard.querySelector('.infoCardSubSection.visible');\r\n if (visibleSection) visibleSection.classList.remove('visible');\r\n if (visibleSubSection) visibleSubSection.classList.remove('visible');\r\n // reset menuList\r\n var menuList = consumerInfoCard.querySelector('.menuList');\r\n menuList.classList.remove('fadeOut');\r\n // hide consumer info card\r\n consumerInfoCard.classList.remove('visible');\r\n // wait till consumer card is hidden\r\n setTimeout(function () {\r\n // reshow roster list\r\n var rosterList = document.querySelector('.roster');\r\n rosterList.classList.remove('hidden');\r\n rosterList.classList.remove('fadeOut');\r\n DOM.toggleHeaderOpacity();\r\n if (!isMobile) {\r\n bodyScrollLock.enableBodyScroll(consumerInfoCard);\r\n }\r\n modalOverlay.classList.remove('modal');\r\n }, 200);\r\n\r\n currentlyVisibleSection = null;\r\n }\r\n function showCardSection(targetSection) {\r\n // shows section\r\n currentlyVisibleSection = targetSection;\r\n\r\n var menu = consumerInfoCard.querySelector('.menuList');\r\n menu.classList.add('fadeOut');\r\n\r\n targetSection.classList.add('visible');\r\n }\r\n function showCardSubSection(targetSubSection) {\r\n // shows sub section\r\n var currentlyVisibleSubSection = consumerInfoCard.querySelector('.infoCardSubSection.visible');\r\n // hide currently visible sub section\r\n currentlyVisibleSubSection.classList.remove('visible');\r\n // restore height of target subsection\r\n targetSubSection.classList.remove('hidden');\r\n\r\n setTimeout(function () {\r\n // shrink currently visible sub section\r\n currentlyVisibleSubSection.classList.add('hidden');\r\n // show target sub section\r\n targetSubSection.classList.add('visible');\r\n }, 200);\r\n }\r\n function handleBackButtonClick() {\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n // first check to see if we are on the menulist\r\n var menuList = consumerInfoCard.querySelector('.menuList');\r\n var isMenuListHidden = menuList.classList.contains('fadeOut');\r\n if (!isMenuListHidden) {\r\n return;\r\n }\r\n\r\n var sectionBackBtn = document.querySelector('.sectionBackBtn');\r\n\r\n // clear out section/sub section variables\r\n //MAT - commenting out below due to teh fact that sometimes the back button is used while in progress notes. Still need the consumer ID at this point if adding another note\r\n progressNotes.clearAllGlobalVariablesOnBack();\r\n\r\n var visibleSection = consumerInfoCard.querySelector('.infoCardSection.visible');\r\n var visibleSubSection = visibleSection.querySelector('.infoCardSubSection.visible');\r\n\r\n if (visibleSubSection) {\r\n var isSubSection0Visible = visibleSubSection.classList.contains('subSec0');\r\n if (isSubSection0Visible) {\r\n // hide visible section & subSections\r\n visibleSubSection.classList.remove('visible');\r\n visibleSection.classList.remove('visible');\r\n // back to menu list\r\n menuList.classList.remove('fadeOut');\r\n sectionBackBtn.classList.add('hidden');\r\n } else {\r\n // back to subSec0\r\n var subSec0 = visibleSection.querySelector('.subSec0');\r\n // hide visible subsection\r\n visibleSubSection.classList.remove('visible');\r\n // reset subSec0 height\r\n subSec0.classList.remove('hidden');\r\n\r\n setTimeout(function () {\r\n // shrink currently visible sub section\r\n visibleSubSection.classList.add('hidden');\r\n // show subSec0\r\n subSec0.classList.add('visible');\r\n }, 200);\r\n }\r\n } else {\r\n // hide visible section\r\n visibleSection.classList.remove('visible');\r\n // back to menu list\r\n menuList.classList.remove('fadeOut');\r\n sectionBackBtn.classList.add('hidden');\r\n }\r\n }\r\n // Populating Card Sections\r\n function setConsumerToCard(consumer) {\r\n var cardClone = consumer.cloneNode(true);\r\n // get consumer name\r\n consumerName = consumer.children[1].innerText.replaceAll('\\n', '').split(',');\r\n // set consumer id attribute and cache it\r\n var id = consumer.dataset.consumerId;\r\n consumerInfoCard.setAttribute('data-consumerId', id);\r\n consumerId = id;\r\n // append consumer card to info card\r\n var header = consumerInfoCard.querySelector('.consumerInfoCard__heading');\r\n header.innerHTML = '';\r\n header.appendChild(cardClone);\r\n }\r\n function populateAbsentSection(section, absentData) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var absentForm = rosterAbsent.buildAbsentForm(true, consumerId, selectedDate, absentData);\r\n sectionInner.appendChild(absentForm);\r\n }\r\n function populatePhotoSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var removePhotoBtn = button.build({\r\n text: 'Remove Photo',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n if (!$.session.DemographicsPictureDelete) {\r\n return;\r\n }\r\n\r\n rosterAjax.updatePortrait('', parseInt(consumerId), formatPortraitPath($.session.portraitPath), () => {\r\n updatePhotoToDefault();\r\n });\r\n },\r\n });\r\n if (!$.session.DemographicsPictureDelete) {\r\n removePhotoBtn.classList.add('disabled');\r\n }\r\n\r\n var photoInput = input.build({\r\n label: 'Choose Image',\r\n type: 'file',\r\n accept: 'image/*',\r\n style: 'secondary',\r\n attributes: [{ key: 'multiple', value: 'false' }],\r\n });\r\n\r\n sectionInner.appendChild(removePhotoBtn);\r\n sectionInner.appendChild(photoInput);\r\n\r\n photoInput.addEventListener('change', updateConsumerPhoto);\r\n }\r\n function populateGroupSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var groupList = customGroups.buildGroupList(false, consumerId);\r\n sectionInner.appendChild(groupList);\r\n }\r\n function populateNotesSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n if (data.length === 0) {\r\n sectionInner.innerHTML = `

    No notes found.

    `;\r\n return;\r\n }\r\n\r\n sectionInner.innerHTML = `\r\n ${data\r\n .map(d => {\r\n var date = d.noteDate;\r\n date = date ? date.split(' ')[0] : '';\r\n\r\n return `\r\n
    \r\n
    \r\n
    Type: ${d.description}
    \r\n
    ${date}
    \r\n
    \r\n
    ${d.note}
    \r\n
    \r\n `;\r\n })\r\n .join('')}\r\n `;\r\n }\r\n function populateProgressNotesSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var viewAllNotesSection = progressNotes.buildViewAllNotesSection(data);\r\n var addNoteSection = progressNotes.buildAddNoteSection();\r\n var viewSingleNoteSection = progressNotes.buildViewSingleNoteSection();\r\n var addMessageSection = progressNotes.buildAddMessageSection();\r\n\r\n viewAllNotesSection.classList.add('infoCardSubSection', 'subSec0', 'visible');\r\n addNoteSection.classList.add('infoCardSubSection', 'subSec1', 'hidden');\r\n viewSingleNoteSection.classList.add('infoCardSubSection', 'subSec2', 'hidden');\r\n addMessageSection.classList.add('infoCardSubSection', 'subSec3', 'hidden');\r\n\r\n sectionInner.appendChild(viewAllNotesSection);\r\n sectionInner.appendChild(addNoteSection);\r\n sectionInner.appendChild(viewSingleNoteSection);\r\n sectionInner.appendChild(addMessageSection);\r\n }\r\n function populateAttachmentsSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var attachmentsList = document.createElement('div');\r\n attachmentsList.classList.add('attachmentsList');\r\n\r\n data.forEach(d => {\r\n var file = d.filename.split('.');\r\n var fileType = file.pop();\r\n var fileName = file.join('.');\r\n\r\n var attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n attachment.setAttribute('data-attachments-id', d.attachmentid);\r\n attachment.innerHTML = `\r\n

    ${fileName}

    \r\n

    ${fileType}

    \r\n

    ${icons.download}

    \r\n `;\r\n\r\n attachment.addEventListener('click', () => {\r\n downloadAttachment(d.attachmentid);\r\n });\r\n\r\n attachmentsList.appendChild(attachment);\r\n });\r\n\r\n sectionInner.appendChild(attachmentsList);\r\n }\r\n function showRelationshipDetails(section, sectionInner, data) {\r\n // set sectionInner to display none\r\n sectionInner.style.display = 'none';\r\n // check for nulls\r\n const companyName = data.companyName ? data.companyName : '';\r\n const title = data.title ? data.title : '';\r\n const addressOne = data.addressOne ? data.addressOne : '';\r\n const addressTwo = data.addressTwo ? data.addressTwo : '';\r\n const city = data.city ? data.city : '';\r\n const state = data.state ? data.state : '';\r\n const zipcode = data.zipcode ? data.zipcode : '';\r\n // show data\r\n const detailWrap = document.createElement('div');\r\n detailWrap.classList.add('relationshipDetailWrap');\r\n detailWrap.innerHTML = `\r\n
    \r\n

    Company Name

    \r\n

    ${companyName}

    \r\n
    \r\n
    \r\n

    Title

    \r\n

    ${title}

    \r\n
    \r\n
    \r\n

    Address

    \r\n

    ${addressOne}

    \r\n

    ${addressTwo}

    \r\n

    ${city}, ${state} ${zipcode}

    \r\n
    \r\n `;\r\n const donebtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n section.removeChild(detailWrap);\r\n sectionInner.style.display = 'block';\r\n },\r\n });\r\n detailWrap.appendChild(donebtn);\r\n section.appendChild(detailWrap);\r\n }\r\n function populateRelationshipsSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n if (data.length === 0) {\r\n sectionInner.innerHTML = `

    No relationships found.

    `;\r\n return;\r\n }\r\n\r\n const relationshipTable = document.createElement('div');\r\n relationshipTable.classList.add('relationshipTable');\r\n\r\n const relationshipHeader = document.createElement('div');\r\n relationshipHeader.classList.add('relationshipTable__header');\r\n relationshipHeader.innerHTML = `\r\n
    \r\n
    Name
    \r\n
    Relationship
    \r\n `;\r\n relationshipTable.appendChild(relationshipHeader);\r\n sectionInner.appendChild(relationshipTable);\r\n\r\n data.forEach(d => {\r\n var eventName;\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('relationshipTable__subTableWrap');\r\n\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('relationshipTable__mainDataRow', 'relationshipTable__dataRow');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('relationshipTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = `\r\n
    ${d.lastName}, ${d.firstName}
    \r\n
    ${d.description}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('relationshipTable__subRowWrap');\r\n\r\n if (d.primaryPhone && d.primaryPhone.trim().length != 0) {\r\n const subDataRowPrimaryPhone = document.createElement('div');\r\n subDataRowPrimaryPhone.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowPrimaryPhone.innerHTML = `
    \r\n
    \r\n ${\r\n d.primaryPhone && d.primaryPhone.trim().length != 0\r\n ? `Primary Phone: ${UTIL.formatPhoneNumber(d.primaryPhone.trim())}
    `\r\n : ``\r\n } \r\n
    `;\r\n subRowWrap.appendChild(subDataRowPrimaryPhone);\r\n }\r\n\r\n if (d.secondaryPhone && d.secondaryPhone.trim().length != 0) {\r\n const subDataRowSecondaryPhone = document.createElement('div');\r\n subDataRowSecondaryPhone.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowSecondaryPhone.innerHTML = `
    \r\n
    \r\n ${\r\n d.secondaryPhone && d.secondaryPhone.trim().length != 0\r\n ? `Secondary Phone: ${UTIL.formatPhoneNumber(d.secondaryPhone.trim())}
    `\r\n : ``\r\n } \r\n
    `;\r\n subRowWrap.appendChild(subDataRowSecondaryPhone);\r\n }\r\n\r\n if (d.cellularPhone && d.cellularPhone.trim().length != 0) {\r\n const subDataRowCellularPhone = document.createElement('div');\r\n subDataRowCellularPhone.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowCellularPhone.innerHTML = `
    \r\n
    \r\n ${\r\n d.cellularPhone && d.cellularPhone.trim().length != 0\r\n ? `Cellular Phone: ${UTIL.formatPhoneNumber(d.cellularPhone.trim())}`\r\n : ``\r\n }\r\n
    `;\r\n subRowWrap.appendChild(subDataRowCellularPhone);\r\n }\r\n\r\n if (d.email != null && d.email != '') {\r\n const subDataRowEmail = document.createElement('div');\r\n subDataRowEmail.classList.add('relationshipTable__subDataRow', 'relationshipTable__dataRow');\r\n subDataRowEmail.innerHTML = `
    \r\n
    \r\n ${d.email ? `Email: ${d.email}` : ``}\r\n
    `;\r\n subRowWrap.appendChild(subDataRowEmail);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n mainDataRow.addEventListener('click', e => {\r\n if (eventName != 'toggle') {\r\n showRelationshipDetails(section, sectionInner, d);\r\n }\r\n eventName = '';\r\n });\r\n }\r\n toggleIcon.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggleIcon.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggleIcon.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n rowWrap.appendChild(subRowWrap);\r\n\r\n sectionInner.appendChild(rowWrap);\r\n });\r\n }\r\n\r\n // workflow\r\n async function populateWorkflowSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n rosterWorkflow.init(consumerId, consumerName, ({ workflowViewer, addWorkflowBtn }) => {\r\n sectionInner.innerHTML = '';\r\n sectionInner.appendChild(workflowViewer);\r\n sectionInner.appendChild(addWorkflowBtn);\r\n });\r\n\r\n const { workflowViewer, addWorkflowBtn } = await rosterWorkflow.getWorkflowScreen();\r\n\r\n sectionInner.appendChild(workflowViewer);\r\n sectionInner.appendChild(addWorkflowBtn);\r\n }\r\n\r\n // *schedule\r\n function populateScheduleTable(sectionInner, locationId) {\r\n function populateTable(sectionInner, schedule) {\r\n var showWeekOne = !schedule.isWeekOneEmpty;\r\n var showWeekTwo = !schedule.isWeekTwoEmpty;\r\n\r\n var tableWrap = document.querySelector('.consumerScheduleTable');\r\n if (!tableWrap) {\r\n var tableWrap = document.createElement('div');\r\n tableWrap.classList.add('consumerScheduleTable');\r\n } else {\r\n tableWrap.innerHTML = '';\r\n }\r\n\r\n if (!showWeekOne && !showWeekTwo) {\r\n tableWrap.innerHTML = `

    There is nothing scheduled for this location

    `;\r\n }\r\n\r\n var columnHeadings = ['sun', 'mon', 'tues', 'wed', 'thurs', 'fri', 'sat'];\r\n var scheduleTable1 = table.build({\r\n tableId: 'consumerScheduleWeekOne',\r\n columnHeadings,\r\n });\r\n var scheduleTable2 = table.build({\r\n tableId: 'consumerScheduleWeekTwo',\r\n columnHeadings,\r\n });\r\n\r\n // Populate table\r\n var table1Data = orderScheduleData(schedule.weekOne);\r\n var table2Data = orderScheduleData(schedule.weekTwo);\r\n if (showWeekOne) table.populate(scheduleTable1, table1Data);\r\n if (showWeekTwo) table.populate(scheduleTable2, table2Data);\r\n\r\n // Append table\r\n if (showWeekOne) tableWrap.appendChild(scheduleTable1);\r\n if (showWeekTwo) tableWrap.appendChild(scheduleTable2);\r\n if (showWeekOne || showWeekTwo) sectionInner.appendChild(tableWrap);\r\n }\r\n rosterAjax.getConsumerSchedule(locationId, consumerId, function (scheduleResults) {\r\n var scheduleResultsObj = { weekOne: { start: {}, end: {} }, weekTwo: { start: {}, end: {} } };\r\n var scheduleResultsObjKeys = Object.keys(scheduleResults[0]);\r\n var isWeekOneEmpty = true;\r\n var isWeekTwoEmpty = true;\r\n scheduleResultsObjKeys.forEach(key => {\r\n if (key.indexOf('2') === -1) {\r\n if (key.indexOf('End') === -1) {\r\n var newkey = key.replace('Start', '');\r\n if (!scheduleResultsObj.weekOne.start[newkey]) {\r\n scheduleResultsObj.weekOne.start[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n } else {\r\n var newkey = key.replace('End', '');\r\n if (!scheduleResultsObj.weekOne.end[newkey]) {\r\n scheduleResultsObj.weekOne.end[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n }\r\n if (scheduleResults[0][key] !== '') isWeekOneEmpty = false;\r\n } else {\r\n if (key.indexOf('End') === -1) {\r\n var newkey = key.replace('Start2', '');\r\n if (!scheduleResultsObj.weekTwo.start[newkey]) {\r\n scheduleResultsObj.weekTwo.start[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n } else {\r\n var newkey = key.replace('End2', '');\r\n if (!scheduleResultsObj.weekTwo.end[newkey]) {\r\n scheduleResultsObj.weekTwo.end[newkey] = UTIL.convertFromMilitary(scheduleResults[0][key]);\r\n }\r\n }\r\n\r\n if (scheduleResults[0][key] !== '') isWeekTwoEmpty = false;\r\n }\r\n });\r\n scheduleResultsObj.isWeekOneEmpty = isWeekOneEmpty;\r\n scheduleResultsObj.isWeekTwoEmpty = isWeekTwoEmpty;\r\n populateTable(sectionInner, scheduleResultsObj);\r\n });\r\n }\r\n function populateScheduleSection(targetSection, locations) {\r\n var sectionInner = targetSection.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n if (locations.length === 0) {\r\n sectionInner.innerHTML = 'Consumer has no locations';\r\n return;\r\n }\r\n\r\n var locationDropdown = dropdown.build({\r\n id: 'consumerLocationScheduleDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n\r\n var locationDropdownData = locations.map(al => {\r\n return {\r\n value: al.id,\r\n text: al.name,\r\n };\r\n });\r\n\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n sectionInner.appendChild(locationDropdown);\r\n locationDropdown.addEventListener('change', function (event) {\r\n populateScheduleTable(sectionInner, event.target.value);\r\n });\r\n\r\n // populate table\r\n populateScheduleTable(sectionInner, locationDropdownData[0].value);\r\n }\r\n function populateIntellivueSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var url;\r\n\r\n if (data.size === 0) {\r\n sectionInner.innerHTML = `

    No applications found.

    `;\r\n return;\r\n }\r\n\r\n var applicationList = document.createElement('h2');\r\n applicationList.innerHTML = 'Applications';\r\n applicationList.classList.add('applicationList');\r\n var lineBR = document.createElement('br');\r\n applicationList.appendChild(lineBR);\r\n\r\n sectionInner.appendChild(applicationList);\r\n\r\n for (let [k, v] of data) {\r\n var appId = k;\r\n\r\n intellivue.getViewURL(consumerId, appId, res => {\r\n var application = document.createElement('div');\r\n application.classList.add('application');\r\n application.innerHTML = `\r\n\t\t\t\t\t\t\t

    ${v}

    \r\n\t\t\t\t\t\t\t`;\r\n applicationList.appendChild(application);\r\n });\r\n }\r\n\r\n // data.forEach(appName => {\r\n // test = data.key;\r\n //\tvar appId = data.indexOf(appName) +1;\r\n //\tvar application = document.createElement('div');\r\n //\tapplication.classList.add('application');\r\n\r\n //\tintellivue.getViewURL(consumerId, appId, res => { application.innerHTML = `\r\n //\t

    ${appName}

    \r\n //\t`});\r\n\r\n //\tsectionInner.appendChild(application);\r\n //})\r\n\r\n sectionInner.appendChild(applicationList);\r\n }\r\n\r\n // Card Sections\r\n function buildSections(sections) {\r\n return sections.map((sec, index) => {\r\n // section\r\n var section = document.createElement('div');\r\n var className = [`${sec}Section`, `sec${index + 1}`];\r\n section.classList.add('infoCardSection', ...className);\r\n // section inner\r\n var cardInner = document.createElement('div');\r\n cardInner.classList.add('sectionInner');\r\n section.appendChild(cardInner);\r\n return section;\r\n });\r\n }\r\n function buildMenu() {\r\n var cardMenuList = document.createElement('div');\r\n cardMenuList.classList.add('menuList', 'sec0');\r\n\r\n var cardInner = document.createElement('div');\r\n cardInner.classList.add('sectionInner');\r\n menuNewList = [];\r\n if ($.session.DemographicsView === false) {\r\n // pointless reset based off above session variable\r\n $.session.DemographicsView = false;\r\n $.session.DemographicsRelationshipsView = false;\r\n $.session.viewLocationSchedulesKey = false;\r\n $.session.DemographicsViewAttachments = false;\r\n $.session.intellivuePermission = '';\r\n }\r\n\r\n var menuItems = [\r\n {\r\n title: 'Mark As Absent',\r\n icon: 'no',\r\n className: 'absent',\r\n visible: $.session.useAbsentFeature === 'Y' ? true : false,\r\n },\r\n {\r\n title: 'Change Photo',\r\n icon: 'camera',\r\n className: 'photo',\r\n visible: $.session.DemographicsPictureUpdate,\r\n },\r\n { title: 'Add To Group', icon: 'selectAll', className: 'group', visible: true },\r\n {\r\n title: 'Consumer Notes',\r\n icon: 'note',\r\n className: 'consumerNote',\r\n visible: $.session.DemographicsNotesView,\r\n },\r\n {\r\n title: 'Progress Notes',\r\n icon: 'note',\r\n className: 'progressNote',\r\n visible: $.session.useProgressNotes === 'Y' ? true : false,\r\n },\r\n {\r\n title: 'Demographics',\r\n icon: 'info',\r\n className: 'demographics',\r\n visible: $.session.DemographicsView,\r\n },\r\n {\r\n title: 'Relationships',\r\n icon: 'people',\r\n className: 'relationships',\r\n visible: $.session.DemographicsRelationshipsView,\r\n },\r\n {\r\n title: 'View Attachments',\r\n icon: 'attachment',\r\n className: 'attachments',\r\n visible: $.session.DemographicsViewAttachments,\r\n },\r\n {\r\n title: 'View Schedule',\r\n icon: 'calendar',\r\n className: 'schedule',\r\n visible: $.session.viewLocationSchedulesKey,\r\n },\r\n {\r\n title: 'Intellivue',\r\n icon: 'info',\r\n className: 'intellivue',\r\n visible: $.session.intellivuePermission === '' ? false : true,\r\n },\r\n {\r\n title: 'Workflow',\r\n icon: 'workflow',\r\n className: 'workflow',\r\n visible: true,\r\n },\r\n ];\r\n menuItems.forEach(mi => {\r\n if (!mi.visible) return;\r\n var item = document.createElement('div');\r\n item.setAttribute('data-info-task', mi.title);\r\n item.classList.add('menuList__item', mi.className);\r\n\r\n var itemTitle = document.createElement('p');\r\n itemTitle.innerHTML = mi.title;\r\n\r\n item.innerHTML = icons[mi.icon];\r\n item.appendChild(itemTitle);\r\n item.innerHTML += icons['keyArrowRight'];\r\n\r\n cardInner.appendChild(item);\r\n menuNewList.push(mi);\r\n });\r\n cardMenuList.appendChild(cardInner);\r\n\r\n return cardMenuList;\r\n }\r\n\r\n // Consumer Info Card\r\n function setupCardEvents(cardMenu) {\r\n cardMenu.addEventListener('click', event => {\r\n var action = event.target.dataset.infoTask;\r\n setupCard(action);\r\n });\r\n }\r\n\r\n async function setupCard(action) {\r\n var targetSection;\r\n currentScreen = action;\r\n var arraynumber = menuNewList.findIndex(x => x.title == currentScreen);\r\n previousScreen = menuNewList[arraynumber - 1] == undefined ? null : menuNewList[arraynumber - 1].title;\r\n nextScreen = menuNewList[arraynumber + 1] == undefined ? null : menuNewList[arraynumber + 1].title;\r\n\r\n if (previousScreen == null) {\r\n backwordBtn.classList.remove('hidden');\r\n backwordBtn.classList.add('disabled');\r\n } else {\r\n backwordBtn.classList.remove('hidden');\r\n backwordBtn.classList.remove('disabled');\r\n }\r\n if (nextScreen == null) {\r\n forwardBtn.classList.add('hidden');\r\n } else {\r\n forwardBtn.classList.remove('hidden');\r\n }\r\n\r\n document.getElementById('backwordBtn').innerHTML =\r\n menuNewList[arraynumber - 1] == undefined\r\n ? null\r\n : `${icons['arrowBack']}` + '' + menuNewList[arraynumber - 1].title;\r\n document.getElementById('forwardBtn').innerHTML =\r\n menuNewList[arraynumber + 1] == undefined\r\n ? null\r\n : menuNewList[arraynumber + 1].title + '' + `${icons['arrowNext']}`;\r\n\r\n switch (action) {\r\n case 'Mark As Absent': {\r\n targetSection = consumerInfoCard.querySelector('.absentSection');\r\n absentAjax.selectAbsent(\r\n {\r\n token: $.session.Token,\r\n consumerId,\r\n locationId,\r\n statusDate: selectedDate,\r\n },\r\n function (results) {\r\n populateAbsentSection(targetSection, results);\r\n },\r\n );\r\n break;\r\n }\r\n case 'Change Photo': {\r\n targetSection = consumerInfoCard.querySelector('.photoSection');\r\n populatePhotoSection(targetSection);\r\n break;\r\n }\r\n case 'Add To Group': {\r\n targetSection = consumerInfoCard.querySelector('.groupSection');\r\n populateGroupSection(targetSection);\r\n break;\r\n }\r\n case 'Consumer Notes': {\r\n targetSection = consumerInfoCard.querySelector('.notesSection');\r\n rosterAjax.getDemographicsNotes(consumerId, function (results) {\r\n populateNotesSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'Progress Notes': {\r\n targetSection = consumerInfoCard.querySelector('.progressNotesSection');\r\n progressNotes.init(targetSection, locationId, consumerId);\r\n progressNotes.getConsumerNotes(function (results) {\r\n populateProgressNotesSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'View Attachments': {\r\n targetSection = consumerInfoCard.querySelector('.attachmentsSection');\r\n rosterAjax.getAllAttachments(\r\n {\r\n token: $.session.Token,\r\n locationId: locationId,\r\n consumerId: consumerId,\r\n checkDate: selectedDate,\r\n },\r\n function (results) {\r\n populateAttachmentsSection(targetSection, results);\r\n },\r\n );\r\n break;\r\n }\r\n case 'View Schedule': {\r\n targetSection = consumerInfoCard.querySelector('.scheduleSection');\r\n rosterAjax.getConsumerScheduleLocation(consumerId, function (locationResults) {\r\n populateScheduleSection(targetSection, locationResults);\r\n });\r\n break;\r\n }\r\n case 'Demographics': {\r\n targetSection = consumerInfoCard.querySelector('.demographicsSection');\r\n rosterAjax.getConsumerDemographics(consumerId, function (results) {\r\n demographics.populate(targetSection, results[0], consumerId);\r\n });\r\n break;\r\n }\r\n case 'Relationships': {\r\n targetSection = consumerInfoCard.querySelector('.relationshipsSection');\r\n rosterAjax.getConsumerRelationships(consumerId, function (results) {\r\n populateRelationshipsSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'Intellivue': {\r\n targetSection = consumerInfoCard.querySelector('.intellivueSection');\r\n intellivue.getApplicationListHostedWithUser(function (results) {\r\n populateIntellivueSection(targetSection, results);\r\n });\r\n break;\r\n }\r\n case 'Workflow': {\r\n targetSection = consumerInfoCard.querySelector('.workflowSection');\r\n await populateWorkflowSection(targetSection);\r\n }\r\n }\r\n\r\n if (targetSection) {\r\n var sectionBackBtn = document.querySelector('.sectionBackBtn');\r\n sectionBackBtn.classList.remove('hidden');\r\n showCardSection(targetSection);\r\n }\r\n }\r\n\r\n function buildCard() {\r\n consumerInfoCard = document.createElement('div');\r\n consumerInfoCard.classList.add('consumerInfoCard');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var navBtnWrap = document.createElement('div');\r\n navBtnWrap.classList.add('btnWrap');\r\n\r\n var backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n classNames: ['sectionBackBtn', 'hidden'],\r\n callback: handleBackButtonClick,\r\n });\r\n var closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'close',\r\n classNames: 'consumerInfoCloseBtn',\r\n callback: closeCard,\r\n });\r\n\r\n var backwordBtn = button.build({\r\n id: 'backwordBtn',\r\n text: previousScreen,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'consumerInfoBackwardBtn',\r\n });\r\n var forwardBtn = button.build({\r\n id: 'forwardBtn',\r\n text: nextScreen,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'consumerInfoForwardBtn',\r\n });\r\n btnWrap.appendChild(backBtn);\r\n btnWrap.appendChild(closeBtn);\r\n\r\n navBtnWrap.appendChild(backwordBtn);\r\n navBtnWrap.appendChild(forwardBtn);\r\n\r\n var cardInner = document.createElement('div');\r\n cardInner.classList.add('cardInner');\r\n var cardHeading = document.createElement('div');\r\n cardHeading.classList.add('consumerInfoCard__heading');\r\n var cardBody = document.createElement('div');\r\n cardBody.classList.add('consumerInfoCard__body');\r\n\r\n var cardMenu = buildMenu();\r\n cardBody.appendChild(cardMenu);\r\n\r\n var sections = buildSections([\r\n 'absent',\r\n 'photo',\r\n 'group',\r\n 'notes',\r\n 'progressNotes',\r\n 'demographics',\r\n 'relationships',\r\n 'attachments',\r\n 'schedule',\r\n 'intellivue',\r\n 'workflow',\r\n ]);\r\n sections.forEach(section => {\r\n cardBody.appendChild(section);\r\n });\r\n\r\n // Build card\r\n cardInner.appendChild(cardHeading);\r\n cardInner.appendChild(navBtnWrap);\r\n cardInner.appendChild(cardBody);\r\n\r\n consumerInfoCard.appendChild(btnWrap);\r\n consumerInfoCard.appendChild(cardInner);\r\n\r\n setupCardEvents(cardMenu);\r\n\r\n modalOverlay = document.querySelector('.overlay');\r\n\r\n document.body.appendChild(consumerInfoCard);\r\n\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n eventListeners();\r\n return consumerInfoCard;\r\n }\r\n\r\n function eventListeners() {\r\n // Add event listener to close the card when clicking outside of it\r\n modalOverlay.addEventListener('click', function (event) {\r\n closeCard();\r\n });\r\n forwardBtn.addEventListener('click', function (event) {\r\n handleBackButtonClick();\r\n setupCard(nextScreen);\r\n });\r\n backwordBtn.addEventListener('click', function (event) {\r\n handleBackButtonClick();\r\n setupCard(previousScreen);\r\n });\r\n }\r\n\r\n return {\r\n buildCard,\r\n showCard,\r\n showCardSubSection,\r\n toggleHideShowAbsentMenuSection,\r\n closeCard,\r\n };\r\n})();\r\n","const demographics = (function () {\r\n let demoData;\r\n let sectionInner;\r\n let unEditabled = [\r\n 'pathToEmployment',\r\n 'county',\r\n 'organization',\r\n 'organizationAddress',\r\n 'organizationPhone',\r\n 'generation',\r\n 'name',\r\n 'age',\r\n 'race',\r\n 'maritalStatus',\r\n 'gender',\r\n 'primaryLanguage',\r\n 'educationLevel',\r\n ];\r\n let gkOnly = ['cellPhone', 'generation'];\r\n\r\n let sectionLoad;\r\n let dataLoad;\r\n let consumerIDLoad;\r\n\r\n function stringAdd(string, start, newSubStr) {\r\n return string.slice(0, start) + newSubStr + string.slice(start);\r\n }\r\n\r\n function setCaretPosition(elem, caretPos) {\r\n if (elem != null) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n } else {\r\n if (elem.selectionStart) {\r\n elem.focus();\r\n elem.setSelectionRange(caretPos, caretPos);\r\n } else elem.focus();\r\n }\r\n }\r\n }\r\n\r\n function clearCurrentEdit() {\r\n // check for field in edit mode and switch to view\r\n const currentEdit = sectionInner.querySelector('.editMode');\r\n if (currentEdit) {\r\n // clear icon here so its only removed if they click on another field\r\n const saveIcons = [...currentEdit.querySelectorAll('.saveIcon')];\r\n saveIcons.forEach(si => {\r\n si.innerHTML = '';\r\n });\r\n\r\n currentEdit.classList.remove('editMode');\r\n }\r\n }\r\n function formatName(f, m, l) {\r\n const first = f;\r\n const middle = m ? m : '';\r\n const last = l;\r\n\r\n return `${first} ${middle} ${last}`;\r\n }\r\n function formatMaritalStatus(status) {\r\n switch (status) {\r\n case 'M':\r\n return 'Married';\r\n case 'S':\r\n return 'Single';\r\n case 'P':\r\n return 'Separated';\r\n case 'W':\r\n return 'Widowed';\r\n case 'D':\r\n return 'Divorced';\r\n case 'U':\r\n return 'Unkown';\r\n }\r\n }\r\n function formatPhoneNumber(number) {\r\n if (!number) return;\r\n const splitNumber = number\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .replaceAll('x', '');\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(splitNumber.substr(0, 10));\r\n const phoneExt = splitNumber.substr(10);\r\n\r\n const phone = phoneExt ? `${phoneNumber} (${phoneExt})` : `${phoneNumber}`;\r\n\r\n return phone;\r\n }\r\n function formatDOB(dob) {\r\n if (!dob) return;\r\n let formatDOB;\r\n if (dob !== '') {\r\n let newDate = new Date(dob);\r\n let theMonth = newDate.getMonth() + 1;\r\n formatDOB =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n } else {\r\n formatDOB = '';\r\n }\r\n\r\n return formatDOB;\r\n }\r\n function formatSSN(ssn) {\r\n let SSN = stringAdd(ssn, 3, '-');\r\n SSN = stringAdd(SSN, 6, '-');\r\n return SSN;\r\n }\r\n function formatOrganizationAddress(add1, add2, city, state, zip) {\r\n return `${add1 ? add1 : ''} ${add2 ? add2 : ''}, ${city ? city : ''} ${\r\n state ? state : ''\r\n }
    ${zip ? formatZipCode(zip) : ''}`;\r\n }\r\n function formatZipCode(zipCode) {\r\n const zip = zipCode.replace(/[^\\w\\s]/gi, '').replaceAll(' ', '');\r\n if (zip.length <= 5) {\r\n return zip;\r\n } else {\r\n return zip.slice(0, 5) + '-' + zip.slice(5);\r\n }\r\n }\r\n\r\n function setInputType(input, name) {\r\n // DATE\r\n if (name === 'dateOfBirth') {\r\n input.type = 'date';\r\n return;\r\n }\r\n // EMAIL\r\n if (name === 'email') {\r\n input.type = 'email';\r\n input.pattern = '[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$';\r\n return;\r\n }\r\n // NUMBER\r\n if (\r\n name === 'zip' ||\r\n name === 'medicaidNumber' ||\r\n name === 'medicareNumber' ||\r\n name === 'residentNumber' ||\r\n name === 'localID'\r\n // name === 'consumerNumber'\r\n ) {\r\n input.type = 'number';\r\n input.pattern = '/^[+]?[(]?[0-9]{3}[)]?[-s.]?[0-9]{3}[-s.]?[0-9]{4,6}$/im';\r\n }\r\n // TEL\r\n if (\r\n name === 'primaryPhone' ||\r\n name === 'secondaryPhone' ||\r\n name === 'cellPhone' ||\r\n name === 'organizationPhone'\r\n ) {\r\n input.type = 'tel';\r\n return;\r\n }\r\n\r\n input.type = 'text';\r\n }\r\n function getAgeFromDOB(dob) {\r\n var currentDate = new Date();\r\n var birthDate = new Date(dob);\r\n var age = currentDate.getFullYear() - birthDate.getFullYear();\r\n var monthDiff = currentDate.getMonth() - birthDate.getMonth();\r\n if (monthDiff < 0 || (monthDiff === 0 && currentDate.getDate() < birthDate.getDate())) {\r\n age--;\r\n }\r\n return age;\r\n }\r\n function formatLabelText(text) {\r\n if (text.toLowerCase() === 'ssn') {\r\n return text.toUpperCase();\r\n }\r\n if (text.toLowerCase() === 'localid') {\r\n return 'Local ID';\r\n }\r\n \r\n if (text.toLowerCase() === 'consumernumber') {\r\n return 'Consumer #';\r\n }\r\n const splitText = text\r\n .match(/([A-Z]?[^A-Z]*)/g)\r\n .slice(0, -1)\r\n .map(t => UTIL.capitalize(t));\r\n return splitText.join(' ');\r\n }\r\n function formatViewInnerHTML(name, value) {\r\n if (!value) value = '';\r\n\r\n switch (name) {\r\n case 'city': {\r\n return `${value}, `;\r\n }\r\n case 'addressOne':\r\n case 'addressTwo':\r\n case 'state':\r\n case 'zip':\r\n case 'pathToEmployment': {\r\n return value;\r\n }\r\n default: {\r\n return `${formatLabelText(name)}: ${value}`;\r\n }\r\n }\r\n }\r\n\r\n function checkAlphabets(input) {\r\n for (const char of input) {\r\n if ((char >= \"a\" && char <= \"z\") ||\r\n (char >= \"A\" && char <= \"Z\")) { \r\n return true;\r\n }\r\n }\r\n return false; \r\n } \r\n\r\n function formatDataForDisplay(data) {\r\n const pathToEmployment = data.pathToEmployment;\r\n\r\n // Address\r\n const addressOne = data.addressone;\r\n const addressTwo = data.addresstwo;\r\n const city = data.mailcity;\r\n const state = data.mailstate;\r\n const zip = data.mailzipcode ? formatZipCode(data.mailzipcode) : '';\r\n \r\n // Contact Info \r\n const formattedPrimaryPhone = data.primaryphone == '' ? '' : formatPhoneNumber(data.primaryphone); \r\n primaryPhone = formattedPrimaryPhone == '' || checkAlphabets(formattedPrimaryPhone) == true ? '' : `${formattedPrimaryPhone} ${icons.phone}`;\r\n\r\n const formattedSecondaryPhone = data.secondaryphone == '' ? '' : formatPhoneNumber(data.secondaryphone);\r\n secondaryPhone = formattedSecondaryPhone == '' || checkAlphabets(formattedSecondaryPhone) == true ? '' : `${formattedSecondaryPhone} ${icons.phone}`;\r\n\r\n cellPhone = data.cellphone == '' ? '' : formatPhoneNumber(data.cellphone);\r\n cellPhone = (cellPhone === '%' || cellPhone === '' || checkAlphabets(cellPhone) == true) ? '' : `${cellPhone} ${icons.phone}`;\r\n\r\n const email = data.email == '' ? '' : `${data.email} ${icons.Email}`;\r\n\r\n \r\n // Additional Info\r\n const dateOfBirth = formatDOB(data.DOB);\r\n const socialSecurityNumber = formatSSN(data.SSN);\r\n const medicaidNumber = data.MedicaidNumber;\r\n const medicareNumber = data.MedicareNumber;\r\n const residentNumber = data.ResidentNumber;\r\n const consumerNumber = data.consumerNumber;\r\n const localID = data.localID;\r\n\r\n // Organization Info\r\n const county = data.County;\r\n const organization = data.orgName;\r\n const organizationAddress = formatOrganizationAddress(\r\n data.orgAdd1,\r\n data.orgAdd2,\r\n data.orgCity,\r\n data.orgState,\r\n data.orgZipCode,\r\n );\r\n const formattedOrganizationPhone = data.orgPrimaryPhone == '' ? '' : formatPhoneNumber(data.orgPrimaryPhone);\r\n organizationPhone = formattedOrganizationPhone == '' || checkAlphabets(formattedOrganizationPhone) == true ? '' : `${formattedOrganizationPhone} ${icons.phone}`;\r\n\r\n // Demographic Info\r\n const name = formatName(data.firstname, data.middlename, data.lastname);\r\n // const firstName = data.firstname;\r\n // const middleName = data.middlename;\r\n // const lastName = data.lastname;\r\n\r\n const generation = data.generation;\r\n const age = getAgeFromDOB(data.DOB);\r\n const race = data.race;\r\n const maritalStatus = formatMaritalStatus(data.maritalStatus);\r\n const gender = data.gender;\r\n const primaryLanguage = data.language;\r\n const educationLevel = data.educationLevel;\r\n\r\n return {\r\n pathToEmployment,\r\n // Address\r\n address: {\r\n addressOne,\r\n addressTwo,\r\n city,\r\n state,\r\n zip,\r\n },\r\n // Contact Info\r\n contact: {\r\n primaryPhone,\r\n secondaryPhone,\r\n cellPhone,\r\n email,\r\n },\r\n // Additional Info\r\n additional: {\r\n dateOfBirth,\r\n medicaidNumber,\r\n medicareNumber,\r\n residentNumber,\r\n localID,\r\n consumerNumber,\r\n ssn: socialSecurityNumber,\r\n },\r\n // Organization Info\r\n organization: {\r\n county,\r\n organization,\r\n organizationAddress,\r\n organizationPhone,\r\n },\r\n // Demographic Info\r\n demographic: {\r\n name,\r\n generation,\r\n age,\r\n race,\r\n maritalStatus,\r\n gender,\r\n primaryLanguage,\r\n educationLevel,\r\n },\r\n };\r\n }\r\n\r\n function buildInputGroupWrap(title) {\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('inputGroupWrap', `${title.replaceAll(' ', '').toLowerCase()}`);\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerText = title; \r\n wrap.appendChild(heading);\r\n\r\n wrap.addEventListener('click', e => {\r\n if (!$.session.DemographicsUpdate) return;\r\n\r\n // if (title === 'Additional Info') return;\r\n\r\n if (e.target.classList.contains('inputGroup')) {\r\n if (e.target.classList.contains('unEditabled')) return;\r\n clearCurrentEdit();\r\n // set target to edit mode\r\n if (title !== 'Address') {\r\n if (!e.target.classList.contains('editMode')) {\r\n e.target.classList.add('editMode');\r\n }\r\n } else {\r\n if (!wrap.classList.contains('editMode')) {\r\n wrap.classList.add('editMode');\r\n }\r\n }\r\n }\r\n });\r\n\r\n return wrap;\r\n }\r\n function buildInputGroup(name, value) {\r\n // Input Group\r\n const inputGroup = document.createElement('div');\r\n inputGroup.classList.add('inputGroup', `${name.match(/([A-Z]?[^A-Z]*)/g)[0]}`);\r\n\r\n // view element\r\n const viewElement = document.createElement('p');\r\n viewElement.classList.add('view');\r\n viewElement.innerHTML = formatViewInnerHTML(name, value);\r\n\r\n // edit element\r\n let editElement;\r\n if (!unEditabled.includes(name) || !$.session.DemographicsUpdate) {\r\n editElement = document.createElement('div');\r\n editElement.classList.add('edit');\r\n\r\n if (!value || value === ' ') {\r\n value = '';\r\n } else {\r\n if (name.includes('Phone') || name.includes('email')) {\r\n const phoneNumberEndIndex = value.indexOf(' {\r\n if (name === 'email') {\r\n const validateEmail = email => {\r\n return email.match(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n );\r\n };\r\n\r\n if (!validateEmail(e.target.value)) {\r\n editElement.classList.add('invalid');\r\n } else {\r\n editElement.classList.remove('invalid');\r\n }\r\n }\r\n if (name === 'ssn') {\r\n let validSocial = false;\r\n let value = e.target.value.replaceAll('-', '').slice(0, 9);\r\n\r\n if (value.length === 9) {\r\n validSocial = true;\r\n }\r\n\r\n let social;\r\n\r\n if (value.length >= 4 && value.length <= 5) {\r\n social = stringAdd(value, 3, '-');\r\n e.target.value = social;\r\n }\r\n if (value.length >= 6) {\r\n social = stringAdd(value, 3, '-');\r\n social = stringAdd(social, 6, '-');\r\n e.target.value = social;\r\n }\r\n\r\n if (validSocial) {\r\n editElement.classList.remove('invalid');\r\n } else {\r\n editElement.classList.add('invalid');\r\n }\r\n }\r\n if (name === 'primaryPhone' || name === 'secondaryPhone' || name === 'cellPhone') {\r\n let validPhone = false;\r\n let value = e.target.value\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .slice(0, 15);\r\n\r\n let phoneNumber;\r\n\r\n if (value.length >= 4 && value.length <= 6) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 7 && value.length <= 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n\r\n if (value.length > 0) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n phoneNumber = stringAdd(phoneNumber, 12, ' (');\r\n phoneNumber = stringAdd(phoneNumber, phoneNumber.length + 1, ')');\r\n e.target.value = phoneNumber;\r\n\r\n setCaretPosition(e.target, phoneNumber.length - 1);\r\n\r\n validPhone = true;\r\n }\r\n // const validatePhone = phone => {\r\n // return phone.match(/^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/);\r\n // };\r\n if (!validPhone) {\r\n editElement.classList.add('invalid');\r\n } else {\r\n editElement.classList.remove('invalid');\r\n }\r\n }\r\n });\r\n\r\n input.addEventListener('focusout', async e => {\r\n // check for invalid calss\r\n if (e.target.parentElement.classList.contains('invalid')) return;\r\n\r\n let saveValue = e.target.value;\r\n // show spinner\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(saveIcon);\r\n if (name === 'primaryPhone' || name === 'secondaryPhone' || name === 'cellPhone') {\r\n const splitNumber = e.target.value.split(' ');\r\n const phoneNumber = splitNumber[0].replace(/[^\\w\\s]/gi, '');\r\n\r\n let phoneExt;\r\n if (splitNumber[1] !== undefined) {\r\n phoneExt = splitNumber[1].replace('(', '').replace(')', '');\r\n }\r\n\r\n saveValue = `${phoneNumber}${phoneExt}`;\r\n }\r\n if (name === 'ssn') {\r\n saveValue = e.target.value.replaceAll('-', '');\r\n }\r\n if (name === 'localId') {\r\n saveValue = e.target.value\r\n }\r\n // save value\r\n const success = await rosterAjax.updateConsumerDemographics({\r\n field: name,\r\n newValue: saveValue,\r\n consumerId,\r\n applicationName: $.session.applicationName,\r\n });\r\n // show save icon\r\n if (success) { \r\n saveIcon.innerHTML = icons['checkmark'];\r\n saveIcon.classList.add('success');\r\n viewElement.innerHTML = formatViewInnerHTML(name, e.target.value);\r\n\r\n // below code Implement of Phone or email Icon does not immediately show when adding a phone or email #\r\n dataLoad.cellphone = name == 'cellPhone' ? saveValue : dataLoad.cellphone; \r\n dataLoad.secondaryphone = name == 'secondaryPhone' ? saveValue : dataLoad.secondaryphone;\r\n dataLoad.primaryphone = name == 'primaryPhone' ? saveValue : dataLoad.primaryphone;\r\n dataLoad.email = name == 'email' ? saveValue : dataLoad.email; \r\n populateDemographicsSection(sectionLoad, dataLoad, consumerIDLoad); \r\n } else {\r\n saveIcon.innerHTML = icons['error'];\r\n saveIcon.classList.add('error');\r\n }\r\n });\r\n\r\n editElement.appendChild(label);\r\n editElement.appendChild(input);\r\n editElement.appendChild(saveIcon);\r\n } else {\r\n inputGroup.classList.add('unEditabled');\r\n }\r\n\r\n inputGroup.appendChild(viewElement);\r\n if (!unEditabled.includes(name)) inputGroup.appendChild(editElement);\r\n\r\n return { inputGroup, viewEle: viewElement };\r\n }\r\n\r\n function buildPathToEmployment() {\r\n const groupWrap = buildInputGroupWrap('Path To Employment');\r\n const { inputGroup } = buildInputGroup('pathToEmployment', demoData.pathToEmployment);\r\n groupWrap.appendChild(inputGroup);\r\n\r\n return groupWrap;\r\n }\r\n function buildAddressInfo() {\r\n const groupWrap = buildInputGroupWrap('Address');\r\n\r\n for (const prop in demoData.address) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.address[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n function buildContactInfo() {\r\n const groupWrap = buildInputGroupWrap('Contact Info');\r\n\r\n for (const prop in demoData.contact) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.contact[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n function buildAdditionalInfo() {\r\n const groupWrap = buildInputGroupWrap('Additional Info');\r\n const viewElements = {};\r\n\r\n for (const prop in demoData.additional) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.additional[prop];\r\n const { inputGroup, viewEle } = buildInputGroup(prop, propValue);\r\n\r\n if (\r\n prop === 'ssn' ||\r\n prop === 'dateOfBirth' ||\r\n prop === 'medicaidNumber' ||\r\n prop === 'medicareNumber' ||\r\n prop === 'residentNumber' ||\r\n prop === 'consumerNumber' ||\r\n prop === 'localID'\r\n ) {\r\n viewEle.classList.add('hidden');\r\n }\r\n\r\n // cache view ele\r\n viewElements[prop] = viewEle;\r\n\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n const showDetailsoBtn = button.build({\r\n text: 'Show Details',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n groupWrap.appendChild(showDetailsoBtn);\r\n\r\n showDetailsoBtn.addEventListener('click', function (e) {\r\n if (e.target.innerText.toLowerCase() === 'show details') {\r\n e.target.innerText = 'Hide Details';\r\n\r\n if ($.session.DemographicsViewDOB) {\r\n viewElements['dateOfBirth'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewMedicaid) {\r\n viewElements['medicaidNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewMedicare) {\r\n viewElements['medicareNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewResident) {\r\n viewElements['residentNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewSSN) {\r\n viewElements['ssn'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewConsumerNumber) {\r\n viewElements['consumerNumber'].classList.remove('hidden');\r\n }\r\n if ($.session.DemographicsViewLocalId) {\r\n viewElements['localID'].classList.remove('hidden');\r\n }\r\n } else {\r\n e.target.innerText = 'Show Details';\r\n\r\n viewElements['dateOfBirth'].classList.add('hidden');\r\n viewElements['medicaidNumber'].classList.add('hidden');\r\n viewElements['medicareNumber'].classList.add('hidden');\r\n viewElements['residentNumber'].classList.add('hidden');\r\n viewElements['ssn'].classList.add('hidden');\r\n viewElements['consumerNumber'].classList.add('hidden');\r\n viewElements['localID'].classList.add('hidden');\r\n }\r\n });\r\n\r\n return groupWrap;\r\n }\r\n function buildOrganizationInfo() {\r\n const groupWrap = buildInputGroupWrap('Organization Info');\r\n\r\n for (const prop in demoData.organization) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.organization[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n function buildDemographicInfo() {\r\n const groupWrap = buildInputGroupWrap('Demographic Info');\r\n\r\n for (const prop in demoData.demographic) {\r\n // GK Only Check\r\n if ($.session.applicationName === 'Advisor') {\r\n if (gkOnly.includes(prop)) continue;\r\n }\r\n const propValue = demoData.demographic[prop];\r\n const { inputGroup } = buildInputGroup(prop, propValue);\r\n\r\n // append\r\n groupWrap.appendChild(inputGroup);\r\n }\r\n\r\n return groupWrap;\r\n }\r\n\r\n function populateDemographicsSection(section, data, consumerID) { \r\n sectionLoad = section; \r\n dataLoad = data;\r\n consumerIDLoad = consumerID;\r\n\r\n consumerId = consumerID;\r\n demoData = formatDataForDisplay(data);\r\n isGK = $.session.applicationName === 'Gatekeeper';\r\n\r\n sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n const pathToEmployment = buildPathToEmployment();\r\n const addressInfo = buildAddressInfo();\r\n const contactInfo = buildContactInfo();\r\n const additionalInfo = buildAdditionalInfo();\r\n const organizationInfo = buildOrganizationInfo();\r\n const demographicInfo = buildDemographicInfo();\r\n\r\n sectionInner.appendChild(pathToEmployment);\r\n sectionInner.appendChild(addressInfo);\r\n sectionInner.appendChild(contactInfo);\r\n sectionInner.appendChild(additionalInfo);\r\n sectionInner.appendChild(organizationInfo);\r\n sectionInner.appendChild(demographicInfo);\r\n\r\n document.querySelector(\".demoPhones\").addEventListener(\"click\", function(event) {\r\n event.stopPropagation(); // Stop event propagation to the outer div\r\n });\r\n\r\n section.addEventListener('click', e => {\r\n if (\r\n !e.target.classList.contains('inputGroup') &&\r\n e.target.nodeName !== 'INPUT' &&\r\n e.target.nodeName !== 'LABLE'\r\n ) {\r\n clearCurrentEdit();\r\n }\r\n });\r\n }\r\n\r\n return {\r\n populate: populateDemographicsSection,\r\n };\r\n})();\r\n","var intellivue = (function(){\r\n var redirectPopup;\r\n\r\n function getLoginCredentials(consumerId) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n userId: $.session.UserId,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getIntellivueAppId/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n data = response.getIntellivueAppIdResult;\r\n POPUP.hide(redirectPopup);\r\n window.open(data, '_blank');\r\n },\r\n });\r\n }\r\n\r\n //gets the app list to display. Pass it the token and $.session.UserId \r\n function getApplicationListHostedWithUser(callback) {\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId \r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getApplicationListHostedWithUser/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getApplicationListHostedWithUserResult;\r\n data = UTIL.parseXml(data);\r\n var test = [];\r\n var map = new Map();\r\n var applicationobjectArray = [].slice.call(data.getElementsByTagName('ApplicationEntry')); \r\n \r\n applicationobjectArray.forEach(Applications => {\r\n var appName = Applications.getAttribute('Name');\r\n var refId = Applications.getAttribute('RefID');\r\n test.push(appName);\r\n map.set(refId, appName);\r\n });\r\n callback(map);\r\n },\r\n });\r\n }\r\n\r\n function getViewURL(consumerId, appName, callback) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n userId: $.session.UserId,\r\n appName: appName,\r\n applicationName: $.session.applicationName\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getIntellivueViewURL/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // data = response.getIntellivueViewURLResult;\r\n // POPUP.hide(redirectPopup);\r\n // window.open(response.getIntellivueViewURLResult, '_blank');\r\n callback(response.getIntellivueViewURLResult) \r\n },\r\n });\r\n }\r\n \r\n function showIntellivueRedirectWarning() {\r\n redirectPopup = POPUP.build({\r\n header: 'You are being redirected outside Anywhere to Intellivue. If you are using a popup blocker please make sure it is disabled.'\r\n });\r\n \r\n POPUP.show(redirectPopup);\r\n }\r\n\r\n return {\r\n getLoginCredentials,\r\n showIntellivueRedirectWarning,\r\n getApplicationListHostedWithUser,\r\n getViewURL\r\n }\r\n})();","var locationNotes = (function () {\r\n //-DOM------------------\r\n //*all\r\n var allNotesPage;\r\n var allNotesList;\r\n //*single\r\n var singleNotePage;\r\n var singleNotesList;\r\n //-DATA-----------------\r\n var allNotesData;\r\n var singleNoteData;\r\n //-VALUES---------------\r\n var selectedLocation;\r\n var selectedLocationId;\r\n\r\n // UTIL\r\n //---------------------------------------------\r\n function formatTime(datecreated) {\r\n // datecreated = \"11/6/2019 8:49:11 AM\"\r\n var datecreatedArray = datecreated.split(' ');\r\n var time = datecreatedArray[1].split(':');\r\n time = `${time[0]}:${time[1]} ${datecreatedArray[2]}`;\r\n return time;\r\n }\r\n function sortDataByDate(data) {\r\n data.sort((a, b) => {\r\n if (a.datecreated && b.datecreated) {\r\n var dateArrayA = a.datecreated.split(' ');\r\n var dateArrayB = b.datecreated.split(' ');\r\n } else {\r\n var dateArrayA = a.Date_Entered.split(' ');\r\n var dateArrayB = b.Date_Entered.split(' ');\r\n }\r\n\r\n var dateA = dateArrayA[0];\r\n var dateB = dateArrayB[0];\r\n\r\n dateA = new Date(a.datecreated);\r\n dateB = new Date(b.datecreated);\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n } else if (dateA < dateB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n return data;\r\n }\r\n function buildNoteImage() {\r\n return ``;\r\n }\r\n function buildNoteAuthorName(name) {\r\n return `

    ${name}

    `;\r\n }\r\n function buildNoteDateTime(date, time) {\r\n return `

    ${date}

    ${time}

    `;\r\n }\r\n function buildNoteTitle(title) {\r\n return `

    ${title}

    `;\r\n }\r\n function buildNoteText(text) {\r\n return `

    ${text}

    `;\r\n }\r\n function buildNoteDetails(image, name, dateTime) {\r\n var details = document.createElement('div');\r\n details.classList.add('locationNote__details');\r\n details.innerHTML = `${image}${name}${dateTime}`;\r\n return details;\r\n }\r\n function buildNoteMessageg(title, notePreview) {\r\n var message = document.createElement('div');\r\n message.classList.add('locationNote__message');\r\n message.innerHTML = `\r\n ${title}${notePreview}\r\n `;\r\n return message;\r\n }\r\n function buildNote(details, message) {\r\n var note = document.createElement('div');\r\n note.classList.add('locationNote');\r\n note.appendChild(details);\r\n note.appendChild(message);\r\n return note;\r\n }\r\n function buildTitleInput() {\r\n return input.build({\r\n label: 'Title',\r\n style: 'secondary',\r\n type: 'text',\r\n attributes: [{ key: 'maxlength', value: '250' }],\r\n });\r\n }\r\n function buildTextInput() {\r\n return input.build({\r\n label: 'Message',\r\n style: 'secondary',\r\n type: 'textarea',\r\n attributes: [{ key: 'maxlength', value: '10000' }],\r\n });\r\n }\r\n function buildSendBtn() {\r\n return button.build({\r\n text: 'Send',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n }\r\n\r\n // Single Note Page\r\n //---------------------------------------------\r\n function getSingleNoteData(noteId, callback) {\r\n locationNotesAjax.selectLocationNote(noteId, function (results) {\r\n singleNoteData = sortDataByDate(results);\r\n callback();\r\n });\r\n }\r\n function handleReplyToNoteBtnClick(noteId) {\r\n // build\r\n var notePopup = POPUP.build({});\r\n var noteTextInput = buildTextInput();\r\n var sendNoteBtn = buildSendBtn();\r\n notePopup.appendChild(noteTextInput);\r\n notePopup.appendChild(sendNoteBtn);\r\n // show\r\n POPUP.show(notePopup);\r\n // events\r\n var noteText;\r\n noteTextInput.addEventListener('change', event => {\r\n noteText = event.target.value;\r\n });\r\n sendNoteBtn.addEventListener('click', event => {\r\n locationNotesAjax.updateLocationNote(\r\n {\r\n token: $.session.Token,\r\n noteId: noteId,\r\n locationId: selectedLocationId,\r\n note: UTIL.removeUnsavableNoteText(noteText),\r\n },\r\n results => {\r\n POPUP.hide(notePopup);\r\n loadSingleNotePage(noteId);\r\n },\r\n );\r\n });\r\n }\r\n function populateSingleNotePage(noteId) {\r\n singleNoteData.forEach(note => {\r\n // data\r\n var noteDate = note.Date_Entered.split(' ')[0];\r\n var noteTime = formatTime(note.Date_Entered);\r\n var noteAuthor = `${note.firstname} ${note.lastname}`;\r\n var noteTitle = note.notetitle;\r\n var noteText = note.note;\r\n var empId = note.emp_id;\r\n // dom\r\n var image = buildNoteImage(empId);\r\n var name = buildNoteAuthorName(noteAuthor);\r\n var dateTime = buildNoteDateTime(noteDate, noteTime);\r\n var title = buildNoteTitle(noteTitle);\r\n var notePreview = buildNoteText(noteText);\r\n // details - img, name, date, time\r\n var details = buildNoteDetails(image, name, dateTime);\r\n // message - title & text\r\n var message = buildNoteMessageg(title, notePreview);\r\n\r\n var note = buildNote(details, message);\r\n\r\n singleNotesList.appendChild(note);\r\n });\r\n\r\n var topNav = document.createElement('div');\r\n topNav.classList.add('locationNotesTopNav');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var backToNotesMain = button.build({\r\n text: 'Back To Notes',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: 'backToRosterBtn',\r\n callback: function () {\r\n loadAllNotesPage();\r\n },\r\n });\r\n var newNoteBtn = button.build({\r\n text: 'New Note',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'newNoteBtn',\r\n callback: function () {\r\n handleReplyToNoteBtnClick(noteId);\r\n },\r\n });\r\n\r\n var locationLabel = document.createElement('div');\r\n locationLabel.classList.add('locationLabel');\r\n locationLabel.innerHTML = `

    ${selectedLocation.locationName}

    `;\r\n\r\n btnWrap.appendChild(backToNotesMain);\r\n btnWrap.appendChild(newNoteBtn);\r\n\r\n topNav.appendChild(btnWrap);\r\n topNav.appendChild(locationLabel);\r\n\r\n singleNotePage.appendChild(topNav);\r\n singleNotePage.appendChild(singleNotesList);\r\n }\r\n function buildSingleNotePage() {\r\n singleNotePage = document.createElement('div');\r\n singleNotePage.classList.add('locationSingleNotePage');\r\n singleNotePage.innerHTML = '';\r\n\r\n singleNotesList = document.createElement('div');\r\n singleNotesList.classList.add('locationNotesList');\r\n\r\n DOM.ACTIONCENTER.appendChild(singleNotePage);\r\n }\r\n function loadSingleNotePage(noteId) {\r\n getSingleNoteData(noteId, function () {\r\n DOM.clearActionCenter();\r\n buildSingleNotePage();\r\n populateSingleNotePage(noteId);\r\n });\r\n }\r\n\r\n // Main Page\r\n //---------------------------------------------\r\n function getLocationNotesData(callback) {\r\n locationNotesAjax.getLocationProgressNotes(selectedLocationId, function (results) {\r\n allNotesData = sortDataByDate(results);\r\n callback();\r\n });\r\n\r\n // locationNotesAjax.doesLocationHaveUnreadNotes(selectedLocationId, function(results) {\r\n // // hasNote: \"0\"\r\n // });\r\n }\r\n function handleNewNoteBtnClick() {\r\n // build\r\n var notePopup = POPUP.build({});\r\n var noteTitleInput = buildTitleInput();\r\n var noteTextInput = buildTextInput();\r\n var sendNoteBtn = buildSendBtn();\r\n notePopup.appendChild(noteTitleInput);\r\n notePopup.appendChild(noteTextInput);\r\n notePopup.appendChild(sendNoteBtn);\r\n // show\r\n POPUP.show(notePopup);\r\n // events\r\n var noteTitle;\r\n var noteText;\r\n noteTitleInput.addEventListener('change', event => {\r\n noteTitle = event.target.value;\r\n });\r\n noteTextInput.addEventListener('change', event => {\r\n noteText = event.target.value;\r\n });\r\n sendNoteBtn.addEventListener('click', event => {\r\n locationNotesAjax.insertLocationNote(\r\n {\r\n token: $.session.Token,\r\n noteTitle: UTIL.removeUnsavableNoteText(noteTitle),\r\n note: UTIL.removeUnsavableNoteText(noteText),\r\n locationId: selectedLocationId,\r\n },\r\n results => {\r\n POPUP.hide(notePopup);\r\n loadAllNotesPage();\r\n },\r\n );\r\n });\r\n }\r\n function populateAllNotesPage() {\r\n allNotesData.forEach(note => {\r\n // data\r\n var noteId = note.noteID;\r\n var noteRead = note.is_read === '1' ? true : false;\r\n var noteDate = note.datecreated.split(' ')[0];\r\n var noteTime = formatTime(note.datecreated);\r\n var noteAuthor = note.MainAuthor;\r\n var noteTitle = note.title;\r\n var noteText = note.note;\r\n var empId = note.empId;\r\n // dom\r\n var image = buildNoteImage(empId);\r\n var name = buildNoteAuthorName(noteAuthor);\r\n var dateTime = buildNoteDateTime(noteDate, noteTime);\r\n var title = buildNoteTitle(noteTitle);\r\n var notePreview = buildNoteText(noteText);\r\n // details - img, name, date, time\r\n var details = buildNoteDetails(image, name, dateTime);\r\n // message - title & text\r\n var message = buildNoteMessageg(title, notePreview);\r\n\r\n var note = buildNote(details, message);\r\n if (!noteRead) {\r\n note.classList.add('unreadNote');\r\n } else {\r\n note.classList.remove('unreadNote');\r\n }\r\n\r\n note.addEventListener('click', function () {\r\n note.classList.remove('unreadNote');\r\n locationNotesAjax.updateLocationNoteDateRead(noteId, function (results) {\r\n loadSingleNotePage(noteId);\r\n });\r\n });\r\n\r\n allNotesList.appendChild(note);\r\n });\r\n\r\n var topNav = document.createElement('div');\r\n topNav.classList.add('locationNotesTopNav');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var backToRoster = button.build({\r\n text: 'Back To Roster',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: 'backToRosterBtn',\r\n callback: function () {\r\n roster2.loadRosterInfo();\r\n },\r\n });\r\n var newNoteBtn = button.build({\r\n text: 'New Note',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'newNoteBtn',\r\n callback: handleNewNoteBtnClick,\r\n });\r\n\r\n var locationLabel = document.createElement('div');\r\n locationLabel.classList.add('locationLabel');\r\n locationLabel.innerHTML = `

    ${selectedLocation.locationName}

    `;\r\n\r\n btnWrap.appendChild(backToRoster);\r\n btnWrap.appendChild(newNoteBtn);\r\n\r\n topNav.appendChild(btnWrap);\r\n topNav.appendChild(locationLabel);\r\n\r\n allNotesPage.appendChild(topNav);\r\n allNotesPage.appendChild(allNotesList);\r\n }\r\n function buildAllNotesPage() {\r\n allNotesPage = document.createElement('div');\r\n allNotesPage.classList.add('locationAllNotesPage');\r\n allNotesPage.innerHTML = '';\r\n\r\n allNotesList = document.createElement('div');\r\n allNotesList.classList.add('locationNotesList');\r\n\r\n DOM.ACTIONCENTER.appendChild(allNotesPage);\r\n }\r\n function loadAllNotesPage() {\r\n selectedLocation = roster2.getSelectedLocationObj();\r\n selectedLocationId = selectedLocation.locationId;\r\n\r\n getLocationNotesData(function () {\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('roster-location-notes');\r\n buildAllNotesPage();\r\n populateAllNotesPage();\r\n });\r\n }\r\n\r\n return {\r\n loadAllNotesPage,\r\n };\r\n})();\r\n","var locationNotesAjax = (function() {\r\n\tfunction deleteLocationNote(noteId) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteLocationNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction doesLocationHaveUnreadNotes(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tlocationId: locationId,\r\n\t\t\tdaysBackDate: daysBackDate,\r\n\t\t};\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/checkIfLocationHasUnreadNotes/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.checkIfLocationHasUnreadNotesResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getLocationsWithUnreadNotes(callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\treturn $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsWithUnreadNotes/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n });\r\n // $.ajax({\r\n\t\t// \ttype: 'POST',\r\n\t\t// \turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsWithUnreadNotes/',\r\n\t\t// \tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t// \tcontentType: 'application/json; charset=utf-8',\r\n\t\t// \tdataType: 'json',\r\n\t\t// \tsuccess: function(response, status, xhr) {\r\n\t\t// \t\tvar results = JSON.parse(response.getLocationsWithUnreadNotesResult);\r\n\t\t// \t\tcallback(results);\r\n\t\t// \t},\r\n\t\t// });\r\n\t}\r\n\tfunction getLocationsWithUnreadNotesAndPermission(callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol +\r\n\t\t\t\t'://' +\r\n\t\t\t\t$.webServer.address +\r\n\t\t\t\t':' +\r\n\t\t\t\t$.webServer.port +\r\n\t\t\t\t'/' +\r\n\t\t\t\t$.webServer.serviceName +\r\n\t\t\t\t'/getLocationsWithUnreadNotesAndPermission/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.getLocationsWithUnreadNotesAndPermissionResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getLocationProgressNotes(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tlocationId: locationId,\r\n\t\t\tdaysBackDate: daysBackDate,\r\n\t\t};\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: '/' + $.webServer.serviceName + '/selectNotesByLocation/',\r\n\t\t\tdata: JSON.stringify(datum),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.selectNotesByLocationResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getLocationProgressNotesAndPermission(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tlocationId: locationId,\r\n\t\t\tdaysBackDate: daysBackDate,\r\n\t\t};\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: '/' + $.webServer.serviceName + '/selectNotesByLocationAndPermission/',\r\n\t\t\tdata: JSON.stringify(datum),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.selectNotesByLocationAndPermissionResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction insertLocationNote(insertData, callback) {\r\n\t\t// used to add a new note\r\n\t\t//insertData = token, noteTitle, note, locationId\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertLocationNote/',\r\n\t\t\tdata: JSON.stringify(insertData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction selectLocationNote(noteId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectLocationNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.parse(response.selectLocationNoteResult);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateLocationNoteDateRead(noteId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateLocationNoteDateRead/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateLocationNote(updateData, callback) {\r\n\t\t// used to add a new note within a note\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateLocationNote/',\r\n\t\t\tdata: JSON.stringify(updateData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t});\r\n }\r\n\r\n\treturn {\r\n\t\tdoesLocationHaveUnreadNotes,\r\n getLocationsWithUnreadNotes,\r\n\t\tgetLocationProgressNotes,\r\n\t\tinsertLocationNote,\r\n\t\tselectLocationNote,\r\n\t\tupdateLocationNoteDateRead,\r\n\t\tupdateLocationNote,\r\n\t\tgetLocationProgressNotesAndPermission,\r\n\t\tgetLocationsWithUnreadNotesAndPermission,\r\n\t};\r\n})();\r\n","var progressNotes = (function() {\r\n\tvar section;\r\n\tvar VIEW_ALL_NOTES_SECTION;\r\n\tvar VIEW_SINGLE_NOTE_SECTION;\r\n\tvar ADD_NOTE_SECTION;\r\n\tvar ADD_MESSAGE_SECTION;\r\n\tvar ADD_NOTE_BTN;\r\n\tvar ADD_MESSAGE_BTN;\r\n\t//*add note\r\n\tvar title;\r\n\tvar message;\r\n\t//*add message\r\n\tvar messageText;\r\n\t// Data & Values\r\n\tvar selectedNoteId;\r\n\tvar selectedLocationId;\r\n\tvar selectedConsumerId;\r\n\tvar newNoteTitle;\r\n\tvar newNoteText;\r\n\tvar newMessageText;\r\n\tvar consumerNotes;\r\n\tvar singleNoteData;\r\n\tvar hasUnreadNote;\r\n\r\n\t// Workers\r\n\tfunction addNewNote() {\r\n\t\tvar insertData = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tnoteTitle: UTIL.removeUnsavableNoteText(newNoteTitle),\r\n\t\t\tnote: UTIL.removeUnsavableNoteText(newNoteText),\r\n\t\t\tlocationId: selectedLocationId,\r\n\t\t\tconsumerId: selectedConsumerId,\r\n\t\t\thideNote: \"N\",\r\n\t\t};\r\n\r\n\t\tprogressNotesAjax.insertConsumerNote(insertData, function(results) {\r\n\t\t\tgetConsumerNotes(populateViewNotesSection);\r\n\t\t});\r\n\t}\r\n\tfunction addNewMessage() {\r\n\t\tvar insertData = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tnote: UTIL.removeUnsavableNoteText(newMessageText),\r\n\t\t\tnoteId: selectedNoteId,\r\n\t\t\tconsumerId: selectedConsumerId,\r\n\t\t};\r\n\r\n\t\tprogressNotesAjax.updateConsumerNote(insertData, function(results) {\r\n\t\t\tgetSingleNoteData(selectedNoteId, populateViewSingleNoteSection);\r\n\t\t});\r\n\t}\r\n\tfunction getConsumerNotes(callback) {\r\n\t\tfunction cacheNotes(results) {\r\n\t\t\tconsumerNotes = results;\r\n\t\t\tcallback(results);\r\n\t\t}\r\n\r\n\t\tprogressNotesAjax.selectNotesByConsumerAndLocation(selectedConsumerId, selectedLocationId, cacheNotes);\r\n\t}\r\n\tfunction getSingleNoteData(noteId, callback) {\r\n\t\tfunction cacheSingleNoteData(results) {\r\n\t\t\tsingleNoteData = results;\r\n\t\t\tcallback(results);\r\n\t\t}\r\n\r\n\t\tprogressNotesAjax.selectConsumerNote(noteId, cacheSingleNoteData);\r\n\t}\r\n\t function markNoteAsRead(noteid, consumerid, noteElement) {\r\n\r\n\t\tprogressNotesAjax.updateConsumerNoteDateRead(noteid); \r\n\r\n\t\tvar consumersWithUnreadNotes = roster2.getConsumersWithUnreadNotes();\r\n\t\thasUnreadNote = consumersWithUnreadNotes[consumerid];\r\n\t\tvar noteMenuItem = document.getElementById(noteid)\r\n\t\tif (!hasUnreadNote) {\r\n\t\t\tvar menuItem = document.querySelector('.menuList .progressNote');\r\n\t\t\tmenuItem.classList.remove('needsAttention');\t\r\n\t\t}\r\n\r\n\t\tif (noteMenuItem) {\r\n\t\t\tnoteMenuItem.classList.remove('unreadNote');\r\n\t\t}\r\n\t\t// noteElement.classList.remove('unreadNote');\r\n\t\t \r\n\t}\r\n\tfunction shortenNotePreview(noteString) {\r\n\t\tvar note = noteString.split(' ');\r\n\t\tvar shortenedNote = note\r\n\t\t\t.filter((note, index) => {\r\n\t\t\t\treturn index <= 40;\r\n\t\t\t})\r\n\t\t\t.join(' ');\r\n\r\n\t\tif (note.length >= 39) {\r\n\t\t\tshortenedNote += `...`;\r\n\t\t}\r\n\r\n\t\treturn shortenedNote;\r\n\t}\r\n\tfunction createConsumersWithUnreadNotesObj(results) {\r\n\t\tvar newObj = {};\r\n\r\n if (!results) return newObj;\r\n \r\n\t\tresults.forEach(r => {\r\n\t\t\tif ($.session.HideProgressNotes || (!$.session.HideProgressNotes && (r.hideNote === \"\" || r.hideNote === \"N\"))) {\r\n\t\t\t\tif (!newObj[r.c_id]) newObj[r.c_id] = r.c_id;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn newObj;\r\n\t}\r\n\tfunction clearAllGlobalVariables() {\r\n\t\tselectedNoteId = undefined;\r\n\t\tselectedLocationId = undefined;\r\n\t\tselectedConsumerId = undefined;\r\n\t\tnewNoteTitle = undefined;\r\n\t\tnewNoteText = undefined;\r\n\t\tnewMessageText = undefined;\r\n\r\n\t\tif (title) {\r\n\t\t\tvar titleInput = title.querySelector('input');\r\n\t\t\ttitleInput.value = '';\r\n\t\t}\r\n\r\n\t\tif (message) {\r\n\t\t\tvar messageInput = message.querySelector('textarea');\r\n\t\t\tmessageInput.value = '';\r\n\t\t}\r\n\r\n\t\tif (messageText) {\r\n\t\t\tvar messageInput = messageText.querySelector('textarea');\r\n\t\t\tmessageInput.value = '';\r\n\t\t}\r\n }\r\n\r\n function clearAllGlobalVariablesOnBack() {\r\n //selectedNoteId = undefined;\r\n //selectedLocationId = undefined;\r\n //selectedConsumerId = undefined;\r\n newNoteTitle = undefined;\r\n newNoteText = undefined;\r\n newMessageText = undefined;\r\n\r\n if (title) {\r\n var titleInput = title.querySelector('input');\r\n titleInput.value = '';\r\n }\r\n\r\n if (message) {\r\n var messageInput = message.querySelector('textarea');\r\n messageInput.value = '';\r\n }\r\n\r\n if (messageText) {\r\n var messageInput = messageText.querySelector('textarea');\r\n messageInput.value = '';\r\n }\t\r\n\r\n\t\t// grabs all subsections of progress notes\r\n\t\tconst viewAllNotesSection = document.querySelector('.viewAllNotesSection');\r\n\t\tconst addNoteSection = document.querySelector('.addNoteSection');\r\n\t\tconst viewSingleNoteSection = document.querySelector('.viewSingleNoteSection');\r\n\t\tconst addMessageSection = document.querySelector('.addMessageSection');\r\n\r\n\t\tconst sections = [viewAllNotesSection, addNoteSection, viewSingleNoteSection, addMessageSection];\r\n \r\n\t\t// Iterate over all sections and make them hidden so the next and back button works correctly\r\n\t\tsections.forEach(section => {\r\n\t\t\tif (section && section.classList.contains('visible')) {\r\n\t\t\t\tsection.classList.remove('visible');\r\n\t\t\t\tsection.classList.add('hidden');\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\t// populate\r\n\tfunction populateViewSingleNoteSection(data, singleNoteList) {\r\n\t\tif (!singleNoteList) singleNoteList = section.querySelector('.singleNoteList');\r\n\t\tsingleNoteList.innerHTML = '';\r\n\r\n\t\tdata.forEach(d => {\r\n\t\t\tvar employeeId = d.emp_id;\r\n\t\t\t\r\n\t\t\tvar dateTimeArray = d.Date_Entered.split(' ');\r\n\t\t\tvar timeArray = dateTimeArray[1].split(':');\r\n\r\n\t\t\r\n\r\n\t\t\t// var image = ``;\r\n\t\t\tvar name = `

    ${d.firstname} ${d.lastname}

    `;\r\n\t\t\tvar dateTime = `\r\n
    \r\n

    ${dateTimeArray[0]}

    \r\n

    ${timeArray[0]}:${timeArray[1]} ${dateTimeArray[2]}

    \r\n
    \r\n `;\r\n\t\t\tvar title = `

    ${d.notetitle}

    `;\r\n\t\t\tvar notePreview = `

    ${d.note}

    `;\r\n\r\n\t\t\t// details - img, name, date, time\r\n\t\t\tvar details = document.createElement('div');\r\n\t\t\tdetails.classList.add('progressNote__details');\r\n\t\t\t// details.innerHTML = `${image}${name}${dateTime}`;\r\n\t\t\tdetails.innerHTML = `${name}${dateTime}`;\r\n\r\n\t\t\t// message\r\n\t\t\tvar message = document.createElement('div');\r\n\t\t\tmessage.classList.add('progressNote__message');\r\n\t\t\tmessage.innerHTML = `\r\n ${title}${notePreview}\r\n `;\r\n\r\n\t\t\tvar note = document.createElement('div');\r\n\t\t\tnote.classList.add('progressNote');\r\n\r\n\t\t\tnote.appendChild(details);\r\n\t\t\tnote.appendChild(message);\r\n\r\n\t\t\tsingleNoteList.appendChild(note);\r\n\t\t});\r\n\t}\r\n\t function populateViewNotesSection(data, allNotesList) {\r\n\t\tif (!allNotesList) allNotesList = section.querySelector('.allNotesList');\r\n\t\tallNotesList.innerHTML = '';\r\n\r\n\t\tdata.forEach(d => {\r\n\t\t if ($.session.HideProgressNotes || (!$.session.HideProgressNotes && (d.hidenote === \"\" || d.hidenote === \"N\"))) {\r\n\t\t\tvar hasBeenRead = d.is_read === '1' ? true : false;\r\n\t\t\tvar noteId = d.noteID;\r\n\t\t\tvar consumerid = d.consumer;\r\n\t\t\tvar dateTimeArray = d.datecreated.split(' ');\r\n\t\t\tvar timeArray = dateTimeArray[1].split(':');\r\n\t\t\t// var image = ``;\r\n\t\t\tvar name = `

    ${d.MainAuthor}

    `;\r\n\t\t\tvar dateTime = `\r\n
    \r\n

    ${dateTimeArray[0]}

    \r\n

    ${timeArray[0]}:${timeArray[1]} ${dateTimeArray[2]}

    \r\n
    \r\n\t `;\r\n\t \r\n\t\t\tvar title = `

    ${d.title}

    `;\r\n\t\t\tvar notePreview = `

    ${shortenNotePreview(d.note)}

    `;\r\n\r\n\t\t\tvar hideNoteCheckbox;\r\n\t\t\thideNoteCheckbox = input.buildCheckbox({\r\n\t\t\t\ttext: 'Hide Note',\r\n\t\t\t\tstyle: \"secondary\",\r\n\t\t\t\tisChecked: (d.hidenote === \"\" || d.hidenote === \"N\") ? false : true,\r\n\t\t\t});\r\n\r\n\t\t\t// hide note checkbox for users with Hide Progress Note Permission\r\n\t\t\tvar hidenotedetail = document.createElement('div');\r\n\t\t\t hidenotedetail.classList.add('progressNote__hidenotecheckbox');\r\n\t\t\r\n\t\t\t// details - img, name, date, time\r\n\t\t\tvar details = document.createElement('div');\r\n\t\t\tdetails.classList.add('progressNote__details');\r\n\t\t\tdetails.classList.add('accessReplies');\r\n\t\t\t// details.innerHTML = `${image}${name}${dateTime}`;\r\n\t\t\tdetails.innerHTML = `${name}${dateTime}`;\r\n\r\n\t\t\t// message\r\n\t\t\tvar message = document.createElement('div');\r\n\t\t\tmessage.classList.add('progressNote__message');\r\n\t\t\tmessage.classList.add('accessReplies');\r\n\t\t\t\t\t\t\r\n\t\t\tmessage.innerHTML = `\r\n ${title}${notePreview}\r\n `;\r\n\r\n\t\t\tvar note = document.createElement('div');\r\n\t\t\tnote.setAttribute('data-info-task', 'viewSingleNote');\r\n\t\t\tnote.classList.add('progressNote');\r\n\t\t\tnote.setAttribute('id', noteId)\r\n\r\n\t\t\tif (!hasBeenRead) {\r\n\t\t\t\tnote.classList.add('unreadNote');\r\n\t\t\t}\r\n\r\n\t\t\t// appending Hide Note CheckBox -- display if User has Hide Progress Note Permission\r\n\t\t\tif ($.session.HideProgressNotes) {\r\n\t\t\t\thidenotedetail.appendChild(hideNoteCheckbox);\r\n\t\t\t\tnote.appendChild(hidenotedetail)\r\n\t\t\t}\r\n\r\n\t\t\t// appending details and message sections\r\n\t\t\tnote.appendChild(details);\r\n\t\t\tnote.appendChild(message);\r\n\r\n\t\t\tDOM.ACTIONCENTER.appendChild(note);\r\n\r\n\t\t\tvar clickableNoteAreas = document.querySelectorAll(\".accessReplies\");\r\n\r\n\t\r\n\t\t\tclickableNoteAreas.forEach(function(elem) {\r\n\t\t\t\telem.addEventListener('click', () => {\r\n\t\t\t\t\t selectedNoteId = noteId;\r\n\t\t\t\t\tmarkNoteAsRead(noteId, consumerid, event.target);\r\n\t\t\t\t\tgetSingleNoteData(noteId, function(results) {\r\n\t\t\t\t\t\tpopulateViewSingleNoteSection(results);\r\n\t\t\t\t\t\tconsumerInfo.showCardSubSection(VIEW_SINGLE_NOTE_SECTION);\r\n\t\t\t\t\t roster2.refreshRosterList();\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\thidenotedetail.addEventListener('change', e => {\r\n\t\t\t\tvar tmpHideNote = e.target.checked ? 'Y' : 'N';\r\n\t\t\t\tvar insertData = {\r\n\t\t\t\t\ttoken: $.session.Token,\r\n\t\t\t\t\thideNote: tmpHideNote,\r\n\t\t\t\t\tnoteId: noteId,\r\n\t\t\t\t\tconsumerId: selectedConsumerId,\r\n\t\t\t\t};\r\n\t\t\t\tprogressNotesAjax.updateHideNote(insertData);\r\n\r\n\t\t\t });\r\n\r\n\t\t\tallNotesList.appendChild(note);\r\n\t\t}\r\n\t\t}); // for loop\r\n\r\n\t}\r\n\r\n\t// build\r\n\tfunction buildAddMessageSection() {\r\n\t\tvar addMessageSection = document.createElement('div');\r\n\t\taddMessageSection.classList.add('addMessageSection');\r\n\r\n\t\tmessageText = input.build({\r\n\t\t\ttype: 'textarea',\r\n\t\t\tlabel: 'Message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tclassNames: ['newMessageInput', 'autosize'],\r\n\t\t});\r\n\t\tvar sendButton = button.build({\r\n\t\t\ttext: 'Send',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\ticon: 'send',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tvar messageInput = messageText.querySelector('textarea');\r\n\t\t\t\tmessageInput.value = '';\r\n\t\t\t\taddNewMessage();\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_SINGLE_NOTE_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar cancelButton = button.build({\r\n\t\t\ttext: 'Cancel',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'outlined',\r\n\t\t\t//icon: 'close',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_SINGLE_NOTE_SECTION);\r\n\t\t\t\tclearAllGlobalVariablesOnBack();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(sendButton);\r\n\t\tbtnWrap.appendChild(cancelButton);\r\n\r\n\t\taddMessageSection.appendChild(messageText);\r\n\t\taddMessageSection.appendChild(btnWrap);\r\n\r\n\t\tmessageText.addEventListener('input', event => {\r\n\t\t\tnewMessageText = event.target.value;\r\n });\r\n \r\n\t\tADD_MESSAGE_SECTION = addMessageSection;\r\n\t\treturn addMessageSection;\r\n\t}\r\n\tfunction buildAddNoteSection() {\r\n\t\tvar addNoteSection = document.createElement('div');\r\n\t\taddNoteSection.classList.add('addNoteSection');\r\n\r\n\t\ttitle = input.build({\r\n\t\t\ttype: 'text',\r\n\t\t\tlabel: 'Title',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tclassNames: 'newMessageInput',\r\n\t\t});\r\n\t\tmessage = input.build({\r\n\t\t\ttype: 'textarea',\r\n\t\t\tlabel: 'Message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\tclassNames: ['newMessageInput', 'autosize'],\r\n\t\t});\r\n\t\tvar sendButton = button.build({\r\n\t\t\ttext: 'Send',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\ticon: 'send',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tvar titleInput = title.querySelector('input');\r\n\t\t\t\tvar messageInput = message.querySelector('textarea');\r\n\t\t\t\ttitleInput.value = '';\r\n\t\t\t\tmessageInput.value = '';\r\n\t\t\t\taddNewNote();\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_ALL_NOTES_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar cancelButton = button.build({\r\n\t\t\ttext: 'Cancel',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'outlined',\r\n\t\t\t//icon: 'close',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(VIEW_ALL_NOTES_SECTION);\r\n\t\t\t\tclearAllGlobalVariablesOnBack();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\ttitle.addEventListener('input', event => {\r\n\t\t\tnewNoteTitle = event.target.value;\r\n\t\t});\r\n\t\tmessage.addEventListener('input', event => {\r\n\t\t\tnewNoteText = event.target.value;\r\n });\r\n\r\n\t\tvar btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(sendButton);\r\n\t\tbtnWrap.appendChild(cancelButton);\r\n\r\n\t\taddNoteSection.appendChild(title);\r\n\t\taddNoteSection.appendChild(message);\r\n\t\taddNoteSection.appendChild(btnWrap);\r\n\r\n\t\tADD_NOTE_SECTION = addNoteSection;\r\n\t\treturn addNoteSection;\r\n\t}\r\n\tfunction buildViewSingleNoteSection() {\r\n\t\tvar section = document.createElement('div');\r\n\t\tsection.classList.add('viewSingleNoteSection');\r\n\r\n\t\tvar addNoteBtn = button.build({\r\n\t\t\ttext: 'New',\r\n\t\t\ticon: 'message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\tclassNames: 'addNoteBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(ADD_MESSAGE_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar singleNoteList = document.createElement('div');\r\n\t\tsingleNoteList.classList.add('singleNoteList');\r\n\r\n\t\tsection.appendChild(addNoteBtn);\r\n\t\tsection.appendChild(singleNoteList);\r\n\r\n\t\tVIEW_SINGLE_NOTE_SECTION = section;\r\n\t\treturn section;\r\n\t}\r\n\tfunction buildViewAllNotesSection(data) {\r\n\t\tvar section = document.createElement('div');\r\n\t\tsection.classList.add('viewAllNotesSection');\r\n\r\n\t\tvar addNoteBtn = button.build({\r\n\t\t\ttext: 'New',\r\n\t\t\ticon: 'message',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\ttype: 'contained',\r\n\t\t\tclassNames: 'addNoteBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tconsumerInfo.showCardSubSection(ADD_NOTE_SECTION);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tvar notesList = document.createElement('div');\r\n\t\tnotesList.classList.add('allNotesList');\r\n\t\tpopulateViewNotesSection(data, notesList);\r\n\r\n\t\tsection.appendChild(addNoteBtn);\r\n\t\tsection.appendChild(notesList);\r\n\r\n\t\tVIEW_ALL_NOTES_SECTION = section;\r\n\t\treturn section;\r\n\t}\r\n\r\n\tfunction init(targetSection, locationId, consumerId) {\r\n\t\tsection = targetSection;\r\n\t\tselectedLocationId = locationId;\r\n\t\tselectedConsumerId = consumerId;\r\n\t}\r\n\r\n\treturn {\r\n\t\tbuildViewAllNotesSection,\r\n\t\tbuildViewSingleNoteSection,\r\n\t\tbuildAddNoteSection,\r\n\t\tbuildAddMessageSection,\r\n\t\tcreateConsumersWithUnreadNotesObj,\r\n clearAllGlobalVariables,\r\n clearAllGlobalVariablesOnBack,\r\n\t\tgetConsumerNotes,\r\n\t\tinit,\r\n\t};\r\n})();\r\n","var progressNotesAjax = (function() {\r\n\t// deleteConsumerNote is not being used ATM\r\n\tfunction deleteConsumerNote(noteId) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteConsumerNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction getConsumersWithUnreadNotesByEmployeeAndLocation(locationId, callback) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol + '://' +\r\n\t\t\t\t$.webServer.address + ':' +\r\n\t\t\t\t$.webServer.port + '/' +\r\n\t\t\t\t$.webServer.serviceName + '/getConsumersWithUnreadNotesByEmployeeAndLocation/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t\t\r\n\t\t// $.ajax({\r\n\t\t// \ttype: 'POST',\r\n\t\t// \turl:\r\n\t\t// \t\t$.webServer.protocol + '://' +\r\n\t\t// \t\t$.webServer.address + ':' +\r\n\t\t// \t\t$.webServer.port + '/' +\r\n\t\t// \t\t$.webServer.serviceName + '/getConsumersWithUnreadNotesByEmployeeAndLocation/',\r\n\t\t// \tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n\t\t// \tcontentType: 'application/json; charset=utf-8',\r\n\t\t// \tdataType: 'json',\r\n\t\t// \tsuccess: function(response, status, xhr) {\r\n\t\t// \t\tvar results = JSON.parse(response.getConsumersWithUnreadNotesByEmployeeAndLocationResult);\r\n\t\t// \t\tcallback(results);\r\n\t\t// \t},\r\n\t\t// });\r\n\t}\r\n\r\n\tfunction getConsumersWithUnreadNotesByEmployeeAndLocationPermission(locationId, callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol +\r\n\t\t\t\t'://' +\r\n\t\t\t\t$.webServer.address +\r\n\t\t\t\t':' +\r\n\t\t\t\t$.webServer.port +\r\n\t\t\t\t'/' +\r\n\t\t\t\t$.webServer.serviceName +\r\n\t\t\t\t'/getConsumersWithUnreadNotesByEmployeeAndLocationPermission/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.getConsumersWithUnreadNotesByEmployeeAndLocationPermissionResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction insertConsumerNote(insertData, callback) {\r\n\t\t//insertData = token, consumerId, noteTitle, note, locationId\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertConsumerNote/',\r\n\t\t\tdata: JSON.stringify(insertData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n\tfunction selectNotesByConsumerAndLocation(consumerId, locationId, callback) {\r\n\t\t// called when note icon is clicked\r\n\r\n\t\tvar datum = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tconsumerId: consumerId,\r\n\t\t\tlocationId: locationId\r\n\t\t};\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: '/' + $.webServer.serviceName + '/selectNotesByConsumerAndLocation/',\r\n\t\t\tdata: JSON.stringify(datum),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar results = JSON.parse(response.selectNotesByConsumerAndLocationResult);\r\n\t\t\t\tcallback(results);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn false;\r\n\t}\r\n\tfunction selectConsumerNote(noteId, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectConsumerNote/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.parse(response.selectConsumerNoteResult);\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateConsumerNoteDateRead(noteId) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateConsumerNoteDateRead/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\tfunction updateConsumerNote(updateData, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateConsumerNote/',\r\n\t\t\tdata: JSON.stringify(updateData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateHideNote(updateData, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateHideNote/',\r\n\t\t\tdata: JSON.stringify(updateData),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getlocationsWithConsumersWithUnreadNotes(callback) {\r\n\t\tvar daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl:\r\n\t\t\t\t$.webServer.protocol +\r\n\t\t\t\t'://' +\r\n\t\t\t\t$.webServer.address +\r\n\t\t\t\t':' +\r\n\t\t\t\t$.webServer.port +\r\n\t\t\t\t'/' +\r\n\t\t\t\t$.webServer.serviceName +\r\n\t\t\t\t'/getlocationsWithConsumersWithUnreadNotes/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBackDate\":\"' + daysBackDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = response.getlocationsWithConsumersWithUnreadNotesResult;\r\n\t\t\t\tif (callback) callback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {},\r\n\t\t});\r\n\t}\r\n \r\n\treturn {\r\n\t\tgetConsumersWithUnreadNotesByEmployeeAndLocation,\r\n\t\tinsertConsumerNote,\r\n\t\tselectNotesByConsumerAndLocation,\r\n\t\tselectConsumerNote,\r\n\t\tupdateConsumerNoteDateRead,\r\n\t\tupdateConsumerNote,\r\n\t\tupdateHideNote,\r\n\t\tgetlocationsWithConsumersWithUnreadNotes,\r\n\t\tgetConsumersWithUnreadNotesByEmployeeAndLocationPermission,\r\n\t};\r\n})();\r\n","var schedulingApproveRequest = (function () {\r\n var actioncenter;\r\n var daysOffTable;\r\n var callOffTable;\r\n var openShiftTable;\r\n var overlapWrap;\r\n var overlapsExist = false;\r\n var overlapApprovalData;\r\n var overlapIds = [];\r\n var daysOffOverlapConfirmed = false;\r\n // var openShiftRequests;\r\n\r\n //UTIL\r\n //---------------------\r\n\r\n function areConsecutiveDates(date1, date2) {\r\n date1 = date1.split(' ')[0].split('/');\r\n date2 = date2.split(' ')[0].split('/');\r\n\r\n date1[0] = date1[0] - 1;\r\n date2[0] = date2[0] - 1;\r\n\r\n var dateOne = new Date(date1[2], date1[0], date1[1]);\r\n var dateTwo = new Date(date2[2], date2[0], date2[1]);\r\n\r\n dateOne = addDays(dateOne, 1);\r\n\r\n return dateOne.getTime() === dateTwo.getTime();\r\n }\r\n\r\n function addDays(dirtyDate, dirtyAmount) {\r\n const date = cloneDate(dirtyDate);\r\n const amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (argument instanceof Date || (typeof argument === 'object' && argStr === ['object Date'])) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === 'number' || argStr === ['object Number']) {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(',');\r\n return new Date(parseInt(argument[0]), parseInt(argument[1] - 1), parseInt(argument[2]));\r\n }\r\n }\r\n\r\n function toInteger(dirtyNumber) {\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n //REST\r\n //---------------------\r\n\r\n function buildApproveRequestPage() {\r\n //Header\r\n actioncenter = document.getElementById('actioncenter');\r\n let header = document.createElement('div');\r\n header.classList.add('approveRequestHeader');\r\n let headerText = document.createElement('h2');\r\n headerText.innerHTML = 'Request Approvals';\r\n\r\n schedulingAjax.getScheduleMyApprovalDataAjax(\r\n {\r\n token: $.session.Token,\r\n personId: $.session.isPSI ? 0 : $.session.PeopleId,\r\n },\r\n populateApprovalPage,\r\n );\r\n }\r\n\r\n function populateApprovalPage(results) {\r\n actioncenter = document.getElementById('actioncenter');\r\n var selectedShiftCounter = 0;\r\n\r\n //Table with requests - Table will cycle between colors (green(approve), red(deny), white(no action)) when clicked\r\n // There is curently a table for each type of request, these will eventually be tabs\r\n var requestData = {\r\n daysOff: [],\r\n callOff: [],\r\n openShift: [],\r\n };\r\n\r\n results.forEach(res => {\r\n switch (res.requestType) {\r\n case 'DayOff':\r\n requestData.daysOff.push(res);\r\n break;\r\n case 'CallOff':\r\n requestData.callOff.push(res);\r\n break;\r\n case 'RequestShift':\r\n requestData.openShift.push(res);\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n var daysOffTableOpts = {\r\n headline: 'Days Off Requests',\r\n columnHeadings: ['Employee', 'Start Date/Time', 'End Data/Time', 'Reason', 'Approve/Deny'],\r\n tableId: 'daysOffTable',\r\n callback: function () {\r\n cycleApprovalStatus(event.target);\r\n },\r\n };\r\n var openShiftTableOpts = {\r\n headline: 'Open Shift Requests',\r\n columnHeadings: [\r\n 'Employee',\r\n 'Date/Time',\r\n 'Location',\r\n 'Reason', //Reason Needed?\r\n 'Approve/Deny',\r\n ],\r\n tableId: 'openShiftTable',\r\n callback: function () {\r\n cycleApprovalStatus(event.target);\r\n },\r\n };\r\n\r\n var callOffTableOpts = {\r\n headline: 'Call Offs',\r\n columnHeadings: ['Employee', 'Date/Time', 'Location', 'Reason', 'Approve/Deny'],\r\n tableId: 'callOffTable',\r\n callback: function () {\r\n cycleApprovalStatus(event.target);\r\n },\r\n };\r\n\r\n if (requestData.daysOff.length > 0) {\r\n daysOffTable = table.build(daysOffTableOpts);\r\n let data = renderDaysOffSectionBody(requestData.daysOff);\r\n actioncenter.appendChild(daysOffTable);\r\n table.populate('daysOffTable', data);\r\n }\r\n\r\n if (requestData.callOff.length > 0) {\r\n callOffTable = table.build(callOffTableOpts);\r\n let data = dataForCallOffandOpenShifts(requestData.callOff);\r\n actioncenter.appendChild(callOffTable);\r\n table.populate('callOffTable', data);\r\n }\r\n\r\n if (requestData.openShift.length > 0) {\r\n openShiftTable = table.build(openShiftTableOpts);\r\n let data = dataForCallOffandOpenShifts(requestData.openShift);\r\n actioncenter.appendChild(openShiftTable);\r\n table.populate('openShiftTable', data);\r\n }\r\n\r\n //MESSAGE TO DISPLAY WHEN THERE ARE NO REQUESTS TO APPROVE\r\n if (\r\n requestData.daysOff.length === 0 &&\r\n requestData.callOff.length === 0 &&\r\n requestData.openShift.length === 0\r\n ) {\r\n noRequestsMessage();\r\n }\r\n\r\n function cycleApprovalStatus(element) {\r\n if (!element.classList.contains('table') && !element.classList.contains('header')) {\r\n let status = element.dataset.approvalStatus;\r\n if (status === undefined) {\r\n element.setAttribute('data-approval-status', 'approve');\r\n element.lastChild.innerHTML = 'Approve';\r\n selectedShiftCounter++;\r\n } else if (status === 'approve') {\r\n element.setAttribute('data-approval-status', 'deny');\r\n element.lastChild.innerHTML = 'Deny';\r\n } else if (status === 'deny') {\r\n element.removeAttribute('data-approval-status');\r\n element.lastChild.innerHTML = '';\r\n selectedShiftCounter--;\r\n }\r\n selectedShiftCounter > 0 ? ACTION_NAV.show() : ACTION_NAV.hide();\r\n }\r\n }\r\n\r\n function renderDaysOffSectionBody(shifts) {\r\n // make sure shifts are sorted by date and person\r\n shifts.sort((a, b) => {\r\n var idA = a.personId;\r\n var idB = b.personId;\r\n if (idA === idB) {\r\n var dateA = a.day.split(' ')[0].split('/');\r\n var dateB = b.day.split(' ')[0].split('/');\r\n dateA[0] = dateA[0] - 1;\r\n dateB[0] = dateB[0] - 1;\r\n dateA = new Date(dateA[2], dateA[0], dateA[1]);\r\n dateB = new Date(dateB[2], dateB[0], dateB[1]);\r\n return dateA - dateB;\r\n }\r\n return idA > idB ? 1 : -1;\r\n });\r\n\r\n // group shifts with consecutive dates AND consecutive reason IDs\r\n const groupedShifts = shifts.reduce((total, cv) => {\r\n let lastSubArray;\r\n let areDatesConsecutive;\r\n\r\n lastSubArray = total[total.length - 1];\r\n\r\n if (lastSubArray) {\r\n areDatesConsecutive = areConsecutiveDates(\r\n lastSubArray[lastSubArray.length - 1].day,\r\n cv.day,\r\n );\r\n consecutiveReason =\r\n lastSubArray[lastSubArray.length - 1].reasonId === cv.reasonId ? true : false;\r\n } else {\r\n areDatesConsecutive = false;\r\n }\r\n\r\n if (!lastSubArray || !areDatesConsecutive || !consecutiveReason) {\r\n total.push([]);\r\n }\r\n\r\n total[total.length - 1].push(cv);\r\n\r\n return total;\r\n }, []);\r\n //return;\r\n\r\n let tableData = groupedShifts.map(group => {\r\n var startDate = `${group[0].day.split(' ')[0]} ${UTIL.convertFromMilitary(\r\n group[0].fromTime,\r\n )}`;\r\n var endDate = `${group[group.length - 1].day.split(' ')[0]} ${UTIL.convertFromMilitary(\r\n group[group.length - 1].toTime,\r\n )}`;\r\n var shiftIds = [];\r\n group.forEach(shift => shiftIds.push(shift.dayOffId));\r\n return {\r\n values: [group[0].name, startDate, endDate, group[0].reasonName, ''],\r\n id: shiftIds,\r\n };\r\n });\r\n\r\n return tableData;\r\n }\r\n\r\n function noRequestsMessage() {\r\n var backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: function () {\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n },\r\n });\r\n var messageElement = document.createElement('h2');\r\n messageElement.innerHTML = 'You have no pending requests to review.';\r\n DOM.ACTIONCENTER.appendChild(backBtn);\r\n DOM.ACTIONCENTER.appendChild(messageElement);\r\n }\r\n\r\n function setupActionNav() {\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'send',\r\n callback: async function () {\r\n await submitApproveDenyRequest();\r\n\r\n // overlaps exist in approved shifts selected by user\r\n if (overlapApprovalData !== 'NoOverLap') {\r\n displayApprovedOverlapPopup();\r\n } else if (daysOffOverlapConfirmed) {\r\n overlapAlert(overlapIds)\r\n }else {\r\n // overlaps exist between selected shifts and shifts already approved (ie, shifts saved in DB)\r\n if (overlapsExist) {\r\n displayOverlapPopup(overlapsExist, overlapWrap);\r\n } else {\r\n ACTION_NAV.hide();\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n }\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n //ADD TRANSITION?\r\n DOM.clearActionCenter();\r\n ACTION_NAV.hide();\r\n scheduling.init();\r\n },\r\n });\r\n\r\n ACTION_NAV.populate([submitBtn, cancelBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n setupActionNav();\r\n\r\n function dataForCallOffandOpenShifts(shifts) {\r\n let tableData = shifts.map((shift, index) => {\r\n let day = `${shift.day.split(' ')[0]} ${UTIL.convertFromMilitary(\r\n shift.fromTime,\r\n )} - ${UTIL.convertFromMilitary(shift.toTime)}`;\r\n return {\r\n values: [shift.name, day, shift.locationName, shift.reasonName, ''],\r\n id: shift.shiftId,\r\n attributes: [\r\n { key: 'personId', value: shift.personId },\r\n { key: 'serviceDate', value: shift.day.split(' ')[0] },\r\n { key: 'startTime', value: shift.fromTime },\r\n { key: 'endTime', value: shift.toTime },\r\n { key: 'userName', value: shift.name },\r\n ],\r\n };\r\n });\r\n return tableData;\r\n }\r\n }\r\n\r\n function overlapApprovedShifts(openShiftRequests) {\r\n var openShiftRequestList = openShiftRequests.map(request => ({\r\n shiftId: request.id,\r\n serviceDate: request.attributes.serviceDate.value,\r\n personId: request.attributes.personId.value,\r\n decision: request.dataset.approvalStatus,\r\n startTime: request.attributes.startTime.value,\r\n endTime: request.attributes.endTime.value,\r\n userName: request.attributes.userName.value,\r\n }));\r\n var selectedShifts = openShiftRequestList.filter(x => x.decision === 'approve');\r\n\r\n for (const approvedShift of selectedShifts) {\r\n for (const openShiftRequest of openShiftRequestList) {\r\n // if its not the same record, then chek for an overlap\r\n if (approvedShift.shiftId !== openShiftRequest.shiftId) {\r\n // same person, same date, and openshift = approve, then check for time overlap\r\n if (\r\n approvedShift.personId === openShiftRequest.personId &&\r\n approvedShift.serviceDate === openShiftRequest.serviceDate &&\r\n openShiftRequest.decision === 'approve'\r\n ) {\r\n var selectedStartTime = approvedShift.startTime;\r\n var selectedEndTime = approvedShift.endTime;\r\n var existingStartTime = openShiftRequest.startTime;\r\n var existingEndTime = openShiftRequest.endTime;\r\n\r\n // is there a time overlap\r\n if (\r\n (selectedStartTime > existingStartTime && selectedStartTime < existingEndTime) ||\r\n (selectedEndTime > existingStartTime && selectedEndTime < existingEndTime) ||\r\n (existingStartTime >= selectedStartTime &&\r\n existingStartTime <= selectedEndTime &&\r\n existingEndTime >= selectedStartTime &&\r\n existingEndTime <= selectedEndTime) ||\r\n (existingStartTime == selectedStartTime && existingEndTime == selectedEndTime)\r\n ) {\r\n return approvedShift.serviceDate + ' ' + approvedShift.userName;\r\n } //if compare hours\r\n } //if compare personId/Date\r\n } //if compare personId/Shift\r\n } // for openShiftList\r\n } // for selectedShifts\r\n\r\n return 'NoOverLap';\r\n }\r\n\r\n function displayApprovedOverlapPopup() {\r\n var overlapPopup = POPUP.build({\r\n classNames: 'overlapRequestShiftPopup',\r\n });\r\n overlapIntro = document.createElement('div');\r\n overlapIntro.innerHTML = `\r\n
    \r\n

    Overlapping Shift Approvals(s)

    \r\n

    You selected conflicting overlapping approvals for the following: ${overlapApprovalData}. No approvals were processed. Please review your possible approvals and try again.


    \r\n
    \r\n `;\r\n overlapPopup.appendChild(overlapIntro);\r\n // requestApprovalOverlapPopup\r\n\r\n let overlapOKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(overlapPopup);\r\n // init();\r\n },\r\n });\r\n\r\n // overlapPopup.appendChild(overlapWrap);\r\n overlapPopup.appendChild(overlapOKBtn);\r\n POPUP.show(overlapPopup);\r\n }\r\n\r\n function displayOverlapPopup(overlapsExist, overlapWrap) {\r\n if (overlapsExist) {\r\n var overlapPopup = POPUP.build({\r\n classNames: 'overlapRequestShiftPopup',\r\n });\r\n overlapIntro = document.createElement('div');\r\n overlapIntro.innerHTML = `\r\n
    \r\n

    Overlapping Open Shift Request(s)

    \r\n

    The following open shift requests overlap with an existing shift the staff already scheduled to work. These shifts cannot be approved.


    \r\n
    \r\n `;\r\n overlapPopup.appendChild(overlapIntro);\r\n // requestApprovalOverlapPopup\r\n\r\n let overlapOKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(overlapPopup);\r\n init();\r\n },\r\n });\r\n\r\n overlapPopup.appendChild(overlapWrap);\r\n overlapPopup.appendChild(overlapOKBtn);\r\n POPUP.show(overlapPopup);\r\n }\r\n }\r\n\r\n async function submitApproveDenyRequest() {\r\n if (openShiftTable) {\r\n var openShiftTableBody = openShiftTable.querySelector('.table__body');\r\n var openShiftRequests = Array.prototype.slice.call(\r\n openShiftTableBody.querySelectorAll('.table__row'),\r\n );\r\n\r\n // check approved shifts to ensure no overlap (before checking for overlaps with assigned shifts)\r\n overlapApprovalData = overlapApprovedShifts(openShiftRequests);\r\n if (overlapApprovalData !== 'NoOverLap') {\r\n return;\r\n }\r\n }\r\n if (callOffTable) {\r\n var callOffTableBody = callOffTable.querySelector('.table__body');\r\n var callOffRequests = Array.prototype.slice.call(\r\n callOffTableBody.querySelectorAll('.table__row'),\r\n );\r\n }\r\n if (daysOffTable) {\r\n var daysOffTableBody = daysOffTable.querySelector('.table__body');\r\n var daysOffRequests = Array.prototype.slice.call(\r\n daysOffTableBody.querySelectorAll('.table__row'),\r\n );\r\n }\r\n\r\n if (!overlapApprovalData) {\r\n overlapApprovalData = 'NoOverLap';\r\n }\r\n\r\n // check selected shifts against shifts already assigned to the user\r\n if (openShiftRequests) {\r\n overlapWrap = document.createElement('div');\r\n overlapsExist = false;\r\n\r\n for (const request of openShiftRequests) {\r\n var shiftId = request.id;\r\n var decision = request.dataset.approvalStatus;\r\n var personId = request.attributes.personId.value;\r\n\r\n decision = decision === 'approve' ? 'A' : decision === 'deny' ? 'D' : '';\r\n\r\n const { getOverlapDataforSelectedShiftResult: overlapWithExistingShiftData } =\r\n await schedulingAjax.getOverlapDataforSelectedShiftAjax(shiftId, personId);\r\n\r\n if (overlapWithExistingShiftData === 'NoOverLap' && decision !== '') {\r\n schedulingAjax.approveDenyOpenShiftRequestSchedulingAjax({\r\n token: $.session.Token,\r\n requestedShiftId: shiftId,\r\n decision: decision,\r\n });\r\n } else if (overlapWithExistingShiftData !== 'NoOverLap' && decision === 'D') {\r\n schedulingAjax.approveDenyOpenShiftRequestSchedulingAjax({\r\n token: $.session.Token,\r\n requestedShiftId: shiftId,\r\n decision: decision,\r\n }); //ajax\r\n } else {\r\n if (overlapWithExistingShiftData != 'NoOverLap' && decision === 'A') {\r\n overlapsExist = true;\r\n var overlapShiftData = await JSON.parse(overlapWithExistingShiftData);\r\n var serviceDate = overlapShiftData.serviceDate.split(' ');\r\n var startTime = UTIL.convertFromMilitary(overlapShiftData.startTime.slice(0, -3));\r\n var endTime = UTIL.convertFromMilitary(overlapShiftData.endTime.slice(0, -3));\r\n overlapWrap.innerHTML += `

    ${serviceDate[0]} ${overlapShiftData.lastName}, ${overlapShiftData.firstName} ${overlapShiftData.locationName} ${startTime}-${endTime}


    `;\r\n } // if clause end -- (overlapWithExistingShiftData != \"NoOverLap\" && decision === 'A')\r\n } // else clause end -- (overlapWithExistingShiftData == \"NoOverLap\" && decision !== '')\r\n } // for loop\r\n } // if openShiftRequests\r\n\r\n if (callOffRequests) {\r\n callOffRequests.forEach(request => {\r\n var shiftId = request.id;\r\n var decision = request.dataset.approvalStatus;\r\n decision = decision === 'approve' ? 'A' : decision === 'deny' ? 'D' : '';\r\n if (decision !== '') {\r\n //token, callOffShiftId, decision\r\n schedulingAjax.approveDenyCallOffRequestSchedulingAjax({\r\n token: $.session.Token,\r\n callOffShiftId: shiftId,\r\n decision: decision,\r\n });\r\n }\r\n });\r\n }\r\n\r\n if (daysOffRequests) {\r\n for (const request of daysOffRequests) {\r\n var shiftIds = request.id;\r\n var decision = request.dataset.approvalStatus;\r\n decision = decision === 'approve' ? 'A' : decision === 'deny' ? 'D' : '';\r\n if (decision !== '') {\r\n //token, daysOffIdString(comma separated), decision\r\n const approveDenyResponse = await schedulingAjax.approveDenyDaysOffRequestSchedulingAjax({\r\n token: $.session.Token,\r\n daysOffIdString: shiftIds,\r\n decision: decision,\r\n });\r\n \r\n if (approveDenyResponse !== 'Success') {\r\n // alert(\"Overlap found. Please review the days off requests NOT processed. These requests are in conflict with already approved requests.\")\r\n overlapIds.push(approveDenyResponse);\r\n daysOffOverlapConfirmed = true;\r\n } else {\r\n daysOffOverlapConfirmed = false;\r\n }\r\n }\r\n }\r\n } \r\n }\r\n\r\n function overlapAlert(idArray) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n\r\n // Reset the overlap Ids\r\n overlapIds = [];\r\n\r\n ACTION_NAV.hide();\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n },\r\n });\r\n\r\n let requestDataText = [];\r\n\r\n // Loop through each id in the array\r\n idArray.forEach(id => {\r\n // Get the parent div element with the current id\r\n const parentDiv = document.getElementById(id);\r\n\r\n // Get all the nested div elements inside the parent div\r\n const nestedDivs = parentDiv.getElementsByTagName('div');\r\n\r\n // Create an empty object to store the text content of each nested div\r\n const nestedDivsObject = {};\r\n\r\n // Loop through each nested div element and add its text content as a property to the object\r\n for (let i = 0; i < nestedDivs.length; i++) {\r\n const textContent = nestedDivs[i].textContent;\r\n nestedDivsObject[`nestedDiv${i + 1}`] = textContent;\r\n }\r\n\r\n const requestData = `Employee: ${nestedDivsObject.nestedDiv1}, ${nestedDivsObject.nestedDiv2} - ${nestedDivsObject.nestedDiv3}`\r\n requestDataText.push(requestData);\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n\r\n const paragraphs = requestDataText.map(item => {\r\n return `

    ${item}

    `;\r\n });\r\n\r\n // Create the alert message\r\n const alertMessage = document.createElement('p');\r\n alertMessage.innerHTML =\r\n 'The following requests overlap an existing time off request and could not be approved:';\r\n\r\n // Append each paragraph to the alert message\r\n paragraphs.forEach(paragraph => {\r\n const p = document.createElement('p');\r\n p.innerHTML = paragraph;\r\n alertMessage.appendChild(p);\r\n });\r\n\r\n // Append the alert message and button wrapper to the alert popup\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n\r\n // Show the alert popup\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n function init() {\r\n daysOffTable = null;\r\n callOffTable = null;\r\n openShiftTable = null;\r\n actioncenter = document.getElementById('actioncenter');\r\n DOM.clearActionCenter();\r\n buildApproveRequestPage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","//=============================================\r\n// *** EDIT THIS CODE AT YOUR OWN RISK ***\r\n//=============================================\r\nvar schedulingCalendar = (function () {\r\n var months = [\r\n 'jan',\r\n 'feb',\r\n 'mar',\r\n 'apr',\r\n 'may',\r\n 'jun',\r\n 'jul',\r\n 'aug',\r\n 'sep',\r\n 'oct',\r\n 'nov',\r\n 'dec',\r\n ];\r\n var days = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\r\n var _scheduleArray = [];\r\n var _schedules = []; // cache of all schedules\r\n var _appointments = []; // all appointments\r\n var _locationsArr = []; // for locations dropdown\r\n var _reasonsArr = []; // for reasons dropdown\r\n var _startDay = 0; // start day of week\r\n var _currentWeekHours = null;\r\n var _scheduleView = 'mine';\r\n var _currentView = 'week';\r\n var defaultLocation; //default location for location dropdown\r\n // DOM Elements\r\n var actioncenter;\r\n // mobile check\r\n var isMobile;\r\n //Hack to get locationId to pass to get drop down employees\r\n var detailsLocationId;\r\n var shiftDateForCall;\r\n\r\n function appendModuleContainer(moduleName) {\r\n var actionCenter = document.getElementById('actioncenter');\r\n actionCenter.innerHTML = '';\r\n var moduleContainer = document.createElement('DIV');\r\n moduleContainer.classList.add(moduleName);\r\n moduleContainer.id = UTIL.camelize(moduleName);\r\n actionCenter.appendChild(moduleContainer);\r\n }\r\n function removeInnerHtml(elementId) {\r\n var element = document.getElementById(elementId);\r\n element.innerHTML = '';\r\n }\r\n\r\n //========================================================\r\n // DATE UTIL\r\n //========================================================\r\n function toInteger(dirtyNumber) {\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (\r\n argument instanceof Date ||\r\n (typeof argument === 'object' && argStr === ['object Date'])\r\n ) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === 'number' || argStr === ['object Number']) {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(',');\r\n return new Date(\r\n parseInt(argument[0]),\r\n parseInt(argument[1] - 1),\r\n parseInt(argument[2]),\r\n );\r\n }\r\n }\r\n\r\n function addMilliseconds(dirtyDate, dirtyAmount) {\r\n var timestamp = cloneDate(dirtyDate).getTime();\r\n var amount = toInteger(dirtyAmount);\r\n return new Date(timestamp + amount);\r\n }\r\n\r\n function addMinutes(dirtyDate, dirtyAmount) {\r\n var MILLISECONDS_IN_MINUTE = 60000;\r\n var amount = toInteger(dirtyAmount);\r\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\r\n }\r\n\r\n function addDays(dirtyDate, dirtyAmount) {\r\n const date = cloneDate(dirtyDate);\r\n const amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n\r\n function getDay(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n return day;\r\n }\r\n\r\n function getServiceDate(res) {\r\n var dateString = res.serviceDate ? res.serviceDate : res.dateScheduled;\r\n var serviceDateObj = dateString.split(' ')[0].split('/');\r\n var serviceYear = serviceDateObj[2];\r\n var serviceMonth = UTIL.leadingZero(serviceDateObj[0]);\r\n var serviceMonthName = months[serviceDateObj[0] - 1];\r\n var serviceDate = UTIL.leadingZero(serviceDateObj[1]);\r\n var serviceDay =\r\n days[getDay(`${serviceDateObj[2]}-${serviceDateObj[0]}-${serviceDateObj[1]}`)];\r\n\r\n serviceDateObj = `${serviceYear}-${serviceMonth}-${serviceDate}`;\r\n return serviceDateObj;\r\n }\r\n\r\n function setStartDay(dayObj) {\r\n var weekDays = ['S', 'M', 'T', 'W', 'R', 'F', 'A', 'S'];\r\n var dayOfWeek = dayObj[0].Day_of_Week;\r\n var startDay = weekDays.indexOf(dayOfWeek);\r\n _startDay = startDay !== -1 ? startDay : 0;\r\n }\r\n\r\n function eachDateOfInterval(dirtyInterval) {\r\n const interval = dirtyInterval || {};\r\n\r\n if (interval.start === interval.end) return interval.start.split(',').join('/');\r\n\r\n const startDate = cloneDate(interval.start);\r\n const endDate = cloneDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n if (!(startDate.getTime() <= endTime)) return;\r\n\r\n let dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(cloneDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + 1);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n function isWithinInterval(dirtyDate, dirtyInterval) {\r\n var interval = dirtyInterval || {};\r\n var time = cloneDate(dirtyDate).getTime();\r\n var startTime = cloneDate(interval.start).getTime();\r\n var endTime = cloneDate(interval.end).getTime();\r\n\r\n return time >= startTime && time <= endTime;\r\n }\r\n\r\n function areConsecutiveDates(date1, date2) {\r\n date1 = date1.split(' ')[0].split('/');\r\n date2 = date2.split(' ')[0].split('/');\r\n\r\n date1[0] = date1[0] - 1;\r\n date2[0] = date2[0] - 1;\r\n\r\n var dateOne = new Date(date1[2], date1[0], date1[1]);\r\n var dateTwo = new Date(date2[2], date2[0], date2[1]);\r\n\r\n dateOne = addDays(dateOne, 1);\r\n\r\n return dateOne.getTime() === dateTwo.getTime();\r\n }\r\n\r\n //========================================================\r\n // TIME UTIL\r\n //========================================================\r\n function getTotalHours(startTime, endTime) {\r\n if (startTime === undefined || endTime === undefined) {\r\n return;\r\n } else {\r\n startTime = startTime.trim();\r\n endTime = endTime.trim();\r\n }\r\n\r\n var endDate = endTime === '12:00 AM' ? '01/02/2019 ' : '01/01/2019 ';\r\n var startTimeDate = new Date('01/01/2019 ' + startTime);\r\n var endTimeDate = new Date(endDate + endTime);\r\n var startTimeMilliseconds = startTimeDate.getTime();\r\n var endTimeMilliseconds = endTimeDate.getTime();\r\n // total milliseconds\r\n var milliseconds = endTimeMilliseconds - startTimeMilliseconds;\r\n var hours = Math.floor((milliseconds / (1000 * 60 * 60)) % 24);\r\n var minutes = Math.floor((milliseconds / (1000 * 60)) % 60);\r\n\r\n return hours + minutes / 60;\r\n }\r\n\r\n function timeOverlapCheck(fromTime, toTime) {\r\n var startTimeMilliseconds = new Date('01/01/2019 ' + fromTime).getTime();\r\n var endTimeMilliseconds = new Date('01/01/2019 ' + toTime).getTime();\r\n var timeDifference = endTimeMilliseconds - startTimeMilliseconds;\r\n return timeDifference < 0 ? false : true;\r\n }\r\n\r\n function midnightNextDay(date) {\r\n date = `${date} 00:00:00`;\r\n return addDays(date, 1);\r\n }\r\n\r\n function convertToMilitary(dirtyTime) {\r\n var hours = Math.floor((dirtyTime / (1000 * 60 * 60)) % 24);\r\n var minutes = Math.floor((dirtyTime / (1000 * 60)) % 60);\r\n return `${hours}:${UTIL.leadingZero(minutes / 60)}:00`;\r\n }\r\n\r\n function convertFromMilitary(dirtyTime) {\r\n var timeArr = dirtyTime.split(':');\r\n var dirtyHours = parseInt(timeArr[0]);\r\n var dirtyMinutes = parseInt(timeArr[1]);\r\n\r\n var hours, minutes, amPm;\r\n\r\n if (dirtyHours === 0) {\r\n hours = '12';\r\n amPm = 'AM';\r\n }\r\n if (dirtyHours > 0 && dirtyHours < 12) {\r\n hours = dirtyHours.toString();\r\n amPm = 'AM';\r\n }\r\n if (dirtyHours === 12) {\r\n hours = dirtyHours.toString();\r\n amPm = 'PM';\r\n }\r\n if (dirtyHours > 12) {\r\n hours = (dirtyHours - 12).toString();\r\n amPm = 'PM';\r\n }\r\n\r\n minutes = UTIL.leadingZero(dirtyMinutes);\r\n\r\n return `${hours}:${minutes} ${amPm}`;\r\n }\r\n\r\n //========================================================\r\n // Scheduling Locations\r\n //========================================================\r\n function renderLocationDropdown() {\r\n calContainer = document.querySelector('.calendarContainer');\r\n let scheduleViewWrap = document.querySelector('.scheduleViewWrap');\r\n if (locationDropdown) return;\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Locations:',\r\n style: 'secondary',\r\n });\r\n\r\n scheduleViewWrap.appendChild(locationDropdown);\r\n locationDropdown.classList.add('disabled');\r\n // actioncenter.insertBefore(locationDropdown, calContainer);\r\n\r\n // var locationDropdown = document.getElementById('js-scheduleLocationDropdown');\r\n locationDropdown.addEventListener('change', event => {\r\n var option = event.target.options[event.target.selectedIndex];\r\n var locationId = option.id;\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(\r\n locationId,\r\n '%',\r\n populateSchedules,\r\n );\r\n });\r\n }\r\n\r\n function populateLocationDropdown(data) {\r\n // var dropdown = document.getElementById('locationDropdown');\r\n let dropdownData = data.map(d => {\r\n var id = d.locationId;\r\n var value = d.locationName;\r\n var text = d.locationName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n dropdown.populate('locationDropdown', dropdownData);\r\n\r\n // cache cloned data\r\n _locationsArr = data;\r\n // populate schedule for default location\r\n defaultLocation = dropdownData[0].id;\r\n // schedulingAjax.getSchedulesForSchedulingModuleAjax(defaultLocation, '%', populateSchedules);\r\n }\r\n\r\n //========================================================\r\n // SHIFT DETAILS\r\n //========================================================\r\n function renderDetailsPopup(details, type) {\r\n details = details[0];\r\n var actioncenter = document.getElementById('actioncenter');\r\n var shiftDetails = document.querySelector('.shiftDetails');\r\n var openShiftDetails = document.querySelector('.openShiftDetails');\r\n var pendingOpenShiftDetails = document.querySelector('.pendingOpenShiftDetails');\r\n var pendingCallOffDetails = document.querySelector('.pendingCallOffDetails');\r\n var appointmentDetails = document.querySelector('.appointmentDetails');\r\n\r\n if (shiftDetails) {\r\n var shiftId = shiftDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(shiftDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (openShiftDetails) {\r\n var shiftId = openShiftDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(openShiftDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (pendingOpenShiftDetails) {\r\n var shiftId = pendingOpenShiftDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(pendingOpenShiftDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (pendingCallOffDetails) {\r\n var shiftId = pendingCallOffDetails.getAttribute('shiftId');\r\n if (shiftId !== details.shiftId) {\r\n actioncenter.removeChild(pendingCallOffDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n if (appointmentDetails) {\r\n var appointmentId = appointmentDetails.getAttribute('appointmentId');\r\n if (appointmentId !== details.medTrackingId) {\r\n actioncenter.removeChild(appointmentDetails);\r\n } else {\r\n return;\r\n }\r\n }\r\n detailsLocationId = details.locationId;\r\n switch (type) {\r\n case 'shift':\r\n renderShiftDetails(details);\r\n break;\r\n case 'openShift':\r\n renderOpenShiftDetails(details);\r\n break;\r\n case 'requestOff':\r\n renderPendingOpenShiftDetails(details);\r\n break;\r\n case 'callOff':\r\n renderPendingCallOffDetails(details);\r\n break;\r\n case 'appointment':\r\n renderAppointmentDetails(details);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n // Shift Details / Appointment Details\r\n //---------------------------------------------------\r\n function renderAppointmentDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var date = details.dateScheduled.split(' ')[0];\r\n var time =\r\n details.timeScheduled !== ''\r\n ? convertFromMilitary(details.timeScheduled)\r\n : convertFromMilitary(details.dateScheduled.split(' ')[1]);\r\n var notes = details.notes;\r\n var consumer = details.consumerName;\r\n var provider = details.provider;\r\n var type = details.typeDescription;\r\n var reason = details.reason;\r\n\r\n var popup = POPUP.build({\r\n classNames: 'appointmentDetails',\r\n attributes: [{ key: 'appointmentId', value: details.medTrackingId }],\r\n });\r\n\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Appointment Details

    \r\n

    ${date}

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${time}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumer:

    \r\n

    ${consumer}

    \r\n
    \r\n
    \r\n
    \r\n

    Provider:

    \r\n

    ${provider}

    \r\n
    \r\n
    \r\n
    \r\n

    Type:

    \r\n

    ${type}

    \r\n
    \r\n
    \r\n
    \r\n

    Reason:

    \r\n

    ${reason}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${notes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n POPUP.show(popup);\r\n }\r\n // UPDATED FOR RESPONSIVE POPUP\r\n function renderShiftDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate;\r\n shiftType =\r\n shiftType === 'A'\r\n ? 'Awake'\r\n : shiftType === 'N'\r\n ? 'Night'\r\n : shiftType === 'D'\r\n ? 'Day'\r\n : shiftType === 'S'\r\n ? 'Sleep'\r\n : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'shiftDetails',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n //New Call off btn using button.build\r\n let callOffBtn = button.build({\r\n text: 'Call Off',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n renderRequestOffPopup(details.shiftId);\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(callOffBtn);\r\n\r\n if (\r\n _scheduleView === 'mine' &&\r\n (_currentView === 'week' || _currentView === 'day') &&\r\n $.session.schedAllowCallOffRequests === 'Y' &&\r\n $.session.schedulingUpdate\r\n ) {\r\n popup.appendChild(btnWrap);\r\n }\r\n POPUP.show(popup);\r\n }\r\n\r\n // UPDATED FOR RESPONSIVE POPUP\r\n // Open Shift Details\r\n //---------------------------------------------------\r\n function renderOpenShiftDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate;\r\n shiftType =\r\n shiftType === 'A'\r\n ? 'Awake'\r\n : shiftType === 'N'\r\n ? 'Night'\r\n : shiftType === 'D'\r\n ? 'Day'\r\n : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'openShiftDetails',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n let requestShiftBtn = button.build({\r\n text: 'Request Shift',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n var token = $.session.Token;\r\n var shiftId = details.shiftId;\r\n var personId = $.session.PeopleId;\r\n var status = 'P';\r\n var notifiedEmployeeId = null;\r\n POPUP.hide(popup);\r\n\r\n const { getOverlapStatusforSelectedShiftResult: overlapWithExistingShift } =\r\n\t\t\t\t\tawait schedulingAjax.getOverlapStatusforSelectedShiftAjax(shiftId, personId);\r\n\r\n if (overlapWithExistingShift == \"NoOverLap\" ) {\r\n renderSendShiftRequestPopup({\r\n token,\r\n shiftId,\r\n personId,\r\n status,\r\n notifiedEmployeeId,\r\n });\r\n \r\n } else {\r\n displayOverlapPopup(overlapWithExistingShift);\r\n return;\r\n } \r\n\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n\r\n if ($.session.schedRequestOpenShifts === 'N' || $.session.isPSI) {\r\n } else if (!$.session.schedulingUpdate || !$.session.schedulingView) {\r\n } else {\r\n btnWrap.appendChild(requestShiftBtn);\r\n popup.appendChild(btnWrap);\r\n }\r\n\r\n // ($.session.schedRequestOpenShifts === 'N' || $.session.isPSI) ? null:\r\n // (!$.session.schedulingUpdate || !$.session.schedulingView) ? null: popup.appendChild(btnWrap)\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function displayOverlapPopup(existingShiftLocationName) {\r\n\r\n var overlapPopup = POPUP.build({\r\n classNames: 'sendRequestShiftPopup',\r\n });\r\n overlapWrap = document.createElement('div');\r\n overlapWrap.innerHTML = `\r\n
    \r\n

    Requested Shift Overlap

    \r\n

    This open shift overlaps with an existing shift you are scheduled to work at ${existingShiftLocationName}. You cannot request this open shift.

    \r\n
    \r\n `;\r\n overlapPopup.appendChild(overlapWrap);\r\n\r\n let overlapCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(overlapPopup);\r\n },\r\n });\r\n\r\n //overlapPopup.appendChild(wrap2);\r\n overlapPopup.appendChild(overlapCancelBtn);\r\n\r\n POPUP.show(overlapPopup);\r\n\r\n }\r\n // UPDATED FOR RESPONSIVE POPUP\r\n function renderSendShiftRequestPopup(data) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var popup = POPUP.build({\r\n classNames: 'sendRequestShiftPopup',\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Request Open Shift

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n var employeeDropdown = dropdown.build({\r\n dropdownId: 'employeeDropdown',\r\n label: 'Employee To Notify',\r\n style: 'secondary',\r\n });\r\n let cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n let sendRequestBtn = button.build({\r\n id: 'sendReqBtn',\r\n classNames: 'disabled',\r\n text: 'Send Request',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'send',\r\n callback: function () {\r\n data.notifiedEmployeeId = employeeId;\r\n schedulingAjax.saveOpenShiftRequestSchedulingAjax(data);\r\n _scheduleView = 'mine';\r\n _currentView = 'week';\r\n POPUP.hide(popup);\r\n init();\r\n },\r\n });\r\n\r\n schedulingAjax.getCallOffDropdownEmployeesAjax(\r\n shiftDateForCall,\r\n detailsLocationId,\r\n populateEmployeesDropdown,\r\n );\r\n\r\n POPUP.show(popup);\r\n popup.appendChild(employeeDropdown);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(sendRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n employeeDropdown.classList.add('error');\r\n employeeDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeId === '%') {\r\n employeeDropdown.classList.add('error');\r\n } else {\r\n employeeDropdown.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n }\r\n\r\n // Pending Open Shift Details\r\n // UPDATED FOR RESPONSIVE POPUP\r\n //---------------------------------------------------\r\n function renderPendingOpenShiftDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate; //need this to pass back in order to get correct dropdown employees\r\n shiftType =\r\n shiftType === 'A'\r\n ? 'Awake'\r\n : shiftType === 'N'\r\n ? 'Night'\r\n : shiftType === 'D'\r\n ? 'Day'\r\n : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'pendingOpenShiftPopup',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n\r\n popup.appendChild(wrap);\r\n let cancelRequestBtn = button.build({\r\n id: 'cancelRequestBtn',\r\n attributes: [{ shiftId: details.shiftId }],\r\n text: 'Cancel Request',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var shiftId = details.shiftId;\r\n schedulingAjax.cancelRequestOpenShiftSchedulingAjax(shiftId);\r\n POPUP.hide(popup);\r\n _scheduleView = 'mine';\r\n _currentView = 'week';\r\n init();\r\n },\r\n });\r\n\r\n if (details.requestedById === $.session.PeopleId) {\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(cancelRequestBtn);\r\n popup.appendChild(btnWrap);\r\n }\r\n POPUP.show(popup);\r\n }\r\n\r\n // Pending Call Off Details\r\n // UPDATED FOR RESPONSIVE POPUP\r\n //---------------------------------------------------\r\n\r\n // UPDATED FOR RESPONSIVE POPUP\r\n function renderPendingCallOffDetails(details) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n\r\n var shiftDate = details.serviceDate.split(' ')[0];\r\n var startTime = details.startTime;\r\n var endTime = details.endTime;\r\n var consumers = details.consumerNames;\r\n var location = details.locationName;\r\n var shiftNotes = details.shiftNotes;\r\n var shiftType = details.shiftType;\r\n var workCode = `${details.workCode} - ${details.workCodeDescription}`;\r\n shiftDateForCall = shiftDate;\r\n shiftType =\r\n shiftType === 'A'\r\n ? 'Awake'\r\n : shiftType === 'N'\r\n ? 'Night'\r\n : shiftType === 'D'\r\n ? 'Day'\r\n : '';\r\n startTime = convertFromMilitary(startTime);\r\n endTime = convertFromMilitary(endTime);\r\n\r\n var popup = POPUP.build({\r\n classNames: 'pendingCallOffDetails',\r\n attributes: [{ key: 'shiftId', value: details.shiftId }],\r\n });\r\n var wrap = document.createElement('div');\r\n wrap.innerHTML = `\r\n
    \r\n

    Shift Details

    \r\n

    ${shiftDate}

    \r\n
    \r\n
    \r\n
    \r\n

    Location:

    \r\n

    ${location}

    \r\n
    \r\n
    \r\n
    \r\n

    Time:

    \r\n

    ${startTime} - ${endTime}

    \r\n
    \r\n
    \r\n
    \r\n

    Consumers:

    \r\n

    ${consumers}

    \r\n
    \r\n
    \r\n
    \r\n

    Work Code:

    \r\n

    ${workCode}

    \r\n
    \r\n
    \r\n
    \r\n

    Shift Type:

    \r\n

    ${shiftType}

    \r\n
    \r\n
    \r\n
    \r\n

    Notes:

    \r\n

    ${shiftNotes}

    \r\n
    \r\n
    \r\n `;\r\n popup.appendChild(wrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n // Employee Shift Call Off\r\n // *the button shown inside shift details\r\n //---------------------------------------------------\r\n\r\n // UPDATED FOR RESPONSIVE DROPDOWN\r\n function populateReasonsDropdown(results) {\r\n results.sort((a, b) => (a.reasonName < b.reasonName ? -1 : 1));\r\n results = [{ reasonId: '%', reasonName: '' }, ...results];\r\n var dropdownData = results.map(r => {\r\n var id = r.reasonId;\r\n var value = r.reasonName;\r\n var text = r.reasonName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n dropdown.populate('reasonDropdown', dropdownData);\r\n // reasonDropdown.addEventListener('change', () => {\r\n // var selectedOption = event.target.options[event.target.selectedIndex];\r\n // reasonId = selectedOption.id;\r\n // })\r\n }\r\n // UPDATED FOR RESPONSIVE DROPDOWN\r\n function populateEmployeesDropdown(results) {\r\n results = [{ employeeId: '%', employeeName: '' }, ...results];\r\n var employeeData = results.map(r => {\r\n var id = r.employeeId;\r\n var value = r.employeeName;\r\n var text = r.employeeName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n dropdown.populate('employeeDropdown', employeeData);\r\n // employeeDropdown.addEventListener('change', () => {\r\n // var sendRequestBtn = document.getElementById('sendReqBtn')\r\n // var selectedOption = event.target.options[event.target.selectedIndex];\r\n // employeeId = selectedOption.id;\r\n // employeeId !== '%' ? sendRequestBtn.classList.remove('disabled'): sendRequestBtn.classList.add('disabled');\r\n // });\r\n }\r\n\r\n //UPDATED FOR RESPONSIVE CODE\r\n //CALL OFF POPUP\r\n function renderRequestOffPopup(eventId) {\r\n var actioncenter = document.getElementById('actioncenter');\r\n var calendar = document.getElementById('calendarContent');\r\n\r\n var popup = POPUP.build({\r\n classNames: 'request-off-popup',\r\n attributes: [{ key: 'shiftId', value: eventId }],\r\n });\r\n var reasonDropdown = dropdown.build({\r\n dropdownId: 'reasonDropdown',\r\n label: 'Reason',\r\n style: 'secondary',\r\n readOnly: 'false',\r\n });\r\n\r\n var notesInput = input.build({\r\n id: 'noteInput',\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n });\r\n\r\n var employeeDropdown = dropdown.build({\r\n dropdownId: 'employeeDropdown',\r\n label: 'Employee To Notify',\r\n style: 'secondary',\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n reasonId = '';\r\n employeeId = '';\r\n note = '';\r\n },\r\n });\r\n\r\n var sendRequestBtn = button.build({\r\n id: 'sendReqBtn',\r\n text: 'Send Request',\r\n classNames: 'disabled',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'send',\r\n callback: function () {\r\n var note = document.getElementById('noteInput').value;\r\n var data = {\r\n token: $.session.Token,\r\n shiftId: eventId,\r\n personId: $.session.PeopleId,\r\n reasonId: reasonId,\r\n note: note,\r\n status: 'P',\r\n notifiedEmployeeId: employeeId,\r\n };\r\n\r\n schedulingAjax.saveSchedulingCallOffRequestAjax(data);\r\n POPUP.hide(popup);\r\n init();\r\n },\r\n });\r\n\r\n reasonDropdown.classList.add('error');\r\n notesInput.classList.add('error');\r\n employeeDropdown.classList.add('error');\r\n\r\n reasonDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n reasonId = selectedOption.id;\r\n if (reasonId === '%') {\r\n reasonDropdown.classList.add('error');\r\n } else {\r\n reasonDropdown.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n\r\n notesInput.addEventListener('change', function () {\r\n if (notesInput.firstChild.value === '') {\r\n notesInput.classList.add('error');\r\n } else {\r\n notesInput.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n\r\n employeeDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeId === '%') {\r\n employeeDropdown.classList.add('error');\r\n } else {\r\n employeeDropdown.classList.remove('error');\r\n }\r\n checkRequiredFields(sendRequestBtn);\r\n });\r\n\r\n let header = document.createElement('h2');\r\n header.classList.add('detailsHeading');\r\n header.innerHTML = 'Call Off Request';\r\n\r\n POPUP.show(popup);\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('popupBtnWrap');\r\n btnWrap.appendChild(sendRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(reasonDropdown);\r\n popup.appendChild(notesInput);\r\n popup.appendChild(employeeDropdown);\r\n popup.appendChild(btnWrap);\r\n\r\n schedulingAjax.getCallOffDropdownEmployeesAjax(\r\n shiftDateForCall,\r\n detailsLocationId,\r\n populateEmployeesDropdown,\r\n );\r\n schedulingAjax.getCallOffDropdownReasonsAjax(populateReasonsDropdown);\r\n }\r\n\r\n function checkRequiredFields(btn) {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length === 0) {\r\n btn.classList.remove('disabled');\r\n } else {\r\n btn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // ----------------------------------------------\r\n // MOVED TO schedulingRequestTimeOff.js v v v\r\n // Employee Request Time Off\r\n // *the button at the bottom of calendar\r\n // *allows employee to request multiple days off\r\n //---------------------------------------------------\r\n\r\n //========================================================\r\n // Schedules\r\n //========================================================\r\n function toggleView() {\r\n var btn = document.getElementById('scheduleViewBtn');\r\n var scheduleView = btn.getAttribute('data-view');\r\n var locationDropdown = document.getElementById('locationDropdown');\r\n\r\n if (scheduleView === 'all') {\r\n // set view\r\n _scheduleView = 'mine';\r\n _currentView = 'week';\r\n btn.setAttribute('data-view', 'mine');\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(\r\n '%',\r\n $.session.PeopleId,\r\n populateSchedules,\r\n );\r\n // remove location dropdown\r\n let scheduleViewWrap = document.querySelector('.scheduleViewWrap');\r\n var locationDropdown = document.getElementById('locationDropdown');\r\n // scheduleViewWrap.removeChild(locationDropdown.parentNode);\r\n locationDropdown.parentElement.classList.add('disabled');\r\n // locationDropdown.setAttribute('disabled', true);\r\n } else {\r\n // set view\r\n _scheduleView = 'all';\r\n _currentView = 'week';\r\n btn.setAttribute('data-view', 'all');\r\n // enable loaction dropdown\r\n locationDropdown.parentElement.classList.remove('disabled');\r\n if (defaultLocation === null) {\r\n let option = locationDropdown.options[locationDropdown.selectedIndex];\r\n var locationId = option.id;\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(\r\n locationId,\r\n '%',\r\n populateSchedules,\r\n );\r\n } else {\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(\r\n defaultLocation,\r\n '%',\r\n populateSchedules,\r\n );\r\n defaultLocation = null;\r\n }\r\n }\r\n }\r\n\r\n function renderScheduleViewBtn() {\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('scheduleViewWrap');\r\n\r\n scheduleViewBtn = button.build({\r\n id: 'scheduleViewBtn',\r\n attributes: [{ 'data-view': 'mine' }],\r\n text: 'My Schedule', //Default view is My Schedule, Text shoul say All Schedules\r\n //because that is that you will view when clicked\r\n style: 'secondary',\r\n type: 'contained',\r\n toggle: true,\r\n toggleText: 'All Schedules',\r\n callback: function () {\r\n toggleView();\r\n },\r\n });\r\n if ($.session.hideAllScheduleButton) {\r\n return;\r\n } else {\r\n btnWrap.appendChild(scheduleViewBtn);\r\n }\r\n calContainer = document.querySelector('.calendarContainer');\r\n actioncenter.insertBefore(btnWrap, calContainer);\r\n }\r\n\r\n function populateShiftTotalHours() {\r\n if (isMobile && _currentView === 'day') return;\r\n function getDateRangeFromCalTitle() {\r\n var calTitle = document.getElementById('calTitle').innerHTML;\r\n\r\n var year = calTitle.split('-')[1].split(',')[1].trim();\r\n var dateString1 = calTitle.split('-')[0].trim() + `, ${year}`;\r\n var dateString2 = calTitle.split('-')[1].split(',')[0].trim() + `, ${year}`;\r\n var date1 = new Date(dateString1);\r\n var date2 = new Date(dateString2);\r\n // must return object with start and end properties\r\n return { start: date1, end: date2 };\r\n }\r\n\r\n function calcWeekTotalHours() {\r\n var dateRangeObj = getDateRangeFromCalTitle();\r\n\r\n var myShifts = _schedules.filter(schedule => {\r\n var serviceDate = schedule.serviceDate.split(' ')[0].split('/');\r\n var yyyy = serviceDate[2];\r\n var mm = parseInt(serviceDate[0]) - 1;\r\n var dd = serviceDate[1];\r\n serviceDate = new Date(yyyy, mm, dd);\r\n var withinInterval = isWithinInterval(serviceDate, dateRangeObj);\r\n return withinInterval;\r\n });\r\n\r\n var totalHours = 0;\r\n myShifts.forEach(shift => {\r\n var doesIdMatch = $.session.PeopleId === shift.personID;\r\n if (doesIdMatch) totalHours += parseFloat(shift.hoursScheduled);\r\n });\r\n\r\n return totalHours;\r\n }\r\n\r\n setTimeout(() => {\r\n var totalHours;\r\n if (_currentWeekHours !== null) {\r\n totalHours = _currentWeekHours;\r\n } else {\r\n totalHours = calcWeekTotalHours();\r\n }\r\n\r\n // Total Shifts at Bottom of Page\r\n //=========================================\r\n var wrap = document.querySelector('.total-hours-wrap');\r\n var wrapMarkup = `

    Current Week Total Hours: ${parseFloat(\r\n totalHours,\r\n ).toFixed(2)}

    `;\r\n\r\n if (wrap) {\r\n wrap.innerHTML = wrapMarkup;\r\n } else {\r\n var calendar = document.querySelector('.calendarFooter');\r\n wrap = document.createElement('div');\r\n wrap.classList.add('total-hours-wrap');\r\n wrap.innerHTML = wrapMarkup;\r\n calendar.appendChild(wrap);\r\n }\r\n\r\n // Individual Shift Total Hours\r\n //=========================================\r\n var shifts = Array.prototype.slice.call(\r\n document.querySelectorAll('.eventBody .hdr'),\r\n );\r\n shifts.forEach(shift => {\r\n var time = shift.innerHTML;\r\n time = time.split('-');\r\n time[1] = time[1].trim() === '11:59 PM' ? '12:00 AM' : time[1];\r\n var hours = getTotalHours(time[0], time[1]);\r\n // sets total hours per shift\r\n shift.innerHTML += `(${parseFloat(hours).toFixed(2)})`;\r\n });\r\n\r\n _currentWeekHours = totalHours; // cache total hours\r\n }, 100);\r\n }\r\n\r\n function populateAppointments(results) {\r\n results.forEach((res, index) => {\r\n var serviceDate = getServiceDate(res);\r\n var startTime = `${serviceDate} ${res.timeScheduled}`;\r\n // This code is for microshit IE\r\n var dateArray = startTime.split(' ')[0].split('-');\r\n var timeArray = startTime.split(' ')[1].split(':');\r\n var yyyy = dateArray[0];\r\n var mm = dateArray[1] - 1;\r\n var dd = dateArray[2];\r\n var hour = timeArray[0];\r\n var min = timeArray[1];\r\n var sec = timeArray[2];\r\n var date = new Date(yyyy, mm, dd, hour, min, sec);\r\n // end Microshit IE code\r\n var endTime = addMinutes(date, 60);\r\n endTime = `${serviceDate} ${UTIL.leadingZero(\r\n endTime.getHours(),\r\n )}:${UTIL.leadingZero(endTime.getMinutes())}:00`;\r\n\r\n _scheduleArray[5].events.push({\r\n startTime: startTime,\r\n endTime: endTime,\r\n group: {\r\n groupId: 6,\r\n },\r\n eventId: res.medTrackingId,\r\n allDay: false,\r\n description: res.typeDescription,\r\n name: res.consumerName,\r\n eventName: res.takenToApptBy,\r\n });\r\n\r\n // Temp cache of appointments\r\n _appointments.push(res);\r\n });\r\n }\r\n\r\n function populateSchedules(results, locationId) {\r\n // clear own _schedules cache\r\n _schedules = [];\r\n // refigure dataObject to match web2cal\r\n _scheduleArray = [\r\n {\r\n name: 'My Shifts',\r\n groupId: 1,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'All Shifts',\r\n groupId: 2,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Open Shifts',\r\n groupId: 3,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Pending Request Open Shifts',\r\n groupId: 4,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Pending Call Off Shifts',\r\n groupId: 5,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Appointments',\r\n groupId: 6,\r\n events: [],\r\n groups: null,\r\n },\r\n ];\r\n\r\n results.forEach(res => {\r\n // null/undefined checks\r\n var timeRegEx = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\r\n var isStartTimeValid = timeRegEx.test(res.startTime);\r\n var isEndTimeValid = timeRegEx.test(res.endTime);\r\n\r\n if (!isStartTimeValid || !isEndTimeValid || res.serviceDate === '') {\r\n return;\r\n }\r\n\r\n if (_scheduleView === 'mine' && $.session.isPSI) return;\r\n\r\n // Determine which scheduleArray group to push to\r\n var groupPos; // position in scheduleArray\r\n var groupId; // calendar group number\r\n\r\n if (res.personID === '' || res.personID === null) {\r\n if (_scheduleView === 'all') {\r\n if (\r\n (res.callOffStatus === '' && res.requestShiftStatus === '') ||\r\n (res.callOffStatus === '' && res.requestShiftStatus === 'D')\r\n ) {\r\n //MAT changed 6/7/2019. Ash check\r\n // open shift\r\n groupId = 3;\r\n groupPos = 2;\r\n } else if (res.requestShiftStatus === 'P') {\r\n // pending open shift\r\n groupId = 4;\r\n groupPos = 3;\r\n }\r\n }\r\n } else if (res.personID.toString() === $.session.PeopleId) {\r\n if (res.callOffStatus === 'P') {\r\n // pending call off\r\n groupId = 5;\r\n groupPos = 4;\r\n } else {\r\n // my shifts\r\n groupId = 1;\r\n groupPos = 0;\r\n }\r\n } else {\r\n // all shifts\r\n groupId = 2;\r\n groupPos = 1;\r\n }\r\n\r\n // Event Details\r\n //----------------------\r\n var serviceDate = getServiceDate(res);\r\n var startTime = `${serviceDate} ${res.startTime}`;\r\n var endTime = `${serviceDate} ${res.endTime}`;\r\n var description = `${res.lastName}, ${res.firstName}`;\r\n description = description.trim() === ',' ? '' : description;\r\n var eventName =\r\n _scheduleView === 'mine'\r\n ? res.locationName\r\n : `${res.lastName}, ${res.firstName} `;\r\n eventName = eventName.trim() === ',' ? '' : eventName;\r\n eventName = eventName === '' ? res.locationName : eventName;\r\n var name = _scheduleView === 'mine' ? res.locationName : res.lastName;\r\n name = name === '' ? res.locationName : name;\r\n\r\n if (typeof groupPos === 'number') {\r\n _scheduleArray[groupPos].events.push({\r\n startTime: startTime,\r\n endTime: endTime,\r\n group: {\r\n groupId: groupId,\r\n },\r\n eventId: res.shiftId,\r\n allDay: false,\r\n description: description,\r\n name: name,\r\n eventName: eventName,\r\n });\r\n }\r\n\r\n // Cache schedules\r\n _schedules.push(res);\r\n });\r\n\r\n if (_scheduleView === 'all') {\r\n schedulingAjax.getScheduleApptInformationAjax(locationId, function (results) {\r\n populateAppointments(results);\r\n drawCalendar();\r\n });\r\n } else {\r\n drawCalendar(_scheduleArray);\r\n }\r\n }\r\n\r\n //========================================================\r\n // Schedule Admin\r\n // MOVED to SchedulingApproveRequest.js\r\n //========================================================\r\n\r\n //========================================================\r\n // Calendar\r\n //========================================================\r\n let ical;\r\n function drawCalendar() {\r\n removeInnerHtml('calendarContainer');\r\n ical = new Web2Cal('calendarContainer', {\r\n loadEvents: function () {\r\n ical.render(_scheduleArray);\r\n },\r\n onNewEvent: onNewEvent,\r\n startOfWeek: _startDay,\r\n readOnly: true,\r\n });\r\n ical.build();\r\n\r\n removeStuffWeDontWant();\r\n renderCalFooter();\r\n setupCalendarEvents();\r\n if (_currentView === 'week' || _currentView === 'day') {\r\n populateShiftTotalHours();\r\n }\r\n if (!document.querySelector('.scheduleViewWrap')) {\r\n renderScheduleViewBtn();\r\n renderLocationDropdown();\r\n schedulingAjax.getLocationDropdownForSchedulingAjax(populateLocationDropdown);\r\n }\r\n }\r\n\r\n function onNewEvent(obj, groups, allday) {\r\n Web2Cal.defaultPlugins.onNewEvent(obj, groups, allday);\r\n }\r\n\r\n function rzCloseAddEvent() {\r\n ical.closeAddEvent();\r\n }\r\n\r\n function renderCalFooter() {\r\n var calendar = document.getElementById('calendarContent');\r\n var footer = document.createElement('div');\r\n footer.classList.add('calendarFooter');\r\n footer.innerHTML = `
    `;\r\n calendar.appendChild(footer);\r\n }\r\n\r\n function setupDateHeadingEvent() {\r\n var dateHeadings = Array.prototype.slice.call(\r\n document.querySelectorAll('.calHeader'),\r\n );\r\n\r\n dateHeadings.forEach(heading => {\r\n heading.addEventListener('click', event => {\r\n _currentView = 'day';\r\n populateShiftTotalHours();\r\n });\r\n });\r\n }\r\n\r\n function setupCalendarEvents() {\r\n var calendar = document.getElementById('calendarContent');\r\n var monthBtn = document.getElementById('calNavmonth');\r\n var weekBtn = document.getElementById('calNavweek');\r\n var dayBtn = document.getElementById('calNavday');\r\n var prevBtn = document.querySelector('.prevButton.navbtn');\r\n var nextBtn = document.querySelector('.nextButton.navbtn');\r\n\r\n calendar.addEventListener('click', event => {\r\n switch (event.target) {\r\n case monthBtn:\r\n _currentView = 'month';\r\n var a = document.querySelector('.calendarFooter');\r\n var b = a.querySelector('.total-hours-wrap');\r\n if (b) a.removeChild(b);\r\n break;\r\n case weekBtn:\r\n _currentView = 'week';\r\n setupDateHeadingEvent();\r\n populateShiftTotalHours();\r\n if ($.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n break;\r\n case dayBtn:\r\n _currentView = 'day';\r\n populateShiftTotalHours();\r\n if ($.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n break;\r\n case prevBtn:\r\n case nextBtn:\r\n if (_currentView === 'week' || _currentView === 'day') {\r\n populateShiftTotalHours();\r\n if (\r\n _scheduleView === 'mine' &&\r\n $.session.schedAllowCallOffRequests === 'Y' &&\r\n $.session.schedulingUpdate\r\n ) {\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n if (event.target.classList.contains('dayEvent')) {\r\n // My Shifts & All Shifts\r\n if (\r\n event.target.classList.contains('red') ||\r\n event.target.classList.contains('blueTemplate')\r\n ) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'shift');\r\n return;\r\n }\r\n\r\n // Open Shifts\r\n if (event.target.classList.contains('brickTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'openShift');\r\n return;\r\n }\r\n\r\n // Pending Request Open Shifts\r\n if (event.target.classList.contains('tealTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'requestOff');\r\n return;\r\n }\r\n\r\n // Pending Call Off Shifts\r\n if (event.target.classList.contains('lightGreenTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'callOff');\r\n return;\r\n }\r\n\r\n // Appointments\r\n if (event.target.classList.contains('brownTemplate')) {\r\n // alert('Congratulations you have just won an all enclusive trip to a destination of your choice!');\r\n // alert('We just need you to call 740-525-7145 and leave a voice mail with your SSN, DOB, address and mothers maiden name');\r\n // alert('Did you call us yet?');\r\n // alert('Promise this isnt a scam.');\r\n var appointmentId = event.target.getAttribute('eventid');\r\n var appointmenttDetails = _appointments.filter(appointment => {\r\n return appointment.medTrackingId === appointmentId;\r\n });\r\n\r\n renderDetailsPopup(appointmenttDetails, 'appointment');\r\n return;\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n //========================================================\r\n // Overriding Web2Cal\r\n //========================================================\r\n function removeStuffWeDontWant() {\r\n var navWrap = document.getElementById('inner-wrap');\r\n var leftNav = document.getElementById('leftNav');\r\n navWrap.removeChild(leftNav);\r\n\r\n var inliner1 = document.querySelector('.inline.r1');\r\n var inliner2 = document.querySelector('.inline.r2');\r\n var calNav = document.getElementById('calNavData');\r\n var agendaBtn = document.querySelector('.liagenda');\r\n var workshiftBtn = document.querySelector('.liworkshift');\r\n var resourceBtn = document.querySelector('.liw2cview');\r\n var groupsBtn = document.querySelector('.topHideShowLink');\r\n var calicon = document.querySelector('.icon-calendar');\r\n calNav.removeChild(agendaBtn);\r\n calNav.removeChild(workshiftBtn);\r\n calNav.removeChild(resourceBtn);\r\n inliner1.removeChild(groupsBtn);\r\n inliner2.removeChild(calicon);\r\n\r\n var collapseWrap = document.querySelector('#topnavContainer .inline.r2');\r\n var collapse = document.querySelector('.collapse-left-nav.icon-arrow-left');\r\n collapseWrap.removeChild(collapse);\r\n }\r\n function init() {\r\n isMobile = document.body.dataset.mobile;\r\n\r\n if (isMobile) {\r\n _currentView = 'day';\r\n } else {\r\n _currentView = 'week';\r\n }\r\n _scheduleView = 'mine';\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.init();\r\n PROGRESS.SPINNER.show('Loading Calendar');\r\n schedulingAjax.getDayOfWeekScheduleAjax(setStartDay);\r\n\r\n // default view is my schedules\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax('%', $.session.PeopleId, function (\r\n results,\r\n ) {\r\n // PROGRESS.SPINNER.hide();\r\n DOM.clearActionCenter();\r\n actioncenter = document.getElementById('actioncenter');\r\n appendModuleContainer('calendarContainer');\r\n populateSchedules(results);\r\n\r\n // *** Only for All Schedule View\r\n // Once we have the schedule array built,\r\n // send it off to have appointments joined before\r\n // drawing the calendar\r\n\r\n //populateSchedules does this too...\r\n // if (_scheduleView === 'all') {\r\n // schedulingAjax.getScheduleApptInformationAjax(locationId, function(results) {\r\n // populateAppointments(results);\r\n // drawCalendar();\r\n // });\r\n // } else {\r\n // drawCalendar();\r\n // }\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var schedulingRequestTimeOff = (function() {\r\n var actioncenter;\r\n\r\n // UTIL\r\n //-------------------------------------------------\r\n function eachDateOfInterval(dirtyInterval) {\r\n const interval = dirtyInterval || {};\r\n\r\n if (interval.start === interval.end)\r\n return interval.start.split(\",\").join(\"/\");\r\n\r\n const startDate = cloneDate(interval.start);\r\n const endDate = cloneDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n if (!(startDate.getTime() <= endTime)) return;\r\n\r\n let dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(cloneDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + 1);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n function timeOverlapCheck(fromTime, toTime) {\r\n var startTimeMilliseconds = new Date(\"01/01/2019 \" + fromTime).getTime();\r\n var endTimeMilliseconds = new Date(\"01/01/2019 \" + toTime).getTime();\r\n var timeDifference = endTimeMilliseconds - startTimeMilliseconds;\r\n return timeDifference < 0 ? false : true;\r\n }\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (\r\n argument instanceof Date ||\r\n (typeof argument === \"object\" && argStr === [\"object Date\"])\r\n ) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === \"number\" || argStr === [\"object Number\"]) {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(\",\");\r\n return new Date(\r\n parseInt(argument[0]),\r\n parseInt(argument[1] - 1),\r\n parseInt(argument[2])\r\n );\r\n }\r\n }\r\n\r\n // ERROR POPUPS\r\n var errorPopup = POPUP.build({\r\n header: \"ERROR\",\r\n classNames: \"popup__error\",\r\n id: \"errorPopup\"\r\n });\r\n var errorPopupText = document.createElement(\"h3\");\r\n errorPopup.appendChild(errorPopupText);\r\n //=============================================\r\n \r\n //REST\r\n //-------------------------------------------------\r\n function populateEmployeesDropdown(results) {\r\n results = [{ employeeId: \"%\", employeeName: \"\" }, ...results];\r\n var employeeData = results.map(r => {\r\n var id = r.employeeId;\r\n var value = r.employeeName;\r\n var text = r.employeeName;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n dropdown.populate(\"employeeDropdown\", employeeData);\r\n employeeId = employeeData[0].id;\r\n }\r\n\r\n function populateReasonsDropdown(results) {\r\n results.sort((a, b) => (a.reasonName < b.reasonName ? -1 : 1));\r\n results = [{ reasonId: \"%\", reasonName: \"\" }, ...results];\r\n var dropdownData = results.map(r => {\r\n var id = r.reasonId;\r\n var value = r.reasonName;\r\n var text = r.reasonName;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n dropdown.populate(\"reasonDropdown\", dropdownData);\r\n reasonId = dropdownData[0].id;\r\n }\r\n\r\n function overlapAlert(requestData) {\r\n\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(alertPopup);\r\n // overlay.show();\r\n \r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n\r\n var Date = `${requestData.serviceDate.split(' ')[0]}`;\r\n var startTime = `${UTIL.convertFromMilitary(requestData.startTime)}`;\r\n var endTime = `${UTIL.convertFromMilitary(requestData.endTime)}`;\r\n\r\n // Create the alert message\r\n const alertMessage = document.createElement('p');\r\n alertMessage.innerHTML = `This request overlaps an existing day off request on ${Date} ${startTime}-${endTime} and could not be processed.`;\r\n \r\n // Append the alert message and button wrapper to the alert popup\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n \r\n // Show the alert popup\r\n POPUP.show(alertPopup);\r\n\t\r\n }\r\n\r\n async function submitRequest() {\r\n reasonId = reasonId === \"%\" ? null : reasonId;\r\n employeeId = employeeId === \"%\" ? null : employeeId;\r\n if (reasonId === null || employeeId === null) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Reason and notified employee fields are required\";\r\n return;\r\n }\r\n var startDate = document\r\n .getElementById(\"fromDate\")\r\n .value.split(\"-\")\r\n .join(\",\");\r\n var endDate = document\r\n .getElementById(\"toDate\")\r\n .value.split(\"-\")\r\n .join(\",\");\r\n var dateInterval = eachDateOfInterval({ start: startDate, end: endDate });\r\n // check date overlap:\r\n var areDatesValid = !dateInterval ? false : true;\r\n if (!areDatesValid) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"From Date cannot be after To Date\";\r\n return;\r\n } else {\r\n if (typeof dateInterval === \"string\") {\r\n var dateArray = dateInterval;\r\n } else {\r\n var dateArray = dateInterval\r\n .map(date => {\r\n var year = date.getFullYear();\r\n var month = UTIL.leadingZero(date.getMonth() + 1);\r\n var day = UTIL.leadingZero(date.getDate());\r\n\r\n return `${year}/${month}/${day}`;\r\n })\r\n .toString();\r\n }\r\n }\r\n\r\n var fromTime = document.getElementById(\"fromTime\");\r\n var toTime = document.getElementById(\"toTime\");\r\n fromTimeVal = fromTime.value === \"\" ? \"00:00:00\" : fromTime.value;\r\n toTimeVal = toTime.value === \"\" ? \"23:59:59\" : toTime.value;\r\n // check time overlap - ONLY CHECK TIME OVERLAP ON REQUEST OFF FOR 1 DAY. TO TIME CAN COME BEFORE FROM TIME\r\n // IF REQUESTING MULTIPLE DAYS OFF IN A ROW.\r\n if (typeof dateInterval === \"string\") {\r\n var areTimesValid = timeOverlapCheck(fromTimeVal, toTimeVal);\r\n if (!areTimesValid) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"To Time cannot come before From Time\"\r\n return;\r\n } else {\r\n fromTime = fromTimeVal === \"\" ? \"00:00:00\" : fromTimeVal;\r\n toTime = toTimeVal === \"\" ? \"23:59:59\" : toTimeVal;\r\n }\r\n } else {\r\n fromTime = fromTimeVal === \"\" ? \"00:00:00\" : fromTimeVal;\r\n toTime = toTimeVal === \"\" ? \"23:59:59\" : toTimeVal;\r\n }\r\n\r\n var data = {\r\n token: $.session.Token,\r\n personId: $.session.PeopleId,\r\n dates: dateArray,\r\n fromTime: fromTimeVal,\r\n toTime: toTimeVal,\r\n reasonId: reasonId,\r\n employeeNotifiedId: employeeId,\r\n status: \"P\"\r\n };\r\n const requestResult = await schedulingAjax.requestDaysOffSchedulingAjax(data);\r\n if (requestResult.requestDaysOffSchedulingResult.length > 0)\r\n {\r\n overlapAlert(requestResult.requestDaysOffSchedulingResult[0])\r\n } else {\r\n // Add verification/popup that the request has been sent?\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n }\r\n\r\n function buildRequestTimeOff() {\r\n var today = new Date();\r\n var dd = UTIL.leadingZero(today.getDate());\r\n var mm = UTIL.leadingZero(today.getMonth() + 1);\r\n var yyyy = today.getFullYear();\r\n\r\n actioncenter = document.getElementById(\"actioncenter\");\r\n\r\n let cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"card__header\");\r\n\r\n let cardBody = document.createElement(\"div\");\r\n cardBody.classList.add(\"card__body\");\r\n\r\n let dateWrap = document.createElement(\"div\");\r\n dateWrap.classList.add('requestOffCard__date')\r\n\r\n let timeWrap = document.createElement(\"div\");\r\n timeWrap.classList.add('requestOffCard__time')\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"requestOffBtnWrap\");\r\n\r\n let headerText = document.createElement(\"h3\");\r\n headerText.innerHTML = \"Request Time Off\";\r\n\r\n let card = document.createElement('div');\r\n card.classList.add('card', 'requestOffCard');\r\n\r\n let fromDateInput = input.build({\r\n id: \"fromDate\",\r\n label: \"From Date\",\r\n type: \"date\",\r\n style: \"secondary\"\r\n });\r\n let toDateInput = input.build({\r\n id: \"toDate\",\r\n label: \"To Date\",\r\n type: \"date\",\r\n style: \"secondary\"\r\n });\r\n let fromTimeInput = input.build({\r\n id: \"fromTime\",\r\n label: \"From Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n let toTimeInput = input.build({\r\n id: \"toTime\",\r\n label: \"To Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n let reasonDropdown = dropdown.build({\r\n dropdownId: \"reasonDropdown\",\r\n label: \"Reason\",\r\n classNames: 'error',\r\n style: \"secondary\"\r\n });\r\n let employeeDropdown = dropdown.build({\r\n dropdownId: \"employeeDropdown\",\r\n label: \"Employee To Notify\",\r\n classNames: 'error',\r\n style: \"secondary\"\r\n });\r\n let cancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: 'close',\r\n callback: function() {\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n });\r\n let submitRequestBtn = button.build({\r\n id: \"submitRequestBtn\",\r\n text: \"Submit Request\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"disabled\",\r\n icon: 'send',\r\n callback: function() {\r\n submitRequest();\r\n }\r\n });\r\n\r\n dateWrap.appendChild(fromDateInput);\r\n dateWrap.appendChild(fromTimeInput);\r\n cardBody.appendChild(dateWrap);\r\n\r\n timeWrap.appendChild(toDateInput);\r\n timeWrap.appendChild(toTimeInput);\r\n cardBody.appendChild(timeWrap);\r\n\r\n cardBody.appendChild(reasonDropdown);\r\n cardBody.appendChild(employeeDropdown);\r\n\r\n btnWrap.appendChild(submitRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n cardBody.appendChild(btnWrap)\r\n\r\n cardHeader.appendChild(headerText);\r\n \r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n actioncenter.appendChild(card);\r\n\r\n //EVENT LISTENERS TO FOR REQIRED AND ENABELING SUBMIT BTN\r\n fromDateInput.classList.add(\"error\");\r\n toDateInput.classList.add(\"error\");\r\n reasonDropdown.classList.add('error')\r\n employeeDropdown.classList.add('error')\r\n\r\n var fromDateField = document.getElementById(\"fromDate\");\r\n var toDateField = document.getElementById(\"toDate\");\r\n var reasonDropdownField = document.getElementById(\"reasonDropdown\");\r\n var employeeDropdownField = document.getElementById(\"employeeDropdown\");\r\n\r\n fromDateInput.addEventListener(\"change\", function() {\r\n if (fromDateField.value === \"\") {\r\n fromDateInput.classList.add(\"error\");\r\n } else {\r\n fromDateInput.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n toDateInput.addEventListener(\"change\", function() { \r\n if (toDateField.value === \"\") {\r\n toDateInput.classList.add(\"error\");\r\n } else {\r\n toDateInput.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n reasonDropdown.addEventListener(\"change\", function() {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n reasonId = selectedOption.id;\r\n if (reasonDropdownField.selectedIndex === 0) {\r\n reasonDropdown.classList.add(\"error\");\r\n } else {\r\n reasonDropdown.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n employeeDropdown.addEventListener(\"change\", function() {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeDropdownField.selectedIndex === 0) {\r\n employeeDropdown.classList.add(\"error\");\r\n } else {\r\n employeeDropdown.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n\r\n\r\n schedulingAjax.getRequestTimeOffDropdownEmployees(populateEmployeesDropdown);\r\n schedulingAjax.getCallOffDropdownReasonsAjax(populateReasonsDropdown);\r\n }\r\n\r\n function init() {\r\n actioncenter = document.getElementById(\"actioncenter\");\r\n DOM.clearActionCenter();\r\n buildRequestTimeOff();\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const assessment = (function () {\r\n // Data\r\n let sectionData;\r\n let subsectionData;\r\n let questionSetData;\r\n let questionData;\r\n let conditionalQuestionData;\r\n\r\n // Applicable Sections\r\n //------------------------------------\r\n let applicableSections;\r\n\r\n function getApplicableSections() {\r\n return applicableSections;\r\n }\r\n function showApplicableWarningMessage(callback) {\r\n const warningPopup = POPUP.build({\r\n classNames: 'applicableWarningMessage',\r\n });\r\n\r\n const header = document.createElement('h3');\r\n header.innerHTML =\r\n 'Marking this section Not Applicable will remove all information for this section, including answers to assessment questions, assessment summary information, and assessment area names on supports. Do you want to proceed?';\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async e => {\r\n // Delete answers to questions for the selected section\r\n // Null out Assessment Area values\r\n callback('yes');\r\n POPUP.hide(warningPopup);\r\n },\r\n });\r\n\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n callback('no');\r\n POPUP.hide(warningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n warningPopup.appendChild(header);\r\n warningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(warningPopup);\r\n }\r\n async function toggleIsSectionApplicable(sectionId, isApplicable) {\r\n // isApplicable === true || false\r\n const planId = plan.getCurrentPlanId();\r\n await planAjax.updatePlanSectionApplicable({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n sectionId: parseInt(sectionId),\r\n applicable: isApplicable ? 'Y' : 'N',\r\n });\r\n\r\n applicableSections[sectionId] = isApplicable;\r\n tableOfContents.toggleApplicability(sectionId, isApplicable);\r\n }\r\n\r\n // Utils\r\n //------------------------------------\r\n function getConditionalQuestions(conditionalQuestionId) {\r\n return conditionalQuestionData[conditionalQuestionId];\r\n }\r\n function getQuestionDataById(id) {\r\n return questionData[id];\r\n }\r\n function sortAssessmentDetails(data) {\r\n if (!data) return;\r\n // answerId: \"686614946860364\"\r\n // answerRow: \"1\"\r\n // answerText: \"\"\r\n // questionAnswerOptions: \"\"\r\n // questionAnswerStyle: \"TEXT\"\r\n // questionConditionalAnswerText: \"\"\r\n // questionConditionalQuestionId: \"\"\r\n // questionDefaultAnswer: \"\"\r\n // questionId: \"9\"\r\n // questionOrder: \"1\"\r\n // questionPrompt: \"\"\r\n // questionRequiresAnswer: \"True\"\r\n // questionSetAllowMultirowInserts: \"False\"\r\n // questionSetId: \"3\"\r\n // questionSetOrder: \"1\"\r\n // questionSetTitle: \"\"\r\n // questionSetType: \"LIST\"\r\n // questionTag: \"contributors_consumerName\"\r\n // questionText: \"Individual’s First Name & Last Initial\"\r\n // sectionId: \"2\"\r\n // sectionName: \"CONTRIBUTORS\"\r\n // sectionOrder: \"0\"\r\n // subsectionId: \"\"\r\n // subsectionName: \"\"\r\n // subsectionOrder: \"\"\r\n // applicable: \"Y\" || \"N\"\r\n // assessment: \"Y\" || \"N\"\r\n\r\n sectionData = {};\r\n subsectionData = {};\r\n questionSetData = {};\r\n questionData = {};\r\n answerData = {};\r\n conditionalQuestionData = {};\r\n applicableSections = {};\r\n\r\n data.forEach(({ sectionId, subsectionId, questionId, questionSetId, ...otherData }) => {\r\n // Sections\r\n if (!sectionData[sectionId]) {\r\n const isApplicable = otherData.applicable === '' ? 'Y' : otherData.applicable;\r\n sectionData[sectionId] = {\r\n order: otherData.sectionOrder,\r\n title: otherData.sectionName,\r\n applicable: isApplicable === 'Y' ? true : false,\r\n isAssessment: otherData.assessment,\r\n };\r\n\r\n if (!applicableSections[sectionId] && otherData.assessment) {\r\n if (otherData.assessment === 'Y') {\r\n applicableSections[sectionId] = isApplicable === 'Y' ? true : false;\r\n }\r\n }\r\n }\r\n // SubSections\r\n if (subsectionId && !subsectionData[subsectionId]) {\r\n subsectionData[subsectionId] = {\r\n sectionId,\r\n order: otherData.subsectionOrder,\r\n title: otherData.subsectionName,\r\n };\r\n }\r\n // Question Sets\r\n if (!questionSetData[questionSetId]) {\r\n questionSetData[questionSetId] = {\r\n id: questionSetId,\r\n sectionId,\r\n subsectionId,\r\n order: otherData.questionSetOrder,\r\n setType: otherData.questionSetType,\r\n allowRowInsert: otherData.questionSetAllowMultirowInserts,\r\n defaultAnswer: otherData.questionDefaultAnswer,\r\n questions: {},\r\n };\r\n }\r\n // Questions\r\n if (otherData.questionSetType === 'GRID') {\r\n if (!questionSetData[questionSetId].questions[otherData.answerRow]) {\r\n questionSetData[questionSetId].questions[otherData.answerRow] = {};\r\n }\r\n if (\r\n !questionSetData[questionSetId].questions[otherData.answerRow][otherData.questionOrder]\r\n ) {\r\n questionSetData[questionSetId].questions[otherData.answerRow][otherData.questionOrder] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n id: questionId,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n tag: otherData.questionTag,\r\n text: otherData.questionText,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n } else {\r\n if (!questionSetData[questionSetId].questions[otherData.questionOrder]) {\r\n questionSetData[questionSetId].questions[otherData.questionOrder] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n id: questionId,\r\n order: otherData.questionOrder,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n text: otherData.questionText,\r\n tag: otherData.questionTag,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n if (!questionData[questionId]) {\r\n questionData[questionId] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n id: questionId,\r\n order: otherData.questionOrder,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n text: otherData.questionText,\r\n tag: otherData.questionTag,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n\r\n if (otherData.questionConditionalQuestionId === '') return;\r\n\r\n if (!conditionalQuestionData[otherData.questionConditionalQuestionId]) {\r\n conditionalQuestionData[otherData.questionConditionalQuestionId] = [];\r\n }\r\n\r\n conditionalQuestionData[otherData.questionConditionalQuestionId].push({\r\n answerId: otherData.answerId,\r\n questionId: questionId,\r\n answerText: otherData.answerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n });\r\n }\r\n });\r\n\r\n return { sectionData, subsectionData, questionSetData };\r\n }\r\n\r\n // Data\r\n //------------------------------------\r\n // TODO: refactor ajax calls to return data\r\n // TODO: remove below functions once ^^ is done\r\n async function getAssessmentData(planId) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerAssessment({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n })\r\n ).getConsumerAssessmentResult;\r\n return sortAssessmentDetails(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerRelationshipsData(consumerId, effectiveStartDate, effectiveEndDate) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerRelationships({\r\n token: $.session.Token,\r\n consumerId,\r\n effectiveStartDate,\r\n effectiveEndDate,\r\n })\r\n ).getConsumerRelationshipsResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerNameInfoData(consumerId) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerNameInfo({\r\n token: $.session.Token,\r\n consumerId,\r\n })\r\n ).getConsumerNameInfoResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getServiceAndSupportsData() {\r\n try {\r\n const data = (\r\n await assessmentAjax.getServiceAndSupportsData({\r\n token: $.session.Token,\r\n })\r\n ).getServiceAndSupportsDataResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function generateReport(assessmentID, versionID, extraSpace) {\r\n try {\r\n const success = (\r\n await assessmentAjax.getPlanAssessmentReport({\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n isp: true, //new\r\n signatureOnly: false,\r\n })\r\n ).getPlanAssessmentReportResult;\r\n\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n } catch (error) {\r\n return error.statusText;\r\n }\r\n }\r\n function generateReportWithAttachments(\r\n assessmentID,\r\n versionID,\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n toDODD,\r\n ) {\r\n assessmentAjax.getPlanAssessmentReportWithAttachments(\r\n //Testgd\r\n {\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n toONET: false,\r\n isp: true,\r\n oneSpan: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n },\r\n () => {\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n },\r\n );\r\n }\r\n async function transeferPlanReportToONET(\r\n assessmentID,\r\n versionID,\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n ) {\r\n try {\r\n const successMessage = await assessmentAjax.transeferPlanReportToONET({\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n toONET: true,\r\n isp: true,\r\n oneSpan: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n });\r\n\r\n return successMessage;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function insertPlanReportToBeTranferredToONET(byteArray, assessmentID) {\r\n var binary = '';\r\n var len = byteArray.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(byteArray[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n try {\r\n const response = (\r\n await assessmentAjax.insertPlanReportToBeTranferredToONET({\r\n token: $.session.Token,\r\n report: abString,\r\n planId: assessmentID,\r\n })\r\n ).insertPlanReportToBeTranferredToONETResult;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function insertAssessmentGridRowAnswers(consumerPlanId, assessmentQuestionSetId) {\r\n try {\r\n const newRowData = (\r\n await assessmentAjax.insertAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId,\r\n assessmentQuestionSetId,\r\n })\r\n ).insertAssessmentGridRowAnswersResult;\r\n\r\n return newRowData;\r\n // return planId;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n // async function updateAnswers(answerArray) {\r\n // try {\r\n // const success = (\r\n // await assessmentAjax.updateConsumerAssessmentAnswers({\r\n // token: $.session.Token,\r\n // answers: answerArray,\r\n // })\r\n // ).updateAssessmentAnswersResult;\r\n // return success;\r\n // } catch (error) {\r\n // console.log(error.statusText);\r\n // }\r\n // }\r\n async function deleteGridRows(planId, questionSetId, rowsToDelete) {\r\n try {\r\n const success = (\r\n await assessmentAjax.deleteAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n assessmentQuestionSetId: questionSetId,\r\n rowsToDelete,\r\n })\r\n ).deleteAssessmentGridRowAnswersResult;\r\n return success;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n\r\n return {\r\n getAssessmentData,\r\n getConditionalQuestions,\r\n getQuestionDataById,\r\n getConsumerRelationshipsData,\r\n getConsumerNameInfoData,\r\n getServiceAndSupportsData,\r\n generateReport,\r\n generateReportWithAttachments,\r\n insertAssessmentGridRowAnswers,\r\n // updateAnswers,\r\n deleteGridRows,\r\n transeferPlanReportToONET,\r\n // applicable stuff\r\n showApplicableWarningMessage,\r\n toggleIsSectionApplicable,\r\n getApplicableSections,\r\n };\r\n})();\r\n","const assessmentAjax = (function () {\r\n function getConsumerAssessment(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerAssessment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getPlanAssessmentReport(retrieveData) {\r\n //token, userId, assessmentID, versionID, extraSpace, isp(boolean)\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAssessmentReport/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n async function getSentToONETDate(retrieveData) {\r\n //token, assessmentId\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSentToONETDate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSentToONETDateResult;\r\n }\r\n\r\n async function transeferPlanReportToONET(retrieveData) {\r\n //token, planAttachmentIds, wfAttachmentIds, sigAttachmentIds\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/transeferPlanReportToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.transeferPlanReportToONETResult;\r\n } catch (error) {\r\n console.log(error);\r\n return error.text;\r\n }\r\n }\r\n\r\n async function sendSelectedAttachmentsToDODD(retrieveData) {\r\n //token, planAttachmentIds, wfAttachmentIds, sigAttachmentIds\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendSelectedAttachmentsToDODD/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.sendSelectedAttachmentsToDODDResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getDefaultEmailsForFinalization() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDefaultEmailsForFinalization/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getDefaultEmailsForFinalizationResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function finalizationActions(retrieveData) {\r\n //string token, string[] planAttachmentIds, string[] wfAttachmentIds, string[] sigAttachmentIds, string userId, string assessmentID\r\n //string versionID, string extraSpace, bool toONET, bool isp, bool oneSpan, bool signatureOnly, string include, string planId\r\n //string peopleId, string[] emailAddresses, string[] checkBoxes\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/finalizationActions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.finalizationActionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function getPlanAssessmentReportWithAttachments(retrieveData, callback) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/addSelectedAttachmentsToReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); //\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', retrieveData.userId);\r\n userIdInput.id = 'userId';\r\n var assessmentIDInput = document.createElement('input');\r\n assessmentIDInput.setAttribute('name', 'assessmentID');\r\n assessmentIDInput.setAttribute('value', retrieveData.assessmentID);\r\n assessmentIDInput.id = 'assessmentID';\r\n var versionIDInput = document.createElement('input');\r\n versionIDInput.setAttribute('name', 'versionID');\r\n versionIDInput.setAttribute('value', retrieveData.versionID);\r\n versionIDInput.id = 'versionID';\r\n var extraSpaceInput = document.createElement('input');\r\n extraSpaceInput.setAttribute('name', 'extraSpace');\r\n extraSpaceInput.setAttribute('value', retrieveData.extraSpace);\r\n var toONETInput = document.createElement('input');\r\n toONETInput.setAttribute('name', 'toONET');\r\n toONETInput.setAttribute('value', retrieveData.toONET);\r\n var ispInput = document.createElement('input');\r\n ispInput.setAttribute('name', 'isp');\r\n ispInput.setAttribute('value', retrieveData.isp);\r\n ispInput.id = 'isp';\r\n var oneSpanInput = document.createElement('input');\r\n oneSpanInput.setAttribute('name', 'oneSpan');\r\n oneSpanInput.setAttribute('value', retrieveData.oneSpan);\r\n oneSpanInput.id = 'oneSpan';\r\n var signatureOnlyInput = document.createElement('input');\r\n signatureOnlyInput.setAttribute('name', 'signatureOnly');\r\n signatureOnlyInput.setAttribute('value', retrieveData.signatureOnly);\r\n signatureOnlyInput.id = 'signatureOnly';\r\n var includeInput = document.createElement('input');\r\n includeInput.setAttribute('name', 'include');\r\n includeInput.setAttribute('value', retrieveData.include);\r\n includeInput.id = 'include';\r\n var planAttachmentIdsInput = document.createElement('input');\r\n planAttachmentIdsInput.setAttribute('name', 'planAttachmentIds');\r\n planAttachmentIdsInput.setAttribute('value', retrieveData.planAttachmentIds);\r\n planAttachmentIdsInput.id = 'planAttachmentIds';\r\n var wfAttachmentIdsInput = document.createElement('input');\r\n wfAttachmentIdsInput.setAttribute('name', 'wfAttachmentIds');\r\n wfAttachmentIdsInput.setAttribute('value', retrieveData.wfAttachmentIds);\r\n wfAttachmentIdsInput.id = 'wfAttachmentIds';\r\n var sigAttachmentIdsInput = document.createElement('input');\r\n sigAttachmentIdsInput.setAttribute('name', 'sigAttachmentIds');\r\n sigAttachmentIdsInput.setAttribute('value', retrieveData.sigAttachmentIds);\r\n sigAttachmentIdsInput.id = 'sigAttachmentIds';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(assessmentIDInput);\r\n form.appendChild(versionIDInput);\r\n form.appendChild(extraSpaceInput);\r\n form.appendChild(toONETInput);\r\n form.appendChild(ispInput);\r\n form.appendChild(oneSpanInput);\r\n form.appendChild(signatureOnlyInput);\r\n form.appendChild(includeInput);\r\n form.appendChild(planAttachmentIdsInput);\r\n form.appendChild(wfAttachmentIdsInput);\r\n form.appendChild(sigAttachmentIdsInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n function getConsumerRelationships(retrieveData) {\r\n //token, consumerId, effectiveStartDate, effectiveEndDate\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationships/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getConsumerNameInfo(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerNameInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function updateConsumerAssessmentAnswers(retrieveData, callback) {\r\n //token, answerObj array\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n async function updateConsumerAssessmentAnswer(answerObject) {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n answers: [answerObject],\r\n };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAssessmentAnswersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function insertAssessmentGridRowAnswers(retrieveData) {\r\n // token, consumerPlanId, assessmentQuestionSetId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAssessmentGridRowAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function deleteAssessmentGridRowAnswers(retrieveData) {\r\n // token, consumerPlanId, assessmentQuestionSetId, rowsToDelete[]\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAssessmentGridRowAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n // TODO: Delete below function\r\n function getServiceAndSupportsData(retrieveData) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function insertPlanReportToBeTranferredToONET(retrieveData) {\r\n //token, reort, planId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanReportToBeTranferredToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function transferPlanReportToONET(retrieveData) {\r\n //token, planId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/transferPlanReportToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function updateAssessmentAnswerRowOrder(retrieveData) {\r\n // string token, string answerIds, long assessmentId, long questionSetId, int newPos, int oldPos\r\n // Pipe delimit the answerIds with no spaces\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswerRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n return {\r\n getConsumerAssessment,\r\n getPlanAssessmentReport,\r\n getConsumerRelationships,\r\n getConsumerNameInfo,\r\n updateConsumerAssessmentAnswers,\r\n updateConsumerAssessmentAnswer,\r\n insertAssessmentGridRowAnswers,\r\n deleteAssessmentGridRowAnswers,\r\n getDefaultEmailsForFinalization,\r\n getServiceAndSupportsData,\r\n finalizationActions,\r\n insertPlanReportToBeTranferredToONET,\r\n transferPlanReportToONET,\r\n updateAssessmentAnswerRowOrder,\r\n getPlanAssessmentReportWithAttachments,\r\n sendSelectedAttachmentsToDODD,\r\n transeferPlanReportToONET,\r\n getSentToONETDate,\r\n };\r\n})();\r\n","const ISP = (function () {\r\n let ispData;\r\n let planId;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let readOnly;\r\n let validationCheck;\r\n\r\n const sections = [\r\n {\r\n title: 'Summary',\r\n id: 0,\r\n markup: () => planSummary.getMarkup(),\r\n },\r\n {\r\n title: 'Outcomes',\r\n id: 1,\r\n markup: () => planOutcomes.getMarkup(),\r\n },\r\n {\r\n title: 'Services',\r\n id: 2,\r\n markup: () => servicesSupports.getMarkup(),\r\n },\r\n {\r\n title: 'Restrictive Measures',\r\n id: 3,\r\n markup: () => planRestrictiveMeasures.getMarkup(),\r\n },\r\n {\r\n title: 'Sign / Consent',\r\n id: 4,\r\n markup: () => planConsentAndSign.getMarkup(),\r\n },\r\n {\r\n title: 'Contacts',\r\n id: 5,\r\n markup: () => contactInformation.getSectionMarkup(),\r\n },\r\n {\r\n title: 'Introduction',\r\n id: 6,\r\n markup: () => planIntroduction.getMarkup(),\r\n },\r\n ];\r\n\r\n // Utils\r\n //---------------------------------------------\r\n async function getInitialData() {\r\n ispData = {};\r\n\r\n ispData.servicesSupports = await servicesSupportsAjax.getServicesAndSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n }\r\n async function refreshISP(planID) {\r\n planId = planID;\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n const ispWrap = document.getElementById('planISP');\r\n\r\n const loadingBar = PROGRESS.SPINNER.get('Loading ISP...');\r\n ispWrap.innerHTML = '';\r\n ispWrap.appendChild(loadingBar);\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n ispWrap.innerHTML = '';\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n targetSection.classList.add('active');\r\n }\r\n function showDeleteWarning(popup, message, callback) {\r\n popup.classList.add('deleteActive');\r\n\r\n const deleteWarning = document.createElement('div');\r\n deleteWarning.classList.add('deleteWarning');\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `${message}`;\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n callback();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n },\r\n });\r\n const closeWarningBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closeWarningBtn',\r\n callback: function () {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n // popup.style.overflow = 'hidden';\r\n deleteWarning.appendChild(closeWarningBtn);\r\n deleteWarning.appendChild(warningMessage);\r\n deleteWarning.appendChild(yesBtn);\r\n deleteWarning.appendChild(noBtn);\r\n\r\n popup.appendChild(deleteWarning);\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach(async (section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (section.title === 'Summary') {\r\n const summaryAlertDiv = document.createElement('div');\r\n summaryAlertDiv.classList.add('summaryAlertDiv');\r\n summaryAlertDiv.id = 'summaryAlert';\r\n summaryAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(summaryAlertDiv);\r\n summaryAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n summaryAlertDiv,\r\n );\r\n\r\n let summaryRisksValidation = planValidation.returnSummaryRisksValidation();\r\n\r\n // If a plan returns an error on the validation check, show the alert div\r\n if (!summaryRisksValidation)\r\n {\r\n summaryAlertDiv.style.display = 'flex';\r\n } else {\r\n summaryAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n // if the section is 'Outcomes' run an initial validation check on the section\r\n if (section.title === 'Outcomes') {\r\n const outcomesAlertDiv = document.createElement('div');\r\n outcomesAlertDiv.classList.add('outcomesAlertDiv');\r\n outcomesAlertDiv.id = 'outcomesAlert';\r\n outcomesAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(outcomesAlertDiv);\r\n outcomesAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n outcomesAlertDiv,\r\n );\r\n\r\n // If a plan returns an error on the validation check, show the alert div\r\n if (validationCheck.missingExperiences.length === 0 && validationCheck.missingReviews.length === 0) \r\n {\r\n outcomesAlertDiv.style.display = 'none';\r\n } else {\r\n outcomesAlertDiv.style.display = 'flex';\r\n }\r\n \r\n if (validationCheck.complete === false) {\r\n outcomesAlertDiv.style.display = 'flex';\r\n } else {\r\n outcomesAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n // if the section is 'Outcomes' run an initial validation check on the section\r\n if (section.title === 'Contacts') {\r\n const contactsAlertDiv = document.createElement('div');\r\n contactsAlertDiv.classList.add('contactsAlertDiv');\r\n contactsAlertDiv.id = 'contactsAlert';\r\n contactsAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(contactsAlertDiv);\r\n contactsAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n contactsAlertDiv,\r\n );\r\n\r\n let contactValidationCheck = planValidation.getContactValidation();\r\n\r\n if (!contactValidationCheck.importantPeople || !contactValidationCheck.importantPlaces || !contactValidationCheck.bestWayToConnect)\r\n {\r\n contactsAlertDiv.style.display = 'flex';\r\n } else {\r\n contactsAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n if (index === 0) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n // refresh data for relationships in dropdown data\r\n planData.refreshDropdownData();\r\n\r\n await getInitialData();\r\n\r\n servicesSupports.init({ planId, readOnly, data: ispData.servicesSupports });\r\n\r\n // eventually remove await and place data GET into getInitialData()\r\n await planSummary.init({ planId, readOnly });\r\n await planOutcomes.init({ planId, readOnly });\r\n await planConsentAndSign.init({ planId, readOnly });\r\n await planRestrictiveMeasures.init({ planId, readOnly });\r\n await contactInformation.init(planId);\r\n await planIntroduction.init({ planId, readOnly });\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (index === 0) {\r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n const status = plan.getPlanStatus();\r\n const isPlanComplete = status === 'C' ? true : false;\r\n const isPlanActive = plan.getPlanActiveStatus();\r\n const hasUpdatePermission = $.session.planUpdate;\r\n if (!isPlanActive || isPlanComplete || !hasUpdatePermission) {\r\n readOnly = true;\r\n ispDiv.classList.add('readOnly');\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshISP,\r\n getMarkup,\r\n showDeleteWarning,\r\n };\r\n})();\r\n","const planValidation = (function () {\r\n let planId;\r\n let workingSectionCase = 0;\r\n\r\n let assessmentValidationCheck = {\r\n workingNotWorking: [],\r\n sectionsApplicable: [],\r\n servicesAndSupports: {},\r\n servicesAndSupportsChecked: {\r\n 34: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 35: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 36: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 37: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 38: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 39: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 40: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n },\r\n hasASectionApplicable: true,\r\n workingSectionComplete: false,\r\n servicesAndSupportsError: false,\r\n complete: false\r\n };\r\n\r\n let IspValidationCheck = {\r\n complete: true,\r\n details: [],\r\n missingExperiences: [],\r\n missingReviews: [],\r\n planProgressSummary: false,\r\n outcome: [],\r\n selectedProviders: [],\r\n paidSupportsProviders: [],\r\n invalidProviders: [],\r\n contactSectionComplete: true,\r\n summaryRisksValidation: true\r\n };\r\n\r\n let contactsValidation = {\r\n importantPeople: true,\r\n importantPlaces: true,\r\n bestWayToConnect: true\r\n }\r\n\r\n const servicesAndSupportsQuestionIds = {\r\n noSupportQuestionIds: ['509', '526', '84', '95', '162', '500', '575'],\r\n paidSupportQuestionIds: [\r\n '631',\r\n '612',\r\n '637',\r\n '648',\r\n '663',\r\n '674',\r\n '689',\r\n '376',\r\n '395',\r\n '401',\r\n '412',\r\n '427',\r\n '438',\r\n '453',\r\n ],\r\n professionalReferralQuestionIds: [\r\n '693',\r\n '678',\r\n '667',\r\n '652',\r\n '641',\r\n '627',\r\n '616',\r\n '457',\r\n '442',\r\n '431',\r\n '416',\r\n '405',\r\n '391',\r\n '380',\r\n ],\r\n potentialOutcomeQuestionIds: [\r\n '510',\r\n '527',\r\n '541',\r\n '558',\r\n '576',\r\n '589',\r\n '85',\r\n '96',\r\n '163',\r\n '196',\r\n '242',\r\n '267',\r\n '336',\r\n '501',\r\n ],\r\n additionalSupportQuestionIds: {\r\n naturalSupportQuestionIds: [\r\n '624',\r\n '613',\r\n '638',\r\n '649',\r\n '664',\r\n '675',\r\n '690',\r\n '377',\r\n '388',\r\n '402',\r\n '413',\r\n '428',\r\n '439',\r\n '454',\r\n ],\r\n technologyQuestionIds: [\r\n '614',\r\n '625',\r\n '639',\r\n '650',\r\n '665',\r\n '676',\r\n '691',\r\n '378',\r\n '389',\r\n '403',\r\n '414',\r\n '429',\r\n '440',\r\n '455',\r\n ],\r\n communityQuestionIds: [\r\n '615',\r\n '626',\r\n '640',\r\n '651',\r\n '666',\r\n '677',\r\n '692',\r\n '379',\r\n '390',\r\n '404',\r\n '415',\r\n '430',\r\n '441',\r\n '456',\r\n ],\r\n },\r\n };\r\n\r\n function setPlanId(newPlanId) {\r\n planId = newPlanId;\r\n }\r\n \r\n //* TOOLTIPS\r\n function createTooltip(message, attachedDiv) {\r\n attachedDiv.classList.add('tooltip');\r\n \r\n const tooltipText = document.createElement('div');\r\n tooltipText.classList.add('tooltiptext');\r\n tooltipText.innerHTML = message;\r\n \r\n attachedDiv.addEventListener('mousemove', event => {\r\n const x = event.clientX;\r\n const y = event.clientY;\r\n \r\n tooltipText.style.left = `${x}px`;\r\n tooltipText.style.top = `${y}px`;\r\n });\r\n \r\n attachedDiv.appendChild(tooltipText);\r\n }\r\n \r\n //* ASSESSMENT INITIAL CHECK\r\n function returnAssessmentValidationData() {\r\n return assessmentValidationCheck;\r\n }\r\n\r\n async function getAssessmentValidation(planId) {\r\n // reset the values of the validation for each consumer\r\n assessmentValidationCheck = {\r\n workingNotWorking: [],\r\n sectionsApplicable: [],\r\n servicesAndSupports: {},\r\n servicesAndSupportsChecked: {\r\n 34: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 35: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 36: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 37: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 38: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 39: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 40: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n },\r\n hasASectionApplicable: true,\r\n workingSectionComplete: false,\r\n servicesAndSupportsError: false,\r\n complete: false\r\n };\r\n // Gathers the data from the database\r\n servicesAndSupportsData = await planValidationAjax.getAssessmentValidationData(planId);\r\n \r\n // WORKING/NOT WORKING\r\n assessmentValidationCheck.workingNotWorking = servicesAndSupportsData.workingNotWorking;\r\n workingSectionCheck(assessmentValidationCheck);\r\n \r\n // SECTIONS APPLICABLE\r\n // check each section fo rthe plan and see if any are selected, if at least one is selected, return true\r\n assessmentValidationCheck.sectionsApplicable = servicesAndSupportsData.sectionsApplicable;\r\n let hasASectionApplicable = assessmentValidationCheck.sectionsApplicable.some(\r\n obj => obj.applicable === 'Y',\r\n );\r\n\r\n // In the case the ANYW_ISP_Sections_Applicable table is missing the planId\r\n if (assessmentValidationCheck.sectionsApplicable.length === 0) {\r\n hasASectionApplicable = true;\r\n }\r\n \r\n // if no section is checked, set value to false\r\n if (!hasASectionApplicable) {\r\n assessmentValidationCheck.hasASectionApplicable = false;\r\n }\r\n \r\n // SERVICES AND SUPPORTS\r\n // Count occurrences of assessmentAreaId in each service and supports category\r\n assessmentValidationCheck.servicesAndSupports.additionalSupportCounts = countOccurrences(servicesAndSupportsData.additionalSupport);\r\n assessmentValidationCheck.servicesAndSupports.paidSupportCounts = countOccurrences(servicesAndSupportsData.paidSupport);\r\n assessmentValidationCheck.servicesAndSupports.professionalReferralCounts = countOccurrences(servicesAndSupportsData.professionalReferral);\r\n assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts = countOccurrences(servicesAndSupportsData.assessmentOutcomes);\r\n \r\n // check if all sections are complete\r\n allAssessmentAreasComplete(assessmentValidationCheck);\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n function allAssessmentAreasComplete(assessmentValidationCheck) {\r\n if (assessmentValidationCheck.hasASectionApplicable === true && assessmentValidationCheck.workingSectionComplete === true && assessmentValidationCheck.servicesAndSupportsError === false) {\r\n assessmentValidationCheck.complete = true;\r\n } else {\r\n assessmentValidationCheck.complete = false;\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT DATA UPDATE CHECK\r\n function updatedAssessmenteValidation() {\r\n const workingAlertDivCase1 = document.getElementById('workingAlert1');\r\n const workingAlertDivCase2 = document.getElementById('workingAlert2');\r\n const tocAlertDiv = document.getElementById('tocAlert');\r\n const tocMobileAlertDiv = document.getElementById('tocAlertMobile');\r\n const navAlertDiv = document.getElementById('navAlertAssessment');\r\n \r\n //Check working/ not working section\r\n workingSectionCheck(assessmentValidationCheck);\r\n \r\n //check sections applicable\r\n tocAssessmentCheck(assessmentValidationCheck);\r\n \r\n //Check services and supports\r\n servicesAndSupportsAllVisibleSectionsCheck(assessmentValidationCheck);\r\n updateTocSectionHeaders(assessmentValidationCheck);\r\n\r\n //Check status of Assessment page\r\n allAssessmentAreasComplete(assessmentValidationCheck);\r\n \r\n // Set alert divs display value\r\n // If a section is not applied, show the alerts in the Table of Contents and the Nav\r\n if (!assessmentValidationCheck.hasASectionApplicable) {\r\n if (tocAlertDiv) {\r\n tocAlertDiv.style.display = 'flex';\r\n }\r\n if (tocMobileAlertDiv) {\r\n tocMobileAlertDiv.style.display = 'flex';\r\n }\r\n } else {\r\n if (tocAlertDiv) {\r\n tocAlertDiv.style.display = 'none';\r\n }\r\n if (tocMobileAlertDiv) {\r\n tocMobileAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n // If the working/not working section does not have a completed row, show the alert\r\n if (!assessmentValidationCheck.workingSectionComplete) {\r\n if (workingSectionCase === 1) {\r\n if (workingAlertDivCase1) {\r\n workingAlertDivCase1.style.display = 'inline-block';\r\n workingAlertDivCase2.style.display = 'none';\r\n }\r\n }\r\n else if (workingSectionCase === 2) {\r\n if (workingAlertDivCase2) {\r\n workingAlertDivCase2.style.display = 'inline-block';\r\n workingAlertDivCase1.style.display = 'none';\r\n }\r\n }\r\n } else {\r\n if (workingAlertDivCase1) {\r\n workingAlertDivCase1.style.display = 'none';\r\n }\r\n if (workingAlertDivCase2) {\r\n workingAlertDivCase2.style.display = 'none';\r\n }\r\n }\r\n \r\n // If the assessment page has an error, show the nav alert\r\n if (assessmentValidationCheck.complete === false) {\r\n if (navAlertDiv) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n } else {\r\n if (navAlertDiv) {\r\n navAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT WORKING/NOT WORKING\r\n function workingSectionCheck(assessmentValidationCheck) {\r\n const groupedByRow = {};\r\n const hasValue605Array = [];\r\n const hasValue606Array = [];\r\n\r\n // Group objects by row\r\n assessmentValidationCheck.workingNotWorking.forEach(obj => {\r\n if (!groupedByRow[obj.answerRow]) {\r\n groupedByRow[obj.answerRow] = [];\r\n }\r\n groupedByRow[obj.answerRow].push(obj);\r\n });\r\n\r\n // Check for Question 607 within each row having values for 605 or 606\r\n for (const row in groupedByRow) {\r\n let hasValue605 = false;\r\n let hasValue606 = false;\r\n let hasValue607 = false;\r\n\r\n groupedByRow[row].forEach(obj => {\r\n if (obj.questionNumber === \"Question 605\" && obj.answer) {\r\n hasValue605 = true;\r\n }\r\n if (obj.questionNumber === \"Question 606\" && obj.answer) {\r\n hasValue606 = true;\r\n }\r\n if (obj.questionNumber === \"Question 607\" && obj.answer) {\r\n hasValue607 = true;\r\n }\r\n });\r\n\r\n // If either 605 or 606 has value, then 607 must also have a value\r\n if ((hasValue605 || hasValue606) && !hasValue607) {\r\n assessmentValidationCheck.workingSectionComplete = false;\r\n workingSectionCase = 2; \r\n return assessmentValidationCheck;\r\n }\r\n\r\n // Check if all three questions are blank\r\n if (!hasValue605 && !hasValue606) {\r\n assessmentValidationCheck.workingSectionComplete = false;\r\n workingSectionCase = 2;\r\n return assessmentValidationCheck;\r\n }\r\n\r\n hasValue605Array.push(hasValue605);\r\n hasValue606Array.push(hasValue606);\r\n }\r\n\r\n // Check if there's at least one row with both 605 and 606 having values\r\n const hasValue605 = hasValue605Array.some(val => val);\r\n const hasValue606 = hasValue606Array.some(val => val);\r\n if (!hasValue605 || !hasValue606) {\r\n assessmentValidationCheck.workingSectionComplete = false;\r\n workingSectionCase = 1;\r\n return assessmentValidationCheck;\r\n }\r\n\r\n assessmentValidationCheck.workingSectionComplete = true;\r\n workingSectionCase = 0; // Set workingSectionCase to 0 if all conditions pass\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function returnWorkingSectionCaseValue() {\r\n return workingSectionCase;\r\n }\r\n\r\n async function updateAnswerWorkingSection(planId) {\r\n const check = await getAssessmentValidation(planId);\r\n\r\n workingSectionCheck(check);\r\n \r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation();\r\n //return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT TABLE OF CONTENTS\r\n function tocAssessmentCheck(assessmentValidationCheck) {\r\n const hasASectionApplicable = assessmentValidationCheck.sectionsApplicable.some(\r\n obj => obj.applicable === 'Y',\r\n );\r\n \r\n if (hasASectionApplicable) {\r\n assessmentValidationCheck.hasASectionApplicable = true;\r\n } else {\r\n assessmentValidationCheck.hasASectionApplicable = false;\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n\r\n function updateTocSectionHeaders(assessmentValidationCheck) {\r\n for (let id = 34; id <= 40; id++) {\r\n let tocSectionHeader = document.getElementById(`${id}alert`);\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;\r\n \r\n if (\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport && paidSupportCount === 0) ||\r\n ((assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport || assessmentValidationCheck.servicesAndSupportsChecked[id].technology || assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource) && additionalSupportCount === 0) ||\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral && professionalReferralCounts === 0) ||\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome && potentialOutcomeCount === 0)\r\n ) {\r\n if (tocSectionHeader) {\r\n tocSectionHeader.style.display = 'inline-block';\r\n }\r\n } else {\r\n if (tocSectionHeader) {\r\n tocSectionHeader.style.display = 'none';\r\n }\r\n }\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT SERVICES AND SUPPORTS\r\n function servicesAndSupportsBtnCheck() {\r\n const idsToCheck = [34, 35, 36, 37, 38, 39, 40];\r\n\r\n idsToCheck.forEach(id => {\r\n let paidSupportBtn = document.getElementById(`paidSupportBtn${id}`);\r\n let additionalSupportBtn = document.getElementById(`additionalSupportBtn${id}`);\r\n let profRefBtn = document.getElementById(`profRefBtn${id}`);\r\n let outcomesBtn = document.getElementById(`outcomesBtn${id}`);\r\n\r\n // number of services and supports attached to each section\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;;\r\n\r\n // returns true if the section has been checked \r\n let paidSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport;\r\n let additionalSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport || assessmentValidationCheck.servicesAndSupportsChecked[id].technology || assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource;\r\n let professionalReferralChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral;\r\n let potentialOutcomeChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome;\r\n\r\n // Add error class to buttons that are checked and have 0 outcomes attached to them\r\n // if the btn already has the error and no longer meets criteria to contain the error class, remove the error class\r\n const sections = [\r\n {\r\n checkboxChecked: paidSupportChecked,\r\n count: paidSupportCount,\r\n button: paidSupportBtn,\r\n errorText: 'Add Paid Support',\r\n },\r\n {\r\n checkboxChecked: additionalSupportChecked,\r\n count: additionalSupportCount,\r\n button: additionalSupportBtn,\r\n errorText: 'Add Additional Support',\r\n },\r\n {\r\n checkboxChecked: professionalReferralChecked,\r\n count: professionalReferralCounts,\r\n button: profRefBtn,\r\n errorText: 'Add Professional Referral',\r\n },\r\n {\r\n checkboxChecked: potentialOutcomeChecked,\r\n count: potentialOutcomeCount,\r\n button: outcomesBtn,\r\n errorText: 'Add Outcome',\r\n },\r\n ];\r\n \r\n assessmentValidationCheck.servicesAndSupportsError = false;\r\n \r\n sections.forEach(section => {\r\n if (section.checkboxChecked && section.count === 0) {\r\n section.button.classList.add('error');\r\n assessmentValidationCheck.servicesAndSupportsError = true;\r\n } else {\r\n if (section.button.classList.contains('error')) {\r\n section.button.classList.remove('error');\r\n }\r\n section.button.innerHTML = `${section.errorText} (${section.count})`;\r\n }\r\n });\r\n\r\n });\r\n\r\n // if any of the classes have an error then add the alert if it is not already there\r\n if (assessmentValidationCheck.servicesAndSupportsError === true) {\r\n assessmentValidationCheck.complete = false;\r\n }\r\n\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function servicesAndSupportsAllVisibleSectionsCheck(assessmentValidationCheck) {\r\n const allSections = document.getElementsByClassName('assessment__section');\r\n\r\n // Get only the sections that are selected on the assessment\r\n const applicableSections = Array.from(allSections).filter(section => !section.classList.contains('nonApplicable'));\r\n \r\n // Check if any of the buttons within the applicable sections have the class \"error\"\r\n const hasError = Array.from(applicableSections).some(section => {\r\n const buttons = section.querySelectorAll('.sectionFooter .btn.btn--secondary.btn--contained');\r\n return Array.from(buttons).some(button => button.classList.contains('error'));\r\n });\r\n \r\n if (hasError) {\r\n assessmentValidationCheck.servicesAndSupportsError = true;\r\n } else {\r\n // No buttons with the class \"error\" found\r\n assessmentValidationCheck.servicesAndSupportsError = false;\r\n }\r\n\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function findQuestionIdCategory(questionId) {\r\n if (servicesAndSupportsQuestionIds.noSupportQuestionIds.includes(questionId)) {\r\n return 'noSupport';\r\n } else if (servicesAndSupportsQuestionIds.paidSupportQuestionIds.includes(questionId)) {\r\n return 'paidSupport';\r\n } else if (\r\n servicesAndSupportsQuestionIds.professionalReferralQuestionIds.includes(questionId)\r\n ) {\r\n return 'professionalReferral';\r\n } else if (servicesAndSupportsQuestionIds.potentialOutcomeQuestionIds.includes(questionId)) {\r\n return 'potentialOutcome';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.naturalSupportQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'naturalSupport';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.technologyQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'technology';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.communityQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'communityResource';\r\n } else {\r\n return 'Variable not found in the object';\r\n }\r\n }\r\n \r\n function countOccurrences(array) {\r\n const counts = {};\r\n array.forEach(item => {\r\n const assessmentAreaId = item.assessmentAreaId;\r\n counts[assessmentAreaId] = (counts[assessmentAreaId] || 0) + 1;\r\n });\r\n return counts;\r\n }\r\n\r\n function updateSectionApplicability(sectionID, applied) {\r\n // Find the object with matching sectionId and obtain the index\r\n const matchingIndex = assessmentValidationCheck.sectionsApplicable.findIndex(\r\n obj => obj.sectionId === sectionID,\r\n );\r\n \r\n // Update the value if a match is found\r\n if (matchingIndex !== -1) {\r\n assessmentValidationCheck.sectionsApplicable[matchingIndex].applicable = applied;\r\n // Toggle the value between 'Y' and 'N'\r\n assessmentValidationCheck.sectionsApplicable[matchingIndex].applicable = applied;\r\n (assessmentValidationCheck.sectionsApplicable[matchingIndex]).applicable === 'Y' ? 'N' : 'Y';\r\n }\r\n \r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n }\r\n\r\n function updateAssessmentValidationSection(key, value) {\r\n assessmentValidationCheck[key] = value;\r\n\r\n updatedAssessmenteValidation();\r\n }\r\n\r\n function updateAssessmentValidationProperty(sectionId, questionIdCategory, value) {\r\n assessmentValidationCheck.servicesAndSupportsChecked[sectionId][questionIdCategory] = value;\r\n\r\n updatedAssessmenteValidation();\r\n }\r\n\r\n //* ISP\r\n async function ISPValidation(planId) {\r\n // Set state of check to neutral before running to remove cached data\r\n IspValidationCheck = {\r\n complete: true,\r\n details: [],\r\n missingExperiences: [],\r\n missingReviews: [],\r\n planProgressSummary: false,\r\n outcome: [],\r\n selectedProviders: [],\r\n paidSupportsProviders: [],\r\n invalidProviders: []\r\n };\r\n\r\n outcomesData = await planOutcomesAjax.getPlanSpecificOutcomes({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n \r\n IspValidationCheck.outcomesData = outcomesData;\r\n\r\n for (const item of outcomesData.planOutcomeExperiences) {\r\n for (const responsibility of item.planExperienceResponsibilities) {\r\n const responsibleProvider = responsibility.responsibleProvider;\r\n (IspValidationCheck.selectedProviders).push(responsibleProvider);\r\n }\r\n }\r\n\r\n const paidSupportsIds = outcomesData.paidSupports.map(obj => obj.providerId);\r\n IspValidationCheck.paidSupportsProviders = paidSupportsIds;\r\n\r\n const invalidProviders = (IspValidationCheck.selectedProviders).filter(number => \r\n number !== \"\" && \r\n number !== \"%\" && \r\n !(IspValidationCheck.paidSupportsProviders).includes(number) && \r\n !IspValidationCheck.outcomesData.planOutcomeExperiences.some(outcome =>\r\n Object.values(outcome.planExperienceResponsibilities).some(responsibility =>\r\n responsibility.responsibleProvider === number &&\r\n responsibility.isSalesforceLocation === 'True'\r\n )\r\n )\r\n );\r\n IspValidationCheck.invalidProviders = invalidProviders;\r\n \r\n // get a list of the unique outcomeIds\r\n var uniqueOutcomeIds = Array.from(new Set(outcomesData.planOutcome.map(obj => obj.outcomeId)));\r\n \r\n // if any outcome is missing the 'Details to Know' or 'Outcome' section, return false on the validation check\r\n for (let i = 0; i < outcomesData.planOutcome.length; i++) {\r\n if (outcomesData.planOutcome[i].details === '') {\r\n IspValidationCheck.details.push(outcomesData.planOutcome[i].outcomeId);\r\n }\r\n if (outcomesData.planOutcome[i].outcome === '') {\r\n IspValidationCheck.outcome.push(outcomesData.planOutcome[i].outcomeId);\r\n }\r\n }\r\n \r\n for (let i = 0; i < outcomesData.planReviews.length; i++) {\r\n if (outcomesData.planReviews[i].whenToCheckIn === '') {\r\n IspValidationCheck.missingReviews.push(outcomesData.planReviews[i].outcomeId);\r\n //IspValidationCheck.complete = false;\r\n }\r\n }\r\n\r\n // makes list of all the outcomeIds from the plan outcome experiences and reviews\r\n const outcomeExperienceOutcomeIds = outcomesData.planOutcomeExperiences.map(\r\n obj => obj.outcomeId,\r\n );\r\n const outcomeReviewOutcomeIds = outcomesData.planReviews.map(obj => obj.outcomeId);\r\n \r\n // checks for outcomeIds that may be missing in experiences and reviews (if values are returned, that outcome is missing data)\r\n const missingOutcomeExperiences = uniqueOutcomeIds.filter(\r\n num => !outcomeExperienceOutcomeIds.includes(num),\r\n );\r\n const missingOutcomeReviews = uniqueOutcomeIds.filter(\r\n num => !outcomeReviewOutcomeIds.includes(num),\r\n );\r\n \r\n IspValidationCheck.missingExperiences = missingOutcomeExperiences;\r\n // IspValidationCheck.missingReviews = missingOutcomeReviews;\r\n IspValidationCheck.missingReviews.push(...missingOutcomeReviews) ;\r\n \r\n // if an outcome is missing a review or experience, return false on the validation check\r\n if (missingOutcomeReviews.length > 0 || missingOutcomeExperiences.length > 0) {\r\n IspValidationCheck.complete = false;\r\n }\r\n \r\n // check the plan progress summary value\r\n if (outcomesData.planProgressSummary[0]) {\r\n IspValidationCheck.planProgressSummary = (outcomesData.planProgressSummary[0].progressSummary !== '');\r\n }\r\n\r\n if (IspValidationCheck.outcomesData.planOutcome.length < 1) {\r\n IspValidationCheck.planProgressSummary = true;\r\n }\r\n\r\n // if there are invalid providers, return false on the validaton check\r\n if (IspValidationCheck.invalidProviders.length > 0) {\r\n IspValidationCheck.complete = false;\r\n } \r\n \r\n // checks if all required data on the page has been filled out\r\n checkAllOutcomesComplete(IspValidationCheck);\r\n\r\n ispValidationContactCheck();\r\n \r\n await summaryRisksValidationCheck();\r\n\r\n //IspValidationCheck = validationCheck;\r\n return IspValidationCheck;\r\n }\r\n\r\n function returnIspValidation() {\r\n return IspValidationCheck;\r\n }\r\n // sets the alerts status based on the completion of the ISP outcomes data\r\n function updatedIspOutcomesSetAlerts(validationCheck) {\r\n //checkExperienceProviders(validationCheck);\r\n checkAllOutcomesComplete(validationCheck);\r\n//\r\n // ISP Main Nav and ISP Outcomes Tab \r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const outcomesNav = document.getElementById('outcomesAlert');\r\n\r\n //if (validationCheck.complete === true) {\r\n if (validationCheck.missingExperiences.length > 0 || validationCheck.missingReviews.length > 0) {\r\n outcomesNav.style.display = 'block';\r\n ISPAlertDiv.style.display = 'flex';\r\n } else {\r\n outcomesNav.style.display = 'none';\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n\r\n\r\n return validationCheck;\r\n }\r\n \r\n // Checks if all fields on the ISP outcomes are completed\r\n function checkAllOutcomesComplete(validationCheck) {\r\n // if (validationCheck.outcomesData.planOutcome.length > 0) {\r\n // validationCheck.planProgressSummary = true;\r\n // }\r\n \r\n validationCheck.complete =\r\n validationCheck.details.length === 0 &&\r\n validationCheck.missingExperiences.length === 0 &&\r\n validationCheck.missingReviews.length === 0 &&\r\n validationCheck.planProgressSummary &&\r\n validationCheck.outcome.length === 0 &&\r\n //outcomesData.planOutcome.length > 0 &&\r\n validationCheck.invalidProviders.length === 0;\r\n\r\n return validationCheck;\r\n }\r\n \r\n // ISP DETAILS TO KNOW\r\n // adds the outcomeId to a list of unfinished outcomes if the value is an empty string, if the value is not empty it will remove that id from the list\r\n function updateOutcomeDetails(outcomeId, validationCheck, emptyString) {\r\n if (emptyString) {\r\n validationCheck.details.push(outcomeId);\r\n } else {\r\n // removes this outcome id from the details array in the validation check\r\n validationCheck.details = validationCheck.details.filter(id => id !== outcomeId);\r\n }\r\n \r\n return validationCheck;\r\n }\r\n\r\n // ISP OUTCOME FIELD\r\n // adds the outcomeId to a list of unfinished outcomes if the value is an empty string, if the value is not empty it will remove that id from the list\r\n function updateOutcome(outcomeId, validationCheck, emptyString) {\r\n if (emptyString) {\r\n validationCheck.outcome.push(outcomeId);\r\n } else {\r\n // Remove this outcome ID from the outcome array in the validation check\r\n validationCheck.outcome = validationCheck.outcome.filter(id => id !== outcomeId);\r\n }\r\n \r\n return validationCheck;\r\n }\r\n\r\n // ISP REVIEWS\r\n //checks if the outcome has a review, if not, set the alert next to the add review button\r\n function reviewsValidationCheck(validationCheck, outcomeId, alertDiv) {\r\n const display = validationCheck.missingReviews.includes(outcomeId) ? 'flex' : 'none';\r\n alertDiv.style.display = display;\r\n }\r\n \r\n //ISP EXPERIENCES\r\n //checks if the outcome has an experience, if not, set the alert next to the add experience button\r\n function experiencesValidationCheck(validationCheck, outcomeId, alertDiv) {\r\n // Checks each experience and compares repsonsible party Ids with the invalid providers array\r\n function checkResponsibleProvider(outcomesData, outcomeID, presetArray) {\r\n for (const planOutcomeExperience of outcomesData.planOutcomeExperiences) {\r\n if (planOutcomeExperience.outcomeId === outcomeID) {\r\n for (const experienceResponsibility of planOutcomeExperience.planExperienceResponsibilities) {\r\n if (presetArray.includes(experienceResponsibility.responsibleProvider)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const invalidProvidersCheck = checkResponsibleProvider(validationCheck.outcomesData, outcomeId, validationCheck.invalidProviders);\r\n\r\n const display = (validationCheck.missingExperiences.includes(outcomeId) || invalidProvidersCheck) ? 'flex' : 'none';\r\n alertDiv.style.display = display;\r\n //validationCheck.invalidProviders.length > 0\r\n }\r\n\r\n //ISP CONTACTS\r\n async function contactsValidationCheck() {\r\n const contactData = await planValidationAjax.getContactValidationData(planId);\r\n\r\n const bestWayToConnect = contactData[0]?.bestWayToConnect || '';\r\n \r\n const importantPeopleData = contactData.map(item => ({\r\n type: item.importantPeopleType,\r\n typeOther: item.importantPeopleTypeOther,\r\n }));\r\n \r\n const importantPlacesData = contactData.map(item => ({\r\n type: item.importantPlacesType,\r\n typeOther: item.importantPlacesTypeOther,\r\n }));\r\n\r\n checkImportantPeople(importantPeopleData);\r\n checkImportantPlaces(importantPlacesData);\r\n checkBestWayToConnect(bestWayToConnect);\r\n\r\n checkContactsValidation();\r\n }\r\n\r\n function checkImportantPeople(importantPeopleData) {\r\n // Loop through each item in the array\r\n for (const contact of importantPeopleData) {\r\n if (contact.type === 'Other' && contact.typeOther === '') {\r\n contactsValidation.importantPeople = false;\r\n return;\r\n }\r\n }\r\n\r\n contactsValidation.importantPeople = true;\r\n }\r\n\r\n function checkImportantPlaces(importantPlacesData) {\r\n // Loop through each item in the array\r\n for (const place of importantPlacesData) {\r\n if (place.type === 'Other' && place.typeOther === '') {\r\n contactsValidation.importantPlaces = false;\r\n return;\r\n }\r\n }\r\n\r\n contactsValidation.importantPlaces = true;\r\n }\r\n\r\n function checkBestWayToConnect(bestWayToConnect) {\r\n if (bestWayToConnect === '') {\r\n contactsValidation.bestWayToConnect = false;\r\n return;\r\n }\r\n\r\n contactsValidation.bestWayToConnect = true;\r\n }\r\n\r\n function getContactValidation() {\r\n return contactsValidation;\r\n }\r\n\r\n function checkContactsValidation() {\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const alertDiv = document.querySelector('.contactsAlertDiv');\r\n const bestWayToConnectAlertDiv = document.querySelector('.bestWaytoConnectAlert')\r\n\r\n // Check if the alertDiv exists and if any validation condition is false\r\n if (alertDiv && (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect)) {\r\n alertDiv.style.display = 'flex';\r\n } else if (alertDiv) {\r\n alertDiv.style.display = 'none';\r\n }\r\n\r\n if (bestWayToConnectAlertDiv && !contactsValidation.bestWayToConnect) {\r\n bestWayToConnectAlertDiv.style.display = 'flex';\r\n } else if (bestWayToConnectAlertDiv) {\r\n bestWayToConnectAlertDiv.style.display = 'none';\r\n }\r\n\r\n if (ISPAlertDiv && (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect)) {\r\n ISPAlertDiv.style.display = 'flex';\r\n } else if (ISPAlertDiv) {\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n\r\n // sets isp validation check variable value regardless of UI\r\n ispValidationContactCheck();\r\n }\r\n\r\n function ispValidationContactCheck() {\r\n if (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect) {\r\n IspValidationCheck.contactSectionComplete = false;\r\n } else {\r\n IspValidationCheck.contactSectionComplete = true;\r\n }\r\n }\r\n\r\n // checks if the provider selected for the experience is also in the paid supports\r\n function checkExperienceProviders(validationCheck) {\r\n // Extract the first values from the second array objects\r\n const secondValues = (validationCheck.paidSupportsProviders).map(obj => obj.value);\r\n\r\n // Create a list of values from the first array that don't exist in the second array\r\n const invalidProviders = validationCheck.selectedProviders.filter(value =>\r\n value !== '' &&\r\n value !== '%' &&\r\n !secondValues.includes(value) &&\r\n !validationCheck.outcomesData.planOutcomeExperiences.some(outcome =>\r\n Object.values(outcome.planExperienceResponsibilities).some(responsibility =>\r\n responsibility.responsibleProvider === value &&\r\n responsibility.isSalesforceLocation === 'True'\r\n )\r\n )\r\n ); \r\n \r\n validationCheck.invalidProviders = invalidProviders;\r\n return validationCheck;\r\n }\r\n\r\n function checkExperiencesAfterAddingNewPaidSupport(validationCheck) {\r\n // Find all divs with classname 'experiencesAlert'\r\n const divs = document.querySelectorAll('.experiencesAlert');\r\n\r\n // Loop over the resulting array and run your function on each div\r\n if (divs.length > 0) {\r\n divs.forEach(div => {\r\n // Extract the number from the id using a regular expression\r\n const regex = /experienceAlert(\\d{1,5})/;\r\n const matches = div.id.match(regex);\r\n const number = matches ? Number(matches[1]) : null;\r\n\r\n // Check each div to see if the alert is needed or not\r\n experiencesValidationCheck(validationCheck, number, div);\r\n });\r\n }\r\n }\r\n\r\n // Summary Risks\r\n async function summaryRisksValidationCheck() {\r\n let summaryValidationData = await planValidationAjax.getSummaryRiskValidationData(planId);\r\n \r\n let groupedByQuestionSetId = summaryValidationData.reduce((acc, obj) => {\r\n const key = obj.QuestionSetId;\r\n (acc[key] ? acc[key] : (acc[key] = [])).push(obj);\r\n return acc;\r\n }, {});\r\n \r\n // Check if any answer in the group is null or empty\r\n function hasNullOrEmptyAnswer(group) {\r\n return group.some(item => item.Answer === '' || item.Answer === null || item.Answer === '%');\r\n }\r\n \r\n // Iterate over each group and perform the necessary checks\r\n for (let group of Object.values(groupedByQuestionSetId)) {\r\n // Check if there is at least one non-empty answer for the specified question text\r\n let hasNonEmptyAnswer = group.some(item => item.Answer !== '' && item.QuestionText === 'What is the risk, what it looks like, where it occurs:');\r\n if (hasNonEmptyAnswer) {\r\n // If there's a non-empty answer for the specified question text,\r\n // check if any other answer in the group is null or empty\r\n let hasNullOrEmpty = hasNullOrEmptyAnswer(group);\r\n if (hasNullOrEmpty) {\r\n // If any answer is null or empty, set the flag and exit the function\r\n IspValidationCheck.summaryRisksValidation = false;\r\n return;\r\n }\r\n }\r\n }\r\n \r\n // If no null or empty answers were found, set the flag to true\r\n IspValidationCheck.summaryRisksValidation = true;\r\n }\r\n \r\n\r\n function returnSummaryRisksValidation() {\r\n return IspValidationCheck.summaryRisksValidation;\r\n }\r\n\r\n function setSummaryRiskValidation(hasErrors) {\r\n IspValidationCheck.summaryRisksValidation = hasErrors;\r\n }\r\n\r\n async function alertCheckSummaryRisksValidation() {\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const summaryAlertDiv = document.querySelector('.summaryAlertDiv');\r\n\r\n if (summaryAlertDiv && !IspValidationCheck.summaryRisksValidation) {\r\n summaryAlertDiv.style.display = 'flex';\r\n } else if (summaryAlertDiv) {\r\n summaryAlertDiv.style.display = 'none';\r\n }\r\n\r\n const isEverythingComplete = await ISPValidation(planId);\r\n\r\n if (ISPAlertDiv && (!isEverythingComplete.complete || !isEverythingComplete.contactSectionComplete || !isEverythingComplete.summaryRisksValidation)) {\r\n ISPAlertDiv.style.display = 'flex';\r\n } else if (ISPAlertDiv) {\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n async function init(newPlanId) {\r\n planId = newPlanId;\r\n\r\n //await summaryRisksValidationCheck(planId);\r\n\r\n await contactsValidationCheck(planId);\r\n \r\n await ISPValidation(planId);\r\n \r\n await getAssessmentValidation(planId);\r\n }\r\n \r\n return {\r\n setPlanId,\r\n createTooltip,\r\n returnAssessmentValidationData,\r\n getAssessmentValidation,\r\n updateTocSectionHeaders,\r\n updatedAssessmenteValidation,\r\n updateSectionApplicability,\r\n updateAssessmentValidationSection,\r\n updateAssessmentValidationProperty,\r\n returnWorkingSectionCaseValue,\r\n ISPValidation,\r\n returnIspValidation,\r\n checkAllOutcomesComplete,\r\n updatedIspOutcomesSetAlerts,\r\n reviewsValidationCheck,\r\n experiencesValidationCheck,\r\n workingSectionCheck,\r\n updateAnswerWorkingSection,\r\n tocAssessmentCheck,\r\n findQuestionIdCategory,\r\n servicesAndSupportsBtnCheck,\r\n updateOutcome,\r\n updateOutcomeDetails,\r\n checkExperienceProviders,\r\n checkExperiencesAfterAddingNewPaidSupport,\r\n contactsValidationCheck,\r\n getContactValidation,\r\n returnSummaryRisksValidation,\r\n setSummaryRiskValidation,\r\n alertCheckSummaryRisksValidation,\r\n summaryRisksValidationCheck,\r\n init,\r\n };\r\n })();","const planValidationAjax = (function () {\r\n async function getAssessmentValidationData(planId) {\r\n // string token, anywAssessmentId\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAssessmentValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getContactValidationData(planId) {\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n \r\n return data.getContactValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getSummaryRiskValidationData(planId) {\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSummaryRiskValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n \r\n return data.getSummaryRiskValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n \r\n return {\r\n getAssessmentValidationData,\r\n getContactValidationData,\r\n getSummaryRiskValidationData\r\n };\r\n })();","const planWorkflow = (() => {\r\n let selectedWorkflowForms = [];\r\n function getProcessId(planType) {\r\n return planType === 'Revision' || planType === 'r'\r\n ? WorkflowProcess.CONSUMER_PLAN_REVISION\r\n : WorkflowProcess.CONSUMER_PLAN_ANNUAL;\r\n }\r\n async function getWorkflowList(processId, planId) {\r\n const wfvData = await WorkflowViewerAjax.getManualWorkflowList({\r\n token: $.session.Token,\r\n processId,\r\n referenceId: planId ? planId : 0,\r\n notPlan: 'f'\r\n });\r\n\r\n workflowListData = wfvData;\r\n\r\n return wfvData;\r\n }\r\n\r\n // Workflow List\r\n function buildWorkflowList(wfvData) {\r\n const workflowList = document.createElement('div');\r\n workflowList.classList.add('workflowList');\r\n\r\n wfvData.forEach(obj => {\r\n // description: \"A manually inserted workflow\"\r\n // templateName: \"A Manual Workflow\"\r\n // workflowProcessId: \"2\"\r\n // workflowTemplateId: \"3\"\r\n const wfvItem = document.createElement('div');\r\n wfvItem.classList.add('workflowListItem');\r\n wfvItem.setAttribute('data-template-id', obj.workflowTemplateId);\r\n wfvItem.innerHTML = `

    ${obj.templateName}

    ${obj.description}

    `;\r\n workflowList.appendChild(wfvItem);\r\n });\r\n\r\n return workflowList;\r\n }\r\n\r\n // Workflow Form List\r\n function buildWorkflowFormList(formListData) {\r\n selectedWorkflowForms = [];\r\n\r\n const workflowFormList = document.createElement('div');\r\n workflowFormList.classList.add('workflowFormList');\r\n\r\n for (let i = 0; i < formListData.length; i++) {\r\n //formListData.forEach(obj => {\r\n if (i === 0) {\r\n const formHeader = document.createElement('div');\r\n formHeader.classList.add('workflowFormHeader');\r\n formHeader.innerHTML = `

    ${formListData[i].wfName}

    `;\r\n workflowFormList.appendChild(formHeader);\r\n } else if (formListData[i].wfName !== formListData[i - 1].wfName) {\r\n const formHeader = document.createElement('div');\r\n formHeader.classList.add('workflowFormHeader');\r\n formHeader.innerHTML = `

    ${formListData[i].wfName}

    `;\r\n workflowFormList.appendChild(formHeader);\r\n }\r\n const formItem = document.createElement('div');\r\n formItem.classList.add('workflowFormListItem');\r\n formItem.setAttribute('data-attachment-id', formListData[i].attachmentId);\r\n formItem.setAttribute('data-workflow-id', formListData[i].workflowId);\r\n formItem.setAttribute('data-WFTemplate-id', formListData[i].WFTemplateId);\r\n formItem.setAttribute('data-description', formListData[i].description);\r\n formItem.innerHTML = `   ${formListData[i].description}`;\r\n workflowFormList.appendChild(formItem);\r\n\r\n formItem.addEventListener('click', e => {\r\n // if (e.target.classList.contains('workflowFormListItem')) {\r\n const attachmentID = e.target.dataset.attachmentId;\r\n const workflowID = e.target.dataset.workflowId;\r\n const WFTemplateID = e.target.dataset.wftemplateId;\r\n const description = e.target.dataset.description;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflowForms.push({\r\n attachmentId: attachmentID,\r\n workflowId: workflowID,\r\n WFtemplateId: WFTemplateID,\r\n description: description,\r\n });\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflowForms = selectedWorkflowForms.filter(wf => wf.attachmentId !== attachmentID);\r\n }\r\n });\r\n }\r\n //});\r\n\r\n let test = selectedWorkflowForms;\r\n return workflowFormList;\r\n }\r\n\r\n function getselectedWorkFlowForms() {\r\n return selectedWorkflowForms;\r\n }\r\n\r\n function showWorkflowListPopup(wfvData, callback) {\r\n let selectedWorkflows = [];\r\n\r\n const wfvPopup = POPUP.build({\r\n classNames: ['workflowListPopup'],\r\n });\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select workflow(s) to attach.';\r\n wfvPopup.appendChild(title);\r\n\r\n if (wfvData && wfvData.length > 0) {\r\n const list = buildWorkflowList(wfvData);\r\n wfvPopup.appendChild(list);\r\n }\r\n\r\n const doneBtn = button.build({\r\n id: 'workflowContinueBtn',\r\n text: 'Continue',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['copySelectedBtn', 'disabled'],\r\n classNames: 'copySelectedBtn',\r\n callback: () => (callback ? callback(selectedWorkflows) : null),\r\n });\r\n wfvPopup.appendChild(doneBtn);\r\n\r\n wfvPopup.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n }\r\n });\r\n PROGRESS__BTN.SPINNER.hide('annualRevisionDoneBtn');\r\n POPUP.show(wfvPopup);\r\n }\r\n\r\n async function addWorkflowPopup() {\r\n // PROGRESS__BTN.init();\r\n PROGRESS__BTN.SPINNER.show('workflow_addWorkflowBtn');\r\n const processId = getProcessId(plan.getCurrentPlanType());\r\n let selectedWorkflows = [];\r\n const planId = plan.getCurrentPlanId();\r\n\r\n const popup = POPUP.build({\r\n header: 'Select workflow(s) to attach.',\r\n id: 'workflow_addWorkflowPopup',\r\n });\r\n\r\n const wfvData = await getWorkflowList(processId, planId);\r\n if (wfvData && wfvData.length > 0) {\r\n const list = buildWorkflowList(wfvData);\r\n popup.appendChild(list);\r\n\r\n list.addEventListener('click', e => {\r\n if (e.target.classList.contains('workflowListItem')) {\r\n const templateID = e.target.dataset.templateId;\r\n\r\n if (!e.target.classList.contains('selected')) {\r\n e.target.classList.add('selected');\r\n selectedWorkflows.push(templateID);\r\n } else {\r\n e.target.classList.remove('selected');\r\n selectedWorkflows = selectedWorkflows.filter(wf => wf !== templateID);\r\n }\r\n\r\n selectedWorkflows.length > 0 ? doneBtn.classList.remove('disabled') : doneBtn.classList.add('disabled');\r\n }\r\n });\r\n }\r\n\r\n const doneBtn = button.build({\r\n id: 'addWorkflowDoneBtn',\r\n text: 'DONE',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n // PROGRESS__BTN.init();\r\n PROGRESS__BTN.SPINNER.show(doneBtn);\r\n cancelBtn.classList.add('disabled');\r\n const workflowIds = [];\r\n const planId = plan.getCurrentPlanId();\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n try {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: planId,\r\n peopleId: plan.getSelectedConsumer().id,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n\r\n const workflowMarkup = await plan.getWorkflowMarkup();\r\n const workflowDiv = document.getElementById('planWorkflow');\r\n workflowDiv.innerHTML = '';\r\n workflowDiv.appendChild(workflowMarkup);\r\n } catch (error) {\r\n console.error('error inserting workflows');\r\n }\r\n PROGRESS__BTN.SPINNER.hide(doneBtn);\r\n POPUP.hide(popup);\r\n successfulSave.show('Workflows Added');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n }, 1000);\r\n }\r\n // delay 2 seconds\r\n await new Promise(r => setTimeout(r, 2000));\r\n\r\n await displayWFwithMissingResponsibleParties(workflowIds);\r\n //overlay.show();//\r\n },\r\n });\r\n\r\n const cancelBtn = button.build({\r\n id: 'addWorkflowCancelBtn',\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => POPUP.hide(popup),\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n popup.appendChild(btnWrap);\r\n\r\n PROGRESS__BTN.SPINNER.hide('workflow_addWorkflowBtn');\r\n document.getElementById('workflow_addWorkflowBtn').innerText = 'Add Workflow(s)';\r\n POPUP.show(popup);\r\n }\r\n\r\n async function displayWFwithMissingResponsibleParties(workflowIds) {\r\n if (workflowIds.length == 0) return false;\r\n\r\n let strWorkflowIds = workflowIds.toString();\r\n const convertedstrWorkFlowIds = strWorkflowIds.replaceAll(',', '|');\r\n // convertedstrWorkFlowIds += '|';\r\n\r\n async function getWFwithMissingResponsibleParties(constrWorkFlowIds) {\r\n let responsibleData = await WorkflowViewerAjax.getWFwithMissingResponsibleParties({\r\n workflowIds: constrWorkFlowIds.toString(),\r\n });\r\n\r\n return responsibleData;\r\n }\r\n\r\n let responsibleData = await getWFwithMissingResponsibleParties(convertedstrWorkFlowIds);\r\n\r\n const workflowNames = [];\r\n if (responsibleData.length > 0) {\r\n for (let i = 0; i < responsibleData.length; i++) {\r\n workflowNames.push(responsibleData[i].name);\r\n }\r\n var strWorkflowNames = workflowNames.join(', ');\r\n missingResponsiblePartyAlert(strWorkflowNames);\r\n }\r\n }\r\n\r\n function missingResponsiblePartyAlert(workflowNames) {\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(alertPopup);\r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n var alertMessage = document.createElement('p');\r\n alertMessage.innerHTML =\r\n 'There are missing responsible party relationship assignments for the following new workflows: ' + workflowNames;\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n POPUP.show(alertPopup);\r\n }\r\n\r\n return {\r\n getProcessId,\r\n getWorkflowList,\r\n buildWorkflowList,\r\n buildWorkflowFormList,\r\n showWorkflowListPopup,\r\n getselectedWorkFlowForms,\r\n addWorkflowPopup,\r\n displayWFwithMissingResponsibleParties,\r\n };\r\n})();\r\n","const widgetSettings = (function () {\r\n let widgetSettingsPage;\r\n let sectionreorder = [];\r\n let updatedListOrder = [];\r\n let widgetsContainer;\r\n let newTable;\r\n\r\n //let sectionBody;\r\n const sections = {\r\n // pre existing, need new ids, idk what that'll do to existing data?\r\n 1: {\r\n id: 1,\r\n name: 'Case Note Productivity',\r\n settings: { productivityThreshold: 60, daysBack: 7, workHoursPerDay: 7 },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const that = this;\r\n const saveID = 1;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const group1 = document.createElement('div');\r\n group1.classList.add('group1');\r\n const group2 = document.createElement('div');\r\n group2.classList.add('group2');\r\n const percentSymb = document.createElement('p');\r\n percentSymb.innerText = '%';\r\n percentSymb.style.color = 'black';\r\n percentSymb.style.position = 'absolute';\r\n percentSymb.style.marginLeft = '252px';\r\n percentSymb.style.marginTop = '-99px';\r\n\r\n // build inputs\r\n const daysBackInput = input.build({\r\n id: 'cnProductivityDaysBack',\r\n label: 'Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '14' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const productivityThresholdPercentage = input.build({\r\n id: 'productivityThresholdPercentage',\r\n label: 'Productivity Threshold',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.productivityThreshold,\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'max', value: '100' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const workHoursPerDay = input.build({\r\n id: 'cnProductivityWorkHoursPerDay',\r\n label: 'Work Hours/Day',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.workHoursPerDay,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '24' },\r\n ],\r\n });\r\n const saveBtn = button.build({\r\n id: 'cnProductivitySave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n const newProductivity = parseInt(\r\n productivityThresholdPercentage.firstElementChild.value,\r\n );\r\n const newWorkHours = parseFloat(workHoursPerDay.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 14) {\r\n that.settings.daysBack = newDaysBack;\r\n }\r\n if (newProductivity >= 0 && newProductivity <= 100) {\r\n that.settings.productivityThreshold = newProductivity;\r\n }\r\n if (newWorkHours >= 0.1 && newWorkHours <= 24) {\r\n that.settings.workHoursPerDay = newWorkHours;\r\n }\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnProductivityBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-1');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n group1.appendChild(daysBackInput);\r\n group1.appendChild(workHoursPerDay);\r\n group2.appendChild(productivityThresholdPercentage);\r\n\r\n widgetBody.appendChild(group1);\r\n widgetBody.appendChild(group2);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n 2: {\r\n id: 2,\r\n name: 'My Case Load',\r\n settings: {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 2;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const viewNotesByOtherUsersCheckBox = input.buildCheckbox({\r\n text: 'View Notes Entered by Other Users',\r\n style: 'secondary',\r\n isChecked: that.settings.viewEnteredByOtherUsers === 'Y' ? true : false,\r\n });\r\n viewNotesByOtherUsersCheckBox.classList.add('settingsCheckBox');\r\n viewNotesByOtherUsersCheckBox.addEventListener('change', event => {\r\n if (event.target.checked && $.session.CaseNotesViewEntered) {\r\n that.settings.viewEnteredByOtherUsers = 'Y';\r\n } else {\r\n that.settings.viewEnteredByOtherUsers = 'N';\r\n }\r\n });\r\n\r\n const lastNoteDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Last Note Entered Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.lastNoteEnteredDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const reviewNotesDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Review Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.viewNotesDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n const saveBtn = button.build({\r\n id: 'cnCaseLoadSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // get input field values\r\n const newViewNotesDaysBack = parseInt(reviewNotesDaysBackInput.firstElementChild.value);\r\n const newLastNoteEnteredDaysBack = parseInt(\r\n lastNoteDaysBackInput.firstElementChild.value,\r\n );\r\n let newViewEnteredByOthers = 'N';\r\n if ($.session.CaseNotesViewEntered) {\r\n newViewEnteredByOthers = viewNotesByOtherUsersCheckBox.firstElementChild.checked\r\n ? 'Y'\r\n : 'N';\r\n }\r\n\r\n if (newViewNotesDaysBack >= 1 && newViewNotesDaysBack <= 60) {\r\n that.settings.viewNotesDaysBack = newViewNotesDaysBack;\r\n }\r\n if (newLastNoteEnteredDaysBack >= 1 && newLastNoteEnteredDaysBack <= 60) {\r\n that.settings.lastNoteEnteredDaysBack = newLastNoteEnteredDaysBack;\r\n }\r\n\r\n that.settings.viewEnteredByOtherUsers = newViewEnteredByOthers;\r\n\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnCaseLoadBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-2');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n if ($.session.CaseNotesViewEntered) {\r\n widgetBody.appendChild(viewNotesByOtherUsersCheckBox);\r\n } else {\r\n this.settings.viewEnteredByOtherUsers = 'N';\r\n }\r\n\r\n widgetBody.appendChild(viewNotesByOtherUsersCheckBox);\r\n widgetBody.appendChild(lastNoteDaysBackInput);\r\n widgetBody.appendChild(reviewNotesDaysBackInput);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n 3: {\r\n id: 3,\r\n name: 'Rejected Case Notes',\r\n settings: { daysBack: 60 },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 3;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const daysBackInput = input.build({\r\n id: 'cnRejectedDaysBack',\r\n label: 'Rejected Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '999' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const saveBtn = button.build({\r\n id: 'cnRejectedSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n console.log(that);\r\n // get input field values\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 999) {\r\n that.settings.daysBack = newDaysBack;\r\n }\r\n\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n }\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnRejectedBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-3');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(daysBackInput);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n daysBackInput.addEventListener('input', event => {\r\n if (event.target.value > 999) {\r\n daysBackInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n daysBackInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n return widgetBody;\r\n },\r\n },\r\n 4: {\r\n id: 4,\r\n name: 'Plan To-Do List',\r\n settings: { dueDate: 'today' },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 4;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const dueDateDropdown = dropdown.build({\r\n label: 'Due Date',\r\n style: 'secondary',\r\n dropdownId: 'dueDateDropdown',\r\n });\r\n dueDateDropdown.addEventListener('change', e => {\r\n that.settings.dueDate = e.target.value;\r\n });\r\n dropdown.populate(\r\n dueDateDropdown,\r\n [\r\n { id: 1, value: 'today', text: 'Today' },\r\n { id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n { id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n { id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n { id: 5, value: 'prior 30 days', text: 'Prior 30 Days' },\r\n ],\r\n that.settings.dueDate,\r\n );\r\n\r\n const saveBtn = button.build({\r\n id: 'wfPlanSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'wfPlanBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-4');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(dueDateDropdown);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n // new widgets\r\n 5: { id: 5, name: 'Custom Links', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 6: {\r\n id: 6,\r\n name: 'Absent Consumers',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 7: {\r\n id: 7,\r\n name: 'Location Progress Notes',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 8: {\r\n id: 8,\r\n name: 'Consumer Progress Notes',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 9: {\r\n id: 9,\r\n name: 'Day Service Time Clock',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 10: { id: 10, name: 'Hours Worked', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 11: {\r\n id: 11,\r\n name: 'Daily Services',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 12: { id: 12, name: 'Day Services', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 13: {\r\n id: 13,\r\n name: 'My Unapproved Time Entries',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 14: {\r\n id: 14,\r\n name: 'Time Entry Review',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 15: { id: 15, name: 'My Schedule', settings: {}, showHide: '', application: 'adv', order: 0, },\r\n 16: {\r\n id: 16,\r\n name: 'Incident Tracking',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 17: {\r\n id: 17,\r\n name: 'Plans Missing Signatures',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 18: {\r\n id: 18,\r\n name: 'Money Management',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 19: {\r\n id: 19,\r\n name: 'System Messages',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 20: {\r\n id: 20,\r\n name: 'Roster To-Do List',\r\n settings: { dueDate: 'today' },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 20;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const dueDateDropdown = dropdown.build({\r\n label: 'Due Date',\r\n style: 'secondary',\r\n dropdownId: 'dueDateDropdown',\r\n });\r\n dueDateDropdown.addEventListener('change', e => {\r\n that.settings.dueDate = e.target.value;\r\n });\r\n dropdown.populate(\r\n dueDateDropdown,\r\n [\r\n { id: 1, value: 'today', text: 'Today' },\r\n { id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n { id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n { id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n { id: 5, value: 'prior 30 days', text: 'Prior 30 Days' },\r\n ],\r\n that.settings.dueDate,\r\n );\r\n\r\n const saveBtn = button.build({\r\n id: 'wfRosterSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'wfRosterBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-20');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(dueDateDropdown);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n };\r\n\r\n function setWidgetSettings(widgetId) {\r\n let settings = dashboard.getWidgetSettings(widgetId);\r\n\r\n if (settings.widgetConfig !== null) {\r\n sections[widgetId].settings = { ...settings.widgetConfig };\r\n }\r\n sections[widgetId].order = parseInt(settings.widgetOrder);\r\n sections[widgetId].showHide = settings.showHide;\r\n }\r\n\r\n function buildWidgetBodyInnerHTML(sec) {\r\n const settingHTML = sections[sec].build();\r\n return settingHTML;\r\n }\r\n\r\n function populatePage() {\r\n const appName = $.session.applicationName === 'Advisor' ? 'adv' : 'gk';\r\n widgetsContainer = document.createElement('div');\r\n widgetsContainer.classList.add('widgetsContainer');\r\n\r\n newTable = buildTeamMemberTable();\r\n newTable.classList.add('active');\r\n widgetsContainer.appendChild(newTable);\r\n\r\n for (const sec in sections) {\r\n if (!sections[sec].application.includes(appName)) {\r\n continue;\r\n }\r\n setWidgetSettings(sec);\r\n if (sections[sec].build) {\r\n const sectionWrap = document.createElement('div');\r\n sectionWrap.classList.add('widgetWrap');\r\n sectionWrap.id = `build-${sections[sec].id}`;\r\n\r\n const sectionHeader = document.createElement('div');\r\n sectionHeader.classList.add('widgetHeader');\r\n\r\n const sectionBody = document.createElement('div');\r\n sectionBody.classList.add('widgetBody');\r\n const title = document.createElement('p');\r\n title.innerText = sections[sec].name;\r\n sectionHeader.appendChild(title);\r\n sectionBody.appendChild(buildWidgetBodyInnerHTML(sec));\r\n sectionWrap.appendChild(sectionHeader);\r\n sectionWrap.appendChild(sectionBody);\r\n widgetsContainer.appendChild(sectionWrap);\r\n }\r\n }\r\n widgetSettingsPage.appendChild(widgetsContainer);\r\n }\r\n\r\n\r\n function buildTeamMemberTable() {\r\n const teamMemberTable = table.build({\r\n tableId: 'settingTable',\r\n columnHeadings: [],\r\n endIcon: true,\r\n sortable: true,\r\n onSortCallback: async res => {\r\n var allElmnts = document.querySelectorAll('[id^=\"sig-\"]');\r\n updatedListOrder = [];\r\n updatedListOrder.length = allElmnts.length;\r\n for (var i = 0; i < allElmnts.length; i++) {\r\n updatedListOrder[i] = allElmnts[i].innerText.replace('show', '').replace('\\n', '').trim();\r\n } \r\n await widgetSettingsAjax.setWidgetSettingOrder(updatedListOrder);\r\n if ($.session.activeModule == 'home')\r\n dashboard.load();\r\n },\r\n });\r\n\r\n if (sections) {\r\n const appName = $.session.applicationName === 'Advisor' ? 'adv' : 'gk';\r\n sectionreorder = [];\r\n for (const sec in sections) {\r\n if (!sections[sec].application.includes(appName)) {\r\n continue;\r\n }\r\n setWidgetSettings(sec);\r\n sectionreorder.push(sections[sec]);\r\n };\r\n\r\n let sortedProducts = sectionreorder.sort((a, b) => {\r\n if (a.order === 0) return 1;\r\n if (b.order === 0) return -1;\r\n return a.order - b.order;\r\n });\r\n\r\n const tableData = sortedProducts.map(m => {\r\n let name;\r\n let IsBuild = 'false';\r\n if (sections[m.id].build) { \r\n name = m.name + ' ' + `${icons['Gear']}`;\r\n IsBuild = 'true';\r\n }\r\n else {\r\n IsBuild = 'false';\r\n name = m.name;\r\n }\r\n const activeCheckbox = input.buildCheckbox({\r\n id: `chk-${m.id}`,\r\n text: 'show',\r\n isChecked: m.showHide === 'Y' ? true : false,\r\n });\r\n\r\n const tableOBJ = {\r\n values: [name],\r\n id: `sig-${m.id}-${m.order}`,\r\n endIcon: m.name == 'System Messages' ? '' : activeCheckbox.outerHTML,\r\n onClick: async e => {\r\n var id = e.target.id.split('-')[1];\r\n if (sections[parseInt(m.id)].build) {\r\n const toggle = document.querySelector('#build-' + id);\r\n toggle.classList.add('active');\r\n newTable.classList.remove('active');\r\n }\r\n },\r\n };\r\n\r\n // set checkbox callback\r\n tableOBJ.endIconCallback = async e => {\r\n sec = e.currentTarget.children[0].control.id.split('-')[1];\r\n document.getElementById(e.currentTarget.children[0].control.id).checked = sections[sec].showHide == 'Y' ? false : true;\r\n sections[sec].showHide = sections[sec].showHide == 'Y' ? 'N' : 'Y';\r\n\r\n const configString = JSON.stringify(sections[sec].settings);\r\n const sectionID = parseInt(sec);\r\n await widgetSettingsAjax.setWidgetSettingConfig(\r\n sectionID,\r\n configString,\r\n sections[sec].showHide,\r\n );\r\n if ($.session.activeModule == 'home')\r\n dashboard.load();\r\n };\r\n tableOBJ.attributes = [{ key: 'data-signed', value: m.id }, { key: 'data-plan-active', value: IsBuild }];\r\n return tableOBJ;\r\n });\r\n\r\n table.populate(teamMemberTable, tableData, true);\r\n }\r\n return teamMemberTable;\r\n }\r\n\r\n function buildPage() {\r\n widgetSettingsPage = document.querySelector('.util-menu__widgetSettings');\r\n widgetSettingsPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'Widget Settings';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n const backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n widgetSettingsPage.appendChild(currMenu);\r\n widgetSettingsPage.appendChild(backButton);\r\n }\r\n\r\n function init() {\r\n buildPage();\r\n populatePage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const widgetSettingsAjax = (function () {\r\n function getWidgetSettings() {\r\n data = {\r\n token: $.session.Token\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getUserWidgetSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n function setWidgetSettingConfig(widgetId, widgetConfig, showHide) {\r\n data = {\r\n token: $.session.Token,\r\n widgetId: widgetId,\r\n showHide: showHide,\r\n widgetConfig: widgetConfig\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateUserWidgetSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n function setWidgetSettingOrder(updatedListOrder) {\r\n data = {\r\n token: $.session.Token,\r\n updatedListOrder: updatedListOrder,\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateUserWidgetOrderSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n return {\r\n getWidgetSettings,\r\n setWidgetSettingConfig,\r\n setWidgetSettingOrder \r\n };\r\n})();\r\n","var reports = (function(){\r\n var reportCurrentlyProcessing = false;\r\n var startDate;\r\n var endDate;\r\n // DOM elements\r\n var actioncenter;\r\n var reportPopup;\r\n\r\n function handledProcessedReport() {\r\n reportCurrentlyProcessing = false;\r\n }\r\n\r\n function showTimeEntryReport() {\r\n if (!startDate || !endDate) return\r\n\r\n reportCurrentlyProcessing = true;\r\n var userId = $.session.UserId;\r\n\r\n reportsAjax.getEmpSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n }\r\n\r\n function showOverlapReport() {\r\n if (!startDate || !endDate) return\r\n\r\n reportCurrentlyProcessing = true;\r\n var userId = $.session.UserId;\r\n\r\n reportsAjax.getOverlapSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n }\r\n\r\n function showReportsPopup() {\r\n // popup\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visible', 'popup--filter', 'timeEntryReportsPopup');\r\n popup.setAttribute('data-popup', 'true');\r\n // header\r\n var header = document.createElement('h5');\r\n header.innerHTML = `Select A Report To View`;\r\n // reports list\r\n var reports = `\r\n
      \r\n
    \r\n `;\r\n var timeEntryBtn = button.build({\r\n text: 'Time Entry Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n actioncenter.removeChild(popup);\r\n showTimeEntryReport();\r\n }\r\n });\r\n var overlapBtn = button.build({\r\n text: 'Overlap Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n actioncenter.removeChild(popup);\r\n showOverlapReport();\r\n }\r\n });\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(timeEntryBtn);\r\n popup.appendChild(overlapBtn);\r\n\r\n // append to dom\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n function init(payPeriod) {\r\n actioncenter = document.getElementById('actioncenter');\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n showReportsPopup();\r\n }\r\n\r\n return {\r\n init,\r\n handledProcessedReport\r\n }\r\n})();\r\n","var reportsAjax = (function(){\r\n function getEmpSingleEntryDetailReportAjax(userId, startDate, endDate) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/BasicSingleEntryReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + startDate + '\", \"endDate\":\"' + endDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.BasicSingleEntryReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }//\r\n });\r\n }\r\n \r\n function getOverlapSingleEntryDetailReportAjax(userId, startDate, endDate) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/SingleEntryOverLapReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + startDate + '\", \"endDate\":\"' + endDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.SingleEntryOverLapReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getEmpSingleEntryDetailReportAjax,\r\n getOverlapSingleEntryDetailReportAjax\r\n }\r\n})();\r\n","var emptySignatureDataURL = `iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAEYklEQVR4Xu3UAQkAAAwCwdm/9HI83BLIOdw5AgQIRAQWySkmAQIEzmB5AgIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlACBB1YxAJfjJb2jAAAAAElFTkSuQmCC`;\r\n\r\nfunction clearSavedSignaturesAndNotes() {\r\n $.session.evvDataCache = {};\r\n}\r\nfunction removeConsumerFromEVVCache(consumerId) {\r\n delete $.session.evvDataCache[consumerId];\r\n}\r\n\r\nfunction saveSignatureAndNote(savedSingleEntryId) {\r\n var savedSignaturesAndNotes = [];\r\n\r\n for (var prop in $.session.evvDataCache) {\r\n var singleEntryId;\r\n\r\n if (Array.isArray(savedSingleEntryId)) {\r\n var currerntConsumer = $.session.evvDataCache[prop]._consumerID;\r\n savedSingleEntryId.forEach(entry => {\r\n if (entry.consumerId.indexOf(currerntConsumer) !== -1) {\r\n singleEntryId = entry.singleEntryId;\r\n }\r\n });\r\n } else {\r\n singleEntryId = savedSingleEntryId;\r\n }\r\n\r\n $.session.evvDataCache[prop]._signatureDataUrl = $.session.evvDataCache[prop]._signatureDataUrl.replace(\"data:image/png;base64,\", \"\");\r\n \r\n savedSignaturesAndNotes.push({\r\n token:$.session.Token,\r\n singleEntryId: singleEntryId,\r\n consumerId: $.session.evvDataCache[prop]._consumerID,\r\n note: UTIL.removeUnsavableNoteText($.session.evvDataCache[prop]._noteDataString),\r\n signatureImage: $.session.evvDataCache[prop]._signatureDataUrl\r\n });\r\n }\r\n\r\n if (savedSignaturesAndNotes.length > 0) {\r\n savedSignaturesAndNotes.forEach(evvEntry => {\r\n signatureAjax.singleEntrySaveSignatureAndNote(evvEntry);\r\n });\r\n }\r\n \r\n //clearSavedSignaturesAndNotes();\r\n}\r\n\r\nfunction validateEVV() {\r\n var signRequired = $.session.singleEntryShowConsumerSignature === 'Y' ? true : false;\r\n var noteRequired = $.session.singleEntryShowConsumerNote === 'Y' ? true : false;\r\n var consumersArray = Array.prototype.slice.call(document.querySelectorAll('.consumer.singleentryselected'));\r\n var isValidEVV = true;\r\n\r\n if (signRequired || noteRequired) {\r\n if (consumersArray.length > 0) {\r\n var hasSignature, hasNote;\r\n consumersArray.forEach(consumer => {\r\n if (consumer.id in $.session.evvDataCache) {\r\n // if consumer has EVV grab it\r\n var consumerEVV = $.session.evvDataCache[consumer.id];\r\n // check consumerEVV for signature and note values\r\n hasSignature = consumerEVV._signatureDataUrl === '' ? false : true;\r\n hasNote = consumerEVV._noteDataString === '' ? false : true;\r\n if (signRequired && hasSignature === false) isValidEVV = false;\r\n if (noteRequired && hasNote === false) isValidEVV = false;\r\n } else {\r\n // if any consumer is selected but dosen't have an EVV\r\n isValidEVV = false; \r\n } \r\n });\r\n }\r\n }\r\n\r\n return isValidEVV;\r\n}\r\n\r\nclass EVV {\r\n constructor(options) {\r\n this._actionBtn;\r\n this._evvContainer;\r\n // signature coming from db?\r\n this._fromSave = options.fromSave ? true : false;\r\n // signature pad brains\r\n this._signaturePad;\r\n // save data\r\n this._consumerID = options.consumerId;\r\n this._signatureDataUrl = options.signatureDataUrl;\r\n this._noteDataString = options.noteDataString;\r\n // dom references\r\n this._consumerSECard;\r\n this._consumerCard = options.consumer;\r\n // popup markup\r\n this._signatureImageMarkup;\r\n this._signatureMarkup;\r\n this._noteMarkup;\r\n this._evvActionMarkup;\r\n // temp signature data storage for cancel button\r\n this._tempSigData\r\n\r\n this._init();\r\n }\r\n\r\n // PRIVATE METHODS - DO NOT TOUCH OR CALL!\r\n //==========================================\r\n _init() {\r\n // check for null Consumer Card\r\n if (!this._consumerCard) {\r\n var consumers = Array.prototype.slice.call(document.querySelectorAll('.consumer-selected'));\r\n consumers.forEach(consumer => {\r\n if (consumer.dataset.consumerId === this._consumerID) {\r\n this._consumerCard = consumer;\r\n }\r\n });\r\n }\r\n // build popups and save reference\r\n this._signatureMarkup = this._renderEVVMarkup('sign');\r\n this._signatureImageMarkup = this._renderEVVMarkup('img');\r\n this._noteMarkup = this._renderEVVMarkup('note');\r\n this._evvActionMarkup = this._renderEVVActionMarkup();\r\n // init signature pad\r\n this._initSignaturePad();\r\n // add events\r\n this._popupEvents();\r\n this._signatureEvents();\r\n // initial cache if new single entry\r\n if (!this._fromSave) {\r\n $.session.evvDataCache[this._consumerID] = this;\r\n }\r\n }\r\n _initSignaturePad() {\r\n var canvas = this._signatureMarkup.querySelector('.evvCanvas');\r\n if (!canvas) return;\r\n this._signaturePad = new SignaturePad(canvas);\r\n }\r\n _dataURLToBlob(dataURL) {\r\n var parts = dataURL.split(';base64,');\r\n var contentType = parts[0].split(':')[1];\r\n var raw = window.atob(parts[1]);\r\n var rawLength = raw.length;\r\n var uInt8Array = new Uint8Array(rawLength);\r\n \r\n for (var i = 0; i < rawLength; ++i) {\r\n uInt8Array[i] = raw.charCodeAt(i);\r\n }\r\n \r\n return new Blob([uInt8Array], { type: contentType });\r\n }\r\n\r\n // CRUD METHODS\r\n //--------------------------------\r\n _saveSignatureData() {\r\n if (this._signaturePad.isEmpty()) {\r\n this._tempSigData = ''; \r\n } else {\r\n var dataUrl = this._signaturePad.toDataURL();\r\n this._signatureDataUrl = dataUrl.replace(\"data:image/png;base64,\", \"\");\r\n }\r\n }\r\n _saveNoteData() {\r\n var noteText = this._noteMarkup.querySelector('.evv-note--pad');\r\n this._noteDataString = noteText.value;\r\n }\r\n _saveEVVInstance() {\r\n $.session.evvDataCache[this._consumerID] = this;\r\n }\r\n\r\n // EVV\r\n //--------------------------------\r\n _renderSignatureMarkup() {\r\n var markup = `\r\n
    \r\n

    Signature

    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n `;\r\n\r\n return markup;\r\n }\r\n _renderSignatureImageMarkup() {\r\n var markup = `\r\n
    \r\n

    signature

    \r\n \r\n
    \r\n `;\r\n\r\n return markup;\r\n }\r\n _renderNoteMarkup() {\r\n var markup = `\r\n

    Note

    \r\n
    \r\n \r\n \r\n
    \r\n `;\r\n\r\n return markup;\r\n }\r\n _renderEVVActionMarkup() {\r\n var savebtn;\r\n if ((this._signatureDataUrl === emptySignatureDataURL || this._signatureDataUrl === '' || !this._fromSave) || $.session.singleEntryShowConsumerNote === 'Y') {\r\n savebtn = '';\r\n } else {\r\n savebtn = '';\r\n }\r\n var markup = `\r\n
    \r\n ${savebtn}\r\n \r\n
    \r\n `;\r\n\r\n var evvDiv = document.createElement('div');\r\n evvDiv.innerHTML = markup;\r\n return evvDiv;\r\n }\r\n _renderEVVMarkup(type) {\r\n var evvDiv = document.createElement('div');\r\n // evvDiv.setAttribute('data-consumerID', this._consumerID);\r\n // evvDiv.setAttribute('data-popupType', type);\r\n\r\n if (type === 'sign') {\r\n evvDiv.classList.add('signature-pad');\r\n evvDiv.innerHTML = this._renderSignatureMarkup();\r\n return evvDiv;\r\n }\r\n\r\n if (type === 'img') {\r\n evvDiv.classList.add('signature-pad');\r\n evvDiv.innerHTML = this._renderSignatureImageMarkup();\r\n return evvDiv;\r\n }\r\n\r\n if (type === 'note') {\r\n evvDiv.classList.add('evv-note');\r\n evvDiv.innerHTML = this._renderNoteMarkup();\r\n return evvDiv;\r\n }\r\n }\r\n // POPUP EVENTS\r\n //--------------------------------\r\n _evvSave() {\r\n if (this._signatureDataUrl === emptySignatureDataURL || this._signatureDataUrl === '' || !this._fromSave) {\r\n this._saveSignature();\r\n }\r\n \r\n this._saveNote();\r\n this._saveEVVInstance();\r\n \r\n // get dom elements\r\n this._consumerSECard = this._consumerCard.parentElement;\r\n this._actionBtn = this._consumerSECard.querySelector('.extrasBtn ');\r\n\r\n if (!this._signaturePad.isEmpty() || this._noteDataString !== '') {\r\n this._actionBtn.classList.add('evv-highlight');\r\n } else {\r\n this._actionBtn.classList.remove('evv-highlight');\r\n }\r\n\r\n POPUP.hide(this._evvContainer);\r\n }\r\n _evvCancel() {\r\n this._signaturePad.fromData(this._tempSigData);\r\n POPUP.hide(this._evvContainer);\r\n }\r\n _popupEvents() {\r\n var saveButton = this._evvActionMarkup.querySelector('[data-action=save]');\r\n var cancelButton = this._evvActionMarkup.querySelector('[data-action=cancel');\r\n\r\n if (saveButton) saveButton.addEventListener('click', this._evvSave.bind(this));\r\n cancelButton.addEventListener('click', this._evvCancel.bind(this));\r\n }\r\n // Signature Popup\r\n _saveSignature() {\r\n if ($.session.singleEntryShowConsumerSignature === 'N') return;\r\n this._saveSignatureData();\r\n }\r\n _undoSignature() {\r\n var data = this._signaturePad.toData();\r\n \r\n if (data) {\r\n data.pop(); // remove the last dot or line\r\n this._signaturePad.fromData(data);\r\n }\r\n }\r\n _clearSignature() {\r\n this._tempSigData = [...this._signaturePad._data];\r\n this._signaturePad.clear();\r\n this._signatureDataUrl = '';\r\n }\r\n _signatureEvents() {\r\n var clearButton = this._signatureMarkup.querySelector('[data-action=clear]');\r\n var undoButton = this._signatureMarkup.querySelector('[data-action=undo]');\r\n\r\n if (clearButton) clearButton.addEventListener('click', this._clearSignature.bind(this));\r\n if (undoButton) undoButton.addEventListener('click', this._undoSignature.bind(this));\r\n \r\n }\r\n // Note Popup\r\n _saveNote() {\r\n if ($.session.singleEntryShowConsumerNote === 'N') return;\r\n this._saveNoteData();\r\n }\r\n\r\n // PUBLIC METHODS\r\n //==========================================\r\n editInit() {\r\n if (!this._consumerCard) {\r\n var consumers = Array.prototype.slice.call(document.querySelectorAll('.consumerCard'));\r\n consumers.filter(consumer => {\r\n if (consumer.dataset.consumerId === this._consumerID) {\r\n this._consumerCard = consumer;\r\n }\r\n });\r\n }\r\n }\r\n populatePopup() {\r\n this._evvContainer = document.getElementById('consumerExtrasPopup');\r\n\r\n const showSignature = $.session.singleEntryShowConsumerSignature === 'Y' ? true : false;\r\n const showNote = $.session.singleEntryShowConsumerNote === 'Y' ? true : false;\r\n\r\n if (showSignature) {\r\n this._tempSigData = [...this._signaturePad._data];\r\n\r\n if (this._signatureDataUrl === emptySignatureDataURL || this._signatureDataUrl === '' || !this._fromSave) {\r\n this._evvContainer.appendChild(this._signatureMarkup);\r\n } else {\r\n this._evvContainer.appendChild(this._signatureImageMarkup);\r\n }\r\n }\r\n\r\n if (showNote) {\r\n this._evvContainer.appendChild(this._noteMarkup);\r\n var note = this._noteMarkup.querySelector('.evv-note--pad');\r\n note.value = this._noteDataString;\r\n }\r\n this._evvContainer.appendChild(this._evvActionMarkup);\r\n }\r\n}","var signatureAjax = (function() {\r\n\tfunction getConsumersSignaturesAndNotes(singleEntryId){\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getConsumersSignaturesAndNotes/\",\r\n data: '{\"token\":\"' + $.session.Token + '\", \"singleEntryId\":\"' + singleEntryId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n clearSavedSignaturesAndNotes();\r\n \r\n var data = response.getConsumersSignaturesAndNotesResult;\r\n \r\n data.forEach(d => {\r\n var evvOptions = {\r\n consumer: null,\r\n consumerId: d.consumerId,\r\n signatureDataUrl: d.signature,\r\n noteDataString: d.note,\r\n fromSave: true\r\n };\r\n \r\n if (d.consumerId in $.session.evvDataCache === false) {\r\n var evv = new EVV(evvOptions);\r\n $.session.evvDataCache[d.consumerId] = evv;\r\n }\r\n });\r\n \r\n },\r\n error: function (xhr, status, error) {\r\n \r\n },\r\n });\r\n }\r\n\r\n function getSpecificConsumerSignatureAndNote(retrieveData, signOrNote, evvOptions) {//token,singleEntryId,consumerId \r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getSpecificConsumerSignatureAndNote/\",\r\n data: JSON.stringify(retrieveData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n // var data = response.getSpecificConsumerSignatureAndNoteResult; \r\n // var note = data[0].note;\r\n // var signatureDataUrl = data[0].signature;\r\n // signatureDataUrl = \"data:image/png;base64,\" + signatureDataUrl;\r\n // if (signatureDataUrl === \"data:image/png;base64,\") {\r\n // signatureDataUrl = \"\";\r\n // }\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function singleEntrySaveSignatureAndNote(signatureAndNoteData, callback) {//token,singleEntryId,consumerId,note,signatureImage\r\n signatureAndNoteData.signatureImage = signatureAndNoteData.signatureImage === '' ? null : signatureAndNoteData.signatureImage;\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/singleEntrySaveSignatureAndNote/\",\r\n data: JSON.stringify(signatureAndNoteData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n clearSavedSignaturesAndNotes();\r\n //callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n\treturn {\r\n getConsumersSignaturesAndNotes,\r\n getSpecificConsumerSignatureAndNote,\r\n singleEntrySaveSignatureAndNote\r\n\t};\r\n})();","var timeEntryCard = (function () {\r\n //-DATA------------------\r\n var payPeriodData;\r\n var locationData;\r\n var workCodeData;\r\n var requiredFields;\r\n var crossMidnightTimeData;\r\n var saveUserId; // userID used for cross midnight entries (eg, \"charles\")\r\n var personId; // Id of originator of entry (e.g., 37)\r\n var supervisorId;\r\n var rejectedTime;\r\n //-DOM------------------\r\n var card; // time entry card\r\n // dropdowns\r\n var payPeriodDropdown;\r\n var locationDropdown;\r\n var workCodeDropdown;\r\n var reasonDropdown;\r\n var locationTypeDropdown;\r\n // inputs\r\n var dateInput;\r\n var startTimeInput;\r\n var endTimeInput;\r\n var totalHoursInput;\r\n var noteInput;\r\n var rejectionReasonInput;\r\n // transportation\r\n var transportationBtn;\r\n var transportationPopup;\r\n var transportationDropdown;\r\n var licenseplateInput;\r\n var odometerStartInput;\r\n var odometerEndInput;\r\n var odometerTotalInput;\r\n var destinationInput;\r\n var reasonInput;\r\n var saveTransBtn;\r\n var deleteTransBtn;\r\n var cancelTransBtn;\r\n // btns\r\n var saveBtn;\r\n var deleteBtn;\r\n var cancelBtn;\r\n var saveOrUpdate;\r\n //-VALUES------------------\r\n var isEdit;\r\n var isAdminEdit;\r\n var isCardDisabled;\r\n var status;\r\n var singleEntryId;\r\n var now;\r\n var nowHour;\r\n var nowMinutes;\r\n // consumers\r\n var consumerIds;\r\n var numberOfConsumersPresent;\r\n // dropdown & input\r\n var payPeriod;\r\n var entryDate;\r\n var workCode;\r\n var locationId;\r\n var startTime;\r\n var endTime;\r\n var totalHours;\r\n var noteText;\r\n var rejectionReason;\r\n //EVV\r\n var evvReasonCodeObj;\r\n var evvReasonCode;\r\n var locationTypeCode;\r\n var sendEvvData;\r\n var wcServiceType;\r\n var reasonRequired; // true || false\r\n var eligibleConsumersObj;\r\n var endTimeClicks;\r\n var evvAttest;\r\n var evvCommunity;\r\n var defaultTimesChanged; // true || false\r\n var defaultStartTimeChanged; // true || false (needed for 1st entry in crossmidnight entries)\r\n var defaultEndTimeChanged; // true || false (needed for 2nd entry in crossmidnight entries)\r\n // time overlap\r\n var timeOverlap;\r\n // workcode related\r\n var isBillable; // Y || N\r\n var keyStartStop; // Y || N\r\n // coordinates\r\n var startLatitude;\r\n var startLongitude;\r\n var endLatitude;\r\n var endLongitude;\r\n // transportation\r\n var transportationSaved = false;\r\n var isTransportationValid;\r\n var destination = null;\r\n var odometerEnd = null;\r\n var odometerStart = null;\r\n var reason = null;\r\n var transportationType = null;\r\n var transportationReimbursable = null;\r\n var transportationUnits = null;\r\n var licensePlateNumber = null;\r\n // temp transportation data (holds data until save)\r\n var tmpTransportationType = null;\r\n var tmpTransportationReimbursable = null;\r\n var tmpOdometerStart = null;\r\n var tmpOdometerEnd = null;\r\n var tmpTransportationUnits = null;\r\n var tmpDestination = null;\r\n var tmpReason = null;\r\n var tmpLicenseplate = null;\r\n var isEVVSingleEntry = false;\r\n var reasonCodeValue;\r\n var eVVChangeDate;\r\n var todayDate;\r\n var isEndTimeChangePermission;\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target, isNew) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.toggleNavLayout();\r\n const selectedConsumers = roster2.getActiveConsumers();\r\n moveConsumersToTimeCard(selectedConsumers);\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Util\r\n //------------------------------------\r\n function errorPopup(message) {\r\n popup = POPUP.build({ classNames: 'error' });\r\n messageArea = document.createElement('p');\r\n messageArea.innerHTML = message;\r\n popup.appendChild(messageArea);\r\n POPUP.show(popup);\r\n }\r\n function disableInput(element) {\r\n var input = element.querySelector('input');\r\n if (!input) input = element.querySelector('select');\r\n if (!input) input = element.querySelector('textarea');\r\n element.classList.add('disabled');\r\n input.setAttribute('readonly', 'true');\r\n }\r\n function enableInput(element) {\r\n var input = element.querySelector('input');\r\n if (!input) input = element.querySelector('select');\r\n if (!input) input = element.querySelector('textarea');\r\n element.classList.remove('disabled');\r\n input.removeAttribute('readonly');\r\n }\r\n function getOverlapData() {\r\n return {\r\n token: $.session.Token,\r\n dateOfService: entryDate,\r\n startTime: startTime,\r\n endTime: endTime,\r\n singleEntryId: '',\r\n };\r\n }\r\n function getSaveUpdateData(saveorupdate) {\r\n // setTotalHours();\r\n if (saveorupdate) saveOrUpdate = saveorupdate;\r\n var consumer_Ids = consumerIds ? consumerIds.join(',') : '';\r\n var data;\r\n if (!evvReasonCode || evvReasonCode === '%') evvReasonCode = '';\r\n if (keyStartStop === 'Y' && !startTime) startTime = startTimeInput.querySelector('input').value;\r\n let deviceOS = checkDeviceType();\r\n if (evvReasonCode !== '') deviceOS = 'Manual';\r\n\r\n if (saveOrUpdate === 'Save') {\r\n data = {\r\n // session variables\r\n token: $.session.Token,\r\n userId: crossMidnightTimeData && saveUserId ? saveUserId : $.session.UserId, // for crossmidnight -- this is used for PersonID (in DB)\r\n updaterId: crossMidnightTimeData && saveUserId ? $.session.UserId : '', // for crossmidnight -- this is used for UserID (in DB)\r\n personId: crossMidnightTimeData && saveUserId ? personId : 0, // for crossmidnight\r\n // card data\r\n checkHours: totalHours ? totalHours : '',\r\n crossMidnightCheckHours: crossMidnightTimeData\r\n ? [\r\n { day1TotalHours: crossMidnightTimeData.day1TotalHours },\r\n { day2TotalHours: crossMidnightTimeData.day2TotalHours },\r\n ]\r\n : '',\r\n consumerId: consumer_Ids,\r\n dateOfService: entryDate,\r\n defaultStartTimeChanged: defaultStartTimeChanged ? defaultStartTimeChanged : false, // for crossmidnight evv entries\r\n defaultEndTimeChanged: defaultEndTimeChanged ? defaultEndTimeChanged : false, // for crossmidnight evv entries\r\n endTime: endTime ? endTime : '',\r\n endLatitude: endLatitude ? endLatitude : 0,\r\n endLongitude: endLongitude ? endLongitude : 0,\r\n inComments: noteText ? UTIL.removeUnsavableNoteText(noteText) : '',\r\n latitude: crossMidnightTimeData ? endLatitude : startLatitude,\r\n longitude: crossMidnightTimeData ? endLongitude : startLongitude,\r\n locationId: locationId ? locationId : '',\r\n numberOfConsumersPresent: numberOfConsumersPresent\r\n ? numberOfConsumersPresent\r\n : consumerIds\r\n ? consumerIds.length\r\n : 0,\r\n startTime: startTime ? startTime : '',\r\n workCodeID: workCode ? workCode : '',\r\n\r\n // transportation\r\n destination: destination ? UTIL.removeUnsavableNoteText(destination) : '',\r\n licensePlateNumber: licensePlateNumber\r\n ? UTIL.removeUnsavableNoteText(licensePlateNumber)\r\n : '',\r\n odometerEnd: !odometerEnd\r\n ? null\r\n : odometerEnd === 0 || odometerEnd === '0'\r\n ? null\r\n : odometerEnd,\r\n odometerStart: !odometerStart\r\n ? null\r\n : odometerStart === 0 || odometerStart === '0'\r\n ? null\r\n : odometerStart,\r\n reason: reason ? UTIL.removeUnsavableNoteText(reason) : '',\r\n transportationReimbursable: transportationReimbursable ? transportationReimbursable : '',\r\n transportationUnits: transportationUnits ? transportationUnits : '',\r\n // EVV\r\n deviceType: deviceOS,\r\n evvReason: evvReasonCode,\r\n attest: attestCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n community: communityCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n evvLocationType: locationTypeCode,\r\n };\r\n } else {\r\n data = {\r\n // session variables\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n // card data\r\n singleEntryId,\r\n checkHours: totalHours ? totalHours : '',\r\n crossMidnightCheckHours: crossMidnightTimeData\r\n ? [\r\n { day1TotalHours: crossMidnightTimeData.day1TotalHours },\r\n { day2TotalHours: crossMidnightTimeData.day2TotalHours },\r\n ]\r\n : '',\r\n consumerId: consumer_Ids,\r\n dateOfService: entryDate,\r\n defaultStartTimeChanged: defaultStartTimeChanged ? defaultStartTimeChanged : false, // for crossmidnight evv entries\r\n defaultEndTimeChanged: defaultEndTimeChanged ? defaultEndTimeChanged : false, // for crossmidnight evv entries\r\n endTime: endTime ? endTime : '',\r\n endLatitude: endLatitude ? endLatitude : 0,\r\n endLongitude: endLongitude ? endLongitude : 0,\r\n inComments: noteText ? UTIL.removeUnsavableNoteText(noteText) : '',\r\n locationId: locationId ? locationId : '',\r\n numberOfConsumersPresent: numberOfConsumersPresent\r\n ? numberOfConsumersPresent\r\n : consumerIds\r\n ? consumerIds.length\r\n : 0,\r\n startTime: startTime ? startTime : '',\r\n workCodeID: workCode ? workCode : '',\r\n // transportation\r\n destination: destination ? UTIL.removeUnsavableNoteText(destination) : '',\r\n licensePlateNumber: licensePlateNumber\r\n ? UTIL.removeUnsavableNoteText(licensePlateNumber)\r\n : '',\r\n odometerEnd: !odometerEnd\r\n ? null\r\n : odometerEnd === 0 || odometerEnd === '0'\r\n ? null\r\n : odometerEnd,\r\n odometerStart: !odometerStart\r\n ? null\r\n : odometerStart === 0 || odometerStart === '0'\r\n ? null\r\n : odometerStart,\r\n reason: reason ? UTIL.removeUnsavableNoteText(reason) : '',\r\n transportationReimbursable: transportationReimbursable ? transportationReimbursable : '',\r\n transportationUnits: transportationUnits ? transportationUnits : '',\r\n\r\n deviceType: deviceOS,\r\n evvReason: evvReasonCode,\r\n attest: attestCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n community: communityCheckbox.getElementsByTagName('input')[0].checked ? 'Y' : 'N',\r\n updateEVVReason:\r\n $.session.singleEntrycrossMidnight && !defaultStartTimeChanged ? 'false' : 'true',\r\n evvLocationType: locationTypeCode,\r\n };\r\n }\r\n\r\n return data;\r\n }\r\n function checkDeviceType() {\r\n if ($.session.OS === 'iPhone/iPod' || $.session.OS === 'Linux') {\r\n return 'Mobile';\r\n } else return 'Other';\r\n }\r\n function setStartTimeLocation(pos) {\r\n startLatitude = pos.lat;\r\n startLongitude = pos.long;\r\n }\r\n function setEndTimeLocation(pos) {\r\n endLatitude = pos.lat;\r\n endLongitude = pos.long;\r\n }\r\n function setTotalHours() {\r\n if (keyStartStop === 'N') return;\r\n if (!startTime || !endTime) return;\r\n\r\n crossMidnightTimeData = {};\r\n\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n var hours = UTIL.calculateTotalHours(startTime, endTime);\r\n\r\n if ((startTime === '00:00:00' || startTime === '00:00') && endTime === '00:00') {\r\n // user entered midnight for both start and end time\r\n totalHours = hours;\r\n hoursInput.value = totalHours;\r\n $.session.singleEntrycrossMidnight = false;\r\n crossMidnightTimeData = {};\r\n } else if (hours < 0 || hours === '0.00') {\r\n // user entered time period that spans into the next day\r\n // for the database entries\r\n var totalHours1 = UTIL.calculateTotalHours(startTime, '00:00');\r\n var totalHours2 = UTIL.calculateTotalHours('00:00', endTime);\r\n // for display on the screen\r\n totalHours = Number(totalHours1) + Number(totalHours2);\r\n // totalHours = (2400 + hours * 100)/100;\r\n hoursInput.value = totalHours.toFixed(2);\r\n $.session.singleEntrycrossMidnight = true;\r\n\r\n crossMidnightTimeData = {\r\n day1StartTime: startTime,\r\n day1EndTime: '00:00',\r\n day1TotalHours: totalHours1,\r\n day2StartTime: '00:00',\r\n day2EndTime: endTime,\r\n day2TotalHours: totalHours2,\r\n };\r\n } else {\r\n // user entered time period all within one day\r\n totalHours = hours;\r\n hoursInput.value = totalHours;\r\n $.session.singleEntrycrossMidnight = false;\r\n crossMidnightTimeData = {};\r\n }\r\n }\r\n\r\n function updateDateValMinMax(resetDate = true) {\r\n var todaysDate = UTIL.getTodaysDate();\r\n\r\n // if today is within the current pay period, then today is selected date; otherwise, payperiod start is selected date\r\n if (resetDate) {\r\n if (todaysDate <= payPeriod.end && todaysDate >= payPeriod.start) {\r\n entryDate = todaysDate;\r\n } else {\r\n entryDate = payPeriod.start;\r\n }\r\n }\r\n var input = dateInput.querySelector('input');\r\n if (resetDate) input.value = entryDate;\r\n input.setAttribute('min', payPeriod.start);\r\n input.setAttribute('max', payPeriod.end);\r\n\r\n // Set Min/Max Dates for Billable Work Codes\r\n if (isEdit) {\r\n if (isBillable === 'Y') {\r\n input.setAttribute('min', entryDate);\r\n input.setAttribute('max', entryDate);\r\n }\r\n } else {\r\n // NEW\r\n // If todays date is within the pay period, set the max to today's date. Otherwise max stays set to pay period end date.\r\n if (isBillable === 'Y' && todaysDate <= payPeriod.start) {\r\n // input.setAttribute('min', entryDate);\r\n input.setAttribute('max', UTIL.getTodaysDate());\r\n }\r\n }\r\n roster2.updateSelectedDate(entryDate);\r\n }\r\n async function setEditDataValues(editData) {\r\n var ed = editData[0];\r\n status = ed.Anywhere_Status;\r\n singleEntryId = ed.Single_Entry_ID;\r\n entryDate = UTIL.formatDateToIso(ed.Date_of_Service.split(' ')[0]);\r\n roster2.updateSelectedDate(entryDate);\r\n workCode = ed.Work_Code_ID;\r\n locationId = ed.Location_ID;\r\n startTime = ed.Start_Time;\r\n endTime = ed.End_Time === '23:59:59' ? '00:00' : ed.End_Time;\r\n totalHours = ed.Check_Hours;\r\n noteText = ed.Comments;\r\n locationTypeCode = ed.locationTypeCode;\r\n //get the rejection reason\r\n await singleEntryAjax.getSingleEntryById(singleEntryId, results => {\r\n entryData = results; \r\n rejectionReason = entryData[0].rejectionReason; \r\n if (document.getElementById('rejectionReason') != null)\r\n document.getElementById('rejectionReason').value = rejectionReason;\r\n });\r\n\r\n saveUserId = ed.User_ID; // userID used for cross midnight entries\r\n personId = ed.Person_ID;\r\n numberOfConsumersPresent = ed.Number_Consumers_Present;\r\n isBillable = ed.billable;\r\n keyStartStop = ed.keytimes;\r\n\r\n evvAttest = ed.attest;\r\n evvCommunity = ed.community;\r\n supervisorId = ed.supervisorId;\r\n rejectedTime = ed.rejected_time;\r\n destination = ed.destination;\r\n odometerEnd = ed.odometerend;\r\n odometerStart = ed.odometerstart;\r\n reason = ed.reason;\r\n transportationReimbursable = ed.Transportation_reimbursable;\r\n transportationUnits = ed.Transportation_Units;\r\n transportationType = ed.Transportation_reimbursable === 'N' ? 'Company' : 'Personal';\r\n licensePlateNumber = ed.licensePlateNumber;\r\n\r\n isTransportationValid = transportationType && transportationUnits ? true : false;\r\n }\r\n function clearAllGlobalVariables() {\r\n //CLEAR EVV CACHE\r\n clearSavedSignaturesAndNotes();\r\n\r\n isEdit = undefined;\r\n isAdminEdit = undefined;\r\n isCardDisabled = undefined;\r\n status = undefined;\r\n singleEntryId = undefined;\r\n\r\n consumerIds = undefined;\r\n numberOfConsumersPresent = undefined;\r\n workCode = undefined;\r\n locationId = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n totalHours = undefined;\r\n noteText = undefined;\r\n rejectionReason = undefined;\r\n isBillable = undefined;\r\n keyStartStop = undefined;\r\n startLatitude = undefined;\r\n startLongitude = undefined;\r\n endLatitude = undefined;\r\n endLongitude = undefined;\r\n crossMidnightTimeData = undefined;\r\n $.session.singleEntrycrossMidnight = undefined;\r\n\r\n timeOverlap = undefined;\r\n\r\n isTransportationValid = undefined;\r\n destination = null;\r\n odometerEnd = null;\r\n odometerStart = null;\r\n reason = null;\r\n licensePlateNumber = null;\r\n transportationType = null;\r\n transportationReimbursable = null;\r\n transportationUnits = null;\r\n\r\n tmpTransportationType = null;\r\n tmpTransportationReimbursable = null;\r\n tmpOdometerStart = null;\r\n tmpOdometerEnd = null;\r\n tmpTransportationUnits = null;\r\n tmpDestination = null;\r\n tmpReason = null;\r\n tmpLicenseplate = null;\r\n\r\n eligibleConsumersObj = {};\r\n reasonRequired = false;\r\n isEVVSingleEntry = false;\r\n defaultTimesChanged = false;\r\n defaultStartTimeChanged = false;\r\n defaultEndTimeChanged = false;\r\n evvAttest = null;\r\n evvCommunity = null;\r\n evvReasonCode = null;\r\n endTimeClicks = 0;\r\n locationTypeCode = null;\r\n }\r\n function clearCard() {\r\n // clear inputs & dropdowns\r\n var locDrop = locationDropdown.querySelector('select');\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n if (!isEdit) locDrop.value = '';\r\n startInput.value = '';\r\n startTime = null;\r\n endInput.value = '';\r\n endTime = null;\r\n hoursInput.value = '';\r\n endTimeClicks = 0;\r\n\r\n const reasonCodeDropdown = reasonDropdown.querySelector('select');\r\n reasonCodeDropdown.value = '';\r\n //Hide evv reason code\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n reasonCodeDropdown.classList.remove('error');\r\n defaultTimesChanged = false;\r\n defaultStartTimeChanged = false;\r\n defaultEndTimeChanged = false;\r\n reasonRequired = false;\r\n\r\n evvAttest = null;\r\n evvCommunity = null;\r\n evvReasonCode = null;\r\n locationTypeCode = null;\r\n\r\n // clear selected consumers\r\n if (isEdit) {\r\n }\r\n\r\n clearConsumerSection();\r\n checkPermissions();\r\n }\r\n\r\n function clearConsumerSection() {\r\n var consumerSection = document.querySelector('.timeCard__consumers');\r\n var consumers = [].slice.call(card.querySelectorAll('.seConsumerCard'));\r\n\r\n consumers.forEach(c => {\r\n var consumerCard = c.querySelector('.consumerCard');\r\n var consumerId = consumerCard.dataset.consumerId;\r\n consumerSection.removeChild(c);\r\n roster2.removeConsumerFromActiveConsumers(consumerId);\r\n consumerIds = consumerIds.filter(id => id !== consumerId);\r\n var activeConsumers = roster2.getActiveConsumers();\r\n numberOfConsumersPresent = activeConsumers ? activeConsumers.length : '0';\r\n });\r\n }\r\n\r\n // Consumers\r\n //------------------------------------\r\n async function getAllowedConsumersBasedOffResidence() {\r\n var residenceLocations = timeEntry.getResidenceLocations(); //Residence\r\n var rosterConsumers = await roster2.getAllRosterConsumers();\r\n var allowedConsumers = [];\r\n\r\n rosterConsumers.forEach(rc => {\r\n var primaryLocId = rc.conL;\r\n var locData = residenceLocations.filter(rl => rl.locationId === primaryLocId);\r\n if (locData.length > 0 && locData && locData[0].residence === 'Y') {\r\n // If a location is selected on the time entry card check this against\r\n // the primary location too. This usually only happens on edits.\r\n if (locationId) {\r\n if (locationId === primaryLocId) {\r\n allowedConsumers.push({ consumer_id: rc.id });\r\n }\r\n } else {\r\n allowedConsumers.push({ consumer_id: rc.id });\r\n }\r\n }\r\n });\r\n\r\n return allowedConsumers;\r\n }\r\n async function getAllowedConsumersBasedOffServiceLocations() {\r\n var residenceLocations = timeEntry.getResidenceLocations(); //Residence\r\n var rosterConsumers = await roster2.getAllRosterConsumers();\r\n var allowedConsumers = [];\r\n rosterConsumers.forEach(rc => {\r\n var serviceLocations = rc.LId.split('|');\r\n var locData = residenceLocations.filter(rl => {\r\n let exists = false;\r\n serviceLocations.forEach(sl => {\r\n if (rl.locationId === sl && rl.residence === 'Y') exists = true;\r\n });\r\n return exists;\r\n });\r\n if (locData.length > 0 && locData) {\r\n allowedConsumers.push({ consumer_id: rc.id });\r\n }\r\n });\r\n\r\n return allowedConsumers;\r\n }\r\n async function setAllowedConsumers(callback) { \r\n switch (isBillable) {\r\n case 'Y':\r\n switch (isAdminEdit) {\r\n case true:\r\n if ($.session.SingleEntryEditTimeEntry) {\r\n if (isEndTimeChangePermission) // this is for if pay period is closed than disabled to delete counsumers\r\n roster2.setAllowedConsumers([]);\r\n else {\r\n results = (await singleEntryAjax.getSingleEntryUsersByLocation(locationId, entryDate))\r\n .getSingleEntryUsersByLocationJSONResult;\r\n roster2.setAllowedConsumers(results);\r\n }\r\n if (callback) callback();\r\n } else {\r\n roster2.setAllowedConsumers(['%']); \r\n if (callback) callback();\r\n }\r\n break;\r\n default:\r\n if (isEndTimeChangePermission) // this is for if pay period is closed than disabled to delete counsumers\r\n roster2.setAllowedConsumers([]);\r\n else {\r\n results = (await singleEntryAjax.getSingleEntryUsersByLocation(locationId, entryDate))\r\n .getSingleEntryUsersByLocationJSONResult;\r\n roster2.setAllowedConsumers(results);\r\n }\r\n if (callback) callback();\r\n break; \r\n }\r\n break;\r\n default:\r\n if (isEndTimeChangePermission) // this is for if pay period is closed than disabled to delete counsumers\r\n roster2.setAllowedConsumers([]);\r\n else {\r\n roster2.setAllowedConsumers(['%']);\r\n }\r\n if (callback) callback();\r\n break;\r\n }\r\n }\r\n\r\n function showConsumerExtras(consumercard, consumerid) {\r\n var extras = POPUP.build({ id: 'consumerExtrasPopup' });\r\n extras.classList.add('extras');\r\n POPUP.show(extras);\r\n\r\n var evv;\r\n // check cache for instance by consumerid\r\n if (consumerid in $.session.evvDataCache) {\r\n // if exist in cache grab it\r\n evv = $.session.evvDataCache[consumerid];\r\n evv.editInit();\r\n evv.populatePopup();\r\n } else {\r\n // if nothing found create new EVV instance\r\n evv = new EVV({\r\n consumer: consumercard,\r\n consumerId: consumerid,\r\n signatureDataUrl: '',\r\n noteDataString: '',\r\n fromSave: false,\r\n });\r\n evv.populatePopup();\r\n }\r\n }\r\n function buildConsumerCard(consumerCard, consumerData) {\r\n consumerCard.classList.remove('highlighted');\r\n\r\n var card = document.createElement('div');\r\n card.classList.add('seConsumerCard');\r\n\r\n card.appendChild(consumerCard);\r\n\r\n if (\r\n $.session.singleEntryShowConsumerSignature === 'Y' ||\r\n $.session.singleEntryShowConsumerNote === 'Y'\r\n ) {\r\n var hasNote = consumerData.hasNote === 'True' ? true : false;\r\n var hasSignature = consumerData.hasSignature === 'True' ? true : false;\r\n var classes = hasSignature || hasNote ? ['evv-highlight', 'extrasBtn'] : ['extrasBtn'];\r\n var extrasBtn = button.build({\r\n text: 'Action',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: classes,\r\n callback: function () {\r\n showConsumerExtras(consumerCard, consumerData.consumerid);\r\n },\r\n });\r\n card.appendChild(extrasBtn);\r\n }\r\n\r\n consumerCard.addEventListener('click', removeConsumerFromTimeCard);\r\n\r\n return card;\r\n }\r\n function moveConsumersToTimeCard(consumers) {\r\n var consumerList = document.querySelector('.timeCard__consumers');\r\n consumers.forEach(async consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (consumerIds.filter(id => id === consumer.id).length > 0) return;\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumerCard(clone, { consumerid: consumer.id });\r\n consumerList.appendChild(card);\r\n consumerIds.push(consumer.id);\r\n await evvCheckConsumerEligibility(consumer.id);\r\n numberOfConsumersPresent = consumerIds.length;\r\n });\r\n checkPermissions();\r\n }\r\n function removeConsumerFromTimeCard(event) {\r\n if (\r\n $.session.singleEntryAddConsumersOnBillable === 'P' &&\r\n isEdit === true &&\r\n consumerIds.length === 1\r\n ) {\r\n // do not allow them to remove consumer and show an error\r\n var consumerWarningPopup = POPUP.build({\r\n classNames: ['warning'],\r\n });\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'You are not allowed to remove consumers from this entry.';\r\n\r\n consumerWarningPopup.appendChild(warningMessage);\r\n\r\n POPUP.show(consumerWarningPopup);\r\n return;\r\n }\r\n\r\n // remove consumer from active consumers\r\n var consumerSection = event.target.parentElement.parentElement;\r\n var consumerWrap = event.target.parentElement;\r\n consumerSection.removeChild(consumerWrap);\r\n\r\n var consumerid = event.target.dataset.consumerId;\r\n roster2.removeConsumerFromActiveConsumers(consumerid);\r\n consumerIds = consumerIds.filter(id => id !== consumerid);\r\n\r\n var activeConsumers = roster2.getActiveConsumers();\r\n numberOfConsumersPresent = activeConsumers ? activeConsumers.length : '0';\r\n // Remove consumer from evv data cache\r\n removeConsumerFromEVVCache(consumerid);\r\n //\r\n checkPermissions();\r\n evvCheckRemainingConsumers();\r\n }\r\n\r\n // Transportation\r\n //------------------------------------\r\n function saveTransportation() {\r\n transportationSaved = true;\r\n POPUP.hide(transportationPopup);\r\n transportationBtn.classList.add('success');\r\n }\r\n function deleteTransportation() {\r\n transportationSaved = false;\r\n POPUP.hide(transportationPopup);\r\n clearTransportationValues();\r\n transportationBtn.classList.remove('success');\r\n }\r\n function clearTransportationValues() {\r\n destination = null;\r\n odometerEnd = null;\r\n odometerStart = null;\r\n reason = null;\r\n transportationType = null;\r\n transportationReimbursable = null;\r\n transportationUnits = null;\r\n licensePlateNumber = null;\r\n }\r\n function calculateMileage(startVal, endVal) {\r\n var start = parseInt(startVal);\r\n var end = parseInt(endVal);\r\n if (start && end && start <= end) {\r\n return end - start;\r\n } else {\r\n return 'error';\r\n }\r\n }\r\n function checkTransportationRequiredFields() {\r\n //var isTransEdit = transportationBtn.classList.contains('success');\r\n // odometer\r\n function checkOdometer() {\r\n var odoTotal = odometerTotalInput.querySelector('input');\r\n\r\n var odoStartVal = odometerStart;\r\n var odoEndVal = odometerEnd;\r\n var odoTotalVal = transportationUnits;\r\n\r\n var isStartValid;\r\n var isEndValid;\r\n\r\n function checkStartVal() {\r\n if (!odoStartVal || odoStartVal === '') {\r\n odometerStartInput.classList.add('error');\r\n return 'error';\r\n } else {\r\n odometerStartInput.classList.remove('error');\r\n return 'success';\r\n }\r\n }\r\n function checkEndVal() {\r\n if (!odoEndVal || odoEndVal === '') {\r\n odometerEndInput.classList.add('error');\r\n return 'error';\r\n } else {\r\n odometerEndInput.classList.remove('error');\r\n return 'success';\r\n }\r\n }\r\n function setToalMiles() {\r\n var totalMiles = calculateMileage(odoStartVal, odoEndVal);\r\n if (totalMiles !== 'error') {\r\n odoTotal.value = totalMiles;\r\n transportationUnits = totalMiles;\r\n odometerTotalInput.classList.remove('error');\r\n } else {\r\n odometerStartInput.classList.add('error');\r\n odometerEndInput.classList.add('error');\r\n odometerTotalInput.classList.add('error');\r\n }\r\n }\r\n\r\n if (requiredFields.isOdometerRequired === 'Y') {\r\n // only allowed to use odo start & stop inputs\r\n // odometerTotalInput.classList.add('disabled');\r\n isStartValid = checkStartVal();\r\n isEndValid = checkEndVal();\r\n if (isStartValid !== 'error' && isEndValid !== 'error') {\r\n setToalMiles();\r\n }\r\n\r\n if (\r\n transportationUnits !== '' &&\r\n (odometerEnd == '' || odometerEnd == null) &&\r\n (odometerStart == '' || odometerStart == null)\r\n ) {\r\n odometerTotalInput.classList.remove('error');\r\n odometerStartInput.classList.remove('error');\r\n odometerEndInput.classList.remove('error');\r\n }\r\n\r\n if (\r\n transportationUnits == null &&\r\n (odometerEnd == '' || odometerEnd == null) &&\r\n (odometerStart == '' || odometerStart == null)\r\n ) {\r\n odometerTotalInput.classList.add('error');\r\n odometerStartInput.classList.add('error');\r\n odometerEndInput.classList.add('error');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (requiredFields.isOdometerRequired === 'N') {\r\n // allowed to use any of the three\r\n var startValue = !odoStartVal || odoStartVal === '' ? false : true;\r\n var endValue = !odoEndVal || odoEndVal === '' ? false : true;\r\n var totalValue = !odoTotalVal || odoTotalVal === '' ? false : true;\r\n\r\n if (!startValue && !endValue && !totalValue) {\r\n // blank slate, clear all errors\r\n // odometerTotalInput.classList.remove('disabled');\r\n // odometerTotalInput.classList.remove('error');\r\n odometerTotalInput.classList.add('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerStartInput.classList.add('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerEndInput.classList.add('error');\r\n\r\n return;\r\n }\r\n\r\n if (\r\n (totalValue && (!startValue || !endValue)) ||\r\n (odoStartVal === '0' && odoEndVal === '0')\r\n ) {\r\n // use total miles input\r\n // var odometerTotalInput = odometerTotalInput.querySelector('input');\r\n if (!startValue && endValue) {\r\n //var odoStartInput = odometerStartInput.querySelector('input');\r\n odometerEndInput.classList.remove('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerStartInput.classList.add('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerTotalInput.classList.add('disabled');\r\n // odometerTotalInput.classList.add('error');\r\n odoTotal.value = '';\r\n totalValue = false;\r\n odoTotalVal = '';\r\n }\r\n if (!endValue && startValue) {\r\n // var odoEndInput = odometerEndInput.querySelector('input');\r\n odometerStartInput.classList.remove('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerEndInput.classList.add('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerTotalInput.classList.add('disabled');\r\n // odometerTotalInput.classList.add('error');\r\n odoTotal.value = '';\r\n totalValue = false;\r\n odoTotalVal = '';\r\n }\r\n\r\n if (!endValue && !startValue && odoTotal.value !== '') {\r\n // var odoEndInput = odometerEndInput.querySelector('input');\r\n odometerEndInput.classList.remove('error');\r\n odometerEndInput.classList.add('disabled');\r\n odometerStartInput.classList.remove('error');\r\n odometerStartInput.classList.add('disabled');\r\n odometerTotalInput.classList.remove('disabled');\r\n odometerTotalInput.classList.remove('error');\r\n // odoTotal.value = '';\r\n // totalValue = false;\r\n // odoTotalVal = '';\r\n }\r\n\r\n if (!endValue && !startValue && odoTotal.value === '') {\r\n // var odoEndInput = odometerEndInput.querySelector('input');\r\n odometerEndInput.classList.add('error');\r\n odometerEndInput.classList.remove('disabled');\r\n odometerStartInput.classList.add('error');\r\n odometerStartInput.classList.remove('disabled');\r\n odometerTotalInput.classList.remove('disabled');\r\n odometerTotalInput.classList.add('error');\r\n odoTotal.value = '';\r\n totalValue = false;\r\n odoTotalVal = '';\r\n }\r\n //odoStartInput.value = '';\r\n // odoEndInput.value = '';\r\n\r\n return;\r\n }\r\n\r\n if (startValue || endValue) {\r\n // use odo start & end inputs\r\n odometerTotalInput.classList.add('disabled');\r\n\r\n isStartValid = checkStartVal();\r\n isEndValid = checkEndVal();\r\n if (isStartValid !== 'error' && isEndValid !== 'error') {\r\n setToalMiles();\r\n }\r\n\r\n return;\r\n }\r\n }\r\n } // end of odometer check\r\n\r\n function checkTotalMiles() {\r\n var totalMilesVal = transportationUnits;\r\n\r\n if (requiredFields.isOdometerRequired === 'N') {\r\n if (totalMilesVal === '' || !totalMilesVal) {\r\n odometerTotalInput.classList.add('error');\r\n } else {\r\n odometerTotalInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n // reason\r\n function checkReason() {\r\n var reasonVal = reason;\r\n\r\n if (requiredFields.isReasonRequired === 'Y') {\r\n if (reasonVal === '' || !reasonVal) {\r\n reasonInput.classList.add('error');\r\n } else {\r\n reasonInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n // destination\r\n function checkDestination() {\r\n var destinationVal = destination;\r\n\r\n if (requiredFields.isDestinationRequired === 'Y') {\r\n if (destinationVal === '' || !destinationVal) {\r\n destinationInput.classList.add('error');\r\n } else {\r\n destinationInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n // license plate\r\n function checkLicensePlate() {\r\n var licenseplateVal = licensePlateNumber;\r\n\r\n if (requiredFields.isLicensePlateRequired === 'Y') {\r\n if (licenseplateVal === '' || !licenseplateVal) {\r\n licenseplateInput.classList.add('error');\r\n } else {\r\n licenseplateInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n checkTotalMiles();\r\n checkOdometer();\r\n checkReason();\r\n checkDestination();\r\n checkLicensePlate();\r\n\r\n var errors = [].slice.call(transportationPopup.querySelectorAll('.error'));\r\n if (errors && errors.length === 0) {\r\n saveTransBtn.classList.remove('disabled');\r\n } else {\r\n saveTransBtn.classList.add('disabled');\r\n }\r\n }\r\n function setupTransportationEvents() {\r\n // cache old values in case of cancel click\r\n var oldTransportationType;\r\n var oldlicenseplate;\r\n var oldTransportationReimbursable;\r\n var oldOdometerStart;\r\n var oldOdometerEnd;\r\n var oldTransportationUnits;\r\n var oldDestination;\r\n var oldReason;\r\n\r\n transportationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n oldTransportationType = transportationType;\r\n oldTransportationReimbursable = transportationReimbursable;\r\n\r\n if (selectedOption.value === 'Company') {\r\n transportationType = selectedOption.value;\r\n transportationReimbursable = 'N';\r\n } else if (selectedOption.value === 'Personal') {\r\n transportationType = selectedOption.value;\r\n transportationReimbursable = 'Y';\r\n }\r\n checkTransportationRequiredFields();\r\n });\r\n\r\n licenseplateInput.addEventListener('change', event => {\r\n if (!oldlicenseplate) oldlicenseplate = licensePlateNumber;\r\n licensePlateNumber = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n odometerStartInput.addEventListener('change', event => {\r\n if (!oldOdometerStart) oldOdometerStart = odometerStart;\r\n odometerStart = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n odometerEndInput.addEventListener('change', event => {\r\n if (!oldOdometerEnd) oldOdometerEnd = odometerEnd;\r\n odometerEnd = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n odometerTotalInput.addEventListener('change', event => {\r\n // oldTransportationUnits = transportationUnits;\r\n transportationUnits = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n destinationInput.addEventListener('change', event => {\r\n if (!oldDestination) oldDestination = destination;\r\n destination = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n reasonInput.addEventListener('change', event => {\r\n if (!oldReason) oldReason = reason;\r\n reason = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n\r\n saveTransBtn.addEventListener('click', () => {\r\n saveTransportation();\r\n checkPermissions();\r\n });\r\n deleteTransBtn.addEventListener('click', deleteTransportation);\r\n cancelTransBtn.addEventListener('click', () => {\r\n if (transportationSaved) {\r\n transportationType = oldTransportationType ? oldTransportationType : transportationType;\r\n transportationReimbursable = oldTransportationReimbursable\r\n ? oldTransportationReimbursable\r\n : transportationReimbursable;\r\n odometerStart =\r\n oldOdometerStart || oldOdometerStart === '' ? oldOdometerStart : odometerStart;\r\n odometerEnd = oldOdometerEnd || oldOdometerEnd === '' ? oldOdometerEnd : odometerEnd;\r\n destination = oldDestination ? oldDestination : destination;\r\n reason = oldReason ? oldReason : reason;\r\n licensePlateNumber = oldlicenseplate ? oldlicenseplate : licensePlateNumber;\r\n } else {\r\n clearTransportationValues();\r\n }\r\n\r\n POPUP.hide(transportationPopup);\r\n });\r\n }\r\n function populateTransportationDropdown() {\r\n var data = [\r\n { value: 'Personal', text: 'Personal' },\r\n { value: 'Company', text: 'Company' },\r\n ];\r\n\r\n if (!transportationType || transportationType === 'Personal') {\r\n transportationType = 'Personal';\r\n transportationReimbursable = 'Y';\r\n }\r\n\r\n dropdown.populate(transportationDropdown, data, transportationType);\r\n }\r\n function buildTransportationPopup() {\r\n // clear tmp values\r\n tmpTransportationType = null;\r\n tmpTransportationReimbursable = null;\r\n tmpOdometerStart = null;\r\n tmpOdometerEnd = null;\r\n tmpTransportationUnits = null;\r\n tmpDestination = null;\r\n tmpReason = null;\r\n tmpLicenseplate = null;\r\n\r\n var popupClassNames = isCardDisabled\r\n ? ['timeEntryTransportationPopup', 'popup--filter', 'disabled']\r\n : ['timeEntryTransportationPopup', 'popup--filter'];\r\n\r\n transportationPopup = POPUP.build({\r\n classNames: popupClassNames,\r\n hideX: true,\r\n });\r\n\r\n transportationDropdown = dropdown.build({\r\n label: 'Transportation Type',\r\n style: 'secondary',\r\n });\r\n licenseplateInput = input.build({\r\n label: 'License Plate',\r\n type: 'text',\r\n style: 'secondary',\r\n value: licensePlateNumber,\r\n attributes: [{ key: 'maxlength', value: 10 }],\r\n });\r\n odometerStartInput = input.build({\r\n label: 'Odometer Start',\r\n type: 'number',\r\n style: 'secondary',\r\n value: odometerStart === '0' ? '' : odometerStart,\r\n });\r\n odometerEndInput = input.build({\r\n label: 'Odometer End',\r\n type: 'number',\r\n style: 'secondary',\r\n value: odometerEnd === '0' ? '' : odometerEnd,\r\n });\r\n odometerTotalInput = input.build({\r\n label: 'Total Miles',\r\n type: 'number',\r\n style: 'secondary',\r\n value: transportationUnits,\r\n });\r\n destinationInput = input.build({\r\n label: 'Destination',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: destination,\r\n });\r\n reasonInput = input.build({\r\n label: 'Reason',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: reason,\r\n });\r\n\r\n saveTransBtn = button.build({\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n deleteTransBtn = button.build({\r\n text: 'Delete',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n cancelTransBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n classNames: 'cancelTransBtn',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveTransBtn);\r\n btnWrap.appendChild(deleteTransBtn);\r\n btnWrap.appendChild(cancelTransBtn);\r\n\r\n transportationPopup.appendChild(transportationDropdown);\r\n transportationPopup.appendChild(odometerStartInput);\r\n transportationPopup.appendChild(odometerEndInput);\r\n transportationPopup.appendChild(odometerTotalInput);\r\n transportationPopup.appendChild(licenseplateInput);\r\n transportationPopup.appendChild(destinationInput);\r\n transportationPopup.appendChild(reasonInput);\r\n transportationPopup.appendChild(btnWrap);\r\n\r\n populateTransportationDropdown();\r\n setupTransportationEvents();\r\n checkTransportationRequiredFields();\r\n\r\n POPUP.show(transportationPopup);\r\n }\r\n function buildTransportationBtn() {\r\n var classes = isTransportationValid ? ['transportationBtn', 'success'] : ['transportationBtn'];\r\n return (btn = button.build({\r\n text: 'Add Transportation',\r\n icon: 'car',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: classes,\r\n }));\r\n }\r\n\r\n // Permissions & Required Fields\r\n //------------------------------------\r\n function checkRequiredFields() {\r\n // date\r\n function checkDates() {\r\n var payPeriodStart = new Date(payPeriod.start.split('-').join('/'));\r\n var payPeriodEnd = new Date(payPeriod.end.split('-').join('/'));\r\n var newEntryDate = entryDate.split('-');\r\n newEntryDate[1] = newEntryDate[1] - 1;\r\n newEntryDate = new Date(newEntryDate[0], newEntryDate[1], newEntryDate[2], 0, 0, 0);\r\n\r\n // check if entered date is outside the pay period\r\n var isDateAfter = dates.isAfter(newEntryDate, payPeriodStart);\r\n var isDateBefore = dates.isBefore(newEntryDate, payPeriodEnd);\r\n\r\n if (!isDateAfter) isDateAfter = dates.isEqual(newEntryDate, payPeriodStart);\r\n if (!isDateBefore) isDateBefore = dates.isEqual(newEntryDate, payPeriodEnd);\r\n\r\n if (!isDateAfter || !isDateBefore) {\r\n dateInput.classList.add('error');\r\n } else {\r\n dateInput.classList.remove('error');\r\n }\r\n\r\n // check if entered date is beyond todays date\r\n var todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n var isDateAfterToday = dates.isAfter(newEntryDate, todayDate);\r\n\r\n // for non-billable work codes, selected date can be beyond today\r\n // Added isDateAfter, and isDateBefore check. Can't blanket remove the error for non-billable\r\n // because the date still has to be within the pay period\r\n if (isBillable === 'N' && isDateAfter && isDateBefore) dateInput.classList.remove('error');\r\n if (isBillable === 'Y' && isDateAfter && isDateBefore && isDateAfterToday)\r\n dateInput.classList.add('error');\r\n }\r\n // workcode\r\n function checkWorkcodes() {\r\n var workCodeSelect = workCodeDropdown.querySelector('select');\r\n var currentValue = workCodeSelect.value;\r\n if (currentValue === '%') {\r\n workCodeDropdown.classList.add('error');\r\n } else {\r\n workCodeDropdown.classList.remove('error');\r\n }\r\n }\r\n // location\r\n function checkLocation() {\r\n var isDisabled = locationDropdown.classList.contains('disabled');\r\n var locationSelect = locationDropdown.querySelector('select');\r\n var currentValue = locationSelect.value;\r\n if (isDisabled) {\r\n locationDropdown.classList.remove('error');\r\n } else {\r\n if (currentValue === '%' || currentValue === '') {\r\n locationDropdown.classList.add('error');\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n if (isBillable === 'Y') roster2.toggleMiniRosterBtnVisible(true);\r\n }\r\n }\r\n }\r\n\r\n // startTime, endTime & totalHours\r\n function checkTimeAndHours() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n\r\n if (!isBillable) {\r\n startTimeInput.classList.remove('error');\r\n totalHoursInput.classList.remove('error');\r\n } else {\r\n if (keyStartStop === 'Y') {\r\n if (!timeOverlap) {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n }\r\n\r\n var todaysDate = UTIL.getTodaysDate();\r\n // error endTime: for billable codes with Service Date today, don't allow cross over midnight (next day)\r\n if (isEdit && evvReasonCode !== '') {\r\n if (\r\n isBillable === 'Y' &&\r\n entryDate === todaysDate &&\r\n checkTimeForAfterNow(endInput.value)\r\n ) {\r\n endTimeInput.classList.add('error');\r\n }\r\n } else if (isEdit && evvReasonCode === '') {\r\n if (isBillable === 'Y' && entryDate > todaysDate) {\r\n endTimeInput.classList.add('error');\r\n }\r\n } else {\r\n if (\r\n isBillable === 'Y' &&\r\n entryDate === todaysDate &&\r\n $.session.singleEntrycrossMidnight\r\n ) {\r\n endTimeInput.classList.add('error');\r\n }\r\n }\r\n totalHoursInput.classList.remove('error');\r\n } else {\r\n if (hoursInput.value === '' || hoursInput.value < 0) {\r\n totalHoursInput.classList.add('error');\r\n } else {\r\n totalHoursInput.classList.remove('error');\r\n }\r\n startTimeInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n function checkStartTimeInputsForAfterNow() {\r\n const tempNow = new Date();\r\n const convertedToday = new Date(tempNow.getFullYear(), tempNow.getMonth(), tempNow.getDate());\r\n const splitServiceDate = entryDate.split('-');\r\n const entryDateObj = new Date(\r\n splitServiceDate[0],\r\n parseInt(splitServiceDate[1]) - 1,\r\n splitServiceDate[2],\r\n );\r\n\r\n if (isBillable === 'Y' && sendEvvData === 'Y' && !(entryDateObj < convertedToday)) {\r\n if (checkTimeForAfterNow(startTime)) {\r\n startTimeInput.classList.add('error');\r\n }\r\n if (checkTimeForAfterNow(endTime) && endTime !== '00:00') {\r\n endTimeInput.classList.add('error');\r\n }\r\n }\r\n }\r\n // consumers\r\n function checkConsumers() {\r\n var activeConsumers = roster2.getActiveConsumers();\r\n var consumerError = document.querySelector('.consumerSectionError');\r\n\r\n if (isBillable === 'Y') {\r\n // error\r\n if ($.session.singleEntryAddConsumersOnBillable === 'P') {\r\n // require a consumer to be picked\r\n if (activeConsumers.length < 1) {\r\n // show consumer error\r\n consumerError.innerHTML = `*You must select at least one consumer.`;\r\n consumerError.classList.add('error');\r\n consumerError.classList.remove('hidden');\r\n } else {\r\n consumerError.classList.add('hidden');\r\n consumerError.classList.remove('warning');\r\n consumerError.classList.remove('error');\r\n }\r\n }\r\n // warning\r\n if ($.session.singleEntryAddConsumersOnBillable === 'Y') {\r\n // do not require a consumer to be picked but give warning\r\n if (activeConsumers.length < 1) {\r\n // show consumer warning\r\n consumerError.innerHTML = `*It is advised you select a consumer.`;\r\n consumerError.classList.add('warning');\r\n consumerError.classList.remove('hidden');\r\n } else {\r\n consumerError.classList.add('hidden');\r\n consumerError.classList.remove('warning');\r\n consumerError.classList.remove('error');\r\n }\r\n }\r\n } else {\r\n consumerError.classList.add('hidden');\r\n consumerError.classList.remove('warning');\r\n consumerError.classList.remove('error');\r\n }\r\n }\r\n // note\r\n function checkNote() {\r\n if (requiredFields.isNoteRequired === 'Y') {\r\n if (noteText === '' || !noteText) {\r\n noteInput.classList.add('error');\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n function checkEvv() {\r\n var isDisabled = reasonDropdown.classList.contains('disabled');\r\n var reasonSelect = reasonDropdown.querySelector('select');\r\n var currentValue = reasonSelect.value;\r\n if (isDisabled) {\r\n reasonDropdown.classList.remove('error');\r\n } else {\r\n if (\r\n currentValue === '%' ||\r\n (currentValue === '' &&\r\n reasonRequired &&\r\n (!evvReasonCode || evvReasonCode === '%') &&\r\n defaultTimesChanged)\r\n ) {\r\n if (document.querySelector('.timeCard__evv').style.display !== 'none') {\r\n reasonDropdown.classList.add('error');\r\n }\r\n\r\n // roster2.toggleMiniRosterBtnVisible(false);\r\n } else {\r\n reasonDropdown.classList.remove('error');\r\n // if (isBillable === 'Y') roster2.toggleMiniRosterBtnVisible(true);\r\n }\r\n }\r\n }\r\n\r\n checkDates();\r\n checkWorkcodes();\r\n checkLocation();\r\n checkTimeAndHours();\r\n checkStartTimeInputsForAfterNow();\r\n checkConsumers();\r\n checkNote();\r\n checkEvv();\r\n\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (status === 'A' || status === 'S' || status === 'I' || hasErrors.length !== 0) {\r\n if ($.session.SingleEntryEditTimeEntry && status === 'A') {\r\n saveBtn.classList.remove('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n // deleteBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n\r\n if (keyStartStop === 'Y') {\r\n // if 'Y' then end time is enabled and we need to check for it\r\n if (endTime) {\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n } else {\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n } else {\r\n // no check needed, done by hasErrors\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n function checkPermissions() {\r\n // Enable/Disable Fields\r\n if ($.session.SingleEntryEditTimeEntry && status === 'A') {\r\n } else if (\r\n $.session.editSingleEntryCardStatus === 'S' ||\r\n $.session.editSingleEntryCardStatus === 'I' ||\r\n $.session.editSingleEntryCardStatus === 'A'\r\n ) {\r\n disableInput(dateInput);\r\n disableInput(startTimeInput);\r\n disableInput(endTimeInput);\r\n disableInput(noteInput);\r\n if (licenseplateInput) disableInput(licenseplateInput);\r\n }\r\n\r\n // Location dropdown\r\n if (\r\n (isBillable === 'Y' || !isBillable) &&\r\n !$.session.singleEntryUseServiceLocations &&\r\n $.session.singleEntryAddConsumersOnBillable === 'P'\r\n ) {\r\n disableInput(locationDropdown);\r\n } else {\r\n enableInput(locationDropdown);\r\n }\r\n\r\n // Key Times\r\n if (!isBillable) {\r\n disableInput(totalHoursInput);\r\n disableInput(startTimeInput);\r\n disableInput(endTimeInput);\r\n } else {\r\n if (keyStartStop === 'Y') {\r\n disableInput(totalHoursInput);\r\n enableInput(startTimeInput);\r\n enableInput(endTimeInput);\r\n } else {\r\n enableInput(totalHoursInput);\r\n disableInput(startTimeInput);\r\n disableInput(endTimeInput);\r\n }\r\n }\r\n\r\n // Save, Delete & Cancel Buttons\r\n if (isEdit) {\r\n if (\r\n $.session.editSingleEntryCardStatus === 'S' ||\r\n $.session.editSingleEntryCardStatus === 'I' ||\r\n // $.session.editSingleEntryCardStatus === 'R' ||\r\n $.session.SingleEntryUpdate === false\r\n ) {\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n checkRequiredFields();\r\n\r\n if (isEndTimeChangePermission) {\r\n workCodeDropdown.classList.add('disabled');\r\n disableInput(startTimeInput);\r\n disableInput(totalHoursInput);\r\n enableInput(endTimeInput);\r\n disableInput(locationDropdown);\r\n disableInput(dateInput);\r\n disableInput(noteInput);\r\n if (reasonDropdown) disableInput(reasonDropdown);\r\n if (licenseplateInput) disableInput(licenseplateInput);\r\n disableInput(workCodeDropdown);\r\n if (locationTypeDropdown) disableInput(locationTypeDropdown);\r\n dateInput.classList.remove('error');\r\n noteInput.classList.remove('error');\r\n workCodeDropdown.classList.remove('error');\r\n startTimeInput.classList.remove('error');\r\n deleteBtn.classList.remove('disabled');\r\n endTimeInput.classList.remove('error'); \r\n if (endTime != null && endTime < startTime) {\r\n endTimeInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled'); \r\n }\r\n else {\r\n endTimeInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n // Events\r\n //------------------------------------\r\n function setupCardEvents() {\r\n if (!isEdit) {\r\n payPeriodDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateRange = event.target.value.split(' - ');\r\n var startDateIso = UTIL.formatDateToIso(dateRange[0]);\r\n var endDateIso = UTIL.formatDateToIso(dateRange[1]);\r\n sendEvvData = selectedOption.dataset.sendevv;\r\n payPeriod = timeEntry.setSelectedPayPeriod(startDateIso, endDateIso, event.target.value);\r\n updateDateValMinMax();\r\n });\r\n } else {\r\n deleteBtn.addEventListener('click', event => {\r\n var warningMessage = `This entry will be permanently deleted, do you wish to continue?`;\r\n timeEntryReview.showDeleteEntryWarningPopup(warningMessage, () =>\r\n timeEntry.deleteEntry(singleEntryId, isAdminEdit, payPeriod),\r\n );\r\n });\r\n }\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n locationId = event.target.value;\r\n setAllowedConsumers();\r\n clearConsumerSection();\r\n checkPermissions();\r\n });\r\n reasonDropdown.addEventListener('change', event => {\r\n evvReasonCode = event.target.value;\r\n checkPermissions();\r\n });\r\n locationTypeDropdown.addEventListener('change', event => {\r\n locationTypeCode = event.target.value;\r\n checkPermissions();\r\n });\r\n attestCheckbox.addEventListener('change', event => {\r\n checkAttestStatus();\r\n });\r\n workCodeDropdown.addEventListener('change', event => workCodeDropdownEvent(event));\r\n dateInput.addEventListener('change', event => {\r\n entryDate = event.target.value;\r\n roster2.updateSelectedDate(entryDate);\r\n evvCheckConsumerEligibilityExistingConsumers();\r\n checkPermissions();\r\n });\r\n dateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n startTimeInput.addEventListener('focusout', async event => {\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n var isTimeValid = UTIL.validateTime(event.target.value);\r\n if (!isTimeValid) {\r\n hoursInput.value = '';\r\n checkPermissions();\r\n return;\r\n }\r\n\r\n const origStartTime = startTime;\r\n startTime = `${event.target.value.split(':')[0]}:${event.target.value.split(':')[1]}`;\r\n if ($.session.singleEntry15minDoc === 'Y' && origStartTime !== startTime) {\r\n var min = parseInt(startTime.split(':')[1]);\r\n if (min % 15 !== 0) {\r\n errorPopup('This is not a valid time, you must document to the nearest quarter hour.');\r\n event.target.value = '';\r\n startTime = '0';\r\n }\r\n }\r\n\r\n if (origStartTime !== startTime) defaultTimesChanged = true;\r\n if (origStartTime !== startTime) {\r\n defaultStartTimeChanged = true;\r\n reasonRequired = true; // for evv\r\n } else {\r\n defaultStartTimeChanged = false;\r\n reasonRequired = false;\r\n }\r\n\r\n if (isEdit && defaultStartTimeChanged) {\r\n reasonDropdown.classList.remove('disabled');\r\n const reasonCodeDropdown = reasonDropdown.querySelector('select');\r\n reasonCodeDropdown.value = '%';\r\n evvReasonCode = '%';\r\n reasonDropdown.classList.add('error');\r\n }\r\n\r\n await evvCheck();\r\n setTotalHours();\r\n checkPermissions();\r\n UTIL.getGeoLocation(setStartTimeLocation);\r\n });\r\n endTimeInput.addEventListener('click', event => {\r\n setEndTimeOnClick(event);\r\n });\r\n endTimeInput.addEventListener('focusout', async event => {\r\n var hoursInput = totalHoursInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var isTimeValid = UTIL.validateTime(event.target.value);\r\n if (!isTimeValid) {\r\n $.session.singleEntrycrossMidnight = false;\r\n //\tcrossMidnightTimeData = {};\r\n endInput.value = '';\r\n endTime = null;\r\n hoursInput.value = '';\r\n totalHours = null;\r\n checkPermissions();\r\n return;\r\n }\r\n var now = new Date();\r\n let origEndTime = endTime;\r\n let systemDefaultForCheckEnd = now.getHours() + ':' + now.getMinutes();\r\n endTime = `${event.target.value.split(':')[0]}:${event.target.value.split(':')[1]}`; //Edge fucks shit up with selecting time with the time picker\r\n if ($.session.singleEntry15minDoc === 'Y' && origEndTime !== endTime) {\r\n // and endTime !== event.target.value\r\n var min = parseInt(endTime.split(':')[1]);\r\n if (min % 15 !== 0) {\r\n errorPopup('This is not a valid time, you must document to the nearest quarter hour.');\r\n event.target.value = '';\r\n endTime = '0';\r\n }\r\n }\r\n\r\n if (origEndTime) {\r\n origEndTime = `${origEndTime.split(':')[0]}:${origEndTime.split(':')[1]}`;\r\n }\r\n\r\n if (origEndTime !== endTime) defaultTimesChanged = true;\r\n\r\n // 9:30:00 !== 9:30\r\n if (systemDefaultForCheckEnd !== endTime) {\r\n defaultEndTimeChanged = true;\r\n reasonRequired = true; // for evv\r\n } else {\r\n defaultEndTimeChanged = false;\r\n reasonRequired = false;\r\n }\r\n\r\n if (isEdit && defaultTimesChanged) {\r\n reasonDropdown.classList.remove('disabled');\r\n const reasonCodeDropdown = reasonDropdown.querySelector('select');\r\n reasonCodeDropdown.value = '%';\r\n evvReasonCode = '%';\r\n reasonDropdown.classList.add('error');\r\n }\r\n\r\n await evvCheck();\r\n setTotalHours();\r\n checkPermissions();\r\n UTIL.getGeoLocation(setEndTimeLocation);\r\n });\r\n // TOTALHOURSINPUT - changed from keyup to input because using the arrow keys\r\n // (not on the keyboard but in the input itself) didn't trigger the event listener\r\n totalHoursInput.addEventListener('input', event => {\r\n totalHours = event.target.value;\r\n checkPermissions();\r\n });\r\n noteInput.addEventListener('keyup', event => {\r\n noteText = event.target.value;\r\n checkPermissions();\r\n });\r\n transportationBtn.addEventListener('click', () => {\r\n buildTransportationPopup();\r\n });\r\n saveBtn.addEventListener('click', async event => {\r\n event.target.classList.add('disabled');\r\n saveOrUpdate = event.target.dataset.insertType;\r\n if (saveOrUpdate === 'Save') {\r\n const result = await singleEntryAjax.getExistingTimeEntry();\r\n const { getExistingTimeEntryResult } = result;\r\n if (getExistingTimeEntryResult.length > 0 && $.session.anyRequireEndTime == 'Y') {\r\n newTimeEntry.endDateWarningPopup(getExistingTimeEntryResult);\r\n } else {\r\n timeEntry.getEntryData(keyStartStop);\r\n }\r\n }\r\n if (saveOrUpdate === 'Update') timeEntry.updateEntry(isAdminEdit, payPeriod, keyStartStop);\r\n });\r\n saveAndSumbitBtn.addEventListener('click', async event => {\r\n // Save entry first\r\n event.target.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n saveOrUpdate = event.target.dataset.insertType;\r\n\r\n const saveAndUpdate = true;\r\n if (saveOrUpdate === 'Save') {\r\n const result = await singleEntryAjax.getExistingTimeEntry();\r\n const { getExistingTimeEntryResult } = result;\r\n if (getExistingTimeEntryResult.length > 0 && $.session.anyRequireEndTime == 'Y') {\r\n newTimeEntry.endDateWarningPopup(getExistingTimeEntryResult);\r\n } else {\r\n timeEntry.getEntryData(keyStartStop, saveAndUpdate);\r\n }\r\n }\r\n if (saveOrUpdate === 'Update')\r\n timeEntry.updateEntry(isAdminEdit, payPeriod, keyStartStop, saveAndUpdate);\r\n\r\n // TODO, make global so access from timeentry.js\r\n // event.target.classList.remove('disabled');\r\n // saveBtn.classList.remove('disabled');\r\n });\r\n cancelBtn.addEventListener('click', () => {\r\n if (isAdminEdit) {\r\n timeApproval.refreshPage(payPeriod);\r\n } else {\r\n timeEntryReview.refreshPage(payPeriod);\r\n }\r\n clearAllGlobalVariables();\r\n });\r\n }\r\n function enableSaveButtons() {\r\n saveBtn.classList.remove('disabled');\r\n saveAndSumbitBtn.classList.remove('disabled');\r\n }\r\n\r\n function enableSaveButton() {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n async function customRosterApplyFilterEvent() {\r\n if (isBillable === 'Y' && !$.session.singleEntryUseServiceLocations) {\r\n // check if residence === 'N'\r\n var allowedConsumers = await getAllowedConsumersBasedOffResidence();\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n } else {\r\n // roster.setAllowedConsumers([]);\r\n // var allowedConsumers = await getAllowedConsumersBasedOffServiceLocations();\r\n // roster2.setAllowedConsumers(allowedConsumers);\r\n await setAllowedConsumers();\r\n }\r\n }\r\n\r\n async function workCodeDropdownEvent(event) {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n workCode = selectedOption.value;\r\n isBillable = selectedOption.dataset.billable;\r\n keyStartStop = selectedOption.dataset.keytimes;\r\n wcServiceType = selectedOption.dataset.servicetype;\r\n\r\n updateDateValMinMax(false);\r\n\r\n if (isBillable === 'Y' && !$.session.singleEntryUseServiceLocations) {\r\n // check if residence === 'N'\r\n var allowedConsumers = await getAllowedConsumersBasedOffResidence();\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n } else {\r\n // roster.setAllowedConsumers([]);\r\n var allowedConsumers = await getAllowedConsumersBasedOffServiceLocations();\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n if (isBillable === 'Y') {\r\n miniRosterBtn.classList.remove('disabled');\r\n } else {\r\n miniRosterBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n clearCard();\r\n // Set start time after card gets cleared\r\n if (keyStartStop === 'Y') {\r\n startTimeInput.getElementsByTagName('input')[0].value = `${nowHour}:${nowMinutes}`;\r\n startTime = `${nowHour}:${nowMinutes}`;\r\n UTIL.getGeoLocation(setStartTimeLocation);\r\n }\r\n\r\n checkPermissions();\r\n }\r\n\r\n function setEndTimeOnClick(event) {\r\n if (endTimeClicks !== 0 || event.target.value !== '') return;\r\n endTimeClicks = 1;\r\n let tempEndTime = new Date();\r\n let endTimeHour = tempEndTime.getHours() < '10' ? `0${now.getHours()}` : tempEndTime.getHours();\r\n let endTimeMinute =\r\n tempEndTime.getMinutes() < '10' ? `0${now.getMinutes()}` : tempEndTime.getMinutes();\r\n event.target.value = `${endTimeHour}:${endTimeMinute}`;\r\n endTime = `${endTimeHour}:${endTimeMinute}`;\r\n UTIL.getGeoLocation(setEndTimeLocation);\r\n setTotalHours();\r\n checkPermissions();\r\n }\r\n\r\n // Populate\r\n //------------------------------------\r\n function populatePayPeriodDropdown() {\r\n var dropdownData = payPeriodData.map(pp => {\r\n var dateArray = pp.dateString.split(' - ');\r\n var startDate = dateArray[0];\r\n var endDate = dateArray[1];\r\n\r\n var startDateAbbr = UTIL.abbreviateDateYear(startDate);\r\n var endDateAbbr = UTIL.abbreviateDateYear(endDate);\r\n return {\r\n value: `${startDate} - ${endDate}`,\r\n text: `${startDateAbbr} - ${endDateAbbr}`,\r\n attributes: [{ key: 'data-sendEvv', value: pp.sendEvvData }],\r\n };\r\n });\r\n sendEvvData = dropdownData[0].attributes[0].value;\r\n dropdown.populate(payPeriodDropdown, dropdownData, payPeriod.dateString);\r\n }\r\n function populateLocationDropdown() {\r\n // ID, Name, Residence, SE_Trans_Reimbursable\r\n var dropdownData = locationData.map(loc => {\r\n return {\r\n value: loc.ID,\r\n text: loc.Name,\r\n };\r\n });\r\n\r\n dropdownData.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(locationDropdown, dropdownData, locationId);\r\n }\r\n function populateWorkCodeDropdown() {\r\n var wcData;\r\n\r\n if (isEdit) {\r\n wcData = workCodeData.filter(wc => wc.billable === isBillable);\r\n } else {\r\n wcData = workCodeData;\r\n }\r\n\r\n var dropdownData = wcData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n attributes: [\r\n { key: 'data-billable', value: wc.billable },\r\n { key: 'data-keyTimes', value: wc.keyTimes },\r\n { key: 'data-serviceType', value: wc.serviceType },\r\n ],\r\n };\r\n });\r\n\r\n dropdownData.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(workCodeDropdown, dropdownData, workCode);\r\n }\r\n function populateReasonCodeDropdown() {\r\n const dropdownData = evvReasonCodeObj.map(reason => {\r\n return {\r\n value: reason.reasonCode,\r\n text: `${reason.reasonCode} - ${reason.reasonDescription}`,\r\n };\r\n });\r\n dropdownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(reasonDropdown, dropdownData, evvReasonCode);\r\n\r\n\r\n if (evvReasonCode == null || evvReasonCode == '%' || evvReasonCode == undefined || evvReasonCode == '99') {\r\n evvReasonCode = '99';\r\n reasonCodeValue = '99 - Documentation on file supports manual change';\r\n }\r\n else {\r\n reasonCodeValue = dropdownData.find(x => x.value == evvReasonCode).text;\r\n }\r\n\r\n if (document.getElementById('reasonInput') != null && document.getElementById('reasonInput') != undefined) {\r\n document.getElementById('reasonInput').value = reasonCodeValue;\r\n }\r\n\r\n populateLocationTypeDropdown();\r\n }\r\n\r\n function populateLocationTypeDropdown() {\r\n const locationTypeDropdownData = ([\r\n { id: 1, value: 1, text: \"1 - Home\" },\r\n { id: 2, value: 2, text: \"2 - Community\" },\r\n ]);\r\n dropdown.populate(locationTypeDropdown, locationTypeDropdownData, locationTypeCode);\r\n }\r\n async function populateCard(useAllWorkCodes) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes(useAllWorkCodes);\r\n requiredFields = timeEntry.getRequiredFields();\r\n evvReasonCodeObj = timeEntry.getEvvReasonCodes();\r\n\r\n endTimeClicks = 0;\r\n now = new Date();\r\n nowHour = now.getHours() < '10' ? `0${now.getHours()}` : now.getHours();\r\n nowMinutes = now.getMinutes() < '10' ? `0${now.getMinutes()}` : now.getMinutes();\r\n\r\n if (!isEdit) populatePayPeriodDropdown();\r\n populateLocationDropdown();\r\n populateWorkCodeDropdown();\r\n\r\n setupCardEvents();\r\n checkPermissions();\r\n if (defaultTimesChanged) showEvv();\r\n\r\n // if (isEdit) {\r\n // \tsingleEntryAjax.getSingleEntryUsersByLocation(locationId, entryDate, function(results) {\r\n // \t\troster.setAllowedConsumers(results);\r\n // \t});\r\n // }\r\n\r\n if (isAdminEdit) {\r\n if (!$.session.SingleEntryEditTimeEntry) {\r\n isCardDisabled = true;\r\n card.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n if (\r\n status === 'A' ||\r\n status === 'S' ||\r\n status === 'I' ||\r\n (!$.session.SingleEntryUpdate && isEdit)\r\n ) {\r\n if ($.session.SingleEntryEditTimeEntry && status === 'A') {\r\n isCardDisabled = false;\r\n card.classList.remove('disabled');\r\n enableInput(noteInput);\r\n } else {\r\n isCardDisabled = true;\r\n }\r\n } else if (status === 'R' || status === 'D') {\r\n isCardDisabled = true;\r\n }\r\n }\r\n } else {\r\n if (\r\n status === 'A' ||\r\n status === 'S' ||\r\n status === 'I' ||\r\n status === 'D' ||\r\n (!$.session.SingleEntryUpdate && isEdit)\r\n ) {\r\n isCardDisabled = true;\r\n }\r\n }\r\n\r\n if (isCardDisabled) {\r\n card.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n workCodeDropdown.classList.add('disabled');\r\n locationDropdown.classList.add('disabled');\r\n startTimeInput.classList.add('disabled');\r\n endTimeInput.classList.add('disabled');\r\n reasonDropdown.classList.add('disabled');\r\n attestCheckbox.classList.add('disabled');\r\n transportationBtn.classList.add('disabled');\r\n dateInput.classList.add('disabled');\r\n noteInput.classList.add('disabled');\r\n rejectionReasonInput.classList.add('disabled');\r\n }\r\n // initially when editing a rejected/Non-Billable, the Save btns are disabled, they become enabled after the first edit of the form\r\n if (\r\n status === 'R' &&\r\n (personId === $.session.PeopleId || supervisorId === $.session.PeopleId)\r\n ) {\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n }\r\n\r\n if (isEndTimeChangePermission) {\r\n card.classList.remove('disabled');\r\n saveBtn.classList.add('disabled');\r\n saveAndSumbitBtn.classList.add('disabled');\r\n deleteBtn.classList.remove('disabled');\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n workCodeDropdown.classList.add('disabled');\r\n locationDropdown.classList.add('disabled');\r\n startTimeInput.classList.add('disabled');\r\n endTimeInput.classList.remove('disabled');\r\n reasonDropdown.classList.add('disabled');\r\n attestCheckbox.classList.add('disabled');\r\n transportationBtn.classList.add('disabled');\r\n dateInput.classList.add('disabled');\r\n noteInput.classList.add('disabled');\r\n rejectionReasonInput.classList.add('disabled');\r\n locationTypeDropdown.classList.add('disabled');\r\n dateInput.classList.remove('error');\r\n noteInput.classList.remove('error');\r\n endTimeInput.classList.remove('error'); \r\n }\r\n }\r\n // EVV\r\n // -----------------------------------\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${now.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${now.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n }\r\n\r\n async function evvCheck() {\r\n if (!isEdit) {\r\n if (startTime) {\r\n // const timeChanged = startTime !== `${nowHour}:${nowMinutes}`\r\n await evvCheckConsumerEligibilityExistingConsumers();\r\n if (\r\n isBillable === 'Y' &&\r\n defaultTimesChanged &&\r\n wcServiceType === 'A' &&\r\n sendEvvData === 'Y' &&\r\n (reasonRequired === true || isEVVSingleEntry)\r\n ) {\r\n showEvv();\r\n // evvCheckConsumerEligibilityExistingConsumers(); \r\n } else {\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n reasonRequired = false;\r\n }\r\n }\r\n } else {\r\n //isEdit is true\r\n let wcObj = workCodeData.filter(wc => wc.workcodeid === workCode);\r\n wcServiceType = wcObj[0].serviceType;\r\n let ppObj = payPeriodData.filter(pp => pp.dateString === payPeriod.dateString);\r\n sendEvvData = ppObj[0].sendEvvData;\r\n await evvCheckConsumerEligibilityExistingConsumers();\r\n if (\r\n isBillable === 'Y' &&\r\n defaultTimesChanged &&\r\n wcServiceType === 'A' &&\r\n sendEvvData === 'Y' &&\r\n (reasonRequired === true || isEVVSingleEntry)\r\n ) {\r\n if (defaultEndTimeChanged || defaultTimesChanged) {\r\n showEvv();\r\n // checkRequiredFields();\r\n // await evvCheckConsumerEligibilityExistingConsumers(); \r\n } else {\r\n reasonRequired = false;\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n }\r\n } else {\r\n reasonRequired = false;\r\n document.querySelector('.timeCard__evv').style.display = 'none';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'none';\r\n }\r\n }\r\n }\r\n\r\n // async function evvCheckConsumerEligibility(id) {\r\n // const eligibilityProm = new Promise((resolve, reject) => {\r\n // singleEntryAjax.getEvvEligibility(id, entryDate, res => {\r\n // if (res.length > 0) {\r\n // eligibleConsumersObj[id] = true;\r\n // reasonRequired = true;\r\n // } else eligibleConsumersObj[id] = false;\r\n // resolve('evvEligibilityChecked');\r\n // });\r\n // });\r\n // eligibilityProm.then(() => evvCheck());\r\n // }\r\n\r\n // function evvCheckConsumerEligibilityExistingConsumers() {\r\n // reasonRequired = false;\r\n // consumerIds.forEach(id => {\r\n // const eligibilityProm = new Promise((resolve, reject) => {\r\n // singleEntryAjax.getEvvEligibility(id, entryDate, res => {\r\n // if (res.length > 0) {\r\n // reasonRequired = true;\r\n // eligibleConsumersObj[id] = true;\r\n // checkAttestStatus();\r\n // } else eligibleConsumersObj[id] = false;\r\n // resolve('evvEligibilityChecked');\r\n // });\r\n // });\r\n // eligibilityProm.then(() => checkRequiredFields());\r\n // });\r\n // }\r\n\r\n async function evvCheckConsumerEligibility(id) {\r\n const res = await singleEntryAjax.getEvvEligibilityAsync(id, entryDate);\r\n if (res.length > 0) {\r\n eligibleConsumersObj[id] = true;\r\n reasonRequired = true;\r\n } else {\r\n eligibleConsumersObj[id] = false;\r\n }\r\n\r\n await evvCheck();\r\n }\r\n\r\n async function evvCheckConsumerEligibilityExistingConsumers() {\r\n reasonRequired = false;\r\n consumerIds.forEach(async id => {\r\n const res = await singleEntryAjax.getEvvEligibilityAsync(id, entryDate);\r\n if (res.length > 0) {\r\n reasonRequired = true;\r\n eligibleConsumersObj[id] = true;\r\n isEVVSingleEntry = true;\r\n } else {\r\n eligibleConsumersObj[id] = false;\r\n }\r\n disableCardFields();\r\n\r\n if (isEVVSingleEntry && sendEvvData === 'Y' && eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate) {\r\n populateLocationTypeDropdown();\r\n document.querySelector('.timeCard__LocationEvv').style.display = 'flex';\r\n locationTypeCode = '1'; \r\n }\r\n });\r\n\r\n // checkRequiredFields();\r\n }\r\n // under following conditions, the form imputs disabled (except time inputs): 1) entry is rejected, 2) workcode = Billable, 3) user is creator/supervisor, 4) this entry requires EVV\r\n function disableCardFields() {\r\n if (\r\n isEVVSingleEntry &&\r\n isEdit &&\r\n isBillable &&\r\n status == 'R' &&\r\n (personId === $.session.PeopleId || supervisorId === $.session.PeopleId)\r\n ) {\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n workCodeDropdown.classList.add('disabled');\r\n locationDropdown.classList.add('disabled');\r\n attestCheckbox.classList.add('disabled');\r\n transportationBtn.classList.add('disabled');\r\n dateInput.classList.add('disabled');\r\n noteInput.classList.add('disabled');\r\n rejectionReasonInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n async function evvCheckRemainingConsumers() {\r\n reasonRequired = false;\r\n consumerIds.forEach(id => {\r\n if (eligibleConsumersObj[id]) reasonRequired = true;\r\n });\r\n await evvCheck();\r\n checkAttestStatus();\r\n }\r\n\r\n function showEvv() {\r\n populateReasonCodeDropdown();\r\n document.querySelector('.timeCard__evv').style.display = 'flex';\r\n document.querySelector('.timeCard__evvattestChk').style.display = 'flex';\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate) {\r\n document.querySelector('.timeCard__LocationEvv').style.display = 'flex';\r\n if (!locationTypeCode) {\r\n locationTypeCode = '1';\r\n }\r\n }\r\n }\r\n\r\n function checkAttestStatus() {\r\n if (reasonRequired && attestCheckbox.getElementsByTagName('input')[0].checked === false) {\r\n attestCheckbox.classList.add('redButNotError');\r\n } else {\r\n attestCheckbox.classList.remove('redButNotError');\r\n }\r\n }\r\n\r\n // Build\r\n //------------------------------------\r\n // dropdowns\r\n function buildPayPeriodDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'payPeriodsDropdown',\r\n label: 'Pay Period',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n function buildLocationDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'locationsDropodown',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: isEdit ? true : false,\r\n });\r\n }\r\n function buildWorkCodeDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'workCodesDropdown',\r\n label: 'Work Code',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n function buildEVVReasonDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'reasonDropdown',\r\n label: 'Reason Code',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n\r\n function buildLocationTypeDropdown() {\r\n return dropdown.build({\r\n dropdownId: 'locationTypeDropdown',\r\n label: 'Location Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n }\r\n\r\n function buildEVVReasontext() {\r\n return input.build({\r\n id: 'reasonInput',\r\n type: 'text',\r\n label: 'Reason Code',\r\n style: 'secondary',\r\n value: reasonCodeValue,\r\n readonly: true,\r\n });\r\n }\r\n // inputs\r\n function buildDateInput() {\r\n var dateObj = new Date(entryDate);\r\n var minDate;\r\n var maxDate;\r\n if (isEdit) {\r\n if (isBillable === 'Y') {\r\n minDate = entryDate;\r\n maxDate = entryDate;\r\n } else {\r\n // minDate = UTIL.getFormattedDateFromDate(dates.startDayOfWeek(dateObj), { separator: '-', format: 'iso' });\r\n // maxDate = UTIL.getFormattedDateFromDate(dates.endOfWeek(dateObj), { separator: '-', format: 'iso' });\r\n minDate = payPeriod.start;\r\n maxDate = payPeriod.end;\r\n }\r\n } else {\r\n //NEW\r\n if (isBillable === 'Y') {\r\n minDate = payPeriod.start;\r\n maxDate = entryDate;\r\n } else {\r\n minDate = payPeriod.start;\r\n maxDate = payPeriod.end;\r\n }\r\n }\r\n return input.build({\r\n id: 'dateBox',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: entryDate,\r\n attributes: [\r\n {\r\n key: 'min',\r\n value: minDate,\r\n },\r\n {\r\n key: 'max',\r\n value: maxDate,\r\n },\r\n ],\r\n });\r\n }\r\n function buildStartTimeInput() {\r\n return (startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n style: 'secondary',\r\n attributes: [{ key: 'step', value: $.session.singleEntry15minDoc === 'Y' ? '900' : '60' }],\r\n value: startTime,\r\n }));\r\n }\r\n function buildEndTimeInput() {\r\n return (endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n style: 'secondary',\r\n attributes: [{ key: 'step', value: $.session.singleEntry15minDoc === 'Y' ? '900' : '60' }],\r\n value: endTime,\r\n }));\r\n }\r\n function buildTotalHoursInput() {\r\n return (totalHoursInput = input.build({\r\n label: 'Hours',\r\n type: 'number',\r\n style: 'secondary',\r\n value: totalHours,\r\n attributes: [{ key: 'min', value: '0' }],\r\n }));\r\n }\r\n function buildNoteInput() {\r\n return (noteInput = input.build({\r\n label: 'Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n value: noteText,\r\n }));\r\n }\r\n function buildRejectionReasonInput() {\r\n return (rejectionReasonInput = input.build({\r\n id: 'rejectionReason',\r\n label: 'Rejection Reason',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: rejectionReason,\r\n }));\r\n }\r\n function buildAttestCheckbox() {\r\n return (attestCheckbox = input.buildCheckbox({\r\n text: 'Attest',\r\n style: 'secondary',\r\n isChecked: evvAttest ? (evvAttest === 'Y' ? true : false) : true,\r\n }));\r\n }\r\n\r\n function buildCommunityCheckbox() {\r\n return (communityCheckbox = input.buildCheckbox({\r\n text: 'Community',\r\n style: 'secondary',\r\n isChecked: evvCommunity === 'Y' ? true : false,\r\n }));\r\n }\r\n\r\n // main sections\r\n function buildTimeEntrySection() {\r\n var section = document.createElement('div');\r\n section.classList.add('timeCard__timeEntry');\r\n // dropdowns\r\n if (!isEdit) payPeriodDropdown = buildPayPeriodDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n workCodeDropdown = buildWorkCodeDropdown();\r\n reasonDropdown = buildEVVReasonDropdown();\r\n locationTypeDropdown = buildLocationTypeDropdown();\r\n // inputs\r\n reasonInput = buildEVVReasontext();\r\n dateInput = buildDateInput();\r\n startTimeInput = buildStartTimeInput();\r\n endTimeInput = buildEndTimeInput();\r\n totalHoursInput = buildTotalHoursInput();\r\n communityCheckbox = buildCommunityCheckbox();\r\n noteInput = buildNoteInput();\r\n rejectionReasonInput = buildRejectionReasonInput();\r\n attestCheckbox = buildAttestCheckbox();\r\n // transportation\r\n transportationBtn = buildTransportationBtn();\r\n\r\n var wrap1 = document.createElement('div'); // dates\r\n var wrap2 = document.createElement('div'); // dropdowns\r\n var wrap3 = document.createElement('div'); // times\r\n var wrap4 = document.createElement('div'); // evv\r\n var wrap5 = document.createElement('div'); // location evv \r\n var wrap6 = document.createElement('div'); // attestCheckbox\r\n var wrap7 = document.createElement('div'); // evv + location evv\r\n wrap1.classList.add('timeCard__date');\r\n wrap2.classList.add('timeCard__other');\r\n wrap3.classList.add('timeCard__time');\r\n wrap4.classList.add('timeCard__evv');\r\n wrap5.classList.add('timeCard__LocationEvv');\r\n wrap6.classList.add('timeCard__evvattestChk');\r\n wrap7.classList.add('timeCard__evvLocationEvv');\r\n\r\n //rejection reason should always be disabled!\r\n rejectionReasonInput.classList.add('disabled');\r\n\r\n // date wrap\r\n if (!isEdit) wrap1.appendChild(payPeriodDropdown);\r\n wrap1.appendChild(dateInput);\r\n // dropdown wrap\r\n wrap2.appendChild(workCodeDropdown);\r\n wrap2.appendChild(locationDropdown);\r\n // time wrap\r\n wrap3.appendChild(startTimeInput);\r\n wrap3.appendChild(endTimeInput);\r\n\r\n if ($.session.stateAbbreviation === 'IN') {\r\n wrap3.appendChild(communityCheckbox);\r\n }\r\n\r\n wrap3.appendChild(totalHoursInput);\r\n\r\n // evv wrap\r\n // hide evv stuff initially\r\n eVVChangeDate = $.session.ohioEVVChangeDate != '' ? new Date($.session.ohioEVVChangeDate.split('-').join('/')) : '';\r\n todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n if (defaultTimesChanged) {\r\n (wrap4.style.display = 'flex');\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate)\r\n (wrap5.style.display = 'flex');\r\n (wrap6.style.display = 'flex');\r\n } else {\r\n (wrap4.style.display = 'none');\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate)\r\n (wrap5.style.display = 'none');\r\n (wrap6.style.display = 'none');\r\n }\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate) {\r\n wrap4.appendChild(reasonInput);\r\n wrap5.appendChild(locationTypeDropdown);\r\n }\r\n else {\r\n wrap4.appendChild(reasonDropdown);\r\n }\r\n\r\n wrap6.appendChild(attestCheckbox);\r\n wrap7.appendChild(wrap4);\r\n if (eVVChangeDate != '' && $.session.stateAbbreviation == 'OH' && todayDate >= eVVChangeDate)\r\n wrap7.appendChild(wrap5);\r\n wrap7.appendChild(wrap6);\r\n\r\n section.appendChild(wrap1);\r\n section.appendChild(wrap2);\r\n section.appendChild(wrap3);\r\n section.appendChild(wrap7);\r\n section.appendChild(noteInput);\r\n if (status === 'R') {\r\n section.appendChild(rejectionReasonInput);\r\n }\r\n\r\n $.session.singleEntryShowTransportation === 'Y' ? section.appendChild(transportationBtn) : ''; //Show Transportation system preference\r\n\r\n return section;\r\n }\r\n async function buildConsumerSection(consumersPresent) {\r\n var section = document.createElement('div');\r\n section.classList.add('timeCard__consumers');\r\n\r\n var consumerSectionError = document.createElement('div');\r\n consumerSectionError.classList.add('consumerSectionError');\r\n\r\n section.appendChild(consumerSectionError);\r\n\r\n roster2.clearActiveConsumers(); // clear any previous active consumers\r\n\r\n if (consumersPresent && consumersPresent.length > 0) {\r\n consumersPresent.forEach(async cp => {\r\n var splitName = cp.consumername.split(',');\r\n var consumer = roster2.buildConsumerCard({\r\n FN: splitName[0],\r\n LN: splitName[1],\r\n id: cp.consumerid,\r\n });\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n var card = buildConsumerCard(consumer, cp);\r\n section.appendChild(card);\r\n consumerIds.push(cp.consumerid);\r\n numberOfConsumersPresent = consumerIds.length;\r\n await evvCheckConsumerEligibility(cp.consumerid);\r\n });\r\n }\r\n\r\n return section;\r\n }\r\n function buildSaveDeleteCancelButtons() {\r\n var saveOrUpdate = isEdit ? 'Update' : 'Save';\r\n saveBtn = button.build({\r\n text: saveOrUpdate,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['disabled'],\r\n attributes: [{ key: 'data-insert-type', value: saveOrUpdate }],\r\n });\r\n saveAndSumbitBtn = button.build({\r\n text: `${saveOrUpdate} and submit`,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['disabled'],\r\n attributes: [{ key: 'data-insert-type', value: saveOrUpdate }],\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['disabled'],\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('timeCard__actions');\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(saveAndSumbitBtn);\r\n if (isEdit) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n async function buildCard(options, editData, consumersPresent, payperiod, isOnlyEndTimeChangePermission = false) {\r\n // options = {isEdit}\r\n saveUserId = null;\r\n personId = null;\r\n var opts = options;\r\n isEdit = opts.isEdit;\r\n isAdminEdit = opts.isAdminEdit;\r\n\r\n isEndTimeChangePermission = isOnlyEndTimeChangePermission;\r\n if (editData && editData.length > 0) {\r\n await setEditDataValues(editData); \r\n payPeriod = payperiod;\r\n if (consumersPresent.length > 0) evvReasonCode = consumersPresent[0].evvReasonCode;\r\n if (evvReasonCode) defaultTimesChanged = true;\r\n if (isBillable === 'N') {\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n } else roster2.toggleMiniRosterBtnVisible(true);\r\n // evvAttest = editData.attest\r\n } else {\r\n entryDate = timeEntry.getCurrentDate(false);\r\n roster2.updateSelectedDate(entryDate);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n }\r\n\r\n if ((isEdit || isAdminEdit) && isTransportationValid) {\r\n transportationSaved = true;\r\n } else {\r\n transportationSaved = false;\r\n }\r\n\r\n await setAllowedConsumers();\r\n\r\n consumerIds = [];\r\n eligibleConsumersObj = {};\r\n\r\n card = document.createElement('div');\r\n card.classList.add('card', 'timeCard');\r\n\r\n var cardHeader = document.createElement('div');\r\n cardHeader.classList.add('card__header');\r\n var heading = isEdit ? 'Edit Time Entry' : 'New Time Entry';\r\n cardHeader.innerHTML = `

    ${heading}

    `;\r\n\r\n var cardBody = document.createElement('div');\r\n cardBody.classList.add('card__body');\r\n\r\n var timeEntrySection = buildTimeEntrySection();\r\n var consumerSection = await buildConsumerSection(consumersPresent);\r\n var saveDeleteCancel = buildSaveDeleteCancelButtons();\r\n\r\n // build card body\r\n cardBody.appendChild(timeEntrySection);\r\n cardBody.appendChild(consumerSection);\r\n cardBody.appendChild(saveDeleteCancel);\r\n // build card\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n return card;\r\n }\r\n\r\n return {\r\n build: buildCard,\r\n populate: populateCard,\r\n getOverlapData,\r\n getSaveUpdateData,\r\n setAllowedConsumers,\r\n customRosterApplyFilterEvent,\r\n moveConsumersToTimeCard,\r\n handleActionNavEvent,\r\n clearAllGlobalVariables,\r\n enableSaveButtons,\r\n enableSaveButton,\r\n };\r\n})();","var editTimeEntry = (function () {\r\n // DOM\r\n var timeCard;\r\n let seActivityElement;\r\n // Data\r\n var timeEntryData;\r\n var consumersPresent;\r\n var payPeriod;\r\n // Values\r\n var isAdminEdit;\r\n var isOrginUser;\r\n var isOnlyEndTimeChangePermission;\r\n\r\n function clearAllGlobalVariables() {\r\n timeEntryData = undefined;\r\n consumersPresent = undefined;\r\n }\r\n\r\n async function loadPage() {\r\n DOM.clearActionCenter();\r\n\r\n timeCard = await timeEntryCard.build(\r\n { isEdit: true, isAdminEdit },\r\n timeEntryData,\r\n consumersPresent,\r\n payPeriod,\r\n isOnlyEndTimeChangePermission,\r\n );\r\n DOM.ACTIONCENTER.appendChild(timeCard);\r\n if (seActivityElement && typeof seActivityElement === 'object')\r\n timeCard.querySelector('.card__body').appendChild(seActivityElement);\r\n\r\n var useAllWorkCodes = isAdminEdit && !isOrginUser ? true : false;\r\n await timeEntryCard.populate(useAllWorkCodes);\r\n\r\n //resize rejection reason box\r\n const tx = document.getElementById('rejectionReason');\r\n if (tx) tx.setAttribute('style', 'height:' + tx.scrollHeight + 'px;overflow-y:hidden;');\r\n }\r\n\r\n function init(data) {\r\n setActiveModuleSectionAttribute('timeEntry-edit');\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n\r\n timeEntryData = data.entry;\r\n consumersPresent = data.consumers;\r\n isAdminEdit = data.isAdminEdit;\r\n payPeriod = data.payPeriod;\r\n seActivityElement = data.recordActivityElement;\r\n isOrginUser = data.isOrginUser ? true : false;\r\n isOnlyEndTimeChangePermission = data.isOnlyEndTimeChangePermission ? true : false;\r\n\r\n loadPage();\r\n }\r\n\r\n return {\r\n init,\r\n loadPage,\r\n clearAllGlobalVariables,\r\n };\r\n})();\r\n","var newTimeEntry = (function () {\r\n var timeCard;\r\n\r\n async function loadPage() {\r\n DOM.clearActionCenter();\r\n\r\n timeCard = await timeEntryCard.build({\r\n isEdit: false,\r\n });\r\n DOM.ACTIONCENTER.appendChild(timeCard);\r\n\r\n await timeEntryCard.populate();\r\n }\r\n\r\n async function endDateWarningPopup(getExistingTimeEntryResult) {\r\n const endDateWarningPopup = POPUP.build({\r\n hideX: true,\r\n classNames: 'warning',\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'Provide End Time',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(endDateWarningPopup); \r\n let payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n let isDisabled = getExistingTimeEntryResult[0].Anywhere_Closed === 'False' ? false : true;\r\n if (isDisabled == false) {\r\n let payPeriodData = timeEntry.getPayPeriods(false);\r\n var dateofService = getExistingTimeEntryResult[0].Date_of_Service.split(' ')[0];\r\n let timeStart = UTIL.formatDateToIso(dateofService);\r\n payPeriod = payPeriodData.find(x => timeStart >= x.start && timeStart <= x.end);\r\n } \r\n \r\n singleEntryAjax.getSingleEntryById(getExistingTimeEntryResult[0].Single_Entry_ID, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(getExistingTimeEntryResult[0].Single_Entry_ID, consumers => {\r\n editTimeEntry.init({\r\n isOrginUser: true,\r\n entry: results,\r\n consumers: consumers, \r\n payPeriod,\r\n recordActivityElement: null,\r\n isOnlyEndTimeChangePermission: isDisabled,\r\n });\r\n });\r\n });\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(endDateWarningPopup);\r\n timeEntry.init();\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n const borderBottom = document.createElement('div');\r\n borderBottom.classList.add('borderBottom');\r\n\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'You have an existing time entry with no end time. Please provide the end time to the below time entry before creating a new entry.';\r\n endDateWarningPopup.appendChild(warningMessage);\r\n endDateWarningPopup.appendChild(borderBottom);\r\n\r\n const serviceDate = document.createElement('p');\r\n serviceDate.style.textAlign = 'left';\r\n serviceDate.innerHTML = 'Service Date: ' + moment(getExistingTimeEntryResult[0].Date_of_Service).format('M/D/YYYY');\r\n endDateWarningPopup.appendChild(serviceDate);\r\n\r\n const startTime = document.createElement('p');\r\n startTime.style.textAlign = 'left';\r\n startTime.innerHTML = 'Start Time: ' + UTIL.convertFromMilitary(getExistingTimeEntryResult[0].Start_Time);\r\n endDateWarningPopup.appendChild(startTime);\r\n\r\n const workCode = document.createElement('p');\r\n workCode.style.textAlign = 'left';\r\n workCode.innerHTML = 'Work Code: ' + getExistingTimeEntryResult[0].Work_Code_Name;\r\n endDateWarningPopup.appendChild(workCode);\r\n\r\n endDateWarningPopup.appendChild(btnWrap);\r\n POPUP.show(endDateWarningPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('timeEntry-new');\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n roster2.toggleMiniRosterBtnVisible(false);\r\n loadPage();\r\n }\r\n\r\n return {\r\n init,\r\n loadPage,\r\n endDateWarningPopup,\r\n };\r\n})();\r\n","var timeApproval = (function () {\r\n //-DATA------------------\r\n var locationData;\r\n var payPeriodData;\r\n var payPeriod;\r\n var endDate;\r\n var startDate;\r\n var rejectionReasonText;\r\n // dropdowns\r\n var employees;\r\n var locations;\r\n var supervisors;\r\n // filter data\r\n var payPeriodText;\r\n var supervisorId;\r\n var supervisorName;\r\n var locationId;\r\n var locationName;\r\n var employeeId;\r\n var employeeName;\r\n var status;\r\n var statusText;\r\n\r\n let btnWrap;\r\n let supervisorBtnWrap;\r\n let locationBtnWrap;\r\n let statusBtnWrap;\r\n let employeeBtnWrap;\r\n let workCodeBtnWrap;\r\n let startDateBtnWrap;\r\n let endDateBtnWrap;\r\n\r\n var tmpSupervisorId;\r\n var tmpSupervisorName;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpEmployeeId;\r\n var tmpEmployeeName;\r\n var tmpStatus;\r\n var tmpStatusText;\r\n //-DOM------------------\r\n var reviewTable;\r\n var mulitSelectBtn;\r\n var selectAllBtn;\r\n var filterBtn;\r\n var mapBtn;\r\n var filterPopup;\r\n var payPeriodsDropdown;\r\n var supervisorDropdown;\r\n var employeeDropdown;\r\n var locationDropdown;\r\n var statusDropdown;\r\n var applyBtn;\r\n var startDateInput;\r\n var endDateInput\r\n var tmpStartDate;\r\n var tmpEndDate;\r\n // action nav items\r\n var cancelBtn;\r\n var approveNavBtn;\r\n var rejectNavBtn;\r\n var submitNavBtn;\r\n //-WorkCode---------------\r\n var workCodeData;\r\n var workCodeDropdown;\r\n var workCodeId;\r\n var workCodeName;\r\n var tmpWorkCodeId;\r\n var tmpWorkCodeName;\r\n //-OTHER------------------\r\n var statuses = [\r\n { key: 'A', value: 'Awaiting Approval' },\r\n { key: 'P', value: 'Pending' },\r\n { key: 'I', value: 'Imported' },\r\n { key: 'S', value: 'Submitted' },\r\n { key: 'R', value: 'Rejected' },\r\n ];\r\n var statusLookup = {\r\n A: 'Awaiting Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n I: 'Imported',\r\n S: 'Submitted',\r\n D: 'Duplicate',\r\n };\r\n var workCodeLookup = {\r\n A: 'Awake Service',\r\n L: '1:1 Lucas County',\r\n N: 'Non Billable',\r\n O: 'On Behalf Of - Admin',\r\n S: 'Sleep',\r\n T: 'Transportation',\r\n V: 'Vacation',\r\n };\r\n var enableMultiEdit = false;\r\n var enableSelectAll = false;\r\n var selectedRows = []; // array of row ids\r\n var sortedSelectedRows;\r\n var rejectOrApprove;\r\n let totalHours = 0;\r\n //-TABLE DATA------------------\r\n let showMap = false;\r\n // const LSKEY_showMap = \"se_showMap\"\r\n let IsFilterDisable = true;\r\n\r\n function clearAllGlobalVariables() {\r\n selectedRows = [];\r\n\r\n locationData = undefined;\r\n payPeriodData = undefined;\r\n payPeriod = undefined;\r\n endDate = undefined;\r\n startDate = undefined;\r\n\r\n employees = undefined;\r\n locations = undefined;\r\n supervisors = undefined;\r\n\r\n supervisorId = undefined;\r\n locationId = undefined;\r\n employeeId = undefined;\r\n status = undefined;\r\n totalHours = undefined;\r\n\r\n workCodeId = undefined;\r\n workCodeName = undefined;\r\n tmpWorkCodeId = undefined;\r\n tmpWorkCodeName = undefined;\r\n\r\n enableSelectAll = false;\r\n enableMultiEdit = false;\r\n }\r\n function sortSelectedRowsForUpdate() {\r\n sortedSelectedRows = {};\r\n\r\n selectedRows.forEach(sr => {\r\n if (!sortedSelectedRows[sr.status]) {\r\n sortedSelectedRows[sr.status] = [];\r\n }\r\n\r\n sortedSelectedRows[sr.status].push(sr.id);\r\n });\r\n\r\n console.table(sortedSelectedRows);\r\n }\r\n // Approve/Reject/Submit\r\n //------------------------------------\r\n function updateSelectAllStatus(type) {\r\n let updatePromiseArray = [];\r\n const selectedRowKeys = Object.keys(sortedSelectedRows);\r\n let statusUpdateData = {};\r\n switch (type) {\r\n case 'approve':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'A') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'S',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n }\r\n });\r\n break;\r\n case 'reject':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'A') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'R',\r\n userID: $.session.UserId,\r\n rejectionReason: rejectionReasonText,\r\n };\r\n }\r\n });\r\n break;\r\n case 'submit':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'P') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'A',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n var updatePromise = new Promise((fulfill, reject) => {\r\n singleEntryAjax.adminUpdateSingleEntryStatus(statusUpdateData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n\r\n updatePromise.then(() => {\r\n successfulSave.show();\r\n selectedRows = [];\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n getReviewTableData(populateTable);\r\n }, 1000);\r\n });\r\n }\r\n\r\n function updateEntryStatus() {\r\n var updatePromiseArray = [];\r\n\r\n var selectedRowKeys = Object.keys(sortedSelectedRows);\r\n selectedRowKeys.forEach(key => {\r\n var statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: '',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n\r\n statusUpdateData.newStatus = key === 'P' ? 'A' : '';\r\n if (statusUpdateData.newStatus === '' && rejectOrApprove) {\r\n statusUpdateData.newStatus = rejectOrApprove === 'approve' ? 'S' : 'R';\r\n statusUpdateData.rejectionReason = rejectOrApprove === 'approve' ? '' : rejectionReasonText;\r\n }\r\n\r\n console.table(statusUpdateData);\r\n\r\n var updatePromise = new Promise((fulfill, reject) => {\r\n singleEntryAjax.adminUpdateSingleEntryStatus(statusUpdateData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n\r\n updatePromiseArray.push(updatePromise);\r\n });\r\n\r\n Promise.all(updatePromiseArray).then(() => {\r\n successfulSave.show();\r\n selectedRows = [];\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n getReviewTableData(populateTable);\r\n }, 1000);\r\n });\r\n }\r\n // Status Change Popup\r\n //------------------------------------\r\n function setApproveOrReject(approveOrReject) {\r\n rejectOrApprove = approveOrReject;\r\n }\r\n function buildStatusChangePopupMessage() {\r\n var pCount = sortedSelectedRows['P'] ? sortedSelectedRows['P'].length : 0;\r\n var aCount = sortedSelectedRows['A'] ? sortedSelectedRows['A'].length : 0;\r\n\r\n var messageBody = document.createElement('div');\r\n messageBody.classList.add('timeApprovalWarningPopup__messages');\r\n\r\n if (pCount > 0) {\r\n var pMessageContainer = document.createElement('div');\r\n pMessageContainer.classList.add('timeApprovalWarningPopup__messageContainer');\r\n\r\n var pMessageWrap = document.createElement('div');\r\n pMessageWrap.classList.add('timeApprovalWarningPopup__messageWrap');\r\n var pMessage = document.createElement('p');\r\n pMessage.innerHTML = `You have selected ${pCount} ${pCount === 1 ? `entry` : 'entries'\r\n } with a status of Pending, to be submitted.`;\r\n pMessageWrap.appendChild(pMessage);\r\n\r\n pMessageContainer.appendChild(pMessageWrap);\r\n pMessageContainer.appendChild(pMessageWrap);\r\n\r\n messageBody.appendChild(pMessageContainer);\r\n }\r\n if (aCount > 0) {\r\n var aMessageContainer = document.createElement('div');\r\n aMessageContainer.classList.add('timeApprovalWarningPopup__messageContainer');\r\n\r\n var aMessageWrap = document.createElement('div');\r\n aMessageWrap.classList.add('timeApprovalWarningPopup__messageWrap');\r\n var aMessage = document.createElement('p');\r\n aMessage.innerHTML = `You have selected ${aCount} ${aCount === 1 ? `entry` : 'entries'\r\n } with a status of Awaiting Approval.`;\r\n aMessageWrap.appendChild(aMessage);\r\n\r\n var aMessage2Wrap = document.createElement('div');\r\n aMessage2Wrap.classList.add('timeApprovalWarningPopup__messageWrap', 'messageWithBtns');\r\n var aMessage2 = document.createElement('p');\r\n\r\n aMessage2.innerHTML = `Would you like to Approve or Reject ${aCount === 1 ? `this entry` : 'these entries'\r\n }?`;\r\n var aMessageBtnWrap = document.createElement('div');\r\n aMessageBtnWrap.classList.add('btnWrap');\r\n var approveBtn = button.build({ text: 'Approve' });\r\n var rejectBtn = button.build({ text: 'Reject' });\r\n\r\n approveBtn.addEventListener('click', () => {\r\n approveBtn.classList.add('enabled');\r\n rejectBtn.classList.remove('enabled');\r\n setApproveOrReject('approve');\r\n });\r\n rejectBtn.addEventListener('click', () => {\r\n rejectBtn.classList.add('enabled');\r\n approveBtn.classList.remove('enabled');\r\n setApproveOrReject('reject');\r\n });\r\n\r\n aMessageBtnWrap.appendChild(approveBtn);\r\n aMessageBtnWrap.appendChild(rejectBtn);\r\n aMessage2Wrap.appendChild(aMessage2);\r\n aMessage2Wrap.appendChild(aMessageBtnWrap);\r\n\r\n aMessageContainer.appendChild(aMessageWrap);\r\n aMessageContainer.appendChild(aMessage2Wrap);\r\n\r\n messageBody.appendChild(aMessageContainer);\r\n }\r\n\r\n return messageBody;\r\n }\r\n function showStatusChangePopup() {\r\n var warningPop = POPUP.build({});\r\n warningPop.classList.add('timeApprovalWarningPopup');\r\n\r\n // build message\r\n var message = buildStatusChangePopupMessage();\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Proceed',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n updateEntryStatus();\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'Cancel',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n warningPop.appendChild(message);\r\n warningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(warningPop);\r\n }\r\n\r\n // Data Getters\r\n //------------------------------------\r\n function getDropdownData(callback) {\r\n singleEntryAjax.getSingleEntrySupervisors($.session.PeopleId, function (results) {\r\n supervisors = results;\r\n\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(\r\n parseInt($.session.PeopleId),\r\n function (results) {\r\n employees = results;\r\n\r\n singleEntryAjax.getAdminSingleEntryLocations(function (results) {\r\n locations = results;\r\n\r\n callback();\r\n });\r\n },\r\n );\r\n });\r\n }\r\n function getReviewTableData(callback) {\r\n var filterData = {\r\n token: $.session.Token,\r\n endDate,\r\n startDate,\r\n supervisorId: supervisorId ? supervisorId : $.session.PeopleId,\r\n locationId: locationId ? locationId : '',\r\n employeeId: employeeId ? employeeId : '',\r\n status: status || status !== '%' ? status : '',\r\n workCodeId: workCodeId ? workCodeId : '',\r\n };\r\n singleEntryAjax.singleEntryFilterAdminList(filterData, function (results) {\r\n reviewTableData = results;\r\n callback(results);\r\n\r\n //clear google map. Don't show it unless they click the show map button.\r\n\r\n // if (showMap) {\r\n // addMap()\r\n // } else GOOGLE_MAP.clearMap()\r\n\r\n GOOGLE_MAP.clearMap();\r\n showMap = false;\r\n });\r\n }\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function actionNavEvent(type) {\r\n ACTION_NAV.hide();\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n if (selectedRows.length > 0) {\r\n if (type === 'reject') {\r\n //open rejection reason popup\r\n var popup = POPUP.build({\r\n header: 'Reject Multiple Time Records',\r\n });\r\n\r\n var dataMessage = document.createElement('p');\r\n dataMessage.style.marginBottom = '2em';\r\n dataMessage.innerHTML = '';\r\n\r\n // Text Input\r\n var rejectionReason = input.build({\r\n label: 'Reason:',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n charLimit: '500',\r\n forceCharLimit: true,\r\n });\r\n var reasonInput = document.createElement('div');\r\n reasonInput.appendChild(rejectionReason);\r\n rejectionReason.addEventListener('change', event => {\r\n rejectionReasonText = event.target.value;\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n //save button\r\n var notifyBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n sortSelectedRowsForUpdate();\r\n setApproveOrReject('reject');\r\n updateSelectAllStatus(type);\r\n\r\n rejectionReasonText = '';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //cancel button\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //display data\r\n popup.appendChild(dataMessage);\r\n popup.appendChild(reasonInput);\r\n\r\n btnWrap.appendChild(notifyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n //show popup\r\n POPUP.show(popup);\r\n } else {\r\n sortSelectedRowsForUpdate();\r\n updateSelectAllStatus(type);\r\n }\r\n }\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case 'timeApprovalApprove': {\r\n actionNavEvent('approve');\r\n break;\r\n }\r\n case 'timeApprovalSubmit': {\r\n actionNavEvent('submit');\r\n break;\r\n }\r\n case 'timeApprovalReject': {\r\n actionNavEvent('reject');\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n function setupActionNav() {\r\n approveNavBtn = button.build({\r\n text: 'Approve',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalApprove' }],\r\n });\r\n submitNavBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalSubmit' }],\r\n });\r\n rejectNavBtn = button.build({\r\n text: 'Reject',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalReject' }],\r\n });\r\n ACTION_NAV.populate([approveNavBtn, submitNavBtn, rejectNavBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n if (document.getElementById('startDateBtn') != null) {\r\n document.getElementById('startDateBtn').innerHTML = 'From Date: ' + moment(startDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('endDateBtn').innerHTML = 'To Date: ' + moment(endDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + supervisorName;\r\n }\r\n\r\n\r\n if (employeeName === 'All' || employeeName === '') { \r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n if (document.getElementById('employeeBtn') != null)\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + employeeName;\r\n }\r\n\r\n if (locationName === 'All' || locationName === '%') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (statusText === 'All' || statusText === '%') {\r\n btnWrap.appendChild(statusBtnWrap);\r\n btnWrap.removeChild(statusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(statusBtnWrap);\r\n if (document.getElementById('statusBtn') != null)\r\n document.getElementById('statusBtn').innerHTML = 'Status: ' + statusText;\r\n }\r\n\r\n\r\n if (workCodeName === 'All' || workCodeName === '%') {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n btnWrap.removeChild(workCodeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n if (document.getElementById('workCodeBtn') != null)\r\n document.getElementById('workCodeBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n supervisorBtn = button.build({\r\n id: 'supervisorBtn',\r\n text: 'Supervisor: ' + supervisorName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('supervisorBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n statusBtn = button.build({\r\n id: 'statusBtn',\r\n text: 'Consumer: ' + statusText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('statusBtn') },\r\n });\r\n statusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('statusBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + employeeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n workCodeBtn = button.build({\r\n id: 'workCodeBtn',\r\n text: 'Work Code: ' + workCodeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('workCodeBtn') },\r\n });\r\n workCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('workCodeBtn') },\r\n });\r\n\r\n startDateBtn = button.build({\r\n id: 'startDateBtn',\r\n text: 'From Date: ' + UTIL.formatDateFromIso(startDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('startDateBtn') },\r\n });\r\n\r\n endDateBtn = button.build({\r\n id: 'endDateBtn',\r\n text: 'To Date: ' + UTIL.formatDateFromIso(endDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('endDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n startDateBtnWrap = document.createElement('div');\r\n startDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n startDateBtnWrap.appendChild(startDateBtn);\r\n btnWrap.appendChild(startDateBtnWrap);\r\n\r\n endDateBtnWrap = document.createElement('div');\r\n endDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n endDateBtnWrap.appendChild(endDateBtn);\r\n btnWrap.appendChild(endDateBtnWrap);\r\n\r\n supervisorBtnWrap = document.createElement('div');\r\n supervisorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n supervisorBtnWrap.appendChild(supervisorBtn);\r\n btnWrap.appendChild(supervisorBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n statusBtnWrap = document.createElement('div');\r\n statusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n statusBtnWrap.appendChild(statusBtn);\r\n statusBtnWrap.appendChild(statusCloseBtn);\r\n btnWrap.appendChild(statusBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn);\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n workCodeBtnWrap = document.createElement('div');\r\n workCodeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n workCodeBtnWrap.appendChild(workCodeBtn);\r\n workCodeBtnWrap.appendChild(workCodeCloseBtn);\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'locationBtn') {\r\n locationName = 'All';\r\n locationId = '%';\r\n tmpLocationId = '%';\r\n tmpLocationName = 'All';\r\n }\r\n if (closeFilter == 'statusBtn') {\r\n statusText = 'All';\r\n status = '%';\r\n tmpStatus = '%';\r\n tmpStatusText = 'All';\r\n }\r\n if (closeFilter == 'employeeBtn') {\r\n employeeId = '';\r\n employeeName = 'All';\r\n tmpEmployeeId = '';\r\n tmpEmployeeName = 'All';\r\n }\r\n if (closeFilter == 'workCodeBtn') {\r\n workCodeId = '%';\r\n workCodeName = 'All';\r\n tmpWorkCodeId = '%';\r\n tmpWorkCodeName = 'All';\r\n }\r\n filterApply();\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpSupervisorId) supervisorId = data.tmpSupervisorId;\r\n if (data.tmpSupervisorName) supervisorName = data.tmpSupervisorName;\r\n if (data.tmpLocationId) locationId = data.tmpLocationId;\r\n if (data.tmpLocationName) locationName = data.tmpLocationName;\r\n if (data.tmpEmployeeId || data.tmpEmployeeId === '') employeeId = data.tmpEmployeeId;\r\n if (data.tmpEmployeeName) employeeName = data.tmpEmployeeName;\r\n if (data.tmpStatus) status = data.tmpStatus;\r\n if (data.tmpStatusText) statusText = data.tmpStatusText;\r\n if (data.tmpWorkCodeId || data.tmpWorkCodeId === '') workCodeId = data.tmpWorkCodeId;\r\n if (data.tmpWorkCodeName) workCodeName = data.tmpWorkCodeName;\r\n if (data.tmpStartDate) startDate = data.tmpStartDate;\r\n if (data.tmpEndDate) endDate = data.tmpEndDate;\r\n if (data.tmpStartDate) payPeriod.start = data.tmpStartDate;\r\n if (data.tmpEndDate) payPeriod.end = data.tmpEndDate;\r\n\r\n }\r\n function buildSupervisorDropdown() {\r\n var select = dropdown.build({\r\n label: 'Supervisor',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = supervisors.map(sup => {\r\n return {\r\n value: sup.Person_ID,\r\n text: `${sup.last_name}, ${sup.first_name}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n\r\n dropdown.populate(select, data, supervisorId);\r\n\r\n return select;\r\n }\r\n function buildEmployeeDropdown() {\r\n var select = dropdown.build({\r\n dropdownId: 'subEmployeeList',\r\n label: 'Employee',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n var data = employees.map(emp => {\r\n return {\r\n value: emp.Person_ID,\r\n text: `${emp.last_name}, ${emp.first_name}`,\r\n };\r\n });\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n data.unshift({\r\n value: '',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, employeeId);\r\n\r\n return select;\r\n }\r\n function repopulateEmployeeDropdown() {\r\n var data = employees.map(emp => {\r\n return {\r\n value: emp.Person_ID,\r\n text: `${emp.last_name}, ${emp.first_name}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n\r\n data.unshift({\r\n value: '',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate('subEmployeeList', data, employeeId);\r\n }\r\n function buildLocationDropdown() {\r\n var select = dropdown.build({\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locationID,\r\n text: loc.shortDescription,\r\n };\r\n });\r\n data.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n var defaultVal;\r\n\r\n if (locationId) defaultVal = locationId;\r\n\r\n dropdown.populate(select, data, locationId);\r\n\r\n return select;\r\n }\r\n function buildStatusDropdown() {\r\n var select = dropdown.build({\r\n label: 'Status',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = statuses.map(status => {\r\n return {\r\n value: status.key,\r\n text: status.value,\r\n };\r\n });\r\n\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, status);\r\n\r\n return select;\r\n }\r\n function buildWorkCodeDropdown() {\r\n var select = dropdown.build({\r\n label: 'Work Codes',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = workCodeData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n };\r\n });\r\n\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, workCodeId);\r\n\r\n return select;\r\n }\r\n function setupFilterEvents() {\r\n tmpSupervisorId;\r\n tmpSupervisorName;\r\n tmpLocationId;\r\n tmpLocationName;\r\n tmpEmployeeId;\r\n tmpEmployeeName;\r\n tmpStatus;\r\n tmpStatusText;\r\n tmpStartDate;\r\n tmpEndDate;\r\n\r\n supervisorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpSupervisorId = selectedOption.value;\r\n tmpSupervisorName = selectedOption.innerHTML;\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(tmpSupervisorId, function (results) {\r\n employees = results;\r\n repopulateEmployeeDropdown();\r\n });\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpEmployeeId = selectedOption.value;\r\n tmpEmployeeName = selectedOption.innerHTML;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpStatus = selectedOption.value;\r\n tmpStatusText = selectedOption.innerHTML;\r\n });\r\n workCodeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpWorkCodeId = selectedOption.value;\r\n tmpWorkCodeName = selectedOption.innerHTML;\r\n });\r\n startDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n tmpStartDate = event.target.value;\r\n payPeriod.start = event.target.value;\r\n checkDateValidation();\r\n } else {\r\n event.target.value = tmpStartDate;\r\n }\r\n });\r\n endDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n tmpEndDate = event.target.value;\r\n payPeriod.end = event.target.value;\r\n checkDateValidation();\r\n } else {\r\n event.target.value = tmpEndDate;\r\n }\r\n });\r\n\r\n applyBtn.addEventListener('click', () => {\r\n\r\n if (IsFilterDisable) {\r\n POPUP.hide(filterPopup);\r\n\r\n // if (tmpEmployeeId !== \"\") {\r\n // showMap = true\r\n // } else showMap = false\r\n filterApply();\r\n }\r\n IsFilterDisable = true;\r\n });\r\n\r\n applyBtn.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && applyBtn.classList.contains('disabled')) {\r\n IsFilterDisable = false;\r\n }\r\n });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n POPUP.hide(filterPopup);\r\n tmpStartDate = startDate;\r\n tmpEndDate = endDate;\r\n });\r\n }\r\n\r\n function filterApply() {\r\n if (tmpWorkCodeId) workCodeId = tmpWorkCodeId;\r\n if (tmpWorkCodeName) workCodeName = tmpWorkCodeName;\r\n\r\n updateFilterData({\r\n tmpSupervisorId,\r\n tmpSupervisorName,\r\n tmpLocationId,\r\n tmpLocationName,\r\n tmpEmployeeId,\r\n tmpEmployeeName,\r\n tmpStatus,\r\n tmpStatusText,\r\n tmpWorkCodeId,\r\n tmpWorkCodeName,\r\n tmpStartDate,\r\n tmpEndDate\r\n });\r\n \r\n document.getElementById('startDateBtn').innerHTML = 'From Date: ' + moment(startDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('endDateBtn').innerHTML = 'To Date: ' + moment(endDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + supervisorName;\r\n\r\n if (employeeName === 'All' || employeeName === '') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + employeeName;\r\n }\r\n\r\n if (locationName === 'All' || locationName === '%') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (statusText === 'All' || statusText === '%') {\r\n btnWrap.appendChild(statusBtnWrap);\r\n btnWrap.removeChild(statusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(statusBtnWrap);\r\n document.getElementById('statusBtn').innerHTML = 'Status: ' + statusText;\r\n }\r\n\r\n\r\n if (workCodeName === 'All' || workCodeName === '%') {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n btnWrap.removeChild(workCodeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n document.getElementById('workCodeBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n } \r\n\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({ hideX: true });\r\n\r\n supervisorDropdown = buildSupervisorDropdown();\r\n employeeDropdown = buildEmployeeDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n statusDropdown = buildStatusDropdown();\r\n workCodeDropdown = buildWorkCodeDropdown();\r\n\r\n startDateInput = input.build({\r\n id: 'startDateInput',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n endDateInput = input.build({\r\n id: 'endDateInput',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n const dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap', 'btnWrap');\r\n if (IsShow == 'ALL' || IsShow == 'startDateBtn')\r\n dateWrap.appendChild(startDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'endDateBtn')\r\n dateWrap.appendChild(endDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'supervisorBtn')\r\n filterPopup.appendChild(supervisorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(employeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'statusBtn')\r\n filterPopup.appendChild(statusDropdown);\r\n filterPopup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'workCodeBtn')\r\n filterPopup.appendChild(workCodeDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n setupFilterEvents();\r\n\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(supervisorId, function (results) {\r\n employees = results;\r\n repopulateEmployeeDropdown();\r\n });\r\n\r\n checkDateValidation();\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n\r\n function checkDateValidation() {\r\n if (tmpStartDate > tmpEndDate) {\r\n endDateInput.classList.add('error');\r\n } else {\r\n endDateInput.classList.remove('error');\r\n }\r\n setBtnStatusOfApplyFilter();\r\n }\r\n\r\n function setBtnStatusOfApplyFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n applyBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n applyBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n // Time Entry Details Popup\r\n //------------------------------------\r\n function getDataForTimeEntryEdit(status, entryId, isOrginUser) {\r\n $.session.editSingleEntryCardStatus = status;\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, consumers => {\r\n editTimeEntry.init({\r\n isOrginUser,\r\n entry: results,\r\n consumers: consumers,\r\n isAdminEdit: true,\r\n payPeriod,\r\n recordActivityElement: document.getElementById(`${entryId}-seRecordActivity`),\r\n });\r\n });\r\n });\r\n }\r\n function showRowDetails(\r\n entryId,\r\n entryStatus,\r\n consumersPresent,\r\n isValid,\r\n rowName,\r\n rowDate,\r\n rowStartTime,\r\n rowEndTime,\r\n rowWorkCode,\r\n isOrginUser,\r\n ) {\r\n selectedRows = [];\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n sortSelectedRowsForUpdate();\r\n // popup\r\n var popup = POPUP.build({\r\n classNames: 'timeEntryDetailsPopup',\r\n });\r\n // btns\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('buttonWrap');\r\n var editBtn = button.build({\r\n text: 'Edit',\r\n style: 'secondary',\r\n type: 'contained',\r\n //icon: 'edit',\r\n classNames: 'editEntryBtn',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n getDataForTimeEntryEdit(entryStatus, entryId, isOrginUser);\r\n },\r\n });\r\n var approveBtn = button.build({\r\n text: 'Approve',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (!isValid) {\r\n showSubmitError(`Unable to approve entry, end time needed.`);\r\n } else {\r\n setApproveOrReject('approve');\r\n updateEntryStatus();\r\n }\r\n },\r\n });\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (!isValid) {\r\n showSubmitError(`Unable to submit entry, end time needed.`);\r\n } else {\r\n setApproveOrReject('');\r\n updateEntryStatus();\r\n }\r\n },\r\n });\r\n var rejectBtn = button.build({\r\n text: 'Reject',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n function showRejectionPopup() {\r\n //popup\r\n var popup = POPUP.build({\r\n header: 'Reject Time Entry - ' + rowName,\r\n });\r\n\r\n //put together work code description\r\n var workCode = workCodeLookup[rowWorkCode];\r\n if (workCode != '') {\r\n var workCodeText = rowWorkCode + ' - ' + workCode;\r\n } else {\r\n var workCodeText = rowWorkCode;\r\n }\r\n\r\n //format consumer data before displaying\r\n var dataMessage = document.createElement('p');\r\n dataMessage.style.marginBottom = '2em';\r\n dataMessage.innerHTML =\r\n 'Date: ' +\r\n rowDate +\r\n '
    ' +\r\n 'Start Time: ' +\r\n rowStartTime +\r\n '
    ' +\r\n 'End Time: ' +\r\n rowEndTime +\r\n '
    ' +\r\n 'Work Code: ' +\r\n workCodeText;\r\n\r\n // Text Input\r\n var rejectionReason = input.build({\r\n label: 'Reason:',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n charLimit: '500',\r\n forceCharLimit: true,\r\n });\r\n var reasonInput = document.createElement('div');\r\n reasonInput.appendChild(rejectionReason);\r\n rejectionReason.addEventListener('change', event => {\r\n rejectionReasonText = event.target.value;\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n //save button\r\n var notifyBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n //Update Work Code and the Rejection Reason\r\n setApproveOrReject('reject');\r\n updateEntryStatus();\r\n rejectionReasonText = '';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //cancel button\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //display data\r\n popup.appendChild(dataMessage);\r\n popup.appendChild(reasonInput);\r\n\r\n btnWrap.appendChild(notifyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n //show popup\r\n POPUP.show(popup);\r\n }\r\n showRejectionPopup();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(editBtn);\r\n if (entryStatus === 'P') {\r\n btnWrap.appendChild(submitBtn);\r\n }\r\n if (entryStatus === 'A') {\r\n btnWrap.appendChild(approveBtn);\r\n btnWrap.appendChild(rejectBtn);\r\n }\r\n // Aditional details\r\n const consumerDisplay = document.createElement('div');\r\n consumerDisplay.id = 'consumerDisplay';\r\n const loadingDisplay = document.createElement('div');\r\n loadingDisplay.id = 'loadingDisplay';\r\n const transportationDisplay = document.createElement('div');\r\n transportationDisplay.id = 'transportationDisplay';\r\n\r\n popup.appendChild(loadingDisplay);\r\n popup.appendChild(consumerDisplay);\r\n popup.appendChild(transportationDisplay);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n timeEntryDetailsPopup.init(entryId, consumersPresent);\r\n }\r\n\r\n // Admin Review Table\r\n //------------------------------------\r\n function enableMultiEditRows() {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n mulitSelectBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n ACTION_NAV.hide();\r\n }\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n function enableSelectAllRows() {\r\n enableSelectAll = !enableSelectAll;\r\n\r\n selectAllBtn.classList.toggle('enabled');\r\n\r\n if (enableSelectAll) {\r\n ACTION_NAV.show();\r\n enableMultiEdit = true;\r\n mulitSelectBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n\r\n selectedRows = [];\r\n\r\n var rows = [].slice.call(document.querySelectorAll('.table__row'));\r\n rows.forEach(r => {\r\n var isValid = r.dataset.valid === 'true' ? true : false;\r\n if (!isValid) return;\r\n\r\n var entryStatus = r.dataset.status;\r\n var entryId = r.id;\r\n\r\n if (entryStatus === 'P' || entryStatus === 'A') {\r\n r.classList.add('selected');\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n }\r\n });\r\n } else {\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n\r\n selectedRows = [];\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n }\r\n // events\r\n function handleReviewTableEvents(event) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isSelected = event.target.classList.contains('selected');\r\n var entryStatus = event.target.dataset.status;\r\n var entryId = event.target.id;\r\n\r\n //capture rowName, rowDate, rowStartTime, rowEndTime, rowWorkCode\r\n var rowName = event.target.childNodes[1].innerText;\r\n var rowDate = event.target.childNodes[2].innerText;\r\n var rowStartTime = event.target.childNodes[3].innerText;\r\n var rowEndTime = event.target.childNodes[4].innerText;\r\n var rowWorkCode = event.target.childNodes[7].innerText;\r\n\r\n var consumersPresent = event.target.dataset.consumers;\r\n var isValid = event.target.dataset.valid === 'true' ? true : false;\r\n var isOrginUser = event.target.dataset.valid === 'Y' ? true : false;\r\n if (!isRow) return; // if not row return\r\n\r\n if (enableMultiEdit && isValid) {\r\n if (isSelected) {\r\n // if alread selected, de-select it\r\n event.target.classList.remove('selected');\r\n selectedRows = selectedRows.filter(sr => sr.id !== entryId);\r\n if (enableSelectAll) {\r\n enableSelectAll = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.add('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n }\r\n } else {\r\n if (entryStatus === 'P' || entryStatus === 'A') {\r\n event.target.classList.add('selected');\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n }\r\n }\r\n } else if (!enableMultiEdit) {\r\n selectedRows = [];\r\n showRowDetails(\r\n entryId,\r\n entryStatus,\r\n consumersPresent,\r\n isValid,\r\n rowName,\r\n rowDate,\r\n rowStartTime,\r\n rowEndTime,\r\n rowWorkCode,\r\n isOrginUser,\r\n );\r\n }\r\n }\r\n // populate\r\n function populateTable(results) {\r\n totalHours = 0;\r\n var tableData = results.map(entry => {\r\n var isOrginUser = $.session.PeopleId === entry.peopleId ? 'Y' : 'N';\r\n\r\n var entryId = entry.Single_Entry_ID;\r\n var status = statusLookup[entry.Anywhere_status];\r\n var employee = `${entry.lastname}, ${entry.firstname}`;\r\n var date = entry.Date_of_Service.split(' ')[0];\r\n var start = UTIL.convertFromMilitary(entry.start_time);\r\n var end = UTIL.convertFromMilitary(\r\n entry.end_time === '23:59:59' ? '00:00:00' : entry.end_time,\r\n );\r\n var hours = parseFloat(entry.check_hours);\r\n var location = entry.Location_Name;\r\n var workcode = entry.WCCode;\r\n var comments = entry.comments;\r\n const consumersPresent = entry.Number_Consumers_Present;\r\n const transportationUnits = entry.transportation_units;\r\n let isValid;\r\n\r\n totalHours += hours;\r\n if (entry.keyTimes === 'Y') {\r\n // end time required to be valid\r\n isValid = entry.end_time === '' ? 'false' : 'true';\r\n } else {\r\n isValid = 'true';\r\n }\r\n\r\n //consumer present and transportation icons\r\n const additionalInformation = document.createElement('div');\r\n additionalInformation.classList.add('additionalInfoBox');\r\n additionalInformation.innerHTML = consumersPresent;\r\n if (transportationUnits !== '') additionalInformation.innerHTML += icons.car;\r\n\r\n const iconsBox = document.createElement('div');\r\n iconsBox.classList.add('iconsBox');\r\n iconsBox.appendChild(additionalInformation);\r\n\r\n if (comments !== \"\" && comments !== null) {\r\n const commentsBox = document.createElement('div');\r\n commentsBox.classList.add('commentsBox');\r\n commentsBox.innerHTML = icons.note;\r\n iconsBox.appendChild(commentsBox);\r\n\r\n if (isValid === 'false') {\r\n const svgElement = commentsBox.querySelector('svg');\r\n svgElement.style.color = 'white';\r\n }\r\n }\r\n\r\n return {\r\n id: entryId,\r\n values: [\r\n status,\r\n employee,\r\n date,\r\n start,\r\n end,\r\n hours,\r\n location,\r\n workcode,\r\n iconsBox.outerHTML\r\n ],\r\n attributes: [\r\n { key: 'data-status', value: entry.Anywhere_status },\r\n { key: 'data-consumers', value: consumersPresent },\r\n { key: 'data-valid', value: isValid },\r\n { key: 'data-origUser', value: isOrginUser },\r\n ],\r\n };\r\n });\r\n\r\n table.populate(reviewTable, tableData);\r\n totalHours = totalHours.toFixed(2);\r\n buildHoursWorked(totalHours);\r\n buildSERecordActivity(results);\r\n }\r\n // BUILD ==============\r\n // == Build Hours Worked ==\r\n function buildHoursWorked(hours) {\r\n if (Array.from(document.querySelectorAll('.table__row')).length === 1) return; // 1st row is the headers. If there is only the first row, there are no records\r\n const lastRow = Array.from(document.querySelectorAll('.table__row')).pop();\r\n const lastRowHour = lastRow.childNodes[5].innerText;\r\n lastRow.childNodes[5].outerHTML = `

    ${lastRowHour}

    Total Hours: ${hours}
    `;\r\n }\r\n\r\n // Row Additional Information from ticket 66490 Submitted/Rejected/Approved User and Date\r\n function buildSERecordActivity(seData) {\r\n function createElement(status, user, date, seID, rejected) {\r\n const dateVal = date.split(' ')[0];\r\n const timeVal = UTIL.formatTimeString(\r\n UTIL.convertToMilitary(`${date.split(' ')[1]} ${date.split(' ')[2]}`),\r\n );\r\n const element = document.createElement('p');\r\n element.classList.add('seRecordActivity');\r\n element.id = `${seID}-seRecordActivity`;\r\n element.innerText = `${status}: ${dateVal} - ${timeVal} - ${user}`;\r\n // if (rejected) element.classList.add('rejected'); //add red text to the message for rejected records\r\n const tableRow = document.getElementById(seID);\r\n tableRow.appendChild(element);\r\n }\r\n seData.forEach(entry => {\r\n switch (entry.Anywhere_status) {\r\n case 'A': // Submitted needs approval\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'S': // Submitted (and Approved)\r\n if (entry.approved_time != '') {\r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n\r\n } else {\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n }\r\n\r\n case 'I': // Imported into Advisor\r\n case 'D': // Duplicate \r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'R': // Rejected\r\n createElement(\r\n 'Record Rejected',\r\n entry.rejectedUser,\r\n entry.rejected_time,\r\n entry.Single_Entry_ID,\r\n true,\r\n );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function buildTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('actionButtonWrap');\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: enableMultiEditRows,\r\n });\r\n selectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n callback: enableSelectAllRows,\r\n });\r\n\r\n btnWrap.appendChild(mulitSelectBtn);\r\n btnWrap.appendChild(selectAllBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildTable() {\r\n var tableOptions = {\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: 'Time Entries',\r\n columnHeadings: [\r\n 'Status',\r\n 'Employee',\r\n 'Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Hours',\r\n 'Location',\r\n 'Work Code',\r\n '',\r\n ],\r\n callback: e => {\r\n handleReviewTableEvents(e);\r\n },\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n function buildReviewPage() {\r\n mapBtn = button.build({\r\n text: showMap ? ' Hide Map' : ' Show Map',\r\n style: 'secodary',\r\n type: 'text',\r\n classNames: 'mapBtn',\r\n callback: function () {\r\n if (!showMap) addMap();\r\n showMap = true;\r\n //See comment in init func regarding the removal of local storage setting for Map.\r\n //Button will only be show map. once clicked they can't hide it. This is to prevent people from\r\n //showing and hiding rapidly and incuring high api usage.\r\n\r\n //UTIL.LS.setStorage(LSKEY_showMap, showMap)\r\n //if (showMap) {\r\n // mapBtn.innerHTML = icons.close + ' Hide Map'\r\n // addMap()\r\n //} else {\r\n // mapBtn.innerHTML = icons.show + ' Show Map'\r\n // GOOGLE_MAP.clearMap()\r\n //}\r\n },\r\n });\r\n mapBtn.innerHTML = icons.show + ' Show Map';\r\n\r\n DOM.clearActionCenter();\r\n var topNav = buildTopNav();\r\n var fitleredBy = buildFilteredBy();\r\n reviewTable = buildTable();\r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(fitleredBy);\r\n DOM.ACTIONCENTER.appendChild(reviewTable);\r\n DOM.ACTIONCENTER.appendChild(mapBtn);\r\n\r\n setupActionNav();\r\n }\r\n // load\r\n function loadReviewPage() {\r\n $.session.singleEntrycrossMidnight = false;\r\n roster2.removeMiniRosterBtn();\r\n if (!supervisorId) supervisorId = $.session.PeopleId;\r\n if (!supervisorName) supervisorName = `${$.session.Name} ${$.session.LName}`;\r\n if (!employeeId) employeeId = '';\r\n if (!employeeName) employeeName = 'All';\r\n if (!locationId) locationId = '%';\r\n if (!locationName) locationName = 'All';\r\n if (!status) status = '%';\r\n if (!statusText) statusText = 'All';\r\n if (!workCodeId) workCodeId = '%';\r\n if (!workCodeName) workCodeName = 'All';\r\n\r\n buildReviewPage();\r\n getReviewTableData(populateTable);\r\n }\r\n\r\n /**\r\n * Handle navigation from dashboard widget to module\r\n * @param {string} startPeriod - M/D/Y Start of the pay period\r\n * @param {string} endPeriod - M/D/Y End of the pay period\r\n * @param {string} dashStatus - Letter code of status of the time entry\r\n * */\r\n async function dashHandler(startPeriod, endPeriod, dashStatus) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n let startDateIso = UTIL.formatDateToIso(startPeriod);\r\n let endDateIso = UTIL.formatDateToIso(endPeriod);\r\n startDate = startDateIso;\r\n endDate = endDateIso;\r\n status = dashStatus;\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n payPeriod = timeEntry.setSelectedPayPeriod(\r\n startDateIso,\r\n endDateIso,\r\n `${startPeriod} - ${endPeriod}`,\r\n );\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n function addMap() {\r\n let center;\r\n let markers = [];\r\n let markerLabels = [];\r\n reviewTableData.forEach((el, i) => {\r\n if (el.latitude == 0 && el.longitude == 0) return;\r\n latLngObj = {\r\n lat: parseFloat(el.latitude),\r\n lng: parseFloat(el.longitude),\r\n };\r\n let markerLabelDate = el.Date_of_Service.split(' ')[0];\r\n let markerLabelStartTime = UTIL.formatTimeString(el.start_time);\r\n let markerLabelEndTime = UTIL.formatTimeString(el.end_time);\r\n let markerLabelText = `\r\n ${el.lastname}, ${el.firstname}
    \r\n ${markerLabelDate} ${markerLabelStartTime} - ${markerLabelEndTime}
    \r\n ${el.Location_Name}\r\n `;\r\n markers.push(latLngObj);\r\n markerLabels.push(markerLabelText);\r\n });\r\n\r\n markers = GOOGLE_MAP.createMarkerArray(markers, markerLabels);\r\n\r\n let recordCnt = markers.latLngObj.length;\r\n if (recordCnt === 0) {\r\n GOOGLE_MAP.clearMap();\r\n return;\r\n }\r\n center = markers.latLngObj[0];\r\n GOOGLE_MAP.createBoundry(markers.latLngObj);\r\n GOOGLE_MAP.clearMap();\r\n GOOGLE_MAP.createElement(DOM.ACTIONCENTER);\r\n\r\n GOOGLE_MAP.initMap(10, center, markers);\r\n }\r\n\r\n async function refreshPage(payperiod) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = payperiod ? payperiod : timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n workCodeData = await timeEntry.getWorkCodes();\r\n startDate = payperiod.start;\r\n endDate = payperiod.end;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n }); \r\n }\r\n\r\n function showSubmitError(messageText) {\r\n var popup = POPUP.build({ classNames: ['error'] });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n popup.appendChild(message);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function isValidDate(d) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n async function init() {\r\n //Removing Local Storage Key for showing Map. Map will now be defaulted to off,\r\n //end user will always need to click on show map button to load map.\r\n //this is to prevent over usage of google api.\r\n // showMap = UTIL.LS.getStorage(LSKEY_showMap);\r\n showMap = false;\r\n // if (showMap === undefined) showMap = true;\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n //displayPayPeriodPopup();\r\n if (payPeriod.start && payPeriod.end) {\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n }\r\n else {\r\n endDate = UTIL.formatDateFromDateObj(dates.addDays(new Date(), 5));\r\n startDate = UTIL.formatDateFromDateObj(dates.subDays(new Date(), 1));\r\n }\r\n\r\n tmpStartDate = startDate;\r\n tmpEndDate = endDate;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n clearAllGlobalVariables,\r\n refreshPage,\r\n init,\r\n };\r\n})();\r\n","var timeEntryReview = (function () {\r\n //-DATA------------------\r\n var payPeriodData;\r\n var locationData;\r\n var workCodeData;\r\n //-DOM------------------\r\n var payPeriodsDropdown;\r\n var reviewTable;\r\n var mulitSelectBtn;\r\n var selectAllBtn;\r\n var filterBtn;\r\n var filterPopup;\r\n var locationDropdown;\r\n var workCodeDropdown;\r\n var applyBtn;\r\n var cancelBtn;\r\n //-VALUES------------------\r\n var payPeriod;\r\n var locationId;\r\n var workCodeId;\r\n var locationName;\r\n var workCodeName;\r\n var startDate;\r\n var endDate;\r\n var splitStartDate;\r\n var splitEndDate;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpWorkCodeId;\r\n var tmpWorkCodeName;\r\n var wcAbbreviation;\r\n //-OTHER------------------\r\n var statusLookup = {\r\n A: 'Awaiting Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n I: 'Imported',\r\n S: 'Submitted',\r\n D: 'Duplicate',\r\n };\r\n var enableMultiEdit = false;\r\n var enableSelectAll = false;\r\n var selectedRows = []; // array of row ids\r\n //-TABLE DATA------------------\r\n var entriesByDate; // original results array\r\n\r\n let btnWrap;\r\n let payPeriodBtnWrap;\r\n let locationNameBtnWrap;\r\n let workCodeNameBtnWrap;\r\n\r\n // Util\r\n //------------------------------------\r\n function formatTimeString(timeString) {\r\n if (timeString === '') return timeString;\r\n // removes seconds and strips leading zeros then converts to standard\r\n var time = timeString.split(':');\r\n var hh = time[0].split('')[0] === '0' ? time[0].split('')[1] : time[0];\r\n var mm = time[1];\r\n\r\n return UTIL.convertFromMilitary(`${hh}:${mm}`);\r\n }\r\n function showDeleteEntryWarningPopup(messageText, callback) {\r\n var popup = POPUP.build({ classNames: ['warning'], hideX: true });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n callback();\r\n ACTION_NAV.hide();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n ACTION_NAV.hide();\r\n\r\n mulitSelectBtn.classList.remove('enabled');\r\n mulitSelectBtn.classList.remove('disabled');\r\n selectAllBtn.classList.remove('enabled');\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n function showSubmitError(messageText) {\r\n var popup = POPUP.build({ classNames: ['error'] });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n popup.appendChild(message);\r\n\r\n POPUP.show(popup);\r\n }\r\n function clearAllGlobalVariables() {\r\n selectedRows = [];\r\n\r\n payPeriod = undefined;\r\n locationId = undefined;\r\n workCodeId = undefined;\r\n locationName = undefined;\r\n workCodeName = undefined;\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n tmpLocationId = undefined;\r\n tmpLocationName = undefined;\r\n tmpWorkCodeId = undefined;\r\n tmpWorkCodeName = undefined;\r\n }\r\n\r\n // Submit & Delete\r\n //------------------------------------\r\n function submitEntries() {\r\n var statusDataObj = {\r\n newStatus: 'S',\r\n singleEntryIdString: selectedRows.join(','),\r\n token: $.session.Token,\r\n };\r\n singleEntryAjax.updateSingleEntryStatus(statusDataObj, function (results) {\r\n successfulSave.show('ENTRIES SUBMITTED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n loadReviewPage();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('enabled');\r\n }, 1000);\r\n });\r\n }\r\n function deleteEntries() {\r\n var deletePromises = [];\r\n\r\n selectedRows.forEach(row => {\r\n deletePromises.push(\r\n new Promise(function (fulfill, reject) {\r\n singleEntryAjax.deleteSingleEntryRecord(row, function (results) {\r\n fulfill();\r\n });\r\n }),\r\n );\r\n });\r\n\r\n Promise.all(deletePromises)\r\n .then(function (res) {\r\n successfulSave.show('ENTRIES DELETED');\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n loadReviewPage();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('enabled');\r\n }, 1000);\r\n })\r\n .catch(function (error) { });\r\n }\r\n function submitEntry(updateObj) {\r\n singleEntryAjax.updateSingleEntryStatus(updateObj, function () {\r\n loadReviewPage();\r\n });\r\n }\r\n function deleteEntry(entryId) {\r\n singleEntryAjax.deleteSingleEntryRecord(entryId, function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n if (!selectedRows || selectedRows.length === 0) {\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('enabled');\r\n ACTION_NAV.hide();\r\n return;\r\n }\r\n\r\n switch (targetAction) {\r\n case 'submitEntries': {\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed these entries and that they are correct to the best of your knowledge.`;\r\n showDeleteEntryWarningPopup(warningMessage, () => submitEntries());\r\n ACTION_NAV.hide();\r\n break;\r\n }\r\n case 'deleteEntries': {\r\n showDeleteEntryWarningPopup(\r\n `These entries will be permanently deleted, do you wish to continue?`,\r\n deleteEntries,\r\n );\r\n break;\r\n }\r\n }\r\n }\r\n function setupActionNav() {\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'submitEntries' }],\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{ key: 'data-action-nav', value: 'deleteEntries' }],\r\n });\r\n\r\n ACTION_NAV.populate([submitBtn, deleteBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n //reformat startDate and endDate\r\n splitStartDate = startDate.split('-');\r\n splitEndDate = endDate.split('-');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n if (document.getElementById('payPeriodBtn') != null)\r\n document.getElementById('payPeriodBtn').innerHTML = 'Pay Period: ' + UTIL.leadingZero(splitStartDate[1]) + '/' + UTIL.leadingZero(splitStartDate[2],)\r\n + '/' + splitStartDate[0].slice(2, 4) + ' - ' + UTIL.leadingZero(splitEndDate[1]) + '/' + UTIL.leadingZero(splitEndDate[2],)\r\n + '/' + splitEndDate[0].slice(2, 4);\r\n\r\n\r\n if (locationName === '%' || locationName === 'All') {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n btnWrap.removeChild(locationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n if (document.getElementById('locationNameBtn') != null)\r\n document.getElementById('locationNameBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (workCodeName === '%' || workCodeName === 'All') {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n btnWrap.removeChild(workCodeNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n if (document.getElementById('workCodeNameBtn') != null)\r\n document.getElementById('workCodeNameBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n payPeriodBtn = button.build({\r\n id: 'payPeriodBtn',\r\n text: 'Pay Period: ' + UTIL.leadingZero(splitStartDate[1]) + '/' + UTIL.leadingZero(splitStartDate[2],) + '/' + splitStartDate[0].slice(2, 4) + ' - ' + UTIL.leadingZero(splitEndDate[1]) + '/' + UTIL.leadingZero(splitEndDate[2],) + '/' + splitEndDate[0].slice(2, 4),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('payPeriodBtn') },\r\n });\r\n\r\n locationNameBtn = button.build({\r\n id: 'locationNameBtn',\r\n text: 'Location: ' + locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationNameBtn') },\r\n });\r\n locationNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationNameBtn') },\r\n });\r\n\r\n workCodeNameBtn = button.build({\r\n id: 'workCodeNameBtn',\r\n text: 'Work Code: ' + workCodeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('workCodeNameBtn') },\r\n });\r\n workCodeNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('workCodeNameBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n payPeriodBtnWrap = document.createElement('div');\r\n payPeriodBtnWrap.classList.add('filterSelectionBtnWrap');\r\n payPeriodBtnWrap.appendChild(payPeriodBtn);\r\n btnWrap.appendChild(payPeriodBtnWrap);\r\n\r\n locationNameBtnWrap = document.createElement('div');\r\n locationNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationNameBtnWrap.appendChild(locationNameBtn);\r\n locationNameBtnWrap.appendChild(locationNameCloseBtn);\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n\r\n workCodeNameBtnWrap = document.createElement('div');\r\n workCodeNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n workCodeNameBtnWrap.appendChild(workCodeNameBtn);\r\n workCodeNameBtnWrap.appendChild(workCodeNameCloseBtn);\r\n btnWrap.appendChild(workCodeNameBtnWrap); \r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'workCodeNameBtn') {\r\n tmpWorkCodeName = 'All';\r\n workCodeName = 'All';\r\n tmpWorkCodeId = '%';\r\n }\r\n if (closeFilter == 'locationNameBtn') {\r\n tmpLocationId = '%';\r\n locationName = 'All'; \r\n tmpLocationName = 'All'; \r\n } \r\n applyFilter();\r\n }\r\n\r\n function populateLocationDropdown() {\r\n var data = locationData.map(l => {\r\n return {\r\n value: l.ID,\r\n text: l.Name,\r\n attributes: [\r\n { key: 'data-residence', value: l.Residence },\r\n { key: 'data-reimbursable', value: l.SE_Trans_Reimbursable },\r\n ],\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(locationDropdown, data, locationId);\r\n }\r\n function populateWorkCodeDropdown() {\r\n var data = workCodeData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n };\r\n });\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n dropdown.populate(workCodeDropdown, data, workCodeId);\r\n }\r\n function setupFilterEventListeners() {\r\n locationDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n workCodeDropdown.addEventListener('change', function () {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpWorkCodeId = selectedOption.value;\r\n tmpWorkCodeName = selectedOption.innerHTML;\r\n });\r\n\r\n applyBtn.addEventListener('click', function () {\r\n applyFilter()\r\n POPUP.hide(filterPopup);\r\n });\r\n cancelBtn.addEventListener('click', function () {\r\n POPUP.hide(filterPopup);\r\n });\r\n }\r\n\r\n function applyFilter() {\r\n if (tmpLocationId || tmpWorkCodeId) {\r\n locationId = tmpLocationId;\r\n workCodeId = tmpWorkCodeId;\r\n\r\n if (locationId !== '%' || workCodeId !== '%') {\r\n populateTable(\r\n entriesByDate.filter(e => {\r\n if (tmpLocationId && tmpWorkCodeId) {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n if (tmpLocationId === '%') {\r\n return e.WCCode === wcAbbreviation;\r\n } else if (tmpWorkCodeId === '%') {\r\n return e.Location_ID === locationId;\r\n } else {\r\n return e.Location_ID === locationId && e.WCCode === wcAbbreviation;\r\n }\r\n }\r\n if (tmpLocationId && !tmpWorkCodeId) {\r\n return e.Location_ID === locationId;\r\n }\r\n\r\n if (tmpWorkCodeId && !tmpLocationId) {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n return e.WCCode === wcAbbreviation;\r\n }\r\n }),\r\n );\r\n } else {\r\n populateTable(entriesByDate);\r\n }\r\n\r\n ACTION_NAV.hide();\r\n mulitSelectBtn.classList.remove('enabled');\r\n mulitSelectBtn.classList.remove('disabled');\r\n selectAllBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('disabled');\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n\r\n if (tmpLocationName) locationName = tmpLocationName;\r\n if (tmpWorkCodeName) workCodeName = tmpWorkCodeName;\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n //reformat startDate and endDate\r\n var splitStartDate = startDate.split('-');\r\n var splitEndDate = endDate.split('-'); \r\n\r\n if (document.getElementById('payPeriodBtn') != null)\r\n document.getElementById('payPeriodBtn').innerHTML = 'Pay Period: ' + UTIL.leadingZero(splitStartDate[1]) + '/' + UTIL.leadingZero(splitStartDate[2],)\r\n + '/' + splitStartDate[0].slice(2, 4) + ' - ' + UTIL.leadingZero(splitEndDate[1]) + '/' + UTIL.leadingZero(splitEndDate[2],)\r\n + '/' + splitEndDate[0].slice(2, 4);\r\n\r\n if (locationName === '%' || locationName === 'All') {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n btnWrap.removeChild(locationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(locationNameBtnWrap);\r\n document.getElementById('locationNameBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (workCodeName === '%' || workCodeName === 'All') {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n btnWrap.removeChild(workCodeNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(workCodeNameBtnWrap);\r\n document.getElementById('workCodeNameBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n //load review page for the selected pay period\r\n refreshPage(payPeriod);\r\n }\r\n function showFilterPopup(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: 'timeEntryReviewFilterPopup',\r\n hideX: true,\r\n });\r\n\r\n // pay period dropdown\r\n payPeriodsDropdown = buildPayPeriodDropdown();\r\n\r\n // location dropdown\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n workCodeDropdown = dropdown.build({\r\n dropdownID: 'workCodeDropdown',\r\n label: 'Work Codes',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // Build Popup\r\n if (IsShow == 'ALL' || IsShow == 'payPeriodBtn')\r\n filterPopup.appendChild(payPeriodsDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationNameBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'workCodeNameBtn')\r\n filterPopup.appendChild(workCodeDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n // populate drodown\r\n populateLocationDropdown();\r\n populateWorkCodeDropdown();\r\n\r\n setupFilterEventListeners();\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Time Entry Details Popup\r\n //------------------------------------\r\n function getDataForTimeEntryEdit(status, entryId) {\r\n $.session.editSingleEntryCardStatus = status;\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, consumers => {\r\n editTimeEntry.init({\r\n entry: results,\r\n consumers: consumers,\r\n payPeriod,\r\n recordActivityElement: document.getElementById(`${entryId}-seRecordActivity`),\r\n });\r\n });\r\n });\r\n }\r\n function showRowDetails(entryId, entryStatus, isValid, consumersPresent) {\r\n // popup\r\n var popup = POPUP.build({\r\n classNames: 'timeEntryDetailsPopup',\r\n });\r\n // btns\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('buttonWrap');\r\n var editBtn = button.build({\r\n text: 'Edit',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'editEntryBtn',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n getDataForTimeEntryEdit(entryStatus, entryId);\r\n },\r\n });\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n var updateObj = {\r\n token: $.session.Token,\r\n singleEntryIdString: entryId,\r\n newStatus: 'S',\r\n };\r\n // var entry = entriesByDate.filter(e => e.Single_Entry_ID === entryId)[0];\r\n if (!isValid) {\r\n showSubmitError(`Unable to submit entry, end time needed.`);\r\n } else {\r\n var warningMessage = `By clicking Yes, you are confirming that you have reviewed this entry and it is correct to the best of your knowledge.`;\r\n showDeleteEntryWarningPopup(warningMessage, () => submitEntry(updateObj));\r\n POPUP.hide(popup);\r\n }\r\n },\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n var warningMessage = `This entry will be permanently deleted, do you wish to continue?`;\r\n showDeleteEntryWarningPopup(warningMessage, () => deleteEntry(entryId));\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(editBtn);\r\n if (entryStatus === 'P' || entryStatus === 'R') {\r\n btnWrap.appendChild(submitBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n }\r\n // Aditional details\r\n const consumerDisplay = document.createElement('div');\r\n consumerDisplay.id = 'consumerDisplay';\r\n const loadingDisplay = document.createElement('div');\r\n loadingDisplay.id = 'loadingDisplay';\r\n const transportationDisplay = document.createElement('div');\r\n transportationDisplay.id = 'transportationDisplay';\r\n\r\n popup.appendChild(loadingDisplay);\r\n popup.appendChild(consumerDisplay);\r\n popup.appendChild(transportationDisplay);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n timeEntryDetailsPopup.init(entryId, consumersPresent);\r\n }\r\n\r\n // Time Entry Review Table\r\n //-----------------------------------\r\n function enableMultiEditRows() {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n mulitSelectBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n ACTION_NAV.hide();\r\n }\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n function enableSelectAllRows() {\r\n enableSelectAll = !enableSelectAll;\r\n\r\n selectAllBtn.classList.toggle('enabled');\r\n\r\n if (enableSelectAll) {\r\n ACTION_NAV.show();\r\n enableMultiEdit = true;\r\n mulitSelectBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n\r\n selectedRows = [];\r\n\r\n var rows = [].slice.call(document.querySelectorAll('.table__row'));\r\n rows.forEach(r => {\r\n var isValid = r.dataset.valid === 'true' ? true : false;\r\n if (!isValid) return;\r\n\r\n var entryStatus = r.dataset.status;\r\n if (entryStatus === 'P' || entryStatus === 'R') {\r\n r.classList.add('selected');\r\n selectedRows.push(r.id);\r\n }\r\n });\r\n } else {\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n\r\n selectedRows = [];\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n }\r\n // events\r\n function handleReviewTableEvents(event) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isSelected = event.target.classList.contains('selected');\r\n var entryStatus = event.target.dataset.status;\r\n var isValid = event.target.dataset.valid === 'true' ? true : false;\r\n var entryId = event.target.id;\r\n var consumersPresent = event.target.dataset.consumers;\r\n if (!isRow) return; // if not row return\r\n\r\n if (enableMultiEdit && isValid) {\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedRows = selectedRows.filter(sr => sr !== entryId);\r\n if (enableSelectAll) {\r\n enableSelectAll = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.add('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n }\r\n } else {\r\n if (entryStatus === 'P' || entryStatus === 'R') {\r\n event.target.classList.add('selected');\r\n selectedRows.push(entryId);\r\n }\r\n }\r\n } else if (!enableMultiEdit) {\r\n selectedRows = [];\r\n showRowDetails(entryId, entryStatus, isValid, consumersPresent);\r\n }\r\n }\r\n // populate\r\n async function populateTable(results) {\r\n var workCodes = await timeEntry.getWorkCodes();\r\n\r\n var tableData = results.map(td => {\r\n var entryId = td.Single_Entry_ID;\r\n\r\n var serviceDate = UTIL.abbreviateDateYear(td.Date_of_Service.split(' ')[0]);\r\n var startTime = formatTimeString(td.Start_Time);\r\n var endTime = formatTimeString(td.End_Time === '23:59:59' ? '00:00:00' : td.End_Time);\r\n var hours = td.Check_Hours;\r\n var locationName = td.Location_Name;\r\n var wcCode = td.WCCode;\r\n var status = statusLookup[td.Anywhere_Status];\r\n var abbStatus = td.Anywhere_Status;\r\n var consumersPresent = td.Number_Consumers_Present;\r\n const transportationUnits = td.Transportation_Units;\r\n var comments = td.Comments;\r\n var isValid;\r\n var workCodeData = workCodes.filter(wc => wc.workcodeid === td.Work_Code_ID);\r\n\r\n if (workCodeData[0] && workCodeData[0].keyTimes === 'Y') {\r\n // end time required to be valid\r\n isValid = td.End_Time === '' ? 'false' : 'true';\r\n } else {\r\n isValid = 'true';\r\n }\r\n\r\n //consumer present and transportation icons\r\n const additionalInformation = document.createElement('div');\r\n additionalInformation.classList.add('additionalInfoBox');\r\n additionalInformation.innerHTML = consumersPresent;\r\n if (transportationUnits !== '') additionalInformation.innerHTML += icons.car;\r\n\r\n const iconsBox = document.createElement('div');\r\n iconsBox.classList.add('iconsBox');\r\n iconsBox.appendChild(additionalInformation);\r\n\r\n if (comments !== '' && comments !== null && comments.trim() !== '') {\r\n const commentsBox = document.createElement('div');\r\n commentsBox.classList.add('commentsBox');\r\n commentsBox.innerHTML = icons.note;\r\n iconsBox.appendChild(commentsBox);\r\n }\r\n\r\n return {\r\n id: entryId,\r\n values: [\r\n status,\r\n serviceDate,\r\n startTime,\r\n endTime,\r\n hours,\r\n locationName,\r\n wcCode,\r\n iconsBox.outerHTML,\r\n ],\r\n attributes: [\r\n { key: 'data-status', value: abbStatus },\r\n { key: 'data-valid', value: isValid },\r\n { key: 'data-consumers', value: consumersPresent },\r\n ],\r\n };\r\n });\r\n\r\n table.populate(reviewTable, tableData);\r\n buildSERecordActivity(results);\r\n }\r\n\r\n // Row Additional Information from ticket 71522\r\n function buildSERecordActivity(seData) {\r\n function createElement(status, user, date, seID, rejected) {\r\n const dateVal = date.split(' ')[0];\r\n const timeVal = UTIL.formatTimeString(\r\n UTIL.convertToMilitary(`${date.split(' ')[1]} ${date.split(' ')[2]}`),\r\n );\r\n const element = document.createElement('p');\r\n element.classList.add('seRecordActivity');\r\n element.id = `${seID}-seRecordActivity`;\r\n element.innerText = `${status}: ${dateVal} - ${timeVal} - ${user}`;\r\n // if (rejected) element.classList.add('error'); //add red text to the message for rejected records\r\n // if (rejected) element.style.color = \"red\"; //add red text to the message for rejected records\r\n const tableRow = document.getElementById(seID);\r\n tableRow.appendChild(element);\r\n }\r\n seData.forEach(entry => {\r\n switch (entry.Anywhere_Status) {\r\n case 'A': // Submitted needs approval\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'S': // Submitted (and Approved)\r\n if (entry.approved_time != '') {\r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n\r\n } else {\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n }\r\n\r\n case 'I': // Imported into Advisor\r\n case 'D': // Duplicate \r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'R': // Rejected\r\n createElement(\r\n 'Record Rejected',\r\n entry.rejectedUser,\r\n entry.rejected_time,\r\n entry.Single_Entry_ID,\r\n true,\r\n );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n // build\r\n function buildTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('actionButtonWrap');\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: enableMultiEditRows,\r\n });\r\n selectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n callback: enableSelectAllRows,\r\n });\r\n\r\n btnWrap.appendChild(mulitSelectBtn);\r\n btnWrap.appendChild(selectAllBtn); \r\n\r\n return btnWrap;\r\n }\r\n function buildReportButton() {\r\n var btn = button.build({\r\n text: 'Reports',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n reports.init(payPeriod);\r\n },\r\n });\r\n\r\n return btn;\r\n }\r\n function buildTable() {\r\n var tableOptions = {\r\n tableId: 'singleEntryReviewTable',\r\n headline: 'My Time Entries',\r\n columnHeadings: [\r\n 'Status',\r\n 'Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Hours',\r\n 'Location',\r\n 'Work Code',\r\n '',\r\n ],\r\n callback: handleReviewTableEvents,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n function buildReviewPage() {\r\n DOM.clearActionCenter();\r\n var topNav = buildTopNav();\r\n var reportBtn = buildReportButton();\r\n var fitleredBy = buildFilteredBy();\r\n reviewTable = buildTable();\r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(reportBtn);\r\n DOM.ACTIONCENTER.appendChild(fitleredBy);\r\n DOM.ACTIONCENTER.appendChild(reviewTable);\r\n\r\n setupActionNav();\r\n }\r\n // load\r\n function loadReviewPage(status) {\r\n roster2.removeMiniRosterBtn();\r\n\r\n $.session.fromEdit = true;\r\n $.session.singleEntrycrossMidnight = false;\r\n\r\n if (!locationId) locationId = '%';\r\n if (!locationName) locationName = 'All';\r\n if (!workCodeId) workCodeId = '%';\r\n if (!workCodeName) workCodeName = 'All';\r\n\r\n buildReviewPage();\r\n singleEntryAjax.getSingleEntryByDate(\r\n {\r\n userId: $.session.UserId,\r\n startDate: payPeriod.start,\r\n endDate: payPeriod.end,\r\n locationId: locationId ? locationId : '%',\r\n workCodeId: workCodeId ? workCodeId : '%',\r\n statusIn: status ? status : '',\r\n },\r\n function (results, error) {\r\n entriesByDate = results;\r\n if (locationId !== '%' || workCodeId !== '%') {\r\n populateTable(\r\n entriesByDate.filter(e => {\r\n if (tmpLocationId && tmpWorkCodeId) {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n if (tmpLocationId === '%') {\r\n return e.WCCode === wcAbbreviation;\r\n } else if (tmpWorkCodeId === '%') {\r\n return e.Location_ID === locationId;\r\n } else {\r\n return e.Location_ID === locationId && e.WCCode === wcAbbreviation;\r\n }\r\n }\r\n if (tmpLocationId && !tmpWorkCodeId && tmpLocationId !== '%') {\r\n return e.Location_ID === locationId;\r\n }\r\n if (tmpWorkCodeId && !tmpLocationId && tmpWorkCodeId !== '%') {\r\n wcAbbreviation = workCodeName.split(' ')[0];\r\n return e.WCCode === wcAbbreviation;\r\n }\r\n }),\r\n );\r\n } else {\r\n populateTable(entriesByDate);\r\n }\r\n },\r\n );\r\n }\r\n\r\n // Pay Period Popup - time entry review landing\r\n //--------------------------------------------------\r\n function buildPayPeriodDropdown() {\r\n // build\r\n var select = dropdown.build({\r\n dropdownId: 'payPeriodsDropdown',\r\n label: 'Pay Periods',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n // populate\r\n var dropdownData = payPeriodData.map(pp => {\r\n var dateArray = pp.dateString.split(' - ');\r\n startDate = dateArray[0];\r\n endDate = dateArray[1];\r\n var startDateAbbr = UTIL.abbreviateDateYear(startDate);\r\n var endDateAbbr = UTIL.abbreviateDateYear(endDate);\r\n\r\n return {\r\n value: `${startDate} - ${endDate}`,\r\n text: `${startDateAbbr} - ${endDateAbbr}`,\r\n };\r\n });\r\n dropdown.populate(select, dropdownData, payPeriod.dateString);\r\n // event\r\n select.addEventListener('change', function () {\r\n var dateRange = event.target.value.split(' - ');\r\n var startDateIso = UTIL.formatDateToIso(dateRange[0]);\r\n var endDateIso = UTIL.formatDateToIso(dateRange[1]);\r\n payPeriod = timeEntry.setSelectedPayPeriod(startDateIso, endDateIso, event.target.value);\r\n });\r\n\r\n return select;\r\n }\r\n\r\n //Handle navigation from dashboard widget to module\r\n async function dashHandler(startPeriod, endPeriod, status) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n let startDateIso = UTIL.formatDateToIso(startPeriod);\r\n let endDateIso = UTIL.formatDateToIso(endPeriod);\r\n\r\n payPeriod = timeEntry.setSelectedPayPeriod(\r\n startDateIso,\r\n endDateIso,\r\n `${startPeriod} - ${endPeriod}`,\r\n );\r\n loadReviewPage(status);\r\n }\r\n async function refreshPage(payperiod) {\r\n setActiveModuleSectionAttribute('timeEntry-review');\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = payperiod ? payperiod : timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n loadReviewPage();\r\n }\r\n async function init() {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n loadReviewPage();\r\n }\r\n\r\n return {\r\n loadReviewPage,\r\n handleActionNavEvent,\r\n clearAllGlobalVariables,\r\n dashHandler,\r\n refreshPage,\r\n showDeleteEntryWarningPopup,\r\n init,\r\n };\r\n})();\r\n","const TRANS_addRoute = (function () {\r\n /*\r\n Date\r\n Route Name\r\n Driver\r\n Other Rider\r\n Location\r\n Vehicle\r\n Billing Type (radio: Miles/Trips)\r\n Consumers\r\n */\r\n\r\n let dateInput,\r\n routeNameInput,\r\n driverDropdown,\r\n otherRiderDropdown,\r\n locationDropdown,\r\n vehicleDropdown;\r\n let milesRadio, tripsRadio;\r\n let consumerSectionBody, noConsumerWarning;\r\n let consumersOnRecord = new Map();\r\n let saveBtn;\r\n\r\n function buildPage() {\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n\r\n // Route Info Card//\r\n const routeInfoCard = document.createElement(\"div\");\r\n routeInfoCard.classList.add(\"card\");\r\n const routeInfoCardBody = document.createElement(\"div\");\r\n routeInfoCardBody.classList.add(\"card__body\");\r\n routeInfoCard.innerHTML = `\r\n
    Route Information
    \r\n `;\r\n routeInfoCard.appendChild(routeInfoCardBody)\r\n //\r\n dateInput = input.build({\r\n id: \"addRouteDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: UTIL.getTodaysDate(),\r\n });\r\n routeNameInput = input.build({\r\n id: \"routeNameInput\",\r\n label: \"Route Name\",\r\n charLimit: 60\r\n });\r\n routeNameInput.autocomplete = 'false'\r\n\r\n driverDropdown = dropdown.build({\r\n dropdownId: \"driverDropdown\",\r\n label: \"Driver\",\r\n style: \"secondary\",\r\n });\r\n otherRiderDropdown = dropdown.build({\r\n dropdownId: \"otherRiderDropdown\",\r\n label: \"Other Rider\",\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: \"vehicleDropdown\",\r\n label: \"Vehicle\",\r\n style: \"secondary\",\r\n });\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\",\r\n });\r\n\r\n // Billing Radios //\r\n milesRadio = input.buildRadio({\r\n id: `milesRadio`,\r\n text: \"Miles\",\r\n name: \"billingType\",\r\n isChecked: true,\r\n });\r\n tripsRadio = input.buildRadio({\r\n id: `tripsRadio`,\r\n text: \"Trips\",\r\n name: \"billingType\",\r\n isChecked: false,\r\n });\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addRouteRadioDiv\");\r\n radioDiv.appendChild(milesRadio);\r\n radioDiv.appendChild(tripsRadio);\r\n /////////////////\r\n saveBtn = button.build({\r\n id: 'saveBtn',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n saveRoute();\r\n }\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n id: 'cancelBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n // Should probably reset values maybe?? will need to test\r\n setActiveModuleSectionAttribute(null);\r\n roster2.clearActiveConsumers()\r\n TRANS_mainLanding.init();\r\n }\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n ///////////////////\r\n // Append to first column //\r\n column1.appendChild(routeInfoCard)\r\n routeInfoCardBody.appendChild(dateInput);\r\n routeInfoCardBody.appendChild(routeNameInput);\r\n routeInfoCardBody.appendChild(driverDropdown);\r\n routeInfoCardBody.appendChild(otherRiderDropdown);\r\n routeInfoCardBody.appendChild(vehicleDropdown);\r\n routeInfoCardBody.appendChild(locationDropdown);\r\n routeInfoCardBody.appendChild(radioDiv);\r\n ////////////////////\r\n // Consumer Section //\r\n const consumerSectionCard = document.createElement(\"div\");\r\n const consumerSectionHeader = document.createElement(\"div\");\r\n consumerSectionBody = document.createElement(\"div\");\r\n consumerSectionCard.classList.add(\"card\");\r\n consumerSectionHeader.classList.add(\"card__header\");\r\n consumerSectionBody.classList.add(\"card__body\");\r\n consumerSectionBody.id = 'consumerOnRouteSection'\r\n consumerSectionHeader.innerText = \"Consumers on Route\";\r\n consumerSectionCard.appendChild(consumerSectionHeader);\r\n consumerSectionCard.appendChild(consumerSectionBody);\r\n // No Consumer Warning //\r\n noConsumerWarning = document.createElement('p');\r\n noConsumerWarning.style.color = 'red';\r\n noConsumerWarning.innerText = 'You must select at least one consumer for the route.'\r\n consumerSectionBody.appendChild(noConsumerWarning)\r\n //\r\n column2.appendChild(consumerSectionCard)\r\n column2.appendChild(btnWrap)\r\n DOM.ACTIONCENTER.appendChild(column1)\r\n DOM.ACTIONCENTER.appendChild(column2)\r\n\r\n populateDropdowns();\r\n eventListeners();\r\n checkRequiredFieldsOfAddRoute();\r\n }\r\n\r\n function checkRequiredFieldsOfAddRoute() {\r\n var date = dateInput.querySelector('input');\r\n var routeName = routeNameInput.querySelector('#routeNameInput');\r\n var driver = driverDropdown.querySelector('#driverDropdown');\r\n var vehicle = vehicleDropdown.querySelector('#vehicleDropdown');\r\n var location = locationDropdown.querySelector('#locationDropdown');\r\n\r\n if (date.value === '') {\r\n dateInput.classList.add('error');\r\n } else {\r\n dateInput.classList.remove('error');\r\n }\r\n\r\n if (routeName.value === '') {\r\n routeNameInput.classList.add('error');\r\n } else {\r\n routeNameInput.classList.remove('error');\r\n }\r\n\r\n if (driver.value === '') {\r\n driverDropdown.classList.add('error');\r\n } else {\r\n driverDropdown.classList.remove('error');\r\n }\r\n\r\n if (vehicle.value === '') {\r\n vehicleDropdown.classList.add('error');\r\n } else {\r\n vehicleDropdown.classList.remove('error');\r\n }\r\n\r\n if (location.value === '') {\r\n locationDropdown.classList.add('error');\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n }\r\n\r\n if (noConsumerWarning.style.display === 'none') {\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n\r\n function setBtnStatusOfAddRoute() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n function populateDropdowns() {\r\n const vehicleDropdownData = []\r\n const driverDropdownData = []\r\n const otherRiderDropdownData = []\r\n const locationDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n const locations = TRANS_mainLanding.getLocations();\r\n\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n locations.forEach((val, key, map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: val.Name\r\n })\r\n })\r\n\r\n otherRiderDropdownData.unshift({ value: '0', text: 'NONE' })\r\n vehicleDropdownData.unshift({ value: '', text: '' })\r\n locationDropdownData.unshift({ value: '', text: '' })\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData);\r\n dropdown.populate(driverDropdown, driverDropdownData, $.session.PeopleId);\r\n // If the person logged in is not classified as a driver, driver dropdown will\r\n // default to a blank option, and need to be classified as an error untill changed\r\n if (!drivers.has($.session.PeopleId)) driverDropdown.classList.add('error');\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData);\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n }\r\n\r\n function eventListeners() {\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n driverDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n routeNameInput.addEventListener('keyup', event => {\r\n checkRequiredFieldsOfAddRoute();\r\n });\r\n dateInput.addEventListener('change', event => {\r\n resetPageForNewDate(event.target.value)\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n }\r\n\r\n function resetPageForNewDate(newDate) {\r\n /* When Changing the date, several date dependant items need to be reset.\r\n Driver/Other Rider - re-populate dropdown with new data based on date\r\n Consumers - remove all consumers, and reset the day in the mini roster\r\n */\r\n\r\n // * ROSTER AND CONSUMERS\r\n roster2.updateSelectedDate(newDate)\r\n roster2.clearActiveConsumers()\r\n consumersOnRecord.clear();\r\n const consumerSection = document.getElementById('consumerOnRouteSection');\r\n consumerSection.innerHTML = '';\r\n consumerSection.appendChild(noConsumerWarning)\r\n noConsumerWarning.style.display = 'block'\r\n // *\r\n\r\n // * Driver/Other Rider\r\n const drivers = TRANS_mainLanding.getAllDrivers(Date.parse(newDate));\r\n let driverDropdownData = []\r\n let otherRiderDropdownData = []\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n otherRiderDropdownData.unshift({ value: '0', text: 'NONE' })\r\n dropdown.populate(driverDropdown, driverDropdownData, $.session.PeopleId);\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData);\r\n //*\r\n }\r\n\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId)\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n } else noConsumerWarning.style.display = 'block';\r\n checkRequiredFieldsOfAddRoute();\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerSectionBody.appendChild(transportationCard)\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n } else noConsumerWarning.style.display = 'block';\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n roster2.clearSelectedConsumers();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n async function saveRoute() {\r\n pendingSave.show('Creating Route...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n if (consumersOnRecord.size === 0) throw \"no consumers\"\r\n //\r\n const date = dateInput.querySelector('input').value;\r\n const routeName = routeNameInput.querySelector('input').value;\r\n const driverddElement = document.getElementById('driverDropdown');\r\n const driver = driverddElement.options[driverddElement.selectedIndex].value;\r\n const otherRiderElement = document.getElementById('otherRiderDropdown');\r\n const otherRider = otherRiderElement.options[otherRiderElement.selectedIndex].value;\r\n const vehicleElement = document.getElementById('vehicleDropdown');\r\n const vehicle = vehicleElement.options[vehicleElement.selectedIndex].value;\r\n const locationElement = document.getElementById('locationDropdown');\r\n const location = locationElement.options[locationElement.selectedIndex].value;\r\n const billingType = document.getElementById(\"milesRadio\").checked ? \"M\" : \"T\";\r\n const data = {\r\n token: $.session.Token,\r\n tripName: UTIL.removeUnsavableNoteText(routeName),\r\n driverId: driver,\r\n otherRider: otherRider,\r\n dateOfService: date,\r\n billingType: billingType,\r\n vehicleInformationId: vehicle,\r\n locationId: location\r\n }\r\n // 1) Save main trip to get the tripCompletedId from DB\r\n const tripCompletedId = (await TRANS_addRouteAjax.insertTrip(data)).insertTripCompletedResult[0].tripCompletedId\r\n // 2) Save consumers to the newly created tripCompletedId\r\n const dbCallArr = []\r\n consumersOnRecord.forEach((val, key, map) => {\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: tripCompletedId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes : '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit))\r\n })\r\n Promise.all(dbCallArr).then(res => {\r\n pendingSave.fulfill('Route has been created');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers()\r\n /* \r\n After saving, if the route is for a future date OR the\r\n driver on the route is different than the person creating the route,\r\n then take them to the transportation landing page.\r\n Otherwise give them the save route popup.\r\n */\r\n if (Date.parse(date) > UTIL.getTodaysDate(true) || $.session.PeopleId !== driver) {\r\n TRANS_mainLanding.init();\r\n } else {\r\n saveRoutePopup(tripCompletedId, date, routeName, vehicle)\r\n }\r\n }, 3000)\r\n })\r\n } catch (error) {\r\n switch (error) {\r\n case 'err exist':\r\n pendingSave.reject('Failed to create route. Please correct any errors that exist on the route.')\r\n console.error('Failing due to missing required fields.')\r\n break;\r\n case 'no consumers':\r\n pendingSave.reject('Failed to create route. There must be at least on consumer for a route.')\r\n console.error('Failing due to no consumers added.')\r\n break;\r\n default:\r\n pendingSave.reject('Failed to save. Please try again.')\r\n console.error(error)\r\n break;\r\n }\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n function saveRoutePopup(tripCompletedId, tripDate, tripName, vehicleId) {\r\n const popup = POPUP.build({\r\n hideX: true,\r\n classNames: 'routeSavedPopup'\r\n });\r\n const message = document.createElement('div');\r\n message.style.textAlign = 'center'\r\n message.innerHTML = `\r\n

    Would you like to document, or do a vehicle inspection for this route?

    \r\n `;\r\n const documentBtn = button.build({\r\n text: 'Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_routeDocumentation.init({\r\n date: tripDate,\r\n routeID: tripCompletedId,\r\n routeName: tripName,\r\n vehicleInfoId: vehicleId\r\n })\r\n }\r\n });\r\n const vehicleInspectionBtn = button.build({\r\n text: 'Vehicle Inspection',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_vehicleInspection.init({\r\n enterPath: 'addRoute',\r\n vId: vehicleId,\r\n rId: tripCompletedId,\r\n routeName: tripName,\r\n routeDate: tripDate\r\n })\r\n }\r\n });\r\n const docLaterBtn = button.build({\r\n text: 'Document Later',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_mainLanding.init()\r\n }\r\n });\r\n documentBtn.style.width = '100%';\r\n vehicleInspectionBtn.style.width = '100%';\r\n docLaterBtn.style.width = '100%';\r\n popup.appendChild(message)\r\n popup.appendChild(documentBtn)\r\n popup.appendChild(vehicleInspectionBtn)\r\n popup.appendChild(docLaterBtn)\r\n POPUP.show(popup)\r\n }\r\n function init() {\r\n consumersOnRecord.clear();\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"addroute\");\r\n roster2.miniRosterinit(null, { hideDate: true })\r\n buildPage()\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_addRouteAjax = (function() {\r\n\r\n function insertTrip(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertTripCompleted/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n insertTrip\r\n }\r\n})();","const TRANS_manageEditRoute = (function () {\r\n let driverDropdown, routeNameInput, locationDropdown, otherRiderDropdown, vehicleDropdown, routeStartOdo, routeEndOdo, routeStartInput, routeEndInput;\r\n let milesRadio, tripsRadio;\r\n let consumerSectionBody, noConsumerWarning;\r\n let tripInfo;\r\n let consumersOnRecord = new Map();\r\n let consumersToRemove;\r\n let ro, isAddHoc, isBatched;\r\n let selectedDate, selectedRouteId, selectedRouteName, selectedLocationName, vehicleInspection, deleteInspection;\r\n let notTodeleteConsumers = [];\r\n function buildPage() {\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n const selectedRouteInformation = document.createElement('div');\r\n selectedRouteInformation.classList.add('editRouteHeader')\r\n const readableDate = UTIL.formatDateFromIso(selectedDate);\r\n\r\n const batchedWarninig = document.createElement('h4');\r\n batchedWarninig.classList.add('error');\r\n batchedWarninig.innerText = 'This route has been batched. No changes can be made.';\r\n batchedWarninig.style.marginBottom = '10px';\r\n batchedWarninig.style.textAlign = 'center';\r\n\r\n if (isAddHoc) {\r\n selectedRouteInformation.innerHTML = `\r\n

    Date: ${readableDate}

    \r\n `;\r\n } else {\r\n selectedRouteInformation.innerHTML = `\r\n

    Route: ${selectedRouteName}

    \r\n

    Location: ${selectedLocationName}

    \r\n

    Date: ${readableDate}

    \r\n `;\r\n };\r\n\r\n // Route Info Card//\r\n const routeInfoCard = document.createElement(\"div\");\r\n routeInfoCard.classList.add(\"card\");\r\n const routeInfoCardBody = document.createElement(\"div\");\r\n routeInfoCardBody.classList.add(\"card__body\");\r\n routeInfoCard.innerHTML = `\r\n
    Route Information
    \r\n `;\r\n routeInfoCard.appendChild(routeInfoCardBody)\r\n\r\n routeNameInput = input.build({\r\n id: \"routeNameInput\",\r\n label: \"Route Name\",\r\n charLimit: 60,\r\n readonly: ro,\r\n value: selectedRouteName\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n\r\n routeStartInput = input.build({\r\n id: \"routeStartTime\",\r\n label: \"Route Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.startTime\r\n });\r\n routeEndInput = input.build({\r\n id: \"routeEndTime\",\r\n label: \"Route End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.endTime\r\n });\r\n routeStartOdo = input.build({\r\n id: \"routeStartOdo\",\r\n type: \"number\",\r\n label: \"Starting Odometer\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.odometerStart\r\n });\r\n routeEndOdo = input.build({\r\n id: \"routeEndOdo\",\r\n type: \"number\",\r\n label: \"Ending Odometer\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.odometerStop\r\n });\r\n driverDropdown = dropdown.build({\r\n dropdownId: \"driverDropdown\",\r\n label: \"Driver\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n otherRiderDropdown = dropdown.build({\r\n dropdownId: \"otherRiderDropdown\",\r\n label: \"Other Rider\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: \"vehicleDropdown\",\r\n label: \"Vehicle\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n\r\n\r\n // Billing Radios //\r\n milesRadio = input.buildRadio({\r\n id: `milesRadio`,\r\n text: \"Miles\",\r\n name: \"billingType\",\r\n isDisabled: ro,\r\n isChecked: tripInfo.billingType === 'M' ? true : false,\r\n });\r\n tripsRadio = input.buildRadio({\r\n id: `tripsRadio`,\r\n text: \"Trips\",\r\n name: \"billingType\",\r\n isDisabled: ro,\r\n isChecked: tripInfo.billingType === 'T' ? true : false,\r\n });\r\n\r\n // Disable inputs for read only;\r\n if (ro) {\r\n routeNameInput.classList.add('disabled')\r\n locationDropdown.classList.add('disabled')\r\n routeStartInput.classList.add('disabled')\r\n routeEndInput.classList.add('disabled')\r\n routeStartOdo.classList.add('disabled')\r\n routeEndOdo.classList.add('disabled')\r\n driverDropdown.classList.add('disabled')\r\n otherRiderDropdown.classList.add('disabled')\r\n vehicleDropdown.classList.add('disabled')\r\n }\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addRouteRadioDiv\");\r\n radioDiv.appendChild(milesRadio);\r\n radioDiv.appendChild(tripsRadio);\r\n /////////////////\r\n // * Time Wrap\r\n const timeDiv = document.createElement(\"div\");\r\n timeDiv.classList.add(\"odometerDiv\");\r\n timeDiv.appendChild(routeStartInput);\r\n timeDiv.appendChild(routeEndInput);\r\n // * Odometer Wrap\r\n const odometerDiv = document.createElement(\"div\");\r\n odometerDiv.classList.add(\"odometerDiv\");\r\n odometerDiv.appendChild(routeStartOdo);\r\n odometerDiv.appendChild(routeEndOdo);\r\n //\r\n const updateBtn = button.build({\r\n id: \"updateBtn\",\r\n text: \"Update\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: 'save',\r\n callback: () => {\r\n if (!updateBtn.classList.contains('disabled')) {\r\n saveData();\r\n }\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n id: \"deleteBtn\",\r\n classNames: 'trans_DeleteBtn',\r\n text: \"Delete\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: 'delete',\r\n callback: () => deleteRoute(),\r\n });\r\n const cancelBtn = button.build({\r\n id: \"cancelBtn\",\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: 'close',\r\n callback: () => {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n },\r\n });\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n if (!ro) btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n ///////////////////\r\n // Append to Main Section //\r\n if (isBatched) column1.appendChild(batchedWarninig)\r\n column1.appendChild(selectedRouteInformation);\r\n column1.appendChild(routeInfoCard);\r\n if (isAddHoc) routeInfoCardBody.appendChild(routeNameInput)\r\n routeInfoCardBody.appendChild(timeDiv);\r\n routeInfoCardBody.appendChild(odometerDiv);\r\n routeInfoCardBody.appendChild(driverDropdown);\r\n routeInfoCardBody.appendChild(otherRiderDropdown);\r\n routeInfoCardBody.appendChild(vehicleDropdown);\r\n if (isAddHoc) routeInfoCardBody.appendChild(locationDropdown)\r\n routeInfoCardBody.appendChild(radioDiv);\r\n ////////////////////\r\n // Consumer Section //\r\n const consumerSectionCard = document.createElement(\"div\");\r\n const consumerSectionHeader = document.createElement(\"div\");\r\n consumerSectionBody = document.createElement(\"div\");\r\n consumerSectionCard.classList.add(\"card\", \"consumerSectionCard\");\r\n consumerSectionHeader.classList.add(\"card__header\");\r\n consumerSectionBody.classList.add(\"card__body\");\r\n consumerSectionHeader.innerText = \"Consumers on Route\";\r\n consumerSectionCard.appendChild(consumerSectionHeader);\r\n consumerSectionCard.appendChild(consumerSectionBody);\r\n // No Consumer Warning //\r\n noConsumerWarning = document.createElement('p');\r\n noConsumerWarning.style.color = 'red';\r\n noConsumerWarning.innerText = 'You must select at least one consumer for the route.'\r\n consumerSectionBody.appendChild(noConsumerWarning)\r\n noConsumerWarning.style.display = 'none';\r\n //\r\n column2.appendChild(consumerSectionCard)\r\n column2.appendChild(btnWrap);\r\n if (!ro) column2.appendChild(deleteBtn);\r\n ///////////////////////\r\n DOM.ACTIONCENTER.appendChild(column1);\r\n DOM.ACTIONCENTER.appendChild(column2);\r\n\r\n populateDropdowns()\r\n buildConsumerCards()\r\n eventListeners()\r\n setBtnStatusOfAddRoute()\r\n }\r\n\r\n function buildConsumerCards() {\r\n consumersOnRecord.forEach((val,key, map) => {\r\n // transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n consumerSectionBody.appendChild(transportationCard)\r\n })\r\n }\r\n\r\n function populateDropdowns() {\r\n if (isAddHoc) {\r\n const locationDropdownData = []\r\n const locations = TRANS_mainLanding.getLocations();\r\n locations.forEach((val,key,map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: val.Name\r\n })\r\n });\r\n dropdown.populate(locationDropdown, locationDropdownData, tripInfo.locationId);\r\n }\r\n const vehicleDropdownData = []\r\n const driverDropdownData = []\r\n const otherRiderDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n\r\n vehicles.forEach((val,key,map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val,key,map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n otherRiderDropdownData.unshift({ value: '', text: 'NONE'})\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, tripInfo.vehicleInformationId);\r\n dropdown.populate(driverDropdown, driverDropdownData, tripInfo.driverId);\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData, tripInfo.otherRider);\r\n }\r\n\r\n function eventListeners() {\r\n function odoCheck() {\r\n const startVal = parseInt(routeStartOdo.querySelector('input').value)\r\n const endVal = parseInt(routeEndOdo.querySelector('input').value)\r\n //Odo can be null, check to see if they are numbers (NaN when they are null)\r\n if (typeof(startVal) !== 'number' && typeof(endVal) !== 'number') {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n return\r\n }\r\n\r\n const dif = endVal - startVal;\r\n if (dif < 0) {\r\n routeStartOdo.classList.add('error');\r\n routeEndOdo.classList.add('error')\r\n } else {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n routeStartInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.firstChild.value, routeEndInput.querySelector('input').value)\r\n if (totalHours < 0) {\r\n routeStartInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n routeEndInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.querySelector('input').value, routeEndInput.firstChild.value)\r\n if (totalHours < 0) {\r\n routeEndInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n routeStartOdo.addEventListener('change', () => odoCheck());\r\n routeEndOdo.addEventListener('change', () => odoCheck());\r\n\r\n routeNameInput.addEventListener('change', event => {\r\n if (event.target.value.trim() === \"\") {\r\n routeNameInput.classList.add('error');\r\n } else {\r\n routeNameInput.classList.remove('error');\r\n }\r\n selectedRouteName = event.target.value;\r\n setBtnStatusOfAddRoute();\r\n });\r\n driverDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.driverId = selectedOption.value;\r\n })\r\n otherRiderDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.otherRider = selectedOption.value;\r\n })\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n if (vehicleInspection !== \"\") {\r\n UTIL.warningPopup({\r\n message: \"This trip has an inspection completed for it. Changing the vehicle will result in the inspection being deleted. Continue?\",\r\n accept: {\r\n text: \"Yes\",\r\n callback: () => {\r\n tripInfo.vehicleInformationId = selectedOption.value;\r\n deleteInspection = true;\r\n }\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n event.target.value = tripInfo.vehicleInformationId;\r\n }\r\n }\r\n })\r\n } else {\r\n tripInfo.vehicleInformationId = selectedOption.value;\r\n }\r\n })\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.locationId = selectedOption.value;\r\n })\r\n }\r\n\r\n function setBtnStatusOfAddRoute() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n updateBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n if ($.session.transportationUpdate)\r\n updateBtn.classList.remove('disabled');\r\n else\r\n updateBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function loadData(routeID) {\r\n function cleanData(getTripInformationResult, getTripConsumersResult) {\r\n tripInfo = getTripInformationResult[0];\r\n getTripConsumersResult.forEach(consumer => {\r\n consumer.batchId = tripInfo.batchId; \r\n consumersOnRecord.set(consumer.consumerId, consumer);\r\n // Roster Required Info:\r\n const consumerobj = roster2.buildConsumerCard({\r\n FN: consumer.firstName,\r\n LN: consumer.lastName,\r\n id: consumer.consumerId\r\n });\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n })\r\n buildPage();\r\n }\r\n\r\n //Get data for the route\r\n const routeInfo = TRANS_routeDocumentationAjax.getRouteInformation(routeID)\r\n const consumerInfo = TRANS_routeDocumentationAjax.getRouteConsumers(routeID)\r\n Promise.all([routeInfo, consumerInfo]).then(val => {\r\n const getTripInformationResult = val[0].getTripInformationResult\r\n const getTripConsumersResult = val[1].getTripConsumersResult\r\n cleanData(getTripInformationResult, getTripConsumersResult);\r\n })\r\n }\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId)\r\n consumersToRemove.push(consumerId)\r\n\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.style.display = 'block';\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n\r\n function deleteRoute() {\r\n /*\r\n When Deleting a route:\r\n * can only delete non-batched routes\r\n * Warn before delete\r\n * If there is a vehicle inspection completed for the route also warn that it will be deleted\r\n */\r\n function deleteRouteAccept() {\r\n pendingSave.show('Deleting Route...');\r\n try {\r\n const deleteProms = []\r\n //Delete Inspection:\r\n if (vehicleInspection !== \"\") deleteProms.push(TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspection));\r\n //Delete Route\r\n deleteProms.push(TRANS_manageRoutesAjax.deleteTrip(selectedRouteId))\r\n Promise.all(deleteProms).then(() => {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n })\r\n } catch (error) {\r\n console.error(error)\r\n pendingSave.reject('Failed to delete Route.')\r\n setTimeout(() => {\r\n failSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n }\r\n }\r\n const warningMessage = vehicleInspection === \"\" ?\r\n \"You are sure you would like to delete this Route?\" :\r\n \"Are you sure you would like to delete this Route and Vehicle Inspection?\"\r\n UTIL.warningPopup({\r\n message: warningMessage,\r\n hideX: true,\r\n accept: {\r\n callback: deleteRouteAccept,\r\n text: 'YES'\r\n },\r\n reject: {\r\n callback: () => {},\r\n text: 'NO'\r\n }\r\n });\r\n\r\n }\r\n\r\n function saveData() {\r\n notTodeleteConsumers = [];\r\n pendingSave.show('Saving Route...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n const routeName = routeNameInput.querySelector('input').value;\r\n const startTime = routeStartInput.querySelector('input').value\r\n const endTime = routeEndInput.querySelector('input').value\r\n const odoStart = routeStartOdo.querySelector('input').value\r\n const odoEnd = routeEndOdo.querySelector('input').value;\r\n const billingType = document.getElementById(\"milesRadio\").checked ? \"M\":\"T\";\r\n const dbCallArr = [];\r\n const tripData = {\r\n token: $.session.Token,\r\n tripsCompletedId: selectedRouteId,\r\n odometerStart: odoStart,\r\n odometerStop: odoEnd,\r\n startTime: startTime,\r\n endTime: endTime,\r\n driverId: tripInfo.driverId,\r\n otherRiderId: tripInfo.otherRider,\r\n vehicleId: tripInfo.vehicleInformationId,\r\n locationId: tripInfo.locationId,\r\n billingType: billingType,\r\n tripName: UTIL.removeUnsavableNoteText(routeName),\r\n };\r\n dbCallArr.push(TRANS_manageRoutesAjax.updateManageTripDetails(tripData));\r\n if (deleteInspection) dbCallArr.push(TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspection)) \r\n consumersOnRecord.forEach((val,key,map) => {\r\n notTodeleteConsumers.push(key);\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: selectedRouteId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes: '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit));\r\n });\r\n consumersToRemove.forEach(consumer => { \r\n let IsSameInsertedConsumerFind = notTodeleteConsumers.includes(consumer);\r\n const data = {\r\n tripsCompletedId: selectedRouteId,\r\n consumerId: consumer\r\n }\r\n if (!IsSameInsertedConsumerFind) {\r\n dbCallArr.push(TRANS_routeDocumentationAjax.deleteConsumerFromTrip(data))\r\n } \r\n }); \r\n Promise.all(dbCallArr).then(() => {\r\n // Get Alt Addresses from DB Again:\r\n TRANS_mainLanding.updateAltAddress();\r\n pendingSave.fulfill('Save Successful');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n })\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.')\r\n console.error('Failing due to odometer or time overlap. Check odometer and time overlaps.')\r\n } else {\r\n pendingSave.reject('Failed to save. Please try again.')\r\n }\r\n console.error(error)\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster();\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerSectionBody.appendChild(transportationCard);\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.style.display = 'block';\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n DOM.toggleNavLayout();\r\n roster2.clearSelectedConsumers();\r\n break;\r\n }\r\n }\r\n }\r\n function init(opts) {\r\n const { batched, routeId, date, routeName, locationName, addHocRoute, vehicleInspectionId } = opts\r\n selectedRouteId = routeId;\r\n selectedDate = date;\r\n selectedRouteName = routeName;\r\n selectedLocationName = locationName;\r\n isAddHoc = addHocRoute;\r\n vehicleInspection = vehicleInspectionId;\r\n deleteInspection = false;\r\n isBatched = batched;\r\n if (batched) {\r\n ro = true;\r\n console.warn(\"Route is batched. No changes can be made\")\r\n } else {\r\n ro = false;\r\n }\r\n if (isAddHoc) {\r\n console.info('This is an Add Hoc Route. Changes to route name and location are allowed')\r\n } else {\r\n console.info('This is not an Add Hoc Route. No changes to route name or location allowed')\r\n }\r\n consumersOnRecord.clear();\r\n consumersToRemove = [];\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, { hideDate: true });\r\n roster2.updateSelectedDate(selectedDate);\r\n setActiveModuleSectionAttribute(\"editRoute\");\r\n loadData(selectedRouteId)\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_manageRoutes = (function () {\r\n let routesTable;\r\n let selectedRoutes, filteredRoutes;\r\n let filterOpts;\r\n let tripsStatus;\r\n let multiEditEnabled, multiSelRoutes, multiSelectBtn;\r\n let updateDriverBtn, updateVehicleBtn;\r\n\r\n let filterBtn;\r\n let filteredDateStart;\r\n let filteredDateStop;\r\n let selectedDriver;\r\n let selectedLocation;\r\n let selectedRouteStatus;\r\n let totalRouteCount;\r\n let selectedVehicle;\r\n\r\n let btnWrap;\r\n let filteredDateStartBtnWrap;\r\n let selectedDriverBtnWrap;\r\n let selectedLocationBtnWrap;\r\n let selectedRouteStatusBtnWrap;\r\n let selectedVehicleBtnWrap;\r\n let totalRouteCountBtnWrap;\r\n\r\n function buildPage(resetFilter) {\r\n\r\n const backButton = button.build({\r\n id: 'myRouteBackButton',\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_mainLanding.init();\r\n },\r\n });\r\n\r\n if (resetFilter) {\r\n filterOpts = {\r\n token: $.session.Token,\r\n serviceDateStart: UTIL.getTodaysDate(),\r\n serviceDateStop: UTIL.getTodaysDate(),\r\n personId: '%',\r\n locationId: '%',\r\n routeStatus: '%',\r\n };\r\n\r\n filteredDateStart = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(UTIL.getTodaysDate(), '/'));\r\n filteredDateStop = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(UTIL.getTodaysDate(), '/'));\r\n selectedDriver = '%';\r\n selectedLocation = '%';\r\n selectedRouteStatus = '%';\r\n totalRouteCount = '0';\r\n selectedVehicle = '%';\r\n }\r\n\r\n multiSelectBtn = button.build({\r\n id: 'multiSelect',\r\n text: 'Multi select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: function () {\r\n enableMultiEditRows();\r\n filterBtn.classList.toggle('disabled');\r\n backButton.classList.toggle('disabled');\r\n },\r\n });\r\n\r\n routesTable = table.build({\r\n tableId: 'manageRouteTable',\r\n headline: 'Routes',\r\n columnHeadings: [\r\n 'Date',\r\n 'Route',\r\n 'Driver',\r\n 'Vehicle',\r\n 'Location',\r\n 'Start Odometer',\r\n 'End Odometer',\r\n 'Start Time',\r\n 'Stop Time',\r\n ],\r\n });\r\n routesTable.setAttribute('data-multiselect-enabled', false);\r\n // * FILTERED BY DISPLAY\r\n const filteredByDisplay = buildFilteredBy();\r\n\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay);\r\n DOM.ACTIONCENTER.appendChild(routesTable);\r\n\r\n getData();\r\n }\r\n\r\n function populateTable() {\r\n const tableData = [];\r\n multiSelRoutes = new Map();\r\n filteredRoutes.forEach((val, key, map) => {\r\n const {\r\n batchNumber,\r\n dateOfService,\r\n tripId,\r\n tripName,\r\n vehicleInfoId,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n endTime,\r\n locationName,\r\n driverId,\r\n tripInspection,\r\n tripsCompletedId,\r\n } = val;\r\n\r\n const vehicleNumber = TRANS_mainLanding.vehicleLookup(vehicleInfoId).vehicleNumber;\r\n const driver = TRANS_mainLanding.driverLookup(driverId);\r\n const addHocRoute = tripId === '' ? true : false;\r\n const batched = batchNumber === '' ? false : true;\r\n\r\n const driverDisp = `${driver.Last_Name}, ${driver.First_Name}`;\r\n const readDate = UTIL.abbreviateDateYear(dateOfService.split(' ')[0]);\r\n const readStartTime = UTIL.formatTimeString(startTime);\r\n const readEndTime = UTIL.formatTimeString(endTime);\r\n const readOdoStart = odoStart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n const readOdoStop = odoStop.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n const status = tripsStatus.get(tripsCompletedId);\r\n\r\n const rowValues = [\r\n readDate,\r\n tripName,\r\n driverDisp,\r\n vehicleNumber,\r\n locationName,\r\n readOdoStart,\r\n readOdoStop,\r\n readStartTime,\r\n readEndTime,\r\n ];\r\n tableData.push({\r\n values: rowValues,\r\n id: key,\r\n attributes: [{ key: 'data-route-status', value: status }],\r\n onClick: evt => {\r\n if (multiEditEnabled) {\r\n if (batched) {\r\n console.info(`route ${key} is batched`);\r\n // evt.target.classList.add('batchedWarn');\r\n const batchWarnEl = document.createElement('span');\r\n batchWarnEl.innerText = 'ROUTE IS BATCHED';\r\n batchWarnEl.classList.add('batchedWarn');\r\n evt.target.appendChild(batchWarnEl);\r\n setTimeout(() => {\r\n // evt.target.classList.remove('batchedWarn');\r\n batchWarnEl.remove();\r\n }, 1000);\r\n } else {\r\n evt.target.classList.toggle('selected');\r\n multiSelRoutes.has(key) ? multiSelRoutes.delete(key) : multiSelRoutes.set(key, val);\r\n if (multiSelRoutes.size > 0) {\r\n updateDriverBtn.classList.remove('disabled');\r\n updateVehicleBtn.classList.remove('disabled');\r\n } else {\r\n updateDriverBtn.classList.add('disabled');\r\n updateVehicleBtn.classList.add('disabled');\r\n }\r\n }\r\n } else {\r\n TRANS_manageEditRoute.init({\r\n addHocRoute: addHocRoute,\r\n routeId: key,\r\n date: UTIL.formatDateToIso(dateOfService.split(' ')[0]),\r\n routeName: tripName,\r\n locationName: locationName,\r\n vehicleInspectionId: tripInspection,\r\n batched: batched,\r\n });\r\n }\r\n },\r\n });\r\n });\r\n table.populate(routesTable, tableData);\r\n }\r\n\r\n function buildFilteredBy() {\r\n let filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n const driverLookup = TRANS_mainLanding.driverLookup(filterOpts.personId);\r\n const locationLookup = TRANS_mainLanding.locationLookup(filterOpts.locationId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleFilteredLookup(filterOpts.vehicleId);\r\n\r\n filteredDateStart = UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(filterOpts.serviceDateStart, '/'),\r\n );\r\n filteredDateStop = UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(filterOpts.serviceDateStop, '/'),\r\n );\r\n selectedDriver = driverLookup\r\n ? `${driverLookup.Last_Name}, ${driverLookup.First_Name}`\r\n : 'All';\r\n selectedLocation = locationLookup ? locationLookup.Name : 'All';\r\n selectedVehicle = vehicleLookup ? vehicleLookup.vehicleNumber : 'All';\r\n totalRouteCount = filteredRoutes ? filteredRoutes.size : '0';\r\n\r\n\r\n switch (filterOpts.routeStatus) {\r\n case 'NS':\r\n selectedRouteStatus = 'Not Started';\r\n break;\r\n case 'IP':\r\n selectedRouteStatus = 'In Progress';\r\n break;\r\n case 'C':\r\n selectedRouteStatus = 'Completed';\r\n break;\r\n default:\r\n selectedRouteStatus = 'All';\r\n break;\r\n }\r\n\r\n if (document.getElementById('filteredDateStartBtn') != null)\r\n document.getElementById('filteredDateStartBtn').innerHTML = 'Date: ' + filteredDateStart + ' - ' + filteredDateStop;\r\n\r\n\r\n if (selectedDriver === '%' || selectedDriver === 'All') {\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n btnWrap.removeChild(selectedDriverBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n if (document.getElementById('selectedDriverBtn') != null)\r\n document.getElementById('selectedDriverBtn').innerHTML = 'Driver: ' + selectedDriver;\r\n }\r\n\r\n if (selectedLocation === '%' || selectedLocation === 'All') {\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n btnWrap.removeChild(selectedLocationBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n if (document.getElementById('selectedLocationBtn') != null)\r\n document.getElementById('selectedLocationBtn').innerHTML = 'Location: ' + selectedLocation;\r\n }\r\n\r\n if (selectedRouteStatus === '%' || selectedRouteStatus === 'All') {\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n btnWrap.removeChild(selectedRouteStatusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n if (document.getElementById('selectedRouteStatusBtn') != null)\r\n document.getElementById('selectedRouteStatusBtn').innerHTML = 'Route Status: ' + selectedRouteStatus;\r\n }\r\n\r\n if (selectedVehicle === '%' || selectedVehicle === 'All') {\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n btnWrap.removeChild(selectedVehicleBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n if (document.getElementById('selectedVehicleBtn') != null)\r\n document.getElementById('selectedVehicleBtn').innerHTML = 'Vehicle: ' + selectedVehicle;\r\n }\r\n\r\n if (document.getElementById('totalRouteCountBtn') != null)\r\n document.getElementById('totalRouteCountBtn').innerHTML = 'Total Route Count: ' + totalRouteCount;\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n TRANS_manageRoutesFilter.init(filterOpts, 'ALL');\r\n },\r\n });\r\n\r\n filteredDateStartBtn = button.build({\r\n id: 'filteredDateStartBtn',\r\n text: 'Date: ' + filteredDateStart + ' - ' + filteredDateStop,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'filteredDateStartBtn') },\r\n });\r\n\r\n selectedDriverBtn = button.build({\r\n id: 'selectedDriverBtn',\r\n text: 'Driver: ' + selectedDriver,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedDriverBtn') },\r\n });\r\n selectedDriverCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedDriverBtn') },\r\n });\r\n\r\n selectedLocationBtn = button.build({\r\n id: 'selectedLocationBtn',\r\n text: 'Location: ' + selectedLocation,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedLocationBtn') },\r\n });\r\n selectedLocationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedLocationBtn') },\r\n });\r\n\r\n selectedRouteStatusBtn = button.build({\r\n id: 'selectedRouteStatusBtn',\r\n text: 'Route Status: ' + selectedRouteStatus,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedRouteStatusBtn') },\r\n });\r\n selectedRouteStatusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedRouteStatusBtn') },\r\n });\r\n\r\n totalRouteCountBtn = button.build({\r\n id: 'totalRouteCountBtn',\r\n text: 'Total Route Count: ' + totalRouteCount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n });\r\n\r\n selectedVehicleBtn = button.build({\r\n id: 'selectedVehicleBtn',\r\n text: 'Vehicle: ' + selectedVehicle,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedVehicleBtn') },\r\n });\r\n selectedVehicleCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedVehicleBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n filteredDateStartBtnWrap = document.createElement('div');\r\n filteredDateStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n filteredDateStartBtnWrap.appendChild(filteredDateStartBtn);\r\n btnWrap.appendChild(filteredDateStartBtnWrap);\r\n\r\n selectedDriverBtnWrap = document.createElement('div');\r\n selectedDriverBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedDriverBtnWrap.appendChild(selectedDriverBtn);\r\n selectedDriverBtnWrap.appendChild(selectedDriverCloseBtn);\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n\r\n selectedLocationBtnWrap = document.createElement('div');\r\n selectedLocationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedLocationBtnWrap.appendChild(selectedLocationBtn);\r\n selectedLocationBtnWrap.appendChild(selectedLocationCloseBtn);\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n\r\n selectedRouteStatusBtnWrap = document.createElement('div');\r\n selectedRouteStatusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedRouteStatusBtnWrap.appendChild(selectedRouteStatusBtn);\r\n selectedRouteStatusBtnWrap.appendChild(selectedRouteStatusCloseBtn);\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n\r\n totalRouteCountBtnWrap = document.createElement('div');\r\n totalRouteCountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n totalRouteCountBtnWrap.appendChild(totalRouteCountBtn);\r\n btnWrap.appendChild(totalRouteCountBtnWrap);\r\n\r\n selectedVehicleBtnWrap = document.createElement('div');\r\n selectedVehicleBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedVehicleBtnWrap.appendChild(selectedVehicleBtn);\r\n selectedVehicleBtnWrap.appendChild(selectedVehicleCloseBtn);\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedLocationBtn') {\r\n filterOpts.locationId = '%';\r\n }\r\n if (closeFilter == 'selectedRouteStatusBtn') {\r\n filterOpts.routeStatus = '%';\r\n }\r\n if (closeFilter == 'selectedDriverBtn') {\r\n filterOpts.personId = '%';\r\n }\r\n if (closeFilter == 'selectedVehicleBtn') {\r\n filterOpts.vehicleId = '%';\r\n }\r\n\r\n getData();\r\n }\r\n\r\n async function getData() {\r\n table.clear(routesTable);\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(DOM.ACTIONCENTER, 'Gathering Routes...');\r\n const locationPermissions = TRANS_mainLanding.getLocations();\r\n const tmpRoutes = (await TRANS_manageRoutesAjax.getTrips(filterOpts)).getTripsResult;\r\n const routeMap = new Map();\r\n tmpRoutes.forEach(route => {\r\n if (locationPermissions.has(route.locationId)) {\r\n routeMap.set(route.tripsCompletedId, route);\r\n } else {\r\n console.info(\r\n `skipping route ${route.tripsCompletedId}. User does not have permission to the route's location.`,\r\n );\r\n }\r\n });\r\n filteredRoutes = routeMap;\r\n PROGRESS__ANYWHERE.SPINNER.hide(DOM.ACTIONCENTER);\r\n determineTripStatus();\r\n filterTripStatus();\r\n buildFilteredBy();\r\n populateTable();\r\n }\r\n\r\n function filterApply(opts) {\r\n filterOpts = opts;\r\n getData();\r\n }\r\n\r\n function filterTripStatus() {\r\n if (filterOpts.routeStatus === '%') return;\r\n tripsStatus;\r\n let tripsWithFilteredStatus = [...tripsStatus.entries()]\r\n .filter(({ 1: v }) => v === filterOpts.routeStatus)\r\n .map(([k]) => k);\r\n const tempFilteredRoutes = new Map();\r\n tripsWithFilteredStatus.forEach(tripId => {\r\n tempFilteredRoutes.set(tripId, filteredRoutes.get(tripId));\r\n });\r\n filteredRoutes = tempFilteredRoutes;\r\n }\r\n\r\n function enableMultiEditRows() {\r\n setupActionNav();\r\n multiEditEnabled = !multiEditEnabled;\r\n multiSelectBtn.classList.toggle('enabled');\r\n\r\n if (multiEditEnabled) {\r\n ACTION_NAV.show();\r\n routesTable.setAttribute('data-multiselect-enabled', true);\r\n } else {\r\n // clear out selected rows?\r\n ACTION_NAV.hide();\r\n multiSelRoutes.clear();\r\n routesTable.setAttribute('data-multiselect-enabled', false);\r\n }\r\n\r\n const highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n\r\n function setupActionNav() {\r\n updateDriverBtn = button.build({\r\n text: 'Update Driver',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n TRANS_updatePopup.init({ updateType: 'driver', selectedRoutes: multiSelRoutes });\r\n },\r\n });\r\n updateVehicleBtn = button.build({\r\n text: 'Update Vehicle',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n TRANS_updatePopup.init({ updateType: 'vehicle', selectedRoutes: multiSelRoutes });\r\n },\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([updateDriverBtn, updateVehicleBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n function massUpdateCallback() {\r\n const event = new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n multiSelectBtn.dispatchEvent(event);\r\n getData();\r\n }\r\n\r\n function determineTripStatus() {\r\n const tempStatusMap = new Map();\r\n filteredRoutes.forEach((val, key, map) => {\r\n const {\r\n endTime,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n tripType,\r\n totalConsumersOnRecord,\r\n consumerNoStatus,\r\n } = val;\r\n let status;\r\n\r\n // First break down into Miles or Trip. Miles and Trip have different definitions of being complete.\r\n switch (tripType) {\r\n case 'M':\r\n if (\r\n endTime === '' &&\r\n startTime === '' &&\r\n odoStart === '' &&\r\n odoStop === '' &&\r\n consumerNoStatus === totalConsumersOnRecord\r\n ) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (\r\n endTime !== '' &&\r\n startTime !== '' &&\r\n odoStart !== '' &&\r\n odoStop !== '' &&\r\n consumerNoStatus == 0\r\n ) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n case 'T':\r\n if (endTime === '' && startTime === '' && consumerNoStatus === totalConsumersOnRecord) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (endTime !== '' && startTime !== '' && consumerNoStatus == 0) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n\r\n default:\r\n console.error(\r\n 'There was a problem determining the completion status of the trip. No Miles/Trip Billing_Type found!',\r\n );\r\n status = 'NS';\r\n break;\r\n }\r\n\r\n tempStatusMap.set(key, status);\r\n });\r\n tripsStatus = tempStatusMap;\r\n }\r\n /** Manage Routes Init Function\r\n * @param {boolean} [resetFilter=True] False will not reset filter values\r\n */\r\n function init(resetFilter = true) {\r\n multiEditEnabled = false;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('manageroute');\r\n buildPage(resetFilter);\r\n }\r\n return {\r\n init,\r\n filterApply,\r\n massUpdateCallback,\r\n };\r\n})();\r\n","const TRANS_manageRoutesAjax = (function() {\r\n\r\n function getTrips(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTrips/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function massUpdateDriverVehicle(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/massUpdateDriverVehicle/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function updateManageTripDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateManageTripDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction deleteTrip(tripsCompletedId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\ttripsCompletedId: tripsCompletedId,\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteTrip/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getTrips,\r\n\t\tmassUpdateDriverVehicle,\r\n\t\tupdateManageTripDetails,\r\n\t\tdeleteTrip\r\n }\r\n})();","const TRANS_manageRoutesFilter = (function () {\r\n // Inputs\r\n let startDateInput, endDateInput, driverDropdown, locationDropdown, routeStatusDropdown, vehicleDropdown;\r\n let filterOpts;\r\n let IsShow;\r\n\r\n function createFilterElements() {\r\n startDateInput = input.build({\r\n id: 'myRouteDateStart',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: filterOpts.serviceDateStart,\r\n });\r\n endDateInput = input.build({\r\n id: 'myRouteDateStop',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: filterOpts.serviceDateStop,\r\n });\r\n driverDropdown = dropdown.build({\r\n dropdownId: 'driverDropdown',\r\n label: 'Driver',\r\n style: 'secondary',\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n routeStatusDropdown = dropdown.build({\r\n dropdownId: 'routeStatusDropdown',\r\n label: 'Route Status',\r\n style: 'secondary',\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: 'vehicleDropdown',\r\n label: 'Vehicle',\r\n style: 'secondary',\r\n });\r\n }\r\n\r\n function buildFilterPopup(params) {\r\n const dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap', 'btnWrap');\r\n\r\n const popup = POPUP.build({\r\n header: 'Filter',\r\n classNames: 'manageRoutesFilterPopup',\r\n });\r\n\r\n const applyButton = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n TRANS_manageRoutes.filterApply(filterOpts);\r\n },\r\n });\r\n applyButton.style.width = '100%';\r\n\r\n dateWrap.appendChild(startDateInput);\r\n dateWrap.appendChild(endDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'filteredDateStartBtn')\r\n popup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'selectedDriverBtn')\r\n popup.appendChild(driverDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedLocationBtn')\r\n popup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedRouteStatusBtn')\r\n popup.appendChild(routeStatusDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedVehicleBtn')\r\n popup.appendChild(vehicleDropdown);\r\n popup.appendChild(applyButton);\r\n POPUP.show(popup);\r\n\r\n populateDropdowns();\r\n eventListeners();\r\n }\r\n\r\n function populateDropdowns() {\r\n const driverDropdownData = [];\r\n const locationDropdownData = [];\r\n const vehicleDropdownData = [];\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n const locations = TRANS_mainLanding.getLocations();\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const routeStatusDropdownData = [\r\n {\r\n value: '%',\r\n text: 'All',\r\n },\r\n {\r\n value: 'C',\r\n text: 'Completed',\r\n },\r\n {\r\n value: 'IP',\r\n text: 'In Progress',\r\n },\r\n {\r\n value: 'NS',\r\n text: 'Not Started',\r\n },\r\n ];\r\n\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`,\r\n });\r\n });\r\n locations.forEach((val, key, map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: `${val.Name}`,\r\n });\r\n });\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: `${val.vehicleNumber}`,\r\n });\r\n });\r\n driverDropdownData.unshift({ value: '%', text: 'All' });\r\n locationDropdownData.unshift({ value: '%', text: 'All' });\r\n vehicleDropdownData.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(driverDropdown, driverDropdownData, filterOpts.personId);\r\n dropdown.populate(locationDropdown, locationDropdownData, filterOpts.locationId);\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, filterOpts.vehicleId);\r\n dropdown.populate(\r\n routeStatusDropdown,\r\n routeStatusDropdownData,\r\n filterOpts.routeStatus,\r\n );\r\n }\r\n\r\n function eventListeners() {\r\n startDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n filterOpts.serviceDateStart = event.target.value;\r\n } else {\r\n event.target.value = filterOpts.serviceDateStart;\r\n }\r\n });\r\n endDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n filterOpts.serviceDateStop = event.target.value;\r\n } else {\r\n event.target.value = filterOpts.serviceDateStop;\r\n }\r\n });\r\n driverDropdown.addEventListener('change', event => {\r\n filterOpts.personId = event.target.value;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n filterOpts.locationId = event.target.value;\r\n });\r\n vehicleDropdown.addEventListener('change', event => {\r\n filterOpts.vehicleId = event.target.value;\r\n });\r\n routeStatusDropdown.addEventListener('change', event => {\r\n filterOpts.routeStatus = event.target.value;\r\n });\r\n }\r\n\r\n function isValidDate(d) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n function init(opts, IsFilterShow) {\r\n filterOpts = opts;\r\n IsShow = IsFilterShow; \r\n createFilterElements();\r\n buildFilterPopup();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_updatePopup = (function() {\r\n\r\n let updateDropdown, currentDisplay, saveBtn;\r\n let updateType, routes;\r\n\r\n function createPopupElements() {\r\n switch (updateType) {\r\n case 'Driver':\r\n updateDropdown = dropdown.build({\r\n dropdownId: 'updateDropdown',\r\n label: 'Update selected routes driver to:',\r\n style: 'secondary'\r\n })\r\n break;\r\n case 'Vehicle':\r\n updateDropdown = dropdown.build({\r\n dropdownId: 'updateDropdown',\r\n label: 'Update selected routes vehicle to:',\r\n style: 'secondary'\r\n })\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function createCurrentDisplay() {\r\n currentDisplay = document.createElement('div');\r\n currentDisplay.classList.add('transCurrentDisplay');\r\n const updateDescription = document.createElement('h4');\r\n updateDescription.innerText = updateType === 'Driver' ? \r\n 'Selected Routes, and current drivers assigned:' :\r\n 'Selected Routes, and current vehicles assigned:';\r\n updateDescription.style.paddingBottom = '10px';\r\n currentDisplay.appendChild(updateDescription)\r\n routes.forEach((val, key, map) => {\r\n const driverLookup = TRANS_mainLanding.driverLookup(val.driverId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleLookup(val.vehicleInfoId)\r\n\r\n const routeDisp = document.createElement('p');\r\n const driverDisp = `${driverLookup.Last_Name}, ${driverLookup.First_Name}`;\r\n const vehicleDisp = `${vehicleLookup.vehicleNumber}`;\r\n routeDisp.innerHTML = `${val.tripName}: ${updateType === 'Driver' ? driverDisp : vehicleDisp}`\r\n currentDisplay.appendChild(routeDisp)\r\n })\r\n }\r\n\r\n function buildFilterPopup() {\r\n const popup = POPUP.build({\r\n header: `Update ${updateType}`,\r\n classNames: 'updateRoutePopup'\r\n })\r\n\r\n saveBtn = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: 'disabled',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n saveData()\r\n }\r\n });\r\n saveBtn.style.width = '100%'\r\n popup.appendChild(currentDisplay)\r\n popup.appendChild(updateDropdown)\r\n popup.appendChild(saveBtn);\r\n POPUP.show(popup)\r\n\r\n populateDropdown();\r\n eventListener();\r\n }\r\n\r\n function eventListener() {\r\n updateDropdown.addEventListener('change', event => {\r\n if (event.target.value === \"\") {\r\n saveBtn.classList.add(\"disabled\")\r\n } else {\r\n saveBtn.classList.remove(\"disabled\")\r\n }\r\n })\r\n }\r\n\r\n function populateDropdown(params) {\r\n const dropdownData = []\r\n switch (updateType) {\r\n case 'Driver':\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n drivers.forEach((val,key,map) => {\r\n dropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n break;\r\n case 'Vehicle':\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n vehicles.forEach((val,key,map) => {\r\n dropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n break;\r\n default:\r\n break;\r\n }\r\n dropdownData.unshift({ value: '', text: ''});\r\n dropdown.populate(updateDropdown, dropdownData);\r\n }\r\n\r\n async function saveData() {\r\n pendingSave.show('Updating Routes...')\r\n try {\r\n const routeIdConcat = Array.from(routes.keys()).join(\"|\");\r\n const newUpdateVal = updateDropdown.firstChild.options[updateDropdown.firstChild.selectedIndex].value;\r\n const updateData = {\r\n token: $.session.Token,\r\n method: updateType,\r\n routeIdString: routeIdConcat,\r\n updateVal: newUpdateVal\r\n }\r\n await TRANS_manageRoutesAjax.massUpdateDriverVehicle(updateData);\r\n pendingSave.fulfill('Routes have been updated');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n TRANS_manageRoutes.massUpdateCallback();\r\n }, 3000)\r\n } catch (error) {\r\n pendingSave.reject('Failed to update routes. Please try again.')\r\n console.warn('Error saving updates');\r\n console.error(error);\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {object} opts \r\n * @param {string} opts.updateType driver or vehicle\r\n * @param {string} opts.currentValue the current driver or vehicle\r\n * @param {array} opts.selectedRoutes Routes that are selected from the route dropdown\r\n */\r\n function init(opts) {\r\n updateType = UTIL.capitalize(opts.updateType);\r\n routes = opts.selectedRoutes;\r\n createPopupElements();\r\n createCurrentDisplay()\r\n buildFilterPopup()\r\n }\r\n return {\r\n init\r\n }\r\n})();","const TRANS_myRoute = (function () {\r\n let routeSection, dateInput, warningDisp;\r\n let selectedDate, trips, tripsStatus;\r\n\r\n function buildPage() {\r\n ////////////\r\n // TOP SECTION\r\n const topSection = document.createElement('div');\r\n const backButton = button.build({\r\n id: 'myRouteBackButton',\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_mainLanding.init();\r\n },\r\n });\r\n dateInput = input.build({\r\n id: 'myRouteDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: UTIL.getTodaysDate(),\r\n attributes: [{ max: UTIL.getTodaysDate() }],\r\n });\r\n // Warning display for 'no routes, or future date'\r\n warningDisp = document.createElement('p');\r\n warningDisp.style.color = '#DB162f';\r\n warningDisp.style.textAlign = 'center';\r\n warningDisp.style.marginBottom = '10px';\r\n // set selected date to today:\r\n selectedDate = UTIL.getTodaysDate();\r\n topSection.appendChild(backButton);\r\n topSection.appendChild(dateInput);\r\n topSection.appendChild(warningDisp);\r\n /////////////////\r\n // Route Button section\r\n routeSection = document.createElement('div');\r\n routeSection.classList.add('myRouteButtonSection');\r\n\r\n DOM.ACTIONCENTER.appendChild(topSection);\r\n DOM.ACTIONCENTER.appendChild(routeSection);\r\n eventListeners();\r\n }\r\n\r\n function buildRouteBtn(route) {\r\n const { tripName, tripsCompletedId, tripInspection } = route;\r\n const routeBtn = document.createElement('div');\r\n const status = tripsStatus.get(tripsCompletedId);\r\n let statusText;\r\n switch (status) {\r\n case 'C':\r\n statusText = 'Complete';\r\n break;\r\n case 'IP':\r\n statusText = 'In Progress';\r\n break;\r\n case 'NS':\r\n statusText = 'Not Started';\r\n break;\r\n default:\r\n break;\r\n }\r\n const inspIcon = tripInspection !== '' ? icons.checkmark : icons.close;\r\n const inspColor = tripInspection !== '' ? 'white' : 'red';\r\n routeBtn.classList.add('routeBtn', `status__${status}`);\r\n routeBtn.setAttribute('id', `route-${tripsCompletedId}`);\r\n routeBtn.innerHTML = `\r\n
    ${tripName}
    \r\n
    ${statusText}
    \r\n
    ${inspIcon} Inspection
    \r\n\r\n `;\r\n routeBtn.addEventListener('click', () => {\r\n TRANS_selectedRoutePopup.init(route, selectedDate);\r\n });\r\n routeSection.appendChild(routeBtn);\r\n }\r\n\r\n function eventListeners() {\r\n dateInput.addEventListener('input', event => {\r\n selectedDate = event.target.value;\r\n if (Date.parse(event.target.value) > UTIL.getTodaysDate(true)) {\r\n warningDisp.innerText = 'Notice: Future dates are read only';\r\n } else {\r\n warningDisp.innerText = '';\r\n }\r\n getData(event.target.value);\r\n });\r\n }\r\n\r\n async function getData(date) {\r\n routeSection.innerHTML = '';\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(routeSection, 'Gathering Trips...');\r\n try {\r\n const tripsResp = (await TRANS_myRotueAjax.getTrips(date)).getTripsResult;\r\n let tempTrips = new Map();\r\n tripsResp.forEach(trip => {\r\n tempTrips.set(trip.tripsCompletedId, trip);\r\n });\r\n trips = tempTrips;\r\n determineTripStatus();\r\n routeSection.innerHTML = '';\r\n if (trips.size === 0) {\r\n warningDisp.innerText = 'No routes have been found for this date';\r\n } else {\r\n for (const [key, value] of trips) {\r\n buildRouteBtn(value);\r\n }\r\n }\r\n } catch (error) {\r\n PROGRESS__ANYWHERE.SPINNER.hide(routeSection);\r\n console.error(error);\r\n console.error('Error gathering routes. Check for valid date, and users permissions');\r\n }\r\n }\r\n\r\n function determineTripStatus() {\r\n const tempStatusMap = new Map();\r\n trips.forEach((val, key, map) => {\r\n const {\r\n endTime,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n tripType,\r\n totalConsumersOnRecord,\r\n consumerNoStatus,\r\n } = val;\r\n let status;\r\n\r\n // First break down into Miles or Trip. Miles and Trip have different definitions of being complete.\r\n switch (tripType) {\r\n case 'M':\r\n if (\r\n endTime === '' &&\r\n startTime === '' &&\r\n odoStart === '' &&\r\n odoStop === '' &&\r\n consumerNoStatus === totalConsumersOnRecord\r\n ) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (\r\n endTime !== '' &&\r\n startTime !== '' &&\r\n odoStart !== '' &&\r\n odoStop !== '' &&\r\n consumerNoStatus == 0\r\n ) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n case 'T':\r\n if (endTime === '' && startTime === '' && consumerNoStatus === totalConsumersOnRecord) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (endTime !== '' && startTime !== '' && consumerNoStatus == 0) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n\r\n default:\r\n console.error(\r\n 'There was a problem determining the completion status of the trip. No Miles/Trip Billing_Type found!',\r\n );\r\n status = 'NS';\r\n break;\r\n }\r\n\r\n tempStatusMap.set(key, status);\r\n });\r\n tripsStatus = tempStatusMap;\r\n }\r\n\r\n function init() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('myroute');\r\n\r\n buildPage();\r\n getData(UTIL.getTodaysDate());\r\n }\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_myRotueAjax = (function() {\r\n\r\n function getTrips(date) {\r\n const data = {\r\n token: $.session.Token,\r\n serviceDateStart: date,\r\n serviceDateStop: date,\r\n personId: $.session.PeopleId,\r\n locationId: '%'\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTrips/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n getTrips\r\n }\r\n})();","const TRANS_selectedRoutePopup = (function() {\r\n // let routeId, routeName;\r\n\r\n function buildPopup(opts, selectedDate) {\r\n const { tripsCompletedId, tripName, vehicleInfoId, tripInspection, tripInspectionEnteredBy, inspectionTime, inspectionNote, batchNumber } = opts;\r\n\r\n const batched = batchNumber === '' ? false : true;\r\n let futureDate = false\r\n if (Date.parse(selectedDate) > UTIL.getTodaysDate(true)) {\r\n futureDate = true\r\n }\r\n let ro = batched || futureDate ? true : false;\r\n\r\n const warnDisp = document.createElement('h4');\r\n if (batched) {\r\n warnDisp.innerText = 'Selected Route is Batched.';\r\n } else if (futureDate) {\r\n warnDisp.innerHTML = 'The date you have selected is a future date.
    Vehicle Inspections can not be created for future dates.';\r\n }\r\n warnDisp.style.color = '#DB162f';\r\n warnDisp.style.textAlign = 'center';\r\n\r\n const popup = POPUP.build({\r\n id: `route-${vehicleInfoId}`,\r\n header: tripName,\r\n classNames: 'selectedRoutePopup'\r\n });\r\n const documentBtn = button.build({\r\n id: `document-${vehicleInfoId}`,\r\n text: batched || futureDate || $.session.transportationUpdate === false ? 'Review Route' : 'Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'docBtn',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n TRANS_routeDocumentation.init({date: selectedDate, routeID: tripsCompletedId, routeName: tripName, vehicleInfoId: vehicleInfoId, readOnly: ro})\r\n }\r\n });\r\n const vehicleInspBtn = button.build({\r\n id: `inspection-${vehicleInfoId}`,\r\n text: tripInspection !== '' ? 'Review Vehicle Inspection' : 'Vehicle Inspection',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n if (tripInspection === '') {\r\n // If there is no inspection, add a new one\r\n TRANS_vehicleInspection.init({enterPath: 'routeSelection', vId: vehicleInfoId, rId: tripsCompletedId, routeName: tripName, routeDate: selectedDate})\r\n } else {\r\n // Else, review the one that exists\r\n TRANS_vehicleInspection.init({enterPath: 'routeSelection', vId: vehicleInfoId, rId: tripsCompletedId, routeName: tripName, edit: true, batchedRoute: batched,\r\n editData: {\r\n inspectionId: tripInspection, \r\n enteredById: tripInspectionEnteredBy,\r\n inspectionDate: UTIL.formatDateFromIso(selectedDate),\r\n inspectionTime: inspectionTime,\r\n note: inspectionNote\r\n },\r\n routeDate: selectedDate})\r\n }\r\n }\r\n });\r\n if (futureDate || (batched && tripInspection === '') || ($.session.transportationUpdate === false && tripInspection === '')) {\r\n // Vehicle inspections can't be created for future dates Or batched routes or they do not have Update permission\r\n // except if there is already a inspection, then they can review it.\r\n vehicleInspBtn.classList.add('disabled')\r\n }\r\n documentBtn.style.width = '100%'\r\n vehicleInspBtn.style.width = '100%'\r\n if (batched || futureDate) popup.appendChild(warnDisp)\r\n popup.appendChild(documentBtn)\r\n popup.appendChild(vehicleInspBtn);\r\n POPUP.show(popup)\r\n }\r\n\r\n /**\r\n * \r\n * @param {object} opts \r\n * @param {string} opts.tripsCompletedId Selected Route Id\r\n * @param {string} opts.tripName Name of selected route\r\n * @param {string} opts.vehicleInfoId Vehicle Info Id for the route\r\n * @param {string} opts.tripInspection Inspection tied to route, or ''\r\n * @param {string} date Date they have selected\r\n */\r\n function init(opts, date) {\r\n buildPopup(opts, date)\r\n }\r\n return {\r\n init\r\n }\r\n})();","const TRANS_vehicleInspectionLanding = (function() {\r\n\r\n function loadVehicleInspectionLanding(params) {\r\n const backButton = button.build({\r\n id: \"inspectionLandingBackButton\",\r\n text: \"Back\",\r\n style: \"secondary\",\r\n type: \"text\",\r\n icon: \"arrowBack\",\r\n callback: () => TRANS_mainLanding.init()\r\n });\r\n const newInspectionBtn = button.build({\r\n text: 'COMPLETE AN INSPECTION',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_vehicleInspection.init({enterPath: 'inspectionLanding'})\r\n })\r\n const reviewInspectionsBtn = button.build({\r\n text: 'REVIEW INSPECTIONS',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_inspectionReview.init()\r\n })\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n if ($.session.transportationUpdate === true) btnWrap.appendChild(newInspectionBtn);\r\n btnWrap.appendChild(reviewInspectionsBtn);\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n \r\n function init() {\r\n setActiveModuleSectionAttribute(null);\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadVehicleInspectionLanding()\r\n }\r\n\r\n return {\r\n init,\r\n }\r\n })();","const TRANS_reviewInspectionFilter = (function () {\r\n // Inputs\r\n let fromDateInput, toDateInput, vehicleDropdown, enteredByDropdown;\r\n let filterOpts\r\n let IsShow;\r\n let applyButton; \r\n function createFilterElements() {\r\n\r\n fromDateInput = input.build({\r\n id: \"inspectionFromDate\",\r\n label: \"From\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: filterOpts.fromDate\r\n })\r\n toDateInput = input.build({\r\n id: \"inspectionToDate\",\r\n label: \"To\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: filterOpts.toDate\r\n })\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: 'vehicleDropdown',\r\n label: 'Vehicle',\r\n style: 'secondary',\r\n value: filterOpts.vehicleInfoId\r\n });\r\n enteredByDropdown = dropdown.build({\r\n dropdownId: 'enteredByDropdown',\r\n label: 'Entered By',\r\n style: 'secondary',\r\n value: filterOpts.userId\r\n });\r\n }\r\n\r\n function buildFilterPopup(params) {\r\n const dateWrap = document.createElement('div')\r\n dateWrap.classList.add('dateWrap', 'btnWrap')\r\n\r\n const popup = POPUP.build({\r\n header: 'Filter',\r\n classNames: 'vehicleInspectionFilterPopup'\r\n })\r\n\r\n applyButton = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_inspectionReview.filterApply(filterOpts)\r\n }\r\n });\r\n applyButton.style.width = '100%';\r\n dateWrap.appendChild(fromDateInput);\r\n dateWrap.appendChild(toDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'fromDateBtn')\r\n popup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'vehicleNumberBtn')\r\n popup.appendChild(vehicleDropdown)\r\n if (IsShow == 'ALL' || IsShow == 'enteredByBtn')\r\n popup.appendChild(enteredByDropdown)\r\n popup.appendChild(applyButton);\r\n POPUP.show(popup)\r\n\r\n eventListeners();\r\n populateDropdowns();\r\n }\r\n\r\n function populateDropdowns() {\r\n const vehicleDropdownData = []\r\n const enteredByDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val, key, map) => {\r\n enteredByDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n vehicleDropdownData.unshift({ value: '%', text: 'All' })\r\n enteredByDropdownData.unshift({ value: '%', text: 'All' })\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, filterOpts.vehicleInfoId)\r\n dropdown.populate(enteredByDropdown, enteredByDropdownData, filterOpts.userId)\r\n }\r\n\r\n function eventListeners() {\r\n fromDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n if (UTIL.checkValidDateRange(event.target.value, toDateInput.firstElementChild.value)) {\r\n updateDates();\r\n } else {\r\n console.info('invalid date range');\r\n fromDateInput.classList.add('error');\r\n applyButton.classList.add('disabled');\r\n }\r\n } else {\r\n event.target.value = filterOpts.fromDate\r\n }\r\n\r\n })\r\n toDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n if (UTIL.checkValidDateRange(fromDateInput.firstElementChild.value, event.target.value)) {\r\n updateDates();\r\n } else {\r\n console.info('invalid date range');\r\n toDateInput.classList.add('error');\r\n applyButton.classList.add('disabled');\r\n }\r\n } else {\r\n event.target.value = filterOpts.toDate\r\n }\r\n })\r\n vehicleDropdown.addEventListener('change', event => {\r\n filterOpts.vehicleInfoId = event.target.value;\r\n })\r\n enteredByDropdown.addEventListener('change', event => {\r\n filterOpts.userId = event.target.value;\r\n })\r\n\r\n function isValidDate(d) {\r\n d = new Date(d)\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n function updateDates() {\r\n filterOpts.fromDate = fromDateInput.firstElementChild.value;\r\n filterOpts.toDate = toDateInput.firstElementChild.value;\r\n fromDateInput.classList.remove('error');\r\n toDateInput.classList.remove('error');\r\n applyButton.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function init(opts, IsFilterShow) {\r\n filterOpts = opts;\r\n IsShow = IsFilterShow;\r\n createFilterElements();\r\n buildFilterPopup()\r\n }\r\n\r\n return {\r\n init\r\n }\r\n})();","const TRANS_inspectionReview = (function () {\r\n\r\n let inspectionTable, filterOpts;\r\n\r\n let fromDate;\r\n let toDate;\r\n let enteredBy;\r\n let vehicleNumber;\r\n let today;\r\n let defaultFromDate;\r\n\r\n let btnWrap;\r\n let fromDateBtnWrap;\r\n let vehicleNumberBtnWrap;\r\n let enteredByBtnWrap;\r\n\r\n\r\n function buildPage(resetFilter) {\r\n\r\n today = new Date();\r\n defaultFromDate = new Date();\r\n defaultFromDate.setDate(defaultFromDate.getDate() - 7);\r\n\r\n if (resetFilter) {\r\n filterOpts = {\r\n token: $.session.Token,\r\n fromDate: UTIL.formatDateFromDateObj(defaultFromDate),\r\n toDate: UTIL.formatDateFromDateObj(today),\r\n vehicleInfoId: '%',\r\n userId: '%',\r\n }\r\n }\r\n\r\n const backButton = button.build({\r\n id: \"myRouteBackButton\",\r\n text: \"Back\",\r\n style: \"secondary\",\r\n type: \"text\",\r\n icon: \"arrowBack\",\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_vehicleInspectionLanding.init();\r\n },\r\n });\r\n\r\n // FILTERED BY DISPLAY //\r\n const filteredByDisplay = buildFilteredBy();\r\n inspectionTable = table.build({\r\n tableId: \"vehicleInspectionTable\",\r\n headline: \"Completed Inspections\",\r\n columnHeadings: [\"Vehicle Number\", \"Date\", \"Time\", \"Last Update\", \"Route\"],\r\n })\r\n\r\n DOM.ACTIONCENTER.appendChild(backButton)\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay)\r\n DOM.ACTIONCENTER.appendChild(inspectionTable)\r\n\r\n getData(filterOpts)\r\n }\r\n\r\n async function getData(opts) {\r\n table.clear(inspectionTable);\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(DOM.ACTIONCENTER, \"Gathering Vehicle Inspections...\");\r\n const tmpInsp = (await TRANS_vehicleInspectionAjax.getCompletedInspections(opts)).getCompletedInspectionsResult;\r\n const inspMap = new Map()\r\n tmpInsp.forEach(insp => {\r\n inspMap.set(insp.inspectionId, insp)\r\n })\r\n PROGRESS__ANYWHERE.SPINNER.hide(DOM.ACTIONCENTER)\r\n populateTable(inspMap)\r\n }\r\n\r\n function populateTable(inspections) {\r\n const tableData = [];\r\n inspections.forEach((val, key, map) => {\r\n const { enteredById, inspectionDate, inspectionTime, routeName, vehicleNumber } = val;\r\n const readDate = UTIL.abbreviateDateYear(inspectionDate);\r\n const readTime = UTIL.formatTimeString(inspectionTime);\r\n const values = [vehicleNumber, readDate, readTime, enteredById, routeName]\r\n tableData.push({\r\n values: values,\r\n id: key,\r\n onClick: () => {\r\n TRANS_vehicleInspection.init({ enterPath: 'reviewInspections', vId: val.vehicleId, rId: val.routeId, edit: true, editData: val, routeName: routeName });\r\n }\r\n })\r\n });\r\n table.populate(inspectionTable, tableData)\r\n }\r\n\r\n function filterApply(opts) {\r\n filterOpts = opts;\r\n buildFilteredBy();\r\n getData(filterOpts);\r\n }\r\n\r\n function buildFilteredBy() {\r\n let filteredBy = document.querySelector(\".filteredByData\");\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement(\"div\");\r\n filteredBy.classList.add(\"filteredByData\");\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n const driverLookup = TRANS_mainLanding.driverLookup(filterOpts.userId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleLookup(filterOpts.vehicleInfoId);\r\n\r\n fromDate = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.fromDate, '/'));\r\n toDate = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.toDate, '/'));\r\n enteredBy = driverLookup ? `${driverLookup.Last_Name}, ${driverLookup.First_Name}` : 'All';\r\n vehicleNumber = vehicleLookup !== 'Non-Existant Vehicle!' ? `${vehicleLookup.vehicleNumber}` : 'All';\r\n\r\n\r\n if (document.getElementById('fromDateBtn') != null)\r\n document.getElementById('fromDateBtn').innerHTML = 'Inspection Dates: ' + fromDate + ' - ' + toDate;\r\n\r\n if (vehicleNumber === '%' || vehicleNumber === 'All') {\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n btnWrap.removeChild(vehicleNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n if (document.getElementById('vehicleNumberBtn') != null)\r\n document.getElementById('vehicleNumberBtn').innerHTML = 'Vehicle: ' + vehicleNumber;\r\n }\r\n\r\n if (enteredBy === '%' || enteredBy === 'All') {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n btnWrap.removeChild(enteredByBtnWrap);\r\n } else {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n if (document.getElementById('enteredByBtn') != null)\r\n document.getElementById('enteredByBtn').innerHTML = 'Entered By: ' + enteredBy;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n TRANS_reviewInspectionFilter.init(filterOpts, 'ALL');\r\n },\r\n });\r\n\r\n fromDateBtn = button.build({\r\n id: 'fromDateBtn',\r\n text: 'Inspection Dates: ' + UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.fromDate, '/')) + ' - ' + UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.toDate, '/')),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'fromDateBtn') },\r\n });\r\n\r\n vehicleNumberBtn = button.build({\r\n id: 'vehicleNumberBtn',\r\n text: 'Vehicle: ' + vehicleNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'vehicleNumberBtn') },\r\n });\r\n vehicleNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('vehicleNumberBtn') },\r\n });\r\n\r\n enteredByBtn = button.build({\r\n id: 'enteredByBtn',\r\n text: 'Entered By: ' + enteredBy,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'enteredByBtn') },\r\n });\r\n enteredByCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('enteredByBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n fromDateBtnWrap = document.createElement('div');\r\n fromDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fromDateBtnWrap.appendChild(fromDateBtn);\r\n btnWrap.appendChild(fromDateBtnWrap);\r\n\r\n vehicleNumberBtnWrap = document.createElement('div');\r\n vehicleNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vehicleNumberBtnWrap.appendChild(vehicleNumberBtn);\r\n vehicleNumberBtnWrap.appendChild(vehicleNumberCloseBtn);\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n\r\n enteredByBtnWrap = document.createElement('div');\r\n enteredByBtnWrap.classList.add('filterSelectionBtnWrap');\r\n enteredByBtnWrap.appendChild(enteredByBtn);\r\n enteredByBtnWrap.appendChild(enteredByCloseBtn);\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'enteredByBtn') {\r\n filterOpts.userId = '%';\r\n }\r\n if (closeFilter == 'vehicleNumberBtn') {\r\n filterOpts.vehicleInfoId = '%';\r\n }\r\n buildFilteredBy();\r\n getData(filterOpts);\r\n }\r\n /** Vehicle Inspection Init Function\r\n * @param {boolean} [resetFilter=True] False will not reset filter values\r\n */\r\n function init(resetFilter = true) {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"reviewinspections\");\r\n buildPage(resetFilter);\r\n }\r\n return {\r\n init,\r\n filterApply\r\n }\r\n})();","const TRANS_vehicleInspection = (function () {\r\n let selectedVehicle, selectedRoute, selectedRouteName, selectedRouteDate, saveBtn;\r\n let dateInput, timeInput, noteInput, vehicleDropdown, inspectionQuestionBody;\r\n let isEdit, questionResponses, vehicleInspectionId, readOnly, enteredByOtherUser, inspectionEnterPath, routeInspection;\r\n let currentlySelectedVehicle;\r\n let allQuestionsAnswered = true;\r\n\r\n function buildPage(editData) {\r\n const inspectionDate = isEdit ? \r\n UTIL.formatDateToIso(editData.inspectionDate.split(' ')[0]) :\r\n routeInspection ? \r\n selectedRouteDate : UTIL.getTodaysDate();\r\n const inspectionTIme = isEdit ? editData.inspectionTime : UTIL.getCurrentTime();\r\n const inspectionNote = isEdit ? editData.note : '';\r\n\r\n // inspection Info Card//\r\n const inspectionInfoCard = document.createElement(\"div\");\r\n inspectionInfoCard.classList.add(\"card\");\r\n const inspectionInfoBody = document.createElement(\"div\");\r\n inspectionInfoBody.classList.add(\"card__body\");\r\n inspectionInfoCard.innerHTML = `\r\n
    Inspection Information
    \r\n `;\r\n inspectionInfoCard.appendChild(inspectionInfoBody)\r\n\r\n //let saveBtn\r\n let deleteBtn\r\n\r\n if (!readOnly) {\r\n saveBtn = button.build({\r\n id: 'saveInspectionBtn',\r\n text: isEdit ? 'Update' : 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveInspection()}\r\n });\r\n if (isEdit) {\r\n deleteBtn = button.build({\r\n id: 'deleteInspectionBtn',\r\n classNames: 'trans_DeleteBtn',\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n callback: () => {deleteInspection()}\r\n });\r\n }\r\n }\r\n\r\n const cancelBtn = button.build({\r\n id: 'cancelInspectionBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n }\r\n }\r\n });\r\n dateInput = input.build({\r\n id: \"vehicleInspectionDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: inspectionDate,\r\n readonly: readOnly || routeInspection,\r\n attributes: [{ max: UTIL.getTodaysDate() }],\r\n });\r\n timeInput = input.build({\r\n id: \"vehicleInspectionTime\",\r\n label: \"Time\",\r\n type: \"time\",\r\n value: inspectionTIme,\r\n readonly: readOnly,\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n id: 'vehicleDropdown',\r\n dropdownId: 'vehicleDropdown',\r\n readonly: readOnly || routeInspection,\r\n label: 'Vehicle'\r\n });\r\n noteInput = input.build({\r\n id: 'vehicleInspectionNote',\r\n classNames: ['autosize'],\r\n label: 'Note',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: inspectionNote,\r\n readonly: readOnly\r\n });\r\n // Grid Columns\r\n const col1 = document.createElement('div');\r\n col1.classList.add('col-1')\r\n const col2 = document.createElement('div');\r\n col2.classList.add('col-2')\r\n // Route Name Display\r\n const routeNameDisp = document.createElement('h3');\r\n routeNameDisp.classList.add('routeNameDisp')\r\n routeNameDisp.innerHTML = `This inspection is for the route: ${selectedRouteName}`\r\n // Entered By Other User Display\r\n const otherUserDisp = document.createElement('h4');\r\n otherUserDisp.classList.add('otherUserDisp')\r\n otherUserDisp.innerHTML = `This inspection was entered by another user. No changes can be made.`\r\n // Date and time Wrap //\r\n const dtWrap = document.createElement(\"div\");\r\n dtWrap.classList.add(\"vehicleInspectionDTWrap\");\r\n dtWrap.appendChild(dateInput);\r\n dtWrap.appendChild(timeInput);\r\n // Save/Cancel button wrap //\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (saveBtn) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n // Creating inspection item card //\r\n const inspectionQuestionCard = document.createElement(\"div\");\r\n const inspectionQuestionHeader = document.createElement(\"div\");\r\n inspectionQuestionBody = document.createElement(\"div\");\r\n inspectionQuestionBody.classList.add(\"card__body\");\r\n inspectionQuestionBody.classList.add(\"inspectionItemSection\");\r\n inspectionQuestionHeader.classList.add(\"card__header\");\r\n inspectionQuestionHeader.innerText = \"Inspection Items\";\r\n inspectionQuestionCard.classList.add(\"card\");\r\n inspectionQuestionCard.classList.add(\"inspectionItemCard\");\r\n inspectionQuestionCard.appendChild(inspectionQuestionHeader);\r\n inspectionQuestionCard.appendChild(inspectionQuestionBody);\r\n ///////////////////\r\n // Append to Grid Columns\r\n\r\n if (selectedRouteName) col1.appendChild(routeNameDisp);\r\n if (enteredByOtherUser) col1.appendChild(otherUserDisp);\r\n inspectionInfoBody.appendChild(dtWrap);\r\n inspectionInfoBody.appendChild(vehicleDropdown);\r\n inspectionInfoBody.appendChild(noteInput);\r\n //\r\n col1.appendChild(inspectionInfoCard)\r\n col2.appendChild(inspectionQuestionCard);\r\n col2.appendChild(btnWrap);\r\n if (deleteBtn) col2.appendChild(deleteBtn);\r\n\r\n DOM.ACTIONCENTER.appendChild(col1)\r\n DOM.ACTIONCENTER.appendChild(col2)\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateDropdown()\r\n buildInspectionQuestions(editData);\r\n eventListeners()\r\n checkForAllRequiredFields();\r\n }\r\n\r\n function eventListeners() {\r\n dateInput.addEventListener('change', event => {\r\n if (Date.parse(event.target.value) > UTIL.getTodaysDate(true)) {\r\n console.warn('future date not allowed')\r\n UTIL.warningPopup({\r\n message: 'Future dates are not allowed',\r\n accept: {\r\n text: 'Ok'\r\n },\r\n })\r\n event.target.value = UTIL.getTodaysDate();\r\n }\r\n });\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n currentlySelectedVehicle = selectedOption.value;\r\n if (selectedOption.value === '') {\r\n vehicleDropdown.classList.add('error');\r\n console.warn('No vehicle selected.')\r\n } else {\r\n vehicleDropdown.classList.remove('error');\r\n }\r\n checkForAllRequiredFields();\r\n });\r\n }\r\n\r\n async function buildInspectionQuestions(editData) {\r\n let completedStatus;\r\n if (isEdit) {\r\n completedStatus = await getInspectionDetailsForEdit(editData.inspectionId)\r\n }\r\n const questions = TRANS_mainLanding.getCategories();\r\n questionResponses = new Map();\r\n questions.forEach((val, key) => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('questionWrapWord'); \r\n const questionTitle = document.createElement('h4');\r\n questionTitle.innerText = val.desc;\r\n let passCheck = false; \r\n let failCheck = false;\r\n let naCheck = false;\r\n let allowNA = val.allowNA === 'Y' ? true : false;\r\n if (isEdit) {\r\n switch (completedStatus.get(key)) {\r\n case 'P':\r\n passCheck = true;\r\n questionResponses.set(key, 'P');\r\n break;\r\n case 'N':\r\n naCheck = true;\r\n questionResponses.set(key, 'N');\r\n break;\r\n default:\r\n failCheck = true;\r\n questionResponses.set(key, 'F');\r\n break;\r\n }\r\n } else {\r\n questionResponses.set(key, '');\r\n allQuestionsAnswered = false; // If not in edit mode, mark as not all questions answered\r\n }\r\n const passRadio = input.buildRadio({\r\n id: `${key}-pass`,\r\n text: \"Pass\",\r\n name: key,\r\n isChecked: passCheck,\r\n isDisabled: readOnly\r\n });\r\n const failRadio = input.buildRadio({\r\n id: `${key}-fail`,\r\n text: \"Fail\",\r\n name: key,\r\n isChecked: failCheck,\r\n isDisabled: readOnly\r\n });\r\n passRadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'P');\r\n checkAllQuestionsAnswered();\r\n });\r\n failRadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'F');\r\n checkAllQuestionsAnswered();\r\n });\r\n\r\n const radioDiv = document.createElement('div');\r\n radioDiv.classList.add('inspection_radioDiv');\r\n radioDiv.appendChild(passRadio);\r\n radioDiv.appendChild(failRadio);\r\n \r\n // NA OPTION (only displayed if the inspection category is set to allow NA)\r\n if (allowNA) {\r\n const allowNARadio = input.buildRadio({\r\n id: `${key}-na`,\r\n text: \"N/A\",\r\n name: key,\r\n isChecked: naCheck,\r\n isDisabled: readOnly\r\n });\r\n allowNARadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'N');\r\n checkAllQuestionsAnswered();\r\n });\r\n radioDiv.appendChild(allowNARadio);\r\n }\r\n questionContainer.appendChild(questionTitle);\r\n questionContainer.appendChild(radioDiv);\r\n var lineBR = document.createElement('br');\r\n questionContainer.appendChild(lineBR);\r\n\r\n inspectionQuestionBody.appendChild(questionContainer);\r\n });\r\n\r\n // Function to check if all questions are answered\r\n function checkAllQuestionsAnswered() {\r\n allQuestionsAnswered = true; // Reset the flag\r\n questionResponses.forEach(value => {\r\n if (value === '') {\r\n allQuestionsAnswered = false;\r\n return; // Exit forEach loop early if any question is unanswered\r\n }\r\n });\r\n\r\n checkForAllRequiredFields();\r\n }\r\n\r\n // Return the result indicating if all questions are answered\r\n return allQuestionsAnswered;\r\n}\r\n\r\n\r\n async function getInspectionDetailsForEdit(vehicleInspectionId) {\r\n const completedDetails = (await TRANS_vehicleInspectionAjax.getVehicleInspectionDetails(vehicleInspectionId)).getVehicleInspectionDetailsResult\r\n const completedDetailsMap = new Map();\r\n completedDetails.forEach(cat => {\r\n completedDetailsMap.set(cat.inspectionCategory, cat.categoryStatus);\r\n })\r\n return completedDetailsMap\r\n }\r\n\r\n function populateDropdown() {\r\n vehicleDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n\r\n vehicles.forEach((val,key,map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n vehicleDropdownData.unshift({value: '', text: ''})\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, selectedVehicle)\r\n currentlySelectedVehicle = selectedVehicle\r\n if (!selectedVehicle) vehicleDropdown.classList.add('error')\r\n }\r\n\r\n async function saveInspection() {\r\n // Date Time Vehicle are required\r\n // Check if inspection categories are complete\r\n const inspectionCategories = []\r\n const inspectionStatus = []\r\n pendingSave.show('Saving Inspection...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n // Check that all inspection items have been answered\r\n questionResponses.forEach((val,key,map) => {\r\n if (val === \"\") {\r\n console.error(`Save Failed. Inspection category id ${key} is registering as not complete`)\r\n throw \"You must complete all Inspection Items\"\r\n } else {\r\n inspectionCategories.push(key)\r\n inspectionStatus.push(val)\r\n }\r\n })\r\n const note = noteInput.querySelector('textarea').value\r\n const date = dateInput.querySelector('input').value\r\n const time = timeInput.querySelector('input').value\r\n const vddElement = document.getElementById('vehicleDropdown');\r\n const vehicleId = vddElement.options[vddElement.selectedIndex].value;\r\n\r\n const mainData = {\r\n token: $.session.Token,\r\n vehicleInspectionId: vehicleInspectionId,\r\n vehicleInformationId: vehicleId,\r\n tripCompletedId: selectedRoute ? selectedRoute : '',\r\n inspectionDate: date,\r\n inspectionTime: time,\r\n notes: UTIL.removeUnsavableNoteText(note)\r\n }\r\n if (isEdit) {\r\n await TRANS_vehicleInspectionAjax.updateVehicleInspection(mainData)\r\n } else {\r\n vehicleInspectionId = (await TRANS_vehicleInspectionAjax.insertVehicleInspection(mainData)).insertVehicleInspectionResult[0].vehicleInspectionId;\r\n }\r\n\r\n const detailData = {\r\n token: $.session.Token,\r\n vehicleInspectionId: vehicleInspectionId,\r\n inspectionCatString: inspectionCategories.join(\"|\"),\r\n inspectionStatusString: inspectionStatus.join(\"|\")\r\n }\r\n await TRANS_vehicleInspectionAjax.insertUpdateVehicleInspectionDetails(detailData)\r\n pendingSave.fulfill('Save Successful')\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n // What happens after a succesful save depends on how the entered the module\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n // If they came from the inspection landing page, go back to the landing page\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n // If they just added a new route, or were reviewing an inspection, take them to the review table\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n // If they came from the my route selection popup, take them back to my routes\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n init({enterPath: 'inspectionLanding'})\r\n break;\r\n }\r\n }, 2000);\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.');\r\n console.error('Failing due to option highlighted in red. Check to make sure all required items have been completed.');\r\n } else {\r\n pendingSave.reject(`Failed to save inspection. ${error}`);\r\n console.error('Unspecified Error');\r\n console.error(error);\r\n }\r\n setTimeout(() => failSave.hide(), 4000);\r\n }\r\n }\r\n\r\n function deleteInspection() {\r\n async function acceptDelete() {\r\n pendingSave.show('Deleting Inspection...')\r\n try {\r\n await TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspectionId)\r\n pendingSave.fulfill('Inspection Deleted')\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n // What happens after a delete depends on how the entered the module\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n // If they came from the inspection landing page, clear, and start a new inspection\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n // If they just added a new route, or were reviewing an inspection, take them to the review table\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n // If they came from the my route selection popup, take them back to my routes\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n }\r\n }, 2000);\r\n } catch (error) {\r\n pendingSave.reject(error)\r\n setTimeout(() => failSave.hide(), 2000);\r\n }\r\n }\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this vehicle inspection?',\r\n hideX: true,\r\n accept: {\r\n text: 'Delete',\r\n callback: acceptDelete\r\n },\r\n reject: {\r\n text: 'Cancel'\r\n }\r\n })\r\n }\r\n\r\n function clearVar() {\r\n selectedVehicle = null;\r\n selectedRoute = null;\r\n isEdit = null;\r\n questionResponses = null;\r\n vehicleInspectionId = null;\r\n readOnly = null;\r\n enteredByOtherUser = null;\r\n currentlySelectedVehicle = null;\r\n }\r\n\r\n function checkForAllRequiredFields() {\r\n if (readOnly) {\r\n return;\r\n }\r\n\r\n if (!currentlySelectedVehicle || currentlySelectedVehicle === '' || allQuestionsAnswered === false) {\r\n // If no vehicle is selected, disable the save button and add the 'disabled' class\r\n saveBtn.disabled = true;\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n // If a vehicle is selected, enable the save button and remove the 'disabled' class\r\n saveBtn.disabled = false;\r\n saveBtn.classList.remove('disabled');\r\n }\r\n}\r\n\r\n /**\r\n *\r\n * @param {object} opts\r\n * @param {string} opts.vehicleId\r\n * @param {string} [opts.routeId]\r\n */\r\n function init(opts = {rId: null, vId: null, edit: false, editData: null, routeName: null, routeDate: null, batchedRoute: false}) {\r\n clearVar();\r\n const { vId, rId, editData, edit, enterPath, routeName, routeDate, batchedRoute } = opts\r\n selectedVehicle = vId;\r\n selectedRoute = rId;\r\n routeInspection = rId ? true : false;\r\n selectedRouteDate = routeDate;\r\n selectedRouteName = routeName;\r\n isEdit = edit;\r\n inspectionEnterPath = enterPath;\r\n\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"vehicleInspection\");\r\n\r\n if (edit) {\r\n vehicleInspectionId = editData.inspectionId\r\n if (batchedRoute) {\r\n readOnly = true;\r\n } else if (editData.enteredById.toLowerCase() !== $.session.UserId.toLowerCase()) {\r\n readOnly = true;\r\n } else if ($.session.transportationUpdate === false) {\r\n readOnly = true;\r\n } else {\r\n readOnly = false;\r\n }\r\n enteredByOtherUser = editData.enteredById.toLowerCase() === $.session.UserId.toLowerCase() ? false : true;\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n buildPage(editData);\r\n }\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_vehicleInspectionAjax = (function() {\r\n\r\n function getInspectionCategories() {\r\n const data = {\r\n token: $.session.Token,\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getInspectionCategories/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function insertVehicleInspection(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateVehicleInspectionDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateVehicleInspectionDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function getCompletedInspections(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getCompletedInspections/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n function getVehicleInspectionDetails(vehicleInspectionId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tvehicleInspectionId: vehicleInspectionId\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getVehicleInspectionDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction updateVehicleInspection(data) {\r\n\t\treturn $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\r\n\tfunction deleteVehicleInspection(vehicleInspectionId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tvehicleInspectionId: vehicleInspectionId\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\r\n return {\r\n getInspectionCategories,\r\n insertVehicleInspection,\r\n getCompletedInspections,\r\n\t\tinsertUpdateVehicleInspectionDetails,\r\n\t\tgetVehicleInspectionDetails,\r\n\t\tupdateVehicleInspection,\r\n\t\tdeleteVehicleInspection\r\n }\r\n})();","class EditResponsibleRelationshipsComponent {\r\n \r\n constructor(workflowId, people, callback){\r\n this.workflowId = workflowId;\r\n this.people = people;\r\n this.callback = callback; \r\n this.createPopup();\r\n this.cache = {};\r\n }\r\n \r\n editResponsibleRelationshipsFinished(){\r\n let {cache, workflowId, callback} = this;\r\n POPUP.hide(wfStepPopup); \r\n return callback(workflowId, cache); \r\n // update this call to pass the values that changed //\r\n }\r\n\r\n editResponsibleRelationshipsCancelled(){\r\n POPUP.hide(wfStepPopup); \r\n }\r\n\r\n enableButton(button, enable){\r\n enable ? button.classList.remove(\"disabled\") : button.classList.add(\"disabled\");//\r\n }\r\n\r\n containsErrors() {\r\n //MAT 2/12/2021 Seems to fix the Done button shading issue. Leaving old here in case other issues are caused\r\n //let errors = document.querySelectorAll(\".error\");\r\n let errors = wfStepPopup.querySelectorAll(\".error\");\r\n return errors.length !== 0;\r\n }\r\n\r\n async createPopup() {\r\n // let {description, dueDate, startDate, doneDate, responsiblePartyId, comments} = this.step;\r\n \r\n \r\n async function getResponsibleParties(workflowId) {\r\n let responsibleData = await WorkflowViewerAjax.getWFResponsibleParties({\r\n token: $.session.Token,\r\n workflowId: workflowId ? workflowId : 0,\r\n });\r\n \r\n return responsibleData;\r\n }\r\n\r\n let responsibleData = await getResponsibleParties(this.workflowId);\r\n\r\n let wfStepPopup = POPUP.build({\r\n header: (responsibleData.length == 0) ? \"There are no Responsible Parties defined for this workflow\" : \"Workflow Responsibility Relationship Assignments\",\r\n hideX: true,\r\n id: \"wfStepPopup\"\r\n });\r\n\r\n for(let i = 0; i < responsibleData.length; i++) {\r\n\r\n let dropDownList = dropdown.build({\r\n label: responsibleData[i].description,\r\n dropdownId: `responsibledropDownList_${responsibleData[i].responsiblePartyType}`,\r\n });\r\n\r\n this.cache[`responsibledropDownList_${responsibleData[i].responsiblePartyType}`] = {original : responsibleData[i].responsiblePartyId, modified : \"\"};\r\n\r\n dropDownList.addEventListener(\"change\", (e)=> {\r\n let originalvalues = this.cache;\r\n let modifiedvalue = e.target.value;\r\n let clickedddl = e.target.id;\r\n\r\n for (const ddl in originalvalues) {\r\n let ddlobjects = this.cache[ddl];\r\n if (ddl == clickedddl) {\r\n ddlobjects.modified = modifiedvalue;\r\n } \r\n }\r\n\r\n });\r\n\r\n wfStepPopup.appendChild(dropDownList);\r\n\r\n // populateDropdown(dropDownList, responsiblePartyId, this.people);\r\n let data = this.people.map((person) => ({\r\n id: person.peopleId, \r\n value: person.peopleId,\r\n text: person.lastName + \", \" + person.firstName\r\n })); \r\n data.unshift({ id: null, value: null, text: 'PLEASE SELECT A RESPONSIBLE PARTY' }); //ADD Blank value \r\n dropdown.populate(dropDownList, data, responsibleData[i].responsiblePartyId); \r\n }\r\n\r\n const raiseError = (element, errorMsg) => {\r\n if (!element.classList.contains(\"error\")){\r\n element.classList.add(\"error\");\r\n const event = new CustomEvent(\"errorRaised\", { bubbles: true, detail: { errorMsg }});\r\n element.dispatchEvent(event);\r\n }\r\n }\r\n\r\n const clearError = (element) => {\r\n if (element.classList.contains(\"error\")){\r\n element.classList.remove(\"error\");\r\n const event = new CustomEvent(\"errorCleared\", { bubbles: true });\r\n element.dispatchEvent(event);\r\n }\r\n }\r\n \r\n const isMaxLengthExceeded = (maxChars, length) => {\r\n return (length > maxChars);\r\n }\r\n\r\n const isEmpty = (inputValue) => {\r\n return inputValue === \"\" || inputValue === undefined || inputValue === null;\r\n }\r\n \r\n let doneBtn = button.build({\r\n id: \"wfStepDoneBtn\",\r\n text: \"done\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: this.editResponsibleRelationshipsFinished.bind(this) \r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: \"wfStepCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: this.editResponsibleRelationshipsCancelled.bind(this)\r\n });\r\n \r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n if (responsibleData.length > 0) btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn); \r\n wfStepPopup.appendChild(btnWrap);\r\n \r\n wfStepPopup.addEventListener(\"errorRaised\", (event) => {\r\n \r\n this.enableButton(doneBtn, false); \r\n });\r\n\r\n wfStepPopup.addEventListener(\"errorCleared\", () => {\r\n this.enableButton(doneBtn, !this.containsErrors());\r\n });\r\n\r\n POPUP.show(wfStepPopup);\r\n }\r\n \r\n}","class EditWorkflowStepComponent {\r\n constructor(step, callback) {\r\n this.step = step;\r\n this.callback = callback;\r\n this.createPopup();\r\n this.populateDropdown();\r\n this.populateResponsiblePartyClassificationDropdown();\r\n this.cache = {};\r\n }\r\n\r\n editWorkflowStepFinished() {\r\n let { step, cache, callback } = this;\r\n POPUP.hide(wfStepPopup);\r\n return callback(step, cache);\r\n }\r\n\r\n editWorkflowStepCancelled() {\r\n POPUP.hide(wfStepPopup);\r\n }\r\n\r\n enableButton(button, enable) {\r\n enable ? button.classList.remove('disabled') : button.classList.add('disabled');\r\n }\r\n\r\n containsErrors() {\r\n //MAT 2/12/2021 Seems to fix the Done button shading issue. Leaving old here in case other issues are caused\r\n //let errors = document.querySelectorAll(\".error\");\r\n let errors = wfStepPopup.querySelectorAll('.error');\r\n return errors.length !== 0;\r\n }\r\n\r\n createPopup() {\r\n let { description, dueDate, startDate, doneDate, responsiblePartyId, comments } = this.step;\r\n let wfStepPopup = POPUP.build({\r\n header: 'Workflow Step',\r\n hideX: true,\r\n id: 'wfStepPopup',\r\n });\r\n\r\n const raiseError = (element, errorMsg) => {\r\n if (!element.classList.contains('error')) {\r\n element.classList.add('error');\r\n const event = new CustomEvent('errorRaised', { bubbles: true, detail: { errorMsg } });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const clearError = element => {\r\n if (element.classList.contains('error')) {\r\n element.classList.remove('error');\r\n const event = new CustomEvent('errorCleared', { bubbles: true });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const isMaxLengthExceeded = (maxChars, length) => {\r\n return length > maxChars;\r\n };\r\n\r\n const isEmpty = inputValue => {\r\n return inputValue === '' || inputValue === undefined || inputValue === null;\r\n };\r\n\r\n const descriptionCharLimit = 100;\r\n\r\n let descriptionTextInput = input.build({\r\n id: 'step-description',\r\n label: '*Description',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: description,\r\n initialLength: description ? description.length : 0,\r\n charLimit: descriptionCharLimit,\r\n });\r\n\r\n descriptionTextInput.addEventListener('change', e => {\r\n this.step.description = e.target.value;\r\n });\r\n\r\n descriptionTextInput.addEventListener('keyup', event => {\r\n return validateDescription(event.target.value);\r\n });\r\n\r\n descriptionTextInput.addEventListener('paste', event => {\r\n let combinedText = event.target.value + event.clipboardData.getData('text/plain');\r\n return validateDescription(combinedText);\r\n });\r\n if (this.step.allowStepEdit === 'False') {\r\n descriptionTextInput.classList.add('disabled');\r\n }\r\n\r\n const validateDescription = inputValue => {\r\n if (isEmpty(inputValue)) {\r\n raiseError(descriptionTextInput, 'step description is required');\r\n return false;\r\n } else {\r\n if (isMaxLengthExceeded(descriptionCharLimit, inputValue.length)) {\r\n raiseError(descriptionTextInput, 'step description cannot exceed ' + descriptionCharLimit + ' characters');\r\n return false;\r\n }\r\n }\r\n clearError(descriptionTextInput);\r\n return true;\r\n };\r\n\r\n let dueDateInput = input.build({\r\n label: 'Due Date',\r\n type: 'date',\r\n value: moment(dueDate, 'M/D/YYYY').format('YYYY-MM-DD'),\r\n });\r\n\r\n dueDateInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n this.step.dueDate = null;\r\n } else {\r\n this.step.dueDate = moment(e.target.value, 'YYYY-MM-DD').format('M/D/YYYY');\r\n let changed = dueDate === this.step.dueDate ? false : true;\r\n let wfeventid = dueDate === null || dueDate === '' ? 4 : 5; // setting due date is workflow eventid = 4, updating due date is workflow eventid = 5\r\n this.cache['stepDueDate'] = {\r\n original: dueDate,\r\n modified: this.step.dueDate,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n }\r\n });\r\n\r\n let startDateInput = input.build({\r\n label: 'Start Date',\r\n type: 'date',\r\n value: moment(startDate, 'M/D/YYYY').format('YYYY-MM-DD'),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n startDateInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n this.step.startDate = null;\r\n } else {\r\n this.step.startDate = moment(e.target.value, 'YYYY-MM-DD').format('M/D/YYYY');\r\n let changed = startDate === this.step.startDate ? false : true;\r\n let wfeventid = startDate === null || startDate === '' ? 2 : 3; // setting start date is workflow eventid = 2, updating start date is workflow eventid = 3\r\n this.cache['stepStartDate'] = {\r\n original: startDate,\r\n modified: this.step.startDate,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n }\r\n });\r\n\r\n let doneDateInput = input.build({\r\n label: 'Done Date',\r\n type: 'date',\r\n value: moment(doneDate, 'M/D/YYYY').format('YYYY-MM-DD'),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n doneDateInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n this.step.doneDate = null;\r\n } else {\r\n this.step.doneDate = moment(e.target.value, 'YYYY-MM-DD').format('M/D/YYYY');\r\n let changed = doneDate === this.step.doneDate ? false : true;\r\n let wfeventid = doneDate === null || doneDate === '' ? 6 : 7; // setting done date is workflow eventid = 6, updating done date is workflow eventid = 7\r\n this.cache['stepDoneDate'] = {\r\n original: doneDate,\r\n modified: this.step.doneDate,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n }\r\n });\r\n\r\n let responsiblePartyClassificationDropdown = dropdown.build({\r\n label: 'Responsible Party Classification',\r\n dropdownId: 'responsiblePartyClassificationDropdown',\r\n });\r\n\r\n responsiblePartyClassificationDropdown.addEventListener('change', e => {\r\n let typeID = e.target.value;\r\n this.poplateResponsibleDropDownbyTypeID(typeID);\r\n });\r\n\r\n let responsibleDropdown = dropdown.build({\r\n label: 'Responsible',\r\n dropdownId: 'responsibleDropdown',\r\n });\r\n\r\n responsibleDropdown.addEventListener('change', e => {\r\n this.step.responsiblePartyId = e.target.value;\r\n // responsiblePartyId\r\n let changed = responsiblePartyId === this.step.responsiblePartyId ? false : true;\r\n let wfeventid = responsiblePartyId === null || responsiblePartyId === '' ? 8 : 9; // setting responsiblePartyId is workflow eventid = 8, updating responsiblePartyId is workflow eventid = 9\r\n this.cache['stepResponsiblePartyId'] = {\r\n original: responsiblePartyId,\r\n modified: this.step.responsiblePartyId,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: wfeventid,\r\n };\r\n });\r\n\r\n let commentsTextInput = input.build({\r\n label: 'Comments',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: comments,\r\n });\r\n\r\n commentsTextInput.addEventListener('change', e => {\r\n this.step.comments = e.target.value;\r\n let changed = comments === this.step.comments ? false : true;\r\n this.cache['stepComments'] = {\r\n original: comments,\r\n modified: this.step.comments,\r\n isChanged: changed,\r\n eventTypeId: this.step.stepId,\r\n eventType: 'step',\r\n eventId: 11,\r\n };\r\n });\r\n\r\n let doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: this.editWorkflowStepFinished.bind(this),\r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: this.editWorkflowStepCancelled.bind(this),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n wfStepPopup.appendChild(descriptionTextInput);\r\n wfStepPopup.appendChild(dueDateInput);\r\n wfStepPopup.appendChild(startDateInput);\r\n wfStepPopup.appendChild(doneDateInput);\r\n wfStepPopup.appendChild(responsiblePartyClassificationDropdown);\r\n wfStepPopup.appendChild(responsibleDropdown);\r\n wfStepPopup.appendChild(commentsTextInput);\r\n wfStepPopup.appendChild(btnWrap);\r\n\r\n wfStepPopup.addEventListener('errorRaised', event => {\r\n this.enableButton(doneBtn, false);\r\n });\r\n\r\n wfStepPopup.addEventListener('errorCleared', () => {\r\n this.enableButton(doneBtn, !this.containsErrors());\r\n });\r\n\r\n POPUP.show(wfStepPopup);\r\n\r\n validateDescription(description);\r\n }\r\n\r\n async populateDropdown() {\r\n let responsibleParty = await WorkflowViewerAjax.getResponsiblePartyIdforThisEditStep({\r\n stepId: this.step.stepId,\r\n });\r\n\r\n let { responsiblePartyId, people } = this.step;\r\n let data = this.step.people.map(person => ({\r\n id: person.peopleId,\r\n value: person.peopleId,\r\n text: person.lastName + ', ' + person.firstName,\r\n }));\r\n data.unshift({ id: null, value: '', text: '' }); //ADD Blank value\r\n if (responsibleParty.length > 0) {\r\n dropdown.populate('responsibleDropdown', data, responsibleParty[0].responsiblePartyId);\r\n } else {\r\n dropdown.populate('responsibleDropdown', data, '');\r\n }\r\n }\r\n\r\n async populateResponsiblePartyClassificationDropdown() {\r\n let responsiblePartyClassification = await WorkflowViewerAjax.getResponsiblePartyClassification();\r\n let responsiblePartyClassificationData = responsiblePartyClassification.map(responsibleParty => ({\r\n id: responsibleParty.typeID,\r\n value: responsibleParty.typeID,\r\n text: responsibleParty.description,\r\n }));\r\n responsiblePartyClassificationData.unshift({ id: null, value: '0', text: 'ALL' });\r\n dropdown.populate('responsiblePartyClassificationDropdown', responsiblePartyClassificationData, '');\r\n }\r\n\r\n async poplateResponsibleDropDownbyTypeID(typeID) {\r\n let peopleId;\r\n\r\n if ($.loadedApp === 'plan') {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n peopleId = attachmentInputs.dataset.peopleId;\r\n } else {\r\n peopleId = $.workflowConsumerId;\r\n }\r\n\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, typeID);\r\n let data = people.map(person => ({\r\n id: person.peopleId,\r\n value: person.peopleId,\r\n text: person.lastName + ', ' + person.firstName,\r\n }));\r\n data.unshift({ id: null, value: '', text: '' }); //ADD Blank value\r\n dropdown.populate('responsibleDropdown', data, '');\r\n }\r\n}\r\n","class FormsWorkflowStepComponent {\r\n constructor(step, docOrder) {\r\n this.step = step;\r\n // this.callback = callback;\r\n this.docOrder = docOrder;\r\n this.templateId;\r\n this.templateName;\r\n this.formName;\r\n this.formId;\r\n this.createPopup();\r\n this.populateDropdown();\r\n }\r\n\r\n formsWorkflowStepFinished() {\r\n let { step, cache, callback } = this;\r\n POPUP.hide(selectTemplatePopup);\r\n let isTemplate = this.templateId === 0 ? '0' : '1';\r\n this.templateId = this.templateId !== 0 ? this.templateId : this.formId;\r\n let documentEdited = '0';\r\n let activeConsumerId;\r\n\r\n if ($.loadedApp === 'plan') {\r\n let activeConsumers = roster2.getActiveConsumers();\r\n activeConsumerId = activeConsumers[0].id;\r\n } else {\r\n activeConsumerId = $.workflowConsumerId;\r\n }\r\n\r\n let newDate = new Date();\r\n let theMonth = newDate.getMonth() + 1;\r\n let formCompleteDate =\r\n UTIL.leadingZero(theMonth) + '/' + UTIL.leadingZero(newDate.getDate()) + '/' + newDate.getFullYear();\r\n\r\n if (isTemplate === '1') {\r\n forms.displayWFStepFormPopup(\r\n this.templateId,\r\n this.templateName,\r\n this.step.stepId,\r\n this.docOrder,\r\n isTemplate,\r\n documentEdited,\r\n activeConsumerId,\r\n );\r\n } else {\r\n forms.displayStepFormPopup(\r\n this.formId,\r\n documentEdited,\r\n activeConsumerId,\r\n false,\r\n isTemplate,\r\n formCompleteDate,\r\n this.step.stepId,\r\n this.docOrder,\r\n this.formName,\r\n );\r\n }\r\n }\r\n\r\n formsWorkflowStepCancelled() {\r\n POPUP.hide(selectTemplatePopup);\r\n }\r\n\r\n enableButton(button, enable) {\r\n enable ? button.classList.remove('disabled') : button.classList.add('disabled');\r\n }\r\n\r\n containsErrors() {\r\n //MAT 2/12/2021 Seems to fix the Done button shading issue. Leaving old here in case other issues are caused\r\n //let errors = document.querySelectorAll(\".error\");\r\n let errors = selectTemplatePopup.querySelectorAll('.error');\r\n return errors.length !== 0;\r\n }\r\n\r\n createPopup() {\r\n let selectTemplatePopup = POPUP.build({\r\n header: 'Template Select',\r\n hideX: true,\r\n id: 'selectTemplatePopup',\r\n });\r\n\r\n const raiseError = (element, errorMsg) => {\r\n if (!element.classList.contains('error')) {\r\n element.classList.add('error');\r\n const event = new CustomEvent('errorRaised', { bubbles: true, detail: { errorMsg } });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const clearError = element => {\r\n if (element.classList.contains('error')) {\r\n element.classList.remove('error');\r\n const event = new CustomEvent('errorCleared', { bubbles: true });\r\n element.dispatchEvent(event);\r\n }\r\n };\r\n\r\n const isMaxLengthExceeded = (maxChars, length) => {\r\n return length > maxChars;\r\n };\r\n\r\n const isEmpty = inputValue => {\r\n return inputValue === '' || inputValue === undefined || inputValue === null;\r\n };\r\n\r\n let templateDropdown = dropdown.build({\r\n label: 'Form Templates',\r\n dropdownId: 'templateDropdown',\r\n });\r\n\r\n templateDropdown.addEventListener('change', e => {\r\n this.templateId = e.target.value;\r\n var templateddl = document.getElementById('templateDropdown');\r\n this.templateName = templateddl.options[templateddl.selectedIndex].innerHTML;\r\n\r\n var formddl = document.getElementById('userFormDropdown');\r\n this.formName = formddl.options[0].innerHTML;\r\n formddl.selectedIndex = 0;\r\n this.formId = 0;\r\n doneBtn.classList.remove('disabled');\r\n // responsiblePartyId\r\n\r\n if (templateddl.selectedIndex === 0 && formddl.selectedIndex === 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n let firstName;\r\n if ($.loadedApp === 'plan') {\r\n let activeConsumer = roster2.getActiveConsumers();\r\n let consumerName = activeConsumer[0].card.textContent\r\n .replaceAll('\\n', '')\r\n .replaceAll('\\t', '')\r\n .trim()\r\n .split(',')[1]\r\n .trim()\r\n .split(' ')[0];\r\n let fullNameArray = consumerName.split(',');\r\n firstName = fullNameArray[fullNameArray.length - 1];\r\n } else {\r\n firstName = $.workflowConsumerName[$.workflowConsumerName.length - 1];\r\n }\r\n\r\n let userFormDropdown = dropdown.build({\r\n label: `${firstName}'s Forms`,\r\n dropdownId: 'userFormDropdown',\r\n });\r\n\r\n userFormDropdown.addEventListener('change', e => {\r\n this.formId = e.target.value;\r\n var formddl = document.getElementById('userFormDropdown');\r\n this.formName = formddl.options[formddl.selectedIndex].innerHTML;\r\n\r\n var templateddl = document.getElementById('templateDropdown');\r\n this.templateName = templateddl.options[0].innerHTML;\r\n templateddl.selectedIndex = 0;\r\n this.templateId = 0;\r\n // responsiblePartyId\r\n\r\n if (templateddl.selectedIndex === 0 && formddl.selectedIndex === 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n if ($.session.formsUpdate && $.session.formsView) {\r\n input.enableInputField(userFormDropdown);\r\n } else {\r\n input.disableInputField(userFormDropdown);\r\n }\r\n\r\n let doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: this.formsWorkflowStepFinished.bind(this),\r\n });\r\n this.doneButton = doneBtn;\r\n doneBtn.classList.add('disabled');\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: this.formsWorkflowStepCancelled.bind(this),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectTemplatePopup.appendChild(templateDropdown);\r\n selectTemplatePopup.appendChild(userFormDropdown);\r\n selectTemplatePopup.appendChild(btnWrap);\r\n\r\n selectTemplatePopup.addEventListener('errorRaised', event => {\r\n this.enableButton(doneBtn, false);\r\n });\r\n\r\n selectTemplatePopup.addEventListener('errorCleared', () => {\r\n this.enableButton(doneBtn, !this.containsErrors());\r\n });\r\n\r\n POPUP.show(selectTemplatePopup);\r\n }\r\n\r\n async populateDropdown() {\r\n const templates = WorkflowViewerComponent.getTemplates();\r\n let data = templates.map(template => ({\r\n id: template.formTemplateId,\r\n value: template.formTemplateId,\r\n text: template.formType + ' -- ' + template.formDescription,\r\n }));\r\n\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n let selectedConsumer;\r\n\r\n if ($.loadedApp === 'plan') {\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n } else {\r\n selectedConsumer = {\r\n id: $.workflowConsumerId,\r\n };\r\n }\r\n\r\n const { getconsumerFormsResult: consumerForms } = await formsAjax.getconsumerFormsAsync(\r\n $.session.UserId,\r\n selectedConsumer.id,\r\n hasAssignedFormTypes,\r\n );\r\n let data2 = consumerForms.map(usrForm => ({\r\n id: usrForm.formId,\r\n value: usrForm.formId,\r\n text: usrForm.formDescription.replace(/\\.[^/.]+$/, ''),\r\n // text: usrForm.formDescription.replace(/\\.[^/.]+$/, \"\")\r\n }));\r\n\r\n data2.sort((a, b) => {\r\n return a.text.toLowerCase() < b.text.toLowerCase() ? -1 : 1;\r\n });\r\n\r\n data.unshift({ id: null, value: '', text: 'No Template Selected' }); //ADD Blank value\r\n data2.unshift({ id: null, value: '', text: 'No Form Selected' }); //ADD Blank value\r\n dropdown.populate('templateDropdown', data);\r\n dropdown.populate('userFormDropdown', data2);\r\n }\r\n}\r\n","class WorkflowComponent { \r\n\r\n constructor({ workflowId, name, processName, description, currentStatusId, statuses, groups }, people, responsiblePeople){\r\n this.workflowId = workflowId;\r\n this.name = name;\r\n this.processName = processName;\r\n this.description = description;\r\n this.currentStatusId = currentStatusId;\r\n this.statuses = statuses;\r\n this.groups = groups;\r\n this.people = people;\r\n this.responsiblePeople = responsiblePeople;\r\n }\r\n\r\n async setStatusAsync(workflowId, statusId){\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/setWorkflowStatus/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowId\":\"' + workflowId + '\", \"statusId\":\"' + statusId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json' \r\n }); \r\n return result; \r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n } \r\n }\r\n \r\n getFirstAndLastName(peopleId, people){\r\n const person = people.find((p) => {\r\n return (p.peopleId === peopleId);\r\n });\r\n return (person) ? (person.firstName + \" \" + person.lastName) : \"\"; \r\n }\r\n\r\n render() {\r\n \r\n let { workflowId, name, currentStatusId, description, processName, groups, statuses, people, setStatusAsync, getFirstAndLastName, responsiblePeople } = this;\r\n\r\n let workflowContainer = document.createElement('div');\r\n workflowContainer.classList.add(\"card\", \"workflow\");\r\n workflowContainer.setAttribute(\"data-id\", workflowId); \r\n \r\n let workflowSummaryContainer = document.createElement('div');\r\n workflowSummaryContainer.classList.add(\"card__header\", \"wf-summary\");\r\n\r\n let workflowNameContainer = document.createElement('div');\r\n workflowNameContainer.classList.add(\"wf-column\", \"workflow-name-container\");\r\n workflowNameContainer.innerHTML = `\r\n

    Workflow

    \r\n

    ${name}

    \r\n \r\n `;\r\n\r\n workflowNameContainer.addEventListener(\"click\", (e)=> {\r\n \r\n let workflowDescriptionPopop = POPUP.build({\r\n header: \"Worfklow Description\",\r\n hideX: false,\r\n id: \"wfDescPopup\"\r\n }); \r\n\r\n let workFlowDescription = document.createElement('div');\r\n workFlowDescription.innerHTML = `${description}`;\r\n\r\n workflowDescriptionPopop.appendChild(workFlowDescription);\r\n\r\n POPUP.show(workflowDescriptionPopop);\r\n });\r\n\r\n let responsiblePartyContainer = document.createElement('div');\r\n responsiblePartyContainer.classList.add(\"wf-column\", \"responsible-container\");\r\n responsiblePartyContainer.innerHTML = icons.peopleGroup;\r\n\r\n responsiblePartyContainer.addEventListener(\"click\", (e)=> {\r\n \r\n new EditResponsibleRelationshipsComponent(workflowId, people, async (workflowId, ddlcache)=>{\r\n try {\r\n\r\n for (const ddl in ddlcache) { \r\n if (ddlcache[ddl].modified != '') { \r\n let workflowResponsibilityType = ddl.split('_')[1];\r\n let peopleId = await WorkflowViewerAjax.updateRelationshipResponsiblePartyID(ddlcache[ddl].modified, workflowId, workflowResponsibilityType); \r\n // update UI step with the returned data \r\n var workflow = document.querySelectorAll(`[data-id=\"${workflowId}\"]`)[0];\r\n var workflowSteps = workflow.getElementsByClassName(\"wf-steps-container\");\r\n for (var i = 0; i < workflowSteps.length; i++) {\r\n if (workflowSteps[i].getElementsByClassName(`responsiblePartytype_${workflowResponsibilityType}`)[0] != undefined) {\r\n if (workflowSteps[i].getElementsByClassName(\"wf-step-done-date\")[0].innerText == \"\") {\r\n let responsiblestep = workflowSteps[i].getElementsByClassName(`responsiblePartytype_${workflowResponsibilityType}`)[0];\r\n responsiblestep.getElementsByTagName(\"p\")[0].innerText = getFirstAndLastName(ddlcache[ddl].modified, people); \r\n }\r\n }\r\n\r\n }\r\n } \r\n }\r\n }\r\n catch(err) { \r\n console.error(\"error: \", err); \r\n } \r\n }); \r\n });\r\n\r\n\r\n let statusDropdown = dropdown.build({\r\n label: \"Status\",\r\n dropdownId: \"statusDropdown - \" + workflowId,\r\n }); \r\n\r\n let statusContainer = document.createElement('div');\r\n statusContainer.classList.add(\"wf-column\", \"status-container\");\r\n statusContainer.setAttribute('data-id', workflowId);\r\n statusContainer.appendChild(statusDropdown);\r\n\r\n statusDropdown.addEventListener(\"change\", async (e)=> {\r\n \r\n const setStatus = setStatusAsync(workflowId, e.target.value);\r\n setStatus.then(() => {\r\n \r\n currentStatusId = e.target.value;\r\n \r\n }).catch((error) => {\r\n // reset drop down to previous value\r\n e.target.value = currentStatusId;\r\n statusDropdown.classList.add(\"error\");\r\n console.error(error);\r\n });\r\n \r\n let changed = (currentStatusId === e.target.value) ? false : true;\r\n \r\n let cache = {original : currentStatusId, modified : e.target.value, isChanged : changed, eventTypeId : workflowId, eventType : \"workflow\", eventId : 12};\r\n // get the associated Actions for the Workflow status change event (in cache)\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache); \r\n var wfActionsCompleted = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n var displaySteps = document.getElementsByClassName(\"wf-steps-container\");\r\n // update the UI with the returned Action data (wfActionsCompleted) for the Workflow status change Event\r\n for (var j = 0; j < wfActionsCompleted.length; j++) {\r\n for (var i = 0; i < displaySteps.length; i++) {\r\n var wfActionCompleted;\r\n if (wfActionsCompleted[j].length > 10) {\r\n wfActionCompleted = JSON.parse(wfActionsCompleted[j]);\r\n if (displaySteps[i].dataset.id == wfActionCompleted.StepId) {\r\n if (wfActionCompleted.ActionId == \"6\") {\r\n var startDate = UTIL.formatDateFromIso(wfActionCompleted.ActionDate, '/');\r\n displaySteps[i].getElementsByClassName(\"wf-step-start-date\")[0].innerHTML = startDate;\r\n } else if (wfActionCompleted.ActionId == \"5\") { \r\n var dueDate = UTIL.formatDateFromIso(wfActionCompleted.ActionDate, '/');\r\n displaySteps[i].getElementsByClassName(\"wf-step-due-date\")[0].innerHTML = dueDate;\r\n } \r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n dropdown.populate(statusDropdown, statuses.map( s => ({ id: s.statusId, value: s.statusId, text: s.description})), currentStatusId); \r\n\r\n let workflowProcessContainer = document.createElement('div');\r\n workflowProcessContainer.classList.add(\"wf-column\", \"process-container\");\r\n workflowProcessContainer.innerHTML = `\r\n

    Process

    \r\n

    ${processName}

    \r\n `;\r\n \r\n let workflowDeleteContainer = document.createElement('div');\r\n workflowDeleteContainer.classList.add(\"wf-column\");\r\n workflowDeleteContainer.innerHTML = `${icons['delete']}`;\r\n\r\n workflowDeleteContainer.addEventListener(\"click\", (e)=> { \r\n e.stopPropagation();\r\n try { \r\n this.deleteConfirmation(workflowId, workflowContainer); \r\n return; \r\n } catch(err) { \r\n console.error(\"error: \", err); \r\n } \r\n });\r\n\r\n async function appendWorkflowDeleteContainer(workflowName){\r\n let result = await WorkflowViewerAjax.isWorkflowAutoCreatedAsync(name); \r\n if (result.isWorkflowAutoCreatedResult !== \"1\"){\r\n workflowSummaryContainer.appendChild(workflowDeleteContainer);\r\n }\r\n };\r\n\r\n workflowSummaryContainer.appendChild(workflowNameContainer);\r\n workflowSummaryContainer.appendChild(responsiblePartyContainer);\r\n workflowSummaryContainer.appendChild(statusContainer);\r\n workflowSummaryContainer.appendChild(workflowProcessContainer);\r\n appendWorkflowDeleteContainer(name);\r\n \r\n \r\n let workflowDetailContainer = document.createElement('div');\r\n workflowDetailContainer.classList.add(\"card__body\", \"wf-details\"); \r\n\r\n if (groups) {\r\n groups.map(g => {\r\n workflowDetailContainer.innertHtml = `${(new WorkflowGroupComponent(workflowDetailContainer, g, people, responsiblePeople).render())}`; \r\n }) \r\n }\r\n \r\n workflowContainer.appendChild(workflowSummaryContainer);\r\n workflowContainer.appendChild(workflowDetailContainer);\r\n \r\n return workflowContainer;\r\n\r\n }; \r\n\r\n deleteConfirmation(workflowId, workflowContainer) {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(popup);\r\n let result = await WorkflowViewerAjax.deleteWorkflowAsync(workflowId); \r\n if (result.deleteWorkflowResult === \"1\"){\r\n workflowContainer.remove(); \r\n let workflowsRemaining = document.querySelectorAll('.card.workflow');\r\n let workflowsContainer = document.getElementById('workflow-viewer');\r\n if (workflowsRemaining.length == 0) workflowsContainer.innerHTML = `There are no workflows attached to this record`; \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this workflow?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n };\r\n\r\n}","class WorkflowDocumentComponent {\r\n constructor({ documentId, stepId, docOrder, description, attachmentId, documentEdited, attachmentType }) {\r\n this.documentId = documentId;\r\n this.stepId = stepId;\r\n this.docOrder = docOrder;\r\n this.description = description;\r\n this.attachmentId = attachmentId;\r\n this.documentEdited = documentEdited;\r\n this.attachmentType = attachmentType;\r\n }\r\n\r\n render() {\r\n let documentElement = document.createElement('li');\r\n documentElement.classList.add('wf-document');\r\n documentElement.setAttribute('data-document-id', this.documentId);\r\n documentElement.setAttribute('data-attachment-id', this.attachmentId);\r\n documentElement.setAttribute('data-document-edited', this.documentEdited);\r\n documentElement.setAttribute('data-attachment-type', this.attachmentType);\r\n\r\n let documentDescription = document.createElement('label');\r\n documentDescription.innerHTML = `\r\n ${this.description}\r\n `;\r\n\r\n let documentDeleteBtn = document.createElement('button');\r\n documentDeleteBtn.classList.add('wf-document-delete-btn');\r\n documentDeleteBtn.innerHTML = `\r\n ${icons['close']}\r\n `;\r\n\r\n documentDeleteBtn.addEventListener('click', async e => {\r\n e.stopPropagation();\r\n try {\r\n this.deleteConfirmation(this.documentId, documentElement);\r\n return;\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n });\r\n\r\n let documentDragBtn = document.createElement('button');\r\n documentDragBtn.classList.add('wf-document-drag-btn');\r\n documentDragBtn.classList.add('drag-handle');\r\n documentDragBtn.innerHTML = `\r\n ${icons['drag']}\r\n `;\r\n\r\n documentElement.appendChild(documentDragBtn);\r\n documentElement.appendChild(documentDescription);\r\n documentElement.appendChild(documentDeleteBtn);\r\n\r\n documentElement.addEventListener('click', e => {\r\n let docDesc = this.description;\r\n let slug = slugify(docDesc);\r\n\r\n function slugify(myString) {\r\n let s = myString\r\n .replace(/[^\\w\\s-]/g, '')\r\n .trim()\r\n .toLowerCase();\r\n s = s.replace(/[-\\s]+/g, '-');\r\n return s;\r\n }\r\n\r\n if (documentElement.getAttribute('data-attachment-type') == 'pdf') {\r\n let isTemplate = false;\r\n let templateName = '';\r\n let documntEdited = documentElement.getAttribute('data-document-edited');\r\n let activeConsumerId;\r\n\r\n if ($.loadedApp === 'plan') {\r\n let activeConsumers = roster2.getActiveConsumers();\r\n activeConsumerId = activeConsumers[0].id;\r\n } else {\r\n activeConsumerId = $.workflowConsumerId;\r\n }\r\n\r\n forms.displayWFStepFormPopup(\r\n this.documentId,\r\n templateName,\r\n this.stepId,\r\n this.docOrder,\r\n isTemplate,\r\n documntEdited,\r\n activeConsumerId,\r\n );\r\n } else {\r\n const resp = WorkflowViewerAjax.downloadAttachment(this.attachmentId, slug);\r\n }\r\n });\r\n\r\n return documentElement;\r\n }\r\n\r\n deleteConfirmation(documentId, documentElement) {\r\n var popup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n let result = await WorkflowViewerAjax.deleteDocumentAsync(documentId);\r\n if (result.deleteWorkflowStepDocumentResult === '1') {\r\n documentElement.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this step document?';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n}\r\n","class WorkflowGroupComponent {\r\n\r\n constructor(parent, { groupId, groupName, steps }, people, responsiblePeople){\r\n this.groupId = groupId;\r\n this.name = groupName;\r\n this.steps = steps; \r\n this.people = people;\r\n this.parent = parent;\r\n this.responsiblePeople = responsiblePeople; \r\n }\r\n\r\n render(){\r\n\r\n let { groupId, name, steps, parent, people, responsiblePeople } = this;\r\n\r\n let groupContainer = document.createElement('div');\r\n groupContainer.classList.add(\"wf-group-container\");\r\n groupContainer.setAttribute(\"data-id\", groupId); \r\n\r\n let groupHeaderGrid = document.createElement('div');\r\n groupHeaderGrid.classList.add(\"group-grid\"); \r\n\r\n let groupGridColumn1 = document.createElement(\"div\");\r\n groupGridColumn1.classList.add(\"group-grid-column-1\");\r\n\r\n let groupExpandButton = document.createElement(\"button\");\r\n groupExpandButton.classList.add(\"expand-button\", \"expanded\");\r\n groupExpandButton.innerHTML = icons['keyArrowRight']; \r\n groupGridColumn1.appendChild(groupExpandButton); \r\n \r\n let groupGridColumn2 = document.createElement('div');\r\n groupGridColumn2.classList.add(\"group-grid-column-2\");\r\n\r\n let groupDescription = document.createElement(\"div\");\r\n groupDescription.classList.add(\"group-description\");\r\n groupDescription.innerHTML = `${name}`;\r\n groupGridColumn2.appendChild(groupDescription); \r\n\r\n const addStepBtnOpts = {\r\n text: 'Add Step',\r\n style: 'primary',\r\n type: 'contained',\r\n classNames: ['add-step-button'],\r\n icon: 'add',\r\n callback: () => { \r\n new EditWorkflowStepComponent(new WorkflowStepComponent({ groupId: groupId, stepOrder: \"\" + (steps.length + 1) + \"\" }, people, responsiblePeople ), async (editedData)=>{\r\n try {\r\n let result = await WorkflowViewerAjax.insertStepAsync(editedData);\r\n const {insertWorkflowStepResult} = result;\r\n editedData.stepId = insertWorkflowStepResult;\r\n \r\n // let cache = {eventTypeId : editedData.groupId, eventType : \"group\", eventId : 1};\r\n // let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache); \r\n // let stepActionsCompleted = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n \r\n let groupNode = document.querySelector(`.wf-group-container[data-id='${groupId}']`);\r\n \r\n if (groupNode){\r\n $(groupNode).find(\".wf-steps-container\").slideDown(); // expand group if it's collapsed\r\n groupNode.appendChild(editedData.render());\r\n } \r\n return; \r\n } catch(err) { \r\n console.error(\"error: \", err); \r\n } \r\n }); \r\n }\r\n };\r\n const groupBntAddStep = button.build(addStepBtnOpts); \r\n groupGridColumn2.appendChild(groupBntAddStep);\r\n\r\n groupHeaderGrid.appendChild(groupGridColumn1);\r\n groupHeaderGrid.appendChild(groupGridColumn2);\r\n\r\n groupContainer.appendChild(groupHeaderGrid);\r\n\r\n groupContainer.addEventListener('click', (e)=> { \r\n let button = e.target.closest('button');\r\n if (button) { \r\n if (button.classList.contains('expand-button')){ \r\n let parentDiv = button.closest('div');\r\n if (parentDiv.classList.contains(\"step-grid-column-1\")) {\r\n let stepGrid = $(parentDiv).parent();\r\n console.log(stepGrid);\r\n $(stepGrid).find(\".step-detail-container\").slideToggle();\r\n } \r\n if (parentDiv.classList.contains(\"group-grid-column-1\")){\r\n let stepContainer = $(parentDiv).parent().parent();\r\n $(stepContainer).find(\".wf-steps-container\").slideToggle();\r\n }\r\n $(button).toggleClass('expanded');\r\n return\r\n } \r\n } \r\n }) \r\n\r\n parent.appendChild(groupContainer); \r\n\r\n if (steps){ \r\n steps.map(s => {\r\n groupContainer.appendChild(new WorkflowStepComponent(s, people, responsiblePeople).render()); \r\n })\r\n } \r\n\r\n new Sortable(groupContainer, {\r\n handle: '.drag-handle',\r\n draggable: '>.wf-steps-container',\r\n onSort: function (evt){ \r\n const groupSteps = Array.from(groupContainer.getElementsByClassName(\"wf-steps-container\"));\r\n if (groupSteps){\r\n const orderArray = groupSteps.map((step, index) => ({\r\n id: step.getAttribute(\"data-id\"),\r\n order: index.toString()\r\n }));\r\n try {\r\n WorkflowViewerAjax.setStepOrderAsync(orderArray);\r\n } catch (error) {\r\n console.error(error);\r\n } \r\n }\r\n }\r\n });\r\n\r\n return ; \r\n }\r\n}","class WorkflowsComponent {\r\n constructor({ workflows, people, responsiblePeople }){\r\n this.workflows = workflows;\r\n this.people = people;\r\n this.responsiblePeople = responsiblePeople;\r\n }\r\n\r\n render() {\r\n let { people, responsiblePeople } = this;\r\n let workflowsComponent = document.createElement('div'); \r\n if (this.workflows.length > 0){\r\n this.workflows.map(w => { \r\n workflowsComponent.appendChild(new WorkflowComponent(w, people, responsiblePeople).render()) \r\n }); \r\n } else {\r\n workflowsComponent.innerHTML = `There are no workflows attached to this record`;\r\n }\r\n return workflowsComponent;\r\n }\r\n \r\n}","class WorkflowStepComponent {\r\n constructor({stepId, groupId, stepOrder, isChecklist, allowStepEdit, description, dueDate, startDate, doneDate, responsiblePartyId, responsiblePartytype, comments, isApplicable, documents}, people, responsiblePeople) {\r\n this.stepId = stepId;\r\n this.groupId = groupId;\r\n this.stepOrder = stepOrder;\r\n this.isChecklist = isChecklist; \r\n this.allowStepEdit = allowStepEdit;\r\n this.description = description;\r\n this.dueDate = dueDate? dueDate.split(\" \")[0] : \"\";\r\n this.startDate = startDate? startDate.split(\" \")[0] : \"\";\r\n this.doneDate = doneDate? doneDate.split(\" \")[0] : \"\";\r\n this.responsiblePartyId = responsiblePartyId;\r\n this.responsiblePartytype = responsiblePartytype;\r\n this.comments = comments;\r\n this.isApplicable = isApplicable;\r\n this.documents = documents;\r\n this.people = people;\r\n this.isExpanded = false;\r\n this.responsiblePeople = responsiblePeople;\r\n }\r\n\r\n getFirstAndLastName(peopleId, people){\r\n const person = people.find((p) => {\r\n return (p.peopleId === peopleId);\r\n });\r\n return (person) ? (person.firstName + \" \" + person.lastName) : \"\";\r\n }\r\n\r\n isAttachmentValid(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio\\/)|(video\\/)')\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files')\r\n target.value = '';\r\n }\r\n return target.value !== '';\r\n }\r\n\r\n addStepDocument(inputElement) {\r\n\r\n const attachmentObj = {};\r\n\r\n const attPromise = new Promise(resolve => {\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split(\".\").pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n resolve();\r\n });\r\n })\r\n\r\n attPromise.then(async () => {\r\n try {\r\n const docOrder = this.documents.length + 1;\r\n let documentEdited = \"0\"; // documentEdited = F\r\n const result = await WorkflowViewerAjax.insertStepDocumentAsync(this.stepId, docOrder, attachmentObj.description, attachmentObj.type, attachmentObj.arrayBuffer, documentEdited);\r\n const {insertWorkflowStepDocumentResult: {attachmentId, documentId}} = result;\r\n\r\n const newDocObj = {\r\n documentId: documentId,\r\n stepId: this.stepId,\r\n docOrder: `\"${docOrder}\"`,\r\n description: attachmentObj.description,\r\n attachmentId: attachmentId,\r\n documentEdited: documentEdited,\r\n attachmentType: attachmentObj.type,\r\n }\r\n\r\n this.documents = [...this.documents].concat(newDocObj);\r\n\r\n const newStepDocComponent = new WorkflowDocumentComponent(newDocObj).render();\r\n\r\n // Get the List Element on page so we can add new document element \r\n const stepsContainer = document.querySelector(`.wf-steps-container[data-id='${this.stepId}']`);\r\n const documentsList = stepsContainer.querySelector(\".wf-documents-list\");\r\n\r\n documentsList.appendChild(newStepDocComponent);\r\n\r\n let cache = {eventTypeId : this.stepId, eventType : \"step\", eventId : 10};\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n let stepActionsCompleted = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n\r\n } catch (error) {\r\n throw (error);\r\n }\r\n });\r\n }\r\n\r\n render(){ \r\n let {\r\n description,\r\n stepId,\r\n dueDate,\r\n startDate,\r\n doneDate,\r\n responsiblePartyId,\r\n responsiblePartytype,\r\n comments,\r\n events,\r\n documents,\r\n isExpanded,\r\n people,\r\n getFirstAndLastName,\r\n responsiblePeople \r\n } = this;\r\n\r\n\r\n let stepsGrid = document.createElement(\"div\");\r\n stepsGrid.classList.add(\"step-grid\");\r\n\r\n let stepsGridColumn1 = document.createElement(\"div\");\r\n stepsGridColumn1.classList.add(\"step-grid-column-1\");\r\n\r\n let stepExpandButton = document.createElement(\"button\");\r\n stepExpandButton.classList.add(\"expand-button\");\r\n stepExpandButton.innerHTML = icons['keyArrowRight'];\r\n if (this.isExpanded){\r\n stepExpandButton.classList.add(\"expanded\");\r\n }\r\n stepExpandButton.addEventListener(\"click\", (e) => {\r\n this.isExpanded = !this.isExpanded;\r\n });\r\n\r\n stepsGridColumn1.appendChild(stepExpandButton);\r\n\r\n let stepsGridColumn2 = document.createElement(\"div\");\r\n stepsGridColumn2.classList.add(\"step-grid-column-2\");\r\n\r\n let stepSummaryContainer = document.createElement(\"div\");\r\n stepSummaryContainer.classList.add(\"step-summary-container\");\r\n\r\n let stepDescriptionContainer = document.createElement(\"div\");\r\n stepDescriptionContainer.classList.add(\"step-description-container\");\r\n\r\n let stepCompleteCheckbox = input.buildCheckbox({\r\n //text: description,\r\n isChecked: doneDate\r\n });\r\n stepCompleteCheckbox.classList.add(\"step-checkbox-container\");\r\n\r\n stepDescriptionContainer.appendChild(stepCompleteCheckbox);\r\n\r\n let stepDescription = document.createElement(\"div\");\r\n stepDescription.classList.add(\"step-description\");\r\n stepDescription.innerHTML = `

    ${description}

    `;\r\n stepDescriptionContainer.appendChild(stepDescription);\r\n stepSummaryContainer.appendChild(stepDescriptionContainer);\r\n\r\n let summaryComponent;\r\n\r\n summaryComponent = document.createElement(\"div\");\r\n summaryComponent.classList.add(\"wf-column\", \"step-summary-component\");\r\n summaryComponent.innerHTML = `\r\n

    Due

    \r\n

    ${dueDate? dueDate : ''}

    \r\n `;\r\n stepSummaryContainer.appendChild(summaryComponent);\r\n\r\n summaryComponent = document.createElement(\"div\");\r\n summaryComponent.classList.add(\"wf-column\", \"step-summary-component\");\r\n summaryComponent.innerHTML = `\r\n

    Start

    \r\n

    ${startDate? startDate : ''}

    \r\n `;\r\n stepSummaryContainer.appendChild(summaryComponent);\r\n\r\n summaryComponent = document.createElement(\"div\");\r\n summaryComponent.classList.add(\"wf-column\", \"step-summary-component\");\r\n summaryComponent.innerHTML = `\r\n

    Done

    \r\n

    ${doneDate? doneDate : ''}

    \r\n `;\r\n stepSummaryContainer.appendChild(summaryComponent);\r\n\r\n\r\n\r\n let stepDetailContainer = document.createElement(\"div\");\r\n stepDetailContainer.classList.add(\"step-detail-container\");\r\n if (isExpanded) {\r\n stepDetailContainer.style = \"display: block;\"\r\n } else {\r\n stepDetailContainer.style = \"display: none;\"\r\n }\r\n\r\n const editBtnOpts = {\r\n text: 'Edit Step',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['step-edit-button'],\r\n icon: 'edit',\r\n callback: () => {\r\n new EditWorkflowStepComponent(new WorkflowStepComponent(this, people, responsiblePeople), async (editedData, cache)=>{\r\n try {\r\n let result = await WorkflowViewerAjax.updateStepAsync(editedData)\r\n if (Object.values(result)[0] === \"1\"){\r\n let existingNode = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n if (existingNode) {\r\n editedData.isExpanded = this.isExpanded;\r\n // editedData.startDate = '01/01/2021';\r\n existingNode.parentNode.replaceChild(editedData.render(), existingNode);\r\n };\r\n }\r\n // get the associated Actions for the current Step events (in cache)\r\n for (const stepobjt in cache) {\r\n let stepobject = cache[stepobjt];\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(stepobject);\r\n let stepActionData = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n // update the UI with the returned step Action data for the current step event\r\n for (var i = 0; i < stepActionData.length; i++) {\r\n\r\n if (stepActionData[i].length > 1) {\r\n\r\n let stepActionObj = JSON.parse(stepActionData[i])\r\n let existingNode = document.querySelector(`.wf-steps-container[data-id='${stepId}']`);\r\n if (existingNode) {\r\n editedData.isExpanded = this.isExpanded;\r\n if (stepActionObj.ActionId == \"6\") {\r\n editedData.startDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/'); //display date with step\r\n this.startDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/'); //display date in the edit pop-up\r\n } else if (stepActionObj.ActionId == \"5\") {\r\n editedData.dueDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/');\r\n this.dueDate = UTIL.formatDateFromIso(stepActionObj.ActionDate, '/');\r\n } else if (stepActionObj.ActionId == \"1\") {\r\n const statusDropdown = document.getElementById('statusDropdown - ' + stepActionObj.workflowId );\r\n statusDropdown.value = stepActionObj.wfStatusId;\r\n }\r\n existingNode.parentNode.replaceChild(editedData.render(), existingNode);\r\n };\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n return;\r\n } catch(err) { \r\n console.error(\"error: \", err);\r\n }\r\n });\r\n }\r\n };\r\n const stepBtnEdit = button.build(editBtnOpts);\r\n\r\n const deleteBtnOpts = {\r\n text: 'Delete Step',\r\n style: 'danger',\r\n type: 'outlined',\r\n classNames: ['step-delete-button'],\r\n icon: 'delete',\r\n callback: async () => {\r\n try {\r\n var answer = confirm(\r\n \"Are you sure you want to delete this step?\"\r\n );\r\n if (answer) {\r\n let result = await WorkflowViewerAjax.deleteStepAsync(this.stepId);\r\n if (Object.values(result)[0] === \"1\"){\r\n stepsContainer.remove();\r\n }\r\n }\r\n return;\r\n } catch(err) { \r\n console.error(\"error: \", err);\r\n }\r\n }\r\n };\r\n const stepBtnDelete = button.build(deleteBtnOpts);\r\n\r\n let reponsiblePartyContainer = document.createElement(\"div\");\r\n reponsiblePartyContainer.classList.add(\"wf-column\");\r\n reponsiblePartyContainer.classList.add(`responsiblePartytype_${responsiblePartytype}`);\r\n reponsiblePartyContainer.innerHTML = `\r\n

    Responsible Party

    \r\n
    \r\n

    ${getFirstAndLastName(responsiblePartyId, responsiblePeople)}

    \r\n `;\r\n\r\n let commentsContainer = document.createElement(\"div\");\r\n commentsContainer.classList.add(\"wf-column\");\r\n commentsContainer.innerHTML = `\r\n

    Comments

    \r\n
    \r\n

    ${comments === undefined ? '' : comments}

    \r\n `;\r\n\r\n let documentsContainer = document.createElement(\"div\");\r\n documentsContainer.classList.add(\"wf-column\");\r\n documentsContainer.innerHTML = `\r\n

    Documents

    \r\n
    \r\n `;\r\n\r\n const addDocBtnOpts = {\r\n text: 'Upload Document',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['step-edit-button'],\r\n icon: 'add'\r\n };\r\n\r\n const addFormBtnOpts = {\r\n text: 'Add Form',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['step-edit-button'],\r\n icon: 'add',\r\n callback: () => {\r\n const docOrder = this.documents.length + 1;\r\n new FormsWorkflowStepComponent(new WorkflowStepComponent(this, people, responsiblePeople), docOrder);\r\n }\r\n };\r\n\r\n let attachmentInput = document.createElement(\"input\");\r\n attachmentInput.type = \"file\";\r\n attachmentInput.name = \"file\";\r\n attachmentInput.id = `stepId-${this.stepId}`;\r\n attachmentInput.classList.add('inputfile');\r\n attachmentInput.onchange = (event) => {\r\n const attachment = event.target;\r\n if (this.isAttachmentValid(attachment)){\r\n const newDocumentComponent = this.addStepDocument(attachment);\r\n event.target.value = \"\"; // clear file input value after adding it\r\n };\r\n }\r\n\r\n let attachmentLabelAddDoc = document.createElement(\"label\");\r\n // attachmentLabel.classList.add(\"step-add-document-container\");\r\n attachmentLabelAddDoc.setAttribute(\"for\",attachmentInput.id); \r\n\r\n let addDocumentBtn = button.build(addDocBtnOpts);\r\n let addFormBtn = button.build(addFormBtnOpts);\r\n\r\n // TODOJOE: Upload Document and Display Form buttons -- need to size the AddDocbtn\r\n attachmentLabelAddDoc.appendChild(addDocumentBtn);\r\n // attachmentLabel.appendChild(addFormBtn);\r\n\r\n let attachmentLabelAddForm = document.createElement(\"label\");\r\n attachmentLabelAddForm.appendChild(addFormBtn);\r\n\r\n // documentsContainer.appendChild(attachmentInput);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"step-action-container\");\r\n btnWrap.appendChild(attachmentInput);\r\n btnWrap.appendChild(attachmentLabelAddDoc);\r\n btnWrap.appendChild(attachmentLabelAddForm);\r\n\r\n\r\n documentsContainer.appendChild(btnWrap);\r\n\r\n // documentsContainer.appendChild(attachmentLabel);\r\n // documentsContainer.appendChild(addFormBtn);\r\n\r\n let documentsList = document.createElement(\"ul\");\r\n documentsList.classList.add(\"wf-documents-list\");\r\n\r\n if (documents && documents.length > 0){\r\n documents.map(d => {\r\n documentsList.appendChild(new WorkflowDocumentComponent(d).render());\r\n });\r\n }\r\n\r\n documentsContainer.appendChild(documentsList);\r\n\r\n let actionContainer = document.createElement(\"div\");\r\n actionContainer.classList.add(\"step-action-container\");\r\n actionContainer.appendChild(stepBtnEdit);\r\n actionContainer.appendChild(stepBtnDelete);\r\n if (this.allowStepEdit === 'False') {\r\n stepBtnDelete.classList.add(\"disabled\");\r\n stepBtnDelete.classList.remove(\"btn--danger\");\r\n }\r\n stepDetailContainer.appendChild(actionContainer);\r\n stepDetailContainer.appendChild(reponsiblePartyContainer);\r\n stepDetailContainer.appendChild(commentsContainer);\r\n stepDetailContainer.appendChild(documentsContainer);\r\n\r\n stepsGridColumn2.appendChild(stepSummaryContainer);\r\n stepsGridColumn2.appendChild(stepDetailContainer);\r\n\r\n let stepsGridColumn3 = document.createElement(\"div\");\r\n stepsGridColumn3.classList.add(\"step-grid-column-3\");\r\n\r\n // let stepDragHandle = document.createElement(\"div\");\r\n // stepDragHandle.classList.add(\"drag-handle\"); \r\n // stepDragHandle.innerHTML = icons['drag'];\r\n // stepsGridColumn3.appendChild(stepDragHandle); \r\n\r\n stepsGrid.appendChild(stepsGridColumn1);\r\n stepsGrid.appendChild(stepsGridColumn2);\r\n stepsGrid.appendChild(stepsGridColumn3);\r\n\r\n let stepsContainer = document.createElement(\"div\");\r\n stepsContainer.classList.add(\"wf-steps-container\");\r\n stepsContainer.setAttribute('data-id', stepId);\r\n\r\n stepsContainer.addEventListener('click', async (e)=> {\r\n if (e.target.type === \"checkbox\"){\r\n let doneDate = e.target.checked ? moment(UTIL.getTodaysDate(), \"YYYY-MM-DD\").format(\"M/D/YYYY\") : null;\r\n // update the database and get response\r\n let result = await WorkflowViewerAjax.setStepDoneDateAsync(this.stepId, doneDate);\r\n if (Object.values(result)[0] === \"1\") {\r\n // set the state of this object's done date\r\n this.doneDate = doneDate;\r\n // update the html\r\n let stepsContainer = e.target.closest(\".wf-steps-container\");\r\n let doneDateElement = stepsContainer.getElementsByClassName('wf-step-done-date')[0];\r\n doneDateElement.innerHTML = doneDate? doneDate : '';\r\n // EVENT -- this step done date is set\r\n let cache = {modified : doneDate, eventTypeId : this.stepId, eventType : \"step\", eventId : 6};\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n let stepActionData = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n // ACTION -- if Action is 'set WorkFlow Status' (Action = 1), then update UI to reflect Action \r\n for (var i = 0; i < stepActionData.length; i++) {\r\n if (stepActionData[i].length > 1) {\r\n let stepActionObj = JSON.parse(stepActionData[i])\r\n if (stepActionObj.ActionId == \"1\") {\r\n const statusDropdown = document.getElementById('statusDropdown - ' + stepActionObj.workflowId );\r\n statusDropdown.value = stepActionObj.wfStatusId;\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n });\r\n\r\n stepsContainer.appendChild(stepsGrid);\r\n\r\n new Sortable(documentsList, {\r\n handle: '.drag-handle',\r\n draggable: 'li',\r\n onSort: function (evt){ \r\n const stepDocuments = Array.from(documentsList.getElementsByTagName(\"LI\"));\r\n if (stepDocuments){\r\n const orderArray = stepDocuments.map((doc, index) => ({\r\n id: doc.getAttribute(\"data-document-id\"),\r\n order: index.toString()\r\n }));\r\n try {\r\n WorkflowViewerAjax.setDocumentOrderAsync(orderArray);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return stepsContainer;\r\n }\r\n\r\n}","const WorkflowViewerAjax = (() => {\r\n async function deleteDocumentAsync(documentId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflowStepDocument/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"documentId\":\"' + documentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteWorkflowAsync(workflowId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflow/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowId\":\"' + workflowId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteStepAsync(stepId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflowStep/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"stepId\":\"' + stepId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function downloadAttachment(attachmentid, filename) {\r\n try {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/getAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentId = document.createElement('input');\r\n attachmentId.setAttribute('name', 'attachmentId');\r\n attachmentId.setAttribute('value', attachmentid);\r\n attachmentId.id = 'attachmentId';\r\n var attachmentFileName = document.createElement('input');\r\n attachmentFileName.setAttribute('name', 'attachmentId');\r\n attachmentFileName.setAttribute('value', filename);\r\n attachmentFileName.id = 'attachmentId';\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentId);\r\n form.appendChild(attachmentFileName);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n form.submit();\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPeopleNamesAsync(peopleId, TypeId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPeopleNames/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n TypeId: TypeId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getFormTemplatesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFormTemplates/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPlanWorkflowWidgetData(peopleId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanWorkflowWidgetData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n responsiblePartyId: peopleId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkflowsAsync(processId, referenceId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkflows/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"processId\":\"' + processId + '\", \"referenceId\":\"' + referenceId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isWorkflowAutoCreatedAsync(workflowName) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isWorkflowAutoCreated/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowName\":\"' + workflowName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertStepAsync(step) {\r\n try {\r\n const { people, events, ...stepData } = step;\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkflowStep/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n step: stepData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertStepDocumentAsync(stepId, docOrder, description, attachmentType, attachment, documentEdited) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkflowStepDocument/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId,\r\n docOrder,\r\n description,\r\n attachmentType,\r\n attachment: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateStepDocumentAsync(documentId, attachmentType, attachment, documentEdited) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateWorkflowStepDocument/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n documentId,\r\n attachmentType,\r\n attachment: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepDoneDateAsync(stepId, doneDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDoneDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId: stepId,\r\n doneDate: doneDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepDueDateAsync(stepId, dueDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDueDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId: stepId,\r\n dueDate: dueDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setDocumentOrderAsync(documentOrderArray) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDocumentOrder/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n orderArray: documentOrderArray,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepOrderAsync(stepOrderArray) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepOrder/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n orderArray: stepOrderArray,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateStepAsync(step) {\r\n try {\r\n const { people, events, ...stepData } = step;\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateWorkflowStep/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n step: stepData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function processStepEventsAsync(events) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/processWorkflowStepEvent/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n thisEvent: events,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getManualWorkflowList(retrieveData) {\r\n try {\r\n // token\r\n // processId = 2 for annual and 3 for revision\r\n // planId = aka referenceId\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getManualWorkflowList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getManualWorkflowListResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkFlowFormsfromPreviousPlan(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkFlowFormsfromPreviousPlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWorkFlowFormsfromPreviousPlanResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function copyWorkflowtemplateToRecord(retrieveData) {\r\n try {\r\n //token, templateId, peopleId, referenceId, wantedFormIds\r\n //referenceId is isp_consumer_plan_id,\r\n //priorReferenceId\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/copyWorkflowtemplateToRecord/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n const workflowId = result.copyWorkflowtemplateToRecordResult;\r\n return workflowId;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWFwithMissingResponsibleParties(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWFwithMissingResponsibleParties/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWFwithMissingResponsiblePartiesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getResponsiblePartyIdforThisEditStep(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getResponsiblePartyIdforThisEditStep/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getResponsiblePartyIdforThisEditStepResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWFResponsibleParties(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWFResponsibleParties/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWFResponsiblePartiesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateRelationshipResponsiblePartyID(peopleId, WFID, responsiblePartyType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateRelationshipResponsiblePartyID/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n WFID: WFID,\r\n responsiblePartyType: responsiblePartyType,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getResponsiblePartyClassification() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getResponsiblePartyClassification/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getResponsiblePartyClassificationResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteDocumentAsync,\r\n deleteWorkflowAsync,\r\n deleteStepAsync,\r\n downloadAttachment,\r\n getPeopleNamesAsync,\r\n getFormTemplatesAsync,\r\n getPlanWorkflowWidgetData,\r\n getWorkflowsAsync,\r\n isWorkflowAutoCreatedAsync,\r\n insertStepAsync,\r\n insertStepDocumentAsync,\r\n updateStepDocumentAsync,\r\n setStepDoneDateAsync,\r\n setStepDueDateAsync,\r\n setDocumentOrderAsync,\r\n setStepOrderAsync,\r\n updateStepAsync,\r\n processStepEventsAsync,\r\n getManualWorkflowList,\r\n getWorkFlowFormsfromPreviousPlan,\r\n copyWorkflowtemplateToRecord,\r\n getWFResponsibleParties,\r\n updateRelationshipResponsiblePartyID,\r\n getWFwithMissingResponsibleParties,\r\n getResponsiblePartyIdforThisEditStep,\r\n getResponsiblePartyClassification,\r\n };\r\n})();\r\n","const WorkflowViewerComponent = (function () {\r\n let viewerContainer;\r\n let formTemplates;\r\n let peopleId;\r\n\r\n // NEW\r\n //-----------------------------------------\r\n function buildWorkflowComponents(data) {\r\n workflowsComponent = new WorkflowsComponent(data);\r\n return workflowsComponent.render();\r\n }\r\n async function getWorkflowData(processId, referenceId) {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n peopleId = attachmentInputs.dataset.peopleId;\r\n \r\n\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '0');\r\n\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '-1');\r\n\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n\r\n const { getFormTemplatesResult: templates } = await WorkflowViewerAjax.getFormTemplatesAsync();\r\n\r\n workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n templates: templates,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n formTemplates = templates;\r\n\r\n return workflowData;\r\n }\r\n async function getWorkflowDataForRoster(processId, referenceId) {\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(referenceId, '0');\r\n\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(referenceId, '-1');\r\n\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n\r\n const { getFormTemplatesResult: templates } = await WorkflowViewerAjax.getFormTemplatesAsync();\r\n\r\n workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n templates: templates,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n formTemplates = templates;\r\n\r\n return workflowData;\r\n }\r\n\r\n // retrieves templates from function buildWorkflowComponents\r\n getTemplates = () => formTemplates;\r\n\r\n async function loadData(processId, referenceId, fromRoster) {\r\n try {\r\n const data = fromRoster ? await getWorkflowDataForRoster(processId, referenceId) : await getWorkflowData(processId, referenceId);\r\n const viewerContent = buildWorkflowComponents(data);\r\n viewerContainer.appendChild(viewerContent);\r\n } catch (error) {\r\n console.error(error);\r\n viewerContainer.innerHTML = error;\r\n }\r\n }\r\n function buildViewer() {\r\n let container = document.getElementById('workflow-viewer');\r\n\r\n if (container) {\r\n container.remove();\r\n }\r\n\r\n container = document.createElement('div');\r\n container.id = 'workflow-viewer';\r\n\r\n return container;\r\n }\r\n async function get(processId, ref_id, fromRoster) {\r\n if (Object.keys(WorkflowProcess).find(key => WorkflowProcess[key] === processId)) {\r\n viewerContainer = buildViewer();\r\n await loadData(processId, ref_id, fromRoster);\r\n return viewerContainer;\r\n } else {\r\n console.error('Invalid processId');\r\n }\r\n }\r\n\r\n // OLD\r\n //-----------------------------------------\r\n function open(processId, ref_id) {\r\n if (Object.keys(WorkflowProcess).find(key => WorkflowProcess[key] === processId)) {\r\n initializeViewer2();\r\n loadData2(processId, ref_id);\r\n } else {\r\n console.error('Invalid processId');\r\n }\r\n }\r\n\r\n function initializeViewer2() {\r\n // Destroy the workflow viewer component if it exists\r\n if (viewerContainer) {\r\n viewerContainer.remove();\r\n }\r\n viewerContainer = document.createElement('div');\r\n viewerContainer.id = 'workflow-viewer';\r\n }\r\n\r\n async function loadData2(processId, referenceId) {\r\n try {\r\n const data = await getWorkflowData2(processId, referenceId);\r\n let viewerContent = undefined;\r\n viewerContent = buildWorkflowComponents2(data);\r\n viewerContainer.appendChild(viewerContent);\r\n } catch (error) {\r\n console.error(error);\r\n viewerContainer.innerHTML = error;\r\n }\r\n // render the viewer at the top of the page\r\n const actionCenter = DOM.ACTIONCENTER;\r\n const child = actionCenter.firstChild;\r\n actionCenter.insertBefore(viewerContainer, child);\r\n }\r\n\r\n function buildWorkflowComponents2(data) {\r\n workflowsComponent = new WorkflowsComponent(data);\r\n return workflowsComponent.render();\r\n }\r\n\r\n async function getWorkflowData2(processId, referenceId) {\r\n try {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n var peopleId = attachmentInputs.dataset.peopleId;\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '0');\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '-1');\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n const workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n return workflowData;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n return {\r\n get,\r\n open,\r\n getTemplates,\r\n };\r\n})();\r\n","var itConsumerSection = (function () {\r\n // DOM\r\n // ---------------------\r\n var section;\r\n var sectionBody;\r\n var consumerError;\r\n var consumersWrap;\r\n var consumerSections;\r\n // DATA\r\n //---------------------\r\n var activeConsumers = [];\r\n var consumersInvolved;\r\n var consumerInvolvedIdArray;\r\n // Values\r\n // ---------------------\r\n\r\n function clearData() {\r\n consumerFollowUp.clearData();\r\n consumerInjuries.clearData();\r\n consumerIntervention.clearData();\r\n consumerInvolvement.clearData();\r\n consumerReporting.clearData();\r\n consumerReview.clearData();\r\n consumerBehavior.clearData();\r\n activeConsumers = [];\r\n }\r\n function deleteConsumerData(consumerId) {\r\n consumerFollowUp.deleteConsumerData(consumerId);\r\n consumerInjuries.deleteConsumerData(consumerId);\r\n consumerIntervention.deleteConsumerData(consumerId);\r\n consumerInvolvement.deleteConsumerData(consumerId);\r\n consumerReporting.deleteConsumerData(consumerId);\r\n consumerReview.deleteConsumerData(consumerId);\r\n consumerBehavior.deleteConsumerData(consumerId);\r\n }\r\n\r\n function getConsumersInvolved() {\r\n if (consumersInvolved) return [...consumersInvolved];\r\n }\r\n function getConsumersInvolvedIds() {\r\n if (consumerInvolvedIdArray && consumerInvolvedIdArray.length > 0) {\r\n return [...consumerInvolvedIdArray];\r\n }\r\n }\r\n\r\n function showConsumersWrap() {\r\n consumersWrap.classList.add('visible');\r\n consumerSections.classList.remove('visible');\r\n }\r\n function displayCount() {\r\n var count = activeConsumers.length;\r\n var countHolder = section.querySelector('span[data-count=\"consumers\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n function checkForRequiredConsumer() {\r\n if (activeConsumers.length === 0) {\r\n consumerError.classList.remove('hidden');\r\n consumersWrap.classList.remove('visible');\r\n consumerSections.classList.remove('visible');\r\n\r\n incidentCard.toggleSave(true);\r\n return;\r\n }\r\n\r\n consumerError.classList.add('hidden');\r\n consumersWrap.classList.add('visible');\r\n }\r\n function removeConsumerErrors() {\r\n var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n consumerCards.forEach(card => card.classList.remove('error'));\r\n\r\n var cardHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n if (cardHasErrors) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n function showConsumerError(consumerIdArray) {\r\n incidentCard.toggleSave(true);\r\n\r\n var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n\r\n if (consumerIdArray[0] === '%') {\r\n // mark all\r\n // show error \"At least one consumer must have PPI checked.\"\r\n consumerCards.forEach(card => card.classList.add('error'));\r\n return;\r\n }\r\n\r\n consumerCards.forEach(card => {\r\n var cardId = card.dataset.consumerId;\r\n if (consumerIdArray.includes(cardId)) {\r\n card.classList.add('error');\r\n } else {\r\n card.classList.remove('error');\r\n }\r\n });\r\n }\r\n\r\n function moveConsumersToConsumersInvolved(consumers) {\r\n var initPromises = [];\r\n\r\n consumersWrap.classList.add('visible');\r\n\r\n consumers.forEach(consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (activeConsumers.filter(actConsumer => actConsumer.id === consumer.id).length > 0) return;\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumer(clone);\r\n consumersWrap.appendChild(card);\r\n var initPromise = consumerInvolvement.initConsumerData(consumer.id);\r\n initPromises.push(initPromise);\r\n });\r\n\r\n activeConsumers = roster2.getActiveConsumers();\r\n checkForRequiredConsumer();\r\n displayCount();\r\n\r\n Promise.all(initPromises).then(() => {\r\n consumerInvolvement.checkRequiredFields();\r\n });\r\n\r\n // Event when you add a consumer\r\n // 1. Ensure that all required fields are filled in on the details section\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n if (detailSectionHasErrors) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n function removeConsumerFromConsumersInvolved(selectedConsumerId) {\r\n var consumerCard = document.querySelector(\r\n `[data-consumer-id=\"${selectedConsumerId}\"]`,\r\n ).parentElement;\r\n consumersWrap.removeChild(consumerCard);\r\n\r\n consumerSections.classList.remove('visible');\r\n\r\n incidentCard.toggleActionBtns(false);\r\n\r\n roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n deleteConsumerData(selectedConsumerId);\r\n\r\n checkForRequiredConsumer();\r\n consumerInvolvement.checkRequiredFields();\r\n displayCount();\r\n roster2.toggleMiniRosterBtnVisible(true);\r\n\r\n // Event when you remove a consumer\r\n // 1. Ensure that at least one consumer is selected\r\n // 2. Ensure that all required fields are filled in on the details section\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n //var consumerSectionHasErrors = incidentCard.checkforRequiredConsumer();\r\n // var consumerSectionConsumers = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n if (detailSectionHasErrors || activeConsumers.length === 0) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populateConsumersWrap() {\r\n consumerInvolvedIdArray = [];\r\n\r\n consumersInvolved.forEach(c => {\r\n consumerInvolvedIdArray.push({ id: c.consumerId, involvedId: c.consumerInvolvedId });\r\n // build consumer card\r\n var consumer = roster2.buildConsumerCard({\r\n FN: c.firstName,\r\n LN: c.lastName,\r\n id: c.consumerId,\r\n });\r\n // build incident card\r\n var card = buildConsumer(consumer);\r\n consumersWrap.appendChild(card);\r\n // move consumer to avtive list\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n });\r\n\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n consumersWrap.classList.add('visible');\r\n\r\n checkForRequiredConsumer();\r\n consumerInvolvement.checkRequiredFields();\r\n displayCount();\r\n }\r\n\r\n // Consumer Card\r\n //-----------------------------------------------\r\n function buildConsumer(consumerCard) {\r\n function checkInvolvedRequirements() {\r\n const locationId = consumerInvolvement.involvementDataLookup(\r\n consumerCard.dataset.consumerId,\r\n ).locationId;\r\n\r\n const involvementSec = document.querySelector(\"[data-sectionid='5']\");\r\n\r\n if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n involvementSec.classList.add('sectionError');\r\n } else {\r\n involvementSec.classList.remove('sectionError');\r\n }\r\n }\r\n\r\n consumerCard.classList.remove('highlighted');\r\n\r\n var cardWrap = document.createElement('div');\r\n cardWrap.classList.add('incidentCard__consumer');\r\n\r\n // build card\r\n cardWrap.appendChild(consumerCard);\r\n\r\n // card event\r\n cardWrap.addEventListener('click', function (event) {\r\n if (event.target === consumerCard) {\r\n incidentCard.toggleActionBtns(true);\r\n consumersWrap.classList.remove('visible');\r\n consumerSections.classList.add('visible');\r\n consumerSubSections.showMenu(consumerCard);\r\n checkInvolvedRequirements();\r\n if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(false);\r\n }\r\n });\r\n\r\n return cardWrap;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, consumersInvolvedData) {\r\n var opts = options;\r\n consumersInvolved = consumersInvolvedData;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection', 'visible');\r\n section.setAttribute('data-card-page', 'consumers');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Consumers Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n consumerError = document.createElement('p');\r\n consumerError.classList.add('consumerError');\r\n consumerError.innerHTML = 'You must select at least one consumer';\r\n\r\n consumersWrap = document.createElement('div');\r\n consumersWrap.classList.add('consumersWrap');\r\n\r\n consumerSections = consumerSubSections.build(consumersInvolved);\r\n\r\n sectionBody.appendChild(consumerError);\r\n sectionBody.appendChild(consumersWrap);\r\n sectionBody.appendChild(consumerSections);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (consumersInvolved) {\r\n populateConsumersWrap();\r\n } else {\r\n consumerInvolvedIdArray = undefined;\r\n }\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n addConsumers: moveConsumersToConsumersInvolved,\r\n removeConsumer: removeConsumerFromConsumersInvolved,\r\n showConsumersWrap,\r\n getConsumersInvolved,\r\n getConsumersInvolvedIds,\r\n removeConsumerErrors,\r\n showConsumerError,\r\n clearData,\r\n };\r\n})();\r\nvar consumerSubSections = (function () {\r\n // DOM\r\n //---------------------\r\n var sectionsContainer;\r\n var sectionsTopBar;\r\n var backBtn;\r\n var sectionsMenu;\r\n //* sub sections\r\n var followUpSection;\r\n var injuriesSection;\r\n var interventionSection;\r\n var involvementSection;\r\n var reportingSection;\r\n var reviewSection;\r\n var behaviorSection;\r\n // DATA\r\n //---------------------\r\n // var consumersInvolved;\r\n var sections = [\r\n { id: 0, name: 'Remove Consumer' },\r\n { id: 1, name: 'Behavior Details' },\r\n { id: 2, name: 'Follow Up' },\r\n { id: 3, name: 'Injuries' },\r\n { id: 4, name: 'Intervention' },\r\n { id: 5, name: 'Involvement' },\r\n { id: 6, name: 'Reporting' },\r\n { id: 7, name: 'Review' },\r\n ];\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n\r\n // Hide/Show\r\n //-----------------------------------------------\r\n function handleBackButtonClick() {\r\n var visibleSection = sectionsContainer.querySelector('.consumerSections__section.visible');\r\n\r\n if (visibleSection) {\r\n var visibleSectionHome = visibleSection.querySelector('.consumerSections__section__home');\r\n if (visibleSectionHome) {\r\n visibleSectionHome.classList.remove('hidden'); // reshow home page\r\n }\r\n visibleSection.classList.remove('visible'); // hide section\r\n sectionsMenu.classList.add('visible'); // show menu\r\n } else {\r\n incidentCard.toggleActionBtns(false);\r\n itConsumerSection.showConsumersWrap();\r\n if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(true);\r\n }\r\n }\r\n function hideBackBtn() {\r\n backBtn.classList.add('hidden');\r\n }\r\n function showBackBtn() {\r\n backBtn.classList.remove('hidden');\r\n }\r\n function showSectionMenu() {\r\n sectionsMenu.classList.add('visible');\r\n }\r\n function showSection(sectionName) {\r\n var targetSection;\r\n\r\n switch (sectionName) {\r\n case 'Follow Up': {\r\n targetSection = followUpSection;\r\n break;\r\n }\r\n case 'Injuries': {\r\n targetSection = injuriesSection;\r\n break;\r\n }\r\n case 'Intervention': {\r\n targetSection = interventionSection;\r\n break;\r\n }\r\n case 'Involvement': {\r\n targetSection = involvementSection;\r\n break;\r\n }\r\n case 'Reporting': {\r\n targetSection = reportingSection;\r\n break;\r\n }\r\n case 'Review': {\r\n targetSection = reviewSection;\r\n break;\r\n }\r\n case 'Behavior Details': {\r\n targetSection = behaviorSection;\r\n break;\r\n }\r\n }\r\n\r\n sectionsMenu.classList.remove('visible');\r\n targetSection.classList.add('visible');\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populateSection(sectionName) {\r\n incidentId = incident.getIncidentId();\r\n\r\n if (incidentId) {\r\n switch (sectionName) {\r\n case 'Follow Up': {\r\n incidentTrackingAjax.getitConsumerFollowUps(selectedConsumerId, incidentId, res => {\r\n consumerFollowUp.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Injuries': {\r\n incidentTrackingAjax.getitConsumerInjuries(selectedConsumerId, incidentId, res => {\r\n consumerInjuries.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Intervention': {\r\n incidentTrackingAjax.getitConsumerInterventions(selectedConsumerId, incidentId, res => {\r\n consumerIntervention.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Involvement': {\r\n consumerInvolvement.populate(selectedConsumerId);\r\n break;\r\n }\r\n case 'Reporting': {\r\n incidentTrackingAjax.getitConsumerReporting(selectedConsumerId, incidentId, res => {\r\n consumerReporting.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Review': {\r\n incidentTrackingAjax.getitConsumerReviews(selectedConsumerId, incidentId, res => {\r\n consumerReview.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n case 'Behavior Details': {\r\n incidentTrackingAjax.getitConsumerBehavior(selectedConsumerId, incidentId, res => {\r\n consumerBehavior.populate(res, selectedConsumerId);\r\n });\r\n break;\r\n }\r\n }\r\n } else {\r\n switch (sectionName) {\r\n case 'Follow Up': {\r\n consumerFollowUp.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Injuries': {\r\n consumerInjuries.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Intervention': {\r\n consumerIntervention.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Involvement': {\r\n consumerInvolvement.populate(selectedConsumerId);\r\n break;\r\n }\r\n case 'Reporting': {\r\n consumerReporting.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Review': {\r\n consumerReview.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n case 'Behavior Details': {\r\n consumerBehavior.populate(null, selectedConsumerId);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Top Bar\r\n //-----------------------------------------------\r\n function buildTopBar() {\r\n var topBar = document.createElement('div');\r\n topBar.classList.add('topBar');\r\n\r\n backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n classNames: ['backBtn'],\r\n callback: handleBackButtonClick,\r\n });\r\n\r\n topBar.appendChild(backBtn);\r\n\r\n return topBar;\r\n }\r\n\r\n // Menu\r\n //-----------------------------------------------\r\n function showMenu(consumerCard) {\r\n selectedConsumerId = consumerCard.dataset.consumerId;\r\n\r\n sectionsMenu.classList.add('visible');\r\n\r\n // remove old consumer card\r\n var oldCard = sectionsTopBar.querySelector('.consumerCard');\r\n if (oldCard) sectionsTopBar.removeChild(oldCard);\r\n\r\n // add selected consumer card\r\n var cardClone = consumerCard.cloneNode(true);\r\n sectionsTopBar.appendChild(cardClone);\r\n }\r\n function buildMenu() {\r\n var menu = document.createElement('div');\r\n menu.classList.add('consumerSections__menu', 'visible');\r\n\r\n sections.forEach(sec => {\r\n var sectionItem = document.createElement('div');\r\n sectionItem.classList.add('menuItem');\r\n sectionItem.innerHTML = sec.name;\r\n sectionItem.setAttribute('data-sectionId', sec.id);\r\n if (sec.name === 'Remove Consumer') sectionItem.classList.add('removeConsumer');\r\n menu.appendChild(sectionItem);\r\n });\r\n\r\n menu.addEventListener('click', e => {\r\n var targetSectionName = e.target.innerHTML;\r\n\r\n if (targetSectionName === 'Remove Consumer') {\r\n itConsumerSection.removeConsumer(selectedConsumerId);\r\n } else {\r\n showSection(targetSectionName);\r\n populateSection(targetSectionName);\r\n }\r\n });\r\n\r\n return menu;\r\n }\r\n\r\n // Main\r\n //-----------------------------------------------\r\n function build(consumersInvolvedData) {\r\n sectionsContainer = document.createElement('div');\r\n sectionsContainer.classList.add('consumerSections');\r\n\r\n sectionsTopBar = buildTopBar();\r\n\r\n var sectionsInner = document.createElement('div');\r\n sectionsInner.classList.add('consumerSections__inner');\r\n\r\n sectionsMenu = buildMenu();\r\n followUpSection = consumerFollowUp.build();\r\n injuriesSection = consumerInjuries.build();\r\n interventionSection = consumerIntervention.build();\r\n involvementSection = consumerInvolvement.build(consumersInvolvedData);\r\n reportingSection = consumerReporting.build();\r\n reviewSection = consumerReview.build();\r\n behaviorSection = consumerBehavior.build();\r\n\r\n sectionsInner.appendChild(sectionsMenu);\r\n sectionsInner.appendChild(behaviorSection);\r\n sectionsInner.appendChild(followUpSection);\r\n sectionsInner.appendChild(injuriesSection);\r\n sectionsInner.appendChild(interventionSection);\r\n sectionsInner.appendChild(involvementSection);\r\n sectionsInner.appendChild(reportingSection);\r\n sectionsInner.appendChild(reviewSection);\r\n\r\n sectionsContainer.appendChild(sectionsTopBar);\r\n sectionsContainer.appendChild(sectionsInner);\r\n\r\n return sectionsContainer;\r\n }\r\n\r\n return {\r\n build,\r\n showMenu,\r\n showSectionMenu,\r\n showBackBtn,\r\n hideBackBtn,\r\n };\r\n})();\r\nvar consumerFollowUp = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var followUpHome;\r\n var newFollowUpBtn;\r\n var followUpReviewTable;\r\n //*form\r\n var followUpForm;\r\n var followUpTypeDropdown;\r\n var personResponsibleInput;\r\n var dueDateInput;\r\n var completedDateInput;\r\n var notesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var followUpsData; // save/update data\r\n var followUpsDeleteData;\r\n var followUpTypes;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedFollowUpId;\r\n //*form default values\r\n var dueDate;\r\n var dateCompleted;\r\n var followUpTypeId;\r\n var personResponsible;\r\n var followUpNote;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return followUpsData;\r\n }\r\n function getDataForDelete() {\r\n return followUpsDeleteData;\r\n }\r\n function clearData() {\r\n followUpsData = undefined;\r\n followUpsDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedFollowUpId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n // deletes all follow ups\r\n if (followUpsData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newFollowUpsData } = followUpsData;\r\n followUpsData = newFollowUpsData;\r\n\r\n if (!followUpsDeleteData[consumerId]) {\r\n followUpsDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerFollowUpData() {\r\n if (!selectedFollowUpId.includes('new')) {\r\n var deletedFollowUp = followUpsData[selectedConsumerId][selectedFollowUpId];\r\n if (!followUpsDeleteData[selectedConsumerId]) followUpsDeleteData[selectedConsumerId] = {};\r\n followUpsDeleteData[selectedConsumerId][selectedFollowUpId] = deletedFollowUp;\r\n }\r\n\r\n delete followUpsData[selectedConsumerId][selectedFollowUpId];\r\n\r\n selectedFollowUpId = undefined;\r\n var form = section.querySelector('.followUpForm');\r\n section.removeChild(form);\r\n followUpHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getitConsumerFollowUpTypes(function (res) {\r\n followUpTypes = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerFollowUpData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var followUpTypeSelect = followUpTypeDropdown.querySelector('.dropdown__select');\r\n if (!followUpTypeSelect.value || followUpTypeSelect.value === '%') {\r\n followUpTypeDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n followUpTypeDropdown.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n dueDate = undefined;\r\n dateCompleted = undefined;\r\n followUpTypeId = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n personResponsible = undefined;\r\n followUpNote = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n dueDate = formData.dueDate;\r\n dateCompleted = formData.dateCompleted;\r\n followUpTypeId = formData.followUpTypeId;\r\n personResponsible = formData.personResponsible;\r\n followUpNote = formData.notes;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpFollowUpTypeId;\r\n var tmpPersonResponsible;\r\n var tmpDueDate;\r\n var tmpCompletedDate;\r\n var tmpNote;\r\n\r\n followUpTypeDropdown.addEventListener('change', e => {\r\n tmpFollowUpTypeId = e.target.value;\r\n checkRequiredFields();\r\n });\r\n personResponsibleInput.addEventListener('change', e => {\r\n tmpPersonResponsible = e.target.value;\r\n });\r\n dueDateInput.addEventListener('change', e => {\r\n tmpDueDate = e.target.value;\r\n });\r\n completedDateInput.addEventListener('change', e => {\r\n tmpCompletedDate = e.target.value;\r\n });\r\n notesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!followUpsData[selectedConsumerId]) {\r\n followUpsData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!followUpsData[selectedConsumerId][selectedFollowUpId]) {\r\n var keys = Object.keys(followUpsData[selectedConsumerId]);\r\n selectedFollowUpId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n followUpsData[selectedConsumerId][selectedFollowUpId] = {\r\n dateCompleted: '',\r\n dueDate: '',\r\n followUpTypeId: '',\r\n notes: '',\r\n personResponsible: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpCompletedDate ||\r\n tmpDueDate ||\r\n tmpFollowUpTypeId ||\r\n tmpNote ||\r\n tmpPersonResponsible\r\n ) {\r\n followUpsData[selectedConsumerId][selectedFollowUpId].updated = true;\r\n }\r\n\r\n if (tmpCompletedDate)\r\n followUpsData[selectedConsumerId][selectedFollowUpId].dateCompleted = tmpCompletedDate;\r\n if (tmpDueDate) followUpsData[selectedConsumerId][selectedFollowUpId].dueDate = tmpDueDate;\r\n if (tmpFollowUpTypeId)\r\n followUpsData[selectedConsumerId][selectedFollowUpId].followUpTypeId = tmpFollowUpTypeId;\r\n if (tmpNote) followUpsData[selectedConsumerId][selectedFollowUpId].notes = tmpNote;\r\n if (tmpPersonResponsible)\r\n followUpsData[selectedConsumerId][selectedFollowUpId].personResponsible =\r\n tmpPersonResponsible;\r\n\r\n selectedFollowUpId = undefined;\r\n\r\n var form = section.querySelector('.followUpForm');\r\n section.removeChild(form);\r\n followUpHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedFollowUpId = undefined;\r\n var form = section.querySelector('.followUpForm');\r\n section.removeChild(form);\r\n followUpHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildFollowUpTypeDropdown() {\r\n var opts = {\r\n label: 'Follow Up Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var followUptypeDrop = dropdown.build(opts);\r\n\r\n var data = followUpTypes.map(fu => {\r\n return {\r\n value: fu.itFollowUpTypeId,\r\n text: fu.followUpTypeName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(followUptypeDrop, data, followUpTypeId);\r\n\r\n return followUptypeDrop;\r\n }\r\n function buildPersonResponsibleInput() {\r\n var opts = {\r\n label: 'Person Responsible',\r\n type: 'text',\r\n style: 'secondary',\r\n value: personResponsible,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var personInput = input.build(opts);\r\n\r\n return personInput;\r\n }\r\n function buildDueDateInput() {\r\n var inputOptions = {\r\n label: 'Due Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: '',\r\n };\r\n\r\n if (dueDate) inputOptions.value = dueDate;\r\n if (isEdit && formReadOnly) {\r\n inputOptions.readonly = true;\r\n }\r\n\r\n var dateInput = input.build(inputOptions);\r\n\r\n return dateInput;\r\n }\r\n function buildCompletedDateInput() {\r\n var inputOptions = {\r\n label: 'Date Completed',\r\n type: 'date',\r\n style: 'secondary',\r\n value: '',\r\n };\r\n\r\n if (dateCompleted) inputOptions.value = dateCompleted;\r\n if (isEdit && formReadOnly) {\r\n inputOptions.readonly = true;\r\n }\r\n\r\n var dateInput = input.build(inputOptions);\r\n\r\n return dateInput;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Note',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: followUpNote,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var noteInput = input.build(opts);\r\n\r\n return noteInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewFollowUpForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('followUpForm');\r\n\r\n followUpTypeDropdown = buildFollowUpTypeDropdown();\r\n personResponsibleInput = buildPersonResponsibleInput();\r\n dueDateInput = buildDueDateInput();\r\n completedDateInput = buildCompletedDateInput();\r\n notesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(followUpTypeDropdown);\r\n form.appendChild(personResponsibleInput);\r\n form.appendChild(dueDateInput);\r\n form.appendChild(completedDateInput);\r\n form.appendChild(notesInput);\r\n form.appendChild(formButtons);\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n followUpHome.classList.add('hidden');\r\n\r\n followUpForm = buildNewFollowUpForm();\r\n section.appendChild(followUpForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = followUpReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!followUpsData) return;\r\n if (!followUpsData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(followUpsData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var followUpData = followUpsData[selectedConsumerId][key];\r\n\r\n var filterFollowUpTypes = followUpTypes.filter(\r\n type => type.itFollowUpTypeId === followUpData.followUpTypeId,\r\n );\r\n var followUpType = filterFollowUpTypes[0] ? filterFollowUpTypes[0].followUpTypeName : '';\r\n var personResponsible = followUpData.personResponsible;\r\n var dueDate = followUpData.dueDate ? followUpData.dueDate.split(' ')[0] : '';\r\n dueDate = dueDate ? UTIL.formatDateFromIso(dueDate) : dueDate;\r\n\r\n tableData.push({\r\n id: key,\r\n values: [followUpType, personResponsible, dueDate],\r\n });\r\n });\r\n\r\n table.populate(followUpReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerFollowUpTable',\r\n columnHeadings: ['Follow Up Type', 'Person Responsible', 'Due Date'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (\r\n event.target.classList.contains('table__row') &&\r\n !event.target.classList.contains('header')\r\n ) {\r\n selectedFollowUpId = event.target.id;\r\n setFormDataDefaults(followUpsData[selectedConsumerId][selectedFollowUpId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n followUpsData = {};\r\n followUpsDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewFollowUpBtn() {\r\n var btn = button.build({\r\n text: 'Add New Follow Up',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'followUpSection');\r\n\r\n followUpHome = document.createElement('div');\r\n followUpHome.classList.add('consumerSections__section__home');\r\n\r\n newFollowUpBtn = buildAddNewFollowUpBtn();\r\n followUpReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) followUpHome.appendChild(newFollowUpBtn);\r\n followUpHome.appendChild(followUpReviewTable);\r\n\r\n section.appendChild(followUpHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!followUpsData[selectedConsumerId]) {\r\n followUpsData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!followUpsData[selectedConsumerId][d.itConsumerFollowUpId]) {\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId] = d;\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].updated = false;\r\n\r\n // format dates\r\n var dateTimeCompleted =\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dateCompleted;\r\n var dueDateTime = followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dueDate;\r\n dateCompleted = dateTimeCompleted ? dateTimeCompleted.split(' ')[0] : null;\r\n dueDate = dueDateTime ? dueDateTime.split(' ')[0] : null;\r\n\r\n if (dateCompleted) {\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dateCompleted =\r\n UTIL.formatDateToIso(dateCompleted);\r\n }\r\n if (dueDate) {\r\n followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dueDate =\r\n UTIL.formatDateToIso(dueDate);\r\n }\r\n }\r\n });\r\n }\r\n console.table(followUpsData);\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerInjuries = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var injuriesHome;\r\n var newInjuryBtn;\r\n var injuriesReviewTable;\r\n //*form\r\n var injuryLocationDropdown;\r\n var injuryTypeDropdown;\r\n var checkedByNurseCheckbox;\r\n var detailsInput;\r\n var treatmentInput;\r\n var dateCheckedInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var injuryData; // save/update data\r\n var injuryDeleteData;\r\n var injuryLocations;\r\n var injuryTypes;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedInjuryId;\r\n //*form values\r\n var injuryLocationId;\r\n var injuryTypeId;\r\n var checkedByNurse;\r\n var details;\r\n var treatment;\r\n var dateChecked;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return injuryData;\r\n }\r\n function getDataForDelete() {\r\n return injuryDeleteData;\r\n }\r\n function clearData() {\r\n injuryData = undefined;\r\n injuryDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedInjuryId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n if (injuryData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newInjuryData } = injuryData;\r\n injuryData = newInjuryData;\r\n\r\n if (!injuryDeleteData[consumerId]) {\r\n injuryDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerInjuryData() {\r\n if (!selectedInjuryId.includes('new')) {\r\n var deletedInjury = injuryData[selectedConsumerId][selectedInjuryId];\r\n if (!injuryDeleteData[selectedConsumerId]) injuryDeleteData[selectedConsumerId] = {};\r\n injuryDeleteData[selectedConsumerId][selectedInjuryId] = deletedInjury;\r\n }\r\n\r\n delete injuryData[selectedConsumerId][selectedInjuryId];\r\n\r\n selectedInjuryId = undefined;\r\n var form = section.querySelector('.injuryForm');\r\n section.removeChild(form);\r\n injuriesHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getInjuryLocationsDropdown(function (locations) {\r\n injuryLocations = locations;\r\n\r\n incidentTrackingAjax.getInjuryTypesDropdown(function (types) {\r\n injuryTypes = types;\r\n });\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerInjuryData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var injuryLocationSelect = injuryLocationDropdown.querySelector('.dropdown__select');\r\n var injuryTypeSelect = injuryTypeDropdown.querySelector('.dropdown__select');\r\n\r\n if (!injuryLocationSelect.value || injuryLocationSelect.value === '%') {\r\n injuryLocationDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n injuryLocationDropdown.classList.remove('error');\r\n }\r\n\r\n if (!injuryTypeSelect.value || injuryTypeSelect.value === '%') {\r\n injuryTypeDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n injuryTypeDropdown.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n injuryLocationId = undefined;\r\n injuryTypeId = undefined;\r\n checkedByNurse = undefined;\r\n details = undefined;\r\n treatment = undefined;\r\n dateChecked = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n injuryLocationId = formData.injuryLocationId;\r\n injuryTypeId = formData.injuryTypeId;\r\n checkedByNurse = formData.checkedByNurse;\r\n details = formData.injuryDetails;\r\n treatment = formData.injuryTreatment;\r\n dateChecked = formData.checkedDate;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpInjuryLocation;\r\n var tmpInjuryType;\r\n var tmpCheckedBy;\r\n var tmpDetails;\r\n var tmpTreatment;\r\n var tmpDateChecked;\r\n\r\n injuryLocationDropdown.addEventListener('change', e => {\r\n tmpInjuryLocation = e.target.value;\r\n checkRequiredFields();\r\n });\r\n injuryTypeDropdown.addEventListener('change', e => {\r\n tmpInjuryType = e.target.value;\r\n checkRequiredFields();\r\n });\r\n checkedByNurseCheckbox.addEventListener('change', e => {\r\n tmpCheckedBy = e.target.checked ? 'Y' : 'N';\r\n });\r\n detailsInput.addEventListener('change', e => {\r\n tmpDetails = e.target.value;\r\n });\r\n treatmentInput.addEventListener('change', e => {\r\n tmpTreatment = e.target.value;\r\n });\r\n dateCheckedInput.addEventListener('change', e => {\r\n tmpDateChecked = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!injuryData[selectedConsumerId]) {\r\n injuryData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!injuryData[selectedConsumerId][selectedInjuryId]) {\r\n var keys = Object.keys(injuryData[selectedConsumerId]);\r\n selectedInjuryId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n injuryData[selectedConsumerId][selectedInjuryId] = {\r\n injuryLocationId: '',\r\n injuryTypeId: '',\r\n checkedByNurse: 'N',\r\n injuryDetails: '',\r\n injuryTreatment: '',\r\n checkedDate: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpInjuryLocation ||\r\n tmpInjuryType ||\r\n tmpCheckedBy ||\r\n tmpDetails ||\r\n tmpTreatment ||\r\n tmpDateChecked\r\n ) {\r\n injuryData[selectedConsumerId][selectedInjuryId].updated = true;\r\n }\r\n\r\n if (tmpInjuryLocation)\r\n injuryData[selectedConsumerId][selectedInjuryId].injuryLocationId = tmpInjuryLocation;\r\n if (tmpInjuryType)\r\n injuryData[selectedConsumerId][selectedInjuryId].injuryTypeId = tmpInjuryType;\r\n if (tmpCheckedBy)\r\n injuryData[selectedConsumerId][selectedInjuryId].checkedByNurse = tmpCheckedBy;\r\n if (tmpDetails) injuryData[selectedConsumerId][selectedInjuryId].injuryDetails = tmpDetails;\r\n if (tmpTreatment)\r\n injuryData[selectedConsumerId][selectedInjuryId].injuryTreatment = tmpTreatment;\r\n if (tmpDateChecked)\r\n injuryData[selectedConsumerId][selectedInjuryId].checkedDate = tmpDateChecked;\r\n\r\n selectedInjuryId = undefined;\r\n\r\n var form = section.querySelector('.injuryForm');\r\n section.removeChild(form);\r\n injuriesHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedInjuryId = undefined;\r\n var form = section.querySelector('.injuryForm');\r\n section.removeChild(form);\r\n injuriesHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildInjuryLocationDropdown() {\r\n var opts = {\r\n label: 'Injury Location',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iLocDrop = dropdown.build(opts);\r\n\r\n var data = injuryLocations.map(loc => {\r\n return {\r\n value: loc.injuryLocationId,\r\n text: loc.injuryLocation,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(iLocDrop, data, injuryLocationId);\r\n\r\n return iLocDrop;\r\n }\r\n function buildInjuryTypeDropdown() {\r\n var opts = {\r\n label: 'Injury Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iTypeDrop = dropdown.build(opts);\r\n\r\n var data = injuryTypes.map(type => {\r\n return {\r\n value: type.injuryTypeId,\r\n text: type.injuryType,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(iTypeDrop, data, injuryTypeId);\r\n\r\n return iTypeDrop;\r\n }\r\n function buildCheckedByCheckbox() {\r\n var opts = {\r\n text: 'Checked By Nurse',\r\n isChecked: checkedByNurse === 'Y' ? true : false,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var checkbox = input.buildCheckbox(opts);\r\n\r\n return checkbox;\r\n }\r\n function buildDetailsInput() {\r\n var opts = {\r\n label: 'Details',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: details,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var dInput = input.build(opts);\r\n\r\n return dInput;\r\n }\r\n function buildTreatmentInput() {\r\n var opts = {\r\n label: 'Treatment',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: treatment,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var tInput = input.build(opts);\r\n\r\n return tInput;\r\n }\r\n function buildDateCheckedInput() {\r\n var opts = {\r\n label: 'Date Checked',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateChecked,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var dcInput = input.build(opts);\r\n\r\n return dcInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewInjuryForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('injuryForm');\r\n\r\n injuryLocationDropdown = buildInjuryLocationDropdown();\r\n injuryTypeDropdown = buildInjuryTypeDropdown();\r\n checkedByNurseCheckbox = buildCheckedByCheckbox();\r\n detailsInput = buildDetailsInput();\r\n treatmentInput = buildTreatmentInput();\r\n dateCheckedInput = buildDateCheckedInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(injuryLocationDropdown);\r\n form.appendChild(injuryTypeDropdown);\r\n form.appendChild(checkedByNurseCheckbox);\r\n form.appendChild(detailsInput);\r\n form.appendChild(treatmentInput);\r\n form.appendChild(dateCheckedInput);\r\n form.appendChild(formButtons);\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n injuriesHome.classList.add('hidden');\r\n\r\n var injuryForm = buildNewInjuryForm();\r\n section.appendChild(injuryForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = injuriesReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!injuryData) return;\r\n if (!injuryData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(injuryData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = injuryData[selectedConsumerId][key];\r\n var filteredLocations = injuryLocations.filter(\r\n iLoc => iLoc.injuryLocationId === data.injuryLocationId,\r\n );\r\n var filteredTypes = injuryTypes.filter(iType => iType.injuryTypeId === data.injuryTypeId);\r\n var injuryLocation = filteredLocations[0].injuryLocation;\r\n var injuryType = filteredTypes[0].injuryType;\r\n var nurseChecked = data.checkedByNurse === 'Y' ? 'Yes' : 'No';\r\n\r\n tableData.push({\r\n id: key,\r\n values: [injuryLocation, injuryType, nurseChecked],\r\n });\r\n });\r\n\r\n table.populate(injuriesReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerInjuriesTable',\r\n columnHeadings: ['Injury Location', 'Injury Type', 'Checked By Nurse'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (\r\n event.target.classList.contains('table__row') &&\r\n !event.target.classList.contains('header')\r\n ) {\r\n selectedInjuryId = event.target.id;\r\n setFormDataDefaults(injuryData[selectedConsumerId][selectedInjuryId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n injuryData = {};\r\n injuryDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewInjuryBtn() {\r\n var btn = button.build({\r\n text: 'Add New Injury',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'injuriesSection');\r\n\r\n injuriesHome = document.createElement('div');\r\n injuriesHome.classList.add('consumerSections__section__home');\r\n\r\n newInjuryBtn = buildAddNewInjuryBtn();\r\n injuriesReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) injuriesHome.appendChild(newInjuryBtn);\r\n injuriesHome.appendChild(injuriesReviewTable);\r\n\r\n section.appendChild(injuriesHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!injuryData[selectedConsumerId]) {\r\n injuryData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!injuryData[selectedConsumerId][d.itConsumerInjuryId]) {\r\n injuryData[selectedConsumerId][d.itConsumerInjuryId] = d;\r\n injuryData[selectedConsumerId][d.itConsumerInjuryId].updated = false;\r\n\r\n // format dates\r\n var dateChecked = injuryData[selectedConsumerId][d.itConsumerInjuryId].checkedDate;\r\n dateChecked = dateChecked ? dateChecked.split(' ')[0] : null;\r\n\r\n if (dateChecked) {\r\n injuryData[selectedConsumerId][d.itConsumerInjuryId].checkedDate =\r\n UTIL.formatDateToIso(dateChecked);\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerIntervention = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var interventionHome;\r\n var newInterventionBtn;\r\n var interventionReviewTable;\r\n //*form\r\n var interventionTypeDropdown;\r\n var startTimeInput;\r\n var endTimeInput;\r\n var totalTimeInput;\r\n var aversiveCheckbox;\r\n var notesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var interventionData; // save/update data\r\n var interventionDeleteData;\r\n var interventionTypes;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedInterventionId;\r\n //*form values\r\n var interventionTypeId;\r\n var startTime;\r\n var endTime;\r\n var timeLength;\r\n var aversive;\r\n var note;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function calculateTotalHours(dirtyStart, dirtyEnd) {\r\n // must be military time\r\n if (dirtyStart === '' || dirtyEnd === '' || !dirtyStart || !dirtyEnd) {\r\n return;\r\n }\r\n\r\n var startTime = dirtyStart.split(':');\r\n var endTime = dirtyEnd.split(':');\r\n\r\n var tempDate = new Date();\r\n var year = tempDate.getFullYear();\r\n var month = tempDate.getMonth();\r\n var day = tempDate.getDate();\r\n\r\n var startDate = new Date(year, month, day, startTime[0], startTime[1]);\r\n var endDate;\r\n if (dirtyEnd === '00:00') {\r\n endDate = new Date(year, month, day + 1, endTime[0], endTime[1]);\r\n } else {\r\n endDate = new Date(year, month, day, endTime[0], endTime[1]);\r\n }\r\n\r\n var timeDiff = endDate - startDate;\r\n var hoursDiff = Math.floor((timeDiff % 86400000) / 3600000);\r\n var minutesDiff = Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n\r\n return `${UTIL.leadingZero(hoursDiff)}:${UTIL.leadingZero(minutesDiff)}`;\r\n }\r\n function calculateTimeLength() {\r\n var stInput = startTimeInput.querySelector('input');\r\n var etInput = endTimeInput.querySelector('input');\r\n var ttInput = totalTimeInput.querySelector('input');\r\n\r\n var sTime = stInput.value;\r\n var eTime = etInput.value;\r\n\r\n if (!sTime || !eTime) {\r\n if (!sTime) startTimeInput.classList.remove('error');\r\n if (!eTime) endTimeInput.classList.remove('error');\r\n if (!sTime && !eTime) saveBtn.classList.remove('disabled');\r\n return null;\r\n }\r\n\r\n var totalTime = calculateTotalHours(sTime, eTime);\r\n\r\n if (totalTime.search('-') === -1) {\r\n ttInput.value = totalTime;\r\n startTimeInput.classList.remove('error');\r\n endTimeInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n return totalTime;\r\n } else {\r\n ttInput.value = '';\r\n startTimeInput.classList.add('error');\r\n endTimeInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n return null;\r\n }\r\n }\r\n\r\n function getDataForSave() {\r\n return interventionData;\r\n }\r\n function getDataForDelete() {\r\n return interventionDeleteData;\r\n }\r\n function clearData() {\r\n interventionData = undefined;\r\n interventionDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedInterventionId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n if (interventionData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newInterventionData } = interventionData;\r\n interventionData = newInterventionData;\r\n\r\n if (!interventionDeleteData[consumerId]) {\r\n interventionDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerInterventionData() {\r\n if (!selectedInterventionId.includes('new')) {\r\n var deletedIntervention = interventionData[selectedConsumerId][selectedInterventionId];\r\n if (!interventionDeleteData[selectedConsumerId])\r\n interventionDeleteData[selectedConsumerId] = {};\r\n interventionDeleteData[selectedConsumerId][selectedInterventionId] = deletedIntervention;\r\n }\r\n\r\n delete interventionData[selectedConsumerId][selectedInterventionId];\r\n\r\n selectedInterventionId = undefined;\r\n var form = section.querySelector('.interventionForm');\r\n section.removeChild(form);\r\n interventionHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getInterventionTypesDropdown(function (res) {\r\n interventionTypes = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerInterventionData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var interventionTypeSelect = interventionTypeDropdown.querySelector('.dropdown__select');\r\n if (!interventionTypeSelect.value || interventionTypeSelect.value === '%') {\r\n interventionTypeDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n interventionTypeDropdown.classList.remove('error');\r\n }\r\n\r\n //var errors = [...followUpForm.querySelectorAll('.error')];\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n interventionTypeId = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n timeLength = undefined;\r\n aversive = undefined;\r\n note = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n var sTime = formData.startTime.split(':');\r\n var eTime = formData.stopTime.split(':');\r\n var tTime = formData.timeLength.split(':');\r\n\r\n interventionTypeId = formData.interventionType;\r\n startTime = `${sTime[0]}:${sTime[1]}`;\r\n endTime = `${eTime[0]}:${eTime[1]}`;\r\n timeLength = `${tTime[0]}:${tTime[1]}`;\r\n aversive = formData.aversive;\r\n note = formData.interventionNotes;\r\n lastUpdatedBy = formData.lastUpdatedBy;\r\n lastUpdatedOn = formData.lastUpdatedOn;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpInterventionType;\r\n var tmpStartTime;\r\n var tmpEndTime;\r\n var tmpTimeLength;\r\n var tmpAversive;\r\n var tmpNote;\r\n\r\n interventionTypeDropdown.addEventListener('change', e => {\r\n tmpInterventionType = e.target.value;\r\n checkRequiredFields();\r\n });\r\n startTimeInput.addEventListener('change', e => {\r\n tmpStartTime = e.target.value;\r\n tmpTimeLength = calculateTimeLength();\r\n });\r\n endTimeInput.addEventListener('change', e => {\r\n tmpEndTime = e.target.value;\r\n tmpTimeLength = calculateTimeLength();\r\n });\r\n aversiveCheckbox.addEventListener('change', e => {\r\n tmpAversive = e.target.checked ? 'Y' : 'N';\r\n });\r\n notesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!interventionData[selectedConsumerId]) {\r\n interventionData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!interventionData[selectedConsumerId][selectedInterventionId]) {\r\n var keys = Object.keys(interventionData[selectedConsumerId]);\r\n selectedInterventionId =\r\n keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n interventionData[selectedConsumerId][selectedInterventionId] = {\r\n interventionType: '',\r\n startTime: '',\r\n stopTime: '',\r\n timeLength: '',\r\n aversive: '',\r\n interventionNotes: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpInterventionType ||\r\n tmpStartTime ||\r\n tmpEndTime ||\r\n tmpTimeLength ||\r\n tmpAversive ||\r\n tmpNote\r\n ) {\r\n interventionData[selectedConsumerId][selectedInterventionId].updated = true;\r\n }\r\n\r\n if (tmpInterventionType)\r\n interventionData[selectedConsumerId][selectedInterventionId].interventionType =\r\n tmpInterventionType;\r\n if (tmpStartTime)\r\n interventionData[selectedConsumerId][selectedInterventionId].startTime = tmpStartTime;\r\n if (tmpEndTime)\r\n interventionData[selectedConsumerId][selectedInterventionId].stopTime = tmpEndTime;\r\n if (tmpTimeLength)\r\n interventionData[selectedConsumerId][selectedInterventionId].timeLength = tmpTimeLength;\r\n if (tmpAversive)\r\n interventionData[selectedConsumerId][selectedInterventionId].aversive = tmpAversive;\r\n if (tmpNote)\r\n interventionData[selectedConsumerId][selectedInterventionId].interventionNotes = tmpNote;\r\n\r\n selectedInterventionId = undefined;\r\n\r\n var form = section.querySelector('.interventionForm');\r\n section.removeChild(form);\r\n interventionHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedInterventionId = undefined;\r\n var form = section.querySelector('.interventionForm');\r\n section.removeChild(form);\r\n interventionHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildInterventionTypeDropdown() {\r\n var opts = {\r\n label: 'Intervention Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iTypeDrop = dropdown.build(opts);\r\n\r\n var data = interventionTypes.map(it => {\r\n return {\r\n value: it.interventionTypeId,\r\n text: it.description,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(iTypeDrop, data, interventionTypeId);\r\n\r\n return iTypeDrop;\r\n }\r\n function buildStartTimeInput() {\r\n var opts = {\r\n label: 'Start Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: startTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var stInput = input.build(opts);\r\n\r\n return stInput;\r\n }\r\n function buildEndTimeInput() {\r\n var opts = {\r\n label: 'End Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: endTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var etInput = input.build(opts);\r\n\r\n return etInput;\r\n }\r\n function buildTotalTimeInput() {\r\n var opts = {\r\n label: 'Total Time',\r\n type: 'text',\r\n style: 'secondary',\r\n readonly: true,\r\n value: timeLength,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var etInput = input.build(opts);\r\n\r\n return etInput;\r\n }\r\n function buildAversiveCheckbox() {\r\n var opts = {\r\n text: 'Aversive',\r\n isChecked: aversive === 'Y' ? true : false,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var checkbox = input.buildCheckbox(opts);\r\n\r\n return checkbox;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: note,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var nInput = input.build(opts);\r\n\r\n return nInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewInterventionForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('interventionForm');\r\n\r\n interventionTypeDropdown = buildInterventionTypeDropdown();\r\n startTimeInput = buildStartTimeInput();\r\n endTimeInput = buildEndTimeInput();\r\n totalTimeInput = buildTotalTimeInput();\r\n aversiveCheckbox = buildAversiveCheckbox();\r\n notesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(interventionTypeDropdown);\r\n form.appendChild(startTimeInput);\r\n form.appendChild(endTimeInput);\r\n form.appendChild(totalTimeInput);\r\n form.appendChild(aversiveCheckbox);\r\n form.appendChild(notesInput);\r\n form.appendChild(formButtons);\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n interventionHome.classList.add('hidden');\r\n\r\n var interventionForm = buildNewInterventionForm();\r\n section.appendChild(interventionForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = interventionReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!interventionData) return;\r\n if (!interventionData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(interventionData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = interventionData[selectedConsumerId][key];\r\n var filteredInterventionTypes = interventionTypes.filter(\r\n it => it.interventionTypeId === data.interventionType,\r\n );\r\n var interventionType = filteredInterventionTypes[0].description;\r\n var timeLength = data.timeLength.split(':');\r\n timeLength = `${timeLength[0]}:${timeLength[1]}`;\r\n var aversive = data.aversive === 'Y' ? 'Yes' : 'No';\r\n\r\n tableData.push({\r\n id: key,\r\n values: [interventionType, timeLength, aversive],\r\n });\r\n });\r\n\r\n table.populate(interventionReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerInterventionTable',\r\n columnHeadings: ['Intervention Type', 'Time Length', 'Aversive'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (\r\n event.target.classList.contains('table__row') &&\r\n !event.target.classList.contains('header')\r\n ) {\r\n selectedInterventionId = event.target.id;\r\n setFormDataDefaults(interventionData[selectedConsumerId][selectedInterventionId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n interventionData = {};\r\n interventionDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewInterventionBtn() {\r\n var btn = button.build({\r\n text: 'Add New Intervention',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'interventionSection');\r\n\r\n interventionHome = document.createElement('div');\r\n interventionHome.classList.add('consumerSections__section__home');\r\n\r\n newInterventionBtn = buildAddNewInterventionBtn();\r\n interventionReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) interventionHome.appendChild(newInterventionBtn);\r\n interventionHome.appendChild(interventionReviewTable);\r\n\r\n section.appendChild(interventionHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!interventionData[selectedConsumerId]) {\r\n interventionData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!interventionData[selectedConsumerId][d.itConsumerInterventionId]) {\r\n interventionData[selectedConsumerId][d.itConsumerInterventionId] = d;\r\n interventionData[selectedConsumerId][d.itConsumerInterventionId].updated = false;\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerInvolvement = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var involvementDropdown;\r\n var locationDropdown;\r\n var ppiCheckbox;\r\n var actionBtns;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var involvementsData;\r\n var involvementTypes;\r\n var consumerLocationData;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return involvementsData;\r\n }\r\n\r\n function deleteConsumerData(consumerId) {\r\n if (involvementsData[consumerId]) {\r\n var { [consumerId]: removedConsumer, ...newInvolvementsData } = involvementsData;\r\n involvementsData = newInvolvementsData;\r\n }\r\n }\r\n\r\n function clearData() {\r\n selectedConsumerId = undefined;\r\n involvementsData = undefined;\r\n }\r\n\r\n function setInvolvementsData(data) {\r\n involvementsData = {};\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n involvementsData[d.consumerId] = {\r\n includeInCount: d.includeInCount,\r\n involvementId: d.involvementId,\r\n locationId: d.locationId,\r\n name: `${d.firstName} ${d.LastName}`,\r\n };\r\n });\r\n }\r\n }\r\n function initConsumerInvolvementData(consumerId) {\r\n // get location data for consumer\r\n return new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getConsumerServiceLocations(consumerId, results => {\r\n consumerLocationData[consumerId] = results.map(r => {\r\n return {\r\n value: r.locationId,\r\n text: r.description,\r\n };\r\n });\r\n\r\n if (!involvementsData[consumerId]) {\r\n var includeInCount = 'Y';\r\n var involvementId = involvementTypes[0].involvementId;\r\n var locationId =\r\n consumerLocationData[consumerId].length === 1\r\n ? consumerLocationData[consumerId][0].value\r\n : '';\r\n\r\n involvementsData[consumerId] = {\r\n includeInCount,\r\n involvementId,\r\n locationId,\r\n };\r\n }\r\n\r\n fulfill();\r\n });\r\n });\r\n }\r\n\r\n function toggleSaveDisabled() {\r\n var errors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function checkRequiredFields() {\r\n var allHaveLocation = true;\r\n var oneHasPPI = false;\r\n var consumerIds = [];\r\n\r\n var keys = Object.keys(involvementsData);\r\n keys.forEach(k => {\r\n var data = involvementsData[k];\r\n if (data.locationId === '') {\r\n allHaveLocation = false;\r\n consumerIds.push(k);\r\n }\r\n if (data.includeInCount === 'Y') oneHasPPI = true;\r\n });\r\n\r\n if (!oneHasPPI) {\r\n itConsumerSection.showConsumerError(['%'], 'At least one consumer must have PPI checked.');\r\n return;\r\n } else {\r\n if (!allHaveLocation) {\r\n itConsumerSection.showConsumerError(consumerIds, 'Involvement location is required.');\r\n } else {\r\n itConsumerSection.removeConsumerErrors();\r\n }\r\n }\r\n }\r\n\r\n function checkOneHasPPI() {\r\n let oneHasPPI = false;\r\n const keys = Object.keys(involvementsData);\r\n keys.forEach(k => {\r\n const data = involvementsData[k];\r\n if (data.includeInCount === 'Y') oneHasPPI = true;\r\n });\r\n return oneHasPPI;\r\n }\r\n\r\n function doesAnotherConsumerHavePPIChecked() {\r\n var otherConsumerHasPPI = false;\r\n\r\n var keys = Object.keys(involvementsData);\r\n\r\n if (keys.length === 1) {\r\n return true;\r\n }\r\n\r\n keys.forEach(k => {\r\n var data = involvementsData[k];\r\n if (data.includeInCount === 'Y') otherConsumerHasPPI = true;\r\n });\r\n\r\n return otherConsumerHasPPI;\r\n }\r\n\r\n // Events\r\n //-----------------------------------------------\r\n function setupEvents() {\r\n var tmpInvolvementId;\r\n var tmpLocationId;\r\n var tmpPpi;\r\n\r\n involvementDropdown.addEventListener('change', e => {\r\n tmpInvolvementId = e.target.value;\r\n if (tmpInvolvementId === '') {\r\n involvementDropdown.classList.add('error');\r\n } else {\r\n involvementDropdown.classList.remove('error');\r\n }\r\n toggleSaveDisabled();\r\n });\r\n locationDropdown.addEventListener('change', e => {\r\n tmpLocationId = e.target.value;\r\n if (tmpLocationId === '') {\r\n locationDropdown.classList.add('error');\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n }\r\n toggleSaveDisabled();\r\n });\r\n ppiCheckbox.addEventListener('change', e => {\r\n tmpPpi = e.target.checked ? 'Y' : 'N';\r\n\r\n if (tmpPpi === 'Y') {\r\n ppiCheckbox.classList.remove('error');\r\n } else {\r\n if (doesAnotherConsumerHavePPIChecked()) {\r\n ppiCheckbox.classList.remove('error');\r\n } else {\r\n ppiCheckbox.classList.add('error');\r\n }\r\n }\r\n\r\n toggleSaveDisabled();\r\n });\r\n\r\n actionBtns.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (tmpPpi) involvementsData[selectedConsumerId].includeInCount = tmpPpi;\r\n if (tmpInvolvementId) involvementsData[selectedConsumerId].involvementId = tmpInvolvementId;\r\n if (tmpLocationId) involvementsData[selectedConsumerId].locationId = tmpLocationId;\r\n\r\n tmpPpi = undefined;\r\n tmpInvolvementId = undefined;\r\n tmpLocationId = undefined;\r\n\r\n const locationId = involvementsData[selectedConsumerId].locationId;\r\n const involvementSec = document.querySelector(\"[data-sectionid='5']\");\r\n if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n involvementSec.classList.add('sectionError');\r\n } else {\r\n involvementSec.classList.remove('sectionError');\r\n }\r\n\r\n section.classList.remove('visible');\r\n consumerSubSections.showSectionMenu();\r\n checkRequiredFields();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n section.classList.remove('visible');\r\n consumerSubSections.showSectionMenu();\r\n }\r\n });\r\n }\r\n // Populate\r\n //-----------------------------------------------\r\n function populateLocationDropdown() {\r\n function populateDropdown(data) {\r\n var locationId = involvementsData[selectedConsumerId].locationId;\r\n\r\n if (!locationId && data.length > 1) {\r\n if (data[0].value !== '') data.unshift({ value: '', text: '' });\r\n locationDropdown.classList.add('error');\r\n }\r\n\r\n dropdown.populate(locationDropdown, data, locationId);\r\n }\r\n\r\n var data = consumerLocationData[selectedConsumerId];\r\n\r\n if (!data) {\r\n incidentTrackingAjax.getConsumerServiceLocations(selectedConsumerId, results => {\r\n consumerLocationData[selectedConsumerId] = results.map(r => {\r\n return {\r\n value: r.locationId,\r\n text: r.description,\r\n };\r\n });\r\n\r\n populateDropdown(consumerLocationData[selectedConsumerId]);\r\n });\r\n\r\n return;\r\n }\r\n\r\n populateDropdown(data);\r\n }\r\n function setInvolvmentDropdownValue() {\r\n var consumerData = involvementsData[selectedConsumerId];\r\n var involvmentSelect = involvementDropdown.querySelector('select');\r\n if (consumerData.involvementId !== '') {\r\n involvmentSelect.value = consumerData.involvementId;\r\n involvementDropdown.classList.remove('error');\r\n }\r\n }\r\n function setPPICheckboxValue() {\r\n var consumerData = involvementsData[selectedConsumerId];\r\n var ppiCheckboxInput = ppiCheckbox.querySelector('input');\r\n if (consumerData.includeInCount === 'Y' || consumerData.includeInCount === '') {\r\n ppiCheckboxInput.checked = true;\r\n } else {\r\n ppiCheckboxInput.checked = false;\r\n }\r\n }\r\n // Build\r\n //-----------------------------------------------\r\n function buildInvolvementDropdown() {\r\n var opts = {\r\n className: `involvementDropdown`,\r\n label: 'Involvement',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var iDropdown = dropdown.build(opts);\r\n\r\n involvementTypes = incidentTracking.getInvolvementTypes();\r\n\r\n var data = involvementTypes.map(it => {\r\n var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n return { value: involvementId, text: it.description };\r\n });\r\n\r\n dropdown.populate(iDropdown, data);\r\n\r\n return iDropdown;\r\n }\r\n function buildLocationDropdown() {\r\n var opts = {\r\n dropdownId: `involvementLocation-${selectedConsumerId}`,\r\n className: `locationDropdown`,\r\n label: 'Location',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var lDropdown = dropdown.build(opts);\r\n\r\n return lDropdown;\r\n }\r\n function buildCheckbox() {\r\n var opts = {\r\n className: 'ppiCheckbox',\r\n text: 'Include in Counts',\r\n isChecked: true,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var checkbox = input.buildCheckbox(opts);\r\n\r\n return checkbox;\r\n }\r\n function buildBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var saveText = true ? 'Update' : 'Save';\r\n\r\n saveBtn = button.build({\r\n text: saveText,\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function involvementDataLookup(consumerId) {\r\n return involvementsData[consumerId];\r\n }\r\n\r\n function build(consumersInvolvedData) {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n consumerLocationData = {};\r\n setInvolvementsData(consumersInvolvedData);\r\n isEdit = consumersInvolvedData ? true : false;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'involvementSection');\r\n\r\n involvementDropdown = buildInvolvementDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n ppiCheckbox = buildCheckbox();\r\n actionBtns = buildBtns();\r\n\r\n section.appendChild(involvementDropdown);\r\n section.appendChild(locationDropdown);\r\n section.appendChild(ppiCheckbox);\r\n section.appendChild(actionBtns);\r\n\r\n setupEvents();\r\n toggleSaveDisabled();\r\n\r\n return section;\r\n }\r\n function populate(consumerId) {\r\n selectedConsumerId = consumerId;\r\n\r\n populateLocationDropdown();\r\n setInvolvmentDropdownValue();\r\n setPPICheckboxValue();\r\n checkRequiredFields();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n checkRequiredFields,\r\n initConsumerData: initConsumerInvolvementData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n clearData,\r\n involvementDataLookup,\r\n checkOneHasPPI,\r\n };\r\n})();\r\nvar consumerReporting = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var reportingHome;\r\n var newReportingBtn;\r\n var reportingReviewTable;\r\n //*form\r\n var reportingCategoryDropdown;\r\n var reportedByInput;\r\n var reportedToInput;\r\n var reportMethodInput;\r\n var reportDateInput;\r\n var reportTimeInput;\r\n var reportNotesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var reportingData;\r\n var reportingDeleteData;\r\n var reportingCategories;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedReportId;\r\n //*form values\r\n var dateReported;\r\n var reportTime;\r\n var reportBy;\r\n var reportMethod;\r\n var reportTo;\r\n var reportingCategoryId;\r\n var reportNotes;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return reportingData;\r\n }\r\n function getDataForDelete() {\r\n return reportingDeleteData;\r\n }\r\n function clearData() {\r\n reportingData = undefined;\r\n reportingDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedReportId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n var { [consumerId]: removedConsumerData, ...newReportingData } = reportingData;\r\n reportingData = newReportingData;\r\n\r\n if (!reportingDeleteData[consumerId]) {\r\n reportingDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n function deleteConsumerReportingData() {\r\n if (!selectedReportId.includes('new')) {\r\n var deletedReport = reportingData[selectedConsumerId][selectedReportId];\r\n if (!reportingDeleteData[selectedConsumerId]) reportingDeleteData[selectedConsumerId] = {};\r\n reportingDeleteData[selectedConsumerId][selectedReportId] = deletedReport;\r\n }\r\n\r\n delete reportingData[selectedConsumerId][selectedReportId];\r\n\r\n selectedReportId = undefined;\r\n var form = section.querySelector('.reportForm');\r\n section.removeChild(form);\r\n reportingHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getitReportingCategories(function (res) {\r\n reportingCategories = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerReportingData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var reportCatSelect = reportingCategoryDropdown.querySelector('.dropdown__select');\r\n if (!reportCatSelect.value || reportCatSelect.value === '%') {\r\n reportingCategoryDropdown.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n reportingCategoryDropdown.classList.remove('error');\r\n }\r\n\r\n var dateInput = reportDateInput.querySelector('input');\r\n if (!dateInput.value) {\r\n reportDateInput.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n reportDateInput.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n dateReported = undefined;\r\n reportTime = undefined;\r\n reportBy = undefined;\r\n reportMethod = undefined;\r\n reportTo = undefined;\r\n reportingCategoryId = undefined;\r\n reportNotes = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n console.table(formData);\r\n if (formData) {\r\n dateReported = formData.dateReported;\r\n reportTime = formData.timeReported; // todo\r\n reportBy = formData.reportBy;\r\n reportMethod = formData.reportMethod;\r\n reportTo = formData.reportTo;\r\n reportingCategoryId = formData.reportingCategoryID;\r\n reportNotes = formData.notes;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpReportingCategoryId;\r\n var tmpReportedBy;\r\n var tmpReportedTo;\r\n var tmpReportMethod;\r\n var tmpReportDate;\r\n var tmpReportTime;\r\n var tmpNote;\r\n\r\n reportingCategoryDropdown.addEventListener('change', e => {\r\n tmpReportingCategoryId = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reportedByInput.addEventListener('change', e => {\r\n tmpReportedBy = e.target.value;\r\n });\r\n reportedToInput.addEventListener('change', e => {\r\n tmpReportedTo = e.target.value;\r\n });\r\n reportMethodInput.addEventListener('change', e => {\r\n tmpReportMethod = e.target.value;\r\n });\r\n reportDateInput.addEventListener('change', e => {\r\n tmpReportDate = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reportTimeInput.addEventListener('change', e => {\r\n tmpReportTime = e.target.value;\r\n });\r\n reportNotesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!reportingData[selectedConsumerId]) {\r\n reportingData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reportingData[selectedConsumerId][selectedReportId]) {\r\n var keys = Object.keys(reportingData[selectedConsumerId]);\r\n selectedReportId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n reportingData[selectedConsumerId][selectedReportId] = {\r\n reportingCategoryID: '',\r\n reportBy: '',\r\n reportTo: '',\r\n reportMethod: '',\r\n dateReported: '',\r\n notes: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpReportingCategoryId ||\r\n tmpReportedBy ||\r\n tmpReportedTo ||\r\n tmpReportMethod ||\r\n tmpReportDate ||\r\n tmpReportTime ||\r\n tmpNote\r\n ) {\r\n reportingData[selectedConsumerId][selectedReportId].updated = true;\r\n }\r\n\r\n if (tmpReportingCategoryId)\r\n reportingData[selectedConsumerId][selectedReportId].reportingCategoryID =\r\n tmpReportingCategoryId;\r\n if (tmpReportedBy)\r\n reportingData[selectedConsumerId][selectedReportId].reportBy = tmpReportedBy;\r\n if (tmpReportedTo)\r\n reportingData[selectedConsumerId][selectedReportId].reportTo = tmpReportedTo;\r\n if (tmpReportMethod)\r\n reportingData[selectedConsumerId][selectedReportId].reportMethod = tmpReportMethod;\r\n if (tmpReportDate)\r\n reportingData[selectedConsumerId][selectedReportId].dateReported = tmpReportDate;\r\n if (tmpReportTime)\r\n reportingData[selectedConsumerId][selectedReportId].timeReported = tmpReportTime;\r\n if (tmpNote) reportingData[selectedConsumerId][selectedReportId].notes = tmpNote;\r\n\r\n selectedReportId = undefined;\r\n\r\n var form = section.querySelector('.reportForm');\r\n section.removeChild(form);\r\n reportingHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedReportId = undefined;\r\n var form = section.querySelector('.reportForm');\r\n section.removeChild(form);\r\n reportingHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildReportingCategoryDropdown() {\r\n var opts = {\r\n label: 'Reporting To Category',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rCatDrop = dropdown.build(opts);\r\n\r\n var data = reportingCategories.map(cat => {\r\n return {\r\n value: cat.itReportingCategoryId,\r\n text: cat.itReportingCategoryName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(rCatDrop, data, reportingCategoryId);\r\n\r\n return rCatDrop;\r\n }\r\n function buildReportedByInput() {\r\n var opts = {\r\n label: 'Reported By',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportBy,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rbInput = input.build(opts);\r\n\r\n return rbInput;\r\n }\r\n function buildReportedToInput() {\r\n var opts = {\r\n label: 'Reported To',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportTo,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rtInput = input.build(opts);\r\n\r\n return rtInput;\r\n }\r\n function buildReportMethodInput() {\r\n var opts = {\r\n label: 'Report Method',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportMethod,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rmInput = input.build(opts);\r\n\r\n return rmInput;\r\n }\r\n function buildReportedDateInput() {\r\n var opts = {\r\n label: 'Date Reported',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateReported,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rdInput = input.build(opts);\r\n\r\n return rdInput;\r\n }\r\n function buildReportedTimeInput() {\r\n var opts = {\r\n label: 'Reported Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: reportTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rtInput = input.build(opts);\r\n\r\n return rtInput;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: reportNotes,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var nInput = input.build(opts);\r\n\r\n return nInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewReportingForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('reportForm');\r\n\r\n reportingCategoryDropdown = buildReportingCategoryDropdown();\r\n reportedByInput = buildReportedByInput();\r\n reportedToInput = buildReportedToInput();\r\n reportMethodInput = buildReportMethodInput();\r\n reportDateInput = buildReportedDateInput();\r\n reportTimeInput = buildReportedTimeInput();\r\n reportNotesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(reportingCategoryDropdown);\r\n form.appendChild(reportedByInput);\r\n form.appendChild(reportedToInput);\r\n form.appendChild(reportMethodInput);\r\n form.appendChild(reportDateInput);\r\n form.appendChild(reportTimeInput);\r\n form.appendChild(reportNotesInput);\r\n form.appendChild(formButtons);\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n reportingHome.classList.add('hidden');\r\n\r\n var reportingForm = buildNewReportingForm();\r\n section.appendChild(reportingForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = reportingReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!reportingData) return;\r\n if (!reportingData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(reportingData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = reportingData[selectedConsumerId][key];\r\n var filteredCategories = reportingCategories.filter(\r\n rCat => rCat.itReportingCategoryId === data.reportingCategoryID,\r\n );\r\n var reportedCategory = filteredCategories[0].itReportingCategoryName;\r\n var date = data.dateReported ? data.dateReported.split(' ')[0] : '';\r\n date = date ? UTIL.formatDateFromIso(date) : date;\r\n var reportBy = data.reportBy;\r\n\r\n tableData.push({\r\n id: key,\r\n values: [reportedCategory, date, reportBy],\r\n });\r\n });\r\n\r\n table.populate(reportingReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerReportingTable',\r\n columnHeadings: ['Reporting Category', 'Date Reported', 'Reported By'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (\r\n event.target.classList.contains('table__row') &&\r\n !event.target.classList.contains('header')\r\n ) {\r\n selectedReportId = event.target.id;\r\n setFormDataDefaults(reportingData[selectedConsumerId][selectedReportId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n reportingData = {};\r\n reportingDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewFollowUpBtn() {\r\n var btn = button.build({\r\n text: 'Add New Reporting',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'reportingSection');\r\n\r\n reportingHome = document.createElement('div');\r\n reportingHome.classList.add('consumerSections__section__home');\r\n\r\n newReportingBtn = buildAddNewFollowUpBtn();\r\n reportingReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) reportingHome.appendChild(newReportingBtn);\r\n reportingHome.appendChild(reportingReviewTable);\r\n\r\n section.appendChild(reportingHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!reportingData[selectedConsumerId]) {\r\n reportingData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reportingData[selectedConsumerId][d.itConsumerReportId]) {\r\n reportingData[selectedConsumerId][d.itConsumerReportId] = d;\r\n reportingData[selectedConsumerId][d.itConsumerReportId].updated = false;\r\n\r\n // format dates\r\n if (reportingData[selectedConsumerId][d.itConsumerReportId].dateReported) {\r\n var dateReported =\r\n reportingData[selectedConsumerId][d.itConsumerReportId].dateReported.split(' ')[0];\r\n reportingData[selectedConsumerId][d.itConsumerReportId].dateReported =\r\n UTIL.formatDateToIso(dateReported);\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\nvar consumerReview = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var reviewsHome;\r\n var newReviewBtn;\r\n var reviewsReviewTable;\r\n //*form\r\n var reviewDateInput;\r\n var reviewedByDropdown;\r\n var notesInput;\r\n var formButtons;\r\n var deleteBtn;\r\n var saveBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var reviewData;\r\n var reviewDeleteData;\r\n var reviewedByDropdownData;\r\n // Values\r\n //---------------------\r\n var selectedConsumerId;\r\n var selectedReviewId;\r\n //*form values\r\n var reviewedDate;\r\n var reviewedById;\r\n var reviewNotes;\r\n var lastUpdatedBy;\r\n var lastUpdatedOn;\r\n\r\n var isEdit;\r\n var formReadOnly;\r\n\r\n function getDataForSave() {\r\n return reviewData;\r\n }\r\n function getDataForDelete() {\r\n return reviewDeleteData;\r\n }\r\n function clearData() {\r\n reviewData = undefined;\r\n reviewDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedReviewId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n if (reviewData[consumerId]) {\r\n var { [consumerId]: removedConsumer, ...newReviewData } = reviewData;\r\n reviewData = newReviewData;\r\n\r\n if (!reviewDeleteData[consumerId]) {\r\n reviewDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerReviewData() {\r\n if (!selectedReviewId.includes('new')) {\r\n var deletedReview = reviewData[selectedConsumerId][selectedReviewId];\r\n if (!reviewDeleteData[selectedConsumerId]) reviewDeleteData[selectedConsumerId] = {};\r\n reviewDeleteData[selectedConsumerId][selectedReviewId] = deletedReview;\r\n }\r\n\r\n delete reviewData[selectedConsumerId][selectedReviewId];\r\n\r\n selectedReviewId = undefined;\r\n var form = section.querySelector('.reviewForm');\r\n section.removeChild(form);\r\n reviewsHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getReviewedByDropdown(function (res) {\r\n reviewedByDropdownData = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerReviewData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = false;\r\n\r\n var dateInput = reviewDateInput.querySelector('input');\r\n if (!dateInput.value) {\r\n reviewDateInput.classList.add('error');\r\n hasErrors = true;\r\n } else {\r\n reviewDateInput.classList.remove('error');\r\n }\r\n\r\n if (hasErrors) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n reviewedDate = undefined;\r\n reviewedById = undefined;\r\n reviewNotes = undefined;\r\n lastUpdatedBy = undefined;\r\n lastUpdatedOn = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n reviewedDate = formData.reviewedDate;\r\n reviewedById = formData.reviewedBy;\r\n reviewNotes = formData.notes;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n var tmpReviewDate;\r\n var tmpReviewedBy;\r\n var tmpNote;\r\n\r\n reviewDateInput.addEventListener('change', e => {\r\n tmpReviewDate = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reviewedByDropdown.addEventListener('change', e => {\r\n tmpReviewedBy = e.target.value;\r\n });\r\n notesInput.addEventListener('change', e => {\r\n tmpNote = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (!reviewData[selectedConsumerId]) {\r\n reviewData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reviewData[selectedConsumerId][selectedReviewId]) {\r\n var keys = Object.keys(reviewData[selectedConsumerId]);\r\n selectedReviewId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n reviewData[selectedConsumerId][selectedReviewId] = {\r\n reviewedDate: '',\r\n reviewedBy: '',\r\n notes: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (tmpReviewDate || tmpReviewedBy || tmpNote) {\r\n reviewData[selectedConsumerId][selectedReviewId].updated = true;\r\n }\r\n\r\n if (tmpReviewDate) {\r\n reviewData[selectedConsumerId][selectedReviewId].reviewedDate = tmpReviewDate;\r\n }\r\n\r\n if (tmpReviewedBy) {\r\n reviewData[selectedConsumerId][selectedReviewId].reviewedBy = tmpReviewedBy;\r\n }\r\n const currentReviewedBy = reviewData[selectedConsumerId][selectedReviewId].reviewedBy;\r\n if (\r\n $.session.incidentTrackingReviewedBy &&\r\n (!currentReviewedBy || currentReviewedBy === '')\r\n ) {\r\n reviewData[selectedConsumerId][selectedReviewId].reviewedBy = $.session.PeopleId;\r\n }\r\n\r\n if (tmpNote) {\r\n reviewData[selectedConsumerId][selectedReviewId].notes = tmpNote;\r\n }\r\n\r\n selectedReviewId = undefined;\r\n\r\n var form = section.querySelector('.reviewForm');\r\n section.removeChild(form);\r\n reviewsHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedReviewId = undefined;\r\n var form = section.querySelector('.reviewForm');\r\n section.removeChild(form);\r\n reviewsHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildReviewDateInput() {\r\n var opts = {\r\n label: 'Review Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: reviewedDate,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var dateInput = input.build(opts);\r\n\r\n return dateInput;\r\n }\r\n function buildReviewedByDropdown() {\r\n var opts = {\r\n label: 'Reviewed By',\r\n style: 'secondary',\r\n classNames: 'reviewedBy',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var rbDrop = dropdown.build(opts);\r\n\r\n var data = reviewedByDropdownData.map(rb => {\r\n return {\r\n value: rb.employeeId,\r\n text: rb.employeeName,\r\n };\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n if (!$.session.incidentTrackingReviewedBy) {\r\n dropdown.populate(rbDrop, data, reviewedById);\r\n } else {\r\n if (isEdit) {\r\n dropdown.populate(rbDrop, data, reviewedById);\r\n } else {\r\n dropdown.populate(rbDrop, data, $.session.PeopleId);\r\n }\r\n\r\n input.disableInputField(rbDrop);\r\n }\r\n\r\n return rbDrop;\r\n }\r\n function buildNotesInput() {\r\n var opts = {\r\n label: 'Notes',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: reviewNotes,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var nInput = input.build(opts);\r\n\r\n return nInput;\r\n }\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewReviewForm() {\r\n var form = document.createElement('div');\r\n form.classList.add('reviewForm');\r\n\r\n reviewDateInput = buildReviewDateInput();\r\n reviewedByDropdown = buildReviewedByDropdown();\r\n notesInput = buildNotesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(reviewDateInput);\r\n form.appendChild(reviewedByDropdown);\r\n form.appendChild(notesInput);\r\n form.appendChild(formButtons);\r\n\r\n form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n reviewsHome.classList.add('hidden');\r\n\r\n var reviewForm = buildNewReviewForm();\r\n section.appendChild(reviewForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = reviewsReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!reviewData) return;\r\n if (!reviewData[selectedConsumerId]) return;\r\n\r\n var tableData = [];\r\n\r\n var keys = Object.keys(reviewData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n var data = reviewData[selectedConsumerId][key];\r\n\r\n var reviewedBy = reviewedByDropdownData.find(d => d.employeeId === data.reviewedBy);\r\n reviewedBy = reviewedBy ? reviewedBy.employeeName : '';\r\n var dateReviewed = UTIL.formatDateFromIso(data.reviewedDate);\r\n\r\n tableData.push({\r\n id: key,\r\n values: [reviewedBy, dateReviewed],\r\n });\r\n });\r\n\r\n table.populate(reviewsReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerReviewTable',\r\n columnHeadings: ['Reviewed By', 'Date Reviewed'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (\r\n event.target.classList.contains('table__row') &&\r\n !event.target.classList.contains('header')\r\n ) {\r\n selectedReviewId = event.target.id;\r\n setFormDataDefaults(reviewData[selectedConsumerId][selectedReviewId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n reviewData = {};\r\n reviewDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewReviewBtn() {\r\n var btn = button.build({\r\n text: 'Add New Review',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'reviewSection');\r\n\r\n reviewsHome = document.createElement('div');\r\n reviewsHome.classList.add('consumerSections__section__home');\r\n\r\n newReviewBtn = buildAddNewReviewBtn();\r\n reviewsReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) reviewsHome.appendChild(newReviewBtn);\r\n reviewsHome.appendChild(reviewsReviewTable);\r\n\r\n section.appendChild(reviewsHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!reviewData[selectedConsumerId]) {\r\n reviewData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!reviewData[selectedConsumerId][d.itConsumerReviewId]) {\r\n reviewData[selectedConsumerId][d.itConsumerReviewId] = d;\r\n reviewData[selectedConsumerId][d.itConsumerReviewId].updated = false;\r\n\r\n // format dates\r\n if (reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate) {\r\n var reviewDate =\r\n reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate.split(' ')[0];\r\n reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate =\r\n UTIL.formatDateToIso(reviewDate);\r\n }\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\n","var itDetailsSection = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var sectionBody;\r\n // DATA\r\n //---------------------\r\n var reviewData;\r\n var involvementTypes;\r\n var incidentLocations;\r\n var categories;\r\n var employeeNames;\r\n // Values\r\n //---------------------\r\n var incidentDate;\r\n var incidentTime;\r\n var reportedDate;\r\n var reportedTime;\r\n var categoryId;\r\n var locationId;\r\n var summaryText;\r\n var actionText;\r\n var preventionText;\r\n var factorsText;\r\n // Inputs\r\n var incidentDateInput;\r\n var incidentTimeInput;\r\n var reportedDateInput;\r\n var reportedTimeInput;\r\n\r\n var summaryTextarea;\r\n var actionTextarea;\r\n var preventionTextarea;\r\n var causeTextarea;\r\n var categoryDropdown;\r\n var locationDetailDropdown;\r\n\r\n function getSectionData() {\r\n categories = incidentTracking.getCategories();\r\n incidentLocations = incidentTracking.getLocations();\r\n }\r\n function setSectionValues() {\r\n if (reviewData) {\r\n var rd = reviewData[0];\r\n // reviewData = {iDate, iTime, rDate, rTime, category, location, summary, action, factor}\r\n incidentDate = rd.incidentDate ? UTIL.formatDateToIso(rd.incidentDate.split(' ')[0]) : '';\r\n incidentTime = rd.incidentTime ? rd.incidentTime : '';\r\n reportedDate = rd.reportedDate ? UTIL.formatDateToIso(rd.reportedDate.split(' ')[0]) : '';\r\n reportedTime = rd.reportedTime ? rd.reportedTime : '';\r\n categoryId = rd.subcategoryId ? rd.subcategoryId : '';\r\n locationId = rd.locationId ? rd.locationId : '';\r\n summaryText = rd.summary ? rd.summary : '';\r\n actionText = rd.note ? rd.note : '';\r\n preventionText = rd.prevention ? rd.prevention : '';\r\n factorsText = rd.contributingFactor ? rd.contributingFactor : '';\r\n } else {\r\n var defaultCategory = categories.filter(c => c.incidentCategory === 'New Incident');\r\n $.session.incidentTrackingPopulateIncidentDate === 'Y'\r\n ? (incidentDate = UTIL.getTodaysDate())\r\n : (incidentDate = '');\r\n $.session.incidentTrackingPopulateIncidentTime === 'Y'\r\n ? (incidentTime = UTIL.getCurrentTime())\r\n : (incidentTime = '');\r\n $.session.incidentTrackingPopulateReportedDate === 'Y'\r\n ? (reportedDate = UTIL.getTodaysDate())\r\n : (reportedDate = '');\r\n $.session.incidentTrackingPopulateReportedTime === 'Y'\r\n ? (reportedTime = UTIL.getCurrentTime())\r\n : (reportedTime = '');\r\n categoryId = defaultCategory[0].subcategoryId;\r\n locationId = '';\r\n summaryText = '';\r\n actionText = '';\r\n preventionText = '';\r\n factorsText = '';\r\n }\r\n }\r\n // function showTextErrorPopup() {\r\n // const errorPop = POPUP.build({\r\n // classNames: 'textErrorPopup',\r\n // });\r\n\r\n // const message = document.createElement('p');\r\n // message.innerText = `You are not allowed to edit previously entered text.`;\r\n\r\n // var okButton = button.build({\r\n // text: 'Ok',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: function () {\r\n // POPUP.hide(errorPop);\r\n // },\r\n // });\r\n\r\n // errorPop.appendChild(message);\r\n // errorPop.appendChild(okButton);\r\n\r\n // POPUP.show(errorPop);\r\n // }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildDateTimeInputs() {\r\n var incidentDateTimeWrap = document.createElement('div');\r\n var reportedDateTimeWrap = document.createElement('div');\r\n incidentDateTimeWrap.classList.add('incidentDateTimeWrap');\r\n reportedDateTimeWrap.classList.add('reportedDateTimeWrap');\r\n\r\n incidentDateInput = input.build({\r\n label: 'Incident Date',\r\n id: 'incidentDateInpt',\r\n type: 'date',\r\n style: 'secondary',\r\n classNames: ['iDate'],\r\n attributes: [{ key: 'max', value: '9999-12-31' }],\r\n value: incidentDate,\r\n });\r\n incidentTimeInput = input.build({\r\n label: 'Incident Time',\r\n type: 'time',\r\n style: 'secondary',\r\n classNames: ['iTime'],\r\n value: incidentTime,\r\n });\r\n reportedDateInput = input.build({\r\n label: 'Reported Date',\r\n type: 'date',\r\n style: 'secondary',\r\n classNames: ['rDate'],\r\n attributes: [{ key: 'max', value: '9999-12-31' }],\r\n value: reportedDate,\r\n });\r\n reportedTimeInput = input.build({\r\n label: 'Reported Time',\r\n type: 'time',\r\n style: 'secondary',\r\n classNames: ['rTime'],\r\n value: reportedTime,\r\n });\r\n\r\n incidentDateTimeWrap.appendChild(incidentDateInput);\r\n incidentDateTimeWrap.appendChild(incidentTimeInput);\r\n reportedDateTimeWrap.appendChild(reportedDateInput);\r\n reportedDateTimeWrap.appendChild(reportedTimeInput);\r\n\r\n return {\r\n incidentDateTime: incidentDateTimeWrap,\r\n reportedDateTime: reportedDateTimeWrap,\r\n };\r\n }\r\n function buildDropdowns() {\r\n var dropdownWrap = document.createElement('div');\r\n dropdownWrap.classList.add('dropdownWrap');\r\n // build markup\r\n categoryDropdown = dropdown.build({\r\n className: 'categoryDropdown',\r\n label: 'Incident Category',\r\n });\r\n locationDetailDropdown = dropdown.build({\r\n className: 'locationDropdown',\r\n label: 'Location Detail',\r\n });\r\n\r\n // get/set data\r\n var categoryData = categories.map(c => {\r\n if (c.incidentCategory === 'New Incident') {\r\n categoryId;\r\n }\r\n return {\r\n value: c.subcategoryId,\r\n text: c.incidentCategory,\r\n };\r\n });\r\n var locationData = incidentLocations.map(l => {\r\n return {\r\n value: l.itLocationId,\r\n text: l.description,\r\n };\r\n });\r\n\r\n var defaultDropdownOption = { value: '', text: '' };\r\n locationData.unshift(defaultDropdownOption);\r\n\r\n // populate\r\n dropdown.populate(categoryDropdown, categoryData, categoryId);\r\n dropdown.populate(locationDetailDropdown, locationData, locationId);\r\n\r\n // append\r\n dropdownWrap.appendChild(categoryDropdown);\r\n dropdownWrap.appendChild(locationDetailDropdown);\r\n\r\n return dropdownWrap;\r\n }\r\n function buildTextAreas() {\r\n summaryTextarea = input.build({\r\n label: 'Summary Of Incident',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'summary'],\r\n value: summaryText,\r\n });\r\n actionTextarea = input.build({\r\n label: 'Immediate Action',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'action'],\r\n value: actionText,\r\n });\r\n preventionTextarea = input.build({\r\n label: 'Prevention Plan',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'prevention'],\r\n value: preventionText,\r\n });\r\n causeTextarea = input.build({\r\n label: 'Cause & Contributing Factors',\r\n style: 'secondary',\r\n type: 'textarea',\r\n classNames: ['autosize', 'factors'],\r\n value: factorsText,\r\n });\r\n\r\n return {\r\n summary: summaryTextarea,\r\n action: actionTextarea,\r\n prevention: preventionTextarea,\r\n cause: causeTextarea,\r\n };\r\n }\r\n\r\n function buildSection(options, data) {\r\n var opts = options;\r\n reviewData = data;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection');\r\n section.setAttribute('data-card-page', 'details');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Incident Details

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n getSectionData();\r\n setSectionValues();\r\n\r\n var dateTimeInputs = buildDateTimeInputs();\r\n var dropdowns = buildDropdowns();\r\n var textAreas = buildTextAreas();\r\n\r\n sectionBody.appendChild(dateTimeInputs.incidentDateTime);\r\n sectionBody.appendChild(dateTimeInputs.reportedDateTime);\r\n sectionBody.appendChild(dropdowns);\r\n sectionBody.appendChild(textAreas.summary);\r\n sectionBody.appendChild(textAreas.action);\r\n\r\n if ($.session.incidentTrackingShowPreventionPlan) sectionBody.appendChild(textAreas.prevention);\r\n if ($.session.incidentTrackingShowCauseAndContributingFactors)\r\n sectionBody.appendChild(textAreas.cause);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n setupEvents();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n\r\n return section;\r\n }\r\n\r\n function setupEvents() {\r\n incidentDateInput.addEventListener('change', e => {\r\n incidentDate = e.target.value;\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n incidentTimeInput.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n reportedDateInput.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n reportedTimeInput.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n\r\n summaryTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n actionTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n preventionTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n causeTextarea.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n categoryDropdown.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n locationDetailDropdown.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n }\r\n\r\n function checkRequiredFields() {\r\n var incidentDateInpt = document.getElementById('incidentDateInpt');\r\n\r\n if (incidentDateInpt) {\r\n if (!incidentDate || incidentDate === '') {\r\n incidentDateInpt.classList.add('error');\r\n } else {\r\n incidentDateInpt.classList.remove('error');\r\n }\r\n }\r\n\r\n // number of selected Consumers with an error ; length = 0 on initial display\r\n var selectedErroredConsumers = [].slice.call(\r\n document.querySelectorAll('.consumersWrap .consumerCard.error'),\r\n );\r\n\r\n // hasNoErrors = 0 means the \"Select a Consumer\" message is displayed\r\n var hasNoErrors = document.getElementsByClassName('consumerError hidden');\r\n\r\n if (hasNoErrors.length === 0) return true;\r\n\r\n var detailshasErrors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n if (detailshasErrors.length !== 0 || selectedErroredConsumers.length !== 0) {\r\n return true; // true means do disable the Save BTN\r\n } else {\r\n return false; // false means don't disable the Save BTN\r\n }\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n checkRequiredFields,\r\n };\r\n})();\r\n","var itEmployeeSection = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var sectionBody;\r\n // DATA\r\n //---------------------\r\n var employeesInvolved;\r\n // Values\r\n //---------------------\r\n\r\n function displayCount() {\r\n var employees = [].slice.call(section.querySelectorAll('.employeeRow'));\r\n var count = employees ? employees.length : 0;\r\n var countHolder = section.querySelector('span[data-count=\"employees\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n\r\n function addNewEmployeeRow() {\r\n var employeeCard = buildEmployeeCard();\r\n sectionBody.appendChild(employeeCard);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populate() {\r\n employeesInvolved.forEach(e => {\r\n var name = `${e.lastName}, ${e.firstName}`;\r\n var notify = e.notifyEmployee === 'Y' ? true : false;\r\n var employeeId = e.employeeId;\r\n var involvementType = e.description;\r\n var involvementTypeId = e.employeeInvolvementTypeId;\r\n\r\n var card = buildEmployeeCard({\r\n name,\r\n involvementTypeId,\r\n notify,\r\n });\r\n\r\n sectionBody.appendChild(card);\r\n });\r\n\r\n displayCount();\r\n }\r\n\r\n // Employee Card\r\n //-----------------------------------------------\r\n function buildNameDropdown(name) {\r\n var nameDropdown = dropdown.build({\r\n className: 'employeeNameDropdown',\r\n label: 'Name',\r\n style: 'secondary',\r\n });\r\n\r\n var employeeNames = incidentTracking.getEmployeeNames();\r\n var data = employeeNames.map(n => {\r\n return {\r\n value: n.employeeName,\r\n text: n.employeeName,\r\n attributes: [{ key: 'data-employeeid', value: n.employeeId }],\r\n };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(nameDropdown, data, name);\r\n\r\n return nameDropdown;\r\n }\r\n function buildInvolvmentDropdown(involvementId) {\r\n var involvmentTypeDropdown = dropdown.build({\r\n className: 'involvmentTypeDropdown',\r\n label: 'Involvement Type',\r\n style: 'secondary',\r\n });\r\n\r\n var involvementTypes = incidentTracking.getInvolvementTypes();\r\n var data = involvementTypes.map(it => {\r\n var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n return { value: involvementId, text: it.description };\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(involvmentTypeDropdown, data, involvementId);\r\n\r\n return involvmentTypeDropdown;\r\n }\r\n function buildCheckbox(checkedValue) {\r\n var checkbox = input.buildCheckbox({\r\n text: 'Notify',\r\n isChecked: checkedValue,\r\n });\r\n\r\n return checkbox;\r\n }\r\n function buildEmployeeCard(values) {\r\n // values = {name, involvement, notify}\r\n var name = values ? values.name : '';\r\n var involvement = values ? values.involvementTypeId : '';\r\n var notify = values ? values.notify : false;\r\n\r\n var employeeRow = document.createElement('div');\r\n employeeRow.classList.add('employeeRow');\r\n employeeRow.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n\r\n var nameDropdown = buildNameDropdown(name);\r\n var involvmentTypeDropdown = buildInvolvmentDropdown(involvement);\r\n var checkbox = buildCheckbox(notify);\r\n var delteBtn = button.build({\r\n text: 'Delete Employee',\r\n icon: 'delete',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: function () {\r\n var parent = employeeRow.parentElement;\r\n parent.removeChild(employeeRow);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n\r\n // build row\r\n employeeRow.appendChild(delteBtn);\r\n employeeRow.appendChild(nameDropdown);\r\n employeeRow.appendChild(involvmentTypeDropdown);\r\n employeeRow.appendChild(checkbox);\r\n\r\n return employeeRow;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, data) {\r\n var opts = options;\r\n employeesInvolved = data;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection');\r\n section.setAttribute('data-card-page', 'employees');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Employees Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n var addEmployeeBtn = button.build({\r\n text: 'Add New Employee',\r\n icon: 'add',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: addNewEmployeeRow,\r\n });\r\n\r\n sectionBody.appendChild(addEmployeeBtn);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (employeesInvolved) populate();\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n };\r\n})();\r\n","var itPeopleSection = (function () {\r\n // DOM\r\n //---------------------\r\n var section;\r\n var sectionBody;\r\n // DATA\r\n //---------------------\r\n var othersInvolved;\r\n // Values\r\n //---------------------\r\n\r\n function displayCount() {\r\n var people = [].slice.call(section.querySelectorAll('.peopleRow'));\r\n var count = people ? people.length : 0;\r\n var countHolder = section.querySelector('span[data-count=\"people\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!section) return false;\r\n\r\n var hasErrors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n if (hasErrors.length !== 0) {\r\n return true; // true means to disable the Save BTN\r\n } else {\r\n return false; // false means don't disable the Save BTN\r\n }\r\n }\r\n\r\n function addNewPersonRow() {\r\n var peopleCard = buildOtherPersonCard();\r\n sectionBody.appendChild(peopleCard);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populate() {\r\n othersInvolved.forEach(o => {\r\n var card = buildOtherPersonCard({\r\n name: o.name,\r\n company: o.company,\r\n involvementTypeId: o.involvementTypeId,\r\n address1: o.address1,\r\n address2: o.address2,\r\n city: o.city,\r\n state: o.state,\r\n zipCode: o.zipCode,\r\n phone: o.phone,\r\n });\r\n sectionBody.appendChild(card);\r\n });\r\n\r\n displayCount();\r\n }\r\n\r\n // Person Card\r\n //-----------------------------------------------\r\n function buildOtherPersonCard(values) {\r\n // values = {name, company, involvementTypeId, address1, address2, city, state, zipCode, phone}\r\n var name = values ? values.name : '';\r\n var company = values ? values.company : '';\r\n var involvementId = values ? values.involvementTypeId : '';\r\n var address1 = values ? values.address1 : '';\r\n var address2 = values ? values.address2 : '';\r\n var city = values ? values.city : '';\r\n var state = values ? values.state : '';\r\n var zip = values ? values.zipCode : '';\r\n var phone = values ? values.phone : '';\r\n\r\n var otherPeopleRow = document.createElement('div');\r\n otherPeopleRow.classList.add('peopleRow');\r\n otherPeopleRow.addEventListener('change', e => {\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n });\r\n\r\n var nameInput = input.build({\r\n label: 'Name',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['name'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: name,\r\n callbackType: 'input',\r\n callback: event => {\r\n // Name input is required, else disable the save button\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n }\r\n });\r\n var involvementDropdown = dropdown.build({\r\n label: 'Involvement Type',\r\n style: 'secondary',\r\n className: 'involvmentTypeDropdown',\r\n callback: e => {\r\n if (!e.target.value || e.target.value === '%') {\r\n involvementDropdown.classList.add('error');\r\n } else {\r\n involvementDropdown.classList.remove('error');\r\n }\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var companyInput = input.build({\r\n label: 'Company',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['company'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: company,\r\n });\r\n var address1Input = input.build({\r\n label: 'Address 1',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address1'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: address1,\r\n });\r\n var address2Input = input.build({\r\n label: 'Address 2',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address2'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: address2,\r\n });\r\n var cityInput = input.build({\r\n label: 'City',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['city'],\r\n attributes: [{ key: 'maxlength', value: '27' }],\r\n value: city,\r\n });\r\n var stateInput = input.build({\r\n label: 'State',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['state'],\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: state,\r\n });\r\n var zipInput = input.build({\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '9' }],\r\n value: zip,\r\n });\r\n var phoneInput = input.build({\r\n label: 'Phone',\r\n type: 'tel',\r\n style: 'secondary',\r\n classNames: ['phone'],\r\n attributes: [{ key: 'maxlength', value: '14' }],\r\n value: phone,\r\n });\r\n var deleteBtn = button.build({\r\n text: 'Delete Person',\r\n icon: 'delete',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: function () {\r\n var parent = otherPeopleRow.parentElement;\r\n parent.removeChild(otherPeopleRow);\r\n displayCount();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n\r\n if(!name) {\r\n nameInput.classList.add('error');\r\n }\r\n\r\n // populate drodowns\r\n var involvementTypes = incidentTracking.getInvolvementTypes();\r\n var involvementDropdownData = involvementTypes.map(it => {\r\n var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n return { value: involvementId, text: it.description };\r\n });\r\n var defaultValue = { value: '', text: '' };\r\n involvementDropdownData.unshift(defaultValue);\r\n dropdown.populate(involvementDropdown, involvementDropdownData, involvementId);\r\n\r\n if (!involvementId) {\r\n involvementDropdown.classList.add('error');\r\n }\r\n\r\n // build card\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n var wrap3 = document.createElement('div');\r\n wrap1.classList.add('wrap1');\r\n wrap2.classList.add('wrap2');\r\n wrap3.classList.add('wrap3');\r\n\r\n wrap1.appendChild(nameInput);\r\n wrap1.appendChild(companyInput);\r\n\r\n wrap2.appendChild(address1Input);\r\n wrap2.appendChild(address2Input);\r\n\r\n wrap3.appendChild(cityInput);\r\n wrap3.appendChild(stateInput);\r\n wrap3.appendChild(zipInput);\r\n\r\n otherPeopleRow.appendChild(deleteBtn);\r\n otherPeopleRow.appendChild(wrap1);\r\n otherPeopleRow.appendChild(involvementDropdown);\r\n otherPeopleRow.appendChild(wrap2);\r\n otherPeopleRow.appendChild(wrap3);\r\n otherPeopleRow.appendChild(phoneInput);\r\n\r\n return otherPeopleRow;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, data) {\r\n var opts = options;\r\n othersInvolved = data;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection');\r\n section.setAttribute('data-card-page', 'people');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Other People Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n var addPeopleBtn = button.build({\r\n text: 'Add New Person',\r\n icon: 'add',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: addNewPersonRow,\r\n });\r\n\r\n sectionBody.appendChild(addPeopleBtn);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (othersInvolved) populate();\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n checkRequiredFields,\r\n };\r\n})();\r\n","const assessmentCard = (function () {\r\n // DOM\r\n let assessmentContainer;\r\n let assessmentMarkup;\r\n let assessmentNav;\r\n let tocMarkup;\r\n let tableOfContentsBtn;\r\n let unansweredQuestionToggleBtn;\r\n // DATA\r\n let sectionData;\r\n let subsectionData;\r\n let questionSetData;\r\n let planId;\r\n let planStatus;\r\n let readOnly;\r\n\r\n // Utils\r\n //------------------------------------\r\n function clearData() {\r\n assessmentContainer = undefined;\r\n assessmentMarkup = undefined;\r\n assessmentNav = undefined;\r\n tocMarkup = undefined;\r\n tableOfContentsBtn = undefined;\r\n unansweredQuestionToggleBtn = undefined;\r\n\r\n sectionData = undefined;\r\n subsectionData = undefined;\r\n questionSetData = undefined;\r\n planId = undefined;\r\n planStatus = undefined;\r\n\r\n mainAssessment.clearData();\r\n tableOfContents.clearData();\r\n }\r\n async function refreshAssessmentCard(assessmentGeneralInfo) {\r\n const assessmentWrap = document.getElementById('planAssessment');\r\n\r\n const loadingBar = PROGRESS.SPINNER.get('Refreshing Assessment...');\r\n assessmentWrap.innerHTML = '';\r\n assessmentWrap.appendChild(loadingBar);\r\n\r\n // * Assessment Data below... When coming from dash widget planId isn't set yet\r\n // * use 'assessmentGeneralInfo.planId' if there is no 'planId'\r\n const assessmentData = await assessment.getAssessmentData(\r\n planId || assessmentGeneralInfo.planId,\r\n );\r\n let newAssessmentMarkup;\r\n if (assessmentGeneralInfo) {\r\n newAssessmentMarkup = await build(assessmentData, {\r\n ...assessmentGeneralInfo,\r\n });\r\n }\r\n\r\n assessmentWrap.innerHTML = '';\r\n assessmentWrap.appendChild(newAssessmentMarkup);\r\n\r\n mainAssessment.markUnansweredQuestions();\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n let assessmentValidationCheck = await planValidation.getAssessmentValidation(planId);\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n }\r\n\r\n // Navigation Bar\r\n //------------------------------------\r\n async function handleNavbarEvents(e) {\r\n switch (e.target) {\r\n case tableOfContentsBtn: {\r\n tableOfContents.toggleVisibility();\r\n break;\r\n }\r\n case unansweredQuestionToggleBtn: {\r\n const innerTextValue = unansweredQuestionToggleBtn.innerText.toLowerCase();\r\n if (innerTextValue === 'show unanswered') {\r\n unansweredQuestionToggleBtn.innerText = 'Show All';\r\n mainAssessment.toggleUnansweredQuestionFilter('hide');\r\n } else {\r\n unansweredQuestionToggleBtn.innerText = 'Show Unanswered';\r\n mainAssessment.toggleUnansweredQuestionFilter('show');\r\n }\r\n\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n function buildTopNavBar() {\r\n tableOfContentsBtn = button.build({\r\n text: 'T.O.C.',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['tableOfContentsBtn', 'assessmentNavBtn'],\r\n callback: handleNavbarEvents,\r\n });\r\n unansweredQuestionToggleBtn = button.build({\r\n text: 'Show Unanswered',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['unansweredQuestionToggleBtn', 'assessmentNavBtn'],\r\n callback: handleNavbarEvents,\r\n });\r\n\r\n const tocAlertDiv = document.createElement('div');\r\n tocAlertDiv.classList.add('tocAlertDiv');\r\n tocAlertDiv.id = 'tocAlertMobile';\r\n tableOfContentsBtn.appendChild(tocAlertDiv);\r\n tocAlertDiv.innerHTML = `${icons.error}`;\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one section of the Assessment must be selected',\r\n tocAlertDiv,\r\n );\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n // planValidation.createTooltip(\r\n // 'At least one section of the Assessment must be selected',\r\n // tocAlertDiv,\r\n // );\r\n\r\n // if (assessmentValidationCheck.hasASectionApplicable === true) {\r\n // tocAlertDiv.style.display = 'none';\r\n // }\r\n\r\n const navBar = document.createElement('div');\r\n navBar.classList.add('assessmentNavigation');\r\n\r\n navBar.appendChild(tableOfContentsBtn);\r\n navBar.appendChild(unansweredQuestionToggleBtn);\r\n\r\n return navBar;\r\n }\r\n\r\n // Main\r\n //------------------------------------\r\n function addSections() {\r\n const sectionIdKeys = Object.keys(sectionData);\r\n sectionIdKeys.forEach((id, index) => {\r\n const { order, title, applicable } = sectionData[id];\r\n mainAssessment.addSection({ ...sectionData[id], id });\r\n tableOfContents.addSection({ order, title, id, index, applicable });\r\n });\r\n }\r\n function addSubSections() {\r\n const subsectionIdKeys = Object.keys(subsectionData);\r\n subsectionIdKeys.forEach(subsectionId => {\r\n const { order, title, sectionId } = subsectionData[subsectionId];\r\n mainAssessment.addSubSection(order, title, subsectionId, sectionId);\r\n tableOfContents.addSubSection(order, title, subsectionId, sectionId);\r\n });\r\n }\r\n function addQuestions() {\r\n const questionSetIdKeys = Object.keys(questionSetData);\r\n questionSetIdKeys.forEach(async qsKey => {\r\n mainAssessment.addQuestionSet(questionSetData[qsKey], readOnly);\r\n });\r\n }\r\n function buildAssessment() {\r\n assessmentContainer = document.createElement('div');\r\n assessmentContainer.classList.add('assessmentContainer');\r\n\r\n tocMarkup = tableOfContents.build();\r\n // generalInfoBar = buildGeneralInfoBar();\r\n assessmentNav = buildTopNavBar();\r\n assessmentMarkup = mainAssessment.build();\r\n\r\n const assessmentNavMarkupWrap = document.createElement('div');\r\n assessmentNavMarkupWrap.classList.add('assessmentNavMarkupWrap');\r\n assessmentNavMarkupWrap.appendChild(assessmentNav);\r\n // assessmentNavMarkupWrap.appendChild(generalInfoBar);\r\n assessmentNavMarkupWrap.appendChild(assessmentMarkup);\r\n\r\n if (readOnly || !$.session.planUpdate) {\r\n assessmentNavMarkupWrap.classList.add('readOnly');\r\n } else {\r\n assessmentNavMarkupWrap.classList.remove('readOnly');\r\n }\r\n\r\n assessmentContainer.appendChild(tocMarkup);\r\n assessmentContainer.appendChild(assessmentNavMarkupWrap);\r\n\r\n return assessmentContainer;\r\n }\r\n async function build(assessmentData, generalInfo) {\r\n ({ sectionData, subsectionData, questionSetData } = assessmentData);\r\n\r\n ({ planId, planStatus, isActive } = generalInfo);\r\n\r\n readOnly = planStatus === 'C' || !isActive ? true : false;\r\n\r\n setActiveModuleSectionAttribute('plan-questionsAndAnswers');\r\n\r\n // init markup for toc and assessment\r\n await mainAssessment.init(planId, readOnly);\r\n tableOfContents.init();\r\n\r\n // add/sort data to assessment & toc\r\n addSections();\r\n addSubSections();\r\n addQuestions();\r\n\r\n // populate/build assessment\r\n const markup = buildAssessment();\r\n return markup;\r\n }\r\n\r\n return {\r\n build,\r\n clearData,\r\n refreshAssessmentCard,\r\n };\r\n})();\r\n","const mainAssessment = (function () {\r\n const customSectionIds = [];\r\n\r\n // DOM\r\n let assessmentWrap;\r\n // DATA\r\n let sections;\r\n let subSections;\r\n let questionSectionSets;\r\n let questionSubSectionSets;\r\n let sectionQuestionCount;\r\n let assessmentId;\r\n let subSectionsWithAttachments;\r\n let additionalSummaryData;\r\n // dropdowns\r\n let assessmentDropdownData;\r\n let colNameDropdownMap = {\r\n AssessmentArea: 'assessmentAreas',\r\n ProviderName: 'serviceVendors',\r\n ServiceName: 'serviceTypes',\r\n FundingSource: 'fundingSource',\r\n NewOrExisting: 'newOrExisting',\r\n 'WhoSaidIt?': 'relationships',\r\n };\r\n\r\n let charLimits = {};\r\n let deleteRowsActive = false;\r\n let selectedRow;\r\n let isSortable;\r\n let readonly;\r\n\r\n function checkArrayConsistency(arr) {\r\n if (arr.length === 0) {\r\n return 'noMatch'; // or you can return null or undefined based on your use case\r\n }\r\n\r\n const firstElement = arr[0];\r\n for (let i = 1; i < arr.length; i++) {\r\n if (arr[i] !== firstElement) {\r\n return 'noMatch';\r\n }\r\n }\r\n\r\n return firstElement;\r\n }\r\n\r\n //* TEMP FUNCTION FOR RE-ORDERING ROWS ON DELETE\r\n function updateRowOrderAfterDelete(grid, questionSetId) {\r\n // grab all rows inside grid after delete\r\n const gridBody = grid.querySelector('.grid__body');\r\n const rows = [...gridBody.querySelectorAll('.grid__row')];\r\n rows.forEach((row, i) => {\r\n const order = parseInt(row.id.replaceAll('roworder', ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // grab inputs to gather answerIds\r\n const inputs = [...row.querySelectorAll('.input-field__input')];\r\n let answerIds = inputs.map(input => input.id);\r\n answerIds = answerIds.join('|');\r\n // update the row order in DB\r\n //assessmentAjax.updateAssessmentAnswerRowOrder({\r\n // ///\r\n // token: $.session.Token,\r\n // assessmentId: parseInt(assessmentId),\r\n // questionSetId: parseInt(questionSetId),\r\n // answerIds: answerIds,\r\n // newPos: parseInt(i + 1),\r\n // oldPos: parseInt(order),\r\n //});\r\n // update row id\r\n row.id = `roworder${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n //* END TEMP FUNCTION\r\n\r\n // Utils\r\n //------------------------------------\r\n async function addAnswer(id, answer, answerRow, skipped) {\r\n assessmentAjax.updateConsumerAssessmentAnswer({\r\n answerId: id,\r\n answerText: answer ? answer : '',\r\n answerRow: answerRow ? answerRow : '',\r\n skipped: skipped ? skipped : 'N',\r\n });\r\n }\r\n function clearData() {\r\n sections = {};\r\n subSections = {};\r\n questionSectionSets = {};\r\n questionSubSectionSets = {};\r\n sectionQuestionCount = {};\r\n subSectionsWithAttachments = [];\r\n }\r\n function getSectionQuestionCount() {\r\n return sectionQuestionCount;\r\n }\r\n function relationshipDropdownData() {\r\n const data = planData.getDropdownData().relationships.map(dd => {\r\n return {\r\n id: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const removeDups = data => {\r\n const flag = {};\r\n const unique = [];\r\n data.forEach(el => {\r\n if (!flag[el.id]) {\r\n flag[el.id] = true;\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n return removeDups(data);\r\n }\r\n function toggleIntentionallyBlankCheckbox(answerId, setID, disable) {\r\n let checkbox = document.getElementById(`intentionallyBlankCheckbox${answerId}`);\r\n checkbox = checkbox ? checkbox : document.getElementById(`intentionallyBlankCheckbox${setID}`);\r\n if (!checkbox) return;\r\n\r\n if (disable) {\r\n input.disableInputField(checkbox.parentElement);\r\n } else {\r\n input.enableInputField(checkbox.parentElement);\r\n }\r\n }\r\n // Conditional Questions\r\n function toggleConditionalQuestion(answer, type, conditionalQuestions) {\r\n if (conditionalQuestions.length === 1) {\r\n const questionId = conditionalQuestions[0].questionId;\r\n\r\n const question = document.getElementById(`question${questionId}`);\r\n const section = question.closest('.assessment__section');\r\n const questionSet = question.closest('.questionSet');\r\n const inputWrap = question.querySelector('.input-field');\r\n const inputEle = question.querySelector('.input-field__input');\r\n\r\n // check for radios\r\n if (!inputWrap) inputWrap = question.querySelector('.radioWrap');\r\n if (!inputEle) inputEle = question.querySelector('input');\r\n\r\n const sectionId = section.id.replace('section', '');\r\n const setId = questionSet.id.replace('set', '');\r\n const answerId = inputEle.id;\r\n\r\n if (conditionalQuestions[0].conditionalAnswerText !== answer) {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n input.disableInputField(inputWrap);\r\n if (type === 'checkbox') {\r\n inputEle.checked = false;\r\n } else {\r\n inputEle.value = '';\r\n const radios = [...inputWrap.querySelectorAll('input')];\r\n if (radios.length !== 0) {\r\n radios.forEach(radio => (radio.checked = false));\r\n }\r\n }\r\n addAnswer(answerId);\r\n } else {\r\n input.enableInputField(inputWrap);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n } else {\r\n conditionalQuestions.forEach(q => {\r\n const { questionId, conditionalAnswerText } = q;\r\n\r\n const question = document.getElementById(`question${questionId}`);\r\n const section = question.closest('.assessment__section');\r\n const questionSet = question.closest('.questionSet');\r\n let inputWrap = question.querySelector('.input-field');\r\n let inputEle = question.querySelector('.input-field__input');\r\n\r\n // check for radios\r\n if (!inputWrap) inputWrap = question.querySelector('.radioWrap');\r\n if (!inputEle) inputEle = question.querySelector('input');\r\n\r\n const sectionId = section.id.replace('section', '');\r\n const setId = questionSet.id.replace('set', '');\r\n const answerId = inputEle.id;\r\n\r\n if (conditionalAnswerText !== answer) {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n input.disableInputField(inputWrap);\r\n if (type === 'checkbox') {\r\n inputEle.checked = false;\r\n } else {\r\n inputEle.value = '';\r\n const radios = [...inputWrap.querySelectorAll('input')];\r\n if (radios.length !== 0) {\r\n radios.forEach(radio => (radio.checked = false));\r\n }\r\n }\r\n\r\n addAnswer(answerId);\r\n } else {\r\n input.enableInputField(inputWrap);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n });\r\n }\r\n\r\n markUnansweredQuestions();\r\n }\r\n // Unanswered Questions\r\n function markUnansweredQuestions() {\r\n const sectionKeys = Object.keys(sectionQuestionCount);\r\n\r\n sectionKeys.forEach(sectionKey => {\r\n const questionSetKeys = Object.keys(sectionQuestionCount[sectionKey]);\r\n let tableQuestionSets;\r\n\r\n questionSetKeys.forEach(questionSetKey => {\r\n const questionKeys = Object.keys(sectionQuestionCount[sectionKey][questionSetKey]);\r\n\r\n questionKeys.forEach(questionKey => {\r\n const { answered, required, rowOrder, leaveblank } =\r\n sectionQuestionCount[sectionKey][questionSetKey][questionKey];\r\n let questionDiv;\r\n\r\n if (!rowOrder) {\r\n // Text, Textarea, Checkbox, Radio Questions\r\n questionDiv = document.getElementById(`question${questionKey}`);\r\n if (!questionDiv) return;\r\n if (answered && required) questionDiv.classList.remove('unawnsered');\r\n if (!answered && required) questionDiv.classList.add('unawnsered');\r\n if (!answered && required && !leaveblank) questionDiv.classList.add('unawnsered');\r\n\r\n if (!required) questionDiv.classList.remove('unawnsered');\r\n } else {\r\n // Table Questions\r\n if (!tableQuestionSets) tableQuestionSets = {};\r\n if (!tableQuestionSets[questionSetKey]) tableQuestionSets[questionSetKey] = {};\r\n if (!tableQuestionSets[questionSetKey][rowOrder]) {\r\n questionDiv = document.getElementById(`question${questionKey}`);\r\n if (!questionDiv) return;\r\n const rowElement = questionDiv.closest('.grid__row');\r\n\r\n tableQuestionSets[questionSetKey][rowOrder] = {\r\n atLeastOneColumnAnswered: false,\r\n rowElement,\r\n };\r\n }\r\n if (answered || leaveblank) tableQuestionSets[questionSetKey][rowOrder].atLeastOneColumnAnswered = true;\r\n }\r\n });\r\n\r\n if (tableQuestionSets) {\r\n const tableQuestionSetsKeys = Object.keys(tableQuestionSets);\r\n if (tableQuestionSetsKeys.length > 0) {\r\n tableQuestionSetsKeys.forEach(setKey => {\r\n let tableHasAtLeastOneRowAnsered = false;\r\n let tableElement;\r\n\r\n const rowOrderKeys = Object.keys(tableQuestionSets[setKey]);\r\n rowOrderKeys.forEach((rowOrderKey, index) => {\r\n if (index === 0) {\r\n tableElement = tableQuestionSets[setKey][rowOrderKey].rowElement.closest('.grid');\r\n }\r\n\r\n if (tableQuestionSets[setKey][rowOrderKey].atLeastOneColumnAnswered) {\r\n tableQuestionSets[setKey][rowOrderKey].rowElement.classList.remove('unawnsered');\r\n tableHasAtLeastOneRowAnsered = true;\r\n } else {\r\n tableQuestionSets[setKey][rowOrderKey].rowElement.classList.add('unawnsered');\r\n }\r\n });\r\n\r\n if (!tableHasAtLeastOneRowAnsered) {\r\n tableElement.classList.add('unawnsered');\r\n tableElement.classList.remove('awnsered');\r\n } else {\r\n tableElement.classList.remove('unawnsered');\r\n tableElement.classList.add('awnsered');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n function toggleUnansweredQuestionFilter(hideOrShow) {\r\n const questions = [...document.querySelectorAll('.question')];\r\n questions.forEach(q => {\r\n if (!q.classList.contains('unawnsered')) {\r\n if (hideOrShow === 'hide') {\r\n // only show unawnsered\r\n q.style.display = 'none';\r\n } else {\r\n q.removeAttribute('style');\r\n }\r\n }\r\n });\r\n\r\n const tables = [...document.querySelectorAll('.grid')];\r\n tables.forEach(t => {\r\n if (!t.classList.contains('unawnsered')) {\r\n if (hideOrShow === 'hide') {\r\n // only show unawnsered\r\n t.style.display = 'none';\r\n } else {\r\n t.removeAttribute('style');\r\n }\r\n }\r\n });\r\n }\r\n // Events\r\n async function handleAssessmentChangeEvents(e) {\r\n if (e.target.id.includes('applicable')) {\r\n let target = e.target.id;\r\n let sectionID = target.match(/\\d+/)[0];\r\n let applied = e.target.checked ? 'Y' : 'N';\r\n\r\n planValidation.updateSectionApplicability(sectionID, applied);\r\n\r\n return;\r\n }\r\n if (e.target.id.includes('intentionallyBlankCheckbox')) {\r\n const isChecked = e.target.checked;\r\n const skipped = isChecked ? 'Y' : 'N';\r\n const isForRow = e.target.dataset.isforrow;\r\n // ids for associated textarea question/anwser\r\n let answerId = e.target.dataset.answerid;\r\n let questionId = e.target.dataset.questionid;\r\n let setId = e.target.dataset.setid;\r\n let sectionID = e.target.dataset.sectionid;\r\n\r\n if (isForRow === 'false') {\r\n addAnswer(answerId, '', '', skipped);\r\n\r\n const textAreaInput = document.getElementById(answerId);\r\n if (isChecked) {\r\n textAreaInput.value = '';\r\n input.disableInputField(textAreaInput);\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = true;\r\n } else {\r\n input.enableInputField(textAreaInput);\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = false;\r\n }\r\n } else {\r\n const questionSet = document.getElementById(`set${setId}`);\r\n let sectionID = questionSet.parentElement.parentElement.id\r\n sectionID = sectionID.replace(/\\D/g, \"\");\r\n const questionSetGridRows = [...questionSet.querySelectorAll('.grid__row:not(.grid__rowHeader)')];\r\n const questionSetActionButtons = [...questionSet.querySelectorAll('.gridActionRow button')];\r\n let questionSetId = e.target.dataset.setid;\r\n // let sectionID = e.target.dataset.sectionid;\r\n questionSetGridRows.forEach(row => {\r\n const rowCells = row.querySelectorAll('.grid__cell');\r\n \r\n rowCells.forEach(cell => {\r\n const cellInput = cell.querySelector('.input-field__input');\r\n let questionRowId = cell.id;\r\n questionRowId = questionRowId.replace(/\\D/g, \"\");\r\n\r\n addAnswer(cellInput.id, '', '', skipped);\r\n\r\n if (isChecked) {\r\n cellInput.value = '';\r\n input.disableInputField(cellInput);\r\n //sectionQuestionCount[sectionID][setId][questionId].leaveblank = true;\r\n sectionQuestionCount[sectionID][questionSetId][questionRowId].leaveblank = true;\r\n } else {\r\n input.enableInputField(cellInput);\r\n //sectionQuestionCount[sectionID][setId][questionId].leaveblank = false;\r\n sectionQuestionCount[sectionID][questionSetId][questionRowId].leaveblank = false;\r\n }\r\n });\r\n });\r\n questionSetActionButtons.forEach(btn => {\r\n if (e.target.checked) {\r\n btn.classList.add('disabled');\r\n } else {\r\n btn.classList.remove('disabled');\r\n }\r\n });\r\n }\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n return;\r\n }\r\n\r\n const tagName = e.target.tagName;\r\n const type = e.target.type;\r\n\r\n if (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {\r\n let questionDiv = e.target.closest('.question');\r\n if (!questionDiv) questionDiv = e.target.closest('.grid__cell');\r\n\r\n let sectionDiv;\r\n let questionSetDiv;\r\n let sectionId;\r\n let setId;\r\n let questionId;\r\n let conditionalQuestions;\r\n\r\n if (questionDiv) {\r\n sectionDiv = e.target.closest('.assessment__section');\r\n sectionId = sectionDiv.id.replace('section', '');\r\n\r\n const isCustomSection = customSectionIds.includes(sectionId);\r\n if (isCustomSection) return;\r\n\r\n questionSetDiv = e.target.closest('.questionSet');\r\n setId = questionSetDiv.id.replace('set', '');\r\n questionId = questionDiv ? questionDiv.id.replace('question', '') : null;\r\n conditionalQuestions = questionId ? assessment.getConditionalQuestions(questionId) : null;\r\n }\r\n\r\n const answerId = e.target.id;\r\n\r\n let answer;\r\n\r\n if (type === 'checkbox') {\r\n answer = e.target.checked === true ? '1' : '0';\r\n addAnswer(answerId, answer);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = e.target.checked === true ? true : false;\r\n\r\n const questionIdCategory = planValidation.findQuestionIdCategory(questionId);\r\n\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n if (questionIdCategory !== 'Variable not found in the object' && questionIdCategory !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, questionIdCategory, e.target.checked);\r\n }\r\n\r\n if (questionIdCategory === 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, 'noSupport', true);\r\n\r\n for (const key in assessmentValidationCheck.servicesAndSupportsChecked[sectionId]) {\r\n if (key !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, key, false);\r\n }\r\n }\r\n }\r\n\r\n // checks the status of the buttons and adds/removes error class if needed for specific section\r\n planValidation.servicesAndSupportsBtnCheck(sectionId);\r\n\r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation();\r\n }\r\n if (type === 'radio') {\r\n const radioLabelText = e.target.nextSibling.innerHTML;\r\n answer = radioLabelText === 'yes' ? '1' : '0';\r\n addAnswer(answerId, answer);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n if (type === 'text' || type === 'textarea') {\r\n answer = e.target.value;\r\n\r\n if (answer !== '') {\r\n await addAnswer(answerId, answer);\r\n\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n } else {\r\n await addAnswer(answerId);\r\n\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n }\r\n }\r\n\r\n if (sectionId === '41') {\r\n await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n if (type === 'select-one') {\r\n if (e.target.id === 'pathDropdown') return;\r\n\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n answer = selectedOption.value;\r\n\r\n if (answer !== '') {\r\n addAnswer(answerId, answer);\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n\r\n planValidation.updateAnswerWorkingSection(assessmentId);\r\n } else {\r\n addAnswer(answerId);\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n }\r\n\r\n planValidation.updateAnswerWorkingSection(assessmentId);\r\n }\r\n }\r\n if (type === 'date') {\r\n answer = e.target.value;\r\n\r\n if (answer !== '') {\r\n addAnswer(answerId, answer);\r\n } else {\r\n addAnswer(answerId);\r\n }\r\n }\r\n\r\n if (conditionalQuestions && conditionalQuestions.length > 0) {\r\n toggleConditionalQuestion(answer, type, conditionalQuestions);\r\n return;\r\n }\r\n\r\n markUnansweredQuestions();\r\n\r\n if (type === 'textarea') {\r\n if (!questionSetDiv.classList.contains('questionSet__grid')) {\r\n const hideCheckbox = answer !== '' ? true : false;\r\n toggleIntentionallyBlankCheckbox(answerId, setId, hideCheckbox);\r\n } else {\r\n const setGrid = questionSetDiv.querySelector('.grid');\r\n if (setGrid.classList.contains('awnsered')) {\r\n toggleIntentionallyBlankCheckbox(answerId, setId, true);\r\n } else {\r\n toggleIntentionallyBlankCheckbox(answerId, setId, false);\r\n }\r\n }\r\n }\r\n \r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n return;\r\n }\r\n }\r\n\r\n // Sections\r\n //------------------------------------\r\n function addSection({ order, title, id, applicable, isAssessment }) {\r\n const isCustomSection = customSectionIds.includes(id);\r\n let markup;\r\n\r\n if (!isCustomSection) {\r\n markup = buildSectionMarkup({ title, id, applicable, isAssessment });\r\n }\r\n\r\n if (!sections[order]) sections[order] = { id, markup };\r\n }\r\n function buildSectionMarkup({ title, id, applicable, isAssessment }) {\r\n const section = document.createElement('div');\r\n section.classList.add('assessment__section');\r\n section.id = `section${id}`;\r\n\r\n const sectionHeading = document.createElement('div');\r\n sectionHeading.classList.add('sectionHeading');\r\n sectionHeading.id = `sec${id}`;\r\n\r\n const sectionHeadingInner = document.createElement('div');\r\n sectionHeadingInner.classList.add('sectionHeading__inner');\r\n\r\n const applicableCheckbox = input.buildNativeCheckbox({\r\n id: `applicable${id}`,\r\n isChecked: applicable,\r\n isDisabled: false,\r\n className: 'applicableCheckbox',\r\n callback: e => {\r\n if (e.target.checked) {\r\n section.classList.remove('nonApplicable');\r\n } else {\r\n section.classList.add('nonApplicable');\r\n }\r\n\r\n assessment.toggleIsSectionApplicable(id, e.target.checked);\r\n\r\n // assessment.showApplicableWarningMessage(yesOrNo => {\r\n // if (yesOrNo === 'no') {\r\n // e.target.checked = true;\r\n // return;\r\n // }\r\n\r\n // section.classList.add('nonApplicable');\r\n // assessment.toggleIsSectionApplicable(id, e.target.checked);\r\n // });\r\n },\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(applicableCheckbox);\r\n }\r\n const sectionTitle = document.createElement('h2');\r\n sectionTitle.innerText = title;\r\n\r\n if (isAssessment === 'Y') {\r\n sectionHeadingInner.appendChild(applicableCheckbox);\r\n if (!applicable) {\r\n section.classList.add('nonApplicable');\r\n }\r\n }\r\n sectionHeadingInner.appendChild(sectionTitle);\r\n sectionHeading.appendChild(sectionHeadingInner);\r\n section.appendChild(sectionHeading);\r\n if (title === 'WORKING/ NOT WORKING') {\r\n const sectionPrompt = document.createElement('p');\r\n sectionPrompt.classList.add('sectionPrompt');\r\n sectionPrompt.innerText = 'Be sure to include Working/Not Working technology solutions.';\r\n section.appendChild(sectionPrompt);\r\n }\r\n\r\n return section;\r\n }\r\n function buildSectionFooter(id) {\r\n const footer = document.createElement('div');\r\n footer.classList.add('sectionFooter');\r\n\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n let readOnly;\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n //number of paid supports attached to this section\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;\r\n\r\n // returns true if the section has been checked\r\n let paidSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport;\r\n let additionalSupportChecked =\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport ||\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].technology ||\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource;\r\n let professionalReferralChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral;\r\n let potentialOutcomeChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome;\r\n\r\n const outcomesBtn = button.build({\r\n //text: `Add Outcome (${potentialOutcomeCount})`,\r\n text: `Add Outcome`,\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `outcomesBtn${id}`,\r\n callback: () => {\r\n planOutcomes.showAddNewOutcomePopup(id, charLimits.outcomes);\r\n },\r\n });\r\n const paidSupportBtn = button.build({\r\n //text: `Add Paid Support (${paidSupportCount})`,\r\n text: 'Add Paid Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `paidSupportBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddPaidSupportPopup({\r\n popupData: { assessmentAreaId: id },\r\n isNew: true,\r\n fromAssessment: true,\r\n charLimits: charLimits.servicesSupports,\r\n });\r\n },\r\n });\r\n const additionalSupportBtn = button.build({\r\n /*text: `Add Additional Support (${additionalSupportCount})`,*/\r\n text: 'Add Additional Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `additionalSupportBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddAdditionalSupportPopup(\r\n { assessmentAreaId: id },\r\n true,\r\n true,\r\n charLimits.servicesSupports,\r\n );\r\n },\r\n });\r\n const profRefBtn = button.build({\r\n /*text: `Add Professional Referral (${professionalReferralCounts})`,*/\r\n text: 'Add Professional Referral',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `profRefBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddProfessionalReferralPopup(\r\n { assessmentAreaId: id },\r\n true,\r\n true,\r\n charLimits.servicesSupports,\r\n );\r\n },\r\n });\r\n\r\n if (readOnly) {\r\n outcomesBtn.classList.add('disabled');\r\n paidSupportBtn.classList.add('disabled');\r\n additionalSupportBtn.classList.add('disabled');\r\n profRefBtn.classList.add('disabled');\r\n }\r\n\r\n //Add error class to buttons that are checked and have 0 outcomes attached to them\r\n if (paidSupportChecked && paidSupportCount === 0) {\r\n paidSupportBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (additionalSupportChecked && additionalSupportCount === 0) {\r\n additionalSupportBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (professionalReferralChecked && professionalReferralCounts === 0) {\r\n profRefBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (potentialOutcomeChecked && potentialOutcomeCount === 0) {\r\n outcomesBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(outcomesBtn);\r\n btnWrap.appendChild(paidSupportBtn);\r\n btnWrap.appendChild(additionalSupportBtn);\r\n btnWrap.appendChild(profRefBtn);\r\n\r\n footer.appendChild(btnWrap);\r\n\r\n return footer;\r\n }\r\n\r\n // Sub Sections\r\n //------------------------------------\r\n function addSubSection(order, title, id, sectionId) {\r\n const markup = buildSubSectionMarkup(title, id);\r\n\r\n if (!subSections[sectionId]) subSections[sectionId] = {};\r\n if (!subSections[sectionId][order]) subSections[sectionId][order] = { id, markup };\r\n if (title.match(/Specialized tools*/g)) subSectionsWithAttachments.push(id);\r\n }\r\n function buildSubSectionMarkup(title, id) {\r\n const subSection = document.createElement('div');\r\n subSection.classList.add('assessment__subSection');\r\n\r\n const subSectionHeading = document.createElement('h2');\r\n // subSectionHeading.innerHTML = `${title}`;\r\n subSectionHeading.innerHTML = `${title}`;\r\n subSectionHeading.classList.add('subSectionHeading');\r\n subSectionHeading.id = `subsec${id}`;\r\n\r\n subSection.appendChild(subSectionHeading);\r\n\r\n return subSection;\r\n }\r\n\r\n // Question Sets & Grids\r\n //------------------------------------\r\n // Grids\r\n //---------\r\n async function deleteSelectedRows(grid, gridBody, questionSetId) {\r\n const planId = plan.getCurrentPlanId();\r\n const successfulDelete = await assessment.deleteGridRows(planId, questionSetId, [selectedRow.id]);\r\n gridBody.removeChild(selectedRow.target);\r\n addAnswer(selectedRow.id);\r\n\r\n //* TEMP -REMOVE THIS ONCE HANDELED IN BACKEND\r\n updateRowOrderAfterDelete(grid, questionSetId);\r\n //* END TEMP\r\n }\r\n function buildGridHeaderRow() {\r\n const gridHeaderRow = document.createElement('div');\r\n gridHeaderRow.classList.add('grid__row', 'grid__rowHeader');\r\n return gridHeaderRow;\r\n }\r\n function buildGridHeaderCell(text, prompt) {\r\n const gridHeaderCell = document.createElement('div');\r\n gridHeaderCell.classList.add('grid__cell');\r\n gridHeaderCell.innerHTML = `

    ${text}

    `;\r\n gridHeaderCell.innerHTML += `

    ${prompt}

    `;\r\n\r\n if (text.toLowerCase().includes('date')) {\r\n gridHeaderCell.setAttribute('data-cellType', 'date');\r\n }\r\n return gridHeaderCell;\r\n }\r\n function buildGridRow(rok) {\r\n const gridRow = document.createElement('div');\r\n gridRow.classList.add('grid__row');\r\n gridRow.id = `roworder${rok}`;\r\n return gridRow;\r\n }\r\n function buildGridRowCell(data) {\r\n const { answerStyle, answerId, answerText, questionRowId, colName } = data;\r\n\r\n const gridCell = document.createElement('div');\r\n gridCell.classList.add('grid__cell');\r\n gridCell.id = `question${questionRowId}`;\r\n\r\n let questionInput;\r\n let hasStaticText;\r\n\r\n let textAreaCharLimit = 10000;\r\n\r\n switch (answerStyle) {\r\n case 'TEXTAREA': {\r\n // For text areas with colName \"What’s Working\" and \"What's Not Working\"\r\n if (colName.trim().split(' ').pop() === 'Working') {\r\n textAreaCharLimit = 1000;\r\n }\r\n\r\n questionInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: textAreaCharLimit,\r\n forceCharLimit: true,\r\n classNames: ['autosize', `${data.questionId}`],\r\n });\r\n break;\r\n }\r\n case 'TEXT': {\r\n questionInput = input.build({\r\n type: 'text',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: 10000,\r\n forceCharLimit: true,\r\n });\r\n break;\r\n }\r\n case 'DROPDOWN': {\r\n questionInput = dropdown.build({\r\n dropdownId: answerId,\r\n style: 'secondary',\r\n });\r\n\r\n const colKey = UTIL.camelize(colName);\r\n const dataKey = colNameDropdownMap[colKey];\r\n\r\n if (!colKey || !dataKey) break;\r\n\r\n if (dataKey === 'relationships') {\r\n const includeSupports = false;\r\n planData.populateRelationshipDropdown(questionInput, answerText, includeSupports);\r\n break;\r\n }\r\n\r\n const data = assessmentDropdownData[dataKey].map(d => {\r\n let dID, dText;\r\n\r\n if (Object.keys(d)[0].toLowerCase().includes('id')) {\r\n dID = Object.keys(d)[0];\r\n dText = Object.keys(d)[1];\r\n } else {\r\n dID = Object.keys(d)[1];\r\n dText = Object.keys(d)[0];\r\n }\r\n\r\n return {\r\n value: d[dID],\r\n text: d[dText],\r\n };\r\n });\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(questionInput, data, answerText);\r\n break;\r\n }\r\n case 'DATE': {\r\n gridCell.setAttribute('data-cellType', 'date');\r\n questionInput = input.build({\r\n type: 'date',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n });\r\n break;\r\n }\r\n case 'STATICTEXT': {\r\n gridCell.classList.add('staticCell');\r\n gridCell.innerHTML = `

    ${answerText}

    `;\r\n hasStaticText = true;\r\n break;\r\n }\r\n }\r\n\r\n if (questionInput) gridCell.appendChild(questionInput);\r\n if (readonly || !$.session.planUpdate) {\r\n if (questionInput) input.disableInputField(questionInput);\r\n }\r\n\r\n return { markup: gridCell, hasStaticText };\r\n }\r\n function buildQuestionGridMarkup(questions, questionSetId, allowRowInsert, sectionId) {\r\n let addRowBtn, deleteRowsBtn, cancelDeleteRowsBtn;\r\n let hasStaticText = false;\r\n let areAllGridAnswersEmpty = true;\r\n let questionIds = [];\r\n\r\n const COL_NAME_MAP = {};\r\n sectionQuestionCount[sectionId][questionSetId] = {};\r\n\r\n const columnHeadings = [];\r\n const tableRowData = {};\r\n\r\n Object.entries(questions).forEach(([rowKey, rowQuestions], rowIndex) => {\r\n if (!tableRowData[rowKey]) {\r\n tableRowData[rowKey] = [];\r\n }\r\n\r\n Object.entries(rowQuestions).forEach(([questionKey, questionData], index) => {\r\n const { id: questionId, text, answerText, answerId, answerStyle, skipped } = questionData;\r\n const questionRowId = `${questionId}${rowKey}`;\r\n\r\n if (rowIndex === 0) {\r\n COL_NAME_MAP[index] = text;\r\n columnHeadings.push(text);\r\n }\r\n\r\n if (answerStyle !== 'STATICTEXT') {\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId] = {\r\n answered: answerText && answerText !== '' ? true : false,\r\n required: false,\r\n rowOrder: rowKey,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n }\r\n\r\n const cellData = {\r\n cellId: `question${questionRowId}`,\r\n inputId: answerId,\r\n inputValue: answerText,\r\n inputType: answerStyle,\r\n columnName: text,\r\n };\r\n\r\n if (answerStyle === 'DROPDOWN') {\r\n const colKey = UTIL.camelize(COL_NAME_MAP[index]);\r\n const dataKey = colNameDropdownMap[colKey];\r\n\r\n const data = assessmentDropdownData[dataKey].map(d => {\r\n let dID, dText;\r\n\r\n if (Object.keys(d)[0].toLowerCase().includes('id')) {\r\n dID = Object.keys(d)[0];\r\n dText = Object.keys(d)[1];\r\n } else {\r\n dID = Object.keys(d)[1];\r\n dText = Object.keys(d)[0];\r\n }\r\n\r\n return {\r\n value: d[dID],\r\n text: d[dText],\r\n };\r\n });\r\n\r\n cellData.inputData = data;\r\n }\r\n\r\n tableRowData[rowKey].push(cellData);\r\n });\r\n });\r\n\r\n const grid = document.createElement('div');\r\n grid.classList.add('grid');\r\n\r\n const gridBody = document.createElement('div');\r\n gridBody.classList.add('grid__body');\r\n\r\n if (isSortable) {\r\n new Sortable(gridBody, {\r\n handle: '.dragHandle',\r\n draggable: '>.grid__row',\r\n onSort: evt => {\r\n const gridCells = [...evt.item.querySelectorAll('.input-field__input')];\r\n\r\n let cellIds = gridCells.map(cell => cell.id);\r\n cellIds = cellIds.join(',');\r\n\r\n const oldPos = evt.oldIndex + 1;\r\n const newPos = evt.newIndex + 1;\r\n\r\n evt.item.id = `roworder${newPos}`;\r\n\r\n assessmentAjax.updateAssessmentAnswerRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(assessmentId),\r\n questionSetId: parseInt(questionSetId),\r\n answerIds: cellIds,\r\n oldPos: parseInt(oldPos),\r\n newPos: parseInt(newPos),\r\n });\r\n\r\n const rows = [...gridBody.querySelectorAll('.grid__row')];\r\n rows.forEach((row, i) => {\r\n const order = parseInt(row.id.replaceAll('roworder', ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // update row id\r\n row.id = `roworder${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n },\r\n });\r\n\r\n grid.classList.add('sortableTable');\r\n }\r\n\r\n let isLeftBlankCheckboxChecked = [];\r\n const rowOrderKeys = Object.keys(questions);\r\n rowOrderKeys.forEach((rok, rowIndex) => {\r\n const gridHeaderRow = buildGridHeaderRow();\r\n const gridRow = buildGridRow(rok);\r\n\r\n const questionOrderKeys = Object.keys(questions[rok]);\r\n questionOrderKeys.forEach((qok, questionIndex) => {\r\n const { id: questionId, text, answerText, answerId, answerStyle, prompt, skipped } = questions[rok][qok];\r\n\r\n const questionRowId = `${questionId}${rok}`;\r\n\r\n isLeftBlankCheckboxChecked.push(skipped);\r\n\r\n if (answerStyle !== 'STATICTEXT') {\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId] = {\r\n answered: false,\r\n required: false,\r\n rowOrder: rok,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n\r\n if (answerText && answerText !== '') {\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId].answered = true;\r\n areAllGridAnswersEmpty = false;\r\n }\r\n }\r\n\r\n if (rowIndex === 0) {\r\n questionIds.push(questionId);\r\n\r\n COL_NAME_MAP[questionIndex] = text;\r\n\r\n const gridHeaderCell = buildGridHeaderCell(text, prompt);\r\n gridHeaderCell.style.width = `${100 / questionOrderKeys.length}%`;\r\n\r\n if (questionIndex === 0 && isSortable) {\r\n var td = document.createElement('div');\r\n td.classList.add('dragHandle');\r\n gridHeaderRow.appendChild(td);\r\n }\r\n\r\n gridHeaderRow.appendChild(gridHeaderCell);\r\n }\r\n\r\n const gridCell = buildGridRowCell({\r\n questionId,\r\n answerStyle,\r\n answerId,\r\n answerText,\r\n questionRowId,\r\n colName: COL_NAME_MAP[questionIndex],\r\n });\r\n gridCell.markup.style.width = `${100 / questionOrderKeys.length}%`;\r\n\r\n hasStaticText = gridCell.hasStaticText;\r\n\r\n if (questionIndex === 0 && isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n\r\n gridRow.appendChild(cell);\r\n }\r\n\r\n gridRow.appendChild(gridCell.markup);\r\n });\r\n\r\n if (rowIndex === 0) {\r\n grid.appendChild(gridHeaderRow);\r\n }\r\n gridBody.appendChild(gridRow);\r\n });\r\n rowOrderKeys.forEach((rok, rowIndex) => {\r\n const questionOrderKeys = Object.keys(questions[rok]);\r\n questionOrderKeys.forEach((qok, questionIndex) => {\r\n const { id: questionId, text, answerText, answerId, answerStyle, prompt, skipped } = questions[rok][qok];\r\n const questionRowId = `${questionId}${rok}`;\r\n\r\n if (!areAllGridAnswersEmpty && skipped === 'Y') {\r\n addAnswer(answerId, answerText, rok, 'N');\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId].leaveblank = false;\r\n }\r\n });\r\n });\r\n grid.appendChild(gridBody);\r\n\r\n if (allowRowInsert === 'True') {\r\n const gridActionRow = document.createElement('div');\r\n gridActionRow.classList.add('gridActionRow');\r\n\r\n addRowBtn = button.build({\r\n text: 'Add Row',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addRowBtn',\r\n });\r\n deleteRowsBtn = button.build({\r\n text: 'Delete Row',\r\n type: 'contained',\r\n style: 'secondary',\r\n id: 'deleteRowBtn',\r\n classNames: 'deleteRowBtn',\r\n });\r\n cancelDeleteRowsBtn = button.build({\r\n text: 'Cancel Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n id: 'cancelDeleteRowsBtn',\r\n classNames: ['cancelDeleteRowsBtn', 'hidden'],\r\n });\r\n\r\n gridActionRow.appendChild(addRowBtn);\r\n gridActionRow.appendChild(deleteRowsBtn);\r\n gridActionRow.appendChild(cancelDeleteRowsBtn);\r\n grid.appendChild(gridActionRow);\r\n\r\n let currentRowOrder;\r\n\r\n grid.addEventListener('click', async e => {\r\n const gridRows = [...grid.querySelectorAll('.grid__body .grid__row')];\r\n\r\n const target = e.target;\r\n\r\n if (deleteRowsActive && target.classList.contains('grid__row')) {\r\n if (gridRows.length === 1) return;\r\n\r\n const isSeleted = target.classList.contains('selected');\r\n const rowId = target.id.replace('roworder', '');\r\n\r\n if (!isSeleted) {\r\n const prevSelectedRow = document.querySelector('.grid__row.selected');\r\n if (prevSelectedRow) prevSelectedRow.classList.remove('selected');\r\n // set new selecrted row\r\n selectedRow = {\r\n id: rowId,\r\n target,\r\n };\r\n target.classList.add('selected');\r\n } else {\r\n target.classList.remove('selected');\r\n selectedRow = undefined;\r\n }\r\n }\r\n\r\n if (target === addRowBtn) {\r\n const gridBody = target.closest('.grid').querySelector('.grid__body');\r\n const planId = plan.getCurrentPlanId();\r\n const newRowData = await assessment.insertAssessmentGridRowAnswers(planId, questionSetId);\r\n const gridRow = document.createElement('div');\r\n gridRow.classList.add('grid__row');\r\n currentRowOrder = gridBody.querySelectorAll('.grid__row').length + 1;\r\n gridRow.id = `roworder${currentRowOrder}`;\r\n\r\n if (isSortable) {\r\n var cell = document.createElement('div');\r\n cell.classList.add('dragHandle');\r\n cell.innerHTML = icons.drag;\r\n\r\n gridRow.appendChild(cell);\r\n }\r\n\r\n newRowData.forEach((nrd, index) => {\r\n let { answerId, answerRow, answerText, answerStyle, questionId, hideOnAssessment, skipped } = nrd;\r\n const isAnswered = answerText && answerText !== '' ? true : false;\r\n const questionRowId = `${questionId}${currentRowOrder}`;\r\n if (hideOnAssessment === '1') return;\r\n\r\n sectionQuestionCount[sectionId][questionSetId][questionRowId] = {\r\n answered: false,\r\n rowOrder: currentRowOrder,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n\r\n const colName = COL_NAME_MAP[index];\r\n\r\n //if (index === 0) gridRow.id = `roworder${answerRow}`;\r\n\r\n const gridCell = document.createElement('div');\r\n gridCell.classList.add('grid__cell');\r\n gridCell.id = `question${questionRowId}`;\r\n\r\n let textAreaCharLimit = 10000;\r\n\r\n switch (answerStyle) {\r\n case 'TEXTAREA': {\r\n if (data.colName === 'What’s Working' || data.colName === 'What’s Not Working') {\r\n textAreaCharLimit = 1000;\r\n }\r\n\r\n const questionInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: isAnswered ? 'autosize' : ['autosize', 'unawnsered'],\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: textAreaCharLimit,\r\n forceCharLimit: true,\r\n attributes: [{ key: 'data-answer-row', value: answerRow }],\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInput);\r\n }\r\n\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n case 'TEXT': {\r\n const questionInput = input.build({\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: isAnswered ? 'unawnsered' : '',\r\n id: answerId,\r\n value: answerText ? answerText : '',\r\n charLimit: 1000,\r\n forceCharLimit: true,\r\n attributes: [{ key: 'data-answer-row', value: answerRow }],\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInput);\r\n }\r\n\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n case 'DROPDOWN': {\r\n const questionInput = dropdown.build({\r\n dropdownId: answerId,\r\n style: 'secondary',\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInput);\r\n }\r\n\r\n const colKey = UTIL.camelize(colName);\r\n const dataKey = colNameDropdownMap[colKey];\r\n\r\n if (dataKey === 'relationships') {\r\n const includeSupports = false;\r\n planData.populateRelationshipDropdown(questionInput, answerText, includeSupports);\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n\r\n const data = assessmentDropdownData[dataKey].map(d => {\r\n let dID, dText;\r\n\r\n if (Object.keys(d)[0].toLowerCase().includes('id')) {\r\n dID = Object.keys(d)[0];\r\n dText = Object.keys(d)[1];\r\n } else {\r\n dID = Object.keys(d)[1];\r\n dText = Object.keys(d)[0];\r\n }\r\n\r\n return {\r\n value: d[dID],\r\n text: d[dText],\r\n };\r\n });\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(questionInput, data, answerText);\r\n\r\n gridCell.appendChild(questionInput);\r\n break;\r\n }\r\n case 'DATE': {\r\n return;\r\n }\r\n }\r\n\r\n addAnswer(answerId, answerText, answerRow);\r\n\r\n gridRow.appendChild(gridCell);\r\n });\r\n\r\n gridBody.appendChild(gridRow);\r\n DOM.autosizeTextarea();\r\n\r\n let firstCol;\r\n\r\n if (isSortable) {\r\n firstCol = gridRow.children[1];\r\n } else {\r\n firstCol = gridRow.children[0];\r\n }\r\n const colInput = firstCol.querySelector('.input-field__input');\r\n colInput.focus();\r\n\r\n if (sectionId === '41') {\r\n await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n if (target === deleteRowsBtn) {\r\n if (deleteRowsActive) {\r\n await deleteSelectedRows(grid, gridBody, questionSetId);\r\n\r\n questionIds.forEach(qId => {\r\n const key = `${qId}${selectedRow.id}`;\r\n delete sectionQuestionCount[sectionId][questionSetId][key];\r\n });\r\n\r\n let isGridEmptyNow = true;\r\n\r\n Object.values(sectionQuestionCount[sectionId][questionSetId]).forEach(q => {\r\n if (q.answered) {\r\n isGridEmptyNow = false;\r\n }\r\n });\r\n\r\n if (isGridEmptyNow) {\r\n grid.classList.add('unanswered');\r\n toggleIntentionallyBlankCheckbox('', questionSetId, false);\r\n }\r\n\r\n if (sectionId === '41') {\r\n await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n\r\n currentRowOrder = gridBody.querySelectorAll('.grid__row').length + 1;\r\n deleteRowsActive = !deleteRowsActive;\r\n\r\n if (deleteRowsActive) {\r\n grid.classList.add('delteActive');\r\n selectedRow = undefined;\r\n deleteRowsBtn.innerText = 'Delete Selected Row';\r\n deleteRowsBtn.classList.add('selected');\r\n cancelDeleteRowsBtn.classList.remove('hidden');\r\n } else {\r\n grid.classList.remove('delteActive');\r\n deleteRowsBtn.innerText = 'Delete Row';\r\n deleteRowsBtn.classList.remove('selected');\r\n cancelDeleteRowsBtn.classList.add('hidden');\r\n }\r\n }\r\n if (target === cancelDeleteRowsBtn) {\r\n selectedRow = undefined;\r\n deleteRowsActive = false;\r\n const row = grid.querySelector('.grid__row.selected');\r\n if (row) row.classList.remove('selected');\r\n grid.classList.remove('delteActive');\r\n deleteRowsBtn.innerText = 'Delete Row';\r\n deleteRowsBtn.classList.remove('selected');\r\n cancelDeleteRowsBtn.classList.add('hidden');\r\n }\r\n });\r\n }\r\n\r\n if (questionSetId !== '182') {\r\n // intentionally blank checkbox\r\n let isChecked = checkArrayConsistency(isLeftBlankCheckboxChecked);\r\n isChecked = !areAllGridAnswersEmpty ? 'N' : isChecked;\r\n\r\n const intentionallyBlankCheckbox = input.buildCheckbox({\r\n text: 'Intentionally left blank',\r\n id: `intentionallyBlankCheckbox${questionSetId}`,\r\n className: 'intentionallyBlankCheckbox',\r\n isChecked: isChecked === 'Y' ? true : false,\r\n isDisabled: readonly,\r\n attributes: [\r\n { key: 'data-setid', value: questionSetId },\r\n { key: 'data-isforrow', value: true },\r\n ],\r\n });\r\n\r\n grid.appendChild(intentionallyBlankCheckbox);\r\n\r\n if (!areAllGridAnswersEmpty) {\r\n input.disableInputField(intentionallyBlankCheckbox);\r\n }\r\n }\r\n\r\n if (hasStaticText) grid.classList.add('staticText');\r\n\r\n return grid;\r\n }\r\n // Text, checkboxes, radio\r\n //---------\r\n function buildTextInput(data) {\r\n const { answerId, answerText, conditionalQuestionId, conditionalAnswerText, sectionId, setId, questionId } = data;\r\n\r\n const questionInputMarkup = input.build({\r\n type: 'text',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n charLimit: 10000,\r\n forceCharLimit: true,\r\n });\r\n\r\n if (conditionalQuestionId !== '') {\r\n const parentQuestion = assessment.getQuestionDataById(conditionalQuestionId);\r\n const parentAnswerText = parentQuestion && parentQuestion.answerText;\r\n\r\n if (parentAnswerText !== conditionalAnswerText) {\r\n //questionInputMarkup.classList.add('disabled');\r\n input.disableInputField(questionInputMarkup);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n } else {\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n } else {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n }\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildTextareaInput(data) {\r\n const { answerId, answerText, conditionalQuestionId, conditionalAnswerText, sectionId, setId, questionId } = data;\r\n\r\n let charLimit = 10000;\r\n\r\n const questionInputMarkup = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n charLimit,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n\r\n if (conditionalQuestionId !== '') {\r\n const parentQuestion = assessment.getQuestionDataById(conditionalQuestionId);\r\n const parentAnswerText = parentQuestion && parentQuestion.answerText;\r\n\r\n if (parentAnswerText !== conditionalAnswerText) {\r\n //questionInputMarkup.classList.add('disabled');\r\n input.disableInputField(questionInputMarkup);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n } else {\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n } else {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n }\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildCheckboxInput(data) {\r\n const {\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n readOnly,\r\n sectionId,\r\n setId,\r\n questionId,\r\n } = data;\r\n\r\n const isChecked = answerText && answerText === '1' ? true : false;\r\n\r\n const questionIdCategory = planValidation.findQuestionIdCategory(questionId);\r\n\r\n if (questionIdCategory !== 'Variable not found in the object' && questionIdCategory !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, questionIdCategory, isChecked);\r\n }\r\n\r\n const questionInputMarkup = input.buildNativeCheckbox({\r\n id: answerId,\r\n isChecked,\r\n isDisabled: readOnly,\r\n });\r\n\r\n if (conditionalQuestionId !== '') {\r\n const parentQuestion = assessment.getQuestionDataById(conditionalQuestionId);\r\n const parentAnswerText = parentQuestion && parentQuestion.answerText;\r\n\r\n if (parentAnswerText !== conditionalAnswerText) {\r\n //questionInputMarkup.classList.add('disabled');\r\n input.disableInputField(questionInputMarkup);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n } else {\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n sectionQuestionCount[sectionId][setId][questionId].answered = isChecked;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n }\r\n } else {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = isChecked;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n }\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildRadioInput(data) {\r\n const { sectionId, setId, questionId, answerOptions, answerId, answerText, readOnly } = data;\r\n\r\n const questionInputMarkup = document.createElement('div');\r\n questionInputMarkup.classList.add('radioWrap');\r\n\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n\r\n const options = answerOptions.split(',');\r\n options.forEach(option => {\r\n const btnOpts = {\r\n style: 'secondary',\r\n name: questionId,\r\n id: answerId,\r\n isDisabled: readOnly,\r\n };\r\n\r\n if (answerText === option) {\r\n btnOpts.isChecked = true;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n\r\n switch (option) {\r\n case '0': {\r\n btnOpts.text = 'no';\r\n break;\r\n }\r\n case '1': {\r\n btnOpts.text = 'yes';\r\n break;\r\n }\r\n case '2': {\r\n btnOpts.text = 'N/A';\r\n break;\r\n }\r\n default: {\r\n btnOpts.text = option;\r\n break;\r\n }\r\n }\r\n\r\n const radioInput = input.buildRadio(btnOpts);\r\n questionInputMarkup.appendChild(radioInput);\r\n });\r\n\r\n const eraser = document.createElement('div');\r\n eraser.innerHTML += icons.eraser;\r\n questionInputMarkup.appendChild(eraser);\r\n\r\n eraser.addEventListener('click', () => {\r\n // clear out answer\r\n addAnswer(answerId, '');\r\n // mark unanswered\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n // clear radios\r\n const radios = [...questionInputMarkup.querySelectorAll('input')];\r\n radios.forEach(radio => (radio.checked = false));\r\n // clear conditionals\r\n const conditionalQuestions = assessment.getConditionalQuestions(questionId);\r\n toggleConditionalQuestion('', 'radio', conditionalQuestions);\r\n });\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildDateInput(data) {\r\n const { answerId, answerText, sectionId, setId, questionId } = data;\r\n\r\n const questionInputMarkup = input.build({\r\n type: 'date',\r\n style: 'secondary',\r\n id: answerId,\r\n value: answerText,\r\n });\r\n\r\n sectionQuestionCount[sectionId][setId][questionId].answered = answerText === '' ? false : true;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n\r\n return questionInputMarkup;\r\n }\r\n function buildQuestionMarkup(setId, questionData, sectionId, readOnly, subSectionId) {\r\n const {\r\n answerOptions,\r\n answerStyle,\r\n answerText,\r\n answerId,\r\n conditionalAnswerText,\r\n conditionalQuestionId,\r\n id: questionId,\r\n prompt,\r\n requiredAnswer,\r\n text,\r\n skipped,\r\n } = questionData;\r\n\r\n let addAttachmentButton = false;\r\n\r\n if (subSectionId && subSectionsWithAttachments.includes(subSectionId)) addAttachmentButton = true;\r\n\r\n sectionQuestionCount[sectionId][setId][questionId] = {\r\n answered: null,\r\n required: null,\r\n leaveblank: skipped === 'N' ? false : true,\r\n };\r\n\r\n const question = document.createElement('div');\r\n question.classList.add('question');\r\n question.id = `question${questionId}`;\r\n if (conditionalQuestionId !== '') {\r\n question.classList.add('conditional');\r\n }\r\n\r\n let questionInputMarkup;\r\n\r\n switch (answerStyle) {\r\n case 'TEXT': {\r\n questionInputMarkup = buildTextInput({\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n sectionId,\r\n setId,\r\n questionId,\r\n });\r\n question.innerHTML = `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n question.appendChild(questionInputMarkup);\r\n break;\r\n }\r\n case 'TEXTAREA': {\r\n questionInputMarkup = buildTextareaInput({\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n sectionId,\r\n setId,\r\n questionId,\r\n text,\r\n });\r\n question.innerHTML = `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n question.appendChild(questionInputMarkup);\r\n\r\n // intentionally blank checkbox\r\n const intentionallyBlankCheckbox = input.buildCheckbox({\r\n text: 'Intentionally left blank',\r\n id: `intentionallyBlankCheckbox${answerId}`,\r\n className: 'intentionallyBlankCheckbox',\r\n isChecked: skipped === 'Y' ? true : false,\r\n isDisabled: readOnly,\r\n attributes: [\r\n { key: 'data-setid', value: setId },\r\n { key: 'data-sectionid', value: sectionId },\r\n { key: 'data-questionid', value: questionId },\r\n { key: 'data-answerid', value: answerId },\r\n { key: 'data-isforrow', value: false },\r\n ],\r\n });\r\n question.appendChild(intentionallyBlankCheckbox);\r\n if (answerText) {\r\n input.disableInputField(intentionallyBlankCheckbox);\r\n }\r\n if (skipped === 'Y') {\r\n input.disableInputField(questionInputMarkup);\r\n }\r\n break;\r\n }\r\n case 'CHECKOPTION': {\r\n questionInputMarkup = buildCheckboxInput({\r\n answerId,\r\n answerText,\r\n conditionalQuestionId,\r\n conditionalAnswerText,\r\n readOnly,\r\n sectionId,\r\n setId,\r\n questionId,\r\n });\r\n question.appendChild(questionInputMarkup);\r\n question.innerHTML += `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n\r\n if (addAttachmentButton) {\r\n const planId = plan.getCurrentPlanId();\r\n const questionAttachment = new planAttachment.PlanAttachment('', questionId, planId);\r\n question.appendChild(questionAttachment.attachmentButton);\r\n }\r\n\r\n break;\r\n }\r\n case 'RADIO': {\r\n question.innerHTML += `

    ${text}

    `;\r\n if (prompt) question.innerHTML += `

    ${prompt}

    `;\r\n questionInputMarkup = buildRadioInput({\r\n sectionId,\r\n setId,\r\n questionId,\r\n answerOptions,\r\n answerId,\r\n answerText,\r\n readOnly,\r\n });\r\n question.appendChild(questionInputMarkup);\r\n break;\r\n }\r\n case 'DATE': {\r\n questionInputMarkup = buildDateInput({\r\n answerId,\r\n answerText,\r\n sectionId,\r\n setId,\r\n questionId,\r\n });\r\n question.innerHTML = `

    ${text}

    `;\r\n\r\n if (prompt) {\r\n question.innerHTML += `

    ${prompt}

    `;\r\n }\r\n\r\n question.appendChild(questionInputMarkup);\r\n }\r\n\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n return question;\r\n }\r\n // question\r\n function buildQuestionSetMarkup(setType, id) {\r\n const questionSet = document.createElement('div');\r\n questionSet.id = `set${id}`;\r\n questionSet.classList.add('questionSet', `questionSet__${setType.toLowerCase()}`);\r\n questionSet.setAttribute('data-set-type', setType.toLowerCase());\r\n return questionSet;\r\n }\r\n function addQuestionSet({ questions, ...setData }, readOnly) {\r\n const { id: setId, sectionId, subsectionId, order, setType, allowRowInsert } = setData;\r\n\r\n if (!sectionQuestionCount[sectionId]) sectionQuestionCount[sectionId] = {};\r\n sectionQuestionCount[sectionId][setId] = {};\r\n\r\n const questionSetWrap = buildQuestionSetMarkup(setType, setId);\r\n\r\n if (setType !== 'GRID') {\r\n const questionOrderKeys = Object.keys(questions);\r\n questionOrderKeys.forEach(qoKey => {\r\n const questionWrap = buildQuestionMarkup(setId, questions[qoKey], sectionId, readOnly, subsectionId);\r\n questionSetWrap.appendChild(questionWrap);\r\n });\r\n } else {\r\n const questionGrid = buildQuestionGridMarkup(questions, setId, allowRowInsert, sectionId);\r\n questionSetWrap.appendChild(questionGrid);\r\n }\r\n\r\n if (setId === '208' || setId === '141') {\r\n // build dropdown\r\n const placeOnPathDropdown = dropdown.build({\r\n dropdownId: 'pathDropdown',\r\n label: 'Place on path to community employment',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n await summaryAjax.updatePlaceOnPath({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n placeId: selectedOption.value,\r\n });\r\n },\r\n });\r\n // handle dropdown data\r\n const { dailyLifeDropdownType } = planData.getDropdownData();\r\n const data = dailyLifeDropdownType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n // populate dropdown\r\n dropdown.populate(placeOnPathDropdown, data, additionalSummaryData.placeOnPath);\r\n // append to assessment\r\n questionSetWrap.appendChild(placeOnPathDropdown);\r\n }\r\n\r\n const belongsToSection = subsectionId ? false : true;\r\n if (belongsToSection) {\r\n if (!questionSectionSets[sectionId]) questionSectionSets[sectionId] = {};\r\n if (!questionSectionSets[sectionId][order]) {\r\n questionSectionSets[sectionId][order] = {\r\n id: setId,\r\n markup: questionSetWrap,\r\n };\r\n }\r\n } else {\r\n if (!questionSubSectionSets[subsectionId]) questionSubSectionSets[subsectionId] = {};\r\n if (!questionSubSectionSets[subsectionId][order]) {\r\n questionSubSectionSets[subsectionId][order] = {\r\n id: setId,\r\n markup: questionSetWrap,\r\n };\r\n }\r\n }\r\n }\r\n\r\n // Main\r\n //------------------------------------\r\n function addSectionQuestions(sectionId, sectionMarkup) {\r\n const questionSectionSetsOrderKeys = questionSectionSets[sectionId]\r\n ? Object.keys(questionSectionSets[sectionId])\r\n : null;\r\n if (questionSectionSetsOrderKeys) {\r\n questionSectionSetsOrderKeys.forEach(qssoKey => {\r\n const { markup: questionSetMarkup } = questionSectionSets[sectionId][qssoKey];\r\n sectionMarkup.appendChild(questionSetMarkup);\r\n });\r\n }\r\n }\r\n function addSubSectionQuestions(sectionId, sectionMarkup) {\r\n const subSectionOrderKeys = subSections[sectionId] ? Object.keys(subSections[sectionId]) : null;\r\n\r\n if (subSectionOrderKeys) {\r\n subSectionOrderKeys.forEach(ssoKey => {\r\n const { markup: subSectionMarkup, id: subSectionId } = subSections[sectionId][ssoKey];\r\n\r\n const questionSubSectionSetsOrderKeys = questionSubSectionSets[subSectionId]\r\n ? Object.keys(questionSubSectionSets[subSectionId])\r\n : null;\r\n\r\n if (questionSubSectionSetsOrderKeys) {\r\n questionSubSectionSetsOrderKeys.forEach(qssoKey => {\r\n const { markup: questionSetMarkup } = questionSubSectionSets[subSectionId][qssoKey];\r\n\r\n subSectionMarkup.appendChild(questionSetMarkup);\r\n });\r\n }\r\n\r\n sectionMarkup.appendChild(subSectionMarkup);\r\n\r\n if (sectionId !== '33' && sectionId !== '2') {\r\n const subSectionHeading = subSectionMarkup.querySelector('.subSectionHeading');\r\n const subSectionTitle = subSectionHeading.innerText;\r\n if (subSectionTitle === 'Services, Supports, Outcomes') {\r\n const footerMarkup = buildSectionFooter(sectionId);\r\n sectionMarkup.appendChild(footerMarkup);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n function build() {\r\n const sectionOrderKeys = Object.keys(sections);\r\n sectionOrderKeys.forEach(soKey => {\r\n const { id: sectionId, markup: sectionMarkup } = sections[soKey];\r\n if (sectionMarkup) {\r\n assessmentWrap.appendChild(sectionMarkup);\r\n addSectionQuestions(sectionId, sectionMarkup);\r\n addSubSectionQuestions(sectionId, sectionMarkup);\r\n }\r\n });\r\n\r\n assessmentWrap.addEventListener('change', handleAssessmentChangeEvents);\r\n assessmentWrap.addEventListener('paste', e => {\r\n setTimeout(() => {\r\n handleAssessmentChangeEvents(e);\r\n }, 100);\r\n });\r\n\r\n return assessmentWrap;\r\n }\r\n\r\n async function init(planId, readOnly) {\r\n assessmentId = planId;\r\n sections = {};\r\n subSections = {};\r\n questionSectionSets = {};\r\n questionSubSectionSets = {};\r\n sectionQuestionCount = {};\r\n subSectionsWithAttachments = [];\r\n charLimits = planData.getAllISPcharacterLimts();\r\n readonly = readOnly;\r\n assessmentValidationCheck = await planValidation.returnAssessmentValidationData();\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = readonly ? false : true;\r\n }\r\n\r\n assessmentDropdownData = {};\r\n assessmentDropdownData.newOrExisting = [\r\n { id: 'n', text: 'New' },\r\n { id: 'e', text: 'Existing' },\r\n ];\r\n assessmentDropdownData.relationships = [...relationshipDropdownData()];\r\n\r\n assessmentWrap = document.createElement('div');\r\n assessmentWrap.classList.add('assessment');\r\n\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: assessmentId,\r\n });\r\n if (AdditionalSummaryData && AdditionalSummaryData.length > 0) {\r\n additionalSummaryData = AdditionalSummaryData[0];\r\n if (additionalSummaryData.placeOnPath === '' || additionalSummaryData.placeOnPath === '0') {\r\n additionalSummaryData.placeOnPath = '%';\r\n }\r\n } else {\r\n additionalSummaryData = {\r\n aloneTimeAmount: '',\r\n providerBackUp: '',\r\n moreDetail: '',\r\n placeOnPath: '%',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n addSection,\r\n addSubSection,\r\n addQuestionSet,\r\n build,\r\n clearData,\r\n //getAnswers,\r\n getSectionQuestionCount,\r\n markUnansweredQuestions,\r\n toggleUnansweredQuestionFilter,\r\n };\r\n})();\r\n","const tableOfContents = (function () {\r\n let toc;\r\n let tocInner;\r\n let sections = {};\r\n let subSections = {};\r\n\r\n // Utils\r\n //------------------------------------\r\n function clearData() {\r\n sections = {};\r\n subSections = {};\r\n }\r\n function toggleVisibility() {\r\n if (toc.classList.contains('visible')) {\r\n toc.classList.remove('visible');\r\n // document.body.style.overflow = 'auto';\r\n body;\r\n } else {\r\n toc.classList.add('visible');\r\n // document.body.style.overflow = 'hidden';\r\n }\r\n }\r\n function toggleApplicability(sectionId, isApplicable) {\r\n const sectionGroup = document.getElementById(`toc-sectionGroup${sectionId}`);\r\n if (!isApplicable) {\r\n sectionGroup.classList.add('nonApplicable');\r\n } else {\r\n sectionGroup.classList.remove('nonApplicable');\r\n }\r\n }\r\n\r\n // Unanswered Questions\r\n //------------------------------------\r\n function validateTableHasAtLeastOneRowAnswered(tableQuestions) {\r\n let tableHasAtLeastOneRowAnsered = false;\r\n\r\n const rowOrderKeys = Object.keys(tableQuestions);\r\n rowOrderKeys.forEach(rowOrderKey => {\r\n if (tableQuestions[rowOrderKey].atLeastOneColumnAnswered) {\r\n tableHasAtLeastOneRowAnsered = true;\r\n }\r\n });\r\n\r\n return tableHasAtLeastOneRowAnsered;\r\n }\r\n function showUnansweredQuestionCount() {\r\n const questionCountObj = mainAssessment.getSectionQuestionCount();\r\n const sectionKeys = Object.keys(questionCountObj);\r\n const sectionUnawnseredQuestions = {};\r\n\r\n sectionKeys.forEach(sectionKey => {\r\n const questionSetKeys = Object.keys(questionCountObj[sectionKey]);\r\n const section = document.getElementById(`toc-section${sectionKey}`);\r\n const numOfQuestionsUnawnseredWrapDiv = section.querySelector(\r\n '.numOfQuestionsUnawnseredWrap',\r\n );\r\n const numOfQuestionsUnawnseredDiv = section.querySelector('.numOfQuestionsUnawnsered');\r\n let numOfQuestionsUnawnsered = 0;\r\n let tableQuestionSets;\r\n if (!sectionUnawnseredQuestions[sectionKey]) sectionUnawnseredQuestions[sectionKey] = 0;\r\n\r\n questionSetKeys.forEach(questionSetKey => {\r\n const questionKeys = Object.keys(questionCountObj[sectionKey][questionSetKey]);\r\n\r\n questionKeys.forEach(questionKey => {\r\n const { answered, required, rowOrder, leaveblank } =\r\n questionCountObj[sectionKey][questionSetKey][questionKey];\r\n if (!rowOrder) {\r\n if (!answered && required) {\r\n if (leaveblank !== null && !leaveblank) {\r\n numOfQuestionsUnawnsered++;\r\n sectionUnawnseredQuestions[sectionKey]++;\r\n }\r\n }\r\n } else {\r\n if (!tableQuestionSets) tableQuestionSets = {};\r\n if (!tableQuestionSets[questionSetKey]) tableQuestionSets[questionSetKey] = {};\r\n if (!tableQuestionSets[questionSetKey][rowOrder]) {\r\n tableQuestionSets[questionSetKey][rowOrder] = {\r\n atLeastOneColumnAnswered: false,\r\n }\r\n if (leaveblank !== null && !leaveblank && !answered) {\r\n // numOfQuestionsUnawnsered++;\r\n sectionUnawnseredQuestions[sectionKey]++;\r\n }\r\n }\r\n // };\r\n if (answered || leaveblank)\r\n tableQuestionSets[questionSetKey][rowOrder].atLeastOneColumnAnswered = true;\r\n\r\n }\r\n });\r\n });\r\n\r\n if (tableQuestionSets) {\r\n const tableQuestionSetsKeys = Object.keys(tableQuestionSets);\r\n if (tableQuestionSetsKeys.length > 0) {\r\n tableQuestionSetsKeys.forEach(setKey => {\r\n const tableHasAtLeastOneRowAnsered = validateTableHasAtLeastOneRowAnswered(\r\n tableQuestionSets[setKey],\r\n );\r\n if (!tableHasAtLeastOneRowAnsered) numOfQuestionsUnawnsered++;\r\n });\r\n }\r\n }\r\n\r\n if (numOfQuestionsUnawnsered > 0) {\r\n numOfQuestionsUnawnseredDiv.innerText = numOfQuestionsUnawnsered;\r\n numOfQuestionsUnawnseredWrapDiv.classList.remove('hidden');\r\n } else {\r\n numOfQuestionsUnawnseredWrapDiv.classList.add('hidden');\r\n }\r\n\r\n const isWorkingSectionComplete = planValidation.returnAssessmentValidationData();\r\n if (sectionKey === '41') {\r\n numOfQuestionsUnawnsered = 0;\r\n numOfQuestionsUnawnseredWrapDiv.classList.add('hidden');\r\n }\r\n });\r\n }\r\n\r\n // Sections\r\n //------------------------------------\r\n function buildSectionMarkup(title, id, sectionNumber, applicable) {\r\n const section = document.createElement('div');\r\n section.id = `toc-sectionGroup${id}`;\r\n section.classList.add('tableOfContents__sectionGroup');\r\n if (!applicable) {\r\n section.classList.add('nonApplicable');\r\n }\r\n\r\n const sectionHeading = document.createElement('p');\r\n sectionHeading.id = `toc-section${id}`;\r\n sectionHeading.classList.add('tableOfContents__sectionHeading');\r\n sectionHeading.innerHTML = `\r\n \r\n
    ${title} \r\n ${title.substr(0, 5 - 1) + ' …'}\r\n

    \r\n `;\r\n\r\n const tocSectionAlertDiv = document.createElement('div');\r\n tocSectionAlertDiv.classList.add('workingAlertDiv');\r\n tocSectionAlertDiv.id = `${id}alert`;\r\n tocSectionAlertDiv.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(tocSectionAlertDiv);\r\n\r\n planValidation.createTooltip(\r\n 'This section is missing an Outcome, Support, or Referral',\r\n tocSectionAlertDiv,\r\n );\r\n\r\n tocSectionAlertDiv.style.display = 'none';\r\n\r\n if (title === 'WORKING/ NOT WORKING') {\r\n const workingAlertDivCase1 = document.createElement('div');\r\n workingAlertDivCase1.classList.add('workingAlertDivCase1');\r\n workingAlertDivCase1.id = `workingAlert1`;\r\n workingAlertDivCase1.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(workingAlertDivCase1);\r\n\r\n planValidation.createTooltip(\r\n \"There must be at least one record for What's Working/What's Not Working\",\r\n workingAlertDivCase1,\r\n );\r\n\r\n workingAlertDivCase1.style.display = 'none';\r\n\r\n const workingAlertDivCase2 = document.createElement('div');\r\n workingAlertDivCase2.classList.add('workingAlertDivCase2');\r\n workingAlertDivCase2.id = `workingAlert2`;\r\n workingAlertDivCase2.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(workingAlertDivCase2);\r\n\r\n planValidation.createTooltip(\r\n \"Each record must include at least one 'What's Working' or 'What's Not Working', along with a 'Who Said It?' entry\",\r\n workingAlertDivCase2,\r\n );\r\n\r\n workingAlertDivCase2.style.display = 'none';\r\n\r\n if (assessmentValidationCheck.workingSectionComplete === false) {\r\n let workingSectionCaseValue = planValidation.returnWorkingSectionCaseValue();\r\n if (workingSectionCaseValue === 1) {\r\n workingAlertDivCase1.style.display = 'inline-block';\r\n }\r\n else if (workingSectionCaseValue === 2) {\r\n workingAlertDivCase2.style.display = 'inline-block';\r\n }\r\n }\r\n }\r\n\r\n section.appendChild(sectionHeading);\r\n\r\n return section;\r\n }\r\n function addSection({ order, title, id, sectionNumber, applicable }) {\r\n const markup = buildSectionMarkup(title, id, sectionNumber, applicable);\r\n\r\n if (!sections[order]) sections[order] = { id, markup };\r\n }\r\n\r\n // Sub Sections\r\n //------------------------------------\r\n function buildSubSectionMarkup(title, id) {\r\n const subSection = document.createElement('div');\r\n subSection.classList.add('tableOfContents__subSectionGroup');\r\n\r\n const subSectionHeading = document.createElement('p');\r\n subSectionHeading.classList.add('tableOfContents__subSectionHeading');\r\n subSectionHeading.innerHTML = `${title}`;\r\n\r\n subSection.appendChild(subSectionHeading);\r\n\r\n return subSection;\r\n }\r\n function addSubSection(order, title, id, sectionId) {\r\n const markup = buildSubSectionMarkup(title, id);\r\n\r\n if (!subSections[sectionId]) subSections[sectionId] = {};\r\n if (!subSections[sectionId][order]) subSections[sectionId][order] = { id, markup };\r\n }\r\n\r\n function build() {\r\n const sectionOrderKeys = Object.keys(sections);\r\n sectionOrderKeys.forEach(soKey => {\r\n const { id: sectionId, markup: sectionMarkup } = sections[soKey];\r\n tocInner.appendChild(sectionMarkup);\r\n\r\n const subSectionOrderKeys = subSections[sectionId]\r\n ? Object.keys(subSections[sectionId])\r\n : null;\r\n if (!subSectionOrderKeys) return;\r\n\r\n subSectionOrderKeys.forEach(ssoKey => {\r\n const { markup: subSectionMarkup } = subSections[sectionId][ssoKey];\r\n sectionMarkup.appendChild(subSectionMarkup);\r\n });\r\n });\r\n\r\n return toc;\r\n }\r\n\r\n function init() {\r\n toc = document.createElement('div');\r\n toc.classList.add('tableOfContents');\r\n toc.addEventListener('click', e => {\r\n if (e.target.tagName === 'A') {\r\n toc.classList.remove('visible');\r\n // document.body.style.overflow = 'auto';\r\n }\r\n });\r\n\r\n tocInner = document.createElement('div');\r\n tocInner.classList.add('tableOfContents__inner');\r\n\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n const tocHeader = document.createElement('h2');\r\n tocHeader.classList.add('tableOfContents__heading');\r\n tocHeader.innerHTML = `Table Of Contents`;\r\n\r\n const tocAlertDiv = document.createElement('div');\r\n tocAlertDiv.classList.add('tocAlertDiv');\r\n tocAlertDiv.id = 'tocAlert';\r\n tocHeader.appendChild(tocAlertDiv);\r\n tocAlertDiv.innerHTML = `${icons.error}`;\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one section of the Assessment must be selected',\r\n tocAlertDiv,\r\n );\r\n\r\n if (assessmentValidationCheck.hasASectionApplicable === true) {\r\n tocAlertDiv.style.display = 'none';\r\n }\r\n\r\n const tocMain = document.createElement('div');\r\n tocMain.classList.add('tableOfContents__main');\r\n\r\n const tocToggle = document.createElement('div');\r\n tocToggle.classList.add('tableOfContents__toggle');\r\n tocToggle.setAttribute('data-toggle', 'open');\r\n tocToggle.innerHTML = icons.keyArrowLeft;\r\n tocToggle.addEventListener('click', e => {\r\n const assessmentNavMarkupWrap = document.querySelector('.assessmentNavMarkupWrap');\r\n const currToggleState = e.target.dataset.toggle === 'open' ? 'open' : 'closed';\r\n\r\n if (currToggleState === 'open') {\r\n e.target.dataset.toggle = 'closed';\r\n tocHeader.innerHTML = `TOC`;\r\n toc.classList.add('toggleClosed');\r\n assessmentNavMarkupWrap.classList.add('toggleClosed');\r\n tocToggle.innerHTML = icons.keyArrowRight;\r\n } else {\r\n e.target.dataset.toggle = 'open';\r\n tocHeader.innerHTML = `Table Of Contents`;\r\n toc.classList.remove('toggleClosed');\r\n assessmentNavMarkupWrap.classList.remove('toggleClosed');\r\n tocToggle.innerHTML = icons.keyArrowLeft;\r\n }\r\n });\r\n\r\n const tocClose = document.createElement('span');\r\n tocClose.classList.add('tableOfContents__close');\r\n tocClose.innerHTML = icons.close;\r\n\r\n tocClose.addEventListener('click', () => {\r\n toc.classList.remove('visible');\r\n });\r\n\r\n tocInner.appendChild(tocClose);\r\n\r\n tocMain.appendChild(tocInner);\r\n tocMain.appendChild(tocToggle);\r\n\r\n toc.appendChild(tocHeader);\r\n toc.appendChild(tocMain);\r\n\r\n // planValidation.tocAssessmentCheck(assessmentValidationCheck);\r\n }\r\n\r\n return {\r\n init,\r\n build,\r\n addSection,\r\n addSubSection,\r\n clearData,\r\n toggleVisibility,\r\n toggleApplicability,\r\n showUnansweredQuestionCount,\r\n };\r\n})();\r\n","const csAssignCaseload = (() => {\r\n // data\r\n let consumerswithSaleforceIds;\r\n let caseManagersfromOptionsTable;\r\n let assignmentResults;\r\n // case manager\r\n let currentCaseManagerSelected;\r\n // consumer\r\n let currentconsumersSelected = [];\r\n // dom\r\n let assignCaseLoadPopup;\r\n let assignBtn;\r\n\r\n function toggleAssignButton() {\r\n if (!currentCaseManagerSelected || currentconsumersSelected.length === 0) {\r\n assignBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n assignBtn.classList.remove('disabled');\r\n }\r\n function showConfirmationPopup() {\r\n let selectedConsumerObjs = [];\r\n\r\n const confirmCaseLoadPopup = POPUP.build({\r\n id: 'sig_assignCaseLoadConfirmPopup',\r\n classNames: 'confirmCaseLoadPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('popupMessage');\r\n message.innerHTML = `\r\n These individuals are about to be assigned in Salesforce to ${currentCaseManagerSelected.name}. Do you want to proceed?\r\n `;\r\n\r\n const assignedConsumerList = document.createElement('div');\r\n assignedConsumerList.classList.add('assignedConsumerList');\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n currentconsumersSelected.forEach(consumer => {\r\n // set data to OBJ\r\n selectedConsumerObjs.push({\r\n id: consumer.id,\r\n name: consumer.name,\r\n });\r\n // build list\r\n const c = document.createElement('p');\r\n c.innerText = consumer.name;\r\n assignedConsumerList.appendChild(c);\r\n });\r\n\r\n const confirmBtn = button.build({\r\n text: 'confirm',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n assignedConsumerList.innerHTML = '';\r\n btnWrap.innerHTML = '';\r\n message.innerHTML = '';\r\n confirmCaseLoadPopup.removeChild(message);\r\n confirmCaseLoadPopup.removeChild(assignedConsumerList);\r\n confirmCaseLoadPopup.removeChild(btnWrap);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Assigning Individuals...');\r\n confirmCaseLoadPopup.appendChild(spinner);\r\n\r\n assignmentResults = await consentAndSignAjax.assignStateCaseManagertoConsumers({\r\n // token: $.session.Token,\r\n caseManagerId: currentCaseManagerSelected.id,\r\n consumers: selectedConsumerObjs,\r\n });\r\n\r\n confirmCaseLoadPopup.removeChild(spinner);\r\n confirmCaseLoadPopup.appendChild(message);\r\n confirmCaseLoadPopup.appendChild(assignedConsumerList);\r\n confirmCaseLoadPopup.appendChild(btnWrap);\r\n\r\n const processedStateConsumerObjs = JSON.parse(assignmentResults);\r\n const filteredStateConsumers = processedStateConsumerObjs.filter(obj =>\r\n obj.assignresult.includes('Case Manger Not Assigned'),\r\n );\r\n\r\n if (filteredStateConsumers.length === 0) {\r\n POPUP.hide(confirmCaseLoadPopup);\r\n POPUP.hide(assignCaseLoadPopup);\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n return;\r\n }\r\n\r\n message.innerHTML = `The following consumers were not able to be assigned to ${currentCaseManagerSelected.name}. Please contact DODD.`;\r\n\r\n processedStateConsumerObjs.forEach(consumer => {\r\n if (consumer.assignresult.includes('Case Manger Not Assigned')) {\r\n const c = document.createElement('p');\r\n c.innerHTML = `${consumer.name}`;\r\n // c.innerHTML = `${consumer.name} Assign result: ${consumer.assignresult}`;\r\n assignedConsumerList.appendChild(c);\r\n }\r\n });\r\n\r\n const okBtn = button.build({\r\n text: 'ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(confirmCaseLoadPopup);\r\n POPUP.hide(assignCaseLoadPopup);\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n },\r\n });\r\n btnWrap.appendChild(okBtn);\r\n\r\n // reset values last\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n DOM.ACTIONCENTER.removeChild(confirmCaseLoadPopup);\r\n assignCaseLoadPopup.style.display = 'block';\r\n },\r\n });\r\n\r\n btnWrap.appendChild(confirmBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n confirmCaseLoadPopup.appendChild(message);\r\n confirmCaseLoadPopup.appendChild(assignedConsumerList);\r\n confirmCaseLoadPopup.appendChild(btnWrap);\r\n\r\n assignCaseLoadPopup.style.display = 'none';\r\n POPUP.show(confirmCaseLoadPopup);\r\n }\r\n\r\n async function showAssignCaseLoadPopup() {\r\n caseManagersfromOptionsTable = await consentAndSignAjax.getCaseManagersfromOptionsTable({\r\n token: $.session.Token,\r\n });\r\n consumerswithSaleforceIds = await consentAndSignAjax.getConsumerswithSaleforceIds({\r\n token: $.session.Token,\r\n });\r\n\r\n // Poup\r\n assignCaseLoadPopup = POPUP.build({\r\n id: 'sig_assignCaseLoadPopup',\r\n classNames: 'assignCaseLoadPopup',\r\n hideX: true,\r\n header: 'Assign Case Load',\r\n });\r\n const popupMessage = document.createElement('p');\r\n popupMessage.classList.add('popupMessage');\r\n \r\n if ($.session.applicationName === 'Gatekeeper') {\r\n popupMessage.innerText ='*Must select a Case Manager and at least one consumer before clicking Assign button.';\r\n } else {\r\n popupMessage.innerText ='*Must select a QIDP and at least one consumer before clicking Assign button.';\r\n }\r\n \r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('peopleListWrap');\r\n\r\n // Case Managers\r\n const caseManagersContainer = document.createElement('div');\r\n caseManagersContainer.classList.add('assignCaseLoadPeopleList');\r\n\r\n const cmHeading = document.createElement('p');\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n cmHeading.innerText = 'Select a Case Manager';\r\n } else {\r\n cmHeading.innerText = 'Select a QIDP';\r\n }\r\n\r\n CM_SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n CM_SEARCH_WRAP = document.createElement('div');\r\n CM_SEARCH_WRAP.classList.add('consumerSearch');\r\n CM_SEARCH_INPUT = document.createElement('input');\r\n ($.session.applicationName === 'Gatekeeper') ? CM_SEARCH_INPUT.setAttribute('placeholder', 'search case managers') : CM_SEARCH_INPUT.setAttribute('placeholder', 'search QIDPs');\r\n CM_SEARCH_WRAP.appendChild(CM_SEARCH_BTN);\r\n CM_SEARCH_WRAP.appendChild(CM_SEARCH_INPUT);\r\n CM_filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n // callback: showFilterPopup\r\n callback: () => {\r\n cnFilters.init(filterValues);\r\n },\r\n });\r\n\r\n const multiSelectBodyCM = document.createElement('div');\r\n caseManagersfromOptionsTable.forEach(person => {\r\n let caseManager = document.createElement('p');\r\n caseManager.classList.add('caseManager');\r\n caseManager.setAttribute('data-personId', person.id);\r\n caseManager.innerText = person.name;\r\n multiSelectBodyCM.appendChild(caseManager);\r\n\r\n caseManager.addEventListener('click', e => {\r\n //* There can only ever be one case manager selected\r\n const isSelected = e.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n currentCaseManagerSelected = null;\r\n } else {\r\n // check for existing case manager & remove\r\n const existing = [...multiSelectBodyCM.querySelectorAll('.caseManager.selected')];\r\n existing.forEach(row => row.classList.remove('selected'));\r\n // set new case manager\r\n e.target.classList.add('selected');\r\n currentCaseManagerSelected = person;\r\n }\r\n\r\n toggleAssignButton();\r\n });\r\n });\r\n\r\n caseManagersContainer.appendChild(cmHeading);\r\n \r\n var CM_btnWrap = document.createElement('div');\r\n CM_btnWrap.classList.add('cnbtnWrap');\r\n CM_btnWrap.appendChild(CM_filterBtn);\r\n\r\n caseManagersContainer.appendChild(CM_SEARCH_WRAP);\r\n\r\n CM_SEARCH_BTN.addEventListener('click', event => {\r\n CM_SEARCH_WRAP.classList.toggle('searchOpen');\r\n CM_SEARCH_INPUT.value = '';\r\n CM_SEARCH_INPUT.focus();\r\n });\r\n CM_SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n caseManagerSearch(event.target.value);\r\n }\r\n });\r\n \r\n CM_SEARCH_INPUT.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n caseManagerSearch(event.target.value);\r\n }\r\n });\r\n\r\n caseManagersContainer.appendChild(multiSelectBodyCM);\r\n\r\n // Consumers\r\n const consumersContainer = document.createElement('div');\r\n consumersContainer.classList.add('assignCaseLoadPeopleList');\r\n\r\n const cHeading = document.createElement('p');\r\n cHeading.innerText = 'Select one (or multiple) consumers';\r\n\r\n C_SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n \r\n C_SEARCH_WRAP = document.createElement('div');\r\n C_SEARCH_WRAP.classList.add('consumerSearch');\r\n C_SEARCH_INPUT = document.createElement('input');\r\n C_SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n C_SEARCH_WRAP.appendChild(C_SEARCH_BTN);\r\n C_SEARCH_WRAP.appendChild(C_SEARCH_INPUT);\r\n C_filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n // callback: showFilterPopup\r\n callback: () => {\r\n cnFilters.init(filterValues);\r\n },\r\n }); \r\n\r\n const multiSelectBodyC = document.createElement('div');\r\n consumerswithSaleforceIds.forEach(person => {\r\n let consumer = document.createElement('p');\r\n consumer.setAttribute('data-personId', person.id);\r\n consumer.innerText = person.name;\r\n multiSelectBodyC.appendChild(consumer);\r\n\r\n consumer.addEventListener('click', e => {\r\n //* Multiple consumers can be selected\r\n const isSelected = e.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n currentconsumersSelected = currentconsumersSelected.filter(cs => cs.id !== person.id);\r\n } else {\r\n e.target.classList.add('selected');\r\n currentconsumersSelected.push(person);\r\n }\r\n\r\n toggleAssignButton();\r\n });\r\n });\r\n\r\n consumersContainer.appendChild(cHeading);\r\n \r\n var C_btnWrap = document.createElement('div');\r\n C_btnWrap.classList.add('cnbtnWrap');\r\n C_btnWrap.appendChild(C_filterBtn);\r\n\r\n consumersContainer.appendChild(C_SEARCH_WRAP);\r\n\r\n consumersContainer.appendChild(multiSelectBodyC);\r\n\r\n C_SEARCH_BTN.addEventListener('click', event => {\r\n C_SEARCH_WRAP.classList.toggle('searchOpen');\r\n C_SEARCH_INPUT.value = '';\r\n C_SEARCH_INPUT.focus();\r\n });\r\n C_SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n consumerSearch(event.target.value);\r\n }\r\n });\r\n \r\n C_SEARCH_INPUT.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n consumerSearch(event.target.value);\r\n }\r\n });\r\n\r\n // Action Buttons\r\n assignBtn = button.build({\r\n text: 'ASSIGN',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n showConfirmationPopup();\r\n },\r\n });\r\n assignBtn.classList.add('disabled');\r\n\r\n var cancelBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n currentCaseManagerSelected = null;\r\n currentconsumersSelected = [];\r\n POPUP.hide(assignCaseLoadPopup);\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(assignBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n innerWrap.appendChild(caseManagersContainer);\r\n innerWrap.appendChild(consumersContainer);\r\n\r\n assignCaseLoadPopup.appendChild(popupMessage);\r\n assignCaseLoadPopup.appendChild(innerWrap);\r\n assignCaseLoadPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(assignCaseLoadPopup);\r\n }\r\n\r\n function caseManagerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedCaseManagers = [searchValue];\r\n caseManagersfromOptionsTable.forEach(caseManager => {\r\n var fullName = caseManager.name.toLowerCase();\r\n // var fullNameReversed = `${lastName} ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n // var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n // var consumer = document.getElementById(consumer.id);\r\n var thisCaseManager = document.querySelector(`[data-personid=\"${caseManager.id}\"]`);\r\n\r\n if (matchesName !== -1 ) {\r\n thisCaseManager.classList.remove('hidden');\r\n displayedCaseManagers.push(caseManager.id);\r\n } else {\r\n thisCaseManager.classList.add('hidden');\r\n var index = displayedCaseManagers.indexOf(caseManager.id);\r\n if (index > -1) displayedCaseManagers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n function consumerSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n // gather all names shown\r\n //reset the array containing list of consumers that are being displayed\r\n displayedConsumers = [searchValue];\r\n consumerswithSaleforceIds.forEach(consumer => {\r\n var fullName = consumer.name.toLowerCase();\r\n // var fullNameReversed = `${lastName} ${firstName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n // var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n // var consumer = document.getElementById(consumer.id);\r\n var thisConsumer = document.querySelector(`[data-personid=\"${consumer.id}\"]`);\r\n\r\n if (matchesName !== -1 ) {\r\n thisConsumer.classList.remove('hidden');\r\n displayedConsumers.push(consumer.id);\r\n } else {\r\n thisConsumer.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.id);\r\n if (index > -1) displayedConsumers.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n showAssignCaseLoadPopup,\r\n };\r\n})();\r\n","const planConsentAndSign = (() => {\r\n let selectedConsumer;\r\n let readOnly;\r\n let planId; // aka: assessmentId\r\n let effStartDate;\r\n let effEndDate;\r\n // DATA\r\n let vendorData;\r\n let teamMemberData;\r\n let paidSupportProviders;\r\n let providerDropdownData;\r\n let ssaDropdownData;\r\n // for important ppl popup\r\n let names;\r\n // GLOBALS\r\n let csSSAPeopleIdGlobal;\r\n let csrVendorIdGlobal;\r\n let csContactInputGlobal;\r\n // DOM\r\n let teamMemberTable;\r\n\r\n //*------------------------------------------------------\r\n //* Rando\r\n //*------------------------------------------------------\r\n function getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds() {\r\n const data = teamMemberData.map(d => {\r\n return {\r\n value: d.name,\r\n text: d.name,\r\n caseManager: d.teamMember === 'Case Manager' ? true : false,\r\n contactId: d.contactId ? d.contactId : '0',\r\n isSigned: d.dateSigned !== '' ? true : false,\r\n };\r\n });\r\n return data;\r\n }\r\n function planStatusChange() {\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n const addMemberBtn = document.getElementById('sig_addMember');\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n addMemberBtn.classList.remove('disabled');\r\n } else {\r\n readOnly = true;\r\n addMemberBtn.classList.add('disabled');\r\n }\r\n refreshTable();\r\n }\r\n function getConsentGlobalValues() {\r\n return {\r\n SSA: csSSAPeopleIdGlobal,\r\n VENDOR: csrVendorIdGlobal,\r\n CONTACT: csContactInputGlobal,\r\n };\r\n }\r\n function isTeamMemberConsentable(teamMember) {\r\n return teamMember === 'Person Supported' ||\r\n teamMember === 'Parent/Guardian' ||\r\n teamMember === 'Guardian'\r\n ? true\r\n : false;\r\n }\r\n function isTeamMemberGuardian(teamMember) {\r\n return teamMember === 'Parent/Guardian' || teamMember === 'Guardian' ? true : false;\r\n }\r\n function getNames() {\r\n return names;\r\n }\r\n function getTeamMemberData() {\r\n return teamMemberData;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* INSERT/UPDATE/DELETE\r\n //*------------------------------------------------------\r\n async function insertNewTeamMember(selectedMemberData) {\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n consumerId: selectedConsumer.id,\r\n // member\r\n teamMember: selectedMemberData.teamMember,\r\n name: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n participated: selectedMemberData.participated,\r\n parentOfMinor: selectedMemberData.parentOfMinor,\r\n email: selectedMemberData.email,\r\n relationship: selectedMemberData.relationship ? selectedMemberData.relationship : '',\r\n // sign/disent\r\n signature: selectedMemberData.signature,\r\n signatureType: selectedMemberData.signatureType,\r\n dateSigned: selectedMemberData.dateSigned,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n // consent\r\n csAgreeToPlan: selectedMemberData.csAgreeToPlan,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csContact: selectedMemberData.csContact,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csDueProcess: selectedMemberData.csDueProcess,\r\n csFCOPExplained: selectedMemberData.csFCOPExplained,\r\n csResidentialOptions: selectedMemberData.csResidentialOptions,\r\n csRightsReviewed: selectedMemberData.csRightsReviewed,\r\n csSupportsHealthNeeds: selectedMemberData.csSupportsHealthNeeds,\r\n csTechnology: selectedMemberData.csTechnology,\r\n // new\r\n contactId: selectedMemberData.contactId,\r\n salesforceId: !selectedMemberData.salesForceId ? '' : selectedMemberData.salesForceId,\r\n peopleId: selectedMemberData.peopleId,\r\n buildingNumber: selectedMemberData.buildingNumber,\r\n dateOfBirth: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n planYearStart: effStartDate,\r\n planYearEnd: effEndDate,\r\n useExisting: '',\r\n relationshipImport: selectedMemberData.relationshipImport,\r\n createRelationship: selectedMemberData.createRelationship,\r\n // attachments for signature\r\n hasWetSignature: selectedMemberData.hasWetSignature,\r\n description: selectedMemberData.description ? selectedMemberData.description : '',\r\n attachment: selectedMemberData.attachment ? selectedMemberData.attachment : '',\r\n attachmentType: selectedMemberData.attachmentType ? selectedMemberData.attachmentType : '',\r\n // ignore\r\n section: '',\r\n questionId: '0',\r\n vendorId: selectedMemberData.vendorId,\r\n locationId: selectedMemberData.locationId,\r\n };\r\n\r\n let stuff = await consentAndSignAjax.insertTeamMember(data);\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n // if first insert set global values\r\n const isMemberConsentable = isTeamMemberConsentable(selectedMemberData.teamMember);\r\n if (teamMemberData.length === 0) {\r\n if (isMemberConsentable) {\r\n csSSAPeopleIdGlobal = selectedMemberData.csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = selectedMemberData.csContactProviderVendorId;\r\n csContactInputGlobal = selectedMemberData.csContactInput;\r\n }\r\n } else {\r\n if (isMemberConsentable) {\r\n const shouldUpdateSSA =\r\n csSSAPeopleIdGlobal !== selectedMemberData.csChangeMindSSAPeopleId ? true : false;\r\n const shouldUpdateVendor =\r\n csrVendorIdGlobal !== selectedMemberData.csContactProviderVendorId ? true : false;\r\n const shouldUpdateContact =\r\n csContactInputGlobal !== selectedMemberData.csContactInput ? true : false;\r\n\r\n if (shouldUpdateSSA || shouldUpdateVendor || shouldUpdateContact) {\r\n csSSAPeopleIdGlobal = selectedMemberData.csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = selectedMemberData.csContactProviderVendorId;\r\n csContactInputGlobal = selectedMemberData.csContactInput;\r\n\r\n await updateTeamMebersGlobals({\r\n newSSA: selectedMemberData.csChangeMindSSAPeopleId,\r\n newVendor: selectedMemberData.csContactProviderVendorId,\r\n newContact: selectedMemberData.csContactInput,\r\n });\r\n }\r\n }\r\n }\r\n\r\n return stuff;\r\n }\r\n async function updateTeamMember(selectedMemberData, clearSignature) {\r\n const data = {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n consumerId: selectedConsumer.id,\r\n // member\r\n teamMember: selectedMemberData.teamMember,\r\n name: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n participated: selectedMemberData.participated,\r\n relationship: selectedMemberData.relationship ? selectedMemberData.relationship : '',\r\n // sign/disent\r\n signatureId: selectedMemberData.signatureId,\r\n signature: selectedMemberData.signature,\r\n signatureType: selectedMemberData.signatureType,\r\n dateSigned: selectedMemberData.dateSigned,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n // new\r\n contactId: selectedMemberData.contactId,\r\n salesforceId: !selectedMemberData.salesForceId ? '' : selectedMemberData.salesForceId,\r\n peopleId: selectedMemberData.peopleId,\r\n buildingNumber: selectedMemberData.buildingNumber,\r\n dateOfBirth: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n planYearStart: effStartDate,\r\n planYearEnd: effEndDate,\r\n useExisting: '',\r\n relationshipImport: selectedMemberData.relationshipImport,\r\n createRelationship: selectedMemberData.createRelationship,\r\n // attachments for signature\r\n hasWetSignature: selectedMemberData.hasWetSignature,\r\n description: selectedMemberData.description ? selectedMemberData.description : '',\r\n attachment: selectedMemberData.attachment ? selectedMemberData.attachment : '',\r\n attachmentType: selectedMemberData.attachmentType ? selectedMemberData.attachmentType : '',\r\n // ignore\r\n section: '',\r\n questionId: '0',\r\n vendorId: selectedMemberData.vendorId,\r\n // for clearing signature\r\n clear: clearSignature ? 't' : 'f',\r\n email: selectedMemberData.email,\r\n };\r\n\r\n // Gets the connection between the selected vendor name and the correct vendorId\r\n const vendorRel = csVendor.getSelectedVendorRel(vendorData, data.name);\r\n if (vendorRel !== undefined) {\r\n data.vendorId = vendorRel.vendorId;\r\n }\r\n\r\n const data2 = {\r\n token: $.session.Token,\r\n signatureId: selectedMemberData.signatureId,\r\n // consent\r\n csAgreeToPlan: selectedMemberData.csAgreeToPlan,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csContact: selectedMemberData.csContact,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csDueProcess: selectedMemberData.csDueProcess,\r\n csFCOPExplained: selectedMemberData.csFCOPExplained,\r\n csResidentialOptions: selectedMemberData.csResidentialOptions,\r\n csRightsReviewed: selectedMemberData.csRightsReviewed,\r\n csSupportsHealthNeeds: selectedMemberData.csSupportsHealthNeeds,\r\n csTechnology: selectedMemberData.csTechnology,\r\n };\r\n await consentAndSignAjax.updateTeamMember(data);\r\n if (!clearSignature) {\r\n await consentAndSignAjax.updatePlanConsentStatements(data2);\r\n }\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n const isMemberConsentable = isTeamMemberConsentable(selectedMemberData.teamMember);\r\n if (teamMemberData.length > 1) {\r\n if (isMemberConsentable) {\r\n const shouldUpdateSSA =\r\n csSSAPeopleIdGlobal !== selectedMemberData.csChangeMindSSAPeopleId ? true : false;\r\n const shouldUpdateVendor =\r\n csrVendorIdGlobal !== selectedMemberData.csContactProviderVendorId ? true : false;\r\n const shouldUpdateContact =\r\n csContactInputGlobal !== selectedMemberData.csContactInput ? true : false;\r\n\r\n if (shouldUpdateSSA || shouldUpdateVendor || shouldUpdateContact) {\r\n csSSAPeopleIdGlobal = selectedMemberData.csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = selectedMemberData.csContactProviderVendorId;\r\n csContactInputGlobal = selectedMemberData.csContactInput;\r\n\r\n await updateTeamMebersGlobals({\r\n newSSA: selectedMemberData.csChangeMindSSAPeopleId,\r\n newVendor: selectedMemberData.csContactProviderVendorId,\r\n newContact: selectedMemberData.csContactInput,\r\n idToIgnore: selectedMemberData.signatureId,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n async function deleteTeamMember(id, teamMemberPopup) {\r\n teamMemberPopup.style.display = 'none';\r\n\r\n async function deleteAccept() {\r\n pendingSave.show('Deleting...');\r\n\r\n const res = await consentAndSignAjax.deleteTeamMember({\r\n token: $.session.Token,\r\n signatureId: id,\r\n });\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n if (res === '[]') {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n POPUP.hide(teamMemberPopup);\r\n refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to delete. Please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n failSave.hide();\r\n }, 1000);\r\n }\r\n }\r\n\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to remove this team member?',\r\n accept: {\r\n text: 'Yes',\r\n callback: deleteAccept,\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n teamMemberPopup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n }\r\n //* Master Update For Global Questions\r\n async function updateTeamMebersGlobals({ newSSA, newVendor, newContact, ...rest }) {\r\n // loop through all and update\r\n teamMemberData.forEach(async member => {\r\n // const isMemberConsentable = isTeamMemberConsentable(member.teamMember);\r\n // if (!isMemberConsentable) return;\r\n if (member.signatureId === rest.idToIgnore) return;\r\n\r\n await consentAndSignAjax.updatePlanConsentStatements({\r\n token: $.session.Token,\r\n signatureId: member.signatureId,\r\n // consent\r\n csAgreeToPlan: member.csAgreeToPlan,\r\n csChangeMind: member.csChangeMind,\r\n csChangeMindSSAPeopleId: newSSA,\r\n csContact: member.csContact,\r\n csContactInput: newContact,\r\n csContactProviderVendorId: newVendor,\r\n csDueProcess: member.csDueProcess,\r\n csFCOPExplained: member.csFCOPExplained,\r\n csResidentialOptions: member.csResidentialOptions,\r\n csRightsReviewed: member.csRightsReviewed,\r\n csSupportsHealthNeeds: member.csSupportsHealthNeeds,\r\n csTechnology: member.csTechnology,\r\n });\r\n });\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* DROPDOWNS\r\n //*------------------------------------------------------\r\n function getSSAById(ssaId) {\r\n const filteredSSA = ssaDropdownData.filter(ssa => ssa.id === ssaId);\r\n return filteredSSA.length > 0 ? filteredSSA[0].name : '';\r\n }\r\n // get/sort data\r\n function getVendorDropdownData() {\r\n const nonPaidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = providerDropdownData.filter(\r\n provider => paidSupportProviders.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n return {\r\n paidSupport: paidSupportDropdownData,\r\n nonPaidSupport: nonPaidSupportDropdownData,\r\n };\r\n }\r\n function getSSADropdownData() {\r\n const data = ssaDropdownData.map(ssa => {\r\n return {\r\n value: ssa.id,\r\n text: ssa.name,\r\n };\r\n });\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n data.unshift({ value: '', text: '[SELECT A QIDP]' });\r\n } else {\r\n data.unshift({ value: '', text: '[SELECT AN SSA]' });\r\n }\r\n\r\n return data;\r\n }\r\n // populate\r\n function populateDropdownSSA(ssaDropdown, csChangeMindSSAPeopleId) {\r\n const csChangeMindQuestionDropdownData = getSSADropdownData();\r\n\r\n dropdown.populate(ssaDropdown, csChangeMindQuestionDropdownData, csChangeMindSSAPeopleId);\r\n }\r\n\r\n function populateDropdownVendor(vendorDropdown, csContactProviderVendorId) {\r\n //* VENDOR DROPDOWN\r\n const contactQuestionDropdownData = getVendorDropdownData();\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ic_providerDropdown_paidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.paidSupport,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ic_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: contactQuestionDropdownData.nonPaidSupport,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (contactQuestionDropdownData.paidSupport.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: csContactProviderVendorId,\r\n });\r\n }\r\n // set/update width\r\n function setSSADropdownInitialWidth(popup, csChangeMindSSAPeopleId) {\r\n const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n ssaDropdown.value = csChangeMindSSAPeopleId;\r\n let ssaWidth = 150;\r\n if (ssaDropdown.selectedIndex !== -1) {\r\n ssaWidth = ssaDropdown.options[ssaDropdown.selectedIndex].text.length * 10;\r\n }\r\n ssaDropdown.style.width = `${ssaWidth}px`;\r\n }\r\n function setVendorDropdownInitialWidth(popup, csContactProviderVendorId) {\r\n const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n vendorContactDropdown.value = csContactProviderVendorId;\r\n const vendorWidth =\r\n (vendorContactDropdown.options[vendorContactDropdown.selectedIndex].text.length + 3) * 10;\r\n\r\n vendorContactDropdown.style.width = `${vendorWidth}px`;\r\n }\r\n function updateSSADropdownWidth(popup) {\r\n const ssaDropdown = popup.querySelector('#isp_ic_ssaDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_option');\r\n hidden_opt.innerHTML = ssaDropdown.options[ssaDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_ssaDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n ssaDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n }\r\n function updateVendorDropdownWidth(popup) {\r\n const vendorContactDropdown = popup.querySelector('#isp_ic_vendorContactDropdown');\r\n const hidden_opt = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_option');\r\n hidden_opt.innerHTML =\r\n vendorContactDropdown.options[vendorContactDropdown.selectedIndex].textContent;\r\n const hidden_sel = popup.querySelector('#isp_ic_vendorContactDropdown__width_tmp_select');\r\n hidden_sel.style.display = 'initial';\r\n vendorContactDropdown.style.width = hidden_sel.clientWidth + 22 + 'px';\r\n hidden_sel.style.display = 'none';\r\n }\r\n // load data\r\n async function loadDropdownData() {\r\n providerDropdownData = await consentAndSignAjax.getPlanInformedConsentVendors({\r\n token: $.session.Token,\r\n peopleid: selectedConsumer.id,\r\n });\r\n // this is where the DDL gets its data -- people, user permissions, etc tables\r\n ssaDropdownData = await consentAndSignAjax.getPlanInformedConsentSSAs({\r\n token: $.session.Token,\r\n });\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* GLOBAL CONSENT QUESTIONS\r\n //*------------------------------------------------------\r\n //* Change Mind - SSA\r\n function buildChangeMindRadios(csChangeMind) {\r\n //Radio Container\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('ic_questionRadioContainer');\r\n\r\n //Radios\r\n const yesRadio = input.buildRadio({\r\n id: 'CS_Change_Mind-yes',\r\n text: 'Yes',\r\n name: 'CS_Change_Mind',\r\n isChecked: csChangeMind === 'Y',\r\n isDisabled: readOnly,\r\n });\r\n const noRadio = input.buildRadio({\r\n id: 'CS_Change_Mind-no',\r\n text: 'No',\r\n name: 'CS_Change_Mind',\r\n isChecked: csChangeMind === 'N',\r\n isDisabled: readOnly,\r\n });\r\n\r\n // init required fields\r\n if (csChangeMind === '') {\r\n radioContainer.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(yesRadio);\r\n radioContainer.appendChild(noRadio);\r\n\r\n return radioContainer;\r\n }\r\n function buildChangeMindQuestion(data, popup, isSigned) {\r\n // popup === 'member' || 'sign'\r\n\r\n //Question Container\r\n const changeMindQuestion = document.createElement('div');\r\n changeMindQuestion.classList.add('changeMindQuestion');\r\n changeMindQuestion.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const csChangeMindQuestionText = document.createElement('div');\r\n csChangeMindQuestionText.classList.add('changeMindQuestionText');\r\n\r\n //SSA Inline Dropdown\r\n const csChangeMindQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_ssaDropdown',\r\n });\r\n if (readOnly || popup === 'sign' || isSigned) {\r\n csChangeMindQuestionDropdown.classList.add('disabled');\r\n }\r\n // populate\r\n populateDropdownSSA(csChangeMindQuestionDropdown, data.csChangeMindSSAPeopleId);\r\n\r\n // Build Out Question with dropdown\r\n csChangeMindQuestionText.innerHTML = `*I understand that I can change my mind at any time. I just need to let `;\r\n csChangeMindQuestionText.appendChild(csChangeMindQuestionDropdown);\r\n csChangeMindQuestionText.innerHTML += ` know.`;\r\n changeMindQuestion.appendChild(csChangeMindQuestionText);\r\n\r\n // required fields\r\n if (\r\n (data.csChangeMindSSAPeopleId === '' ||\r\n data.csChangeMindSSAPeopleId === '0' ||\r\n data.csChangeMindSSAPeopleId === null) &&\r\n !isSigned\r\n ) {\r\n changeMindQuestion.classList.add('error');\r\n }\r\n\r\n //* IF popup === 'member' DO NOT BUILD RADIOS\r\n if (popup === 'member') return changeMindQuestion;\r\n\r\n changeMindQuestion.classList.add('withRadios');\r\n\r\n const changeMindRadios = buildChangeMindRadios(data.csChangeMind);\r\n\r\n if (readOnly || isSigned) {\r\n changeMindRadios.classList.add('disabled');\r\n }\r\n\r\n changeMindQuestion.appendChild(changeMindRadios);\r\n\r\n return changeMindQuestion;\r\n }\r\n //* Contact/Complaint - Vendor\r\n function buildContactRadios(csContact) {\r\n //Radio Container\r\n const radioWrap = document.createElement('div');\r\n radioWrap.classList.add('ic_questionRadioContainer');\r\n //Radios\r\n const yesRadio = input.buildRadio({\r\n id: 'CS_Contact-yes',\r\n text: 'Yes',\r\n name: 'CS_Contact',\r\n isChecked: csContact === 'Y',\r\n isDisabled: readOnly,\r\n });\r\n const noRadio = input.buildRadio({\r\n id: 'CS_Contact-no',\r\n text: 'No',\r\n name: 'CS_Contact',\r\n isChecked: csContact === 'N',\r\n isDisabled: readOnly,\r\n });\r\n\r\n if (csContact === '') {\r\n radioWrap.classList.add('error');\r\n }\r\n\r\n radioWrap.appendChild(yesRadio);\r\n radioWrap.appendChild(noRadio);\r\n\r\n return radioWrap;\r\n }\r\n function buildContactQuestion(data, popup, isSigned) {\r\n // popup === 'member' || 'sign'\r\n\r\n //Question Container\r\n const contactQuestion = document.createElement('div');\r\n contactQuestion.classList.add('contactQuestion');\r\n\r\n // Inner Wrap for just Dropdown and Radios *for safari\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('ic_questionContainer');\r\n\r\n //Question Text Element, Will contain dropdown too\r\n const contactQuestionText = document.createElement('div');\r\n contactQuestionText.classList.add('contactQuestionText');\r\n\r\n //SSA Inline Dropdown\r\n const csContactQuestionDropdown = dropdown.inlineBuild({\r\n dropdownId: 'isp_ic_vendorContactDropdown',\r\n });\r\n\r\n // populate\r\n populateDropdownVendor(csContactQuestionDropdown, data.csContactProviderVendorId);\r\n\r\n // Build Out Question with dropdown\r\n contactQuestionText.innerHTML = `*I understand I can contact someone at `;\r\n contactQuestionText.appendChild(csContactQuestionDropdown);\r\n contactQuestionText.innerHTML += ' if I want to file a complaint.';\r\n wrap.appendChild(contactQuestionText);\r\n contactQuestion.appendChild(wrap);\r\n\r\n //Contact Input\r\n const contactInputValue = getSSAById(data.ssaId);\r\n const contactInput = input.build({\r\n id: 'CS_Contact_Input',\r\n label: 'Contact',\r\n value: contactInputValue,\r\n readonly: true,\r\n callbackType: 'input',\r\n });\r\n contactInput.classList.add('csContactInput');\r\n contactQuestion.appendChild(contactInput);\r\n\r\n // readyonly / disabled check / required fields\r\n if (readOnly || popup === 'sign' || isSigned) {\r\n //contactQuestion.classList.add('disabled');\r\n contactQuestionText.classList.add('disabled');\r\n csContactQuestionDropdown.classList.add('disabled');\r\n } else {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n //contactQuestion.classList.add('disabled');\r\n contactQuestionText.classList.add('disabled');\r\n csContactQuestionDropdown.classList.add('disabled');\r\n } else {\r\n if (data.csContactProviderVendorId === '') {\r\n contactQuestionText.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n if (popup === 'member') return contactQuestion;\r\n\r\n contactQuestion.classList.add('withRadios');\r\n\r\n const radioWrap = buildContactRadios(data.csContact);\r\n if (readOnly || isSigned) {\r\n radioWrap.classList.add('disabled');\r\n }\r\n\r\n wrap.appendChild(radioWrap);\r\n\r\n return contactQuestion;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* TABLE\r\n //*------------------------------------------------------\r\n async function refreshTable() {\r\n const parentNode = teamMemberTable.parentNode;\r\n const oldTable = teamMemberTable;\r\n\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(parentNode, 'Gathering Team Members...');\r\n\r\n teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n if (teamMemberData.length !== 0) {\r\n csSSAPeopleIdGlobal = teamMemberData[0].csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = teamMemberData[0].csContactProviderVendorId;\r\n csContactInputGlobal = teamMemberData[0].csContactInput;\r\n } else {\r\n csSSAPeopleIdGlobal = $.session.PeopleId;\r\n csrVendorIdGlobal = '';\r\n csContactInputGlobal = '';\r\n }\r\n\r\n PROGRESS__ANYWHERE.SPINNER.hide(parentNode);\r\n\r\n const newTable = buildTeamMemberTable();\r\n parentNode.replaceChild(newTable, oldTable);\r\n teamMemberTable = newTable;\r\n\r\n // after table refresh update planData\r\n planData.refreshDropdownData();\r\n }\r\n function buildTeamMemberTable() {\r\n const isSortable = !$.session.planUpdate || readOnly ? false : true;\r\n names = [];\r\n\r\n const teamMemberTable = table.build({\r\n tableId: 'signaturesTable',\r\n columnHeadings: [\r\n 'Team Member',\r\n //'Relationship Type',\r\n 'Name',\r\n 'Participated',\r\n 'Signature Type',\r\n ],\r\n headline: 'Team Members',\r\n endIcon: true,\r\n secondendIcon: true,\r\n sortable: isSortable,\r\n onSortCallback: res => {\r\n consentAndSignAjax.updateTableRowOrder({\r\n assessmentId: planId,\r\n signatureId: res.row.id.split('-')[1],\r\n newPos: res.newIndex,\r\n });\r\n },\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = teamMemberTable.querySelectorAll('.header div');\r\n if (headers.length > 6)\r\n number = 1;\r\n\r\n headers[0 + number].setAttribute('data-type', 'string'); // Team Member\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Participated\r\n headers[3 + number].setAttribute('data-type', 'string'); // Signature Type\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(teamMemberTable);\r\n\r\n\r\n if (teamMemberData) {\r\n const tableData = teamMemberData.map(m => {\r\n let isSigned = m.dateSigned !== '';\r\n const inPersonSignature = m.description;\r\n\r\n const teamMember = m.teamMember;\r\n const relationshipType = m.relationship;\r\n let name = contactInformation.cleanName({\r\n lastName: m.lastName,\r\n firstName: m.name,\r\n middleName: m.middleName,\r\n });\r\n if (m.generation) {\r\n name = name + \" \" + m.generation;\r\n }\r\n const participated = m.participated === '' ? '' : m.participated === 'Y' ? 'Yes' : 'No';\r\n const signatureType = csTeamMember.getSignatureTypeByID(m.signatureType);\r\n\r\n if (signatureType === 'In-Person' && inPersonSignature === '') {\r\n isSigned = false;\r\n }\r\n names.push(name);\r\n\r\n const tableOBJ = {\r\n values: [teamMember, name, participated, signatureType],\r\n id: `sig-${m.signatureId}`,\r\n endIcon: icons.edit,\r\n secondendIcon: icons.delete,\r\n onClick: async e => {\r\n if (m.teamMember.slice(-6) === 'Vendor') {\r\n await csVendor.showPopup({\r\n isNewMember: false,\r\n isReadOnly: readOnly,\r\n memberData: m,\r\n currentTeamMemberData: teamMemberData,\r\n vendorData: vendorData,\r\n clickSource: 'teamGrid',\r\n });\r\n } else {\r\n await csTeamMember.showPopup({\r\n isNewMember: false,\r\n isReadOnly: readOnly,\r\n memberData: m,\r\n });\r\n }\r\n },\r\n };\r\n\r\n tableOBJ.secondendIconCallback = e => {\r\n // deelte row\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to remove this team member?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n pendingSave.show('Deleting...');\r\n\r\n const res = await consentAndSignAjax.deleteTeamMember({\r\n token: $.session.Token,\r\n signatureId: m.signatureId,\r\n });\r\n\r\n // triggers event listener for one span button\r\n oneSpan.fireDataUpdateEvent(planId);\r\n\r\n if (res === '[]') {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to delete. Please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n failSave.hide();\r\n }, 1000);\r\n }\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {},\r\n },\r\n });\r\n };\r\n\r\n if (signatureType !== 'No Signature Required') {\r\n // set icon callback\r\n tableOBJ.endIconCallback = e => {\r\n csSignature.showPopup({\r\n isNewMember: false,\r\n isReadOnly: readOnly,\r\n memberData: m,\r\n });\r\n };\r\n // set isSigned to true\r\n tableOBJ.attributes = [{ key: 'data-signed', value: isSigned }];\r\n } else {\r\n tableOBJ.attributes = [\r\n { key: 'data-signed', value: true },\r\n { key: 'data-hideicon', value: true },\r\n ];\r\n }\r\n\r\n if (signatureType === 'E-Digital') {\r\n tableOBJ.attributes = [\r\n { key: 'data-signed', value: isSigned },\r\n { key: 'data-hideicon', value: true },\r\n ];\r\n\r\n if (isSigned) {\r\n tableOBJ.attributes.push({\r\n key: 'data-eDigitalSigned',\r\n value: true,\r\n });\r\n }\r\n }\r\n\r\n // hide/show delete icon\r\n if (isSigned || readOnly || !$.session.planUpdate) {\r\n tableOBJ.attributes.push({\r\n key: 'data-hideDeleteicon',\r\n value: true,\r\n });\r\n }\r\n\r\n return tableOBJ;\r\n });\r\n\r\n table.populate(teamMemberTable, tableData, isSortable);\r\n }\r\n\r\n return teamMemberTable;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function getSectionMarkup() {\r\n // section\r\n const section = document.createElement('div');\r\n section.classList.add('ispSignaturesAndConsent');\r\n // heading\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Signature / Consent';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '6px';\r\n // table\r\n const tableWrap = document.createElement('div');\r\n tableWrap.id = 'ispSignature_tableWrap';\r\n teamMemberTable = buildTeamMemberTable();\r\n\r\n const addMemberBtn = button.build({\r\n id: 'sig_addMember',\r\n text: 'ADD TEAM MEMBER',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n csTeamMember.showPopup({\r\n isNewMember: true,\r\n isReadOnly: readOnly,\r\n memberData: {\r\n teamMember: '',\r\n name: '',\r\n lastName: '',\r\n participated: '',\r\n // sign/disent\r\n signature: '',\r\n signatureType: '',\r\n dissentAreaDisagree: '',\r\n dissentHowToAddress: '',\r\n dateSigned: '',\r\n dissentDate: '',\r\n // consent\r\n csAgreeToPlan: '',\r\n csChangeMind: '',\r\n csChangeMindSSAPeopleId: csSSAPeopleIdGlobal,\r\n csContact: '',\r\n csContactInput: csContactInputGlobal,\r\n csContactProviderVendorId: csrVendorIdGlobal,\r\n csDueProcess: '',\r\n csFCOPExplained: '',\r\n csResidentialOptions: '',\r\n csRightsReviewed: '',\r\n csSupportsHealthNeeds: '',\r\n csTechnology: '',\r\n // new\r\n contactId: '',\r\n peopleId: '',\r\n buildingNumber: '',\r\n dateOfBirth: '',\r\n planYearStart: '',\r\n planYearEnd: '',\r\n },\r\n currentTeamMemberData: teamMemberData,\r\n });\r\n },\r\n });\r\n\r\n const addVendorBtn = button.build({\r\n id: 'sig_addVendor',\r\n text: 'ADD VENDOR',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n csVendor.showPopup({\r\n isNewMember: true,\r\n isReadOnly: readOnly,\r\n memberData: {\r\n teamMember: '',\r\n name: '',\r\n lastName: '',\r\n participated: '',\r\n // sign/disent\r\n signature: '',\r\n signatureType: '',\r\n dissentAreaDisagree: '',\r\n dissentHowToAddress: '',\r\n dateSigned: '',\r\n dissentDate: '',\r\n // consent\r\n csAgreeToPlan: '',\r\n csChangeMind: '',\r\n csChangeMindSSAPeopleId: csSSAPeopleIdGlobal,\r\n csContact: '',\r\n csContactInput: csContactInputGlobal,\r\n csContactProviderVendorId: csrVendorIdGlobal,\r\n csDueProcess: '',\r\n csFCOPExplained: '',\r\n csResidentialOptions: '',\r\n csRightsReviewed: '',\r\n csSupportsHealthNeeds: '',\r\n csTechnology: '',\r\n // new\r\n contactId: '',\r\n peopleId: '',\r\n buildingNumber: '',\r\n dateOfBirth: '',\r\n planYearStart: '',\r\n planYearEnd: '',\r\n },\r\n currentTeamMemberData: teamMemberData,\r\n vendorData: vendorData,\r\n clickSource: 'addVendor',\r\n });\r\n },\r\n });\r\n\r\n function buildReportsScreen() {\r\n const screen = document.createElement('div');\r\n screen.id = 'reportsScreen';\r\n screen.classList.add('screen');\r\n\r\n const attachmentsWrap = document.createElement('div');\r\n attachmentsWrap.classList.add('attachmentsWrap');\r\n const attachHeading = document.createElement('p');\r\n attachHeading.classList.add('attachmentsHeading');\r\n attachHeading.innerText = `Please select the attachment(s) that should be included with the report.`;\r\n attachmentsWrap.appendChild(attachHeading);\r\n\r\n const planAttWrap = document.createElement('div');\r\n planAttWrap.classList.add('planAttWrap');\r\n const workflowAttWrap = document.createElement('div');\r\n workflowAttWrap.classList.add('workflowAttWrap');\r\n const signatureAttWrap = document.createElement('div');\r\n signatureAttWrap.classList.add('signatureAttWrap');\r\n attachmentsWrap.appendChild(planAttWrap);\r\n attachmentsWrap.appendChild(workflowAttWrap);\r\n attachmentsWrap.appendChild(signatureAttWrap);\r\n\r\n const planHeading = document.createElement('h2');\r\n const workflowHeading = document.createElement('h2');\r\n const signHeading = document.createElement('h2');\r\n planHeading.innerText = 'Plan Attachments';\r\n workflowHeading.innerText = 'Workflow Attachments';\r\n signHeading.innerText = 'Signature Attachments';\r\n planAttWrap.appendChild(planHeading);\r\n workflowAttWrap.appendChild(workflowHeading);\r\n signatureAttWrap.appendChild(signHeading);\r\n\r\n planAttBody = document.createElement('div');\r\n signatureAttBody = document.createElement('div');\r\n workflowAttBody = document.createElement('div');\r\n planAttWrap.appendChild(planAttBody);\r\n signatureAttWrap.appendChild(signatureAttBody);\r\n workflowAttWrap.appendChild(workflowAttBody);\r\n\r\n screen.appendChild(attachmentsWrap);\r\n\r\n return screen;\r\n }\r\n\r\n async function showESignaturesPopup() {\r\n ESignaturesPopup = POPUP.build({\r\n id: 'sendESignaturesPopup',\r\n header: 'Send E-Sign Emails',\r\n });\r\n\r\n const morepopupmenu = document.createElement('div');\r\n morepopupmenu.classList.add('moreMenuPopup__menu', 'visible');\r\n\r\n let include = 'N';\r\n\r\n let reportsScreen = buildReportsScreen();\r\n\r\n teamMemberData;\r\n\r\n const selectedAttachmentsPlan = {};\r\n const selectedAttachmentsWorkflow = {};\r\n const selectedAttachmentsSignature = {};\r\n\r\n // clear out body before each run to prevent dups\r\n planAttBody.innerHTML = '';\r\n workflowAttBody.innerHTML = '';\r\n signatureAttBody.innerHTML = '';\r\n\r\n // Show Attachements\r\n const attachments = await planAjax.getPlanAndWorkFlowAttachments({\r\n token: $.session.Token,\r\n assessmentId: planId, //TODO\r\n });\r\n\r\n let index = 0;\r\n\r\n if (attachments) {\r\n for (const prop in attachments) {\r\n attachments[prop].order = index;\r\n const a = attachments[prop];\r\n const attachment = document.createElement('div');\r\n attachment.classList.add('attachment');\r\n const description = document.createElement('p');\r\n description.innerText = a.description;\r\n attachment.appendChild(description);\r\n\r\n attachment.addEventListener('click', () => {\r\n if (!attachment.classList.contains('selected')) {\r\n attachment.classList.add('selected');\r\n if (a.sigAttachmentId) {\r\n selectedAttachmentsSignature[a.order] = { ...a };\r\n } else if (a.whereFrom === 'Plan') {\r\n selectedAttachmentsPlan[a.order] = { ...a };\r\n } else {\r\n selectedAttachmentsWorkflow[a.order] = { ...a };\r\n }\r\n } else {\r\n attachment.classList.remove('selected');\r\n if (a.sigAttachmentId) {\r\n delete selectedAttachmentsSignature[a.order];\r\n } else if (a.whereFrom === 'Plan') {\r\n delete selectedAttachmentsPlan[a.order];\r\n } else {\r\n delete selectedAttachmentsWorkflow[a.order];\r\n }\r\n }\r\n });\r\n\r\n if (a.sigAttachmentId) {\r\n signatureAttBody.appendChild(attachment);\r\n } else if (a.whereFrom === 'Plan') {\r\n planAttBody.appendChild(attachment);\r\n } else {\r\n workflowAttBody.appendChild(attachment);\r\n }\r\n\r\n index++;\r\n }\r\n }\r\n\r\n // checkbox\r\n includeCheckbox = input.buildCheckbox({\r\n id: 'reportCheckbox',\r\n // className: 'reportCheckbox',\r\n isChecked: include === 'Y' ? true : false,\r\n });\r\n\r\n includeCheckbox.addEventListener('change', event => {\r\n include = event.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n // build & show spinner\r\n const spinner = PROGRESS.SPINNER.get('Sending E-Sign Request...');\r\n const screenInner = reportsScreen.querySelector('.attachmentsWrap');\r\n reportsScreen.removeChild(doneBtn);\r\n reportsScreen.removeChild(checkboxArea);\r\n reportsScreen.removeChild(screenInner);\r\n reportsScreen.appendChild(spinner);\r\n // generate report\r\n const planAttachmentIds = plan.getAttachmentIds(selectedAttachmentsPlan);\r\n const wfAttachmentIds = plan.getAttachmentIds(selectedAttachmentsWorkflow);\r\n const sigAttachmentIds = plan.getAttachmentIds(selectedAttachmentsSignature);\r\n\r\n const url = new URL(window.location.href);\r\n const webpageURL = url.origin + url.pathname.substring(0, url.pathname.lastIndexOf('/') + 1);\r\n\r\n const eSignatureTeamMemberData = teamMemberData\r\n .filter(member => member.signatureType === '4' && member.signature === '')\r\n .map(member => ({\r\n peopleId: member.peopleId,\r\n planId: member.planId,\r\n signatureId: member.signatureId,\r\n vendorId: member.vendorId,\r\n webpageURL\r\n }));\r\n\r\n const successfulSend = await _UTIL.fetchData('saveReportAndSendESignEmail',\r\n {\r\n token: $.session.Token,\r\n eSignatureTeamMemberData,\r\n reportData: {\r\n assessmentID: planId,\r\n versionID: '1',\r\n extraSpace: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag: 'false',\r\n signatureOnly: false,\r\n include\r\n }\r\n }\r\n );\r\n\r\n // remove spinner\r\n reportsScreen.removeChild(spinner);\r\n reportsScreen.appendChild(screenInner);\r\n reportsScreen.classList.remove('visible');\r\n POPUP.hide(ESignaturesPopup);\r\n\r\n let sendESignaturesEmailPopup = POPUP.build({\r\n id: 'sendESignaturesEmailPopup',\r\n hideX: true\r\n });\r\n \r\n let message;\r\n if (successfulSend.saveReportAndSendESignEmailResult === 'success') {\r\n message = 'All requests for digital signatures have been sent'\r\n } else {\r\n message = 'Something went wrong sending digital signatures. Please try again.'\r\n }\r\n\r\n const messageElement = document.createElement('p');\r\n messageElement.innerText = message;\r\n \r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const closeBtn = button.build({\r\n text: 'Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendESignaturesEmailPopup);\r\n },\r\n });\r\n \r\n btnWrap.appendChild(closeBtn);\r\n sendESignaturesEmailPopup.appendChild(messageElement);\r\n sendESignaturesEmailPopup.appendChild(btnWrap);\r\n \r\n POPUP.show(sendESignaturesEmailPopup);\r\n },\r\n });\r\n\r\n // add checkbox\r\n const checkboxCheck = document.createElement('div');\r\n checkboxCheck.appendChild(includeCheckbox);\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n reportsScreen.appendChild(checkboxArea);\r\n reportsScreen.appendChild(doneBtn);\r\n\r\n morepopupmenu.appendChild(reportsScreen);\r\n ESignaturesPopup.appendChild(morepopupmenu);\r\n\r\n POPUP.show(ESignaturesPopup);\r\n }\r\n\r\n let sendDocumentToOneSpanBtn;\r\n let requestESignaturesBtn;\r\n if ($.session.oneSpan) {\r\n sendDocumentToOneSpanBtn = oneSpan.buildSendDocumentToOneSpanBtn(planId);\r\n\r\n const planStatus = plan.getPlanStatus();\r\n if (planStatus === 'C') {\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n }\r\n\r\n //initial check for digital signers to remove disabled class from one span button\r\n teamMemberData.forEach(member => {\r\n if (member.signatureType === '1') {\r\n sendDocumentToOneSpanBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n // Checks for any changes in the team members and the signature type\r\n document.addEventListener('data-update', function (event) {\r\n oneSpan.shouldBeDisabled(sendDocumentToOneSpanBtn, event.detail.data);\r\n });\r\n } else {\r\n requestESignaturesBtn = button.build({\r\n id: 'sig_addMember',\r\n text: 'REQUEST E-SIGNATURES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n showESignaturesPopup()\r\n }\r\n });\r\n\r\n // initial check for esignatures btn\r\n const filteredTeamMemberData = teamMemberData.filter(member => member.signatureType === '4' && member.signature === '');\r\n if (filteredTeamMemberData.length === 0) {\r\n requestESignaturesBtn.classList.add('disabled');\r\n }\r\n\r\n // Checks for any changes in the team members and the signature type\r\n document.addEventListener('data-update', function (event) {\r\n oneSpan.shouldBeDisabled(requestESignaturesBtn, event.detail.data, '4');\r\n });\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('topOutcomeWrap');\r\n\r\n btnWrap.appendChild(addMemberBtn);\r\n btnWrap.appendChild(addVendorBtn);\r\n\r\n if ($.session.oneSpan) {\r\n btnWrap.appendChild(sendDocumentToOneSpanBtn);\r\n } else {\r\n btnWrap.appendChild(requestESignaturesBtn);\r\n }\r\n\r\n tableWrap.appendChild(btnWrap);\r\n tableWrap.appendChild(teamMemberTable);\r\n\r\n if (readOnly) {\r\n teamMemberTable.classList.add('disableDrag');\r\n addMemberBtn.classList.add('disabled');\r\n addVendorBtn.classList.add('disabled');\r\n if ($.session.oneSpan) {\r\n //\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // build it\r\n section.appendChild(heading);\r\n section.appendChild(tableWrap);\r\n\r\n return section;\r\n }\r\n\r\n function doesIdExistInVendors(vendorID) {\r\n const dropdownData = getVendorDropdownData();\r\n let mergedData = [...dropdownData.nonPaidSupport, ...dropdownData.paidSupport];\r\n const filteredValue = mergedData.filter(d => d.value === vendorID);\r\n return filteredValue.length === 0 ? false : true;\r\n }\r\n function invalidContactProviderVendorIdCheck() {\r\n const dropdownData = getVendorDropdownData();\r\n let mergedData = [...dropdownData.nonPaidSupport, ...dropdownData.paidSupport];\r\n\r\n teamMemberData.forEach((member, index) => {\r\n const filteredValue = mergedData.filter(d => d.value === member.csContactProviderVendorId);\r\n if (filteredValue.length === 0) {\r\n teamMemberData[index].csContactProviderVendorId = '';\r\n }\r\n });\r\n }\r\n\r\n async function checkOneSpan() {\r\n // Checks for new signed values or completed documents to retrieve\r\n oneSpanDocumentStatus = await oneSpanAjax.oneSpanCheckDocumentStatus({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // Retrieves signers values and downloads document if all digital signers have signed\r\n if (oneSpanDocumentStatus[0].signedStatus !== '') {\r\n const oneSpanRetrieveData = {\r\n token: $.session.Token,\r\n packageId: oneSpanDocumentStatus[0].packageId,\r\n assessmentID: planId,\r\n };\r\n\r\n await oneSpanAjax.oneSpanGetSignedDocuments(oneSpanRetrieveData);\r\n }\r\n }\r\n\r\n async function init(data) {\r\n planId = data.planId;\r\n readOnly = data.readOnly;\r\n paidSupportProviders = servicesSupports.getSelectedVendorIds();\r\n effStartDate = planDates.getEffectiveStartDate();\r\n effEndDate = planDates.getEffectiveEndDate();\r\n selectedConsumer = plan.getSelectedConsumer();\r\n\r\n await checkOneSpan();\r\n\r\n teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n vendorData = await consentAndSignAjax.getAllActiveVendors({\r\n token: $.session.Token,\r\n });\r\n\r\n if (teamMemberData && teamMemberData.length !== 0) {\r\n csSSAPeopleIdGlobal = teamMemberData[0].csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = teamMemberData[0].csContactProviderVendorId;\r\n csContactInputGlobal = teamMemberData[0].csContactInput;\r\n } else {\r\n csSSAPeopleIdGlobal = $.session.PeopleId;\r\n csrVendorIdGlobal = '';\r\n csContactInputGlobal = '';\r\n }\r\n\r\n await loadDropdownData();\r\n\r\n invalidContactProviderVendorIdCheck();\r\n }\r\n\r\n return {\r\n init,\r\n refreshTable,\r\n getMarkup: getSectionMarkup,\r\n insertNewTeamMember,\r\n updateTeamMember,\r\n deleteTeamMember,\r\n buildChangeMindQuestion,\r\n buildContactQuestion,\r\n updateSSADropdownWidth,\r\n updateVendorDropdownWidth,\r\n setSSADropdownInitialWidth,\r\n setVendorDropdownInitialWidth,\r\n getConsentGlobalValues,\r\n planStatusChange,\r\n isTeamMemberConsentable,\r\n isTeamMemberGuardian,\r\n getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds,\r\n getNames,\r\n getTeamMemberData,\r\n doesIdExistInVendors,\r\n };\r\n})();\r\n","const consentAndSignAjax = (() => {\r\n // GET\r\n //-------------------------------------\r\n async function getConsentAndSignData(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanSignatures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSignaturesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanInformedConsentSSAs(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanInformedConsentSSAs/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanInformedConsentSSAsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanInformedConsentVendors(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanInformedConsentVendors/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanInformedConsentVendorsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getAllActiveVendors(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllActiveVendors/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAllActiveVendorsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function GetSalesForceId(peopleId) {\r\n // token, signatureId\r\n const retrieveData = {\r\n token: $.session.Token,\r\n consumerId: parseInt(plan.getSelectedConsumer().id),\r\n peopleId: parseInt(peopleId),\r\n };\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetSalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetSalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getTeamMemberListFromState(retrieveData) {\r\n //peopleId should be an integer in the retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTeamMemberListFromState/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getTeamMemberListFromStateResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getStateGuardiansforConsumer(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStateGuardiansforConsumer/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getStateGuardiansforConsumerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getStateCaseManagerforConsumer(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStateCaseManagerforConsumer/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getStateCaseManagerforConsumerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function assignStateCaseManagertoConsumers(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/assignStateCaseManagertoConsumers/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.assignStateCaseManagertoConsumersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getTeamMemberBySalesForceId(retrieveData) {\r\n // string salesForceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTeamMemberBySalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getTeamMemberBySalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getConsumerOrganizationId(retrieveData) {\r\n //peopleId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerOrganizationId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerOrganizationIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getCaseManagersfromOptionsTable(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseManagersfromOptionsTable/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getCaseManagersfromOptionsTableResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getConsumerswithSaleforceIds(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerswithSaleforceIds/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerswithSaleforceIdsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getLocationswithSalesforceId() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationswithSalesforceId/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getLocationswithSalesforceIdResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //-------------------------------------\r\n async function insertTeamMember(retrieveData) {\r\n //* NO NEED TO REMOVE UNSAVABLE NOTE TEXT, THIS IS DONE IN BACKEND\r\n //*--------------------------------------------------------------------\r\n // token, assessmentId\r\n // teamMember, name, lastName, relationship, participated, parentOfMinor\r\n // signature, dateSigned, dissentAreaDisagree, dissentHowToAddress, dissentDate\r\n // contactId, peopleId, buildingNumber, dateOfBirth, planYearStart, planYearEnd\r\n // csChangeMind, csChangeMindSSAPeopleId, csContact, csContactProviderVendorId, csContactInput\r\n // csRightsReviewed, csAgreeToPlan, csFCOPExplained, csDueProcess, csResidentialOptions, csSupportsHealthNeeds, csTechnology,\r\n // useExisting, relationshipImport, consumerId, createRelationship, isVeendor(bool), email, parentOfMinor\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertTeamMember/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanTeamMemberResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //-------------------------------------\r\n async function updateTeamMember(retrieveData) {\r\n //! THIS WILL ONLY UPDATE THE FOLLOWING DATA\r\n // token, signatureId, teamMember, name, lastName, relationship, participated,\r\n // dissentAreaDisagree, dissentHowToAddress, dissentDate, signature, contactId, buildingNumber, dateOfBirth, salesForceId, consumerId\r\n //! USE updatePlanConsentStatements() FOR CS DATA\r\n\r\n //moved functionality to C# - MAT\r\n //if (retrieveData.name !== '') {\r\n // retrieveData.name = UTIL.removeUnsavableNoteText(retrieveData.name);\r\n //}\r\n //if (retrieveData.relationship !== '') {\r\n // retrieveData.relationship = UTIL.removeUnsavableNoteText(retrieveData.relationship);\r\n //}\r\n //if (retrieveData.dissentAreaDisagree !== '') {\r\n // retrieveData.dissentAreaDisagree = UTIL.removeUnsavableNoteText(\r\n // retrieveData.dissentAreaDisagree,\r\n // );\r\n //}\r\n //if (retrieveData.dissentHowToAddress !== '') {\r\n // retrieveData.dissentHowToAddress = UTIL.removeUnsavableNoteText(\r\n // retrieveData.dissentHowToAddress,\r\n // );\r\n //}\r\n\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanTeamMember/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanTeamMemberResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanConsentStatements(retrieveData) {\r\n /* token, signatureId, csChangeMind, csChangeMindSSAPeopleId, csContact,\r\n csContactProviderVendorId, csContactInput, csRightsReviewed, csAgreeToPlan, \r\n csFCOPExplained, csDueProcess, csResidentialOptions, csSupportsHealthNeeds, csTechnology\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanConsentStatements/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanConsentStatementsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateTableRowOrder(retrieveData) {\r\n // assessmentId, signatureId, newPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanSignatureOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanSignatureOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //-------------------------------------\r\n async function deleteTeamMember(retrieveData) {\r\n // token, signatureId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanSignature/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanSignatureResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // OTHER\r\n //-------------------------------------\r\n async function setSalesForceIdForTeamMemberUpdate(retrieveData) {\r\n //peopleId and salesForceId both strings\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setSalesForceIdForTeamMemberUpdate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.setSalesForceIdForTeamMemberUpdateResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function validateConsumerForSalesForceId(retrieveData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/validateConsumerForSalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.validateConsumerForSalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getConsentAndSignData,\r\n getPlanInformedConsentSSAs,\r\n getPlanInformedConsentVendors,\r\n getTeamMemberBySalesForceId,\r\n getConsumerOrganizationId,\r\n getCaseManagersfromOptionsTable,\r\n getConsumerswithSaleforceIds,\r\n getLocationswithSalesforceId,\r\n updateTeamMember,\r\n updatePlanConsentStatements,\r\n updateTableRowOrder,\r\n insertTeamMember,\r\n deleteTeamMember,\r\n GetSalesForceId,\r\n getTeamMemberListFromState,\r\n setSalesForceIdForTeamMemberUpdate,\r\n validateConsumerForSalesForceId,\r\n getStateGuardiansforConsumer,\r\n getStateCaseManagerforConsumer,\r\n assignStateCaseManagertoConsumers,\r\n getAllActiveVendors,\r\n };\r\n})();\r\n","const csRelationship = (() => {\r\n let selectedRelationship;\r\n let gkRelationships;\r\n // DOM\r\n let teamMemberPopup;\r\n let importPopup;\r\n let existingRelationshipPopup;\r\n let relationshipsWrap;\r\n let doneBtn;\r\n\r\n function buildExistingPopupMessage(selectedMemberData) {\r\n const message = document.createElement('div');\r\n message.classList.add('message');\r\n\r\n const name = contactInformation.cleanName({\r\n firstName: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n });\r\n\r\n message.innerHTML = `\r\n

    An existing record was found for this Team Member:

    \r\n

    ${name}

    \r\n

    ${dates.removeTimestamp(selectedMemberData.dateOfBirth)}

    \r\n

    ${selectedMemberData.buildingNumber}

    \r\n

    Would you like to select this existing record?

    \r\n `;\r\n return message;\r\n }\r\n function showExistingPopup(selectedMemberData, callback) {\r\n teamMemberPopup = document.getElementById('sig_mainPopup');\r\n\r\n existingRelationshipPopup = POPUP.build({\r\n id: 'existingRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = buildExistingPopupMessage(selectedMemberData);\r\n\r\n //* Action Btns\r\n //*------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n existingRelationshipPopup.style.display = 'none';\r\n teamMemberPopup.style.display = 'block';\r\n callback(true);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n existingRelationshipPopup.style.display = 'none';\r\n teamMemberPopup.style.display = 'block';\r\n callback(false);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n existingRelationshipPopup.appendChild(message);\r\n existingRelationshipPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(existingRelationshipPopup);\r\n }\r\n function removeDups(data) {\r\n let uniqueArray = Array.from(new Set(data.map(d => `${d.peopleId}|${d.relationship}`))).map(\r\n id => {\r\n let parts = id.split('|');\r\n return data.find(a => a.peopleId === parts[0] && a.relationship === parts[1]);\r\n },\r\n );\r\n\r\n return uniqueArray;\r\n }\r\n const removeExisting = data => {\r\n const teamMembers = planConsentAndSign.getTeamMemberData();\r\n const teamMemberIDs = teamMembers.map(tm => tm.contactId);\r\n return data.filter(el => !teamMemberIDs.includes(el.contactId));\r\n };\r\n\r\n //*------------------------------------------------------\r\n //* MAIN POPUP\r\n //*------------------------------------------------------\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText = 'Select a name below to import from Relationships.'; //If the person is not in the list, click Add Relationship to add the person to Demographics.';\r\n return message;\r\n }\r\n function buildRelationship(rel) {\r\n const pplID = rel.peopleId;\r\n const salesforceID = rel.salesForceId;\r\n const contactID = rel.contactId;\r\n let name = contactInformation.cleanName({\r\n firstName: rel.firstName,\r\n lastName: rel.lastName.replace('|', ' '),\r\n middleName: rel.middleName,\r\n });\r\n if (rel.generation) {\r\n name = name + \" \" + rel.generation;\r\n }\r\n const dob = dates.removeTimestamp(rel.dateOfBirth);\r\n const adress = `${rel.buildingNumber}`;\r\n let relationshipType = rel.relationship ? rel.relationship : '';\r\n if (relationshipType === 'Self') relationshipType = 'Person Supported';\r\n\r\n const relationshipDiv = document.createElement('div');\r\n relationshipDiv.classList.add('relationship');\r\n\r\n const nameEle = document.createElement('p');\r\n nameEle.innerText = `Name: ${name}`;\r\n if (!name) nameEle.classList.add('error');\r\n\r\n const dobEle = document.createElement('p');\r\n dobEle.innerText = `Date of Birth: ${dob}`;\r\n\r\n const addressEle = document.createElement('p');\r\n addressEle.innerText = `Address: ${adress}`;\r\n\r\n const relationshipTypeEle = document.createElement('p');\r\n relationshipTypeEle.innerText = `Relationship Type: ${relationshipType}`;\r\n\r\n relationshipDiv.appendChild(nameEle);\r\n relationshipDiv.appendChild(dobEle);\r\n relationshipDiv.appendChild(addressEle);\r\n relationshipDiv.appendChild(relationshipTypeEle);\r\n\r\n relationshipDiv.addEventListener('click', e => {\r\n if (!name) {\r\n return;\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n // apply relationsip to team member\r\n const currSelected = relationshipsWrap.querySelector('.selected');\r\n if (currSelected) currSelected.classList.remove('selected');\r\n relationshipDiv.classList.add('selected');\r\n\r\n selectedRelationship = rel;\r\n });\r\n\r\n return relationshipDiv;\r\n }\r\n function showMainPopup() {\r\n gkRelationships = planData.getDropdownData().relationshipsWithDups;\r\n gkRelationships = removeDups(removeExisting(gkRelationships));\r\n teamMemberPopup = document.getElementById('sig_mainPopup');\r\n\r\n importPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = buildPopupMessage();\r\n\r\n //* Relationships\r\n //*------------------\r\n relationshipsWrap = document.createElement('div');\r\n relationshipsWrap.classList.add('relationshipsWrap');\r\n\r\n let teamMembers = planConsentAndSign.getTeamMemberData();\r\n if (!teamMembers) teamMembers = [];\r\n\r\n gkRelationships.sort((a, b) => {\r\n return `${a.firstName} ${a.lastName}` > `${b.firstName} ${b.lastName}` ? 1 : -1;\r\n });\r\n gkRelationships.forEach(rel => {\r\n if (teamMembers.length !== 0) {\r\n const filteredMember = teamMembers.filter(tm => tm.peopleId === rel.peopleId);\r\n if (filteredMember.length >= 1) return;\r\n }\r\n\r\n const relationship = buildRelationship(rel);\r\n relationshipsWrap.appendChild(relationship);\r\n });\r\n\r\n //* Action Btns\r\n //*------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n teamMemberPopup.style.display = 'block';\r\n csTeamMember.applySelectedRelationship(selectedRelationship);\r\n },\r\n });\r\n doneBtn.classList.add('disabled');\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n teamMemberPopup.style.display = 'block';\r\n },\r\n });\r\n\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n importPopup.appendChild(message);\r\n importPopup.appendChild(relationshipsWrap);\r\n importPopup.appendChild(btnWrap);\r\n\r\n teamMemberPopup.style.display = 'none';\r\n POPUP.show(importPopup);\r\n }\r\n\r\n return {\r\n showMainPopup,\r\n showExistingPopup,\r\n };\r\n})();\r\n","const csSalesforce = (() => {\r\n let salesforceRelationships;\r\n let selectedSalesforce;\r\n // DOM\r\n let teamMemberPopup;\r\n let importPopup;\r\n let salesforceWrap;\r\n\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Select the name below from the OhioISP system that matches this Team Member';\r\n return message;\r\n }\r\n function buildRelationship(rel) {\r\n const name = contactInformation.cleanName({\r\n firstName: rel.FirstName,\r\n lastName: rel.LastName,\r\n });\r\n const relType = rel.Role;\r\n\r\n const relationshipDiv = document.createElement('div');\r\n relationshipDiv.classList.add('relationship');\r\n\r\n const nameEle = document.createElement('p');\r\n nameEle.innerText = `Name: ${name}`;\r\n if (!name) nameEle.classList.add('error');\r\n\r\n const relationshipEle = document.createElement('p');\r\n relationshipEle.innerText = `Relationship: ${relType}`;\r\n\r\n relationshipDiv.appendChild(nameEle);\r\n relationshipDiv.appendChild(relationshipEle);\r\n\r\n relationshipDiv.addEventListener('click', e => {\r\n if (!name) return;\r\n // apply relationsip to team member\r\n const currSelected = salesforceWrap.querySelector('.selected');\r\n if (currSelected) currSelected.classList.remove('selected');\r\n relationshipDiv.classList.add('selected');\r\n\r\n selectedSalesforce = rel;\r\n });\r\n\r\n return relationshipDiv;\r\n }\r\n\r\n async function showPopup() {\r\n const selectedConsumer = plan.getSelectedConsumer();\r\n salesforceRelationships = await consentAndSignAjax.getTeamMemberListFromState({\r\n peopleId: parseInt(selectedConsumer.id),\r\n });\r\n\r\n teamMemberPopup = document.getElementById('sig_mainPopup');\r\n\r\n importPopup = POPUP.build({\r\n id: 'importSalesforcePopup',\r\n closeCallback: () => {\r\n overlay.show();\r\n teamMemberPopup.style.display = 'block';\r\n },\r\n });\r\n\r\n const message = buildPopupMessage();\r\n\r\n //* Relationships\r\n //*------------------\r\n salesforceWrap = document.createElement('div');\r\n salesforceWrap.classList.add('salesforceSection');\r\n\r\n if (salesforceRelationships) {\r\n salesforceRelationships.forEach(rel => {\r\n const relationship = buildRelationship(rel);\r\n salesforceWrap.appendChild(relationship);\r\n });\r\n }\r\n\r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const doneBtn = button.build({\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n POPUP.hide(teamMemberPopup);\r\n csTeamMember.linkToSalesForce(selectedSalesforce.Id);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n POPUP.hide(teamMemberPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n importPopup.appendChild(message);\r\n importPopup.appendChild(salesforceWrap);\r\n importPopup.appendChild(btnWrap);\r\n\r\n teamMemberPopup.style.display = 'none';\r\n POPUP.show(importPopup);\r\n }\r\n\r\n return {\r\n showPopup,\r\n };\r\n})();\r\n","const csSignature = (() => {\r\n let selectedMemberData;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let showConsentStatments;\r\n let signatureType;\r\n // dom\r\n let signaturePopup;\r\n let signatureSection;\r\n let changeMindQ;\r\n let complaintQ;\r\n let dissentAreaDisagree;\r\n let dissentHowToAddress;\r\n let standardQuestions; // these are all the radio questions\r\n let sigPad;\r\n let sigBody;\r\n let sigCanvas;\r\n let saveBtn;\r\n // other\r\n let allowSignClear;\r\n let clearSignature = false;\r\n let characterLimits;\r\n let prevDissentData = {};\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkSignautrePopupForErrors() {\r\n const errors = signaturePopup.querySelectorAll('.error');\r\n\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n function parseSignatureData() {\r\n if (sigPad === undefined) {\r\n return '';\r\n }\r\n const dataUrl = sigPad.toDataURL();\r\n const signatureDataUrl = dataUrl.replace('data:image/png;base64,', '');\r\n if (sigPad.isEmpty()) return '';\r\n return signatureDataUrl;\r\n }\r\n async function saveFromSignature(sigPadData) {\r\n let insertSuccess;\r\n\r\n pendingSave.show('Saving...');\r\n\r\n if (sigPadData === emptySignatureDataURL || sigPadData === '') {\r\n sigPadData = '';\r\n } else {\r\n selectedMemberData.signature = sigPadData;\r\n }\r\n\r\n if (isNew) {\r\n insertSuccess = await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n } else {\r\n selectedMemberData.dateSigned = UTIL.formatDateToIso(\r\n dates.removeTimestamp(selectedMemberData.dateSigned),\r\n );\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n insertSuccess = true;\r\n }\r\n\r\n if (insertSuccess) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(signaturePopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(insertSuccess);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n document.getElementById('sig_signPopup').style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n function showWarningPopup(sigPadData) {\r\n UTIL.warningPopup({\r\n message:\r\n 'Once the ISP signature is submitted you will not be able to change it. Do you want to proceed?',\r\n hideX: true,\r\n accept: {\r\n text: 'Yes',\r\n callback: () => saveFromSignature(sigPadData),\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n signaturePopup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n }\r\n function checkForAllowClearSignature() {\r\n if (!isSigned) return false;\r\n\r\n const planStatus = plan.getPlanStatus();\r\n const activePlan = plan.getPlanActiveStatus();\r\n\r\n if ($.session.planClearSignature && planStatus === 'D' && activePlan === true) {\r\n if ($.session.oneSpan && signatureType === '1') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n function clearInputsOnSignatureClear() {\r\n const dissentAreaInput = dissentAreaDisagree.querySelector('.input-field__input');\r\n const dissentHowToInput = dissentHowToAddress.querySelector('.input-field__input');\r\n dissentAreaInput.value = '';\r\n dissentHowToInput.value = '';\r\n dissentAreaInput.style.pointerEvents = 'all';\r\n dissentHowToInput.style.pointerEvents = 'all';\r\n dissentAreaInput.removeAttribute('readonly');\r\n dissentHowToInput.removeAttribute('readonly');\r\n dissentAreaDisagree.classList.remove('disabled');\r\n dissentHowToAddress.classList.remove('disabled');\r\n\r\n if (signatureType === '1') {\r\n const allRadios = [...signaturePopup.querySelectorAll('.ic_questionRadioContainer')];\r\n\r\n // if this works remove below for each's\r\n allRadios.forEach(radio => {\r\n radio.classList.remove('disabled');\r\n radio.classList.add('error');\r\n const radios = [...radio.querySelectorAll('.radio')];\r\n radios.forEach(radio => {\r\n const input = radio.querySelector('input');\r\n input.checked = false;\r\n });\r\n });\r\n }\r\n\r\n const prompt = document.createElement('p');\r\n prompt.innerText = `By checking the boxes below, I agree that this plan reflects actions, services, and supports as requested by the person listed. As a provider, I agree to the services listed in this plan for which I am named a responsible party. I understand that I may revoke my consent at any time verbally or in writing in accordance with DODD rules.`;\r\n prompt.style.marginBottom = '14px';\r\n signaturePopup.insertBefore(prompt, signatureSection);\r\n\r\n checkSignautrePopupForErrors();\r\n }\r\n function clearMemberDataOnClear() {\r\n isSigned = false;\r\n\r\n selectedMemberData.attachmentId = '';\r\n selectedMemberData.dateSigned = '';\r\n selectedMemberData.description = '';\r\n selectedMemberData.csChangeMind = '';\r\n selectedMemberData.csContact = '';\r\n selectedMemberData.csSupportsHealthNeeds = '';\r\n selectedMemberData.csRightsReviewed = '';\r\n selectedMemberData.csAgreeToPlan = '';\r\n selectedMemberData.csTechnology = '';\r\n selectedMemberData.csFCOPExplained = '';\r\n selectedMemberData.csDueProcess = '';\r\n selectedMemberData.csResidentialOptions = '';\r\n selectedMemberData.dissentAreaDisagree = '';\r\n selectedMemberData.dissentHowToAddress = '';\r\n }\r\n function resizeSigCanvas(sigWrap) {\r\n //

    Signature

    \r\n //
    \r\n //
    \r\n // \r\n //
    \r\n //
    \r\n // \"\r\n\r\n const sigBody = sigWrap.querySelector('.signature-pad--body');\r\n const sigCanvas = sigWrap.querySelector('.ispCanvas');\r\n\r\n if (!sigBody || !sigCanvas) return;\r\n\r\n sigCanvas.width = sigBody.offsetWidth;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MARKUP\r\n //*------------------------------------------------------\r\n\r\n function showClearConfirmationPopup() {\r\n const confirmPop = POPUP.build({\r\n id: 'clearSignConfirmPopup',\r\n hideX: true,\r\n });\r\n const message = document.createElement('p');\r\n message.innerText = `Are you sure you would like to remove this signature and any associated consent and dissenting opinions? This cannot be undone.`;\r\n\r\n const yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n yesBtn.classList.add('disabled');\r\n const planId = plan.getCurrentPlanId();\r\n const attachmentId = selectedMemberData.attachmentId;\r\n clearSignature = true;\r\n clearMemberDataOnClear();\r\n clearInputsOnSignatureClear();\r\n const updatedSignatureSection = buildSignatureSection();\r\n signaturePopup.replaceChild(updatedSignatureSection, signatureSection);\r\n signatureSection = updatedSignatureSection;\r\n resizeSigCanvas(updatedSignatureSection);\r\n await planConsentAndSign.updateTeamMember(selectedMemberData, clearSignature);\r\n if (signatureType === '2') {\r\n planAjax.deletePlanAttachment(planId, attachmentId);\r\n }\r\n yesBtn.classList.remove('disabled');\r\n DOM.ACTIONCENTER.removeChild(confirmPop);\r\n planConsentAndSign.refreshTable();\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n DOM.ACTIONCENTER.removeChild(confirmPop);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n confirmPop.appendChild(message);\r\n confirmPop.appendChild(btnWrap);\r\n\r\n POPUP.show(confirmPop);\r\n }\r\n function buildSignatureSection() {\r\n const signatureWrap = document.createElement('div');\r\n signatureWrap.classList.add('signatureWrap');\r\n const signatureTitle = document.createElement('h3');\r\n signatureTitle.classList.add('h3Title');\r\n signatureTitle.innerText = 'Signature';\r\n signatureWrap.appendChild(signatureTitle);\r\n\r\n if (selectedMemberData.description) {\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('innerWrap');\r\n\r\n const attachmentDesc = document.createElement('p');\r\n attachmentDesc.innerText = selectedMemberData.description;\r\n attachmentDesc.classList.add('signAttachmentDesc');\r\n\r\n attachmentDesc.addEventListener('click', () => {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewPlanAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', selectedMemberData.attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', 'junk');\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n });\r\n innerWrap.appendChild(attachmentDesc);\r\n\r\n // signature date\r\n let signDate = UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateSigned));\r\n const date = input.build({\r\n type: 'date',\r\n label: 'Signature Date',\r\n style: 'secondary',\r\n value: signDate,\r\n classNames: 'disabled',\r\n });\r\n if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n innerWrap.appendChild(date);\r\n }\r\n\r\n signatureWrap.appendChild(innerWrap);\r\n return signatureWrap;\r\n } else if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n selectedMemberData.hasWetSignature = false;\r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('innerWrap');\r\n\r\n // signature attachment\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', async e => {\r\n const attPromise = new Promise(resolve => {\r\n const target = e.target;\r\n const file = target.files.item(0);\r\n const fileName = file.name;\r\n const fileType = fileName.split('.').pop();\r\n\r\n selectedMemberData.description = fileName;\r\n selectedMemberData.attachmentType = fileType;\r\n selectedMemberData.hasWetSignature = true;\r\n\r\n new Response(file).arrayBuffer().then(res => {\r\n selectedMemberData.attachment = res;\r\n resolve();\r\n });\r\n });\r\n\r\n await Promise.all([attPromise]);\r\n });\r\n\r\n // signature date\r\n let signDate = selectedMemberData.dateSigned\r\n ? UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateSigned))\r\n : null;\r\n const date = input.build({\r\n type: 'date',\r\n label: '*Signature Date',\r\n style: 'secondary',\r\n value: signDate ? signDate : '',\r\n callback: e => {\r\n selectedMemberData.dateSigned = e.target.value;\r\n\r\n if (!selectedMemberData.dateSigned) {\r\n date.classList.add('error');\r\n if (signDate) {\r\n date.classList.remove('error');\r\n }\r\n } else {\r\n date.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n },\r\n });\r\n\r\n if (!signDate) {\r\n date.classList.add('error');\r\n }\r\n\r\n innerWrap.appendChild(attachmentInput);\r\n innerWrap.appendChild(date);\r\n\r\n signatureWrap.appendChild(innerWrap);\r\n\r\n return signatureWrap;\r\n } else {\r\n selectedMemberData.description = '';\r\n selectedMemberData.attachmentType = '';\r\n selectedMemberData.hasWetSignature = false;\r\n selectedMemberData.attachment = '';\r\n }\r\n\r\n const sigDiv = document.createElement('div');\r\n sigDiv.classList.add('signature-pad');\r\n\r\n sigBody = document.createElement('div');\r\n sigBody.classList.add('signature-pad--body');\r\n sigDiv.appendChild(sigBody);\r\n\r\n if (readOnly) {\r\n sigBody.classList.add('disabled');\r\n }\r\n\r\n if (!isSigned) {\r\n sigCanvas = document.createElement('canvas');\r\n sigCanvas.classList.add('ispCanvas');\r\n sigBody.appendChild(sigCanvas);\r\n sigPad = new SignaturePad(sigCanvas);\r\n } else {\r\n const sigImage = document.createElement('img');\r\n sigImage.src = selectedMemberData.signature;\r\n sigImage.addEventListener('contextmenu', event => {\r\n event.preventDefault();\r\n return false;\r\n });\r\n sigImage.addEventListener('mousedown', event => {\r\n event.preventDefault();\r\n return false;\r\n });\r\n sigImage.style.pointerEvents = 'none';\r\n sigBody.appendChild(sigImage);\r\n }\r\n\r\n // this clear signature button is only for the sig pad canvas\r\n const clearSignatureBtn = button.build({\r\n id: '',\r\n text: 'clear',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n sigPad.clear();\r\n },\r\n });\r\n\r\n signatureWrap.appendChild(sigDiv);\r\n if (!isSigned && !readOnly) {\r\n signatureWrap.appendChild(clearSignatureBtn);\r\n }\r\n\r\n return signatureWrap;\r\n }\r\n function buildDissentSection() {\r\n const dissentWrap = document.createElement('div');\r\n dissentWrap.classList.add('dissentWrap');\r\n const dissentTitle = document.createElement('h3');\r\n dissentTitle.classList.add('h3Title');\r\n dissentTitle.innerText = 'Dissenting Opinion';\r\n // questions\r\n dissentAreaDisagree = input.build({\r\n label: 'Area Team Member Disagrees',\r\n value: selectedMemberData.dissentAreaDisagree,\r\n type: 'textarea',\r\n readonly: isSigned || readOnly,\r\n classNames: 'autosize',\r\n charLimit: characterLimits.dissentAreaDisagree,\r\n forceCharLimit: true,\r\n callback: event => {\r\n selectedMemberData.dissentAreaDisagree = event.target.value;\r\n },\r\n });\r\n dissentHowToAddress = input.build({\r\n label: 'How to Address',\r\n value: selectedMemberData.dissentHowToAddress,\r\n type: 'textarea',\r\n readonly: isSigned || readOnly,\r\n classNames: 'autosize',\r\n charLimit: characterLimits.dissentHowToAddress,\r\n forceCharLimit: true,\r\n callback: event => {\r\n selectedMemberData.dissentHowToAddress = event.target.value;\r\n },\r\n });\r\n dissentWrap.appendChild(dissentTitle);\r\n dissentWrap.appendChild(dissentAreaDisagree);\r\n dissentWrap.appendChild(dissentHowToAddress);\r\n\r\n if (isSigned || readOnly) {\r\n dissentAreaDisagree.classList.add('disabled');\r\n dissentHowToAddress.classList.add('disabled');\r\n }\r\n\r\n return dissentWrap;\r\n }\r\n function buildStandardQuestionSet() {\r\n const standardQuestions = [\r\n {\r\n id: 'csSupportsHealthNeeds',\r\n text: '*I agree this plan contains supports to meet my health and welfare needs.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csSupportsHealthNeeds,\r\n },\r\n {\r\n id: 'csRightsReviewed',\r\n text: '*Individual rights have been reviewed with me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csRightsReviewed,\r\n },\r\n {\r\n id: 'csAgreeToPlan',\r\n text: '*I understand the purpose, benefits, and potential risks. I agree and consent to this entire plan.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csAgreeToPlan,\r\n },\r\n {\r\n id: 'csTechnology',\r\n text: '*Technology solutions have been explored with my team and me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csTechnology,\r\n },\r\n {\r\n id: 'csFCOPExplained',\r\n text: '*Free Choice Of Provider has been explained to me.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csFCOPExplained,\r\n },\r\n {\r\n id: 'csDueProcess',\r\n text: '*I have been given my due process rights.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csDueProcess,\r\n },\r\n {\r\n id: 'csResidentialOptions',\r\n text: '*I have been given information on residential options.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csResidentialOptions,\r\n },\r\n ];\r\n\r\n const standardQuestionsWrap = document.createElement('div');\r\n standardQuestionsWrap.classList.add('standardQuestionsWrap');\r\n\r\n standardQuestions.forEach(question => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('ic_questionContainer');\r\n const questionText = document.createElement('p');\r\n questionText.classList.add('standardQuestionText');\r\n questionText.innerText = question.text;\r\n\r\n const questionRadioContainer = document.createElement('div');\r\n questionRadioContainer.classList.add('ic_questionRadioContainer');\r\n if (readOnly || isSigned) {\r\n questionRadioContainer.classList.add('disabled');\r\n }\r\n\r\n if (question.defaultVal === '') {\r\n questionRadioContainer.classList.add('error');\r\n }\r\n\r\n question.options.forEach(option => {\r\n let checked;\r\n switch (question.defaultVal) {\r\n case 'Y':\r\n if (option === 'Yes') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n case 'N':\r\n if (option === 'No') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n case 'NA':\r\n if (option === 'N/A') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n default:\r\n checked = false;\r\n break;\r\n }\r\n const radio = input.buildRadio({\r\n id: `${question.id}-${option}`,\r\n text: option,\r\n name: question.id,\r\n isChecked: checked,\r\n isDisabled: this.readOnly,\r\n callback: () => {\r\n let dbVal;\r\n switch (option) {\r\n case 'Yes':\r\n dbVal = 'Y';\r\n break;\r\n case 'No':\r\n dbVal = 'N';\r\n break;\r\n case 'N/A':\r\n dbVal = 'NA';\r\n break;\r\n default:\r\n dbVal = '';\r\n break;\r\n }\r\n questionRadioContainer.classList.remove('error');\r\n checkSignautrePopupForErrors();\r\n selectedMemberData[question.id] = dbVal;\r\n },\r\n });\r\n questionRadioContainer.appendChild(radio);\r\n });\r\n\r\n questionContainer.appendChild(questionText);\r\n questionContainer.appendChild(questionRadioContainer);\r\n\r\n standardQuestionsWrap.appendChild(questionContainer);\r\n });\r\n\r\n return standardQuestionsWrap;\r\n }\r\n function getChangeMindMarkup() {\r\n // get markup\r\n const changeMindQuestion = planConsentAndSign.buildChangeMindQuestion(\r\n {\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n },\r\n 'sign',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n changeMindQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'CS_Change_Mind-yes' || targetId === 'CS_Change_Mind-no') {\r\n selectedMemberData.csChangeMind = targetId === 'CS_Change_Mind-yes' ? 'Y' : 'N';\r\n target.parentNode.parentNode.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = changeMindQuestion.querySelector('select');\r\n select.value = selectedMemberData.csChangeMindSSAPeopleId;\r\n\r\n return changeMindQuestion;\r\n }\r\n function getContactMarkup() {\r\n // get markup\r\n const contactQuestion = planConsentAndSign.buildContactQuestion(\r\n {\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContact: selectedMemberData.csContact,\r\n ssaId: selectedMemberData.csChangeMindSSAPeopleId,\r\n },\r\n 'sign',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n contactQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'CS_Contact-yes' || targetId === 'CS_Contact-no') {\r\n selectedMemberData.csContact = targetId === 'CS_Contact-yes' ? 'Y' : 'N';\r\n target.parentNode.parentNode.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = contactQuestion.querySelector('select');\r\n select.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n return contactQuestion;\r\n }\r\n function buildConsentSection() {\r\n const consentWrap = document.createElement('div');\r\n consentWrap.classList.add('consentWrap');\r\n\r\n const consentHeader = document.createElement('h3');\r\n consentHeader.classList.add('h3Title');\r\n consentHeader.innerText = 'Consent Statements';\r\n consentWrap.appendChild(consentHeader);\r\n\r\n standardQuestions = buildStandardQuestionSet();\r\n\r\n if (showConsentStatments) {\r\n changeMindQ = getChangeMindMarkup();\r\n complaintQ = getContactMarkup();\r\n consentWrap.appendChild(changeMindQ);\r\n consentWrap.appendChild(complaintQ);\r\n }\r\n\r\n consentWrap.appendChild(standardQuestions);\r\n\r\n return consentWrap;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function showPopup({ isNewMember, isReadOnly, memberData }) {\r\n isNew = isNewMember;\r\n const prevDateSigned = memberData.dateSigned;\r\n isSigned = memberData.dateSigned !== '';\r\n clearSignature = false;\r\n signatureType = memberData.signatureType;\r\n\r\n if (memberData.signatureType === '2' && memberData.description === '') {\r\n isSigned = false;\r\n }\r\n readOnly = isReadOnly;\r\n selectedMemberData = memberData;\r\n prevDissentData = {\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n };\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n characterLimits = planData.getISPCharacterLimits('consentAndSign');\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n signaturePopup = POPUP.build({\r\n id: 'sig_signPopup',\r\n hideX: true,\r\n });\r\n\r\n //* PROMPT\r\n //*------------------------------\r\n const prompt = document.createElement('p');\r\n prompt.innerText = `By checking the boxes below, I agree that this plan reflects actions, services, and supports as requested by the person listed. As a provider, I agree to the services listed in this plan for which I am named a responsible party. I understand that I may revoke my consent at any time verbally or in writing in accordance with DODD rules.`;\r\n prompt.style.marginBottom = '14px';\r\n\r\n //* SIGNATURE\r\n signatureSection = buildSignatureSection();\r\n\r\n //* DISSENT\r\n const dissentSection = buildDissentSection();\r\n\r\n //* CONSENT\r\n const consentSection = buildConsentSection();\r\n\r\n //* SAVE/CANCEL BUTTONS\r\n //*------------------------------\r\n allowSignClear = checkForAllowClearSignature(memberData.signatureType);\r\n const clearSignatureBtn = button.build({\r\n id: 'clearSigBtn',\r\n text: 'clear',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n clearSignatureBtn.classList.add('disabled');\r\n signaturePopup.classList.add('fadeInside');\r\n showClearConfirmationPopup();\r\n clearSignatureBtn.classList.remove('disabled');\r\n signaturePopup.classList.remove('fadeInside');\r\n },\r\n });\r\n saveBtn = button.build({\r\n id: 'saveSigBtn',\r\n text: allowSignClear ? 'update' : 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n let sigPadData = parseSignatureData();\r\n signaturePopup.style.display = 'none';\r\n\r\n if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n if (!selectedMemberData.description || selectedMemberData.description === '') {\r\n saveFromSignature();\r\n } else {\r\n showWarningPopup();\r\n }\r\n } else {\r\n if (sigPadData === emptySignatureDataURL || sigPadData === '') {\r\n saveFromSignature();\r\n } else {\r\n showWarningPopup(sigPadData);\r\n }\r\n }\r\n },\r\n });\r\n const cancelText = (isSigned || readOnly) && !allowSignClear ? 'close' : 'cancel';\r\n const cancelBtn = button.build({\r\n text: cancelText,\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n selectedMemberData.dissentAreaDisagree = prevDissentData.dissentAreaDisagree;\r\n selectedMemberData.dissentHowToAddress = prevDissentData.dissentHowToAddress;\r\n\r\n if (!isSigned) {\r\n selectedMemberData.dateSigned = prevDateSigned;\r\n selectedMemberData.description = '';\r\n selectedMemberData.attachmentType = '';\r\n selectedMemberData.hasWetSignature = false;\r\n selectedMemberData.attachment = '';\r\n }\r\n\r\n POPUP.hide(signaturePopup);\r\n },\r\n });\r\n\r\n const saveCancelWrap = document.createElement('div');\r\n saveCancelWrap.classList.add('btnWrap');\r\n\r\n if (allowSignClear) {\r\n saveCancelWrap.appendChild(clearSignatureBtn);\r\n saveCancelWrap.appendChild(saveBtn);\r\n } else {\r\n if (!isSigned && !readOnly) saveCancelWrap.appendChild(saveBtn);\r\n }\r\n saveCancelWrap.appendChild(cancelBtn);\r\n\r\n //* BUILD IT\r\n //*------------------------------\r\n if (!isSigned && !readOnly) {\r\n signaturePopup.appendChild(prompt);\r\n }\r\n\r\n signaturePopup.appendChild(signatureSection);\r\n\r\n if (showConsentStatments) {\r\n signaturePopup.appendChild(consentSection);\r\n\r\n planConsentAndSign.setSSADropdownInitialWidth(\r\n signaturePopup,\r\n selectedMemberData.csChangeMindSSAPeopleId,\r\n );\r\n planConsentAndSign.setVendorDropdownInitialWidth(\r\n signaturePopup,\r\n selectedMemberData.csContactProviderVendorId,\r\n );\r\n }\r\n\r\n signaturePopup.appendChild(dissentSection);\r\n signaturePopup.appendChild(saveCancelWrap);\r\n\r\n POPUP.show(signaturePopup);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n checkSignautrePopupForErrors();\r\n if (allowSignClear && (isSigned || readOnly)) {\r\n saveBtn.classList.add('disabled');\r\n }\r\n\r\n if (sigCanvas) {\r\n sigCanvas.width = sigBody.offsetWidth;\r\n }\r\n }\r\n\r\n return {\r\n showPopup,\r\n };\r\n})();\r\n","const csTeamMember = (() => {\r\n let selectedMemberData;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let insertAllowed;\r\n let importedFromRelationship;\r\n let stateGuardiansObj;\r\n let selectedStateGuardian = '';\r\n let selectedStateGuardianSalesForceId = '';\r\n let DBteamMemberswithStateSalesForceId;\r\n // DOM\r\n let teamMemberPopup; // main popup\r\n let currentTeamMemberList;\r\n let linkToRelationshipBtn;\r\n let linkToSalesforceBtn;\r\n let teamMemberDropdown;\r\n let stateGuardianDropdown;\r\n let nameInput;\r\n let lNameInput;\r\n let dateOfBirthInput;\r\n let buildingNumberInput;\r\n let emailInput;\r\n let relationshipTypeInput;\r\n let signatureTypeDropdown;\r\n let radioDiv;\r\n let radioDiv2;\r\n let participatedYesRadio;\r\n let participatedNoRadio;\r\n let parentOfMinorYesRadio;\r\n let parentOfMinorNoRadio;\r\n let saveTeamMemberBtn;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkTeamMemberPopupForErrors() {\r\n const errors = teamMemberPopup.querySelectorAll('.error');\r\n const isConsentable = planConsentAndSign.isTeamMemberConsentable(selectedMemberData.teamMember);\r\n\r\n if (\r\n errors.length > 0 ||\r\n ($.session.applicationName === 'Gatekeeper' &&\r\n selectedMemberData.csContactProviderVendorId === '' &&\r\n isConsentable)\r\n ) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else {\r\n saveTeamMemberBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populateTeamMemberDropdown(teamMemberDropdown, teamMember) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Person Supported', value: 'Person Supported' },\r\n { text: 'Parent/Guardian', value: 'Parent/Guardian' },\r\n { text: 'Guardian', value: 'Guardian' },\r\n { text: 'Parent', value: 'Parent' },\r\n { text: 'Home Provider', value: 'Home Provider' },\r\n { text: 'Day Provider', value: 'Day Provider' },\r\n { text: 'Case Manager', value: 'Case Manager' },\r\n { text: 'Other', value: 'Other' },\r\n ];\r\n dropdown.populate(teamMemberDropdown, dropdownData, teamMember);\r\n }\r\n function populateSignatureTypeDropdown(signatureTypeDropdown, type) {\r\n dropdown.populate(\r\n signatureTypeDropdown,\r\n [\r\n { text: '', value: '' },\r\n { text: 'Digital', value: '1' },\r\n { text: 'In-Person', value: '2' },\r\n { text: 'No Signature Required', value: '3' },\r\n { text: 'E-Digital', value: '4' },\r\n ],\r\n type,\r\n );\r\n }\r\n\r\n async function populateGuardiansDropDown() {\r\n var selectedConsumer = plan.getSelectedConsumer();\r\n stateGuardiansObj = await consentAndSignAjax.getStateGuardiansforConsumer({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n let guarddata;\r\n if (stateGuardiansObj && stateGuardiansObj.length !== 0) {\r\n guarddata = stateGuardiansObj.map(dd => {\r\n return {\r\n value: dd.Id,\r\n text: dd.FirstName + ' ' + dd.LastName,\r\n };\r\n });\r\n guarddata.unshift({ value: '', text: 'SELECT MATCHING STATE GUARDIAN' });\r\n } else {\r\n guarddata = [{ value: '', text: 'NO STATE GUARDIANS FOUND' }];\r\n }\r\n\r\n dropdown.populate(stateGuardianDropdown, guarddata);\r\n }\r\n\r\n function calculateAge(dobStr) {\r\n const dob = new Date(dobStr);\r\n const today = new Date();\r\n\r\n let age = today.getFullYear() - dob.getFullYear();\r\n const monthDifference = today.getMonth() - dob.getMonth();\r\n if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < dob.getDate())) {\r\n age--;\r\n }\r\n\r\n return age;\r\n }\r\n\r\n function isDateBefore1900(dateString) {\r\n // Parse the date string into a Date object\r\n const date = new Date(dateString);\r\n\r\n // Get the year from the Date object\r\n const year = date.getFullYear();\r\n\r\n // Compare the year with 1900\r\n return year < 1900;\r\n }\r\n\r\n async function applySelectedRelationship(relData) {\r\n importedFromRelationship = true;\r\n\r\n selectedMemberData.salesForceId = !relData.salesForceId ? '' : relData.salesForceId;\r\n selectedMemberData.contactId = relData.contactId;\r\n selectedMemberData.peopleId = relData.peopleId;\r\n selectedMemberData.dateOfBirth = relData.dateOfBirth;\r\n selectedMemberData.buildingNumber = relData.buildingNumber;\r\n selectedMemberData.name = relData.firstName;\r\n selectedMemberData.lastName = relData.lastName.split('|')[0];\r\n selectedMemberData.relationship = relData.relationship;\r\n selectedMemberData.email = relData.email;\r\n\r\n // update inputs with selected data\r\n nameInput.childNodes[0].value = selectedMemberData.name;\r\n lNameInput.childNodes[0].value = selectedMemberData.lastName;\r\n buildingNumberInput.childNodes[0].value = selectedMemberData.buildingNumber;\r\n emailInput.childNodes[0].value = selectedMemberData.email ?? '';\r\n if (selectedMemberData.dateOfBirth) {\r\n dateOfBirthInput.childNodes[0].value = UTIL.formatDateToIso(\r\n dates.removeTimestamp(selectedMemberData.dateOfBirth),\r\n );\r\n }\r\n\r\n // build new relationship type input\r\n relationshipTypeInput = input.build({\r\n label: 'Relationship Type',\r\n value: selectedMemberData.relationship,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.relationship = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n buildingNumberInput.after(relationshipTypeInput);\r\n emailInput.after(buildingNumberInput);\r\n\r\n // remove errors from inputs\r\n nameInput.classList.remove('error');\r\n lNameInput.classList.remove('error');\r\n buildingNumberInput.classList.remove('error');\r\n emailInput.classList.remove('error');\r\n //dateOfBirthInput.classList.remove('error');\r\n\r\n // make name and relationship readonly\r\n nameInput.classList.add('disabled');\r\n lNameInput.classList.add('disabled');\r\n relationshipTypeInput.classList.add('disabled');\r\n if (!$.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.add('disabled');\r\n }\r\n if (!$.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n if (!$.session.updateEmail) {\r\n emailInput.classList.add('disabled');\r\n }\r\n\r\n teamMemberPopup.style.removeProperty('display');\r\n\r\n if (!$.session.planInsertNewTeamMember) {\r\n // if above is false we know popup was temp disabled\r\n if ($.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.remove('disabled');\r\n }\r\n if ($.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.remove('disabled');\r\n }\r\n if ($.session.updateEmail) {\r\n emailInput.classList.remove('disabled');\r\n }\r\n teamMemberDropdown.classList.remove('disabled');\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n // set errors\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n }\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n\r\n // save team member if readOnly\r\n if (readOnly) {\r\n saveTeamMember();\r\n return;\r\n }\r\n }\r\n async function linkToSalesForce(selectedSalesforceId) {\r\n let success;\r\n\r\n pendingSave.show('Linking to Salesforce...');\r\n\r\n try {\r\n await consentAndSignAjax.setSalesForceIdForTeamMemberUpdate({\r\n peopleId: selectedMemberData.contactId,\r\n salesForceId: selectedSalesforceId,\r\n });\r\n success = true;\r\n } catch (error) {}\r\n\r\n if (success) {\r\n pendingSave.fulfill('Linked');\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n overlay.hide();\r\n planConsentAndSign.refreshTable();\r\n } else {\r\n pendingSave.reject('Failed to link, please try again.');\r\n const failPopup = document.querySelector('.failSavePopup');\r\n overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n }\r\n }\r\n\r\n async function saveTeamMember() {\r\n if (\r\n (selectedMemberData.teamMember === 'Guardian' || selectedMemberData.teamMember === 'Parent/Guardian') &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n // if (selectedStateGuardianSalesForceId === '') selectedStateGuardianSalesForceId = selectedMemberData.salesForceId;\r\n if (isNew) {\r\n var continueGuardianSave = await continueSaveofGuardianTeamMember();\r\n if (!continueGuardianSave) return;\r\n }\r\n\r\n }\r\n\r\n teamMemberPopup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n let res = null;\r\n let success;\r\n\r\n // Gather Data\r\n if (isNew) {\r\n if (importedFromRelationship) {\r\n selectedMemberData.relationshipImport = 'T';\r\n selectedMemberData.createRelationship = 'F';\r\n } else {\r\n selectedMemberData.relationshipImport = 'F';\r\n selectedMemberData.createRelationship = 'T';\r\n }\r\n let rd = await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n rd = rd ? rd[0] : {};\r\n\r\n if (rd.existingPeopleId) {\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n csRelationship.showExistingPopup(selectedMemberData, async usePerson => {\r\n if (usePerson) {\r\n pendingSavePopup.style.display = 'block';\r\n selectedMemberData.peopleId = rd.existingPeopleId;\r\n await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n } else {\r\n pendingSave.hide();\r\n overlay.show();\r\n }\r\n });\r\n } else {\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n } else { //edit\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n }\r\n\r\n // Handling of selection of teamMember == Guardian or teamMember == Parent/Guardian\r\n async function continueSaveofGuardianTeamMember() {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan \r\n if (hasSalesForceIdBeenUsed(selectedStateGuardianSalesForceId) && $.session.areInSalesForce === true) {\r\n alert(\r\n `This team Member will not be saved. This State Guardian has already been used for a team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n // A -- No State Guardian in Dropdown (stateGuardianDropdown) -- you can't save\r\n if (!selectedStateGuardianSalesForceId && $.session.areInSalesForce === true) {\r\n alert(`A Guardian is not listed in Salesforce for this individual and must be entered on SalesForce Portal.`);\r\n return false;\r\n }\r\n\r\n // B -- Imported Guardian and Selected State Guardian have matching SaleForceIDs\r\n if (\r\n selectedStateGuardianSalesForceId &&\r\n selectedMemberData.salesForceId === selectedStateGuardianSalesForceId &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n return true;\r\n }\r\n\r\n // 1 -- Imported Guardian and Selected State Guardian do not have matching SaleForceIDs, BUT there is a SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n selectedMemberData.salesForceId &&\r\n selectedMemberData.salesForceId !== '' &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n selectedMemberData.salesForceId !== selectedStateGuardianSalesForceId &&\r\n DBteamMemberswithStateSalesForceId &&\r\n DBteamMemberswithStateSalesForceId.length === 1 &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan\r\n if (hasSalesForceIdBeenUsed(DBteamMemberswithStateSalesForceId[0].salesForceId)) {\r\n alert(\r\n `This team Member will not be saved. No salesForceIds are available to be used for this team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario1ConfirmText = `The Imported Guardian and selected State Guardian do not have matching SalesForceIDs. \r\n However, the following Guardian was found in the local database that matches the SalesforceID \r\n of the selected State Guardian: ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName}.\r\n Do you wish to save ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName} \r\n as the Guardian for this particular Added Team Member?`;\r\n\r\n if (confirm(Scenario1ConfirmText)) {\r\n selectedMemberData.name = DBteamMemberswithStateSalesForceId[0].name;\r\n selectedMemberData.lastName = DBteamMemberswithStateSalesForceId[0].lastName;\r\n selectedMemberData.buildingNumber = DBteamMemberswithStateSalesForceId[0].buildingNumber;\r\n selectedMemberData.dateOfBirth = DBteamMemberswithStateSalesForceId[0].dateOfBirth;\r\n selectedMemberData.salesForceId = DBteamMemberswithStateSalesForceId[0].salesForceId;\r\n selectedMemberData.peopleId = DBteamMemberswithStateSalesForceId[0].peopleId;\r\n return true;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 2 -- Imported Guardian and Selected State Guardian do not have matching SaleForceIDs, AND there is NO SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n selectedMemberData.salesForceId &&\r\n selectedMemberData.salesForceId !== '' &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n selectedMemberData.salesForceId !== selectedStateGuardianSalesForceId &&\r\n (!DBteamMemberswithStateSalesForceId ||\r\n (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length === 0))\r\n ) {\r\n // let Scenario2ConfirmText = `The Imported Guardian and selected State Guardian do not have matching SalesForceIDs.\r\n // Do you wish to save the selected State Guardian as the Guardian for this particular Added Team Member?`\r\n\r\n // if (\r\n // confirm(Scenario2ConfirmText)\r\n // ) {\r\n // var fullName = selectedStateGuardian.split(' ');\r\n // selectedMemberData.name = fullName[0];\r\n // selectedMemberData.lastName = fullName[fullName.length - 1];\r\n // selectedMemberData.buildingNumber = '';\r\n // selectedMemberData.dateOfBirth = '';\r\n // selectedMemberData.salesForceId = selectedStateGuardianSalesForceId;\r\n // return true;\r\n // } else {\r\n alert(\r\n `Imported Guardian selected is not listed in Salesforce for this individual and must be entered on Salesforce portal.`,\r\n );\r\n return false;\r\n }\r\n // }\r\n\r\n // 3 -- Imported Guardian has NO SaleforceID, but the Selected State Guardian does have a SaleForceID, BUT there is a SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n (selectedMemberData.salesForceId === '' || !selectedMemberData.salesForceId) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n DBteamMemberswithStateSalesForceId &&\r\n DBteamMemberswithStateSalesForceId.length === 1\r\n ) {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan\r\n if (hasSalesForceIdBeenUsed(DBteamMemberswithStateSalesForceId[0].salesForceId)) {\r\n alert(\r\n `This team Member will not be saved. No salesForceIds are available to be used for this team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario3ConfirmText = `The Imported Guardian does NOT have a SalesForceID, but the selected State Guardian does. \r\n However, the following Guardian was found in the local database that matches the SalesforceID \r\n of the selected State Guardian: ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName}.\r\n Do you wish to save ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName} \r\n as the Guardian for this particular Added Team Member?`;\r\n\r\n if (confirm(Scenario3ConfirmText)) {\r\n selectedMemberData.name = DBteamMemberswithStateSalesForceId[0].name;\r\n selectedMemberData.lastName = DBteamMemberswithStateSalesForceId[0].lastName;\r\n selectedMemberData.buildingNumber = DBteamMemberswithStateSalesForceId[0].buildingNumber;\r\n selectedMemberData.dateOfBirth = DBteamMemberswithStateSalesForceId[0].dateOfBirth;\r\n selectedMemberData.salesForceId = DBteamMemberswithStateSalesForceId[0].salesForceId;\r\n selectedMemberData.peopleId = DBteamMemberswithStateSalesForceId[0].peopleId;\r\n return true;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 4 --Imported Guardian has NO SaleforceID, but the Selected State Guardian does have a SaleForceID, AND there is NO SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n (selectedMemberData.salesForceId === '' || !selectedMemberData.salesForceId) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n (!DBteamMemberswithStateSalesForceId ||\r\n (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length === 0))\r\n ) {\r\n if (confirm('Is the selected State Guardian the same person as the Imported Guardian in the form?')) {\r\n // YES -- Continue\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario4ConfirmText = `The Imported Guardian does NOT have a SalesForceID, but the selected State Guardian does. \r\n Do you wish to assign the selected State SalesforceID to the Imported Guardian (${selectedMemberData.name} ${selectedMemberData.lastName}) and then save\r\n ${selectedMemberData.name} ${selectedMemberData.lastName} as the Guardian for this particular Added Team Member? `;\r\n\r\n let updatesuccess;\r\n\r\n if (confirm(Scenario4ConfirmText)) {\r\n // update the imported/manually entered member with the State SaleforceID\r\n try {\r\n await consentAndSignAjax.setSalesForceIdForTeamMemberUpdate({\r\n peopleId: selectedMemberData.contactId,\r\n salesForceId: selectedStateGuardianSalesForceId,\r\n });\r\n updatesuccess = true;\r\n } catch (error) {\r\n updatesuccess = false;\r\n }\r\n\r\n if (updatesuccess) {\r\n selectedMemberData.salesForceId = selectedStateGuardianSalesForceId;\r\n return true;\r\n } else {\r\n alert(\r\n 'Assigning the selected State SalesforceID to the Imported Guardian failed; therefore, inserting this Guardian will not be attempted.',\r\n );\r\n return false;\r\n }\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // Final Guard Clause and Message for a failed attempt to Save New team Member\r\n if (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length > 1) {\r\n alert(\r\n `Unable to save Team Member. There were multiple people in your local Database with the SalesForceID: ${DBteamMemberswithStateSalesForceId[0].salesForceId}. Correct this issue before continuing.`,\r\n );\r\n return false;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n\r\n function hasSalesForceIdBeenUsed(selectedSalesForceID) {\r\n let isSaleForceIdUsed = false;\r\n\r\n if (currentTeamMemberList && currentTeamMemberList.length > 0) {\r\n currentTeamMemberList.forEach(p => {\r\n if (selectedSalesForceID === p.salesForceId) isSaleForceIdUsed = true;\r\n });\r\n }\r\n return isSaleForceIdUsed;\r\n }\r\n }\r\n\r\n function getSignatureTypeByID(id) {\r\n switch (id) {\r\n case '1': {\r\n return 'Digital';\r\n }\r\n case '2': {\r\n return 'In-Person';\r\n }\r\n case '3': {\r\n return 'No Signature Required';\r\n }\r\n case '4': {\r\n return 'E-Digital';\r\n }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function buildParticipationRadios() {\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = '*Participated in Planning?';\r\n\r\n participatedYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'Y',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'Y';\r\n radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n participatedNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'N',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'N';\r\n radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv = document.createElement('div');\r\n radioDiv.classList.add('signatures_radioDiv');\r\n radioDiv.appendChild(participatedYesRadio);\r\n radioDiv.appendChild(participatedNoRadio);\r\n\r\n if (isNew && $.session.planInsertNewTeamMember) {\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildParentOfMinorRadios() {\r\n const isNoChecked = isNew ? true : selectedMemberData.parentOfMinor === 'N';\r\n const isYesChecked = isNew ? false : selectedMemberData.parentOfMinor === 'Y';\r\n\r\n radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = 'Parent of Minor?';\r\n\r\n parentOfMinorYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pomRadioSet',\r\n isChecked: isYesChecked,\r\n isDisabled: true,\r\n callback: () => {\r\n selectedMemberData.parentOfMinor = 'Y';\r\n //radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n parentOfMinorNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pomRadioSet',\r\n isChecked: isNoChecked,\r\n isDisabled: true,\r\n callback: () => {\r\n selectedMemberData.parentOfMinor = 'N';\r\n //radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv2 = document.createElement('div');\r\n radioDiv2.classList.add('signatures_radioDiv');\r\n radioDiv2.appendChild(parentOfMinorYesRadio);\r\n radioDiv2.appendChild(parentOfMinorNoRadio);\r\n\r\n if (isNew) {\r\n radioContainer.style.display = 'none';\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv2);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildDateSignedDisplay() {\r\n const dateSignedDisplay = document.createElement('p');\r\n dateSignedDisplay.classList.add('ispSignature_DateSigned');\r\n dateSignedDisplay.style.marginBottom = '15px';\r\n if (isSigned) {\r\n const dateSignedParsed = selectedMemberData.dateSigned.split(' ')[0];\r\n dateSignedDisplay.innerText = `Signed off by Team Member on: ${dateSignedParsed}`;\r\n }\r\n\r\n return dateSignedDisplay;\r\n }\r\n function buildActionBtns() {\r\n const mainWrap = document.createElement('div');\r\n\r\n saveTeamMemberBtn = button.build({\r\n id: 'sigPopup_save',\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveTeamMember();\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'sigPopup_cancel',\r\n text: isSigned || readOnly ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(teamMemberPopup);\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n // Delete only visable if isNew = false\r\n const deleteBtn = button.build({\r\n id: 'sigPopup_delete',\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n planConsentAndSign.deleteTeamMember(selectedMemberData.signatureId, teamMemberPopup);\r\n },\r\n });\r\n // Button Wrap 2\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n if (!isSigned && !readOnly) {\r\n btnWrap2.appendChild(saveTeamMemberBtn);\r\n }\r\n btnWrap2.appendChild(cancelBtn);\r\n // Button Wrap 3\r\n const btnWrap3 = document.createElement('div');\r\n btnWrap3.classList.add('btnWrap', 'deleteWrap');\r\n btnWrap3.appendChild(deleteBtn);\r\n\r\n if (isNew) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n }\r\n\r\n mainWrap.appendChild(btnWrap2);\r\n if (!isSigned && !isNew && !readOnly) {\r\n mainWrap.appendChild(btnWrap3);\r\n } else if (!isNew && !readOnly && selectedMemberData.signatureType === '3') {\r\n mainWrap.appendChild(btnWrap3);\r\n }\r\n\r\n return mainWrap;\r\n }\r\n\r\n //* global consent\r\n function getChangeMindMarkup() {\r\n // get markup\r\n\r\n const changeMindQuestion = planConsentAndSign.buildChangeMindQuestion(\r\n {\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n },\r\n 'member',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n changeMindQuestion.addEventListener('change', async event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'isp_ic_ssaDropdown') {\r\n selectedMemberData.csChangeMindSSAPeopleId = event.target.value;\r\n\r\n if (selectedMemberData.csChangeMindSSAPeopleId === '') {\r\n changeMindQuestion.classList.add('error');\r\n } else {\r\n changeMindQuestion.classList.remove('error');\r\n }\r\n\r\n planConsentAndSign.updateSSADropdownWidth(teamMemberPopup);\r\n\r\n // set vendor dropdown\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const data = await consentAndSignAjax.getConsumerOrganizationId({\r\n peopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n });\r\n\r\n // ID check for vendors/providers\r\n const doesIdExistInVendors = planConsentAndSign.doesIdExistInVendors(data[0].orgId);\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n if (doesIdExistInVendors) {\r\n vendorDropdown.value = data[0].orgId;\r\n selectedMemberData.csContactProviderVendorId = data[0].orgId;\r\n } else {\r\n vendorDropdown.value = '';\r\n selectedMemberData.csContactProviderVendorId = '';\r\n }\r\n }\r\n\r\n // update contact input field\r\n const contactInput = document.getElementById('CS_Contact_Input');\r\n contactInput.value = event.target.selectedOptions[0].innerText;\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = changeMindQuestion.querySelector('select');\r\n select.value = selectedMemberData.csChangeMindSSAPeopleId;\r\n\r\n return changeMindQuestion;\r\n }\r\n\r\n async function getContactMarkup() {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n var selectedConsumer = plan.getSelectedConsumer();\r\n\r\n const data = await consentAndSignAjax.getConsumerOrganizationId({\r\n // peopleId: selectedMemberData.csChangeMindSSAPeopleId, -- this was changed to below with the idea that selectedMemberData.csChangeMindSSAPeopleId could be set to ''\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n // ID check for vendors/providers\r\n const doesIdExistInVendors = planConsentAndSign.doesIdExistInVendors(data[0].orgId);\r\n if (doesIdExistInVendors) {\r\n selectedMemberData.csContactProviderVendorId = data[0].orgId;\r\n } else {\r\n selectedMemberData.csContactProviderVendorId = '';\r\n }\r\n }\r\n // get markup\r\n const contactQuestion = planConsentAndSign.buildContactQuestion(\r\n {\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csContactInput: selectedMemberData.csContactInput,\r\n ssaId: selectedMemberData.csChangeMindSSAPeopleId,\r\n },\r\n 'member',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n contactQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'isp_ic_vendorContactDropdown') {\r\n const contactQuestionText = teamMemberPopup.querySelector('.contactQuestionText');\r\n selectedMemberData.csContactProviderVendorId = event.target.value;\r\n\r\n if (selectedMemberData.csContactProviderVendorId === '') {\r\n contactQuestionText.classList.add('error');\r\n } else {\r\n contactQuestionText.classList.remove('error');\r\n }\r\n\r\n planConsentAndSign.updateVendorDropdownWidth(teamMemberPopup);\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = contactQuestion.querySelector('select');\r\n select.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n // const vendorDropdown = contactQuestion.querySelector('#isp_ic_vendorContactDropdown');\r\n // vendorDropdown.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n return contactQuestion;\r\n }\r\n\r\n //* link btn popups\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n async function showPopup({ isNewMember, isReadOnly, memberData, currentTeamMemberData }) {\r\n const selectedTeamMember = plan.getSelectedConsumer();\r\n const age = calculateAge(selectedTeamMember.card.dataset.dob);\r\n const isMinor = age < 18 ? true : false;\r\n isNew = isNewMember;\r\n isSigned = memberData.dateSigned !== '';\r\n readOnly = isReadOnly;\r\n importedFromRelationship = false;\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n showStateGuardians = planConsentAndSign.isTeamMemberGuardian(memberData.teamMember);\r\n selectedMemberData = { ...memberData };\r\n // TOOD 94246: IF the LIMITED NUMBER OF GUARDIANS or Parent Guardians have been reached, then REMOVE 'Guardians' from the teamMember DDL\r\n currentTeamMemberList = currentTeamMemberData;\r\n\r\n // if (!isNew && $.session.applicationName === 'Advisor') {\r\n // selectedMemberData.csChangeMindSSAPeopleId = $.session.UserId;\r\n // }\r\n\r\n let changeMindQuestion;\r\n let complaintQuestion;\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n teamMemberPopup = POPUP.build({\r\n id: 'sig_mainPopup',\r\n hideX: true,\r\n header: isNew ? 'Add Team Member' : 'Update Team Member',\r\n });\r\n\r\n //* LINK BUTTONS\r\n //*------------------------------\r\n linkToRelationshipBtn = button.build({\r\n id: 'linkToRelationshipBtn',\r\n text: isNew ? 'Import From Relationships' : 'Link To Relationship',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['linkBtn', 'relationshipLink'],\r\n callback: () => {\r\n linkToRelationshipBtn.classList.add('disabled');\r\n csRelationship.showMainPopup();\r\n },\r\n });\r\n linkToSalesforceBtn = button.build({\r\n id: 'linkToSalesforceBtn',\r\n text: 'Link To Salesforce',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['linkBtn', 'salesforceLink'],\r\n callback: async () => {\r\n linkToSalesforceBtn.classList.add('disabled');\r\n planSignatureUpdateDOB;\r\n await csSalesforce.showPopup();\r\n },\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n // Team Member\r\n teamMemberDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_teamMember',\r\n label: '*Team Member',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.teamMember = event.target.value;\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n setStateofPopupFields();\r\n\r\n // inserting/removing the conditional fields based on teamMemberDropdown selection\r\n insertingConditionalFieldsintoPopup();\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n teamMemberDropdown.classList.add('teamMemberDropdown');\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n function setStateofPopupFields() {\r\n if ($.session.planInsertNewTeamMember) {\r\n linkToRelationshipBtn.classList.remove('disabled');\r\n nameInput.classList.remove('disabled');\r\n lNameInput.classList.remove('disabled');\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n if ($.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.remove('disabled');\r\n }\r\n if ($.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.remove('disabled');\r\n }\r\n if ($.session.updateEmail) {\r\n emailInput.classList.remove('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if ($.session.planInsertNewTeamMember) {\r\n const checkIfDateBefore1900 = isDateBefore1900(dateOfBirthInput.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired =\r\n teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (isNew) {\r\n if (selectedMemberData.lastName === '') {\r\n lNameInput.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n if (selectedMemberData.teamMember === 'Parent') {\r\n radioContainer.style.display = 'flex';\r\n selectedMemberData.parentOfMinor = isMinor ? 'Y' : 'N';\r\n parentOfMinorYesRadio.querySelector('input').checked = isMinor ? true : false;\r\n parentOfMinorNoRadio.querySelector('input').checked = isMinor ? false : true;\r\n } else {\r\n selectedMemberData.parentOfMinor = 'N';\r\n //parentOfMinorYesRadio.querySelector('input').checked = false;\r\n //parentOfMinorNoRadio.querySelector('input').checked = true;\r\n radioContainer.style.display = 'none';\r\n }\r\n }\r\n\r\n // inserting/removing the conditional fields based on teamMemberDropdown selection\r\n async function insertingConditionalFieldsintoPopup() {\r\n if (selectedMemberData.teamMember === '') {\r\n // team member has NOT been selected\r\n\r\n teamMemberDropdown.classList.add('error');\r\n // remove consent statements from DOM\r\n if (showConsentStatments) {\r\n changeMindQuestion.parentNode.removeChild(changeMindQuestion);\r\n complaintQuestion.parentNode.removeChild(complaintQuestion);\r\n showConsentStatments = false;\r\n }\r\n // remove guardians DDL from DOM\r\n if (showStateGuardians) {\r\n stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showStateGuardians = false;\r\n }\r\n\r\n // reset consent statement radios to default\r\n // selectedMemberData.csChangeMind = '';\r\n // selectedMemberData.csContact = '';\r\n } else {\r\n // team member has been selected\r\n\r\n teamMemberDropdown.classList.remove('error');\r\n\r\n const isSelectedTeamMemberConsentable = planConsentAndSign.isTeamMemberConsentable(\r\n selectedMemberData.teamMember,\r\n );\r\n\r\n insertingFieldsBasedonConsentable(isSelectedTeamMemberConsentable);\r\n\r\n const isSelectedTeamMemberGuardian = planConsentAndSign.isTeamMemberGuardian(selectedMemberData.teamMember);\r\n\r\n await insertingFieldsBasedonGuardian(isSelectedTeamMemberGuardian);\r\n } //end if -- team member has been selected\r\n } // end if -- function insertingConditionalFieldsintoPopup()\r\n\r\n async function insertingFieldsBasedonConsentable(isSelectedTeamMemberConsentable) {\r\n if (isSelectedTeamMemberConsentable) {\r\n // show consent statments only if they are not there\r\n if (!showConsentStatments) {\r\n showConsentStatments = true;\r\n // reset default values\r\n const globals = planConsentAndSign.getConsentGlobalValues();\r\n selectedMemberData.csChangeMindSSAPeopleId = globals.SSA;\r\n selectedMemberData.csContactProviderVendorId = globals.VENDOR;\r\n selectedMemberData.csContactInput = globals.CONTACT;\r\n // rebuild them\r\n changeMindQuestion = getChangeMindMarkup();\r\n complaintQuestion = await getContactMarkup();\r\n // show them\r\n teamMemberPopup.insertBefore(changeMindQuestion, participationRadios);\r\n teamMemberPopup.insertBefore(complaintQuestion, participationRadios);\r\n //\r\n // width them\r\n planConsentAndSign.setSSADropdownInitialWidth(teamMemberPopup, selectedMemberData.csChangeMindSSAPeopleId);\r\n planConsentAndSign.setVendorDropdownInitialWidth(\r\n teamMemberPopup,\r\n selectedMemberData.csContactProviderVendorId,\r\n );\r\n }\r\n } else {\r\n // if NOT isSelectedTeamMemberConsentable\r\n\r\n if (showConsentStatments) {\r\n changeMindQuestion.parentNode.removeChild(changeMindQuestion);\r\n complaintQuestion.parentNode.removeChild(complaintQuestion);\r\n // if (showStateGuardians) stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showConsentStatments = false;\r\n // selectedMemberData.csChangeMindSSAPeopleId = '';\r\n // selectedMemberData.csContactProviderVendorId = '';\r\n // selectedMemberData.csContactInput = '';\r\n }\r\n } // end if -- isSelectedTeamMemberConsentable///\r\n }\r\n\r\n async function insertingFieldsBasedonGuardian(isSelectedTeamMemberGuardian) {\r\n if (isSelectedTeamMemberGuardian && $.session.areInSalesForce === true) {\r\n // show guardan DDL only if it's not there\r\n if (!showStateGuardians) {\r\n showStateGuardians = true;\r\n await populateGuardiansDropDown();\r\n teamMemberPopup.insertBefore(stateGuardianDropdown, nameInput);\r\n if (selectedStateGuardian === '') stateGuardianDropdown.classList.add('error');\r\n }\r\n } else {\r\n // if NOT isSelectedTeamMemberGuardian\r\n\r\n if (showStateGuardians) {\r\n stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showStateGuardians = false;\r\n }\r\n } // end if -- isSelectedTeamMemberGuardian\r\n }\r\n\r\n\r\n // State Guradian\r\n stateGuardianDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_stateGuardian',\r\n label: '*State Guardian',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedStateGuardian = event.target.options[event.target.selectedIndex].innerHTML;\r\n selectedStateGuardianSalesForceId = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n stateGuardianDropdown.classList.add('error');\r\n } else {\r\n stateGuardianDropdown.classList.remove('error');\r\n }\r\n\r\n DBteamMemberswithStateSalesForceId = await consentAndSignAjax.getTeamMemberBySalesForceId({\r\n salesForceId: selectedStateGuardianSalesForceId,\r\n });\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n // Name ()\r\n nameInput = input.build({\r\n label: '*First Name',\r\n value: selectedMemberData.name,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.name = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n lNameInput = input.build({\r\n label: '*Last Name',\r\n value: selectedMemberData.lastName,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.lastName = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n lNameInput.classList.add('error');\r\n } else {\r\n lNameInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n // Date of Birth\r\n dateOfBirthInput = input.build({\r\n type: 'date',\r\n label: '*Date of Birth',\r\n //value: selectedMemberData.dateOfBirth,\r\n value: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.dateOfBirth = event.target.value;\r\n\r\n const checkIfDateBefore1900 = isDateBefore1900(event.target.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired =\r\n teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n \r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error'); \r\n } else {\r\n dateOfBirthInput.classList.remove('error'); \r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Building Number\r\n buildingNumberInput = input.build({\r\n label: 'Building Number',\r\n value: selectedMemberData.buildingNumber,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.buildingNumber = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n //Email\r\n emailInput = input.build({\r\n label: 'Email',\r\n value: selectedMemberData.email ?? '',\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n let validEmail = validateEmail(event.target.value);\r\n\r\n if (validEmail) {\r\n selectedMemberData.email = event.target.value;\r\n emailInput.classList.remove('error');\r\n } else {\r\n // email input is not required currently\r\n // selectedMemberData.email = '';\r\n // emailInput.classList.add('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Relationship Type\r\n relationshipTypeInput = input.build({\r\n label: 'Relationship Type',\r\n value: selectedMemberData.relationship,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.relationship = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Participate Yes/NO\r\n const participationRadios = buildParticipationRadios();\r\n const parentOfMinorRadios = buildParentOfMinorRadios();\r\n\r\n // Signature Type\r\n signatureTypeDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_signType',\r\n label: '*Signature Type',\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.signatureType = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n //* GLOBAL CONSENT QUESTIONS\r\n //*------------------------------\r\n if (showConsentStatments) {\r\n changeMindQuestion = getChangeMindMarkup();\r\n complaintQuestion = await getContactMarkup();\r\n }\r\n\r\n function validateEmail(email) {\r\n const regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\r\n return regex.test(email);\r\n }\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const btns = buildActionBtns();\r\n\r\n //* Date Signed Display\r\n //*------------------------------\r\n const dateSignedDisplay = buildDateSignedDisplay();\r\n\r\n //* Disabled Fields\r\n //*------------------------------\r\n if (selectedMemberData.dateOfBirth) {\r\n dateOfBirthInput.classList.add('disabled');\r\n }\r\n if (selectedMemberData.buildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n if (!isNew) {\r\n if (selectedMemberData.name !== '') {\r\n nameInput.classList.add('disabled');\r\n }\r\n if (selectedMemberData.lastName !== '') {\r\n lNameInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n // initial display of Form/popup before a teamMember designations is selected\r\n\r\n if (!$.session.planInsertNewTeamMember) {\r\n teamMemberDropdown.classList.add('disabled');\r\n nameInput.classList.add('disabled');\r\n lNameInput.classList.add('disabled');\r\n // nameInput.classList.remove('error');\r\n // lNameInput.classList.remove('error');\r\n dateOfBirthInput.classList.add('disabled');\r\n buildingNumberInput.classList.add('disabled');\r\n participatedYesRadio.classList.add('disabled');\r\n participatedNoRadio.classList.add('disabled');\r\n parentOfMinorYesRadio.classList.add('disabled');\r\n parentOfMinorNoRadio.classList.add('disabled');\r\n // radioDiv.classList.remove('error');\r\n // signatureTypeDropdown.classList.add('disabled');\r\n saveTeamMemberBtn.classList.add('disabled');\r\n emailInput.classList.add('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if ($.session.planInsertNewTeamMember) {\r\n const checkIfDateBefore1900 = isDateBefore1900(dateOfBirthInput.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired = teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n // email input is not currently required\r\n // if (selectedMemberData.email) {\r\n // emailInput.classList.remove('error');\r\n // } else {\r\n // emailInput.classList.add('error');\r\n // }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (isNew) {\r\n if (selectedMemberData.lastName === '') {\r\n lNameInput.classList.add('error');\r\n }\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n }\r\n\r\n if (!$.session.updateEmail) {\r\n emailInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n\r\n if (isSigned) {\r\n teamMemberPopup.appendChild(dateSignedDisplay);\r\n }\r\n if (isNew) {\r\n teamMemberPopup.appendChild(linkToRelationshipBtn);\r\n } else {\r\n if (!selectedMemberData.contactId) {\r\n teamMemberPopup.appendChild(linkToRelationshipBtn);\r\n }\r\n if ($.session.areInSalesForce && !selectedMemberData.salesForceId && selectedMemberData.contactId) {\r\n teamMemberPopup.appendChild(linkToSalesforceBtn);\r\n }\r\n }\r\n teamMemberPopup.appendChild(teamMemberDropdown);\r\n teamMemberPopup.appendChild(nameInput);\r\n if (isNew) {\r\n teamMemberPopup.appendChild(lNameInput);\r\n } else {\r\n if (selectedMemberData.lastName !== '') teamMemberPopup.appendChild(lNameInput);\r\n }\r\n teamMemberPopup.appendChild(dateOfBirthInput);\r\n teamMemberPopup.appendChild(buildingNumberInput);\r\n teamMemberPopup.appendChild(emailInput);\r\n if (!isNew && selectedMemberData.relationship) {\r\n teamMemberPopup.appendChild(relationshipTypeInput);\r\n relationshipTypeInput.classList.add('disabled');\r\n }\r\n teamMemberPopup.appendChild(participationRadios);\r\n teamMemberPopup.appendChild(parentOfMinorRadios); //\r\n teamMemberPopup.appendChild(signatureTypeDropdown);\r\n\r\n if (showConsentStatments) {\r\n teamMemberPopup.appendChild(changeMindQuestion);\r\n teamMemberPopup.appendChild(complaintQuestion);\r\n\r\n planConsentAndSign.setSSADropdownInitialWidth(teamMemberPopup, selectedMemberData.csChangeMindSSAPeopleId);\r\n planConsentAndSign.setVendorDropdownInitialWidth(teamMemberPopup, selectedMemberData.csContactProviderVendorId);\r\n }\r\n\r\n teamMemberPopup.appendChild(btns);\r\n\r\n populateTeamMemberDropdown(teamMemberDropdown, selectedMemberData.teamMember);\r\n populateSignatureTypeDropdown(signatureTypeDropdown, selectedMemberData.signatureType);\r\n\r\n if (showStateGuardians) {\r\n populateGuardiansDropDown();\r\n }\r\n\r\n POPUP.show(teamMemberPopup);\r\n\r\n if ($.session.planInsertNewTeamMember) {\r\n checkTeamMemberPopupForErrors();\r\n }\r\n }\r\n\r\n return {\r\n showPopup,\r\n applySelectedRelationship,\r\n linkToSalesForce,\r\n getSignatureTypeByID,\r\n };\r\n})();\r\n","const csVendor = (() => {\r\n let selectedMemberData;\r\n let currentTeamMemberList;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let importedFromRelationship;\r\n let vendorData;\r\n\r\n // DOM\r\n let csVendorPopup; // main popup\r\n let vendorDropdown;\r\n let teamMemberDropdown;\r\n let buildingNumberInput;\r\n let signatureTypeDropdown;\r\n let radioDiv;\r\n let participatedYesRadio;\r\n let participatedNoRadio;\r\n let saveTeamMemberBtn;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkcsVendorPopupForErrors() {\r\n const errors = csVendorPopup.querySelectorAll('.error');\r\n //const isConsentable = planConsentAndSign.isTeamMemberConsentable(selectedMemberData.teamMember);\r\n\r\n if (errors.length > 0) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else if (\r\n selectedMemberData.name === '' ||\r\n selectedMemberData.teamMember === '' ||\r\n selectedMemberData.signatureType === '' ||\r\n selectedMemberData.participated === ''\r\n ) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else {\r\n saveTeamMemberBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function getSelectedVendorRel(vendorData, vendorName) {\r\n const cleanedVendorName = vendorName.trim();\r\n let selectedVendorData = vendorData.find(function (vendor) {\r\n return vendor.vendorName === cleanedVendorName;\r\n });\r\n\r\n if (selectedVendorData) {\r\n return (selectedVendor = {\r\n vendorName: selectedVendorData.vendorName,\r\n vendorId: selectedVendorData.vendorId,\r\n vendorAddress: selectedVendorData.vendorAddress,\r\n });\r\n }\r\n }\r\n const removeDups = data => {\r\n const flag = {};\r\n const unique = [];\r\n data.forEach(id => {\r\n if (!flag[id]) {\r\n flag[id] = true;\r\n unique.push(id);\r\n }\r\n });\r\n return unique;\r\n };\r\n function removeV(ids) {\r\n return ids.map(id => id.replace('V', ''));\r\n }\r\n async function populateVendorDropdownData(vendorData, vendorDropdown, teamMember, clickSource) {\r\n // get vendors from the following\r\n // (Add Risk -> Who Is Responsible) on the Summary tab\r\n // (Add Experience -> Responsible Provider) on the Outcomes tab\r\n // (Add Paid Support -> Provider Name) on the Services tab\r\n const summaryVendors = planSummary.getSelectedVendors();\r\n const outcomesVendors = planOutcomes.getSelectedVendors();\r\n const servicesVendors = removeV(servicesSupports.getSelectedVendorIds());\r\n\r\n let selectedVendors = [...summaryVendors, ...outcomesVendors, ...servicesVendors];\r\n selectedVendors = removeDups(selectedVendors);\r\n \r\n // 'facilities' and 'location' are used interchangeably in vendor.js and outcomes.js \r\n const facilitiesGroup = {\r\n groupLabel: 'Facilities',\r\n groupId: 'facilitiesGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n const vendorGroup = {\r\n groupLabel: 'Plan Vendor',\r\n groupId: 'vendorGroup',\r\n dropdownValues: [],\r\n };\r\n const nonVendorGroup = {\r\n groupLabel: 'Not a Vendor on this Plan',\r\n groupId: 'nonVendorGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n vendorData.forEach(vendor => {\r\n let isSelected = selectedVendors.includes(vendor.vendorId);\r\n if (isSelected) {\r\n vendorGroup.dropdownValues.push({ text: vendor.vendorName, value: vendor.vendorName });\r\n } else {\r\n nonVendorGroup.dropdownValues.push({ text: vendor.vendorName, value: vendor.vendorName });\r\n }\r\n });\r\n\r\n \r\n const locationData = await consentAndSignAjax.getLocationswithSalesforceId();\r\n\r\n // remove the locations that are already selected and displayed on the teammember screen\r\n if (locationData) {\r\n currentTeamMemberList.forEach(member => {\r\n for (let i = 0; i < locationData.length; i++) {\r\n if (member.locationId === locationData[i].ID && clickSource === 'addVendor') {\r\n locationData.splice(i,1);\r\n }\r\n }\r\n });\r\n }\r\n \r\n\r\n const groupDropdownData = [];\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') { \r\n //var theseLocations = locationData.filter(member => member.locationId !== '');\r\n facilitiesGroup.dropdownValues = locationData.map(ps => {\r\n return {\r\n value: `${ps.Name}LOCATIONID:${ps.ID}L`,\r\n text: ps.Name,\r\n };\r\n });\r\n\r\n // facilitiesGroup.dropdownValues = removeDups(facilitiesGroup.dropdownValues);\r\n facilitiesGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n groupDropdownData.push(facilitiesGroup);\r\n }\r\n\r\n //const groupDropdownData = [];\r\n // groupDropdownData.push(facilitiesGroup);\r\n groupDropdownData.push(vendorGroup);\r\n groupDropdownData.push(nonVendorGroup);\r\n\r\n if (facilitiesGroup.dropdownValues.length > 0) {\r\n for (let i = 0; i < facilitiesGroup.dropdownValues.length; i++) {\r\n if (facilitiesGroup.dropdownValues[i].text.trim() === teamMember.trim()){\r\n teamMember = facilitiesGroup.dropdownValues[i].value;\r\n }\r\n }\r\n }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: teamMember.trim(),\r\n });\r\n }\r\n\r\n function populateTeamMemberDropdown(teamMemberDropdown, teamMember) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Home Provider', value: 'Home Provider Vendor' },\r\n { text: 'Day Provider', value: 'Day Provider Vendor' },\r\n { text: 'Other', value: 'Other Vendor' },\r\n ];\r\n\r\n dropdown.populate(teamMemberDropdown, dropdownData, teamMember);\r\n }\r\n\r\n function populateSignatureTypeDropdown(signatureTypeDropdown, type) {\r\n dropdown.populate(\r\n signatureTypeDropdown,\r\n [\r\n { text: '', value: '' },\r\n { text: 'Digital', value: '1' },\r\n { text: 'In-Person', value: '2' },\r\n { text: 'No Signature Required', value: '3' },\r\n { text: 'E-Digital', value: '4' },\r\n ],\r\n type,\r\n );\r\n }\r\n\r\n async function saveTeamMember() {\r\n csVendorPopup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n let res = null;\r\n let success;\r\n\r\n // Gather Data\r\n if (isNew) {\r\n if (importedFromRelationship) {\r\n selectedMemberData.relationshipImport = 'T';\r\n selectedMemberData.createRelationship = 'F';\r\n } else {\r\n selectedMemberData.relationshipImport = 'F';\r\n selectedMemberData.createRelationship = 'T';\r\n }\r\n await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n success = true;\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(csVendorPopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n csVendorPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n } else {\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(csVendorPopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n csVendorPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n }\r\n\r\n function getSignatureTypeByID(id) {\r\n switch (id) {\r\n case '1': {\r\n return 'Digital';\r\n }\r\n case '2': {\r\n return 'In-Person';\r\n }\r\n case '3': {\r\n return 'No Signature Required';\r\n }\r\n case '4': {\r\n return 'E-Digital';\r\n }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function buildParticipationRadios() {\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = '*Participated in Planning?';\r\n\r\n participatedYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'Y',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'Y';\r\n radioDiv.classList.remove('error');\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n participatedNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'N',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'N';\r\n radioDiv.classList.remove('error');\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv = document.createElement('div');\r\n radioDiv.classList.add('signatures_radioDiv');\r\n radioDiv.appendChild(participatedYesRadio);\r\n radioDiv.appendChild(participatedNoRadio);\r\n\r\n if (isNew && $.session.planInsertNewTeamMember) {\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildDateSignedDisplay() {\r\n const dateSignedDisplay = document.createElement('p');\r\n dateSignedDisplay.classList.add('ispSignature_DateSigned');\r\n dateSignedDisplay.style.marginBottom = '15px';\r\n if (isSigned) {\r\n const dateSignedParsed = selectedMemberData.dateSigned.split(' ')[0];\r\n dateSignedDisplay.innerText = `Signed off by Team Member on: ${dateSignedParsed}`;\r\n }\r\n\r\n return dateSignedDisplay;\r\n }\r\n function buildActionBtns() {\r\n const mainWrap = document.createElement('div');\r\n\r\n saveTeamMemberBtn = button.build({\r\n id: 'sigPopup_save',\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveTeamMember();\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'sigPopup_cancel',\r\n text: isSigned || readOnly ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(csVendorPopup);\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n // Delete only visable if isNew = false\r\n const deleteBtn = button.build({\r\n id: 'sigPopup_delete',\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n planConsentAndSign.deleteTeamMember(selectedMemberData.signatureId, csVendorPopup);\r\n },\r\n });\r\n // Button Wrap 2\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n if (!isSigned && !readOnly) {\r\n btnWrap2.appendChild(saveTeamMemberBtn);\r\n }\r\n btnWrap2.appendChild(cancelBtn);\r\n // Button Wrap 3\r\n const btnWrap3 = document.createElement('div');\r\n btnWrap3.classList.add('btnWrap', 'deleteWrap');\r\n btnWrap3.appendChild(deleteBtn);\r\n\r\n if (isNew) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n }\r\n mainWrap.appendChild(btnWrap2);\r\n if (!isSigned && !isNew && !readOnly) {\r\n mainWrap.appendChild(btnWrap3);\r\n } else if (!isNew && !readOnly && selectedMemberData.signatureType === '3') {\r\n mainWrap.appendChild(btnWrap3);\r\n }\r\n\r\n return mainWrap;\r\n }\r\n\r\n //* link btn popups\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n async function showPopup({\r\n isNewMember,\r\n isReadOnly,\r\n memberData,\r\n currentTeamMemberData,\r\n vendorData,\r\n clickSource,\r\n }) {\r\n isNew = isNewMember;\r\n isSigned = memberData.dateSigned !== '';\r\n readOnly = isReadOnly;\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n selectedMemberData = { ...memberData };\r\n currentTeamMemberList = currentTeamMemberData;\r\n\r\n // if (!isNew && $.session.applicationName === 'Advisor') {\r\n // selectedMemberData.csChangeMindSSAPeopleId = $.session.UserId;\r\n // }\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n csVendorPopup = POPUP.build({\r\n id: 'sig_mainPopup',\r\n hideX: true,\r\n header: isNew ? 'Add Vendor' : 'Update Vendor',\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n // Vendor\r\n vendorDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_vendor',\r\n label: '*Vendor',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.name = event.target.value;\r\n\r\n\r\n if (event.target.value === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n\r\n if (selectedMemberData.name.includes('LOCATIONID:')) {\r\n \r\n arr = event.target.value.split(\"LOCATIONID:\");\r\n selectedMemberData.name = arr[0];\r\n selectedMemberData.locationId = arr[1];\r\n selectedMemberData.vendorId = arr[1];\r\n \r\n } else {\r\n\r\n const vendorRel = getSelectedVendorRel(vendorData, selectedMemberData.name);\r\n if (selectedMemberData.name === '') {\r\n selectedMemberData.buildingNumber = '';\r\n selectedMemberData.vendorId = '';\r\n } else {\r\n selectedMemberData.buildingNumber = vendorRel.vendorAddress;\r\n selectedMemberData.vendorId = vendorRel.vendorId;\r\n }\r\n\r\n }\r\n \r\n\r\n buildingNumberInput.childNodes[0].value = selectedMemberData.buildingNumber.substring(0, 4);\r\n buildingNumberInput.classList.add('disabled');\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n setStateofPopupFields();\r\n\r\n checkcsVendorPopupForErrors();\r\n }, // end callback\r\n }); // end DROP DOWN BUILD\r\n\r\n // Team Member\r\n teamMemberDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_teamMember',\r\n label: '*Team Member',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.teamMember = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n\r\n checkcsVendorPopupForErrors();\r\n }, // end callback\r\n }); // end DROP DOWN BUILD\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n function setStateofPopupFields() {\r\n //* Required Fields\r\n //*------------------------------\r\n if (selectedMemberData.name === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.participated === '') {\r\n radioDiv.classList.add('error');\r\n } else {\r\n radioDiv.classList.remove('error');\r\n }\r\n }\r\n\r\n teamMemberDropdown.classList.add('teamMemberDropdown');\r\n\r\n // Building Number\r\n buildingNumberInput = input.build({\r\n label: 'Building Number',\r\n value: selectedMemberData.buildingNumber,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.buildingNumber = event.target.value;\r\n\r\n checkcsVendorPopupForErrors();\r\n a;\r\n },\r\n });\r\n buildingNumberInput.classList.add('disabled');\r\n\r\n input.disableInputField(buildingNumberInput);\r\n // Participate Yes/NO\r\n const participationRadios = buildParticipationRadios();\r\n\r\n // Signature Type\r\n signatureTypeDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_signType',\r\n label: '*Signature Type',\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.signatureType = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const btns = buildActionBtns();\r\n\r\n //* Date Signed Display\r\n //*------------------------------\r\n const dateSignedDisplay = buildDateSignedDisplay();\r\n\r\n //* Disabled Fields\r\n //*------------------------------\r\n if (selectedMemberData.buildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if (selectedMemberData.name === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.participated === '') {\r\n radioDiv.classList.add('error');\r\n } else {\r\n radioDiv.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n if (isSigned) {\r\n csVendorPopup.appendChild(dateSignedDisplay);\r\n }\r\n\r\n csVendorPopup.appendChild(vendorDropdown);\r\n csVendorPopup.appendChild(teamMemberDropdown);\r\n csVendorPopup.appendChild(buildingNumberInput);\r\n csVendorPopup.appendChild(participationRadios);\r\n csVendorPopup.appendChild(signatureTypeDropdown);\r\n csVendorPopup.appendChild(btns);\r\n\r\n populateVendorDropdownData(vendorData, vendorDropdown, selectedMemberData.name, clickSource);\r\n populateTeamMemberDropdown(teamMemberDropdown, selectedMemberData.teamMember);\r\n populateSignatureTypeDropdown(signatureTypeDropdown, selectedMemberData.signatureType);\r\n\r\n const vendorRel = getSelectedVendorRel(vendorData, selectedMemberData.name);\r\n if (vendorRel !== undefined) {\r\n buildingNumberInputValue = vendorRel.vendorAddress.substring(0, 4);\r\n buildingNumberInput.childNodes[0].value = buildingNumberInputValue;\r\n }\r\n\r\n POPUP.show(csVendorPopup);\r\n\r\n // if ($.session.planInsertNewTeamMember) {\r\n // checkcsVendorPopupForErrors();\r\n // }\r\n }\r\n\r\n return {\r\n showPopup,\r\n getSignatureTypeByID,\r\n getSelectedVendorRel,\r\n };\r\n})();\r\n","const contactInformation = (() => {\r\n let mainCIData;\r\n let bestWayToConnectData;\r\n let peopleId;\r\n let contactId;\r\n let assessmentId;\r\n let readOnly;\r\n let uniqueFundingSources;\r\n let allFundingSources;\r\n let fundingSourceList;\r\n // Table Data\r\n let importantPeopleData, importantGroupsData, importantPlacesData, gkDemographicsData;\r\n let gkRelationships;\r\n let communicationType;\r\n //Inputs\r\n let nameInput;\r\n let prefNameInput;\r\n let addressInput;\r\n let cityStateZipInput;\r\n let countyInput;\r\n let emailInput;\r\n let phoneInput;\r\n let sexInput;\r\n let maritalStatusInput;\r\n let charLimits;\r\n\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n\r\n function populateBestWayToConnectDropdown(dropdownEle, defaultValue) {\r\n const data = communicationType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n function buildContactInputs() {\r\n const inputSection = document.createElement('div');\r\n\r\n const dateFundingSoureContainer = document.createElement('div');\r\n dateFundingSoureContainer.classList.add('isp_ci_dateFundingSourceContainer');\r\n\r\n const ispDatesSection = document.createElement('div');\r\n ispDatesSection.classList.add('ispSpanDateContainer');\r\n const ispDatesHeader = document.createElement('h4');\r\n ispDatesHeader.innerText = 'ISP Span Dates:';\r\n ispDatesSection.appendChild(ispDatesHeader);\r\n const effStartDate = UTIL.getFormattedDateFromDate(planDates.getEffectiveStartDate());\r\n const effEndDate = UTIL.getFormattedDateFromDate(planDates.getEffectiveEndDate());\r\n const dateDisplay = document.createElement('p');\r\n dateDisplay.innerText = `${effStartDate} - ${effEndDate}`;\r\n ispDatesSection.appendChild(dateDisplay);\r\n\r\n const ispFundingSuourcesSection = document.createElement('div');\r\n ispFundingSuourcesSection.classList.add('ispFSContainer');\r\n const ispFundingSuourcesHeader = document.createElement('h4');\r\n ispFundingSuourcesSection.appendChild(ispFundingSuourcesHeader);\r\n ispFundingSuourcesHeader.innerText = 'Funding Sources:';\r\n const fsContainer = document.createElement('div');\r\n ispFundingSuourcesSection.appendChild(fsContainer);\r\n fundingSourceList = document.createElement('p');\r\n fundingSourceList.id = 'isp_ci_fundingSourcesList';\r\n fundingSourceList.innerText = uniqueFundingSources.join(', ');\r\n fsContainer.appendChild(fundingSourceList);\r\n\r\n dateFundingSoureContainer.appendChild(ispDatesSection);\r\n dateFundingSoureContainer.appendChild(ispFundingSuourcesSection);\r\n\r\n nameInput = input.build({\r\n label: 'Name',\r\n readonly: true,\r\n });\r\n prefNameInput = input.build({\r\n label: 'Preferred Name',\r\n readonly: true,\r\n });\r\n\r\n addressInput = input.build({\r\n label: 'Address',\r\n readonly: true,\r\n });\r\n\r\n cityStateZipInput = input.build({\r\n label: 'City, State, Zip',\r\n readonly: true,\r\n });\r\n\r\n countyInput = input.build({\r\n label: 'County',\r\n readonly: true,\r\n });\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n readonly: true,\r\n type: 'email',\r\n });\r\n\r\n phoneInput = input.build({\r\n label: 'Phone',\r\n readonly: true,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n ],\r\n });\r\n\r\n sexInput = input.build({\r\n label: 'Sex',\r\n readonly: true,\r\n type: '',\r\n attributes: [{ key: 'maxlength', value: '1' }],\r\n });\r\n\r\n maritalStatusInput = input.build({\r\n label: 'Marital Status',\r\n readonly: true,\r\n });\r\n // Name, Preferred Name, Address, City, State, Zip, County, Email, Phone, Sex, and Marital Status\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('isp_ci_inputContainer1');\r\n inputContainer1.appendChild(addressInput);\r\n inputContainer1.appendChild(cityStateZipInput);\r\n inputContainer1.appendChild(countyInput);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('isp_ci_inputContainer2');\r\n inputContainer2.appendChild(emailInput);\r\n inputContainer2.appendChild(phoneInput);\r\n inputContainer2.appendChild(sexInput);\r\n inputContainer2.appendChild(maritalStatusInput);\r\n\r\n const bestWayToConnectDropdown = dropdown.build({\r\n dropdownId: 'connectDropdown',\r\n label: 'Best way to connect with the person',\r\n style: 'secondary',\r\n readonly: readOnly,\r\n callback: async (e, selectedOption) => {\r\n bestWayToConnectData.bestWayToConnect = selectedOption.value;\r\n\r\n if (bestWayToConnectData.bestWayToConnect === '7') {\r\n if (bestWayToConnectData.moreDetail === '') {\r\n otherTextInput.classList.add('error');\r\n }\r\n } else {\r\n otherTextInput.classList.remove('error');\r\n }\r\n // update dropdown value to DB\r\n await summaryAjax.updateBestWayToConnect({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n bestWayId: selectedOption.value,\r\n });\r\n\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n populateBestWayToConnectDropdown(\r\n bestWayToConnectDropdown,\r\n bestWayToConnectData.bestWayToConnect,\r\n );\r\n const otherTextInput = input.build({\r\n label: 'More Detail',\r\n type: 'textarea',\r\n style: 'secondary',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n value: bestWayToConnectData.moreDetail,\r\n charLimit: charLimits.moreDetail,\r\n forceCharLimit: true,\r\n callback: async e => {\r\n bestWayToConnectData.moreDetail = e.target.value;\r\n\r\n if (bestWayToConnectData.bestWayToConnect === '7') {\r\n if (bestWayToConnectData.moreDetail === '') {\r\n otherTextInput.classList.add('error');\r\n } else {\r\n otherTextInput.classList.remove('error');\r\n }\r\n }\r\n await summaryAjax.updateMoreDetail({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n detail: e.target.value,\r\n });\r\n },\r\n });\r\n\r\n // create wrapper div for button and alert\r\n const bestWayToConnectBtnAlertDiv = document.createElement('div');\r\n bestWayToConnectBtnAlertDiv.classList.add('connectBtnAlertContainer');\r\n\r\n // create div for the alert\r\n const bestWaytoConnectAlertDiv = document.createElement('div');\r\n bestWaytoConnectAlertDiv.innerHTML = `${icons.error}`;\r\n bestWaytoConnectAlertDiv.classList.add(`bestWaytoConnectAlert`);\r\n bestWaytoConnectAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'This field cannot be empty. Please select an option from the dropdown menu',\r\n bestWaytoConnectAlertDiv,\r\n );\r\n\r\n bestWayToConnectBtnAlertDiv.appendChild(bestWaytoConnectAlertDiv);\r\n bestWayToConnectBtnAlertDiv.appendChild(bestWayToConnectDropdown);\r\n\r\n let contactsValidation = planValidation.getContactValidation();\r\n\r\n if (contactsValidation.bestWayToConnect === false) {\r\n bestWaytoConnectAlertDiv.style.display = 'flex';\r\n }\r\n\r\n inputSection.appendChild(nameInput);\r\n inputSection.appendChild(prefNameInput);\r\n inputSection.appendChild(inputContainer1);\r\n inputSection.appendChild(inputContainer2);\r\n inputSection.appendChild(bestWayToConnectBtnAlertDiv);\r\n inputSection.appendChild(otherTextInput);\r\n inputSection.appendChild(dateFundingSoureContainer);\r\n\r\n return inputSection;\r\n }\r\n\r\n function cleanName(val) {\r\n const fName = val.firstName ? val.firstName.trim() : '';\r\n const mName = val.middleName ? val.middleName.trim() : '';\r\n const lName = val.lastName ? val.lastName.trim() : '';\r\n\r\n let combinedName = '';\r\n\r\n if (mName === '') {\r\n combinedName = `${fName} ${lName}`;\r\n } else {\r\n combinedName = `${fName} ${mName} ${lName}`;\r\n }\r\n return combinedName;\r\n }\r\n\r\n function cleanAddress(val, addNewLine = false) {\r\n const address1 = val.address1.trim();\r\n const address2 = val.address2.trim();\r\n let combinedAddress = '';\r\n if (addNewLine) {\r\n combinedAddress = `${address1}${address2 !== '' ? '\\n' + address2 : ''}`;\r\n } else {\r\n combinedAddress = `${address1} ${address2}`;\r\n }\r\n return combinedAddress.trim();\r\n }\r\n\r\n function cleanCityStateZip(val) {\r\n const city = val.city.trim();\r\n const state = val.state.trim();\r\n const zip = val.zip.trim();\r\n\r\n let cityStateZip = '';\r\n\r\n if (city !== '') {\r\n cityStateZip = city;\r\n }\r\n if (state !== '') {\r\n cityStateZip += `, ${state}`;\r\n }\r\n if (zip !== '') {\r\n cityStateZip += ` ${zip}`;\r\n }\r\n\r\n return cityStateZip.trim();\r\n }\r\n\r\n function updateInputsWithDeomgraphicsData() {\r\n try {\r\n const name = cleanName(gkDemographicsData);\r\n const nickName = gkDemographicsData.nickName;\r\n const address = cleanAddress(gkDemographicsData);\r\n const cityStateZip = cleanCityStateZip(gkDemographicsData);\r\n const county = gkDemographicsData.county.trim();\r\n const phone = gkDemographicsData.phone.trim();\r\n const email = gkDemographicsData.email;\r\n const sex = gkDemographicsData.sex.trim();\r\n const status = gkDemographicsData.status.trim();\r\n\r\n const ph = formatPhone(phone);\r\n\r\n let statusName;\r\n switch (status) {\r\n case 'S':\r\n statusName = 'Single';\r\n break;\r\n case 'M':\r\n statusName = 'Married';\r\n break;\r\n case 'D':\r\n statusName = 'Divorced';\r\n break;\r\n case 'P':\r\n statusName = 'Separated';\r\n break;\r\n case 'W':\r\n statusName = 'Widowed';\r\n break;\r\n case 'U':\r\n statusName = 'Unknown';\r\n break;\r\n default:\r\n statusName = '';\r\n break;\r\n }\r\n\r\n // NAME\r\n nameInput.querySelector('input').value = name;\r\n // PREF NAME\r\n prefNameInput.querySelector('input').value = nickName;\r\n // ADDRESS\r\n addressInput.querySelector('input').value = address;\r\n // CITY STATE ZIP\r\n cityStateZipInput.querySelector('input').value = cityStateZip;\r\n // COUNTY\r\n countyInput.querySelector('input').value = county;\r\n // PHONE\r\n phoneInput.querySelector('input').value = ph.disp;\r\n // EMAIL\r\n emailInput.querySelector('input').value = email;\r\n // SEX\r\n sexInput.querySelector('input').value = sex;\r\n // MARITAL STATUS\r\n maritalStatusInput.querySelector('input').value = statusName;\r\n } catch (error) {\r\n console.warn('ERROR PARSING CONTACT INFORMATION FROM GK');\r\n console.error(error);\r\n }\r\n }\r\n\r\n function validatePhone(val) {\r\n if (val === '') return true;\r\n\r\n const genTelRegEx = new RegExp(/^\\d{3}[- ]?\\d{3}[- ]?\\d{4}( x\\d{4})?|x\\d{4}$/im);\r\n return genTelRegEx.test(val);\r\n }\r\n\r\n function formatPhone(phNum) {\r\n if (phNum === '' || !validatePhone(phNum)) return { val: '', disp: '' };\r\n const phoneDigits = new RegExp(/\\d+/g);\r\n rawNumber = phNum.match(phoneDigits).join('');\r\n const pos1 = rawNumber.substr(0, 3);\r\n const pos2 = rawNumber.substr(3, 3);\r\n const pos3 = rawNumber.substr(6, 4);\r\n const pos4 = rawNumber.substr(10, 4);\r\n return {\r\n val: rawNumber,\r\n disp: `${pos1}-${pos2}-${pos3} ${pos4}`,\r\n };\r\n }\r\n\r\n async function updateFundingSources() {\r\n const allFundingSources = await contactInformationAjax.getPlanContactFundingSources({\r\n assessmentId: assessmentId,\r\n });\r\n const fsSort = allFundingSources.map(fs => {\r\n if (isNaN(parseInt(fs.fundingSource))) {\r\n return fs.fundingSource;\r\n } else return servicesSupports.getFundingSourceById(fs.fundingSource);\r\n });\r\n uniqueFundingSources = fsSort.filter(onlyUnique);\r\n fundingSourceList.innerText = uniqueFundingSources.join(', ');\r\n }\r\n\r\n function onlyUnique(value, index, self) {\r\n return self.indexOf(value) === index;\r\n }\r\n\r\n function getSectionMarkup() {\r\n const fsSort = allFundingSources.map(fs => {\r\n if (isNaN(parseInt(fs.fundingSource))) {\r\n return fs.fundingSource;\r\n } else return servicesSupports.getFundingSourceById(fs.fundingSource);\r\n });\r\n uniqueFundingSources = fsSort.filter(onlyUnique);\r\n\r\n const contactSection = document.createElement('div');\r\n contactSection.classList.add('contactInformation');\r\n contactSection.id = 'isp_contactInformationSection';\r\n\r\n const headingWrap = document.createElement('div');\r\n headingWrap.classList.add('sectionHeading', 'contactInfo');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Contact Information';\r\n\r\n const refreshWrap = document.createElement('div');\r\n refreshWrap.classList.add('refreshWrap');\r\n const refreshBtn = button.build({\r\n text: '',\r\n icon: 'refresh',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n gkDemographicsData = await contactInformationAjax.importExistingContactInfo({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n });\r\n updateInputsWithDeomgraphicsData();\r\n let now = new Date();\r\n now = now.toTimeString();\r\n now = now.split(' ');\r\n now = now[0];\r\n now = UTIL.convertFromMilitary(now);\r\n lastrefresh.innerText = `Updated: ${now}`;\r\n },\r\n });\r\n const lastrefresh = document.createElement('span');\r\n\r\n const inputSection = buildContactInputs();\r\n\r\n refreshWrap.appendChild(lastrefresh);\r\n refreshWrap.appendChild(refreshBtn);\r\n headingWrap.appendChild(heading);\r\n headingWrap.appendChild(refreshWrap);\r\n contactSection.appendChild(headingWrap);\r\n contactSection.appendChild(inputSection);\r\n\r\n updateInputsWithDeomgraphicsData();\r\n\r\n const importantPeopleSection = isp_ci_importantPeople.buildSection(\r\n importantPeopleData,\r\n contactId,\r\n readOnly,\r\n gkRelationships,\r\n );\r\n const importantGroupsSection = isp_ci_importantGroups.buildSection(\r\n importantGroupsData,\r\n contactId,\r\n readOnly,\r\n );\r\n const importantPlacesSection = isp_ci_importantPlaces.buildSection(\r\n importantPlacesData,\r\n contactId,\r\n readOnly,\r\n );\r\n\r\n contactSection.appendChild(importantPeopleSection);\r\n contactSection.appendChild(importantGroupsSection);\r\n contactSection.appendChild(importantPlacesSection);\r\n\r\n return contactSection;\r\n }\r\n\r\n function planStatusChange() {\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n const contactInformationSection = document.getElementById('isp_contactInformationSection');\r\n contactInformationSection.innerHTML = '';\r\n\r\n const contactSection = getSectionMarkup();\r\n contactInformationSection.appendChild(contactSection);\r\n }\r\n\r\n async function init(pID) {\r\n assessmentId = pID;\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n const consumer = plan.getSelectedConsumer();\r\n peopleId = consumer.id;\r\n gkRelationships = planData.getDropdownData().relationships;\r\n communicationType = planData.getDropdownData().communicationType;\r\n charLimits = planData.getISPCharacterLimits('contactInfo');\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n mainCIData = await contactInformationAjax.getPlanContactInformation({\r\n token: $.session.Token,\r\n assessmentId: pID,\r\n });\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: assessmentId,\r\n });\r\n if (AdditionalSummaryData) {\r\n if (AdditionalSummaryData.length > 0) {\r\n bestWayToConnectData = { ...AdditionalSummaryData[0] };\r\n if (\r\n bestWayToConnectData.bestWayToConnect === '' ||\r\n bestWayToConnectData.bestWayToConnect === '0'\r\n ) {\r\n bestWayToConnectData.bestWayToConnect = '%';\r\n }\r\n }\r\n } else {\r\n bestWayToConnectData = {\r\n moreDetail: '',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n\r\n contactId = mainCIData.contactId;\r\n\r\n const gkDemographicsDataProm = contactInformationAjax\r\n .importExistingContactInfo({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n })\r\n .then(res => (gkDemographicsData = res));\r\n\r\n const importantPeopleDataProm = contactInformationAjax\r\n .getPlanImportantPeople({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantPeopleData = res));\r\n const importantGroupsDataProm = contactInformationAjax\r\n .getPlanImportantGroups({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantGroupsData = res));\r\n const importantPlacesDataProm = contactInformationAjax\r\n .getPlanImportantPlaces({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantPlacesData = res));\r\n\r\n const fundingSourceProm = contactInformationAjax\r\n .getPlanContactFundingSources({\r\n assessmentId: pID,\r\n })\r\n .then(res => {\r\n allFundingSources = res;\r\n });\r\n\r\n await Promise.all([\r\n gkDemographicsDataProm,\r\n importantPeopleDataProm,\r\n importantGroupsDataProm,\r\n importantPlacesDataProm,\r\n fundingSourceProm,\r\n ]);\r\n\r\n planValidation.contactsValidationCheck();\r\n }\r\n\r\n return {\r\n init,\r\n getSectionMarkup,\r\n cleanName,\r\n cleanAddress,\r\n cleanCityStateZip,\r\n formatPhone,\r\n validatePhone,\r\n planStatusChange,\r\n updateFundingSources,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const contactInformationAjax = (() => {\r\n // GET\r\n // ===============================\r\n async function getPlanContactInformation(retrieveData) {\r\n // string token, stirng assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContact/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function importExistingContactInfo(retrieveData) {\r\n // string token, stirng peopleId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/importExistingContactInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.importExistingContactInfoResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerRelationships(retrieveData) {\r\n //token, consumerId, effectiveStartDate, effectiveEndDate\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationshipsCI/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerRelationshipsCIResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantPeople(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantPlaces(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantGroups(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantGroups/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantGroupsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanContactFundingSources(retrieveData) {\r\n // string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactFundingSources/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactFundingSourcesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // INSERT\r\n // ===============================\r\n async function insertPlanContactImportantPeople(retrieveData) {\r\n // token, contactId, type, name, relationship, address, phone\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanContactImportantGroup(retrieveData) {\r\n // token, contactId, status, name, address, phone, meetingInfo, whoHelps\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantGroup/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantGroupResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanContactImportantPlaces(retrieveData) {\r\n // token, contactId, type, name, address, phone, schedule, acuity\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // UPDATE\r\n // ===============================\r\n async function updatePlanContactImportantPeople(retrieveData) {\r\n // token, importantPersonId, type, name, relationship, address, phone\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantGroup(retrieveData) {\r\n // token, importantGroupId, status, name, address, phone, meetingInfo, whoHelps\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantGroup/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantGroupResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantPlaces(retrieveData) {\r\n // token, importantPlacesId, type, name, address, phone, schedule, acuity\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantOrder(retrieveData) {\r\n // contactId, importantId, newPos, oldPos, type\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContact(retrieveData) {\r\n // token, contactId, ohiInfo, ohiPhone, ohiPolicy\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContact/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // DELETE\r\n // ===============================\r\n async function deletePlanContactImportant(retrieveData) {\r\n /* token, importantId, type\r\n type: \r\n 1 = Groups\r\n 2 = People\r\n 3 = Places\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanContactImportant/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n return {\r\n importExistingContactInfo,\r\n getPlanContactInformation,\r\n getConsumerRelationships,\r\n getPlanImportantPeople,\r\n getPlanImportantPlaces,\r\n getPlanImportantGroups,\r\n getPlanContactFundingSources,\r\n insertPlanContactImportantPeople,\r\n insertPlanContactImportantGroup,\r\n insertPlanContactImportantPlaces,\r\n updatePlanContactImportantPeople,\r\n updatePlanContactImportantGroup,\r\n updatePlanContactImportantPlaces,\r\n updatePlanContactImportantOrder,\r\n updatePlanContact,\r\n deletePlanContactImportant,\r\n };\r\n})();\r\n","const isp_ci_importantPeople = (() => {\r\n let cID;\r\n let rawPeopleTableData;\r\n let gkRelationships;\r\n let readOnly;\r\n let nameInput;\r\n let relationshipInput;\r\n let addressInput;\r\n let phoneInput;\r\n let phoneInput2;\r\n let phoneExt;\r\n let phone2Ext;\r\n let emailInput;\r\n let typeDropdown;\r\n let typeOtherInput;\r\n let saveBtn;\r\n\r\n function popFromRelationships() {\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'isp-ciip-importPopup',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const relationshipSection = document.createElement('div');\r\n\r\n gkRelationships.forEach(rel => {\r\n const name = contactInformation.cleanName(rel);\r\n const address = contactInformation.cleanAddress(rel, true);\r\n const cityStateZip = contactInformation.cleanCityStateZip(rel);\r\n\r\n const relationshipDisp = document.createElement('div');\r\n // relationshipDisp.innerHTML = `Name: ${name}
    Relationship: ${rel.relationship}`;\r\n relationshipDisp.innerHTML = `Name: ${name}`;\r\n relationshipDisp.classList.add('isp_ciip_gkRelationships');\r\n\r\n relationshipDisp.addEventListener('click', () =>\r\n applyGKRelationship({\r\n name: name,\r\n relationship: rel.relationship,\r\n address: address,\r\n cityStateZip: cityStateZip,\r\n phone: rel.phone,\r\n popup: importPopup,\r\n email: rel.email,\r\n }),\r\n );\r\n\r\n relationshipSection.appendChild(relationshipDisp);\r\n });\r\n\r\n importPopup.appendChild(relationshipSection);\r\n POPUP.show(importPopup);\r\n }\r\n function popFromSignatures() {\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'isp-ciip-importPopup2',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const signaturesSection = document.createElement('div');\r\n\r\n const signatureNames = planConsentAndSign.getNames();\r\n signatureNames.forEach(name => {\r\n const sigDiv = document.createElement('div');\r\n sigDiv.innerHTML = `Name: ${name}`;\r\n sigDiv.classList.add('isp_ciip_gkSignautres');\r\n\r\n sigDiv.addEventListener('click', () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.removeProperty('display');\r\n\r\n nameInput.querySelector('input').value = name;\r\n if (name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n\r\n checkForErrors();\r\n });\r\n\r\n signaturesSection.appendChild(sigDiv);\r\n });\r\n\r\n importPopup.appendChild(signaturesSection);\r\n POPUP.show(importPopup);\r\n }\r\n\r\n function applyGKRelationship(opts) {\r\n POPUP.hide(opts.popup);\r\n overlay.show();\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.removeProperty('display');\r\n\r\n let joinedAddress = '';\r\n\r\n if (opts.address !== '') {\r\n joinedAddress = opts.address;\r\n }\r\n if (opts.cityStateZip !== '') {\r\n joinedAddress += '\\n' + opts.cityStateZip;\r\n }\r\n\r\n const phoneDisp = contactInformation.formatPhone(opts.phone.trim()).disp;\r\n // NAME\r\n nameInput.querySelector('input').value = opts.name;\r\n if (opts.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n // RELATIONSHIP\r\n // relationshipInput.querySelector('input').value = opts.relationship;\r\n // if (opts.relationship === '') {\r\n // relationshipInput.classList.add('error');\r\n // } else {\r\n // relationshipInput.classList.remove('error');\r\n // }\r\n // ADDRESS\r\n addressInput.querySelector('textarea').value = joinedAddress.trim();\r\n if (joinedAddress.trim() === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n // PHONE\r\n phoneInput.querySelector('input').value = phoneDisp;\r\n if (phoneDisp === '') {\r\n phoneInput.classList.add('error');\r\n } else {\r\n phoneInput.classList.remove('error');\r\n }\r\n\r\n checkForErrors();\r\n }\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciip-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const typeDD = document.getElementById('isp-ciip-typeDropdown');\r\n const typeVal = typeDD.options[typeDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciip-nameInput').value;\r\n const relationshipVal = '';\r\n const addressVal = document.getElementById('isp-ciip-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput').value,\r\n ).val;\r\n const phoneVal2 = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput2').value,\r\n ).val;\r\n const extVal = document.getElementById('isp-ciip-extinput').value;\r\n const extVal2 = document.getElementById('isp-ciip-extinput2').value;\r\n const emailVal = document.getElementById('isp-ciip-emailInput').value;\r\n const typeOtherVal = document.getElementById('isp-ciip-typeOther').value;\r\n\r\n\r\n let thisPhone = (extVal !== '') ? UTIL.formatPhoneNumber(phoneVal) + ' ext. ' + extVal : UTIL.formatPhoneNumber(phoneVal);\r\n let thisPhone2 = (phoneVal2 !== '') ? UTIL.formatPhoneNumber(phoneVal2) : '';\r\n thisPhone2 = (extVal2 !== '') ? UTIL.formatPhoneNumber(phoneVal2) + ' ext. ' + extVal2 : UTIL.formatPhoneNumber(phoneVal2);\r\n\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n type: typeVal,\r\n name: nameVal,\r\n relationship: relationshipVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n phone2: phoneVal2,\r\n phoneExt: extVal,\r\n phone2Ext: extVal2,\r\n email: emailVal,\r\n typeOther: typeOtherVal,\r\n };\r\n const importantPersonId = await contactInformationAjax.insertPlanContactImportantPeople(\r\n data,\r\n );\r\n data.importantPersonId = importantPersonId;\r\n data.token = null;\r\n\r\n let typeValueUpdate = typeVal;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeVal + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.addRows(\r\n 'isp_ci_importantPeopleTable',\r\n [\r\n {\r\n values: [typeValueUpdate, nameVal, addressVal, emailVal, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n } else {\r\n //Update\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (typeVal === 'Other' && typeOtherVal === '') {\r\n typeValValidated =\r\n `${icons.error} ${typeVal}`;\r\n } else {\r\n typeValValidated = typeVal;\r\n }\r\n\r\n const data = {\r\n token: $.session.Token,\r\n importantPersonId: popupData.importantPersonId,\r\n type: typeVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n relationship: UTIL.removeUnsavableNoteText(relationshipVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n phone2: UTIL.removeUnsavableNoteText(phoneVal2),\r\n phoneExt: extVal,\r\n phone2Ext: extVal2,\r\n email: emailVal,\r\n typeOther: UTIL.removeUnsavableNoteText(typeOtherVal),\r\n };\r\n await contactInformationAjax.updatePlanContactImportantPeople(data);\r\n data.token = null;\r\n\r\n let typeValueUpdate = typeValValidated;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeValValidated + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.updateRows(\r\n 'isp_ci_importantPeopleTable',\r\n [\r\n\r\n {\r\n\r\n values: [typeValueUpdate, nameVal, addressVal, emailVal, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${popupData.importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantPersonId,\r\n type: 2,\r\n };\r\n const tableRow = document.getElementById(`ci-impPeople-${popupData.importantPersonId}`);\r\n tableRow.remove();\r\n await contactInformationAjax.deletePlanContactImportant(data);\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n type: '',\r\n typeOther: '',\r\n name: '',\r\n relationship: '',\r\n address: '',\r\n phone: '',\r\n email: '',\r\n };\r\n }\r\n typeDropdown = dropdown.build({\r\n dropdownId: 'isp-ciip-typeDropdown',\r\n label: '*Type',\r\n readonly: readOnly,\r\n });\r\n if (popupData.type === '') typeDropdown.classList.add('error');\r\n const typeDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'Case Manager', value: 'Case Manager' },\r\n { text: 'Emergency Contact', value: 'Emergency Contact' },\r\n { text: 'Family', value: 'Family' },\r\n { text: 'Friend', value: 'Friend' },\r\n { text: 'Guardian of Person', value: 'Guardian of Person' },\r\n { text: 'Guardian of Estate', value: 'Guardian of Estate' },\r\n { text: 'Guardian of Person AND Estate', value: 'Guardian of Person AND Estate' },\r\n { text: 'Home Provider', value: 'Home Provider' },\r\n { text: 'Medical Provider', value: 'Medical Provider' },\r\n { text: 'Other', value: 'Other' },\r\n { text: 'Partner', value: 'Partner' },\r\n { text: 'Payee', value: 'Payee' },\r\n { text: 'Primary Doctor', value: 'Primary Doctor' },\r\n { text: 'Support Broker', value: 'Support Broker' },\r\n ];\r\n\r\n if (popupData.type.includes('Other')) {\r\n popupData.type = 'Other';\r\n }\r\n dropdown.populate(typeDropdown, typeDropdownValues, popupData.type);\r\n\r\n typeOtherInput = input.build({\r\n label: '*Type Other',\r\n value: popupData.typeOther,\r\n id: `isp-ciip-typeOther`,\r\n readonly: readOnly,\r\n type: 'textarea',\r\n charLimit: 100,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.type !== 'Other') {\r\n typeOtherInput.classList.add('disabled');\r\n } else {\r\n if (popupData.typeOther === '') typeOtherInput.classList.add('error');\r\n }\r\n\r\n const importFromRelationshipsBtn = button.build({\r\n text: 'Import from Relationships',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromRelationships();\r\n },\r\n });\r\n importFromRelationshipsBtn.style.width = '100%';\r\n const importFromSignaturesBtn = button.build({\r\n text: 'Import from Signatures',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromSignatures();\r\n },\r\n });\r\n importFromSignaturesBtn.style.width = '100%';\r\n\r\n nameInput = input.build({\r\n label: '*Name',\r\n value: popupData.name,\r\n id: `isp-ciip-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: '*Address',\r\n value: popupData.address,\r\n type: 'textarea',\r\n id: `isp-ciip-addressInput`,\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: '*Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciip-phoneInput`,\r\n readonly: readOnly,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n phoneInput2 = input.build({\r\n label: 'Phone 2',\r\n value: UTIL.formatPhoneNumber(popupData.phone2),\r\n id: `isp-ciip-phoneInput2`,\r\n readonly: readOnly,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n\r\n phoneExt = input.build({\r\n label: 'Ext.',\r\n value: popupData.phoneExt,\r\n readonly: readOnly,\r\n type: 'number',\r\n id: 'isp-ciip-extinput',\r\n attributes: [{ key: 'maxlength', value: '5' }],\r\n });\r\n\r\n phone2Ext = input.build({\r\n label: 'Ext.',\r\n value: popupData.phone2Ext,\r\n readonly: readOnly,\r\n type: 'number',\r\n id: 'isp-ciip-extinput2',\r\n attributes: [{ key: 'maxlength', value: '5' }],\r\n });\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n value: popupData.email,\r\n id: `isp-ciip-emailInput`,\r\n readonly: readOnly,\r\n type: 'email',\r\n });\r\n\r\n // Wrap up Phones w/Ext.\r\n const phoneWrap = document.createElement('div');\r\n const phoneWrap2 = document.createElement('div');\r\n phoneWrap.classList.add('phoneWrap');\r\n phoneWrap2.classList.add('phoneWrap');\r\n phoneWrap.appendChild(phoneInput);\r\n phoneWrap.appendChild(phoneExt);\r\n phoneWrap2.appendChild(phoneInput2);\r\n phoneWrap2.appendChild(phone2Ext);\r\n\r\n // Action Buttons\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveData();\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n await deleteData();\r\n POPUP.hide(popup);\r\n await planValidation.contactsValidationCheck();\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n\r\n popup.appendChild(typeDropdown);\r\n popup.appendChild(typeOtherInput);\r\n if (!readOnly) popup.appendChild(importFromRelationshipsBtn);\r\n if (!readOnly) popup.appendChild(importFromSignaturesBtn);\r\n popup.appendChild(nameInput);\r\n // popup.appendChild(relationshipInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(emailInput);\r\n popup.appendChild(phoneWrap);\r\n popup.appendChild(phoneWrap2);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors();\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n\r\n phoneInput2.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n }\r\n\r\n if (event.target.value === '' || contactInformation.validatePhone(event.target.value)) {\r\n phoneInput2.classList.remove('error');\r\n } else {\r\n phoneInput2.classList.add('error');\r\n }\r\n\r\n checkForErrors();\r\n });\r\n\r\n phoneExt.addEventListener('input', event => {\r\n if (event.target.value.length > 5) {\r\n const value = event.target.value;\r\n const slicedValue = value.slice(0, 5);\r\n event.target.value = slicedValue;\r\n }\r\n });\r\n phone2Ext.addEventListener('input', event => {\r\n if (event.target.value.length > 5) {\r\n const value = event.target.value;\r\n const slicedValue = value.slice(0, 5);\r\n event.target.value = slicedValue;\r\n }\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n if (event.target.value === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (event.target.value !== 'Other') {\r\n typeOtherInput.classList.remove('error');\r\n typeOtherInput.classList.add('disabled');\r\n typeOtherInput.querySelector('textarea').value = '';\r\n } else {\r\n typeOtherInput.classList.remove('disabled');\r\n typeOtherInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeOtherInput.addEventListener('input', event => {\r\n if (event.target.value.trim() === '') {\r\n typeOtherInput.classList.add('error');\r\n } else {\r\n typeOtherInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciip-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n\r\n function buildTableMarkup() {\r\n const peopleTable = table.build({\r\n tableId: 'isp_ci_importantPeopleTable',\r\n headline: 'Important People',\r\n columnHeadings: ['Type', 'Name', 'Address', 'Email', 'Phone'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split('-')[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 2,\r\n });\r\n },\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = peopleTable.querySelectorAll('.header div');\r\n if (headers.length > 5)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Type\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Address\r\n headers[3 + number].setAttribute('data-type', 'string'); // Email\r\n headers[4 + number].setAttribute('data-type', 'number'); // Phone\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(peopleTable);\r\n\r\n\r\n if (readOnly) peopleTable.classList.add('disableDrag');\r\n\r\n if (rawPeopleTableData) {\r\n const tableData = rawPeopleTableData.map(d => {\r\n let thisPhone = (d.phoneExt !== '') ? UTIL.formatPhoneNumber(d.phone) + ' ext. ' + d.phoneExt : UTIL.formatPhoneNumber(d.phone);\r\n let thisPhone2 = (d.phone2 !== '') ? UTIL.formatPhoneNumber(d.phone2) : '';\r\n thisPhone2 = (d.phone2Ext !== '') ? UTIL.formatPhoneNumber(d.phone2) + ' ext. ' + d.phone2Ext : UTIL.formatPhoneNumber(d.phone2);\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (d.type === 'Other' && d.typeOther === '') {\r\n d.typeValidated =\r\n `${icons.error} ${d.type}`;\r\n } else {\r\n d.typeValidated = d.type;\r\n }\r\n return {\r\n values: [d.typeValidated, d.name, d.address, d.email, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${d.importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(d, false);\r\n },\r\n };\r\n });\r\n table.populate(peopleTable, tableData, true);\r\n }\r\n\r\n return peopleTable;\r\n }\r\n\r\n function buildSection(tableData, contactId, ro, relationships) {\r\n readOnly = ro;\r\n cID = contactId;\r\n rawPeopleTableData = tableData;\r\n gkRelationships = relationships;\r\n const ipSection = document.createElement('div');\r\n\r\n const addPersonBtn = button.build({\r\n text: 'Add Person',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => tablePopup(null, true),\r\n });\r\n\r\n if (readOnly) addPersonBtn.classList.add('disabled');\r\n\r\n const table = buildTableMarkup();\r\n ipSection.appendChild(table);\r\n ipSection.appendChild(addPersonBtn);\r\n\r\n return ipSection;\r\n }\r\n\r\n return {\r\n buildSection,\r\n };\r\n})();\r\n","const isp_ci_importantPlaces = (() => {\r\n let cID;\r\n let rawPlacesTableData;\r\n let readOnly;\r\n let typeDropdown;\r\n let typeOtherInput;\r\n let nameInput;\r\n let addressInput;\r\n let phoneInput;\r\n let saveBtn;\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciip-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const typeDD = document.getElementById('isp-ciip-typeDropdown');\r\n const typeVal = typeDD.options[typeDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciip-nameInput').value;\r\n const addressVal = document.getElementById('isp-ciip-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput').value,\r\n ).val;\r\n const scheduleVal = document.getElementById('isp-ciip-scheduleInput').value;\r\n const acuityVal = document.getElementById('isp-ciip-acuityInput').value;\r\n const typeOtherVal = document.getElementById('isp-ciip-typeOther').value;\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n type: typeVal,\r\n name: nameVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n schedule: scheduleVal,\r\n acuity: acuityVal,\r\n typeOther: typeOtherVal,\r\n };\r\n const insertId = await contactInformationAjax.insertPlanContactImportantPlaces(data);\r\n data.importantPlacesId = insertId;\r\n data.token = null;\r\n let typeValueUpdate = typeVal;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeVal + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.addRows(\r\n 'isp_ci_importanPlacesTable',\r\n [\r\n {\r\n values: [\r\n typeValueUpdate,\r\n nameVal,\r\n addressVal,\r\n UTIL.formatPhoneNumber(phoneVal),\r\n scheduleVal,\r\n acuityVal,\r\n ],\r\n id: `ci-impPlace-${insertId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n } else {\r\n //Update\r\n const data = {\r\n token: $.session.Token,\r\n importantPlacesId: popupData.importantPlacesId,\r\n type: typeVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n schedule: UTIL.removeUnsavableNoteText(scheduleVal),\r\n acuity: UTIL.removeUnsavableNoteText(acuityVal),\r\n typeOther: UTIL.removeUnsavableNoteText(typeOtherVal),\r\n };\r\n await contactInformationAjax.updatePlanContactImportantPlaces(data);\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (typeVal === 'Other' && typeOtherVal === '') {\r\n typeValValidated =\r\n `${icons.error} ${typeVal}`;\r\n } else {\r\n typeValValidated = typeVal;\r\n }\r\n\r\n data.token = null;\r\n let typeValueUpdate = typeValValidated;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeValValidated + ' - ' + typeOtherVal;\r\n } \r\n\r\n table.updateRows(\r\n 'isp_ci_importanPlacesTable',\r\n [\r\n {\r\n values: [\r\n typeValueUpdate,\r\n nameVal,\r\n addressVal,\r\n UTIL.formatPhoneNumber(phoneVal),\r\n scheduleVal,\r\n acuityVal,\r\n ],\r\n id: `ci-impPlace-${popupData.importantPlacesId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantPlacesId,\r\n type: 3,\r\n };\r\n const tableRow = document.getElementById(`ci-impPlace-${popupData.importantPlacesId}`);\r\n tableRow.remove();\r\n await contactInformationAjax.deletePlanContactImportant(data);\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n type: '',\r\n typeOther: '',\r\n name: '',\r\n address: '',\r\n phone: '',\r\n schedule: '',\r\n acuity: '',\r\n };\r\n }\r\n typeDropdown = dropdown.build({\r\n dropdownId: 'isp-ciip-typeDropdown',\r\n label: '*Type',\r\n readonly: readOnly,\r\n });\r\n if (popupData.type === '') typeDropdown.classList.add('error');\r\n\r\n const typeDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'ADS Provider', value: 'ADS Provider' },\r\n { text: 'Day Provider', value: 'Day Provider' },\r\n { text: 'Other', value: 'Other' },\r\n { text: 'Primary Hospital', value: 'Primary Hospital' },\r\n { text: 'School', value: 'School' },\r\n { text: 'Work', value: 'Work' },\r\n ];\r\n\r\n if (popupData.type.includes('Other')) {\r\n popupData.type = 'Other';\r\n }\r\n dropdown.populate(typeDropdown, typeDropdownValues, popupData.type);\r\n\r\n typeOtherInput = input.build({\r\n label: '*Type Other',\r\n value: popupData.typeOther,\r\n id: `isp-ciip-typeOther`,\r\n readonly: readOnly,\r\n type: 'textarea',\r\n charLimit: 100,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.type !== 'Other') {\r\n typeOtherInput.classList.add('disabled');\r\n } else {\r\n if (popupData.typeOther === '') typeOtherInput.classList.add('error');\r\n }\r\n\r\n nameInput = input.build({\r\n label: '*Name',\r\n value: popupData.name,\r\n id: `isp-ciip-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: '*Address',\r\n value: popupData.address,\r\n id: `isp-ciip-addressInput`,\r\n type: 'textarea',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: '*Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciip-phoneInput`,\r\n readonly: readOnly,\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n const scheduleInput = input.build({\r\n label: 'Schedule',\r\n value: popupData.schedule,\r\n id: `isp-ciip-scheduleInput`,\r\n readonly: readOnly,\r\n });\r\n const acuityInput = input.build({\r\n label: 'Acuity',\r\n value: popupData.acuity,\r\n id: `isp-ciip-acuityInput`,\r\n readonly: readOnly,\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveData();\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n await deleteData();\r\n POPUP.hide(popup);\r\n await planValidation.contactsValidationCheck();\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n popup.appendChild(typeDropdown);\r\n popup.appendChild(typeOtherInput);\r\n popup.appendChild(nameInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(phoneInput);\r\n popup.appendChild(scheduleInput);\r\n popup.appendChild(acuityInput);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors();\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n if (event.target.value === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (event.target.value !== 'Other') {\r\n typeOtherInput.classList.remove('error');\r\n typeOtherInput.classList.add('disabled');\r\n typeOtherInput.querySelector('textarea').value = '';\r\n } else {\r\n typeOtherInput.classList.remove('disabled');\r\n typeOtherInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeOtherInput.addEventListener('input', event => {\r\n if (event.target.value.trim() === '') {\r\n typeOtherInput.classList.add('error');\r\n } else {\r\n typeOtherInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciip-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n\r\n function buildTableMarkup() {\r\n const placesTable = table.build({\r\n tableId: 'isp_ci_importanPlacesTable',\r\n headline: 'Important Places',\r\n columnHeadings: ['Type', 'Name', 'Address', 'Phone', 'Schedule', 'Acuity'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split('-')[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 3,\r\n });\r\n },\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = placesTable.querySelectorAll('.header div');\r\n if (headers.length > 6)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Type\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Address\r\n headers[3 + number].setAttribute('data-type', 'number'); // Phone\r\n headers[4 + number].setAttribute('data-type', 'string'); // Schedule\r\n headers[5 + number].setAttribute('data-type', 'string'); // Acuity\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(placesTable);\r\n\r\n\r\n if (readOnly) placesTable.classList.add('disableDrag');\r\n\r\n if (rawPlacesTableData) {\r\n const tableData = rawPlacesTableData.map(d => {\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (d.type === 'Other' && d.typeOther === '') {\r\n d.typeValidated =\r\n `${icons.error} ${d.type}`;\r\n } else {\r\n d.typeValidated = d.type;\r\n }\r\n\r\n return {\r\n values: [\r\n d.typeValidated,\r\n d.name,\r\n d.address,\r\n UTIL.formatPhoneNumber(d.phone),\r\n d.schedule,\r\n d.acuity,\r\n ],\r\n id: `ci-impPlace-${d.importantPlacesId}`,\r\n onClick: () => {\r\n tablePopup(d, false);\r\n },\r\n };\r\n });\r\n table.populate(placesTable, tableData, true);\r\n }\r\n\r\n return placesTable;\r\n }\r\n\r\n function buildSection(tableData, contactId, ro) {\r\n readOnly = ro;\r\n cID = contactId;\r\n rawPlacesTableData = tableData;\r\n const ipSection = document.createElement('div');\r\n\r\n const addPlaceBtn = button.build({\r\n text: 'Add Place',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => tablePopup(null, true),\r\n });\r\n if (readOnly) addPlaceBtn.classList.add('disabled');\r\n\r\n const table = buildTableMarkup();\r\n ipSection.appendChild(table);\r\n ipSection.appendChild(addPlaceBtn)\r\n\r\n return ipSection;\r\n }\r\n\r\n return {\r\n buildSection,\r\n };\r\n})();\r\n","const isp_ci_importantGroups = (() => {\r\n let cID;\r\n let rawGroupsTableData;\r\n let readOnly;\r\n let statusDropdown\r\n let nameInput\r\n let addressInput\r\n let phoneInput\r\n let saveBtn\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciig-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const statusDD = document.getElementById('isp-ciig-statusDropdown');\r\n const statusVal = statusDD.options[statusDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciig-nameInput').value;\r\n const addressVal = document.getElementById('isp-ciig-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(document.getElementById('isp-ciig-phoneInput').value).val;\r\n const meetingInfoVal = document.getElementById('isp-ciig-meetingInfoInput').value;\r\n const whoHelpsVal = document.getElementById('isp-ciig-whoHelpsInput').value;\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n status: statusVal,\r\n name: nameVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n meetingInfo: meetingInfoVal,\r\n whoHelps: whoHelpsVal,\r\n }\r\n const importantGroupId = await contactInformationAjax.insertPlanContactImportantGroup(data);\r\n data.importantGroupId = importantGroupId;\r\n data.token = null;\r\n table.addRows('isp_ci_importantGroupsTable', [{\r\n values: [statusVal, nameVal, addressVal, UTIL.formatPhoneNumber(phoneVal), meetingInfoVal, whoHelpsVal],\r\n id: `ci-impGroups-${data.importantGroupId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n }], true)\r\n } else {\r\n //Update\r\n const data = {\r\n token: $.session.Token,\r\n importantGroupId: popupData.importantGroupId,\r\n status: statusVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n meetingInfo: UTIL.removeUnsavableNoteText(meetingInfoVal),\r\n whoHelps: UTIL.removeUnsavableNoteText(whoHelpsVal),\r\n }\r\n await contactInformationAjax.updatePlanContactImportantGroup(data);\r\n data.token = null;\r\n table.updateRows('isp_ci_importantGroupsTable', [{\r\n values: [statusVal, nameVal, addressVal, UTIL.formatPhoneNumber(phoneVal), meetingInfoVal, whoHelpsVal],\r\n id: `ci-impGroups-${popupData.importantGroupId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n }], true)\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantGroupId,\r\n type: 1\r\n }\r\n const tableRow = document.getElementById(`ci-impGroups-${popupData.importantGroupId}`)\r\n tableRow.remove()\r\n await contactInformationAjax.deletePlanContactImportant(data)\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n status: '',\r\n name: '',\r\n address: '',\r\n phone: '',\r\n meetingInfo: '',\r\n whoHelps: '',\r\n }\r\n }\r\n statusDropdown = dropdown.build({\r\n dropdownId: 'isp-ciig-statusDropdown',\r\n label: '*Status',\r\n readonly: readOnly,\r\n });\r\n if (popupData.status === '') statusDropdown.classList.add('error');\r\n\r\n const statusDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'Current', value: 'Current' },\r\n { text: 'New/Interested In', value: 'New/Interested In' },\r\n ];\r\n\r\n dropdown.populate(statusDropdown, statusDropdownValues, popupData.status);\r\n\r\n nameInput = input.build({\r\n label: '*Name',\r\n value: popupData.name,\r\n id: `isp-ciig-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: '*Address',\r\n value: popupData.address,\r\n id: `isp-ciig-addressInput`,\r\n type: 'textarea',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: '*Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciig-phoneInput`,\r\n readonly: readOnly,\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n const meetingInfoInput = input.build({\r\n label: 'When / Meeting Info',\r\n value: popupData.meetingInfo,\r\n id: `isp-ciig-meetingInfoInput`,\r\n readonly: readOnly,\r\n });\r\n const whoHelpsInput = input.build({\r\n label: 'Who Helps',\r\n value: popupData.whoHelps,\r\n id: `isp-ciig-whoHelpsInput`,\r\n readonly: readOnly,\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveData()\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n }\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: () => {\r\n deleteData()\r\n POPUP.hide(popup)\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n }\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n\r\n popup.appendChild(statusDropdown);\r\n popup.appendChild(nameInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(phoneInput);\r\n popup.appendChild(meetingInfoInput);\r\n popup.appendChild(whoHelpsInput);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors()\r\n DOM.autosizeTextarea();\r\n\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== \"\" && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors()\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n if (event.target.value === \"\") {\r\n statusDropdown.classList.add('error')\r\n } else {\r\n statusDropdown.classList.remove('error')\r\n }\r\n checkForErrors()\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === \"\") {\r\n nameInput.classList.add('error')\r\n } else {\r\n nameInput.classList.remove('error')\r\n }\r\n checkForErrors()\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === \"\") {\r\n addressInput.classList.add('error')\r\n } else {\r\n addressInput.classList.remove('error')\r\n }\r\n checkForErrors()\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciig-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled')\r\n } else saveBtn.classList.remove('disabled')\r\n }\r\n\r\n function buildTableMarkup() {\r\n const peopleTable = table.build({\r\n tableId: 'isp_ci_importantGroupsTable',\r\n headline: 'Important Clubs, Groups, and Organizations',\r\n columnHeadings: ['Status', 'Name', 'Address', 'Phone', 'Meeting info', 'Who helps'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split(\"-\")[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 1\r\n })\r\n }\r\n });\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = peopleTable.querySelectorAll('.header div');\r\n if (headers.length > 6)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Status\r\n headers[1 + number].setAttribute('data-type', 'string'); // Name\r\n headers[2 + number].setAttribute('data-type', 'string'); // Address\r\n headers[3 + number].setAttribute('data-type', 'number'); // Phone\r\n headers[4 + number].setAttribute('data-type', 'string'); // Meeting info\r\n headers[5 + number].setAttribute('data-type', 'string'); // Who helps\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(peopleTable);\r\n\r\n\r\n if (readOnly) peopleTable.classList.add('disableDrag');\r\n\r\n if (rawGroupsTableData) {\r\n const tableData = rawGroupsTableData.map(d => {\r\n return {\r\n values: [d.status, d.name, d.address, UTIL.formatPhoneNumber(d.phone), d.meetingInfo, d.whoHelps],\r\n id: `ci-impGroups-${d.importantGroupId}`,\r\n onClick: () => {\r\n tablePopup(d, false)\r\n }\r\n }\r\n });\r\n table.populate(peopleTable, tableData, true)\r\n }\r\n\r\n return peopleTable\r\n }\r\n\r\n function buildSection(tableData, contactId, ro) {\r\n readOnly = ro;\r\n cID = contactId;\r\n rawGroupsTableData = tableData;\r\n\r\n const igSection = document.createElement('div');\r\n const addGroupBtn = button.build({\r\n text: 'Add Club/Group/Organization',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => tablePopup(null, true)\r\n })\r\n if (readOnly) addGroupBtn.classList.add('disabled');\r\n\r\n const table = buildTableMarkup()\r\n\r\n igSection.appendChild(table);\r\n igSection.appendChild(addGroupBtn);\r\n\r\n return igSection\r\n }\r\n\r\n return {\r\n buildSection\r\n }\r\n})();","const planIntroduction = (() => {\r\n let isReadOnly;\r\n let planId;\r\n let likeAdmire;\r\n let thingsImportantTo;\r\n let thingsImportantFor;\r\n let howToSupport;\r\n let usePlanImage;\r\n let consumerIdForPhoto;\r\n let selectedConsumerId;\r\n let consumerImage;\r\n let consumerImageURL;\r\n let charLimits;\r\n\r\n async function updateIntroduction() {\r\n await planIntroductionAjax.updatePlanIntroduction(\r\n $.session.Token,\r\n planId,\r\n selectedConsumerId,\r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage,\r\n );\r\n }\r\n\r\n function buildIntroduction() {\r\n const introduction = document.createElement('div');\r\n introduction.classList.add('outcome');\r\n\r\n //photo display\r\n var img = document.createElement('img');\r\n img.classList.add('imageContainer');\r\n\r\n // No Photo radio button\r\n const noPhotoRadio = input.buildRadio({\r\n id: `noPhotoRadio`,\r\n text: 'No Photo',\r\n name: 'chkUseImage',\r\n isChecked:\r\n usePlanImage === '' || usePlanImage === null || usePlanImage === '2' ? true : false,\r\n // isDisabled: isReadOnly,\r\n callback: () => {\r\n // if (!isReadOnly) photoInput.classList.add('disabled');\r\n // Retrieve the demographics DEFAULT Picture from images folder and place it in img\r\n // var fullpath = `./images/portraits/default.png`;\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n usePlanImage = 2;\r\n updateIntroduction();\r\n },\r\n });\r\n\r\n displayNoPhoto();\r\n\r\n // Demographics radio button\r\n const demoPhotoRadio = input.buildRadio({\r\n id: `chkUsePlanImage-no`,\r\n text: 'Use Demographics Photo',\r\n name: 'chkUseImage',\r\n isChecked: usePlanImage === '0' ? true : false,\r\n isDisabled: isReadOnly,\r\n callback: () => {\r\n if (!isReadOnly) photoInput.classList.add('disabled');\r\n // Retrieve the demographics Picture from images folder and place it in img\r\n var fullpath = `./images/portraits/${selectedConsumerId}.png`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n usePlanImage = 0;\r\n updateIntroduction();\r\n\r\n displayDemographicsPhoto();\r\n },\r\n });\r\n\r\n displayDemographicsPhoto();\r\n\r\n // Custom Image (Plan) radio button\r\n const customPhotoRadio = input.buildRadio({\r\n id: `chkUsePlanImage-yes`,\r\n text: 'Use Custom Image',\r\n name: 'chkUseImage',\r\n isChecked: usePlanImage === '1' ? true : false,\r\n isDisabled: isReadOnly,\r\n callback: async () => {\r\n usePlanImage = 1;\r\n consumerImage = '';\r\n if (!isReadOnly) photoInput.classList.remove('disabled');\r\n await updateIntroduction();\r\n const planIntroductionData = await planIntroductionAjax.getPlanIntroduction({\r\n token: $.session.Token,\r\n planId: planId,\r\n consumerId: selectedConsumerId,\r\n });\r\n\r\n consumerImage = planIntroductionData.consumerImage;\r\n displayPlanIntroductionPhoto();\r\n },\r\n });\r\n\r\n displayPlanIntroductionPhoto();\r\n\r\n // File Selection Input\r\n var photoInput = input.build({\r\n id: `selectImage`,\r\n label: 'Choose Image',\r\n type: 'file',\r\n accept: 'image/*',\r\n style: 'secondary',\r\n attributes: [{ key: 'multiple', value: 'false' }],\r\n });\r\n\r\n photoInput.addEventListener('change', event => {\r\n const photoObj = {};\r\n\r\n const attPromise = new Promise(resolve => {\r\n const photoFile = event.target.files.item(0);\r\n const photoName = photoFile.name;\r\n const photoType = photoFile.name.split('.').pop();\r\n photoObj.description = photoName;\r\n photoObj.type = photoType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(photoFile).arrayBuffer().then(res => {\r\n photoObj.arrayBuffer = res;\r\n resolve();\r\n });\r\n });\r\n attPromise.then(async () => {\r\n try {\r\n consumerImage = photoObj.arrayBuffer;\r\n refreshPlanIntroductionPhoto(event);\r\n } catch (error) {\r\n throw error;\r\n }\r\n });\r\n });\r\n\r\n // build radio buttons and photo selector\r\n const imageTitle = document.createElement('h4');\r\n imageTitle.innerHTML = 'Photo';\r\n const imageContainer = document.createElement('div');\r\n const radioDiv1 = document.createElement('div');\r\n const radioDiv2 = document.createElement('div');\r\n const radioDiv3 = document.createElement('div');\r\n const imageframe = document.createElement('div');\r\n imageframe.classList.add('imageframe');\r\n const photoSelectDiv = document.createElement('div');\r\n radioDiv1.appendChild(noPhotoRadio);\r\n radioDiv2.appendChild(demoPhotoRadio);\r\n // TODOJOE: Position the image so that it is next to other elements (not so far to right)\r\n imageframe.appendChild(img);\r\n radioDiv3.appendChild(customPhotoRadio);\r\n photoSelectDiv.appendChild(photoInput);\r\n photoSelectDiv.classList.add('photoSelectorContainer');\r\n imageContainer.appendChild(imageTitle);\r\n imageContainer.appendChild(radioDiv1);\r\n imageContainer.appendChild(radioDiv2);\r\n imageContainer.appendChild(imageframe);\r\n imageContainer.appendChild(radioDiv3);\r\n imageContainer.appendChild(photoSelectDiv);\r\n imageContainer.classList.add('imageSelectionContainer');\r\n\r\n // likeAdmire textarea\r\n const likeAdmireInput = input.build({\r\n label: 'What People Like and Admire About Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: likeAdmire,\r\n charLimit: charLimits.likeAdmire,\r\n forceCharLimit: true,\r\n });\r\n likeAdmireInput.classList.add('introTextArea');\r\n likeAdmireInput.addEventListener('input', e => {\r\n likeAdmire = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // thingsImportantTo textarea\r\n const thingsImportantToInput = input.build({\r\n label: 'A Few Things That Are Important to Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: thingsImportantTo,\r\n charLimit: charLimits.thingsImportantTo,\r\n forceCharLimit: true,\r\n });\r\n thingsImportantToInput.classList.add('introTextArea');\r\n thingsImportantToInput.addEventListener('input', e => {\r\n thingsImportantTo = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // thingsImportantFor textarea\r\n const thingsImportantForInput = input.build({\r\n label: 'A Few Things That Are Important for Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: thingsImportantFor,\r\n charLimit: charLimits.thingsImportantFor,\r\n forceCharLimit: true,\r\n });\r\n thingsImportantForInput.classList.add('introTextArea');\r\n thingsImportantForInput.addEventListener('input', e => {\r\n thingsImportantFor = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // howToSupport textarea\r\n const howToSupportInput = input.build({\r\n label: 'Here is How You Can Support Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: howToSupport,\r\n charLimit: charLimits.howToSupport,\r\n forceCharLimit: true,\r\n });\r\n howToSupportInput.classList.add('introTextArea');\r\n howToSupportInput.addEventListener('input', e => {\r\n howToSupport = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n introduction.appendChild(imageContainer);\r\n introduction.appendChild(likeAdmireInput);\r\n introduction.appendChild(thingsImportantToInput);\r\n introduction.appendChild(thingsImportantForInput);\r\n introduction.appendChild(howToSupportInput);\r\n\r\n DOM.ACTIONCENTER.appendChild(introduction);\r\n // if custom image radio button is selected, enable the file/photo select functionality\r\n let customPhotoRadio2 = document.getElementById('chkUsePlanImage-yes');\r\n if (customPhotoRadio2.checked == true) {\r\n photoInput.classList.remove('disabled');\r\n } else {\r\n photoInput.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n likeAdmireInput.classList.add('disabled');\r\n thingsImportantToInput.classList.add('disabled');\r\n thingsImportantForInput.classList.add('disabled');\r\n howToSupportInput.classList.add('disabled');\r\n // let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n // let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // demoPhotoRadio.disabled = true;\r\n // customPhotoRadio.disabled = true;\r\n photoInput.classList.add('disabled');\r\n }\r\n\r\n return introduction;\r\n }\r\n\r\n function getMarkup() {\r\n const section = document.createElement('div');\r\n section.classList.add('ispIntroduction');\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Introduction';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '24px';\r\n section.appendChild(heading);\r\n\r\n // let linebreak = document.createElement(\"br\");\r\n // section.appendChild(linebreak);\r\n const introduction = buildIntroduction();\r\n section.appendChild(introduction);\r\n\r\n return section;\r\n }\r\n\r\n function displayDemographicsPhoto() {\r\n // if portrait exists in image/portraits, then enable demoPhotoRadio; otherwise, disable it\r\n var id = consumerIdForPhoto;\r\n id = parseInt(id);\r\n var fullpath = `./images/portraits/${id}.png`;\r\n var myImage = new Image();\r\n myImage.src = fullpath;\r\n myImage.onload = function () {\r\n let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n demoPhotoRadio.disabled = isReadOnly;\r\n // display Demographics photo\r\n if (demoPhotoRadio.checked == true) {\r\n var fullpath = `./images/portraits/${consumerIdForPhoto}.png`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n }\r\n };\r\n myImage.onerror = function () {\r\n let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n // display Silhouette photo\r\n if (demoPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n demoPhotoRadio.disabled = true;\r\n demoPhotoRadio.checked = false;\r\n };\r\n }\r\n\r\n function displayNoPhoto() {\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var myImage = new Image();\r\n myImage.src = fullpath;\r\n myImage.onload = function () {\r\n let noPhotoRadio1 = document.getElementById('noPhotoRadio');\r\n // display default photo silhouette\r\n if (noPhotoRadio1.checked == true) {\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n }\r\n };\r\n }\r\n\r\n function displayPlanIntroductionPhoto() {\r\n if (consumerImage) {\r\n const binaryString = window.atob(consumerImage);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n const blob = new Blob([bytes], { type: 'image/jpg' });\r\n var urlCreator = window.URL || window.webkitURL;\r\n consumerImageURL = urlCreator.createObjectURL(blob);\r\n\r\n var myImage2 = new Image();\r\n myImage2.src = consumerImageURL;\r\n\r\n myImage2.onload = function () {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Plan (ie, Custom) photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', consumerImageURL);\r\n }\r\n };\r\n\r\n myImage2.onerror = function (errorMsg) {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Silhouette photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n };\r\n } else {\r\n var myImage3 = new Image();\r\n myImage3.src = '';\r\n myImage3.onerror = function (errorMsg) {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Silhouette photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n };\r\n }\r\n }\r\n\r\n function refreshPlanIntroductionPhoto(event) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n usePlanImage = 1;\r\n updateIntroduction();\r\n // }\r\n }\r\n\r\n async function init(data) {\r\n isReadOnly = data.readOnly;\r\n planId = data.planId;\r\n charLimits = planData.getISPCharacterLimits('introduction');\r\n\r\n // var activeConsumers = roster2.getActiveConsumers();\r\n // selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n\r\n // const selectedConsumer = plan.getSelectedConsumer();\r\n // consumerIdForPhoto =\r\n // $.session.applicationName === 'Advisor' ? selectedConsumer.consumerId : selectedConsumer.id;\r\n\r\n const selectedConsumer = plan.getSelectedConsumer();\r\n selectedConsumerId = selectedConsumer.id;\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n consumerIdForPhoto = selectedConsumer.consumerId\r\n ? selectedConsumer.consumerId\r\n : selectedConsumer.id;\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n consumerIdForPhoto = selectedConsumer.consumerId\r\n ? selectedConsumer.consumerId\r\n : selectedConsumer.id;\r\n }\r\n\r\n const planIntroductionData = await planIntroductionAjax.getPlanIntroduction({\r\n token: $.session.Token,\r\n planId: planId,\r\n consumerId: selectedConsumerId,\r\n });\r\n\r\n likeAdmire = planIntroductionData.likeAdmire;\r\n thingsImportantTo = planIntroductionData.thingsImportantTo;\r\n thingsImportantFor = planIntroductionData.thingsImportantFor;\r\n howToSupport = planIntroductionData.howToSupport;\r\n usePlanImage = planIntroductionData.usePlanImage;\r\n consumerImage = planIntroductionData.consumerImage;\r\n }\r\n\r\n return { init, getMarkup };\r\n})();\r\n","const planIntroductionAjax = (() => {\r\n\r\n // GET\r\n //------------------------------------\r\n async function getPlanIntroduction(retrieveData) {\r\n // string token, string planId, string consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanIntroduction/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanIntroductionResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Update\r\n //------------------------------------\r\n async function updatePlanIntroduction(\r\n token,\r\n planId,\r\n consumerId, \r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage\r\n ) {\r\n \r\n // retrieveData.usePlanImage = parseInt(retrieveData.usePlanImage);\r\n\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(consumerImage);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanIntroduction/',\r\n data: JSON.stringify({\r\n token: token,\r\n planId,\r\n consumerId, \r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage: abString,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanIntroductionResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n \r\n return {\r\n getPlanIntroduction,\r\n updatePlanIntroduction,\r\n\r\n };\r\n \r\n })();\r\n","const planOutcomes = (() => {\r\n let isReadOnly;\r\n let isSortable;\r\n let planId; // aka: assessmentId\r\n let progressSummaryId;\r\n let progressSummary;\r\n let outcomesData;\r\n let dropdownData;\r\n let outcomesWrap;\r\n let outcomesProgressSummary;\r\n let addOutcomeBtn;\r\n let addExpTableBtn;\r\n let teamMembers;\r\n let hasPreviousPlan;\r\n let charLimits;\r\n let responseIdCache = {};\r\n // Selected Vendors => Experiences/WhoResponsible\r\n let selectedVendors = {};\r\n let validationCheck;\r\n function getSelectedVendors() {\r\n return Object.values(selectedVendors);\r\n }\r\n //*------------------------------------------------------\r\n //* UTILS\r\n //*------------------------------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapOutcomesDetails(data) {\r\n if (!data || data.planOutcome.length === 0) return {};\r\n\r\n const outcomes = {};\r\n\r\n data.planOutcome.forEach(o => {\r\n if (!outcomes[o.outcomeId]) {\r\n outcomes[o.outcomeId] = {\r\n sectionId: o.sectionId,\r\n outcomeId: o.outcomeId,\r\n outcomeOrder: o.outcomeOrder,\r\n outcome: o.outcome,\r\n details: o.details,\r\n history: o.history,\r\n status: o.status,\r\n carryOverReason: o.carryOverReason,\r\n experiences: {},\r\n reviews: {},\r\n };\r\n }\r\n });\r\n data.planOutcomeExperiences.forEach(o => {\r\n const oc = outcomes[o.outcomeId];\r\n if (!oc) return 'error: outcome or outcomeId is invalid or missing';\r\n\r\n if (!oc.experiences[o.experienceId]) {\r\n oc.experiences[o.experienceId] = {\r\n experienceIds: o.experienceId,\r\n experienceOrder: o.experienceOrder,\r\n outcomeId: o.outcomeId,\r\n whatHappened: o.whatHappened,\r\n howHappened: o.howHappened,\r\n responsibilities: {},\r\n };\r\n o.planExperienceResponsibilities.forEach((resp, index) => {\r\n if (!oc.experiences[o.experienceId].responsibilities[index]) {\r\n oc.experiences[o.experienceId].responsibilities[index] = {\r\n responsibilityIds: resp.responsibilityId,\r\n responsibleContact: !resp.responsibleContact ? '%' : resp.responsibleContact,\r\n responsibleProvider: !resp.responsibleProvider ? '%' : resp.responsibleProvider,\r\n whenHowOftenValue: resp.whenValue,\r\n whenHowOftenFrequency: resp.whenFrequency,\r\n whenHowOftenText: resp.whenOther,\r\n };\r\n }\r\n });\r\n }\r\n });\r\n data.planReviews.forEach(o => {\r\n const oc = outcomes[o.outcomeId];\r\n if (!oc) return 'error: outcome or outcomeId is invalid or missing';\r\n\r\n if (!oc.reviews[o.outcomeReviewId]) {\r\n oc.reviews[o.outcomeReviewId] = {\r\n whatWillHappen: o.whatWillHappen,\r\n whenToCheckIn: o.whenToCheckIn,\r\n whoReview: o.who,\r\n reviewIds: o.outcomeReviewId,\r\n whoResponsible: o.whoResponsible,\r\n contactId: o.contactId,\r\n reviewOrder: o.reviewOrder,\r\n outcomeId: o.outcomeId,\r\n };\r\n }\r\n });\r\n\r\n return outcomes;\r\n }\r\n function sortOutcomesByOrder(outcomeData) {\r\n return [...outcomeData].sort((objA, objB) => {\r\n if (objA.outcomeOrder === objB.outcomeOrder) return 0;\r\n\r\n return objA.outcomeOrder < objB.outcomeOrder ? -1 : 1;\r\n });\r\n }\r\n function checkIfSummaryRequired() {\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n\r\n if (outcomes.length > 0 && progressSummary === '') {\r\n outcomesProgressSummary.classList.add('error');\r\n } else {\r\n outcomesProgressSummary.classList.remove('error');\r\n }\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* DROPDOWNS\r\n //*------------------------------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentAreaId,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateStatusDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.outcomeStatus.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateExperiencesHowOftenDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.howOFtenExperiences.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateReviewsWhoDropdown(dropdownEle, defaultValue) {\r\n // teamMembers = planConsentAndSign.getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds();\r\n\r\n teamMembers = planData.getDropdownData().relationships.map(dd => {\r\n return {\r\n peopleId: dd.peopleId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n let data;\r\n if (teamMembers) {\r\n data = teamMembers.map(dd => {\r\n return {\r\n value: dd.peopleId,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n } else {\r\n data = [{ value: '%', text: '' }];\r\n }\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n async function populateResponsibleProviderDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n // const selectedVendorIds = servicesSupports.getSelectedVendorIds();\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const nonPaidSupportData = data.filter(provider => !selectedVendorIds.includes(provider.value));\r\n const paidSupportData = data.filter(provider => selectedVendorIds.includes(provider.value));\r\n\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n nonPaidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n paidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ss_providerDropdown_paidSupportProviders',\r\n dropdownValues: paidSupportDropdownData,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ss_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: nonPaidSupportDropdownData,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (paidSupportDropdownData.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n const tempData = [...nonPaidSupportDropdownData, ...paidSupportDropdownData];\r\n if (tempData.length === 1) {\r\n defaultValue = tempData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: defaultValue,\r\n });\r\n\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.vendorId);\r\n return acc;\r\n }, []);\r\n }\r\n // data.sort((a, b) => {\r\n // const textA = a.text.toUpperCase();\r\n // const textB = b.text.toUpperCase();\r\n // return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n // });\r\n // data.unshift({ value: '%', text: '' });\r\n\r\n // dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateResponsibleContactDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.relationships.map(dd => {\r\n return {\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n //-- map id to name -------\r\n function getWhenHowOFtenFrequencyById(id) {\r\n const filteredFrequency = dropdownData.howOFtenExperiences.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n function getWhoTypeById(id) {\r\n // teamMembers = planData.getDropdownData().relationships.map(dd => {\r\n // return {\r\n // peopleId: dd.peopleId,\r\n // text: `${dd.lastName}, ${dd.firstName}`,\r\n // };\r\n // });\r\n const filteredWho = dropdownData.relationships.filter(dd => dd.contactId === id);\r\n if (filteredWho && filteredWho.length > 0) {\r\n return filteredWho[0].teamMember === 'Case Manager' ? true : false;\r\n }\r\n }\r\n\r\n function isSalesforceLocationTrue(value) {\r\n // Check if value exists in dropdownData.serviceVendors array and its isSalesforceLocation is 'True'\r\n const vendor = dropdownData.serviceVendors.find(vendor => vendor.vendorId === value);\r\n return vendor ? vendor.isSalesforceLocation === 'True' : false;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* OUTCOME, DETAILS & HISTORY\r\n //*------------------------------------------------------\r\n async function insertOutcome(saveData, fromAssessment) {\r\n if (fromAssessment) {\r\n planId = plan.getCurrentPlanId();\r\n }\r\n\r\n const outcomeId = await planOutcomesAjax.insertPlanOutcome({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcome: saveData.outcome,\r\n details: saveData.details,\r\n history: saveData.history,\r\n sectionId: saveData.sectionId,\r\n outcomeOrder: saveData.outcomeOrder,\r\n status: saveData.status,\r\n carryOverReason: saveData.carryOverReason,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n outcomesData[outcomeId] = {};\r\n outcomesData[outcomeId].outcome = saveData.outcome;\r\n outcomesData[outcomeId].details = saveData.details;\r\n outcomesData[outcomeId].history = saveData.history;\r\n outcomesData[outcomeId].sectionId = saveData.sectionId;\r\n outcomesData[outcomeId].outcomeOrder = saveData.outcomeOrder;\r\n outcomesData[outcomeId].status = saveData.status;\r\n outcomesData[outcomeId].carryOverReason = saveData.carryOverReason;\r\n\r\n return outcomeId;\r\n }\r\n async function updateOutcome(updateData) {\r\n if ($.session.planUpdate) {\r\n await planOutcomesAjax.updatePlanOutcome({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcomeId: updateData.outcomeId,\r\n outcome: updateData.outcome,\r\n details: updateData.details,\r\n history: updateData.history,\r\n sectionId: updateData.sectionId,\r\n outcomeOrder: updateData.outcomeOrder,\r\n status: updateData.status,\r\n carryOverReason: updateData.carryOverReason,\r\n });\r\n\r\n outcomesData[updateData.outcomeId].outcome = updateData.outcome;\r\n outcomesData[updateData.outcomeId].details = updateData.details;\r\n outcomesData[updateData.outcomeId].history = updateData.history;\r\n outcomesData[updateData.outcomeId].sectionId = updateData.sectionId;\r\n outcomesData[updateData.outcomeId].outcomeOrder = updateData.outcomeOrder;\r\n outcomesData[updateData.outcomeId].status = updateData.status;\r\n outcomesData[updateData.outcomeId].carryOverReason = updateData.carryOverReason;\r\n }\r\n }\r\n async function deleteOutcome(outcomeId) {\r\n await planOutcomesAjax.deletePlanOutcome({\r\n token: $.session.Token,\r\n outcomeId,\r\n });\r\n\r\n if (outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences).forEach(exp => {\r\n Object.values(exp.responsibilities).forEach(resp => {\r\n delete selectedVendors[resp.responsibilityIds];\r\n });\r\n });\r\n }\r\n\r\n if (responseIdCache[outcomeId]) {\r\n responseIdCache[outcomeId].forEach(respId => {\r\n delete selectedVendors[respId];\r\n });\r\n }\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Markup ---------\r\n function toggleAddNewOutcomePopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.newOutcomePopup .error');\r\n const doneBtn = document.querySelector('.newOutcomePopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddNewOutcomePopup(sectionId, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n // This is only for adding outcome from inside assessment\r\n let hasInitialErros;\r\n let outcomeText = '';\r\n let detailsText = '';\r\n let historyText = '';\r\n let status = '0';\r\n let carryOverReason = '';\r\n\r\n const newOutcomePopup = POPUP.build({\r\n header: 'Add Outcome',\r\n classNames: 'newOutcomePopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area *for display only!!!\r\n const assessmentAreaDropdown = dropdown.build({\r\n // dropdownId: 'assessmentAreaDropdown',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n });\r\n assessmentAreaDropdown.classList.add('disabled');\r\n\r\n // Status\r\n const statusDropdown = dropdown.build({\r\n // dropdownId: 'statusDropdown',\r\n label: 'Status',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n status = selectedOption.value;\r\n\r\n // if (status === '' || status === '%') {\r\n // statusDropdown.classList.add('error');\r\n // } else {\r\n // statusDropdown.classList.remove('error');\r\n // }\r\n\r\n // toggleAddNewOutcomePopupDoneBtn();\r\n },\r\n });\r\n // Carryover\r\n const carryoverInput = input.build({\r\n label: 'Carryover Reason',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.carryOverReason,\r\n forceCharLimit: true,\r\n });\r\n carryoverInput.classList.add('carryoverTextInput');\r\n carryoverInput.addEventListener('input', e => {\r\n carryOverReason = e.target.value;\r\n if (hasPreviousPlan && status === '1' && carryOverReason === '') {\r\n carryoverInput.classList.add('error');\r\n } else {\r\n carryoverInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // Outcome\r\n const outcomeTextInput = input.build({\r\n label: '*Outcome',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.description,\r\n forceCharLimit: true,\r\n });\r\n outcomeTextInput.classList.add('outcomeTextInput');\r\n outcomeTextInput.addEventListener('input', e => {\r\n outcomeText = e.target.value;\r\n if (outcomeText === '') {\r\n outcomeTextInput.classList.add('error');\r\n } else {\r\n outcomeTextInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // Details\r\n const detailsTextInput = input.build({\r\n label: '*Details To Know',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.details,\r\n forceCharLimit: true,\r\n });\r\n detailsTextInput.classList.add('detailsTextInput');\r\n detailsTextInput.addEventListener('input', e => {\r\n detailsText = e.target.value;\r\n\r\n if (detailsText === '') {\r\n detailsTextInput.classList.add('error');\r\n } else {\r\n detailsTextInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // History\r\n const historyTextInput = input.build({\r\n label: 'Important and Relevant History',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.history,\r\n forceCharLimit: true,\r\n });\r\n historyTextInput.classList.add('historyTextInput');\r\n historyTextInput.addEventListener('input', e => {\r\n historyText = e.target.value;\r\n\r\n // if (historyText === '') {\r\n // historyTextInput.classList.add('error');\r\n // } else {\r\n // historyTextInput.classList.remove('error');\r\n // }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (!planId) {\r\n planId = plan.getCurrentPlanId();\r\n }\r\n\r\n await insertOutcome(\r\n {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcome: outcomeText,\r\n details: detailsText,\r\n history: historyText,\r\n sectionId: sectionId,\r\n status: status,\r\n carryOverReason: carryOverReason,\r\n outcomeOrder: 0,\r\n },\r\n true,\r\n );\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n assessmentValidationCheck = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentValidationCheck);\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n\r\n if (validationCheck.complete === true) {\r\n ISPAlertDiv.style.display = 'none';\r\n } else {\r\n ISPAlertDiv.style.display = 'flex';\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(newOutcomePopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(newOutcomePopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (outcomeText === '') {\r\n hasInitialErros = true;\r\n outcomeTextInput.classList.add('error');\r\n }\r\n if (detailsText === '') {\r\n hasInitialErros = true;\r\n detailsTextInput.classList.add('error');\r\n }\r\n // if (historyText === '') {\r\n // hasInitialErros = true;\r\n // historyTextInput.classList.add('error');\r\n // }\r\n if (hasPreviousPlan && status === '1' && carryOverReason === '') {\r\n hasInitialErros = true;\r\n carryoverInput.classList.add('error');\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n newOutcomePopup.appendChild(assessmentAreaDropdown);\r\n newOutcomePopup.appendChild(statusDropdown);\r\n newOutcomePopup.appendChild(carryoverInput);\r\n newOutcomePopup.appendChild(outcomeTextInput);\r\n newOutcomePopup.appendChild(detailsTextInput);\r\n newOutcomePopup.appendChild(historyTextInput);\r\n newOutcomePopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionId);\r\n populateStatusDropdown(statusDropdown, status);\r\n\r\n POPUP.show(newOutcomePopup);\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* EXPERIENCES TABLE\r\n //*------------------------------------------------------\r\n async function insertOutcomeExperience(saveData, expTableWrap) {\r\n const newTableData = [];\r\n const outcomeId = saveData.outcomeId;\r\n const whatHappened = saveData.whatHappened;\r\n const howHappened = saveData.howHappened;\r\n const experienceOrder = `${saveData.experienceOrder + 1}`;\r\n\r\n //* Insert Experience\r\n //*---------------------------\r\n const experienceId = await planOutcomesAjax.insertPlanOutcomesExperience({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n experienceOrder: [experienceOrder],\r\n whatHappened: [whatHappened],\r\n howHappened: [howHappened],\r\n });\r\n saveData.experienceIds = experienceId;\r\n\r\n //* Insert Responsibilites\r\n //*---------------------------\r\n const respData = {\r\n token: $.session.Token,\r\n experienceId: experienceId,\r\n responsibleContact: [],\r\n responsibleProvider: [],\r\n whenHowOftenValue: [],\r\n whenHowOftenFrequency: [],\r\n whenHowOftenText: [],\r\n isSalesforceLocation: []\r\n };\r\n\r\n Object.values(saveData.responsibilities).forEach(resp => {\r\n if (resp.responsibleContact === '%') {\r\n respData.responsibleContact.push(0);\r\n } else {\r\n respData.responsibleContact.push(parseInt(resp.responsibleContact));\r\n }\r\n if (resp.responsibleProvider === '%') {\r\n respData.responsibleProvider.push(0);\r\n respData.isSalesforceLocation.push(false);\r\n } else {\r\n if ($.session.applicationName === 'Advisor') {\r\n resp.isSalesforceLocation = isSalesforceLocationTrue(resp.responsibleProvider);\r\n respData.isSalesforceLocation.push(resp.isSalesforceLocation);\r\n respData.responsibleProvider.push(resp.responsibleProvider);\r\n } else {\r\n respData.responsibleProvider.push(resp.responsibleProvider);\r\n respData.isSalesforceLocation.push(false);\r\n }\r\n }\r\n\r\n respData.whenHowOftenFrequency.push(parseInt(resp.whenHowOftenFrequency));\r\n respData.whenHowOftenValue.push(resp.whenHowOftenValue);\r\n respData.whenHowOftenText.push(resp.whenHowOftenText);\r\n });\r\n\r\n const respIds = await planOutcomesAjax.insertPlanOutcomeExperienceResponsibility(respData);\r\n respIds.forEach((id, index) => {\r\n saveData.responsibilities[index].responsibilityIds = id;\r\n\r\n const whoResponsible = getColTextForWhoResponsible(\r\n saveData.responsibilities[index].responsibleContact,\r\n saveData.responsibilities[index].responsibleProvider,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(\r\n saveData.responsibilities[index].whenHowOftenFrequency,\r\n saveData.responsibilities[index].whenHowOftenValue,\r\n saveData.responsibilities[index].whenHowOftenText,\r\n );\r\n\r\n const vendorID =\r\n saveData.responsibilities[index].responsibleContact === '%'\r\n ? saveData.responsibilities[index].responsibleProvider\r\n : saveData.responsibilities[index].responsibleContact;\r\n const respId = saveData.responsibilities[index].responsibilityIds;\r\n selectedVendors[respId] = vendorID;\r\n\r\n if (index === 0) {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n });\r\n\r\n //* Cache responsIDs\r\n responseIdCache[outcomeId] = [...respIds];\r\n\r\n //* New Table\r\n //*---------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${experienceId}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n callback: () => showExperiencesPopup({ ...saveData }, false),\r\n };\r\n //* Build Table\r\n const experiencesTable = table.build(tableOptions);\r\n experiencesTable.classList.add(`experiencesTable`);\r\n experiencesTable.classList.add('sortableTable');\r\n //* Populate Table\r\n table.populate(experiencesTable, newTableData, isSortable);\r\n\r\n const experiencesDummyTable = document.querySelector(`#experiencesTableDummy${outcomeId}`);\r\n\r\n // Make tables sortable\r\n Sortable.create(experiencesDummyTable, {\r\n handle: '.experiencesTable', // Set the handle to the table class\r\n draggable: '.experiencesTable', // Set the draggable elements to the table class\r\n onEnd: async sortData => {\r\n const experienceId = sortData.item.id.replace('experiencesTable', '');\r\n await planOutcomesAjax.updatePlanOutcomesExperienceOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n experienceId: parseInt(experienceId),\r\n newPos: parseInt(sortData.newDraggableIndex),\r\n oldPos: parseInt(sortData.oldDraggableIndex),\r\n });\r\n },\r\n });\r\n\r\n //* Append Table\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n const addExpTableBtn = expTableWrap.querySelector('.btn');\r\n expTableWrap.insertBefore(experiencesTable, addExpTableBtn);\r\n }\r\n async function updateOutcomeExperience(updateData, respPartysToDelete) {\r\n const newTableData = [];\r\n const outcomeId = updateData.outcomeId;\r\n const experienceIds = updateData.experienceIds;\r\n const experienceOrder = updateData.experienceOrder;\r\n const howHappened = updateData.howHappened;\r\n const whatHappened = updateData.whatHappened;\r\n\r\n //* Update Experience\r\n //*--------------------------------------------\r\n await planOutcomesAjax.updatePlanOutcomesExperience({\r\n token: $.session.Token,\r\n outcomeId,\r\n experienceIds: [experienceIds],\r\n experienceOrder: [experienceOrder],\r\n howHappened: [howHappened],\r\n whatHappened: [whatHappened],\r\n });\r\n\r\n //* Update/Insert/Delete Responsibilites\r\n //*--------------------------------------------\r\n const respData = {\r\n responsibilityIds: [],\r\n responsibleContact: [],\r\n responsibleProvider: [],\r\n whenHowOftenValue: [],\r\n whenHowOftenFrequency: [],\r\n whenHowOftenText: [],\r\n isSalesforceLocation: []\r\n };\r\n\r\n Object.entries(updateData.responsibilities).map(async ([key, resp]) => {\r\n const isRespPartyForDelete = respPartysToDelete.includes(key);\r\n if (isRespPartyForDelete) {\r\n delete updateData.responsibilities[key];\r\n\r\n if (resp.responsibilityIds) {\r\n await planOutcomesAjax.deletePlanOutcomeExperienceResponsibility({\r\n token: $.session.Token,\r\n responsibilityId: parseInt(resp.responsibilityIds),\r\n });\r\n\r\n const respId = resp.responsibilityIds;\r\n delete selectedVendors[respId];\r\n }\r\n }\r\n });\r\n Object.entries(updateData.responsibilities).map(async ([key, resp], index) => {\r\n const responsibleContact =\r\n resp.responsibleContact === '%' ? 0 : parseInt(resp.responsibleContact);\r\n const isSalesforceLocation = isSalesforceLocationTrue(resp.responsibleProvider);\r\n const responsibleProvider = resp.responsibleProvider === '%' ? 0 : resp.responsibleProvider;\r\n const whenHowOftenFrequency = parseInt(resp.whenHowOftenFrequency);\r\n const whenHowOftenValue = resp.whenHowOftenValue;\r\n const whenHowOftenText = resp.whenHowOftenText;\r\n\r\n //* push to new table data\r\n const whoResponsible = getColTextForWhoResponsible(\r\n `${responsibleContact}`,\r\n `${responsibleProvider}`,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(\r\n `${whenHowOftenFrequency}`,\r\n whenHowOftenValue,\r\n whenHowOftenText,\r\n );\r\n\r\n const vendorID =\r\n resp.responsibleContact === '%' ? resp.responsibleProvider : resp.responsibleContact;\r\n const respId = resp.responsibilityIds;\r\n selectedVendors[respId] = vendorID;\r\n\r\n if (index === 0) {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n newTableData.push({\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n //* end push\r\n\r\n // set respData *retrieve data\r\n if (resp.responsibilityIds) {\r\n const responsibilityIds = parseInt(resp.responsibilityIds);\r\n respData.responsibilityIds.push(responsibilityIds);\r\n respData.responsibleContact.push(responsibleContact);\r\n respData.responsibleProvider.push(responsibleProvider);\r\n respData.whenHowOftenFrequency.push(whenHowOftenFrequency);\r\n respData.whenHowOftenValue.push(whenHowOftenValue);\r\n respData.whenHowOftenText.push(whenHowOftenText);\r\n respData.isSalesforceLocation.push(isSalesforceLocation);\r\n } else {\r\n const respIds = await planOutcomesAjax.insertPlanOutcomeExperienceResponsibility({\r\n token: $.session.Token,\r\n experienceId: experienceIds,\r\n responsibleContact: [responsibleContact],\r\n responsibleProvider: [responsibleProvider],\r\n whenHowOftenValue: [whenHowOftenValue],\r\n whenHowOftenFrequency: [whenHowOftenFrequency],\r\n whenHowOftenText: [whenHowOftenText],\r\n isSalesforceLocation: [isSalesforceLocation]\r\n });\r\n updateData.responsibilities[key].responsibilityIds = respIds[0];\r\n }\r\n });\r\n\r\n //* Cache responsIDs\r\n responseIdCache[outcomeId] = [...respData.responsibilityIds];\r\n\r\n await planOutcomesAjax.updatePlanOutcomeExperienceResponsibility(respData);\r\n\r\n //* Build New Table\r\n //*---------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${experienceIds}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n callback: () => showExperiencesPopup({ ...updateData }, false),\r\n };\r\n //* Build Table\r\n const newExperiencesTable = table.build(tableOptions);\r\n newExperiencesTable.classList.add(`experiencesTable`);\r\n newExperiencesTable.classList.add('sortableTable');\r\n //* Populate Table\r\n table.populate(newExperiencesTable, newTableData, isSortable);\r\n //* Replace Old Table w/New Table\r\n const oldExperiencesTable = document.getElementById(`experiencesTable${experienceIds}`);\r\n oldExperiencesTable.parentNode.replaceChild(newExperiencesTable, oldExperiencesTable);\r\n }\r\n async function deleteOutcomeExperience(outcomeId, experienceId) {\r\n await planOutcomesAjax.deletePlanOutcomeExperience({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n experienceId: experienceId,\r\n });\r\n\r\n if (outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences).forEach(exp => {\r\n Object.values(exp.responsibilities).forEach(resp => {\r\n delete selectedVendors[resp.responsibilityIds];\r\n });\r\n });\r\n }\r\n\r\n const outcomeDiv = document.querySelector(`.outcome${outcomeId}`);\r\n const expTableWrap = outcomeDiv.querySelector(`#experiencesTableDummy${outcomeId}`);\r\n const expTable = expTableWrap.querySelector(`#experiencesTable${experienceId}`);\r\n\r\n expTableWrap.removeChild(expTable);\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`experienceAlert${outcomeId}`);\r\n\r\n // retrieves new data from database\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes alert for button depending on validationCheck\r\n planValidation.experiencesValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Helpers --------\r\n function getColTextForWhenHowOften(freq, value, text) {\r\n let whenHowOften = '';\r\n if (freq !== '3') {\r\n const frequency = getWhenHowOFtenFrequencyById(freq);\r\n whenHowOften = `${value} ${frequency}`;\r\n } else {\r\n whenHowOften = `${value} ${text}`;\r\n }\r\n\r\n return whenHowOften;\r\n }\r\n function getColTextForWhoResponsible(responsibleContact, responsibleProvider) {\r\n if (responsibleProvider !== '%' && responsibleProvider !== '0') {\r\n const filteredVendor = dropdownData.serviceVendors.filter(\r\n dd => dd.vendorId === responsibleProvider,\r\n );\r\n return filteredVendor.length > 0 ? filteredVendor[0].vendorName : '';\r\n } else {\r\n if (dropdownData.relationships) {\r\n const filteredRelationship = dropdownData.relationships.filter(\r\n dd => dd.contactId === responsibleContact,\r\n );\r\n return filteredRelationship.length > 0\r\n ? `${filteredRelationship[0].lastName}, ${filteredRelationship[0].firstName}`\r\n : '';\r\n }\r\n\r\n return '';\r\n }\r\n }\r\n //-- Markup ---------\r\n function toggleExperiencesPopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.experiencesPopup .error');\r\n const doneBtn = document.querySelector('.experiencesPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showExperiencesPopup(data, isNew) {\r\n let hasInitialErros;\r\n const saveUpdateData = {\r\n outcomeId: data.outcomeId,\r\n experienceOrder: data.experienceOrder,\r\n howHappened: data.howHappened ? data.howHappened : '',\r\n whatHappened: data.whatHappened ? data.whatHappened : '',\r\n responsibilities: {},\r\n };\r\n const respPartysToDelete = [];\r\n\r\n const experiencesPopup = POPUP.build({\r\n header: isNew ? 'Add Experience' : 'Edit Experience',\r\n classNames: 'experiencesPopup',\r\n hideX: true,\r\n });\r\n\r\n if (!isNew) {\r\n saveUpdateData.experienceIds = data.experienceIds;\r\n saveUpdateData.responsibilities = { ...data.responsibilities };\r\n experiencesPopup.classList.add('update');\r\n }\r\n\r\n //*--------------------------------\r\n //* MAIN\r\n //*--------------------------------\r\n const mainWrap = document.createElement('div');\r\n mainWrap.classList.add('experiencesPopup__main');\r\n // What Needs To Happen\r\n const whatHappenedInput = input.build({\r\n label: '*What needs to happen',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatHappened,\r\n charLimit: charLimits.whatNeedsToHappen,\r\n forceCharLimit: true,\r\n });\r\n whatHappenedInput.classList.add('whatHappenedInput');\r\n whatHappenedInput.addEventListener('input', e => {\r\n saveUpdateData.whatHappened = e.target.value;\r\n if (saveUpdateData.whatHappened === '') {\r\n whatHappenedInput.classList.add('error');\r\n } else {\r\n whatHappenedInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n // How Should It Happen\r\n const howHappenedInput = input.build({\r\n label: '*How should it happen?',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howHappened,\r\n charLimit: charLimits.howItShouldHappen,\r\n forceCharLimit: true,\r\n });\r\n howHappenedInput.classList.add('howHappenedInput');\r\n howHappenedInput.addEventListener('input', e => {\r\n saveUpdateData.howHappened = e.target.value;\r\n if (saveUpdateData.howHappened === '') {\r\n howHappenedInput.classList.add('error');\r\n } else {\r\n howHappenedInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n\r\n //*--------------------------------\r\n //* RESPONSIBLE PARTY\r\n //*--------------------------------\r\n function buildResponsiblePartyInputs(saveUpdateDataRef, dataRefKey) {\r\n const inputsWrap = document.createElement('div');\r\n\r\n if (saveUpdateDataRef.responsibilityIds) {\r\n inputsWrap.id = `resp${saveUpdateDataRef.responsibilityIds}`;\r\n }\r\n\r\n //* BUILD INPUTS\r\n //*--------------------------------\r\n // Who Is Responsible\r\n const whoReponsibleWrap = document.createElement('div');\r\n const wrapHeading = document.createElement('div');\r\n whoReponsibleWrap.classList.add('whoResponsibleWrap');\r\n wrapHeading.innerHTML =\r\n '

    *Who Is Responsible?

    Choose either a Responsible Person or Provider.

    ';\r\n\r\n const responsiblePersonDropdown = dropdown.build({\r\n dropdownId: 'responsiblePersonDropdown',\r\n label: 'Responsible Person',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateDataRef.responsibleContact = selectedOption.value;\r\n\r\n if (saveUpdateDataRef.responsibleContact !== '%') {\r\n whoReponsibleWrap.classList.remove('error');\r\n responsiblePersonDropdown.classList.remove('error');\r\n // if not empty clear error and value from other dropdown\r\n responsibleProviderDropdown.classList.remove('error');\r\n const respDropdown = responsibleProviderDropdown.querySelector('select');\r\n respDropdown.value = '%';\r\n saveUpdateDataRef.responsibleProvider = '%';\r\n } else {\r\n // if emtpy check if other dropdown is emtpy\r\n if (saveUpdateDataRef.responsibleProvider === '%') {\r\n responsiblePersonDropdown.classList.add('error');\r\n responsibleProviderDropdown.classList.add('error');\r\n whoReponsibleWrap.classList.add('error');\r\n }\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n const responsibleProviderDropdown = dropdown.build({\r\n dropdownId: 'responsibleProviderDropdown',\r\n label: 'Responsible Provider',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateDataRef.responsibleProvider = selectedOption.value;\r\n\r\n if (saveUpdateDataRef.responsibleProvider !== '%') {\r\n whoReponsibleWrap.classList.remove('error');\r\n responsibleProviderDropdown.classList.remove('error');\r\n // if not empty clear error and value from other dropdown\r\n responsiblePersonDropdown.classList.remove('error');\r\n const respDropdown = responsiblePersonDropdown.querySelector('select');\r\n respDropdown.value = '%';\r\n saveUpdateDataRef.responsibleContact = '%';\r\n } else {\r\n // if emtpy check if other dropdown is emtpy\r\n if (saveUpdateDataRef.responsibleContact === '%') {\r\n responsibleProviderDropdown.classList.add('error');\r\n responsiblePersonDropdown.classList.add('error');\r\n whoReponsibleWrap.classList.add('error');\r\n }\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n whoReponsibleWrap.appendChild(wrapHeading);\r\n whoReponsibleWrap.appendChild(responsiblePersonDropdown);\r\n whoReponsibleWrap.appendChild(responsibleProviderDropdown);\r\n // When/How OFten\r\n const whenHowOftenValueInput = input.build({\r\n type: 'textarea',\r\n label: '*When/How Often',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateDataRef.whenHowOftenValue,\r\n charLimit: charLimits.whenHowOften,\r\n forceCharLimit: true,\r\n });\r\n whenHowOftenValueInput.classList.add('whenHowOftenValueInput');\r\n whenHowOftenValueInput.addEventListener('input', e => {\r\n saveUpdateDataRef.whenHowOftenValue = e.target.value;\r\n\r\n if (saveUpdateDataRef.whenHowOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n } else {\r\n whenHowOftenValueInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n // When/How Often Freq\r\n const whenHowOftenFrequencyDropdown = dropdown.build({\r\n dropdownId: 'whenHowOFtenFrequencyExperiences',\r\n label: '*When/How Often Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateDataRef.whenHowOftenFrequency = selectedOption.value;\r\n\r\n const whenHowOftenTextInputField =\r\n whenHowOftenTextInput.querySelector('.input-field__input');\r\n\r\n if (\r\n saveUpdateDataRef.whenHowOftenFrequency === '' ||\r\n saveUpdateDataRef.whenHowOftenFrequency === '%'\r\n ) {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n } else {\r\n whenHowOftenFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '3') {\r\n whenHowOftenTextInput.classList.remove('disabled');\r\n whenHowOftenTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateDataRef.whenHowOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateDataRef.whenHowOftenText = '';\r\n const textInput = whenHowOftenTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n // When/How Often Other\r\n const whenHowOftenTextInput = input.build({\r\n label: '*When/How Often Other',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateDataRef.whenHowOftenText,\r\n charLimit: charLimits.whenHowOftenOther,\r\n forceCharLimit: true,\r\n });\r\n whenHowOftenTextInput.classList.add('whenHowOftenTextInput');\r\n whenHowOftenTextInput.addEventListener('input', e => {\r\n saveUpdateDataRef.whenHowOftenText = e.target.value;\r\n\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '3') {\r\n if (saveUpdateDataRef.whenHowOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n if (saveUpdateDataRef.whenHowOftenFrequency !== '3') {\r\n const whenHowOftenTextInputField =\r\n whenHowOftenTextInput.querySelector('.input-field__input');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n\r\n //* DELETE RESP PARTY\r\n //*--------------------------------\r\n const deleteBtn = button.build({\r\n text: 'Delete Above Party',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n if (isNew) {\r\n delete saveUpdateData.responsibilities[dataRefKey];\r\n } else {\r\n respPartysToDelete.push(dataRefKey);\r\n }\r\n\r\n respPartyWrap.removeChild(inputsWrap);\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n\r\n //* INIT REQUIRED FIELDS\r\n //*--------------------------------\r\n if (\r\n saveUpdateDataRef.responsibleContact === '%' &&\r\n saveUpdateDataRef.responsibleProvider === '%'\r\n ) {\r\n whoReponsibleWrap.classList.add('error');\r\n responsiblePersonDropdown.classList.add('error');\r\n responsibleProviderDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateDataRef.whenHowOftenValue === '') {\r\n hasInitialErros = true;\r\n whenHowOftenValueInput.classList.add('error');\r\n }\r\n if (\r\n saveUpdateDataRef.whenHowOftenFrequency === '' ||\r\n saveUpdateDataRef.whenHowOftenFrequency === '%'\r\n ) {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '3') {\r\n if (saveUpdateDataRef.whenHowOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n\r\n populateExperiencesHowOftenDropdown(\r\n whenHowOftenFrequencyDropdown,\r\n saveUpdateDataRef.whenHowOftenFrequency,\r\n );\r\n populateResponsibleProviderDropdown(\r\n responsibleProviderDropdown,\r\n saveUpdateDataRef.responsibleProvider,\r\n );\r\n planData.populateRelationshipDropdown(\r\n responsiblePersonDropdown,\r\n saveUpdateDataRef.responsibleContact,\r\n );\r\n\r\n //* ASSEMBLE\r\n //*--------------------------------\r\n inputsWrap.appendChild(whoReponsibleWrap);\r\n inputsWrap.appendChild(whenHowOftenValueInput);\r\n inputsWrap.appendChild(whenHowOftenFrequencyDropdown);\r\n inputsWrap.appendChild(whenHowOftenTextInput);\r\n inputsWrap.appendChild(deleteBtn);\r\n\r\n return inputsWrap;\r\n }\r\n\r\n // initial load\r\n const respPartyWrap = document.createElement('div');\r\n respPartyWrap.classList.add('experiencesPopup__respParty');\r\n if (!isNew) {\r\n // loop out and build them\r\n Object.keys(saveUpdateData.responsibilities).forEach(key => {\r\n // build & append it\r\n const respParty = buildResponsiblePartyInputs(saveUpdateData.responsibilities[key], key);\r\n respPartyWrap.appendChild(respParty);\r\n });\r\n } else {\r\n // setup default resp party\r\n // init data\r\n saveUpdateData.responsibilities[0] = {\r\n responsibleContact: '%',\r\n responsibleProvider: '%',\r\n whenHowOftenValue: '',\r\n whenHowOftenFrequency: '',\r\n whenHowOftenText: '',\r\n };\r\n // build & append it\r\n const respParty = buildResponsiblePartyInputs(saveUpdateData.responsibilities[0], 0);\r\n respPartyWrap.appendChild(respParty);\r\n }\r\n\r\n //*--------------------------------\r\n //* ACTION BUTTONS\r\n //*--------------------------------\r\n const addRespPartyBtn = button.build({\r\n text: 'Add Responsible Party',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'addRespPartyBtn',\r\n callback: () => {\r\n // init data\r\n const respLength = Object.keys(saveUpdateData.responsibilities).length;\r\n saveUpdateData.responsibilities[respLength] = {\r\n responsibleContact: '%',\r\n responsibleProvider: '%',\r\n whenHowOftenValue: '',\r\n whenHowOftenFrequency: '',\r\n whenHowOftenText: '',\r\n };\r\n // build & append it\r\n const respParty = buildResponsiblePartyInputs(\r\n saveUpdateData.responsibilities[respLength],\r\n respLength,\r\n );\r\n respPartyWrap.appendChild(respParty);\r\n toggleExperiencesPopupDoneBtn();\r\n },\r\n });\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save Experience' : 'Update Experience',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n const outcome = document.querySelector(`.outcome${saveUpdateData.outcomeId}`);\r\n const expTableWrap = document.querySelector(\r\n `#experiencesTableDummy${saveUpdateData.outcomeId}`,\r\n );\r\n const expTables = [...expTableWrap.querySelectorAll('.table')];\r\n saveUpdateData.experienceOrder = expTables.length;\r\n await insertOutcomeExperience({ ...saveUpdateData }, expTableWrap);\r\n } else {\r\n await updateOutcomeExperience({ ...saveUpdateData }, respPartysToDelete);\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(experiencesPopup);\r\n\r\n // grabs the experience alert for this specific outcome\r\n const alertDiv = document.getElementById(`experienceAlert${saveUpdateData.outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.experiencesValidationCheck(\r\n validationCheck,\r\n saveUpdateData.outcomeId,\r\n alertDiv,\r\n );\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(experiencesPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete Experience',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this Experience?';\r\n ISP.showDeleteWarning(experiencesPopup, message, () => {\r\n deleteOutcomeExperience(saveUpdateData.outcomeId, saveUpdateData.experienceIds);\r\n });\r\n },\r\n });\r\n // wrap done, cancel & delete btns\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(addRespPartyBtn);\r\n const mainBtns = document.createElement('div');\r\n mainBtns.classList.add('mainBtns');\r\n mainBtns.appendChild(doneBtn);\r\n if (!isNew) {\r\n mainBtns.appendChild(deleteBtn);\r\n }\r\n mainBtns.appendChild(cancelBtn);\r\n btnWrap.appendChild(mainBtns);\r\n\r\n //*--------------------------------\r\n //* INIT REQUIRED FIELDS\r\n //*--------------------------------\r\n if (saveUpdateData.whatHappened === '') {\r\n hasInitialErros = true;\r\n whatHappenedInput.classList.add('error');\r\n }\r\n if (saveUpdateData.howHappened === '') {\r\n hasInitialErros = true;\r\n howHappenedInput.classList.add('error');\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n\r\n //*--------------------------------\r\n //* ASSEMBLE\r\n //*--------------------------------\r\n mainWrap.appendChild(whatHappenedInput);\r\n mainWrap.appendChild(howHappenedInput);\r\n\r\n experiencesPopup.appendChild(mainWrap);\r\n experiencesPopup.appendChild(respPartyWrap);\r\n experiencesPopup.appendChild(btnWrap);\r\n\r\n if (isReadOnly) {\r\n whatHappenedInput.classList.add('disabled');\r\n howHappenedInput.classList.add('disabled');\r\n whoReponsibleInput.classList.add('disabled');\r\n whenHowOftenValueInput.classList.add('disabled');\r\n whenHowOftenFrequencyDropdown.classList.add('disabled');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n POPUP.show(experiencesPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addExperienceTable(outcomeId) {\r\n showExperiencesPopup({ outcomeId }, true);\r\n }\r\n function buildExperiencesTables(outcomeId) {\r\n const experiencesDiv = document.createElement('div');\r\n experiencesDiv.classList.add('experiencesTablesWrap');\r\n\r\n const addExpTableBtn = button.build({\r\n text: 'Add Experience',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addExperienceTable(outcomeId),\r\n });\r\n if (isReadOnly) {\r\n addExpTableBtn.classList.add('disabled');\r\n }\r\n\r\n // adding dummy top table so col headings always show\r\n experiencesDummyTable = table.build({\r\n tableId: `experiencesTableDummy${outcomeId}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: isSortable,\r\n });\r\n experiencesDummyTable.classList.add(`experiencesTable`);\r\n experiencesDiv.appendChild(experiencesDummyTable);\r\n // end dummy table\r\n\r\n if (outcomesData[outcomeId] && outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences)\r\n .sort((a, b) => {\r\n return a.experienceOrder < b.experienceOrder\r\n ? -1\r\n : a.experienceOrder > b.experienceOrder\r\n ? 1\r\n : 0;\r\n })\r\n .map((td, index) => {\r\n const tableData = [];\r\n const whatHappened = td.whatHappened;\r\n const howHappened = td.howHappened;\r\n const respObj = {};\r\n\r\n // checking for responsibilities\r\n Object.values(td.responsibilities).forEach((resp, index) => {\r\n const respId = resp.responsibilityIds;\r\n const responsibleContact = resp.responsibleContact;\r\n const responsibleProvider = resp.responsibleProvider;\r\n const whenHowOftenValue = resp.whenHowOftenValue;\r\n const whenHowOftenFrequency = resp.whenHowOftenFrequency;\r\n const whenHowOftenText = resp.whenHowOftenText;\r\n\r\n respObj[index] = {\r\n responsibilityIds: respId,\r\n responsibleContact: responsibleContact,\r\n responsibleProvider: responsibleProvider,\r\n whenHowOftenValue: whenHowOftenValue,\r\n whenHowOftenFrequency: whenHowOftenFrequency,\r\n whenHowOftenText: whenHowOftenText,\r\n };\r\n\r\n const vendorID = responsibleContact === '%' ? responsibleProvider : responsibleContact;\r\n selectedVendors[respId] = vendorID;\r\n\r\n const whoResponsible = getColTextForWhoResponsible(\r\n responsibleContact,\r\n responsibleProvider,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(\r\n whenHowOftenFrequency,\r\n whenHowOftenValue,\r\n whenHowOftenText,\r\n );\r\n\r\n if (index === 0) {\r\n tableData.push({\r\n // id: `resp${respId}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n tableData.push({\r\n // id: `resp${respId}`,\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n });\r\n\r\n //*--------------------------------\r\n //* Table\r\n //*--------------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${td.experienceIds}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n '
    ',\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n callback: () =>\r\n showExperiencesPopup(\r\n {\r\n outcomeId: td.outcomeId,\r\n experienceIds: td.experienceIds,\r\n experienceOrder: td.experienceOrder,\r\n whatHappened: whatHappened,\r\n howHappened: howHappened,\r\n responsibilities: {\r\n ...respObj,\r\n },\r\n },\r\n false,\r\n ),\r\n };\r\n\r\n if (respObj[0]) {\r\n if (respObj[0].responsibleProvider) {\r\n validationCheck.selectedProviders.push(respObj[0].responsibleProvider);\r\n }\r\n }\r\n\r\n const experiencesTable = table.build(tableOptions);\r\n experiencesTable.classList.add('experiencesTable');\r\n experiencesTable.classList.add('sortableTable');\r\n\r\n // Populate Table\r\n table.populate(experiencesTable, tableData, isSortable);\r\n\r\n // Append experiencesTable to experiencesDummyTable\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n\r\n // Make tables sortable\r\n Sortable.create(experiencesDummyTable, {\r\n handle: '.experiencesTable', // Set the handle to the table class\r\n draggable: '.experiencesTable', // Set the draggable elements to the table class\r\n onEnd: async sortData => {\r\n const experienceId = sortData.item.id.replace('experiencesTable', '');\r\n await planOutcomesAjax.updatePlanOutcomesExperienceOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n experienceId: parseInt(experienceId),\r\n newPos: parseInt(sortData.newDraggableIndex) + 1,\r\n oldPos: parseInt(sortData.oldDraggableIndex) + 1,\r\n });\r\n },\r\n });\r\n\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n });\r\n }\r\n\r\n // create wrapper div for button and alert\r\n const experienceBtnAlertDiv = document.createElement('div');\r\n experienceBtnAlertDiv.classList.add('btnAlertContainer');\r\n\r\n // create div for the alert\r\n const experienceAlertDiv = document.createElement('div');\r\n experienceAlertDiv.innerHTML = `${icons.error}`;\r\n experienceAlertDiv.id = `experienceAlert${outcomeId}`;\r\n experienceAlertDiv.classList.add(`experiencesAlert`);\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one experience must be entered for each outcome',\r\n experienceAlertDiv,\r\n );\r\n\r\n experienceBtnAlertDiv.appendChild(addExpTableBtn);\r\n experienceBtnAlertDiv.appendChild(experienceAlertDiv);\r\n experiencesDiv.appendChild(experienceBtnAlertDiv);\r\n\r\n // checks if alert should be visible\r\n planValidation.experiencesValidationCheck(validationCheck, outcomeId, experienceAlertDiv);\r\n\r\n // checks if providers are in paid supports providers\r\n planValidation.checkExperienceProviders(validationCheck);\r\n\r\n return experiencesDiv;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* REVIEWS TABLE\r\n //*------------------------------------------------------\r\n async function insertOutcomeReview(saveData) {\r\n const outcomeId = saveData.outcomeId;\r\n const whatWillHappen = saveData.whatWillHappen;\r\n const whenToCheckIn = saveData.whenToCheckIn;\r\n const whoReview = saveData.whoReview;\r\n const reviewOrder = `${saveData.reviewOrder}`;\r\n // const contactId = parseInt(saveData.contactId);\r\n const contactId = saveData.contactId;\r\n\r\n const reviewId = await planOutcomesAjax.insertPlanOutcomesReview({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n whatWillHappen: [whatWillHappen],\r\n whenToCheckIn: [whenToCheckIn],\r\n whoReview: [whoReview],\r\n reviewOrder: [reviewOrder],\r\n contactId: [contactId],\r\n });\r\n\r\n const tableID = `reviewsTable${outcomeId}`;\r\n const rowId = `reviews${reviewId}`;\r\n\r\n table.addRows(\r\n tableID,\r\n [\r\n {\r\n id: rowId,\r\n values: [whatWillHappen, whoReview, whenToCheckIn],\r\n onClick: () => {\r\n showReviewsPopup(\r\n {\r\n whatWillHappen,\r\n whenToCheckIn,\r\n whoReview,\r\n reviewOrder,\r\n reviewIds: reviewId,\r\n outcomeId,\r\n contactId,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n async function updateOutcomeReview(updateData) {\r\n const outcomeId = updateData.outcomeId;\r\n const reviewIds = updateData.reviewIds;\r\n const whatWillHappen = updateData.whatWillHappen;\r\n const whenToCheckIn = updateData.whenToCheckIn;\r\n const whoReview = updateData.whoReview;\r\n //const reviewOrder = updateData.reviewOrder;\r\n const contactId = updateData.contactId;\r\n\r\n await planOutcomesAjax.updatePlanOutcomesReview({\r\n token: $.session.Token,\r\n outcomeId,\r\n reviewIds: [reviewIds],\r\n whatWillHappen: [whatWillHappen],\r\n whenToCheckIn: [whenToCheckIn],\r\n whoReview: [whoReview],\r\n contactId: [contactId],\r\n // reviewOrder: [reviewOrder],\r\n });\r\n\r\n const rowId = `reviews${reviewIds}`;\r\n\r\n table.updateRows(\r\n `reviewsTable${outcomeId}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [whatWillHappen, whoReview, whenToCheckIn],\r\n onClick: () => {\r\n showReviewsPopup(\r\n {\r\n outcomeId,\r\n reviewIds,\r\n whatWillHappen,\r\n whenToCheckIn,\r\n whoReview,\r\n contactId,\r\n //reviewOrder,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n async function deleteOutcomeReview(outcomeId, reviewId) {\r\n await planOutcomesAjax.deletePlanOutcomeReview({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n reviewId: reviewId,\r\n });\r\n\r\n table.deleteRow(`reviews${reviewId}`);\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Markup ---------\r\n function toggleReviewsPopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.reviewsPopup .error');\r\n const doneBtn = document.querySelector('.reviewsPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n }\r\n }\r\n function showReviewsPopup(popupData, isNew) {\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n outcomeId: popupData.outcomeId,\r\n whatWillHappen: popupData.whatWillHappen ? popupData.whatWillHappen : '',\r\n whenToCheckIn: popupData.whenToCheckIn ? popupData.whenToCheckIn : '',\r\n whoReview: popupData.whoReview ? popupData.whoReview : '',\r\n reviewOrder: popupData.reviewOrder ? popupData.reviewOrder : '',\r\n contactId: popupData.contactId ? popupData.contactId : '',\r\n };\r\n\r\n if (!isNew) {\r\n saveUpdateData.reviewIds = popupData.reviewIds;\r\n }\r\n\r\n const reviewsPopup = POPUP.build({\r\n header: isNew ? 'Add Review' : 'Edit Review',\r\n classNames: 'reviewsPopup',\r\n hideX: true,\r\n });\r\n\r\n // What Will Happen\r\n const whatWillHappenInput = input.build({\r\n label: `*What will progress look like?`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatWillHappen,\r\n charLimit: charLimits.whatWillHappen,\r\n forceCharLimit: true,\r\n });\r\n whatWillHappenInput.classList.add('whatWillHappen');\r\n whatWillHappenInput.addEventListener('input', e => {\r\n saveUpdateData.whatWillHappen = e.target.value;\r\n\r\n if (saveUpdateData.whatWillHappen === '') {\r\n whatWillHappenInput.classList.add('error');\r\n } else {\r\n whatWillHappenInput.classList.remove('error');\r\n }\r\n\r\n toggleReviewsPopupDoneBtn();\r\n });\r\n // Who Review\r\n const whoReviewDropdown = dropdown.build({\r\n dropdownId: 'whoReviewDropdown',\r\n id: 'whoReviewDropdown',\r\n label: '*Who?',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.contactId = selectedOption.value;\r\n saveUpdateData.whoReview = selectedOption.text;\r\n\r\n const isCaseManager = getWhoTypeById(saveUpdateData.contactId);\r\n //const whenToCheckInInputField = whenToCheckInInput.querySelector('.input-field__input');\r\n // if (isCaseManager) {\r\n // whenToCheckInInputField.value = 'Monthly';\r\n // saveUpdateData.whenToCheckIn = 'Monthly';\r\n // } else {\r\n // whenToCheckInInputField.value = '';\r\n // saveUpdateData.whenToCheckIn = '';\r\n // }\r\n\r\n if (saveUpdateData.whoReview === '' || saveUpdateData.whoReview === '%') {\r\n whoReviewDropdown.classList.add('error');\r\n } else {\r\n whoReviewDropdown.classList.remove('error');\r\n }\r\n\r\n toggleReviewsPopupDoneBtn();\r\n },\r\n });\r\n // When To Check In\r\n const whenToCheckinDropdown = dropdown.build({\r\n label: '*When To Check In?',\r\n type: 'text',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n\r\n saveUpdateData.whenToCheckIn = selectedOption.text;\r\n\r\n if (saveUpdateData.whenToCheckIn === '' || saveUpdateData.whenToCheckIn === '%') {\r\n whenToCheckinDropdown.classList.add('error');\r\n } else {\r\n whenToCheckinDropdown.classList.remove('error');\r\n }\r\n\r\n toggleReviewsPopupDoneBtn();\r\n }\r\n });\r\n // whenToCheckInInput.classList.add('disabled');\r\n\r\n // whenToCheckinDropdown\r\n function populatewhenToCheckinDropdown(whenToCheckinDropdown, whenToCheckIn) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Weekly', value: 'Weekly' },\r\n { text: 'Monthly', value: 'Monthly' },\r\n { text: 'Quarterly', value: 'Quarterly' },\r\n { text: 'Semi-Monthly', value: 'Semi-Monthly' },\r\n { text: 'Bi-Monthly', value: 'Bi-Monthly' },\r\n { text: 'N/A', value: 'N/A' },\r\n ];\r\n dropdown.populate(whenToCheckinDropdown, dropdownData, whenToCheckIn);\r\n }\r\n\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n if (isNew) {\r\n const tableId = `reviewsTable${saveUpdateData.outcomeId}`;\r\n const rowOrder = table.getRowCount(tableId) + 1;\r\n saveUpdateData.reviewOrder = rowOrder;\r\n insertOutcomeReview(saveUpdateData);\r\n } else {\r\n updateOutcomeReview(saveUpdateData);\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n POPUP.hide(reviewsPopup);\r\n\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`reviewsAlert${saveUpdateData.outcomeId}`);\r\n\r\n // checks for missing data\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes button alert depending on validationCheck\r\n planValidation.reviewsValidationCheck(validationCheck, saveUpdateData.outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(reviewsPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n const message = 'Do you want to delete this Review?';\r\n ISP.showDeleteWarning(reviewsPopup, message, () => {\r\n deleteOutcomeReview(saveUpdateData.outcomeId, saveUpdateData.reviewIds);\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.whatWillHappen === '') {\r\n whatWillHappenInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whoReview === '' || saveUpdateData.whoReview === '%') {\r\n whoReviewDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whenToCheckIn === '' || saveUpdateData.whenToCheckIn === '%') {\r\n whenToCheckinDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n whatWillHappenInput.classList.add('disabled');\r\n whoReviewDropdown.classList.add('disabled');\r\n whenToCheckinDropdown.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n reviewsPopup.appendChild(whatWillHappenInput);\r\n reviewsPopup.appendChild(whoReviewDropdown);\r\n reviewsPopup.appendChild(whenToCheckinDropdown);\r\n reviewsPopup.appendChild(btnWrap);\r\n\r\n //populateReviewsWhoDropdown(whoReviewDropdown, saveUpdateData.contactId);\r\n // planData.populateRelationshipDropdown(whoReviewDropdown, saveUpdateData.contactId);\r\n planData.populateOutcomesReviewWhoDropdown(whoReviewDropdown, saveUpdateData.contactId);\r\n\r\n populatewhenToCheckinDropdown(whenToCheckinDropdown, saveUpdateData.whenToCheckIn);\r\n\r\n POPUP.show(reviewsPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addReviewRow(outcomeId) {\r\n showReviewsPopup({ outcomeId }, true);\r\n }\r\n function buildReviewsTable(outcomeId) {\r\n const reviewsDiv = document.createElement('div');\r\n\r\n const reviewsTable = table.build({\r\n tableId: `reviewsTable${outcomeId}`,\r\n headline: 'Reviews',\r\n columnHeadings: [\r\n `What will progress look like? How will we know it's happening?`,\r\n 'Who?',\r\n 'When to check In?',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: async sortData => {\r\n const reviewId = sortData.row.id.replace('reviews', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await planOutcomesAjax.updateOutcomesReviewOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n reviewId: parseInt(reviewId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n reviewsTable.classList.add('reviewsTable');\r\n \r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = reviewsTable.querySelectorAll('.header div');\r\n if (headers.length > 3) {\r\n number = 1;\r\n } \r\n headers[0 + number].setAttribute('data-type', 'string'); // What will progress look like\r\n headers[1 + number].setAttribute('data-type', 'string'); // Who ? \r\n headers[2 + number].setAttribute('data-type', 'string'); // When to check in? \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(reviewsTable);\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Review',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addReviewRow(outcomeId),\r\n });\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n }\r\n\r\n if (outcomesData[outcomeId] && outcomesData[outcomeId].reviews) {\r\n const tableData = Object.values(outcomesData[outcomeId].reviews)\r\n .sort((a, b) => {\r\n return a.reviewOrder < b.reviewOrder ? -1 : a.reviewOrder > b.reviewOrder ? 1 : 0;\r\n })\r\n .map(td => {\r\n const whatWillHappen = td.whatWillHappen;\r\n const whoReview = td.whoReview;\r\n const whenToCheckIn = td.whenToCheckIn;\r\n const rowId = `reviews${td.reviewIds}`;\r\n\r\n return {\r\n id: rowId,\r\n values: [whatWillHappen, whoReview, whenToCheckIn],\r\n onClick: () =>\r\n showReviewsPopup(\r\n {\r\n whatWillHappen: whatWillHappen,\r\n whenToCheckIn: whenToCheckIn,\r\n whoReview: whoReview,\r\n reviewOrder: td.reviewOrder + 1,\r\n reviewIds: td.reviewIds,\r\n outcomeId: td.outcomeId,\r\n // contactId: td.contactId,\r\n contactId: td.whoResponsible,\r\n },\r\n false,\r\n ),\r\n };\r\n });\r\n\r\n table.populate(reviewsTable, tableData, isSortable);\r\n }\r\n\r\n reviewsDiv.appendChild(reviewsTable);\r\n\r\n const reviewsBtnAlertDiv = document.createElement('div');\r\n reviewsBtnAlertDiv.classList.add('btnAlertContainer');\r\n\r\n const reviewAlertDiv = document.createElement('div');\r\n reviewAlertDiv.innerHTML = `${icons.error}`;\r\n reviewAlertDiv.id = `reviewsAlert${outcomeId}`;\r\n reviewAlertDiv.classList.add('reviewsAlert');\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one review must be entered for each outcome',\r\n reviewAlertDiv,\r\n );\r\n\r\n reviewsBtnAlertDiv.appendChild(addRowBtn);\r\n reviewsBtnAlertDiv.appendChild(reviewAlertDiv);\r\n reviewsDiv.appendChild(reviewsBtnAlertDiv);\r\n\r\n planValidation.reviewsValidationCheck(validationCheck, outcomeId, reviewAlertDiv);\r\n\r\n return reviewsDiv;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function buildQuestion({ text, prompt, awnser, callback, maxChars }) {\r\n const question = document.createElement('div');\r\n question.classList.add('question');\r\n question.setAttribute('data-question-name', text.toLowerCase());\r\n\r\n question.innerHTML = `

    ${text}

    `;\r\n if (prompt) {\r\n question.innerHTML += `

    ${prompt}

    `;\r\n }\r\n\r\n const questionInput = input.build({\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: awnser,\r\n charLimit: maxChars,\r\n forceCharLimit: true,\r\n callback: e => {\r\n callback(e);\r\n },\r\n });\r\n question.appendChild(questionInput);\r\n\r\n if (isReadOnly) {\r\n questionInput.classList.add('disabled');\r\n }\r\n\r\n return question;\r\n }\r\n function buildOutcome({ outcomeId, ...outcomeData }) {\r\n const outcomesUpdateData = {\r\n outcome: outcomeData.outcome ? outcomeData.outcome : '',\r\n details: outcomeData.details ? outcomeData.details : '',\r\n history: outcomeData.history ? outcomeData.history : '',\r\n status: outcomeData.status ? outcomeData.status : '',\r\n carryOverReason: outcomeData.carryOverReason ? outcomeData.carryOverReason : '',\r\n sectionId: outcomeData.sectionId ? outcomeData.sectionId : '',\r\n outcomeOrder: outcomeData.outcomeOrder ? outcomeData.outcomeOrder : '',\r\n outcomeId,\r\n };\r\n\r\n const outcome = document.createElement('div');\r\n outcome.classList.add('outcome', `outcome${outcomeId}`);\r\n outcome.id = outcomeId;\r\n outcome.setAttribute('data-order', `${outcomesUpdateData.outcomeOrder}`);\r\n\r\n const deleteOutcomeBtn = button.build({\r\n text: 'Delete Outcome',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'deleteOutcomeBtn',\r\n callback: () => {\r\n const deleteWarningPopup = POPUP.build({\r\n header: 'Do you want to delete this Outcome and its Experiences and Reviews?',\r\n classNames: 'deleteWarningPopup',\r\n hideX: true,\r\n });\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n deleteOutcome(outcomeId);\r\n outcome.parentNode.removeChild(outcome);\r\n POPUP.hide(deleteWarningPopup);\r\n checkIfSummaryRequired();\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n\r\n assessmentPlanValidation = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n const closeWarningBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closeWarningBtn',\r\n callback: function () {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n deleteWarningPopup.appendChild(closeWarningBtn);\r\n deleteWarningPopup.appendChild(yesBtn);\r\n deleteWarningPopup.appendChild(noBtn);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n },\r\n });\r\n\r\n // Outcome Order\r\n const orderDiv = document.createElement('div');\r\n orderDiv.classList.add('outcomeOrder');\r\n orderDiv.innerHTML = `

    ${outcomesUpdateData.outcomeOrder}

    `;\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n // dropdownId: 'assessmentAreaDropdown',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n outcomesUpdateData.sectionId = selectedOption.value;\r\n await updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n\r\n assessmentPlanValidation = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n // Status\r\n const statusDropdown = dropdown.build({\r\n // dropdownId: 'statusDropdown',\r\n label: 'Status',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n outcomesUpdateData.status = selectedOption.value;\r\n\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n // Carryover\r\n const carryoverInput = buildQuestion({\r\n text: 'Carryover Reason',\r\n awnser: outcomesUpdateData.carryOverReason,\r\n maxChars: charLimits.carryOverReason,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n carryoverInput.classList.add('carryoverTextInput');\r\n carryoverInput.addEventListener('input', e => {\r\n outcomesUpdateData.carryOverReason = e.target.value;\r\n if (\r\n hasPreviousPlan &&\r\n outcomesUpdateData.status === '1' &&\r\n outcomesUpdateData.carryOverReason === ''\r\n ) {\r\n carryoverInput.classList.add('error');\r\n } else {\r\n carryoverInput.classList.remove('error');\r\n }\r\n });\r\n // Outcome\r\n const outcomeInput = buildQuestion({\r\n text: '*Outcome',\r\n prompt: 'What does the person want to accomplish and why?',\r\n awnser: outcomesUpdateData.outcome,\r\n maxChars: charLimits.description,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n outcomeInput.classList.add('outcomeTextInput');\r\n outcomeInput.addEventListener('input', e => {\r\n outcomesUpdateData.outcome = e.target.value;\r\n if (outcomesUpdateData.outcome === '') {\r\n outcomeInput.classList.add('error');\r\n planValidation.updateOutcome(outcomeId, validationCheck, true);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n } else {\r\n outcomeInput.classList.remove('error');\r\n planValidation.updateOutcome(outcomeId, validationCheck, false);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n });\r\n // Details\r\n const detailsInput = buildQuestion({\r\n text: '*Details to Know',\r\n awnser: outcomesUpdateData.details,\r\n maxChars: charLimits.details,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n detailsInput.classList.add('detailsTextInput');\r\n detailsInput.addEventListener('input', e => {\r\n outcomesUpdateData.details = e.target.value;\r\n if (outcomesUpdateData.details === '') {\r\n detailsInput.classList.add('error');\r\n planValidation.updateOutcomeDetails(outcomeId, validationCheck, true);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n } else {\r\n detailsInput.classList.remove('error');\r\n planValidation.updateOutcomeDetails(outcomeId, validationCheck, false);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n });\r\n // History\r\n const historyInput = buildQuestion({\r\n text: 'Important and Relevant History', //\r\n prompt:\r\n 'Remember to only include history that may impact a persons life, support and achievement of outcomes.',\r\n awnser: outcomesUpdateData.history,\r\n maxChars: charLimits.history,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n historyInput.classList.add('historyTextInput');\r\n historyInput.addEventListener('input', e => {\r\n outcomesUpdateData.history = e.target.value;\r\n\r\n // if (outcomesUpdateData.history === '') {\r\n // historyInput.classList.add('error');\r\n // } else {\r\n // historyInput.classList.remove('error');\r\n // }\r\n });\r\n\r\n // Tables\r\n const experiencesTable = buildExperiencesTables(outcomeId);\r\n const reviewTable = buildReviewsTable(outcomeId);\r\n\r\n // init required fields\r\n if (outcomesUpdateData.outcome === '') {\r\n outcomeInput.classList.add('error');\r\n }\r\n if (outcomesUpdateData.details === '') {\r\n detailsInput.classList.add('error');\r\n }\r\n // if (outcomesUpdateData.history === '') {\r\n // historyInput.classList.add('error');\r\n // }\r\n if (\r\n hasPreviousPlan &&\r\n outcomesUpdateData.status === '1' &&\r\n outcomesUpdateData.carryOverReason === ''\r\n ) {\r\n carryoverInput.classList.add('error');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n deleteOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n // outcome assemble!\r\n const topRow = document.createElement('div');\r\n topRow.classList.add('outcomeToprow');\r\n topRow.appendChild(orderDiv);\r\n topRow.appendChild(assessmentAreaDropdown);\r\n topRow.appendChild(statusDropdown);\r\n outcome.appendChild(topRow);\r\n outcome.appendChild(carryoverInput);\r\n outcome.appendChild(outcomeInput);\r\n outcome.appendChild(detailsInput);\r\n outcome.appendChild(experiencesTable);\r\n outcome.appendChild(reviewTable);\r\n outcome.appendChild(historyInput);\r\n outcome.appendChild(deleteOutcomeBtn);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, outcomesUpdateData.sectionId);\r\n populateStatusDropdown(statusDropdown, outcomesUpdateData.status);\r\n\r\n return outcome;\r\n }\r\n function getMarkup() {\r\n const outcomesDataValues = Object.values(outcomesData);\r\n\r\n outcomesWrap = document.createElement('div');\r\n outcomesWrap.classList.add('planOutcomes');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Outcomes';\r\n heading.classList.add('sectionHeading');\r\n outcomesWrap.appendChild(heading);\r\n\r\n // outcome summary\r\n outcomesProgressSummary = buildQuestion({\r\n text: '*Summary of Progress Outcomes:',\r\n prompt: 'Share accomplishments, progress, how success is to be celebrated.',\r\n awnser: progressSummary,\r\n maxChars: 2500,\r\n callback: e => {\r\n progressSummary = e.target.value;\r\n checkIfSummaryRequired();\r\n const textForSave = e.target.value;\r\n planOutcomesAjax.updatePlanOutcomeProgressSummary({\r\n token: $.session.Token,\r\n progressSummary: textForSave,\r\n progressSummaryId: progressSummaryId,\r\n });\r\n\r\n if ((e.target.value === '') && (validationCheck.outcomesData.planOutcome.length > 0)) {\r\n validationCheck.planProgressSummary = false;\r\n } else {\r\n validationCheck.planProgressSummary = true;\r\n }\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n outcomesProgressSummary.classList.add('summaryOutcomesTextInput');\r\n outcomesWrap.appendChild(outcomesProgressSummary);\r\n\r\n // add outcome\r\n addOutcomeBtn = button.build({\r\n text: 'Add Outcome',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addRowBtn',\r\n callback: async () => {\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n const outcomeOrder = outcomes.length + 1;\r\n\r\n const outcomeId = await insertOutcome({\r\n outcome: '',\r\n details: '',\r\n history: '',\r\n sectionId: '',\r\n status: '0',\r\n carryOverReason: '',\r\n assessmentId: planId,\r\n outcomeOrder: 0, //need this to keep from first one defaulting to 2\r\n });\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n\r\n const outcome = buildOutcome({ outcomeId, outcomeOrder, status: '0' });\r\n outcomesWrap.insertBefore(outcome, addOutcomeBtn);\r\n checkIfSummaryRequired();\r\n },\r\n });\r\n outcomesWrap.appendChild(addOutcomeBtn);\r\n if (isReadOnly) {\r\n addOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n // load existing outcomes\r\n if (outcomesDataValues.length > 0) {\r\n const sortedOutcomes = sortOutcomesByOrder(outcomesDataValues);\r\n sortedOutcomes.forEach(pyid => {\r\n const outcome = buildOutcome(pyid);\r\n outcomesWrap.insertBefore(outcome, addOutcomeBtn);\r\n });\r\n if (progressSummary === '') {\r\n outcomesProgressSummary.classList.add('error');\r\n }\r\n }\r\n\r\n return outcomesWrap;\r\n }\r\n\r\n async function init(data) {\r\n // data = { planId, readOnly }\r\n planId = data.planId;\r\n isReadOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('outcomes');\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n const planOutcomesData = validationCheck.outcomesData;\r\n\r\n if (\r\n !planOutcomesData.planProgressSummary ||\r\n planOutcomesData.planProgressSummary.length === 0\r\n ) {\r\n let summaryId = await planOutcomesAjax.insertPlanOutcomeProgressSummary({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n progressSummary: '',\r\n });\r\n summaryId = summaryId.split(':');\r\n summaryId = summaryId[1];\r\n summaryId = summaryId.replace('}]', '').replace('\"', '');\r\n\r\n progressSummary = '';\r\n progressSummaryId = summaryId;\r\n } else {\r\n progressSummary = planOutcomesData.planProgressSummary[0].progressSummary;\r\n progressSummaryId = planOutcomesData.planProgressSummary[0].progressSummaryId;\r\n }\r\n\r\n dropdownData = planData.getDropdownData();\r\n outcomesData = mapOutcomesDetails(planOutcomesData);\r\n hasPreviousPlan = plan.getHasPreviousPlans();\r\n\r\n const ddData = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.vendorId);\r\n return acc;\r\n }, []);\r\n }\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const paidSupportData = ddData.filter(provider => selectedVendorIds.includes(provider.value));\r\n\r\n validationCheck.paidSupportsProviders = paidSupportData;\r\n\r\n return validationCheck;\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n showAddNewOutcomePopup,\r\n refreshDropdownData,\r\n getSelectedVendors,\r\n };\r\n})();\r\n","const planOutcomesAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getPlanSpecificOutcomes(retrieveData) {\r\n // string token, string assessmentId, integer targetAssessmentVersionId\r\n retrieveData.targetAssessmentVersionId = 0;\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanSpecificOutcomes/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanSpecificOutcomesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getPlanOutcomesPaidSupportProviders(assessmentId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanOutcomesPaidSupportProviders/',\r\n data: JSON.stringify({\r\n assessmentId: assessmentId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertPlanOutcomeProgressSummary(retrieveData) {\r\n // will return progress summary id\r\n // string token,\r\n // integer planId,\r\n // string progressSummary\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcome(retrieveData) {\r\n // string token,\r\n // string assessmentId,\r\n // string outcome,\r\n // string details,\r\n // string history,\r\n // string sectionId,\r\n // string outcomeOrder\r\n // int status,\r\n // string carryOverReason\r\n\r\n retrieveData.status = parseInt(retrieveData.status);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomesExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string[] howHappened,\r\n // string[] whatHappened,\r\n // string[] experienceOrder\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomesExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomesExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomeExperienceResponsibility(retrieveData) {\r\n // string token,\r\n // string experienceId,\r\n // int[] responsibleContact,\r\n // int[] responsibleProvider,\r\n // int[] whenHowOftenFrequency,\r\n // string[] whenHowOftenValue,\r\n // string[] whenHowOftenText,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomesReview(retrieveData) {\r\n // long outcomeId,\r\n // string[] whatWillHappen,\r\n // string[] whenToCheckIn,\r\n // string[] whoReview,\r\n // string[] reviewOrder\r\n // integer[] contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomesReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomesReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //------------------------------------\r\n async function updatePlanOutcomeProgressSummary(retrieveData) {\r\n // string token,\r\n // integer progressSummaryId,\r\n // string progressSummary\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcome(retrieveData) {\r\n // string token,\r\n // string assessmentId,\r\n // string outcomeId, (new)\r\n // string sectionId,\r\n // string outcome,\r\n // string details,\r\n // string history,\r\n // int status,\r\n // string carryOverReason\r\n\r\n retrieveData.status = parseInt(retrieveData.status);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string[] experienceIds,\r\n // string[] howHappened,\r\n // string[] whatHappened,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomeExperienceResponsibility(retrieveData) {\r\n // int[] responsibilityIds,\r\n // int[] responsibleContact,\r\n // int[] responsibleProvider,\r\n // string[] whenHowOftenValue,\r\n // int[] whenHowOftenFrequency,\r\n // string[] whenHowOftenText,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesReview(retrieveData) {\r\n // long outcomeId,\r\n // string[] reviewIds,\r\n // string[] whatWillHappen,\r\n // string[] whenToCheckIn,\r\n // string[] whoReview,\r\n // integer[] contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deletePlanOutcomeProgressSummary(retrieveData) {\r\n // string token,\r\n // integer progressSummaryId,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcome(retrieveData) {\r\n // string token,\r\n // string outcomeId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string experienceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeExperienceResponsibility(retrieveData) {\r\n // string token,\r\n // string responsibilityId,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeReview(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string reviewId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // row re-order\r\n //------------------\r\n async function updatePlanOutcomesOrder(retrieveData) {\r\n // string token,\r\n // integer planId,\r\n // integer outcomeId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateOutcomesReviewOrder(retrieveData) {\r\n // string token,\r\n // integer outcomeId,\r\n // integer reviewId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesReviewOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesExperienceOrder(retrieveData) {\r\n // string token,\r\n // integer outcomeId,\r\n // integer experienceId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesExperienceOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesExperienceOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getPlanOutcomesPaidSupportProviders,\r\n getPlanSpecificOutcomes,\r\n insertPlanOutcome,\r\n insertPlanOutcomesExperience,\r\n insertPlanOutcomeExperienceResponsibility,\r\n insertPlanOutcomesReview,\r\n updatePlanOutcome,\r\n updatePlanOutcomesExperience,\r\n updatePlanOutcomeExperienceResponsibility,\r\n updatePlanOutcomesReview,\r\n deletePlanOutcome,\r\n deletePlanOutcomeExperience,\r\n deletePlanOutcomeReview,\r\n deletePlanOutcomeExperienceResponsibility,\r\n updateOutcomesReviewOrder,\r\n updatePlanOutcomesExperienceOrder,\r\n deletePlanOutcomeProgressSummary,\r\n updatePlanOutcomeProgressSummary,\r\n insertPlanOutcomeProgressSummary,\r\n updatePlanOutcomesOrder,\r\n };\r\n})();\r\n","const planRestrictiveMeasures = (() => {\r\n let readOnly;\r\n let planId; // aka: assessmentId\r\n let rmData;\r\n let rmDataArray;\r\n // DOM\r\n let rmMainWrap;\r\n let addSectionBtn;\r\n // OTHER\r\n let charLimits;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n async function updateRMResponse(sectionData) {\r\n // const data = {\r\n // token: $.session.Token,\r\n // informedConsentId: rmData.rmID,\r\n // rmIdentified: rmData.rmIdentified,\r\n // rmHRCDate: rmData.rmHRCDate,\r\n // rmKeepSelfSafe: rmData.rmKeepSelfSafe,\r\n // rmFadeRestriction: rmData.rmFadeRestriction,\r\n // rmOtherWayHelpGood: rmData.rmOtherWayHelpGood,\r\n // rmOtherWayHelpBad: rmData.rmOtherWayHelpBad,\r\n // rmWhatCouldHappenGood: rmData.rmWhatCouldHappenGood,\r\n // rmWhatCouldHappenBad: rmData.rmWhatCouldHappenBad,\r\n // };\r\n const res = await restrictiveMeasuresAjax.updatePlanRestrictiveMeasures(sectionData);\r\n }\r\n\r\nasync function deleteRMData(rmId) {\r\n const data = {\r\n token: $.session.Token,\r\n informedConsentId: rmId,\r\n };\r\n const res = await restrictiveMeasuresAjax.deletePlanRestrictiveMeasures(data);\r\n}\r\n\r\nasync function toggleRestrictiveMeasureQuestionsVisiblity(show) {\r\n //const add = document.querySelector('.addSectionBtn');\r\n \r\n if (show) {\r\n addSectionBtn.style.display = 'block';\r\n\r\n if (rmDataArray.length === 0) {\r\n restrictiveMeasuresSectionID = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n\r\n const newSection = createNewSection(null, false, restrictiveMeasuresSectionID.informedConsentId);\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n } else {\r\n rmDataArray.forEach((rmData, index) => {\r\n const isFirstSection = index === 0;\r\n const newSection = createNewSection(rmData, isFirstSection);\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n });\r\n }\r\n } else {\r\n const rmSections = document.querySelectorAll('.restrictiveMeasureContainer');\r\n rmSections.forEach((section, index) => {\r\n if (index === 0) {\r\n section.style.display = 'none';\r\n } else {\r\n section.remove();\r\n }\r\n });\r\n rmDataArray.forEach((rmData) => {\r\n deleteRMData(rmData.informedConsentId);\r\n });\r\n addSectionBtn.style.display = 'none';\r\n }\r\n}\r\n\r\n //*------------------------------------------------------\r\n //* RESTRICTIVE MEASURE QUESTIONS\r\n //*------------------------------------------------------\r\n function buildRestrictiveMeasureQuestions(sectionData) {\r\n const rmQuestionSection = document.createElement('div');\r\n rmQuestionSection.classList.add('rmQuestionSection');\r\n\r\n //* HRC APPROVAL DATE\r\n //*------------------------------------\r\n const rmHrcApprovalDate = input.build({\r\n label: '*Date of HRC Approval',\r\n type: 'date',\r\n value: UTIL.formatDateToIso(sectionData.rmHRCDate.split(' ')[0]),\r\n readonly: readOnly,\r\n });\r\n rmHrcApprovalDate.style.maxWidth = '200px';\r\n //* RM_KEEP_SELF_SAFE\r\n //*------------------------------------\r\n const rmKeepSelfSafeQuestion = document.createElement('div');\r\n const rmKeepSelfSafeQuestionText = document.createElement('p');\r\n rmKeepSelfSafeQuestionText.style.marginBottom = '7px';\r\n rmKeepSelfSafeQuestionText.innerText =\r\n '*What help do I need to keep myself safe? (describe restrictive strategies and why they are needed)';\r\n const rmKeepSelfSafeQuestionResp = input.build({\r\n type: 'textarea',\r\n value: sectionData.rmKeepSelfSafe,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmKeepSelfSafe,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmKeepSelfSafeQuestion.appendChild(rmKeepSelfSafeQuestionText);\r\n rmKeepSelfSafeQuestion.appendChild(rmKeepSelfSafeQuestionResp);\r\n //* RM_FADE_RESTRICTION\r\n //*------------------------------------\r\n const rmFadeRestrictionQuestion = document.createElement('div');\r\n const rmFadeRestrictionQuestionText = document.createElement('p');\r\n rmFadeRestrictionQuestionText.style.marginBottom = '7px';\r\n rmFadeRestrictionQuestionText.innerText =\r\n '*What is the plan to ensure the restriction is temporary in nature?';\r\n const rmFadeRestrictionQuestionResp = input.build({\r\n type: 'textarea',\r\n value: sectionData.rmFadeRestriction,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmFadeRestriction,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmFadeRestrictionQuestion.appendChild(rmFadeRestrictionQuestionText);\r\n rmFadeRestrictionQuestion.appendChild(rmFadeRestrictionQuestionResp);\r\n //* RM_WHAT_COULD_HAPPEN(GOOD/BAD)\r\n //*------------------------------------\r\n const rmWhatCouldHappenQuestion = document.createElement('div');\r\n const rmWhatCouldHappenQuestionText = document.createElement('p');\r\n rmWhatCouldHappenQuestionText.style.marginBottom = '10px';\r\n rmWhatCouldHappenQuestionText.innerText = 'What could happen if I allow this help?';\r\n const rmWhatCouldHappenQuestionContainer = document.createElement('div');\r\n rmWhatCouldHappenQuestionContainer.classList.add('isp_ic_rmQuestionGroup');\r\n const rmWhatCouldHappenQuestionGoodResp = input.build({\r\n type: 'textarea',\r\n label: '*Good',\r\n value: sectionData.rmWhatCouldHappenGood,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmWhatCouldHappenGood,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n const rmWhatCouldHappenQuestionBadResp = input.build({\r\n type: 'textarea',\r\n label: '*Bad',\r\n value: sectionData.rmWhatCouldHappenBad,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmWhatCouldHappenBad,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmWhatCouldHappenQuestionContainer.appendChild(rmWhatCouldHappenQuestionGoodResp);\r\n rmWhatCouldHappenQuestionContainer.appendChild(rmWhatCouldHappenQuestionBadResp);\r\n rmWhatCouldHappenQuestion.appendChild(rmWhatCouldHappenQuestionText);\r\n rmWhatCouldHappenQuestion.appendChild(rmWhatCouldHappenQuestionContainer);\r\n //* RM_OTHER_WAY_HELP(GOOD/BAD)\r\n //*------------------------------------\r\n const rmOtherWayHelpQuestion = document.createElement('div');\r\n const rmOtherWayHelpQuestionText = document.createElement('p');\r\n rmOtherWayHelpQuestionText.style.marginBottom = '10px';\r\n rmOtherWayHelpQuestionText.innerText = `If I don't allow this help, what other ways help me be safe?`;\r\n const rmOtherWayHelpQuestionContainer = document.createElement('div');\r\n rmOtherWayHelpQuestionContainer.classList.add('isp_ic_rmQuestionGroup');\r\n const rmOtherWayHelpQuestionGoodResp = input.build({\r\n type: 'textarea',\r\n label: '*Good things about these other options',\r\n value: sectionData.rmOtherWayHelpGood,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmOtherWayHelpGood,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n const rmOtherWayHelpQuestionBadResp = input.build({\r\n type: 'textarea',\r\n label: '*Bad things about these other options',\r\n value: sectionData.rmOtherWayHelpBad,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmOtherWayHelpBad,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmOtherWayHelpQuestionContainer.appendChild(rmOtherWayHelpQuestionGoodResp);\r\n rmOtherWayHelpQuestionContainer.appendChild(rmOtherWayHelpQuestionBadResp);\r\n rmOtherWayHelpQuestion.appendChild(rmOtherWayHelpQuestionText);\r\n rmOtherWayHelpQuestion.appendChild(rmOtherWayHelpQuestionContainer);\r\n\r\n //* Required Fields\r\n //*------------------------------------\r\n if (sectionData.rmHRCDate === '') {\r\n rmHrcApprovalDate.classList.add('error');\r\n }\r\n if (sectionData.rmKeepSelfSafe === '') {\r\n rmKeepSelfSafeQuestionResp.classList.add('error');\r\n }\r\n if (sectionData.rmFadeRestriction === '') {\r\n rmFadeRestrictionQuestionResp.classList.add('error');\r\n }\r\n if (sectionData.rmWhatCouldHappenGood === '') {\r\n rmWhatCouldHappenQuestionGoodResp.classList.add('error');\r\n }\r\n if (sectionData.rmWhatCouldHappenBad === '') {\r\n rmWhatCouldHappenQuestionBadResp.classList.add('error');\r\n }\r\n if (sectionData.rmOtherWayHelpGood === '') {\r\n rmOtherWayHelpQuestionGoodResp.classList.add('error');\r\n }\r\n if (sectionData.rmOtherWayHelpBad === '') {\r\n rmOtherWayHelpQuestionBadResp.classList.add('error');\r\n }\r\n\r\n //* Event Setup\r\n //*------------------------------------\r\n // HRC APPROVAL DATE\r\n rmHrcApprovalDate.addEventListener('change', event => {\r\n sectionData.rmHRCDate = event.target.value;\r\n if (event.target.value !== '') {\r\n rmHrcApprovalDate.classList.remove('error');\r\n } else {\r\n rmHrcApprovalDate.classList.add('error');\r\n }\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_KEEP_SELF_SAFE\r\n rmKeepSelfSafeQuestionResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmKeepSelfSafeQuestionResp.classList.remove('error');\r\n } else {\r\n rmKeepSelfSafeQuestionResp.classList.add('error');\r\n }\r\n });\r\n rmKeepSelfSafeQuestionResp.addEventListener('focusout', event => {\r\n sectionData.rmKeepSelfSafe = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_FADE_RESTRICTION\r\n rmFadeRestrictionQuestionResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmFadeRestrictionQuestionResp.classList.remove('error');\r\n } else {\r\n rmFadeRestrictionQuestionResp.classList.add('error');\r\n }\r\n });\r\n rmFadeRestrictionQuestionResp.addEventListener('focusout', event => {\r\n sectionData.rmFadeRestriction = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_WHAT_COULD_HAPPEN GOOD\r\n rmWhatCouldHappenQuestionGoodResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmWhatCouldHappenQuestionGoodResp.classList.remove('error');\r\n } else {\r\n rmWhatCouldHappenQuestionGoodResp.classList.add('error');\r\n }\r\n });\r\n rmWhatCouldHappenQuestionGoodResp.addEventListener('focusout', event => {\r\n sectionData.rmWhatCouldHappenGood = event.target.value;\r\n const test = sectionData;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_WHAT_COULD_HAPPEN BAD\r\n rmWhatCouldHappenQuestionBadResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmWhatCouldHappenQuestionBadResp.classList.remove('error');\r\n } else {\r\n rmWhatCouldHappenQuestionBadResp.classList.add('error');\r\n }\r\n });\r\n rmWhatCouldHappenQuestionBadResp.addEventListener('focusout', event => {\r\n sectionData.rmWhatCouldHappenBad = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_OTHER_WAY_HELP GOOD\r\n rmOtherWayHelpQuestionGoodResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmOtherWayHelpQuestionGoodResp.classList.remove('error');\r\n } else {\r\n rmOtherWayHelpQuestionGoodResp.classList.add('error');\r\n }\r\n });\r\n rmOtherWayHelpQuestionGoodResp.addEventListener('focusout', event => {\r\n sectionData.rmOtherWayHelpGood = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_OTHER_WAY_HELP BAD\r\n rmOtherWayHelpQuestionBadResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmOtherWayHelpQuestionBadResp.classList.remove('error');\r\n } else {\r\n rmOtherWayHelpQuestionBadResp.classList.add('error');\r\n }\r\n });\r\n rmOtherWayHelpQuestionBadResp.addEventListener('focusout', event => {\r\n sectionData.rmOtherWayHelpBad = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n\r\n //* Build It\r\n //*------------------------------------\r\n rmQuestionSection.appendChild(rmHrcApprovalDate);\r\n rmQuestionSection.appendChild(rmKeepSelfSafeQuestion);\r\n rmQuestionSection.appendChild(rmFadeRestrictionQuestion);\r\n rmQuestionSection.appendChild(rmWhatCouldHappenQuestion);\r\n rmQuestionSection.appendChild(rmOtherWayHelpQuestion);\r\n\r\n return rmQuestionSection;\r\n}\r\n\r\n\r\n //*------------------------------------------------------\r\n //* TOGGLE QUESTION\r\n //*------------------------------------------------------\r\n //* question that decides if RM questions are visible\r\n //*------------------------------------------------------\r\n function buildToggleQuestions() {\r\n const rmSection = document.createElement('div');\r\n rmSection.classList.add('rmToggleSection');\r\n\r\n //Restriction Identified (YES SHOWS REST OF RM QUESTIONS)\r\n const rmRestrictionsIdentifiedQuestion = document.createElement('div');\r\n rmRestrictionsIdentifiedQuestion.classList.add('ic_questionContainer');\r\n\r\n const rmRestrictionsIdentifiedQuestionText = document.createElement('p');\r\n rmRestrictionsIdentifiedQuestionText.innerText =\r\n 'Were restrictions identified during the planning process?';\r\n rmRestrictionsIdentifiedQuestion.appendChild(rmRestrictionsIdentifiedQuestionText);\r\n\r\n //Radio Container\r\n const rmRestrictionsIdentifiedRadioContainer = document.createElement('div');\r\n rmRestrictionsIdentifiedRadioContainer.classList.add('ic_questionRadioContainer');\r\n //Radios\r\n const rmRestrictionsIdentifiedYesRadio = input.buildRadio({\r\n id: 'RM_Identified-yes',\r\n text: 'Yes',\r\n name: 'CS_Identified',\r\n isChecked: rmData.rmIdentified === 'Y',\r\n isDisabled: readOnly,\r\n callback: () => {\r\n rmData.rmIdentified = 'Y';\r\n updateRMResponse(rmData);\r\n toggleRestrictiveMeasureQuestionsVisiblity(true);\r\n rmRestrictionsIdentifiedRadioContainer.classList.remove('error');\r\n DOM.autosizeTextarea();\r\n },\r\n });\r\n const rmRestrictionsIdentifiedNoRadio = input.buildRadio({\r\n id: 'CS_Identified-no',\r\n text: 'No',\r\n name: 'CS_Identified',\r\n isChecked: rmData.rmIdentified === 'N',\r\n isDisabled: readOnly,\r\n callback: () => {\r\n if (rmData.rmIdentified === 'Y') {\r\n UTIL.warningPopup({\r\n message:\r\n 'Changing this question to NO will result in the restrictive measure question responses to be cleared. Do you want to proceed?',\r\n hideX: true,\r\n accept: {\r\n text: 'Yes',\r\n callback: () => {\r\n rmData.rmIdentified = 'N';\r\n rmData.rmHRCDate = '';\r\n rmData.rmKeepSelfSafe = '';\r\n rmData.rmFadeRestriction = '';\r\n rmData.rmOtherWayHelpGood = '';\r\n rmData.rmOtherWayHelpBad = '';\r\n rmData.rmWhatCouldHappenGood = '';\r\n rmData.rmWhatCouldHappenBad = '';\r\n updateRMResponse(rmData);\r\n toggleRestrictiveMeasureQuestionsVisiblity(false);\r\n\r\n // Delete data for all items in the rmDataArray\r\n rmDataArray.forEach(rmItem => {\r\n deleteRMData(rmItem.informedConsentId);\r\n });\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n document.getElementById('RM_Identified-yes').checked = true;\r\n },\r\n },\r\n });\r\n } else {\r\n rmData.rmIdentified = 'N';\r\n updateRMResponse(sectionData);\r\n }\r\n\r\n rmRestrictionsIdentifiedRadioContainer.classList.remove('error');\r\n },\r\n });\r\n\r\n if (rmData.rmIdentified === '') {\r\n rmRestrictionsIdentifiedRadioContainer.classList.add('error');\r\n }\r\n rmRestrictionsIdentifiedRadioContainer.appendChild(rmRestrictionsIdentifiedYesRadio);\r\n rmRestrictionsIdentifiedRadioContainer.appendChild(rmRestrictionsIdentifiedNoRadio);\r\n\r\n rmRestrictionsIdentifiedQuestion.appendChild(rmRestrictionsIdentifiedRadioContainer);\r\n rmSection.appendChild(rmRestrictionsIdentifiedQuestion);\r\n\r\n return rmSection;\r\n }\r\n\r\n function createNewSection(rmData, isFirstSection, insertedRMID) {\r\n // Create a new section container\r\n const newSection = document.createElement('div');\r\n newSection.classList.add('restrictiveMeasureContainer');\r\n\r\n const sectionData = {\r\n token: $.session.Token,\r\n informedConsentId: rmData?.informedConsentId || insertedRMID.informedConsentId,\r\n rmIdentified: 'Y',\r\n rmHRCDate: rmData?.rmHRCDate || '',\r\n rmKeepSelfSafe: rmData?.rmKeepSelfSafe || '',\r\n rmFadeRestriction: rmData?.rmFadeRestriction || '',\r\n rmWhatCouldHappenGood: rmData?.rmWhatCouldHappenGood || '',\r\n rmWhatCouldHappenBad: rmData?.rmWhatCouldHappenBad || '',\r\n rmOtherWayHelpGood: rmData?.rmOtherWayHelpGood || '',\r\n rmOtherWayHelpBad: rmData?.rmOtherWayHelpBad || ''\r\n }; \r\n\r\n // Attach the section data to the section element\r\n newSection.sectionData = sectionData;\r\n\r\n // Create restrictive measure questions for the new section\r\n const rmQuestions = buildRestrictiveMeasureQuestions(sectionData);\r\n newSection.appendChild(rmQuestions);\r\n\r\n if (!isFirstSection) {\r\n const deleteButton = button.build({\r\n text: 'Delete Restrictive Measure',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'deleteSectionBtn',\r\n callback: () => {\r\n deleteRMData(newSection.sectionData.informedConsentId);\r\n newSection.remove();\r\n }\r\n });\r\n newSection.appendChild(deleteButton);\r\n }\r\n\r\n // Return the new section\r\n return newSection;\r\n }\r\n\r\nfunction createAddSectionButton() {\r\n return button.build({\r\n text: 'Add Restrictive Measure',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addSectionBtn',\r\n callback: async () => {\r\n restrictiveMeasuresSectionID = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n\r\n const newSection = createNewSection(null, false, restrictiveMeasuresSectionID);\r\n\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n\r\n // Append the button to rmMainWrap if it doesn't exist\r\n if (!rmMainWrap.querySelector('.addSectionBtn')) {\r\n const addSectionBtn = createAddSectionButton();\r\n rmMainWrap.appendChild(addSectionBtn);\r\n }\r\n }\r\n });\r\n}\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function getMarkup() {\r\n // Section\r\n rmMainWrap = document.createElement('div');\r\n rmMainWrap.classList.add('ispRestrictiveMeasures');\r\n\r\n // Heading\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Restrictive Measures';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '6px';\r\n rmMainWrap.appendChild(heading);\r\n\r\n // Toggle Question\r\n const toggleQuestion = buildToggleQuestions();\r\n rmMainWrap.appendChild(toggleQuestion);\r\n\r\n addSectionBtn = createAddSectionButton();\r\n rmMainWrap.appendChild(addSectionBtn);\r\n addSectionBtn.style.display = 'none';\r\n\r\n if (rmData.rmIdentified === 'Y') {\r\n addSectionBtn.style.display = 'block';\r\n // Create sections for each data entry\r\n rmDataArray.forEach((rmData, index) => {\r\n const isFirstSection = index === 0;\r\n const newSection = createNewSection(rmData, isFirstSection);\r\n \r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n });\r\n }\r\n\r\n return rmMainWrap;\r\n}\r\n\r\n async function init(data) {\r\n planId = data.planId;\r\n readOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('restrictiveMeasures');\r\n let stuff;\r\n\r\n rmDataArray = await restrictiveMeasuresAjax.getPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n if (rmDataArray.length === 0) {\r\n stuff = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n }\r\n\r\n if (!Array.isArray(rmDataArray) || rmDataArray.length === 0) {\r\n rmData = [{\r\n token: $.session.Token,\r\n informedConsentId: stuff ? stuff.informedConsentId : '',\r\n rmIdentified: '',\r\n rmHRCDate: '',\r\n rmKeepSelfSafe: '',\r\n rmFadeRestriction: '',\r\n rmOtherWayHelpGood: '',\r\n rmOtherWayHelpBad: '',\r\n rmWhatCouldHappenGood: '',\r\n rmWhatCouldHappenBad: '',\r\n }];\r\n } else {\r\n const firstElement = rmDataArray[0];\r\n rmData = {\r\n token: $.session.Token,\r\n informedConsentId: firstElement.informedConsentId,\r\n rmIdentified: firstElement.rmIdentified === '' || firstElement.rmIdentified === 'N' ? 'N' : 'Y',\r\n rmHRCDate: firstElement.rmHRCDate,\r\n rmKeepSelfSafe: firstElement.rmKeepSelfSafe,\r\n rmFadeRestriction: firstElement.rmFadeRestriction,\r\n rmOtherWayHelpGood: firstElement.rmOtherWayHelpGood,\r\n rmOtherWayHelpBad: firstElement.rmOtherWayHelpBad,\r\n rmWhatCouldHappenGood: firstElement.rmWhatCouldHappenGood,\r\n rmWhatCouldHappenBad: firstElement.rmWhatCouldHappenBad,\r\n };\r\n }\r\n}\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n };\r\n})();\r\n","const restrictiveMeasuresAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getPlanRestrictiveMeasures(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanRestrictiveMeasuresResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Insert\r\n //--------------------------------------\r\n async function insertPlanRestrictiveMeasures(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanRestrictiveMeasuresResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Update\r\n //--------------------------------------\r\n async function updatePlanRestrictiveMeasures(retrieveData) {\r\n /* string token, string informedConsentId, string rmIdentified, \r\n string rmHRCDate, string rmKeepSelfSafe, string rmFadeRestriction, \r\n string rmOtherWayHelpGood, string rmOtherWayHelpBad, \r\n string rmWhatCouldHappenGood, string rmWhatCouldHappenBad\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanRestrictiveMeasuresResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function deletePlanRestrictiveMeasures(retrieveData) {\r\n // string token, string informedConsentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanRestrictiveMeasuresResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getPlanRestrictiveMeasures,\r\n insertPlanRestrictiveMeasures,\r\n updatePlanRestrictiveMeasures,\r\n deletePlanRestrictiveMeasures\r\n };\r\n})();\r\n","const servicesSupports = (() => {\r\n let isReadOnly;\r\n let isSortable;\r\n let planID; // aka: assessmentId\r\n let modificationsId;\r\n let servicesSupportsData; // data\r\n let dropdownData;\r\n let selectedVendors = [];\r\n let selectedFundingSources = [];\r\n let hasPaidSupports;\r\n\r\n let paidSupportsTable;\r\n let additionalSupportsTable;\r\n let professionalReferralsTable;\r\n\r\n let enableMultiEdit = false;\r\n let selectedPaidSupportIds = [];\r\n let selectedPaidSupportRows = [];\r\n let multiEditBtn;\r\n let multiEditUpdateBtn;\r\n let multiEditCancelBtn;\r\n\r\n let fundingSourceDropdownSelectedText;\r\n let servicesDropdownSelectedText;\r\n let servicesOtherDropdownSelectedText;\r\n let providerDropdownSelectedText;\r\n\r\n let hcbsSelected;\r\n let saveUpdateProvider = '';\r\n\r\n let charLimits;\r\n\r\n // UTILS\r\n //------------------------------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapPaidSupportDataForTable(ps) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const providerId = ps.providerId;\r\n const serviceNameId = ps.serviceNameId;\r\n const serviceNameOther = ps.serviceNameOther;\r\n const scopeOfService = ps.scopeOfService ? ps.scopeOfService : ps.scopeOfservice;\r\n const howOftenValue = ps.howOftenValue;\r\n const howOftenFrequency = ps.howOftenFrequency;\r\n const howOftenText = ps.howOftenText;\r\n const fundingSource = ps.fundingSource;\r\n const fundingSourceText = ps.fundingSourceText;\r\n const paidSupportsId = ps.paidSupportsId;\r\n let beginDate = ps.beginDate ? ps.beginDate.split(' ')[0] : '';\r\n let endDate = ps.endDate ? ps.endDate.split(' ')[0] : '';\r\n beginDate = beginDate ? UTIL.formatDateToIso(beginDate) : '';\r\n endDate = endDate ? UTIL.formatDateToIso(endDate) : '';\r\n let bDate = beginDate ? UTIL.formatDateFromIso(beginDate) : '';\r\n let eDate = endDate ? UTIL.formatDateFromIso(endDate) : '';\r\n if (bDate !== '') {\r\n const splitDate = bDate.split('/');\r\n bDate = `${splitDate[0]}/${splitDate[1]}/${splitDate[2].substring(2)}`;\r\n }\r\n if (eDate !== '') {\r\n const splitDate = eDate.split('/');\r\n eDate = `${splitDate[0]}/${splitDate[1]}/${splitDate[2].substring(2)}`;\r\n }\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[ps.assessmentAreaId]) {\r\n assessmentAreaId = ps.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const rowOrder = ps.rowOrder;\r\n\r\n const providerName = getProviderNameById(providerId);\r\n const serviceName = getServiceNameById(serviceNameId);\r\n const serviceOtherName = getOtherServiceNameById(serviceNameOther);\r\n const fundingSourceDesc = fundingSource ? getFundingSourceById(fundingSource) : '';\r\n const howOftenFrequencyText = howOftenFrequency\r\n ? getHowOftenHowMuchFrequencyById(howOftenFrequency)\r\n : '';\r\n\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n // if (howOftenFrequency && howOftenFrequency !== '4') {\r\n // howOften += ` x `;\r\n // }\r\n if (howOftenFrequency && howOftenFrequency !== '5') {\r\n howOften += ` ${howOftenFrequencyText}`;\r\n }\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n\r\n let funding = '';\r\n if (fundingSource && fundingSource !== '8') {\r\n funding = fundingSourceDesc;\r\n } else {\r\n if (fundingSourceText) {\r\n funding = fundingSourceText;\r\n }\r\n }\r\n let service = '';\r\n if (serviceNameId && serviceNameId !== '47') {\r\n service = serviceName;\r\n } else {\r\n if (serviceOtherName) {\r\n service = serviceOtherName;\r\n }\r\n }\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n funding,\r\n service,\r\n providerName,\r\n scopeOfService,\r\n howOften,\r\n bDate,\r\n eDate,\r\n ],\r\n psData: {\r\n assessmentAreaId,\r\n providerId,\r\n providerName,\r\n serviceNameId,\r\n serviceNameOther,\r\n scopeOfService,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n beginDate,\r\n endDate,\r\n fundingSource,\r\n fundingSourceText,\r\n paidSupportsId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n function mapAdditionalSupportDataForTable(as) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const whoSupports = as.whoSupports;\r\n const whoSupportsText = planData.getRelationshipNameById(whoSupports);\r\n const whatSupportLooksLike = as.whatSupportLooksLike\r\n ? as.whatSupportLooksLike\r\n : as.whatSupportsLookLike;\r\n const howOftenValue = as.howOftenValue;\r\n const howOftenFrequency = as.howOftenFrequency;\r\n const howOftenText = as.howOftenText;\r\n const additionalSupportsId = as.additionalSupportsId;\r\n const rowOrder = as.rowOrder;\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[as.assessmentAreaId]) {\r\n assessmentAreaId = as.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const whenHowOftenDesc = howOftenFrequency\r\n ? getWhenHowOftenFrequencyById(howOftenFrequency)\r\n : '';\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n if (howOftenFrequency && howOftenFrequency !== '4') {\r\n howOften += ` ${whenHowOftenDesc}`;\r\n } else {\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n }\r\n\r\n return {\r\n tableValues: [assessmentArea, whoSupportsText, whatSupportLooksLike, howOften],\r\n asData: {\r\n assessmentAreaId,\r\n whoSupports,\r\n whatSupportLooksLike,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n additionalSupportsId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n function mapProfessionalReferralDataForTable(pr) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const newOrExisting = pr.newOrExisting;\r\n const whoSupports = pr.whoSupports;\r\n const whoSupportsText = planData.getRelationshipNameById(whoSupports);\r\n const reasonForReferral = pr.reasonForReferral;\r\n const professionalReferralId = pr.professionalReferralId;\r\n const rowOrder = pr.rowOrder;\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[pr.assessmentAreaId]) {\r\n assessmentAreaId = pr.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const newExisting = newOrExisting === '0' ? '' : newOrExisting === '1' ? 'New' : 'Existing';\r\n\r\n return {\r\n tableValues: [assessmentArea, newExisting, whoSupportsText, reasonForReferral],\r\n prData: {\r\n assessmentAreaId,\r\n newOrExisting,\r\n whoSupports,\r\n reasonForReferral,\r\n professionalReferralId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n // Counts\r\n function getNumberOfPaidSupports() {\r\n if (paidSupportsTable) {\r\n const tableBody = paidSupportsTable.querySelector('.table__body');\r\n const tableRows = [...tableBody.querySelectorAll('.table__row')];\r\n return tableRows.length;\r\n }\r\n }\r\n function getNumberOfAdditionalSupports(sectionId) {\r\n return additionalSupportsCount;\r\n }\r\n function getNumberOfProfessionalReferrals(sectionId) {\r\n return professionalReferralsCount;\r\n }\r\n function getHasPaidSupports() {\r\n return hasPaidSupports;\r\n }\r\n // VendorId\r\n function setInitialSelectedVendorIds() {\r\n selectedVendors = servicesSupportsData.paidSupport.reduce((acc, ps) => {\r\n if (ps.providerId && ps.providerId !== '') {\r\n acc.push({\r\n providerId: ps.providerId,\r\n providerName: ps.providerName ? ps.providerName : getProviderNameById(ps.providerId),\r\n row: ps.rowOrder,\r\n });\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }\r\n function getSelectedVendors() {\r\n return selectedVendors;\r\n }\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.providerId);\r\n return acc;\r\n }, []);\r\n }\r\n // funding source names\r\n function setInitialFundingSourceNames() {\r\n selectedFundingSources = servicesSupportsData.paidSupport.reduce((acc, ps) => {\r\n if (ps.fundingSource && ps.fundingSource !== '') {\r\n acc.push({\r\n fundingSource: ps.fundingSource,\r\n row: ps.rowOrder,\r\n });\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }\r\n function getSelectedFudningSourceNames() {\r\n return selectedFundingSources.reduce((acc, fs) => {\r\n if (getFundingSourceById(fs.fundingSource) == 'Other') {\r\n acc.push(servicesSupportsData.paidSupport[fs.row].fundingSourceText);\r\n } else {\r\n acc.push(getFundingSourceById(fs.fundingSource));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n // DROPDOWNS\r\n //------------------------------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentAreaId,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateFundingSourceDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.fundingSource.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n // if ($.session.applicationName === 'Advisor' && defaultValue === '') {\r\n // defaultValue = '4';\r\n // hcbsSelected = true;\r\n // }\r\n\r\n if (defaultValue && defaultValue !== '')\r\n fundingSourceDropdownSelectedText = data[defaultValue].text;\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n function populateServiceNameDropdown(dropdownEle, defaultValue, fundingSourceVal) {\r\n const data = [];\r\n dropdownData.serviceTypes.forEach(dd => {\r\n if (\r\n dd.showWith.includes(fundingSourceVal) ||\r\n (fundingSourceVal === '8' && dd.value === '47')\r\n ) {\r\n data.push({\r\n value: dd.value,\r\n text: dd.text,\r\n });\r\n }\r\n });\r\n\r\n data.sort((a, b) => a.text.localeCompare(b.text));\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n return defaultValue;\r\n }\r\n\r\n function populateOtherServiceTypesDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.serviceTypesOther.map(dd => {\r\n return {\r\n value: dd.serviceId,\r\n text: dd.serviceTypeDescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n async function populateMultiSelectServiceVendorsDropdown(dropdownEle, thisSelectedArray) {\r\n var test = dropdownEle;\r\n let thisfundingSourceSelectedText;\r\n let thisServiceNameSelectedText;\r\n\r\n let completeVendorList = [];\r\n\r\n for(let i = 0; i < thisSelectedArray.length; i++) {\r\n\r\n thisfundingSourceSelectedText = thisSelectedArray[i].fundingSourceName;\r\n thisServiceNameSelectedText = thisSelectedArray[i].serviceName;\r\n\r\n const { getPaidSupportsVendorsResult: vendorNumbers } =\r\n await servicesSupportsAjax.getPaidSupportsVendors(\r\n thisfundingSourceSelectedText,\r\n thisServiceNameSelectedText,\r\n );\r\n\r\n completeVendorList.push(...vendorNumbers);\r\n };\r\n\r\n var test6 = {vendorId: \"7500002\", vendorName: \"RMS of Ohio, Inc.\"};\r\n var test7 = {vendorId: \"7500001\", vendorName: \"IHS Services\"};\r\n var test8 = {vendorId: \"7500002\", vendorName: \"XX\"};\r\n var test9 = {vendorId: \"7500001\", vendorName: \"XXXX\"};\r\n // completeVendorList.push(test6);\r\n // completeVendorList.push(test6);\r\n // completeVendorList.push(test7);\r\n //completeVendorList.push(test7);\r\n // completeVendorList.push(test8);\r\n // completeVendorList.push(test9);\r\n\r\n // Filter original concat list to just the vendors that have more than one in the list\r\n const duplicateVendors = completeVendorList.filter((item, index, self) => {\r\n return self.findIndex(t => t.vendorId === item.vendorId) !== index;\r\n });\r\n\r\n // need to get duplicateVendors list down to just the vendors with the correct number of occurances\r\n let minOccurancePaidSupports;\r\n // thisSelectedArray.length = 3\r\n if (thisSelectedArray.length > 2) {\r\n minOccurancePaidSupports = removeDuplicatesBasedOnCount(duplicateVendors, 'vendorId', thisSelectedArray.length);\r\n } else {\r\n minOccurancePaidSupports = duplicateVendors;\r\n }\r\n\r\n let minOccurancePaidSupportsFiltered = removeDuplicateObjects(minOccurancePaidSupports, 'vendorId')\r\n\r\n let vendorArray = [];\r\n // vendorArray contains the duplicate vendors data in Dropdown data formnat\r\n minOccurancePaidSupportsFiltered.forEach(row => {\r\n let thisVendorObject = {value: row.vendorId, text: row.vendorName }\r\n vendorArray.push(thisVendorObject);\r\n });\r\n\r\n vendorArray.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n if (vendorArray.length > 0) {\r\n vendorArray.unshift({ value: '', text: '[SELECT A PROVIDER]' });\r\n } else {\r\n vendorArray.unshift({ value: '', text: 'No Common Provider' });\r\n }\r\n\r\n dropdown.populate(dropdownEle, vendorArray);\r\n\r\n return;\r\n }\r\n\r\n async function populateServiceVendorsDropdown(dropdownEle, defaultValue, ignoreGuardClauses) {\r\n // const data = dropdownData.serviceVendors.map(dd => {\r\n // return {\r\n // value: dd.vendorId,\r\n // text: dd.vendorName,\r\n // };\r\n // });\r\n // let data = vendorNumbers.map(vendorNumber => ({\r\n // value: vendorNumber.vendorId,\r\n // text: vendorNumber.vendorName,\r\n // }));\r\n\r\n if (!ignoreGuardClauses) {\r\n // handles populating provider DDL when: 1. a service has just been selected 2. a service already exists for an existing record\r\n // Guard clause -- if no fundingSource selected , therefore no data in serviceVEndorDropDown\r\n if (!fundingSourceDropdownSelectedText || fundingSourceDropdownSelectedText == '') {\r\n const thisVendorDropDownData = [].map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n if (thisVendorDropDownData.length === 1) {\r\n defaultValue = thisVendorDropDownData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n thisVendorDropDownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(dropdownEle, thisVendorDropDownData, defaultValue);\r\n\r\n return;\r\n }\r\n\r\n // Guard clause --if HCBS/ICF fundingSource selected but no service selected, therefore no data in serviceVEndorDropDown\r\n if (\r\n (fundingSourceDropdownSelectedText.includes('HCBS') ||\r\n fundingSourceDropdownSelectedText.includes('ICF')) &&\r\n servicesDropdownSelectedText == '%'\r\n ) {\r\n const thisVendorDropDownData = [].map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n if (thisVendorDropDownData.length === 1) {\r\n defaultValue = thisVendorDropDownData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n thisVendorDropDownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(dropdownEle, thisVendorDropDownData, defaultValue);\r\n\r\n return;\r\n }\r\n }\r\n\r\n // if guard clauses are not used (see above), then repopulate serviceVEndorDropDown\r\n const { getPaidSupportsVendorsResult: vendorNumbers } =\r\n await servicesSupportsAjax.getPaidSupportsVendors(\r\n fundingSourceDropdownSelectedText,\r\n servicesDropdownSelectedText,\r\n );\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const nonPaidSupportData = vendorNumbers.filter(\r\n provider => selectedVendorIds.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = vendorNumbers.filter(\r\n provider => selectedVendorIds.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n nonPaidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n paidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ss_providerDropdown_paidSupportProviders',\r\n dropdownValues: paidSupportDropdownData,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ss_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: nonPaidSupportDropdownData,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (paidSupportDropdownData.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n const tempData = [...nonPaidSupportDropdownData, ...paidSupportDropdownData];\r\n if (tempData.length === 1) {\r\n defaultValue = tempData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: defaultValue,\r\n });\r\n }\r\n\r\n function populateHowOftenHowMuchFrequencyDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.howOftenHowMuchFrequency, defaultValue);\r\n }\r\n function populateWhenHowOftenFrequencyDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.whenHowOftenFrequency, defaultValue);\r\n }\r\n function populateNewOrExistingDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.newOrExisting, defaultValue);\r\n }\r\n\r\n function getAssessmentAreaById(id) {\r\n const filteredAssessment = dropdownData.assessmentAreas.filter(\r\n dd => dd.assessmentAreaId === id,\r\n );\r\n return filteredAssessment.length > 0 ? filteredAssessment[0].assessmentArea : '';\r\n }\r\n function getProviderNameById(id) {\r\n const filteredProvider = dropdownData.serviceVendors.filter(dd => dd.vendorId === id);\r\n return filteredProvider.length > 0 ? filteredProvider[0].vendorName : '';\r\n }\r\n function getServiceNameById(id) {\r\n const filteredService = dropdownData.serviceTypes.filter(dd => dd.value === id);\r\n return filteredService.length > 0 ? filteredService[0].text : '';\r\n }\r\n function getOtherServiceNameById(id) {\r\n const filteredService = dropdownData.serviceTypesOther.filter(dd => dd.serviceId === id);\r\n return filteredService.length > 0 ? filteredService[0].serviceTypeDescription : '';\r\n }\r\n function getFundingSourceById(id) {\r\n const filteredFunding = dropdownData.fundingSource.filter(dd => dd.value === id);\r\n return filteredFunding.length > 0 ? filteredFunding[0].text : '';\r\n }\r\n function getHowOftenHowMuchFrequencyById(id) {\r\n const filteredFrequency = dropdownData.howOftenHowMuchFrequency.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n function getWhenHowOftenFrequencyById(id) {\r\n const filteredFrequency = dropdownData.whenHowOftenFrequency.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n\r\n // PAID SUPPORTS\r\n //------------------------------------------------------\r\n async function insertPaidSupport(saveData, fromAssessment) {\r\n const { scopeOfService, fundingSourceText, howOftenText, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const paidSupportId = await servicesSupportsAjax.insertPaidSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n scopeOfService: scopeOfService,\r\n fundingSourceText: fundingSourceText,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(paidSupportId.replace('[', '').replace(']', ''));\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n paidSupportsId: parsedId.paidSupportsId,\r\n ...saveData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n table.addRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n providerName: psData.providerName,\r\n row: psData.rowOrder,\r\n });\r\n selectedFundingSources.push({\r\n fundingSource: psData.fundingSource,\r\n row: psData.rowOrder,\r\n });\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n // Summary questions that require paid supports\r\n const numPaidSupports = getNumberOfPaidSupports();\r\n planSummary.checkForPaidSupports(numPaidSupports);\r\n }\r\n async function updatePaidSupport(updateData) {\r\n const { scopeOfService, fundingSourceText, howOftenText, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updatePaidSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n scopeOfService: scopeOfService,\r\n fundingSourceText: fundingSourceText,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n table.updateRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors = selectedVendors.filter(vendor => vendor.rowOrder !== psData.rowOrder);\r\n selectedFundingSources = selectedFundingSources.filter(fs => fs.rowOrder !== psData.rowOrder);\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n row: psData.rowOrder,\r\n });\r\n selectedFundingSources.push({\r\n fundingSource: psData.fundingSource,\r\n row: psData.rowOrder,\r\n });\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n }\r\n async function deletePaidSupport(paidSupportId) {\r\n await servicesSupportsAjax.deletePaidSupports({\r\n token: $.session.Token,\r\n paidSupportsId: paidSupportId,\r\n });\r\n\r\n table.deleteRow(`ps${paidSupportId}`);\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n // Summary questions that require paid supports\r\n const numPaidSupports = getNumberOfPaidSupports();\r\n planSummary.checkForPaidSupports(numPaidSupports);\r\n }\r\n function updatePaidSupportsRowFromMultiEdit(multiSaveUpdateData) {\r\n selectedPaidSupportRows.forEach(row => {\r\n const { rowNode, ...tableData } = row;\r\n\r\n if (multiSaveUpdateData.beginDate !== '') {\r\n tableData.beginDate = multiSaveUpdateData.beginDate;\r\n }\r\n if (multiSaveUpdateData.endDate !== '') {\r\n tableData.endDate = multiSaveUpdateData.endDate;\r\n }\r\n if (multiSaveUpdateData.providerId !== '0' && multiSaveUpdateData.providerId !== '') {\r\n tableData.providerId = multiSaveUpdateData.providerId;\r\n }\r\n\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n ...tableData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n if (multiSaveUpdateData.providerId !== '0' && multiSaveUpdateData.providerId !== '') {\r\n tableValues.providerName = multiSaveUpdateData.providerName;\r\n psData.providerName = multiSaveUpdateData.providerName;\r\n }\r\n\r\n table.updateRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: event => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors = selectedVendors.filter(vendor => vendor.rowOrder !== psData.rowOrder);\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n row: psData.rowOrder,\r\n });\r\n });\r\n }\r\n function checkForMatchingFundingSourceAndSeriviceNames(paidSupportRows) {\r\n // grab the first row to set values\r\n const fundingSource = paidSupportRows[0].fundingSource;\r\n const serviceNameId = paidSupportRows[0].serviceNameId;\r\n return paidSupportRows.every(psRow => {\r\n return psRow.fundingSource === fundingSource && psRow.serviceNameId === serviceNameId;\r\n });\r\n }\r\n //-- Markup ---------\r\n function toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn) {\r\n if (\r\n multiSaveUpdateData.beginDate !== '' ||\r\n multiSaveUpdateData.endDate !== '' ||\r\n multiSaveUpdateData.providerId !== ''\r\n ) {\r\n updateBtn.classList.remove('disabled');\r\n return;\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n // updateBtn.classList.remove('disabled');\r\n }\r\n function showMultiEditPopup() {\r\n let multiSaveUpdateData = {\r\n beginDate: '',\r\n endDate: '',\r\n providerId: '',\r\n providerName: '',\r\n };\r\n\r\n const multiEditPopup = POPUP.build({\r\n header: 'Update Paid Supports',\r\n classNames: 'multiEditPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('popupMessage');\r\n message.innerText = `Fields left blank will not be updated`;\r\n\r\n // set all multiselct data \r\n let thisSelectedPaidSupportItems = [];\r\n selectedPaidSupportRows.forEach(row => {\r\n let thisfundingSource = getFundingSourceById(row.fundingSource);\r\n let thisserviceName = getServiceNameById(row.serviceNameId);\r\n let thisSelectedObject = {fundingSourceName: thisfundingSource, serviceName: thisserviceName }\r\n thisSelectedPaidSupportItems.push(thisSelectedObject);\r\n });\r\n\r\n // set fundingSourceDropdownSelectedText & servicesDropdownSelectedText\r\n const fundingSource = getFundingSourceById(selectedPaidSupportRows[0].fundingSource);\r\n const serviceName = getServiceNameById(selectedPaidSupportRows[0].serviceNameId);\r\n fundingSourceDropdownSelectedText = fundingSource;\r\n servicesDropdownSelectedText = serviceName;\r\n\r\n // check for matching funding source and service names\r\n const matchingRows = checkForMatchingFundingSourceAndSeriviceNames(selectedPaidSupportRows);\r\n\r\n const providerNameDropdown = dropdown.build({\r\n dropdownId: 'providerNameDropdownPS',\r\n label: '*Provider Name',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n multiSaveUpdateData.providerId = selectedOption.value;\r\n multiSaveUpdateData.providerName = selectedOption.innerText;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n // if (!matchingRows) {\r\n // input.disableInputField(providerNameDropdown);\r\n // }\r\n\r\n const beginDateInput = input.build({\r\n label: 'Begin Date',\r\n type: 'date',\r\n style: 'secondary',\r\n // value: multiSaveUpdateData.beginDate,\r\n callback: e => {\r\n multiSaveUpdateData.beginDate = e.target.value;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n const endDateInput = input.build({\r\n label: 'End Date',\r\n type: 'date',\r\n style: 'secondary',\r\n // value: multiSaveUpdateData.endDate,\r\n callback: e => {\r\n multiSaveUpdateData.endDate = e.target.value;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('btnWrap');\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n await servicesSupportsAjax.updateMultiPaidSupports({\r\n token: $.session.Token,\r\n beginDate:\r\n multiSaveUpdateData.beginDate !== '' ? multiSaveUpdateData.beginDate : '1900-01-01',\r\n endDate: multiSaveUpdateData.endDate !== '' ? multiSaveUpdateData.endDate : '1900-01-01',\r\n providerId: multiSaveUpdateData.providerId !== '' ? multiSaveUpdateData.providerId : '0',\r\n paidSupportsId: selectedPaidSupportIds.join(','),\r\n });\r\n\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n multiEditBtn.classList.toggle('enabled');\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n updatePaidSupportsRowFromMultiEdit(multiSaveUpdateData);\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n\r\n POPUP.hide(multiEditPopup);\r\n\r\n enableMultiEdit = false;\r\n fundingSourceDropdownSelectedText = '';\r\n servicesDropdownSelectedText = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(multiEditPopup);\r\n },\r\n });\r\n\r\n wrap.appendChild(updateBtn);\r\n wrap.appendChild(cancelBtn);\r\n\r\n multiEditPopup.appendChild(message);\r\n multiEditPopup.appendChild(beginDateInput);\r\n multiEditPopup.appendChild(endDateInput);\r\n multiEditPopup.appendChild(providerNameDropdown);\r\n multiEditPopup.appendChild(wrap);\r\n\r\n // populateServiceVendorsDropdown(providerNameDropdown, multiSaveUpdateData.providerId);\r\n populateMultiSelectServiceVendorsDropdown(providerNameDropdown, thisSelectedPaidSupportItems);\r\n\r\n POPUP.show(multiEditPopup);\r\n }\r\n function buildMultiRowEdit() {\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('mutliEditBtnWrap');\r\n\r\n multiEditBtn = button.build({\r\n text: 'Multi Select Supports',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiEditBtn',\r\n callback: () => {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n multiEditBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n multiEditUpdateBtn.classList.remove('hidden');\r\n multiEditCancelBtn.classList.remove('hidden');\r\n } else {\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n },\r\n });\r\n\r\n multiEditUpdateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n showMultiEditPopup();\r\n },\r\n });\r\n multiEditCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n enableMultiEdit = false;\r\n multiEditBtn.classList.toggle('enabled');\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n },\r\n });\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n wrap.appendChild(multiEditBtn);\r\n wrap.appendChild(multiEditUpdateBtn);\r\n wrap.appendChild(multiEditCancelBtn);\r\n\r\n return wrap;\r\n }\r\n function togglePaidSupportDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.paidSupportPopup .error');\r\n const doneBtn = document.querySelector('.paidSupportPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddPaidSupportPopup({ popupData, isNew, fromAssessment, isCopy, charLimits }) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n providerId: !popupData.providerId ? '' : popupData.providerId,\r\n serviceNameId: !popupData.serviceNameId ? '' : popupData.serviceNameId,\r\n serviceNameOther: !popupData.serviceNameOther ? '' : popupData.serviceNameOther,\r\n scopeOfService: !popupData.scopeOfService ? '' : popupData.scopeOfService,\r\n howOftenValue: !popupData.howOftenValue ? '' : popupData.howOftenValue,\r\n howOftenFrequency: !popupData.howOftenFrequency ? '' : popupData.howOftenFrequency,\r\n howOftenText: !popupData.howOftenText ? '' : popupData.howOftenText,\r\n beginDate: !popupData.beginDate ? '' : popupData.beginDate,\r\n endDate: !popupData.endDate ? '' : popupData.endDate,\r\n fundingSource: !popupData.fundingSource ? '' : popupData.fundingSource,\r\n fundingSourceText: !popupData.fundingSourceText ? '' : popupData.fundingSourceText,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) {\r\n saveUpdateData.paidSupportsId = popupData.paidSupportsId;\r\n } else {\r\n if (!isCopy) {\r\n saveUpdateData.beginDate = UTIL.formatDateFromDateObj(planDates.getEffectiveStartDate());\r\n saveUpdateData.endDate = UTIL.formatDateFromDateObj(planDates.getEffectiveEndDate());\r\n }\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor' && saveUpdateData.fundingSource === '') {\r\n hcbsSelected = true;\r\n saveUpdateData.fundingSource = '4';\r\n }\r\n\r\n const availableServiceTypes = [];\r\n const data = [];\r\n dropdownData.serviceTypes.forEach(dd => {\r\n if (dd.showWith.includes(saveUpdateData.fundingSource)) {\r\n availableServiceTypes.push(dd.value);\r\n data.push({\r\n value: dd.value,\r\n text: dd.text,\r\n });\r\n }\r\n });\r\n\r\n if (availableServiceTypes.includes(saveUpdateData.serviceNameId)) {\r\n let servicesDropdownSelected = data.find(e => e.value === saveUpdateData.serviceNameId);\r\n servicesDropdownSelectedText = servicesDropdownSelected.text;\r\n } else {\r\n if (saveUpdateData.fundingSource === '8') {\r\n servicesDropdownSelectedText = 'Other (please specify)';\r\n } else {\r\n saveUpdateData.serviceNameId = $.session.applicationName === 'Advisor' ? '24' : '%';\r\n }\r\n }\r\n\r\n // Popup\r\n const paidSupportPopup = POPUP.build({\r\n header: isNew ? 'Add Paid Support' : 'Edit Paid Support',\r\n classNames: 'paidSupportPopup',\r\n hideX: true,\r\n });\r\n\r\n // Asessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownPS',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Funding Source Drop Down\r\n const fundingSourceDropdown = dropdown.build({\r\n dropdownId: 'fundingSourceDropdownPS',\r\n label: '*Funding Source',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n saveUpdateData.fundingSource = selectedOption.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n serviceNameDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.remove('disabled');\r\n serviceNameOtherDropdown.classList.add('error');\r\n\r\n saveUpdateData.serviceNameId = populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n '47',\r\n '5',\r\n );\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, '%');\r\n } else {\r\n serviceNameDropdown.classList.remove('disabled');\r\n\r\n saveUpdateData.serviceNameId = populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n saveUpdateData.serviceNameId,\r\n selectedOption.value,\r\n );\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, '%');\r\n }\r\n\r\n // store currently selected fundingSource (fundingSourceDropdownSelectedText) for use when populating the vendor dropdown\r\n // store type of fundingSource (hcbsSelected) for use when populating service and vendor dropdowns\r\n fundingSourceDropdownSelectedText = selectedOption.innerText;\r\n if (selectedOption.innerText.includes('HCBS') || selectedOption.innerText.includes('ICF')) {\r\n hcbsSelected = true;\r\n } else {\r\n hcbsSelected = false;\r\n }\r\n\r\n if (hcbsSelected) {\r\n providerNameDropdown.classList.remove('disabled');\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n } else {\r\n // re-enable provider dropdown if it was disabled\r\n providerNameDropdown.classList.remove('disabled');\r\n providerNameDropdown.classList.add('error');\r\n\r\n // non-waver -- get all Active Providers\r\n servicesDropdownSelectedText = '%';\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n\r\n if (saveUpdateData.fundingSource === '5') {\r\n // if 'State Plan Services' is selected, disable Provider Name Dropdown\r\n providerNameDropdown.querySelector('select').selectedIndex = -1;\r\n saveUpdateData.providerId = '';\r\n providerNameDropdown.classList.remove('error');\r\n providerNameDropdown.classList.add('disabled');\r\n }\r\n\r\n // validation of fundingSource DDL\r\n if (saveUpdateData.fundingSource === '' || saveUpdateData.fundingSource === '%') {\r\n fundingSourceDropdown.classList.add('error');\r\n } else {\r\n fundingSourceDropdown.classList.remove('error');\r\n }\r\n\r\n // validation of fundingSource Input\r\n const fundingSourceInputField = fundingSourceInput.querySelector('.input-field__input');\r\n\r\n // enable/disable funding source text input\r\n if (saveUpdateData.fundingSource === '8') {\r\n fundingSourceInput.classList.remove('disabled');\r\n fundingSourceInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n fundingSourceInput.classList.add('disabled');\r\n fundingSourceInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.fundingSourceText = '';\r\n const textInput = fundingSourceInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n await validateServicesDropdown();\r\n validateProviderDropdown();\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n\r\n async function validateServicesDropdown() {\r\n // Validation of Services DDL after selecting from fundingSource DDL\r\n const servicesDropdownSelect = document.querySelector('#serviceNameDropdownPS');\r\n const servicesOtherDropdownSelect = document.querySelector('#serviceNameOtherDropdownPS');\r\n\r\n if (hcbsSelected) {\r\n if (\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex] &&\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text !== ''\r\n ) {\r\n servicesDropdownSelectedText =\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text;\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n } else {\r\n servicesDropdownSelectedText = '';\r\n saveUpdateData.providerId = '';\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n }\r\n\r\n if (servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex]) {\r\n servicesDropdownSelectedText =\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text;\r\n } else {\r\n servicesDropdownSelectedText = '';\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n saveUpdateData.serviceNameOther = '';\r\n }\r\n\r\n // if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%' || servicesDropdownSelectedText === '') {\r\n if (servicesDropdownSelectedText === '') {\r\n serviceNameDropdown.classList.add('error');\r\n } else {\r\n serviceNameDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n function validateProviderDropdown() {\r\n // Validation of Provider DDL after selecting from fundingSource DDL\r\n const providerDropdown = document.querySelector('#providerNameDropdownPS');\r\n\r\n if (\r\n providerDropdown.options[providerDropdown.selectedIndex] &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerDropdownSelectedText =\r\n providerDropdown.options[providerDropdown.selectedIndex].text;\r\n } else {\r\n providerDropdownSelectedText = '';\r\n }\r\n\r\n // if (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%' || saveUpdateData.providerId === '[SELECT A PROVIDER]') {\r\n if (\r\n (providerDropdownSelectedText === '' ||\r\n providerDropdownSelectedText === '[SELECT A PROVIDER]') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n } else {\r\n providerNameDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n // Funding Source Other\r\n const fundingSourceInput = input.build({\r\n type: 'textarea',\r\n label: '*Funding Source Other',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.fundingSourceText,\r\n charLimit: charLimits.fundingSourceOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!fundingSourceInput.classList.contains('disabled')) {\r\n saveUpdateData.fundingSourceText = e.target.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n fundingSourceInput.classList.add('fundingSourceInput');\r\n fundingSourceInput.addEventListener('input', e => {\r\n if (!fundingSourceInput.classList.contains('disabled')) {\r\n saveUpdateData.fundingSourceText = e.target.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n if (saveUpdateData.fundingSource !== '8') {\r\n const fundingSourceInputField = fundingSourceInput.querySelector('.input-field__input');\r\n fundingSourceInputField.setAttribute('tabindex', '-1');\r\n fundingSourceInput.classList.add('disabled');\r\n }\r\n // Provider Name\r\n const providerNameDropdown = dropdown.build({\r\n dropdownId: 'providerNameDropdownPS',\r\n label: '*Provider Name',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.providerId = selectedOption.value;\r\n if (\r\n (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n } else {\r\n providerNameDropdown.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Service Name\r\n const serviceNameDropdown = dropdown.build({\r\n dropdownId: 'serviceNameDropdownPS',\r\n label: '*Service Name',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n saveUpdateData.serviceNameId = selectedOption.value;\r\n servicesDropdownSelectedText = selectedOption.text;\r\n // saveUpdateData.providerId = '';\r\n\r\n // store currently selected fundingSource (fundingSourceDropdownSelectedText) for use when populating the vendor dropdown\r\n // store type of fundingSource (hcbsSelected) for use when populating service and vendor dropdowns\r\n const fundingSourceDropdown = document.querySelector('#fundingSourceDropdownPS');\r\n fundingSourceDropdownSelectedText =\r\n fundingSourceDropdown.options[fundingSourceDropdown.selectedIndex].text;\r\n if (\r\n fundingSourceDropdownSelectedText.includes('HCBS') ||\r\n fundingSourceDropdownSelectedText.includes('ICF')\r\n ) {\r\n hcbsSelected = true;\r\n } else {\r\n hcbsSelected = false;\r\n }\r\n\r\n if (hcbsSelected) {\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n\r\n // Validation of Services DDL\r\n if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%') {\r\n serviceNameDropdown.classList.add('error');\r\n } else {\r\n serviceNameDropdown.classList.remove('error');\r\n }\r\n\r\n // validation of Service Name Other DDL\r\n if (saveUpdateData.serviceNameId === '47') {\r\n serviceNameOtherDropdown.classList.remove('disabled');\r\n serviceNameOtherDropdown.classList.add('error');\r\n } else {\r\n document.getElementById('serviceNameOtherDropdownPS').value = '%';\r\n saveUpdateData.serviceNameOther = '';\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.remove('error');\r\n }\r\n\r\n validateProviderDropdown();\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n }); // End -- Service Drop Down Handling\r\n\r\n // Service Name Other\r\n const serviceNameOtherDropdown = dropdown.build({\r\n dropdownId: 'serviceNameOtherDropdownPS',\r\n label: '*Service Name Other',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.serviceNameOther = selectedOption.value === '%' ? '' : selectedOption.value;\r\n if (saveUpdateData.serviceNameOther === '' || saveUpdateData.serviceNameOther === '%') {\r\n serviceNameOtherDropdown.classList.add('error');\r\n } else {\r\n serviceNameOtherDropdown.classList.remove('error');\r\n }\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Scope Of Service\r\n const scopeOfserviceInput = input.build({\r\n label: '*Scope of Service / What support looks like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.scopeOfService,\r\n charLimit: charLimits.scopeOfService,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.scopeOfService = e.target.value;\r\n\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n } else {\r\n scopeOfserviceInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n scopeOfserviceInput.classList.add('scopeOfService');\r\n scopeOfserviceInput.addEventListener('input', e => {\r\n saveUpdateData.scopeOfService = e.target.value;\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n } else {\r\n scopeOfserviceInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n // How Often/How Much Value\r\n const howOftenHowMuchValueInput = input.build({\r\n type: 'textarea',\r\n label: '*How Often/How Much',\r\n style: 'secondary',\r\n value: saveUpdateData.howOftenValue,\r\n classNames: 'autosize',\r\n charLimit: charLimits.howOftenHowMuch,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchValueInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n howOftenHowMuchValueInput.classList.add('howOftenHowMuchValueInput');\r\n howOftenHowMuchValueInput.addEventListener('input', e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchValueInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n // How Often/How Much Freq\r\n const howOftenHowMuchFrequencyDropdown = dropdown.build({\r\n dropdownId: 'howOftenHowMuchDropdownPS',\r\n label: '*How Often/How Much Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.howOftenFrequency = selectedOption.value;\r\n\r\n const howOftenHowMuchTextInputField =\r\n howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n howOftenHowMuchFrequencyDropdown.classList.add('error');\r\n } else {\r\n howOftenHowMuchFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n howOftenHowMuchTextInput.classList.remove('disabled');\r\n howOftenHowMuchTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n howOftenHowMuchTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.howOftenText = '';\r\n const textInput = howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // How Often/How Much Other\r\n const howOftenHowMuchTextInput = input.build({\r\n type: 'textarea',\r\n label: '*How Often/How Much Other',\r\n style: 'secondary',\r\n value: saveUpdateData.howOftenText,\r\n classNames: 'autosize',\r\n charLimit: charLimits.howOftenOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!howOftenHowMuchTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n }\r\n },\r\n });\r\n howOftenHowMuchTextInput.classList.add('howOftenHowMuchTextInput');\r\n howOftenHowMuchTextInput.addEventListener('input', e => {\r\n if (!howOftenHowMuchTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n }\r\n });\r\n if (saveUpdateData.howOftenFrequency !== '5') {\r\n const howOftenHowMuchTextInputField =\r\n howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n howOftenHowMuchTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n // Begin Date\r\n const beginDateInput = input.build({\r\n label: 'Begin Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: saveUpdateData.beginDate,\r\n callback: e => {\r\n saveUpdateData.beginDate = e.target.value;\r\n if (saveUpdateData.beginDate === '') {\r\n beginDateInput.classList.add('error');\r\n } else {\r\n beginDateInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // End Date\r\n const endDateInput = input.build({\r\n label: 'End Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: saveUpdateData.endDate,\r\n callback: e => {\r\n saveUpdateData.endDate = e.target.value;\r\n if (saveUpdateData.endDate === '') {\r\n endDateInput.classList.add('error');\r\n } else {\r\n endDateInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isCopy ? 'Save Copy' : isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n if (fromAssessment) {\r\n saveUpdateData.rowOrder = 0;\r\n planID = plan.getCurrentPlanId();\r\n } else {\r\n const rowOrder = table.getRowCount('paidSupportsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n await insertPaidSupport(saveUpdateData, fromAssessment);\r\n } else {\r\n await updatePaidSupport(saveUpdateData);\r\n }\r\n\r\n const vendorIds = getSelectedVendorIds();\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(paidSupportPopup);\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n\r\n let ISPValidation = await planValidation.ISPValidation(planID);\r\n planValidation.checkExperiencesAfterAddingNewPaidSupport(ISPValidation);\r\n planValidation.updatedIspOutcomesSetAlerts(ISPValidation);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(paidSupportPopup);\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this Paid Support?';\r\n ISP.showDeleteWarning(paidSupportPopup, message, async () => {\r\n await deletePaidSupport(saveUpdateData.paidSupportsId);\r\n\r\n let ISPValidation = await planValidation.ISPValidation(planID);\r\n planValidation.checkExperiencesAfterAddingNewPaidSupport(ISPValidation);\r\n planValidation.updatedIspOutcomesSetAlerts(ISPValidation);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n });\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (\r\n (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%') {\r\n serviceNameDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.serviceNameId !== '47') {\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n } else if (saveUpdateData.serviceNameOther === '' || saveUpdateData.serviceNameOther === '%') {\r\n serviceNameOtherDropdown.classList.add('error');\r\n }\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n howOftenHowMuchFrequencyDropdown.classList.add('error');\r\n }\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (saveUpdateData.beginDate === '') {\r\n beginDateInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.endDate === '') {\r\n endDateInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.fundingSource === '' || saveUpdateData.fundingSource === '%') {\r\n fundingSourceDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.fundingSource === '8') {\r\n fundingSourceInput.classList.remove('disabled');\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n providerNameDropdown.classList.add('disabled');\r\n serviceNameDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n scopeOfserviceInput.classList.add('disabled');\r\n howOftenHowMuchValueInput.classList.add('disabled');\r\n howOftenHowMuchFrequencyDropdown.classList.add('disabled');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n beginDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n fundingSourceDropdown.classList.add('disabled');\r\n fundingSourceInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n if (saveUpdateData.fundingSource === '8') {\r\n serviceNameDropdown.classList.add('disabled');\r\n }\r\n }\r\n\r\n // popup assemble!!\r\n const left = document.createElement('div');\r\n left.classList.add('left');\r\n left.appendChild(assessmentAreaDropdown);\r\n left.appendChild(fundingSourceDropdown);\r\n left.appendChild(fundingSourceInput);\r\n left.appendChild(serviceNameDropdown);\r\n left.appendChild(serviceNameOtherDropdown);\r\n left.appendChild(providerNameDropdown);\r\n const right = document.createElement('div');\r\n right.classList.add('right');\r\n right.appendChild(scopeOfserviceInput);\r\n right.appendChild(howOftenHowMuchValueInput);\r\n right.appendChild(howOftenHowMuchFrequencyDropdown);\r\n right.appendChild(howOftenHowMuchTextInput);\r\n right.appendChild(beginDateInput);\r\n right.appendChild(endDateInput);\r\n\r\n paidSupportPopup.appendChild(left);\r\n paidSupportPopup.appendChild(right);\r\n paidSupportPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, saveUpdateData.serviceNameOther);\r\n populateHowOftenHowMuchFrequencyDropdown(\r\n howOftenHowMuchFrequencyDropdown,\r\n saveUpdateData.howOftenFrequency,\r\n );\r\n populateFundingSourceDropdown(fundingSourceDropdown, saveUpdateData.fundingSource);\r\n\r\n if (isNew && $.session.applicationName === 'Advisor') {\r\n populateServiceNameDropdown(serviceNameDropdown, '24', '4');\r\n\r\n fundingSourceDropdown.classList.remove('error');\r\n serviceNameDropdown.classList.remove('error');\r\n } else {\r\n populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n saveUpdateData.serviceNameId,\r\n saveUpdateData.fundingSource,\r\n );\r\n }\r\n\r\n populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n\r\n // if fundingSourceDropdown is set to State Plan Services, then disable providerNameDropdown\r\n if (saveUpdateData.fundingSource === '5') {\r\n providerNameDropdown.querySelector('select').selectedIndex = -1;\r\n providerNameDropdown.classList.remove('error');\r\n providerNameDropdown.classList.add('disabled');\r\n }\r\n\r\n if (saveUpdateData && saveUpdateData.providerId === '') {\r\n fundingSourceDropdownSelectedText = '';\r\n servicesDropdownSelectedText = '';\r\n providerDropdownSelectedText = '';\r\n }\r\n\r\n POPUP.show(paidSupportPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addPaidSupportRow() {\r\n showAddPaidSupportPopup({ popupData: {}, isNew: true, charLimits });\r\n }\r\n function getPaidSupportsMarkup() {\r\n const paidSupportsDiv = document.createElement('div');\r\n paidSupportsDiv.classList.add('ispPaidSupports');\r\n paidSupportsDiv.classList.add('ispServicesSection');\r\n\r\n paidSupportsTable = table.build({\r\n tableId: 'paidSupportsTable',\r\n headline: 'Paid Supports',\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Funding Source',\r\n 'Service Name',\r\n 'Provider Name',\r\n 'Scope of Service/ What support looks like',\r\n 'How Often / How Much',\r\n 'Begin Date',\r\n 'End Date',\r\n ],\r\n sortable: isSortable,\r\n allowCopy: isReadOnly === true ? false : true,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('ps', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updatePaidSupportsRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n supportId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n let number = 0;\r\n // Set the data type for each header, for sorting purposes\r\n const headers = paidSupportsTable.querySelectorAll('.header div');\r\n if (headers.length > 9) \r\n number = 1;\r\n\r\n headers[0 + number].setAttribute('data-type', 'string'); // Assessment Area\r\n headers[1 + number].setAttribute('data-type', 'string'); // Funding Source\r\n headers[2 + number].setAttribute('data-type', 'string'); // Service Name\r\n headers[3 + number].setAttribute('data-type', 'string'); // Provider Name\r\n headers[4 + number].setAttribute('data-type', 'string'); // Scope of Service/ What support looks like\r\n headers[5 + number].setAttribute('data-type', 'string'); // How Often / How Much\r\n headers[6 + number].setAttribute('data-type', 'date'); // Begin Date\r\n headers[7 + number].setAttribute(\"data-type\", \"date\"); // End Date \r\n\r\n table.sortTableByHeader(paidSupportsTable);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Paid Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addPaidSupportRow(),\r\n });\r\n addRowBtn.classList.add('addRowBtnPaidSupports');\r\n\r\n // multi edit section\r\n mutliEditBtnWrap = buildMultiRowEdit();\r\n\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n multiEditBtn.classList.add('disabled');\r\n }\r\n\r\n if (servicesSupportsData && servicesSupportsData.paidSupport) {\r\n const tableData = servicesSupportsData.paidSupport\r\n .sort((a, b) => {\r\n return parseInt(a.rowOrder) < parseInt(b.rowOrder)\r\n ? -1\r\n : parseInt(a.rowOrder) > parseInt(b.rowOrder)\r\n ? 1\r\n : 0;\r\n })\r\n .map(ps => {\r\n const { tableValues, psData } = mapPaidSupportDataForTable(ps);\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: psData.assessmentAreaId }],\r\n onClick: event => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly || enableMultiEdit) return;\r\n\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n };\r\n });\r\n\r\n table.populate(paidSupportsTable, tableData, isSortable, isReadOnly);\r\n }\r\n\r\n btnWrap.appendChild(addRowBtn);\r\n btnWrap.appendChild(mutliEditBtnWrap);\r\n\r\n paidSupportsDiv.appendChild(paidSupportsTable);\r\n paidSupportsDiv.appendChild(btnWrap);\r\n\r\n return paidSupportsDiv;\r\n }\r\n\r\n // ADDITIONAL SUPPORTS\r\n //------------------------------------------------------\r\n async function insertAdditionalSupport(saveData, fromAssessment) {\r\n const { whoSupports, whatSupportLooksLike, howOftenText, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const additionalSupportId = await servicesSupportsAjax.insertAdditionalSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n whatSupportLooksLike: whatSupportLooksLike,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(additionalSupportId.replace('[', '').replace(']', ''));\r\n const { tableValues, asData } = mapAdditionalSupportDataForTable({\r\n additionalSupportsId: parsedId.additionalSupportsId,\r\n ...saveData,\r\n });\r\n const rowId = `as${asData.additionalSupportsId}`;\r\n\r\n table.addRows(\r\n additionalSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, false, false, charLimits);\r\n },\r\n endIcon: isReadOnly == true ? '' : `${icons['copy']}`,\r\n endIconCallback: (e) => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, true, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function updateAdditionalSupport(updateData) {\r\n const { whoSupports, whatSupportLooksLike, howOftenText, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updateAdditionalSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n whatSupportLooksLike: whatSupportLooksLike,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, asData } = mapAdditionalSupportDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `as${asData.additionalSupportsId}`;\r\n\r\n table.updateRows(\r\n additionalSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, false, false, charLimits);\r\n },\r\n endIcon: isReadOnly == true ? '' : `${icons['copy']}`,\r\n endIconCallback: (e) => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, true, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function deleteAdditionalSupport(additionalSupportData) {\r\n await servicesSupportsAjax.deleteAdditionalSupports({\r\n token: $.session.Token,\r\n additionalSupportsId: additionalSupportData.additionalSupportsId,\r\n });\r\n\r\n table.deleteRow(`as${additionalSupportData.additionalSupportsId}`);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n }\r\n //-- Markup ---------\r\n function toggleAdditionalSupportDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.additionalSupportPopup .error');\r\n const doneBtn = document.querySelector('.additionalSupportPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddAdditionalSupportPopup(popupData, isNew, fromAssessment, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n whoSupports: !popupData.whoSupports ? '' : popupData.whoSupports,\r\n whatSupportLooksLike: !popupData.whatSupportLooksLike ? '' : popupData.whatSupportLooksLike,\r\n howOftenValue: !popupData.howOftenValue ? '' : popupData.howOftenValue,\r\n howOftenFrequency: !popupData.howOftenFrequency ? '' : popupData.howOftenFrequency,\r\n howOftenText: !popupData.howOftenText ? '' : popupData.howOftenText,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) saveUpdateData.additionalSupportsId = popupData.additionalSupportsId;\r\n\r\n const additionalSupportPopup = POPUP.build({\r\n header: isNew ? 'Add Additional Support' : 'Edit Additional Support',\r\n classNames: 'additionalSupportPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownAS',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Who Supports\r\n const whoSupportsDropdown = dropdown.build({\r\n label: '*Who Supports',\r\n dropdownId: 'whoSupportsDropdown',\r\n readonly: isReadOnly,\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.whoSupports = selectedOption.value;\r\n\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n } else {\r\n whoSupportsDropdown.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n\r\n // What Support Looks LIke\r\n const whatSupportLooksLikeInput = input.build({\r\n label: '*What Support Looks Like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatSupportLooksLike,\r\n charLimit: charLimits.whatSupportLooksLike,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.whatSupportLooksLike = e.target.value;\r\n if (saveUpdateData.whatSupportLooksLike === '') {\r\n whatSupportLooksLikeInput.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n whatSupportLooksLikeInput.classList.add('whatSupportLooksLike');\r\n whatSupportLooksLikeInput.addEventListener('input', e => {\r\n saveUpdateData.whatSupportLooksLike = e.target.value;\r\n if (saveUpdateData.whatSupportLooksLike === '') {\r\n whatSupportLooksLikeInput.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n });\r\n // When/How Often Value\r\n const whenHowOftenValueInput = input.build({\r\n type: 'textarea',\r\n label: '*When/How Often',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howOftenValue,\r\n charLimit: charLimits.whenHowOften,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n } else {\r\n whenHowOftenValueInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n whenHowOftenValueInput.classList.add('whenHowOftenValueInput');\r\n whenHowOftenValueInput.addEventListener('input', e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n } else {\r\n whenHowOftenValueInput.classList.remove('error');\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n });\r\n // When/How Often Freq\r\n const whenHowOftenFrequencyDropdown = dropdown.build({\r\n dropdownId: 'whenHowOftenDropdownPS',\r\n label: '*When/How Often Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.howOftenFrequency = selectedOption.value;\r\n\r\n const whenHowOftenTextInputField =\r\n whenHowOftenTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n } else {\r\n whenHowOftenFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n whenHowOftenTextInput.classList.remove('disabled');\r\n whenHowOftenTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.howOftenText = '';\r\n const textInput = whenHowOftenTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n },\r\n });\r\n // When/How Often Other\r\n const whenHowOftenTextInput = input.build({\r\n type: 'textarea',\r\n label: '*When/How Often Other',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howOftenText,\r\n charLimit: charLimits.whenHowOftenOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!whenHowOftenTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n }\r\n },\r\n });\r\n whenHowOftenTextInput.classList.add('whenHowOftenTextInput');\r\n whenHowOftenTextInput.addEventListener('input', e => {\r\n if (!whenHowOftenTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n } else {\r\n whenHowOftenTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n toggleAdditionalSupportDoneBtn();\r\n }\r\n });\r\n if (saveUpdateData.howOftenFrequency !== '4') {\r\n const whenHowOftenTextInputField = whenHowOftenTextInput.querySelector('.input-field__input');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n whenHowOftenTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n if (isNew) {\r\n if (fromAssessment) {\r\n planID = plan.getCurrentPlanId();\r\n saveUpdateData.rowOrder = 0;\r\n } else {\r\n const rowOrder = table.getRowCount('additionalSupportsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n insertAdditionalSupport(saveUpdateData, fromAssessment);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(\r\n assessmentPlanValidation,\r\n saveUpdateData.assessmentAreaId,\r\n );\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n } else {\r\n updateAdditionalSupport(saveUpdateData);\r\n }\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(additionalSupportPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(additionalSupportPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n const message = 'Do you want to delete this Additional Support?';\r\n ISP.showDeleteWarning(additionalSupportPopup, message, () => {\r\n deleteAdditionalSupport(saveUpdateData);\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whatSupportLooksLike === '') {\r\n whatSupportLooksLikeInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenValue === '') {\r\n whenHowOftenValueInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n whenHowOftenFrequencyDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '4') {\r\n if (saveUpdateData.howOftenText === '') {\r\n whenHowOftenTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n whoSupportsDropdown.classList.add('disabled');\r\n whatSupportLooksLikeInput.classList.add('disabled');\r\n whenHowOftenValueInput.classList.add('disabled');\r\n whenHowOftenFrequencyDropdown.classList.add('disabled');\r\n whenHowOftenTextInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n additionalSupportPopup.appendChild(assessmentAreaDropdown);\r\n additionalSupportPopup.appendChild(whoSupportsDropdown);\r\n additionalSupportPopup.appendChild(whatSupportLooksLikeInput);\r\n additionalSupportPopup.appendChild(whenHowOftenValueInput);\r\n additionalSupportPopup.appendChild(whenHowOftenFrequencyDropdown);\r\n additionalSupportPopup.appendChild(whenHowOftenTextInput);\r\n additionalSupportPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateWhenHowOftenFrequencyDropdown(\r\n whenHowOftenFrequencyDropdown,\r\n saveUpdateData.howOftenFrequency,\r\n );\r\n planData.populateRelationshipDropdown(whoSupportsDropdown, saveUpdateData.whoSupports);\r\n\r\n POPUP.show(additionalSupportPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addAdditionalSupportRow() {\r\n showAddAdditionalSupportPopup({}, true, false, charLimits);\r\n }\r\n function getAdditionalSupportsMarkup() {\r\n const additionalSupportsDiv = document.createElement('div');\r\n additionalSupportsDiv.classList.add('ispAdditionalSupports');\r\n additionalSupportsDiv.classList.add('ispServicesSection');\r\n\r\n additionalSupportsTable = table.build({\r\n tableId: 'additionalSupportsTable',\r\n headline: `Additional Supports: Family, friends, community resources, technology, etc.`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Who Supports',\r\n 'What Support Looks Like',\r\n 'When/How Often',\r\n ],\r\n endIcon: isReadOnly ? false : true,\r\n sortable: isSortable,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('as', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updateAdditionalSupportsRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n addSupportId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n let number = 0;\r\n // Set the data type for each header, for sorting purposes\r\n const headers = additionalSupportsTable.querySelectorAll('.header div');\r\n if (headers.length > 5) \r\n number = 1;\r\n\r\n headers[0 + number].setAttribute('data-type', 'string'); // Assessment Area\r\n headers[1 + number].setAttribute('data-type', 'string'); // Who Supports\r\n headers[2 + number].setAttribute('data-type', 'string'); // What Support Looks Like\r\n headers[3 + number].setAttribute('data-type', 'string'); // When/How Often\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(additionalSupportsTable);\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Additional Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addAdditionalSupportRow(),\r\n });\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n }\r\n\r\n if (servicesSupportsData && servicesSupportsData.additionalSupport) {\r\n const tableData = servicesSupportsData.additionalSupport\r\n .sort((a, b) => {\r\n return parseInt(a.rowOrder) < parseInt(b.rowOrder)\r\n ? -1\r\n : parseInt(a.rowOrder) > parseInt(b.rowOrder)\r\n ? 1\r\n : 0;\r\n })\r\n .map(as => {\r\n const { tableValues, asData } = mapAdditionalSupportDataForTable(as);\r\n const rowId = `as${asData.additionalSupportsId}`;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: asData.assessmentAreaId }],\r\n onClick: () => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, false, false, charLimits);\r\n },\r\n endIcon: isReadOnly == true ? '' : `${icons['copy']}`,\r\n endIconCallback: (e) => {\r\n if (isReadOnly == true)\r\n return;\r\n else\r\n showAddAdditionalSupportPopup(asData, true, false, charLimits);\r\n },\r\n };\r\n });\r\n\r\n table.populate(additionalSupportsTable, tableData, isSortable);\r\n }\r\n\r\n additionalSupportsDiv.appendChild(additionalSupportsTable);\r\n additionalSupportsDiv.appendChild(addRowBtn);\r\n\r\n return additionalSupportsDiv;\r\n }\r\n\r\n // PROFESSIONAL REFERRALS\r\n //------------------------------------------------------\r\n async function insertProfessionalReferral(saveData, fromAssessment) {\r\n const { whoSupports, reasonForReferral, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const profRefId = await servicesSupportsAjax.insertProfessionalReferral({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n reasonForReferral: reasonForReferral,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(profRefId.replace('[', '').replace(']', ''));\r\n const { tableValues, prData } = mapProfessionalReferralDataForTable({\r\n professionalReferralId: parsedId.professionalReferralId,\r\n ...saveData,\r\n });\r\n const rowId = `pr${prData.professionalReferralId}`;\r\n\r\n table.addRows(\r\n professionalReferralsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n showAddProfessionalReferralPopup(prData, false, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function updateProfessionalReferral(updateData) {\r\n const { whoSupports, reasonForReferral, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updateProfessionalReferral({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n whoSupports: whoSupports,\r\n reasonForReferral: reasonForReferral,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, prData } = mapProfessionalReferralDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `pr${prData.professionalReferralId}`;\r\n\r\n table.updateRows(\r\n professionalReferralsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n showAddProfessionalReferralPopup(prData, false, false, charLimits);\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n }\r\n async function deleteProfessionalReferral(saveUpdateData) {\r\n await servicesSupportsAjax.deleteProfessionalReferral({\r\n token: $.session.Token,\r\n professionalReferralId: saveUpdateData.professionalReferralId,\r\n });\r\n\r\n table.deleteRow(`pr${saveUpdateData.professionalReferralId}`);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n }\r\n //-- Markup ---------\r\n function toggleProfessionalReferralDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.professionalReferralPopup .error');\r\n const doneBtn = document.querySelector('.professionalReferralPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddProfessionalReferralPopup(popupData, isNew, fromAssessment, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n newOrExisting: !popupData.newOrExisting ? '' : popupData.newOrExisting,\r\n whoSupports: !popupData.whoSupports ? '' : popupData.whoSupports,\r\n reasonForReferral: !popupData.reasonForReferral ? '' : popupData.reasonForReferral,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) saveUpdateData.professionalReferralId = popupData.professionalReferralId;\r\n\r\n // Popup\r\n const professionalReferralPopup = POPUP.build({\r\n header: isNew ? 'Add Professional Referral' : 'Edit Professional Referral',\r\n classNames: 'professionalReferralPopup',\r\n hideX: true,\r\n });\r\n\r\n // Asessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownAS',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // New Or Existing\r\n const newOrExistingDropdown = dropdown.build({\r\n dropdownId: 'newOrExistingDropdown',\r\n label: '*New or Existing',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.newOrExisting = selectedOption.value;\r\n if (saveUpdateData.newOrExisting === '' || saveUpdateData.newOrExisting === '%') {\r\n newOrExistingDropdown.classList.add('error');\r\n } else {\r\n newOrExistingDropdown.classList.remove('error');\r\n }\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n // Who Supports\r\n const whoSupportsDropdown = dropdown.build({\r\n label: '*Who Supports',\r\n dropdownId: 'whoSupportsDropdown',\r\n readonly: isReadOnly,\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.whoSupports = selectedOption.value;\r\n\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n } else {\r\n whoSupportsDropdown.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n\r\n // Reason For Referral\r\n const reasonForReferralInput = input.build({\r\n label: '*Reason For Referral',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.reasonForReferral,\r\n charLimit: charLimits.reasonForReferral,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.reasonForReferral = e.target.value;\r\n if (saveUpdateData.reasonForReferral === '') {\r\n reasonForReferralInput.classList.add('error');\r\n } else {\r\n reasonForReferralInput.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n },\r\n });\r\n reasonForReferralInput.classList.add('reasonForReferral');\r\n reasonForReferralInput.addEventListener('keyup', e => {\r\n saveUpdateData.reasonForReferral = e.target.value;\r\n if (saveUpdateData.reasonForReferral === '') {\r\n reasonForReferralInput.classList.add('error');\r\n } else {\r\n reasonForReferralInput.classList.remove('error');\r\n }\r\n\r\n toggleProfessionalReferralDoneBtn();\r\n });\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n if (fromAssessment) {\r\n saveUpdateData.rowOrder = 0;\r\n planID = plan.getCurrentPlanId();\r\n } else {\r\n const rowOrder = table.getRowCount('professionalReferralsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n\r\n insertProfessionalReferral(saveUpdateData, fromAssessment);\r\n } else {\r\n updateProfessionalReferral(saveUpdateData);\r\n }\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(professionalReferralPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(professionalReferralPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n const message = 'Do you want to delete this Professional Referral?';\r\n ISP.showDeleteWarning(professionalReferralPopup, message, () => {\r\n deleteProfessionalReferral(saveUpdateData);\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.newOrExisting === '' || saveUpdateData.newOrExisting === '%') {\r\n newOrExistingDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.whoSupports === '') {\r\n whoSupportsDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.reasonForReferral === '') {\r\n reasonForReferralInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n newOrExistingDropdown.classList.add('disabled');\r\n whoSupportsDropdown.classList.add('disabled');\r\n reasonForReferralInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n professionalReferralPopup.appendChild(assessmentAreaDropdown);\r\n professionalReferralPopup.appendChild(newOrExistingDropdown);\r\n professionalReferralPopup.appendChild(whoSupportsDropdown);\r\n professionalReferralPopup.appendChild(reasonForReferralInput);\r\n professionalReferralPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateNewOrExistingDropdown(newOrExistingDropdown, saveUpdateData.newOrExisting);\r\n planData.populateRelationshipDropdown(whoSupportsDropdown, saveUpdateData.whoSupports);\r\n\r\n POPUP.show(professionalReferralPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addProfessionalReferralRow() {\r\n showAddProfessionalReferralPopup({}, true, false, charLimits);\r\n }\r\n function getProfessionalReferralsMarkup() {\r\n const professionalReferralsDiv = document.createElement('div');\r\n professionalReferralsDiv.classList.add('ispProfessionalReferrals');\r\n professionalReferralsDiv.classList.add('ispServicesSection');\r\n\r\n professionalReferralsTable = table.build({\r\n tableId: 'professionalReferralsTable',\r\n headline: `Professional Referrals: Medical professionals, therapists, etc.`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'New or Existing',\r\n 'Who Supports',\r\n 'Reason for Referral',\r\n // 'When/How Often',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('pr', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updateServiceReferralRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n referralId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n\r\n // Set the data type for each header, for sorting purposes\r\n let number = 0;\r\n const headers = professionalReferralsTable.querySelectorAll('.header div');\r\n if (headers.length > 4)\r\n number = 1;\r\n headers[0 + number].setAttribute('data-type', 'string'); // Assessment Area\r\n headers[1 + number].setAttribute('data-type', 'string'); // New or Existing\r\n headers[2 + number].setAttribute('data-type', 'string'); // Who Supports \r\n headers[3 + number].setAttribute('data-type', 'string'); // Reason for Referral\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(professionalReferralsTable);\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Referral',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addProfessionalReferralRow(),\r\n });\r\n if (isReadOnly) {\r\n addRowBtn.classList.add('disabled');\r\n }\r\n\r\n if (servicesSupportsData && servicesSupportsData.professionalReferral) {\r\n const tableData = servicesSupportsData.professionalReferral\r\n .sort((a, b) => {\r\n return parseInt(a.rowOrder) < parseInt(b.rowOrder)\r\n ? -1\r\n : parseInt(a.rowOrder) > parseInt(b.rowOrder)\r\n ? 1\r\n : 0;\r\n })\r\n .map(pr => {\r\n const { tableValues, prData } = mapProfessionalReferralDataForTable(pr);\r\n const rowId = `pr${prData.professionalReferralId}`;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: prData.assessmentAreaId }],\r\n onClick: () => {\r\n showAddProfessionalReferralPopup(prData, false, false, charLimits);\r\n },\r\n };\r\n });\r\n\r\n table.populate(professionalReferralsTable, tableData, isSortable);\r\n }\r\n\r\n professionalReferralsDiv.appendChild(professionalReferralsTable);\r\n professionalReferralsDiv.appendChild(addRowBtn);\r\n\r\n return professionalReferralsDiv;\r\n }\r\n\r\n // SS MODIFICATIONS\r\n //------------------------------------------------------\r\n async function insertSSModification(saveData) {\r\n modificationsId = await servicesSupportsAjax.insertSSModifications({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n ...saveData,\r\n });\r\n }\r\n async function updateSSModification(updateData) {\r\n await servicesSupportsAjax.updateSSModifications({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n modificationsId,\r\n ...updateData,\r\n });\r\n }\r\n async function deleteSSModification(ssId) {\r\n await servicesSupportsAjax.deleteProfessionalReferral({\r\n token: $.session.Token,\r\n modificationsId: ssId,\r\n });\r\n }\r\n //-- Markup ---------\r\n function getSSModificationsMarkup() {\r\n const { supportModification } = servicesSupportsData;\r\n\r\n const saveUpdateData = {\r\n medicalRate: supportModification[0]\r\n ? supportModification[0].medicalRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n behaviorRate: supportModification[0]\r\n ? supportModification[0].behaviorRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n icfRate: supportModification[0] ? (supportModification[0].icfRate === 't' ? 't' : 'f') : 'f',\r\n complexRate: supportModification[0]\r\n ? supportModification[0].complexRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n developmentalRate: supportModification[0]\r\n ? supportModification[0].developmentalRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n childIntensiveRate: supportModification[0]\r\n ? supportModification[0].childIntensiveRate === 't'\r\n ? 't'\r\n : 'f'\r\n : 'f',\r\n };\r\n\r\n const modificationDiv = document.createElement('div');\r\n modificationDiv.classList.add('ispModification');\r\n modificationDiv.classList.add('ispServicesSection');\r\n\r\n const heading = document.createElement('h3');\r\n heading.classList.add('subSectionHeading');\r\n heading.innerHTML = 'Modifications';\r\n modificationDiv.appendChild(heading);\r\n\r\n const tagline = document.createElement('p');\r\n tagline.classList.add('subSectionHeadingTagline');\r\n tagline.innerHTML = 'Does this person meet criteria for any add-ons? Select all that apply.';\r\n modificationDiv.appendChild(tagline);\r\n\r\n const checkboxGroup = document.createElement('div');\r\n checkboxGroup.classList.add('checkboxGroup');\r\n\r\n const medicalRateCheckbox = input.buildCheckbox({\r\n text: 'Medical Assistance',\r\n isChecked: saveUpdateData.medicalRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.medicalRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const behaviorRateCheckbox = input.buildCheckbox({\r\n text: 'Behavior Support',\r\n isChecked: saveUpdateData.behaviorRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.behaviorRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const icfRateCheckbox = input.buildCheckbox({\r\n text: 'Intermediate Care Facility',\r\n isChecked: saveUpdateData.icfRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.icfRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const complexRateCheckbox = input.buildCheckbox({\r\n text: 'Complex Care',\r\n isChecked: saveUpdateData.complexRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.complexRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const developmentalRateCheckbox = input.buildCheckbox({\r\n text: 'Developmental Center',\r\n isChecked: saveUpdateData.developmentalRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.developmentalRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n const childIntensiveRateCheckbox = input.buildCheckbox({\r\n text: `Children's Intensive Behavioral Support`,\r\n isChecked: saveUpdateData.childIntensiveRate === 't' ? true : false,\r\n callback: e => {\r\n saveUpdateData.childIntensiveRate = e.target.checked ? 't' : 'f';\r\n updateSSModification(saveUpdateData);\r\n },\r\n });\r\n\r\n if (isReadOnly) {\r\n const checkboxes = [\r\n medicalRateCheckbox,\r\n behaviorRateCheckbox,\r\n icfRateCheckbox,\r\n complexRateCheckbox,\r\n developmentalRateCheckbox,\r\n childIntensiveRateCheckbox,\r\n ];\r\n\r\n checkboxes.forEach(cb => {\r\n const cbi = cb.querySelector('input');\r\n cbi.setAttribute('disabled', true);\r\n });\r\n }\r\n\r\n checkboxGroup.appendChild(medicalRateCheckbox);\r\n checkboxGroup.appendChild(behaviorRateCheckbox);\r\n checkboxGroup.appendChild(icfRateCheckbox);\r\n checkboxGroup.appendChild(complexRateCheckbox);\r\n checkboxGroup.appendChild(developmentalRateCheckbox);\r\n checkboxGroup.appendChild(childIntensiveRateCheckbox);\r\n\r\n modificationDiv.appendChild(checkboxGroup);\r\n\r\n return modificationDiv;\r\n }\r\n\r\n // -- Manipulate MULTI SELECT Provider DROP DOWN DATA to display Vendors shared by all Selected Paid Supports\r\n // Code below (1.,2.,3.) is used to find the intersection (SQL) of the Vendor Lists associated with each selected Paid Supports\r\n // 1. From the original data (arr), remove the elements that don't have the minimum number\r\n function removeDuplicatesBasedOnCount(arr, prop, count) {\r\n let occurrences = countOccurrences(arr, prop);\r\n return arr.filter(obj => {\r\n let key = JSON.stringify(obj[prop]);\r\n return occurrences[key] >= count-1;\r\n });\r\n }\r\n // 2. IN original data (arr), count number of occurances of a property value \r\n function countOccurrences(arr, prop) {\r\n return arr.reduce((a, obj) => {\r\n let key = JSON.stringify(obj[prop]);\r\n if (!a[key]) {\r\n a[key] = 0;\r\n }\r\n a[key]++;\r\n return a;\r\n }, {});\r\n }\r\n // 3. Now have list of elements with minimumn number of occurences, but you just need one occurance for final Vendor DropDown display\r\n function removeDuplicateObjects(array, property) {\r\n const uniqueIds = [];\r\n\r\n const unique = array.filter(element => {\r\n const isDuplicate = uniqueIds.includes(element[property]);\r\n\r\n if (!isDuplicate) {\r\n uniqueIds.push(element[property]);\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return unique;\r\n }\r\n\r\n // MAIN\r\n //------------------------------------------------------\r\n function getMarkup() {\r\n const servicesSupportsDiv = document.createElement('div');\r\n servicesSupportsDiv.classList.add('servicesSupports');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Services And Supports';\r\n heading.classList.add('sectionHeading');\r\n servicesSupportsDiv.appendChild(heading);\r\n\r\n const paidSec = getPaidSupportsMarkup();\r\n const additionalSec = getAdditionalSupportsMarkup();\r\n const profRefSec = getProfessionalReferralsMarkup();\r\n const modsSec = getSSModificationsMarkup();\r\n\r\n servicesSupportsDiv.appendChild(paidSec);\r\n servicesSupportsDiv.appendChild(modsSec);\r\n servicesSupportsDiv.appendChild(additionalSec);\r\n servicesSupportsDiv.appendChild(profRefSec);\r\n\r\n return servicesSupportsDiv;\r\n }\r\n\r\n async function init({ planId, readOnly, data }) {\r\n planID = planId;\r\n isReadOnly = readOnly;\r\n servicesSupportsData = data;\r\n dropdownData = planData.getDropdownData();\r\n charLimits = planData.getISPCharacterLimits('servicesSupports');\r\n enableMultiEdit = false;\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n hasPaidSupports =\r\n servicesSupportsData && servicesSupportsData.paidSupport.length > 0 ? true : false;\r\n\r\n setInitialSelectedVendorIds();\r\n setInitialFundingSourceNames();\r\n\r\n if (\r\n !servicesSupportsData ||\r\n !servicesSupportsData.supportModification[0] ||\r\n !servicesSupportsData.supportModification[0].modificationsId\r\n ) {\r\n await insertSSModification({\r\n medicalRate: 'f',\r\n behaviorRate: 'f',\r\n icfRate: 'f',\r\n complexRate: 'f',\r\n developmentalRate: 'f',\r\n childIntensiveRate: 'f',\r\n });\r\n } else {\r\n modificationsId = servicesSupportsData.supportModification[0].modificationsId;\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n getNumberOfPaidSupports,\r\n getNumberOfAdditionalSupports,\r\n getNumberOfProfessionalReferrals,\r\n getHasPaidSupports,\r\n getSelectedVendors,\r\n getSelectedVendorIds,\r\n getSelectedFudningSourceNames,\r\n getFundingSourceById,\r\n showAddPaidSupportPopup,\r\n showAddAdditionalSupportPopup,\r\n showAddProfessionalReferralPopup,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const servicesSupportsAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getServicesAndSupports(retrieveData) {\r\n // string token, anywAssessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServicesAndSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getServicesAndSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // ADD PAID SUPPORT Popup -- Vendors/Providers DDL\r\n async function getPaidSupportsVendors(fundingSourceName, serviceName) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPaidSupportsVendors/',\r\n data: JSON.stringify({\r\n fundingSourceName: fundingSourceName,\r\n serviceName: serviceName,\r\n areInSalesForce: $.session.areInSalesForce,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertSSModifications(retrieveData) {\r\n // token, anywAssessmentId, medicalRate, behaviorRate, icfRate,\r\n // complexRate, developmentalRate, childIntensiveRate\r\n\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertSSModifications/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertSSModificationsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertProfessionalReferral(retrieveData) {\r\n // string token, anywAssessmentId, assessmentAreaId,\r\n // newOrExisting, whoSupports, reasonForReferral, rowOrder\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertProfessionalReferral/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertProfessionalReferralResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertAdditionalSupports(retrieveData) {\r\n // string token, anywAssessmentId, assessmentAreaId, whoSupports,\r\n // whatSupportLooksLike, howOftenValue, howOftenFrequency, howOftenText, rowOrder\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAdditionalSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertAdditionalSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPaidSupports(retrieveData) {\r\n // token, anywAssessmentId, providerId, assessmentAreaId,\r\n // serviceNameId, scopeOfService, howOftenValue, howOftenFrequency,\r\n // howOftenText, beginDate, endDate, fundingSource, fundingSourceText, rowOrder\r\n // serviceNameOther\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.providerId !== '') {\r\n retrieveData.providerId = parseInt(retrieveData.providerId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.serviceNameId !== '') {\r\n retrieveData.serviceNameId = parseInt(retrieveData.serviceNameId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.fundingSource !== '') {\r\n retrieveData.fundingSource = parseInt(retrieveData.fundingSource);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //------------------------------------\r\n async function updateSSModifications(retrieveData) {\r\n // token, modificationsId, anywAssessmentId, medicalRate, behaviorRate, icfRate,\r\n // complexRate, developmentalRate, childIntensiveRate\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.modificationsId !== '') {\r\n retrieveData.modificationsId = parseInt(retrieveData.modificationsId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateSSModifications/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateSSModificationsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateProfessionalReferral(retrieveData) {\r\n // string token, professionalReferralId, anywAssessmentId,\r\n // assessmentAreaId, newOrExisting, whoSupports, reasonForReferral\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.professionalReferralId !== '') {\r\n retrieveData.professionalReferralId = parseInt(retrieveData.professionalReferralId);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateProfessionalReferral/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateProfessionalReferralResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateAdditionalSupports(retrieveData) {\r\n // token, additionalSupportsId, anywAssessmentId, assessmentAreaId,\r\n // whoSupports, whatSupportLooksLike, howOftenValue, howOftenFrequency, howOftenText\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.additionalSupportsId !== '') {\r\n retrieveData.additionalSupportsId = parseInt(retrieveData.additionalSupportsId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAdditionalSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAdditionalSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePaidSupports(retrieveData) {\r\n // token, paidSupportsId, anywAssessmentId, providerId,\r\n // assessmentAreaId, serviceNameId, scopeOfService, howOftenValue,\r\n // howOftenFrequency, howOftenText, beginDate, endDate,\r\n // fundingSource, fundingSourceText, serviceNameOther\r\n\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n if (retrieveData.paidSupportsId !== '') {\r\n retrieveData.paidSupportsId = parseInt(retrieveData.paidSupportsId);\r\n }\r\n if (retrieveData.assessmentAreaId !== '') {\r\n retrieveData.assessmentAreaId = parseInt(retrieveData.assessmentAreaId);\r\n }\r\n if (retrieveData.providerId !== '') {\r\n retrieveData.providerId = parseInt(retrieveData.providerId);\r\n }\r\n if (retrieveData.serviceNameId !== '') {\r\n retrieveData.serviceNameId = parseInt(retrieveData.serviceNameId);\r\n }\r\n if (retrieveData.howOftenFrequency !== '') {\r\n retrieveData.howOftenFrequency = parseInt(retrieveData.howOftenFrequency);\r\n }\r\n if (retrieveData.fundingSource !== '') {\r\n retrieveData.fundingSource = parseInt(retrieveData.fundingSource);\r\n }\r\n if (retrieveData.rowOrder !== '') {\r\n retrieveData.rowOrder = parseInt(retrieveData.rowOrder);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateMultiPaidSupports(retrieveData) {\r\n if (retrieveData.providerId !== '') {\r\n retrieveData.providerId = parseInt(retrieveData.providerId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateMultiPaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateMultiPaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // row re-order\r\n //------------------\r\n async function updatePaidSupportsRowOrder(retrieveData) {\r\n // string token, long assessmentId, long supportId, int newPos, int oldPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePaidSupportsRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePaidSupportsRowOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateAdditionalSupportsRowOrder(retrieveData) {\r\n // string token, long assessmentId, long addSupportId, int newPos, int oldPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAdditionalSupportsRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAdditionalSupportsRowOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateServiceReferralRowOrder(retrieveData) {\r\n // string token, long assessmentId, long refrerralId, int newPos, int oldPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateServiceReferralRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateServiceReferralRowOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deleteSSModifications(retrieveData) {\r\n // string token, string modificationsId\r\n\r\n retrieveData.modificationsId = parseInt(retrieveData.modificationsId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteSSModifications/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deleteSSModificationsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deleteProfessionalReferral(retrieveData) {\r\n // string token, string professionalReferralId\r\n\r\n retrieveData.professionalReferralId = parseInt(retrieveData.professionalReferralId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteProfessionalReferral/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deleteProfessionalReferralResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deleteAdditionalSupports(retrieveData) {\r\n // string token, long additionalSupportsId\r\n\r\n retrieveData.additionalSupportsId = parseInt(retrieveData.additionalSupportsId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAdditionalSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deleteAdditionalSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePaidSupports(retrieveData) {\r\n // string token, long paidSupportsId\r\n\r\n retrieveData.paidSupportsId = parseInt(retrieveData.paidSupportsId);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePaidSupports/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePaidSupportsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getServicesAndSupports,\r\n getPaidSupportsVendors,\r\n insertSSModifications,\r\n insertAdditionalSupports,\r\n insertProfessionalReferral,\r\n insertPaidSupports,\r\n updatePaidSupports,\r\n updateProfessionalReferral,\r\n updateSSModifications,\r\n updateAdditionalSupports,\r\n updatePaidSupportsRowOrder,\r\n updateServiceReferralRowOrder,\r\n updateAdditionalSupportsRowOrder,\r\n updateMultiPaidSupports,\r\n deleteProfessionalReferral,\r\n deleteAdditionalSupports,\r\n deleteSSModifications,\r\n deletePaidSupports,\r\n };\r\n})();\r\n","const planSummary = (function () {\r\n let isReadOnly;\r\n let isSortable;\r\n let planId; // aka: assessmentId\r\n let charLimits;\r\n // data\r\n let summaryData;\r\n let dropdownData;\r\n let additionalSummaryData;\r\n // data map\r\n let sectionIdMap = {};\r\n let sectionOrderMap = {};\r\n let questionIdMap = {};\r\n let questionSetIdMap = {};\r\n let tablesToHide = {};\r\n // Summary additional questions\r\n let amountOfTimeQuestion;\r\n let backupPlanQuestion;\r\n let hasPaidSupports;\r\n // Selected Vendors => Risks/WhoResponsible\r\n let selectedVendors = {};\r\n\r\n // UTILS\r\n //----------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapSummaryData(data) {\r\n if (!data) return [];\r\n\r\n return data.reduce(\r\n (acc, val) => {\r\n let dataName;\r\n const questionText = val.questionText;\r\n\r\n if (questionText.includes('Important')) {\r\n dataName = 'importantTableData';\r\n } else if (\r\n questionText.includes('Skills') ||\r\n questionText.includes('Best way to connect') ||\r\n questionText.includes('Place on path to')\r\n ) {\r\n dataName = 'skillsTableData';\r\n } else {\r\n dataName = 'risksTableData';\r\n }\r\n\r\n const sectionId = val.sectionId;\r\n const sectionTitle = val.sectionTitle;\r\n const sectionOrder = val.sectionOrder;\r\n const row = val.answerRow;\r\n const answer = val.answer;\r\n const answerId = val.answerId;\r\n const answerStyle = val.answerStyle;\r\n const questionId = val.questionId;\r\n const questionSetId = val.questionSetId;\r\n\r\n if (!acc[dataName][sectionTitle]) acc[dataName][sectionTitle] = {};\r\n if (!acc[dataName][sectionTitle][row]) acc[dataName][sectionTitle][row] = {};\r\n\r\n let questionCol;\r\n\r\n if (questionText.includes('Important')) {\r\n questionCol = questionText.includes('Important To') ? 'importantTo' : 'importantFor';\r\n } else {\r\n questionCol = questionText.includes('Best way to connect with the person')\r\n ? 'communication'\r\n : questionText.includes('Place on path to')\r\n ? 'dailyLife'\r\n : questionText.includes('Skills')\r\n ? 'skillAbility'\r\n : questionText.includes('What is the risk, what it looks like')\r\n ? 'whatIsRisk'\r\n : questionText.includes('What support must look like')\r\n ? 'whatSupportLooksLike'\r\n : questionText.includes('Does this risk require supervision')\r\n ? 'riskSupervision'\r\n : 'whoResponsible';\r\n }\r\n\r\n acc[dataName][sectionTitle][row][questionCol] = {\r\n answer,\r\n answerId,\r\n answerStyle,\r\n questionId,\r\n questionSetId,\r\n };\r\n\r\n // Section Order Map\r\n if (!sectionOrderMap[sectionOrder]) {\r\n sectionOrderMap[sectionOrder] = sectionTitle;\r\n }\r\n\r\n // Section Id Map\r\n if (!sectionIdMap[sectionTitle]) {\r\n sectionIdMap[sectionTitle] = sectionId;\r\n }\r\n\r\n // Question ID Map\r\n if (!questionIdMap[dataName]) {\r\n questionIdMap[dataName] = {};\r\n }\r\n if (!questionIdMap[dataName][sectionTitle]) {\r\n questionIdMap[dataName][sectionTitle] = {};\r\n }\r\n if (!questionIdMap[dataName][sectionTitle][questionCol]) {\r\n questionIdMap[dataName][sectionTitle][questionCol] = questionId;\r\n }\r\n // QuestionSet ID Map\r\n if (!questionSetIdMap[dataName]) {\r\n questionSetIdMap[dataName] = {};\r\n }\r\n if (!questionSetIdMap[dataName][sectionTitle]) {\r\n questionSetIdMap[dataName][sectionTitle] = questionSetId;\r\n }\r\n\r\n return acc;\r\n },\r\n {\r\n importantTableData: {},\r\n skillsTableData: {},\r\n risksTableData: {},\r\n },\r\n );\r\n }\r\n async function deleteTableRow(questionSetId, rowsToDelete, rowId, dataSection, section) {\r\n await assessmentAjax.deleteAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n assessmentQuestionSetId: questionSetId,\r\n rowsToDelete: [rowsToDelete],\r\n });\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n\r\n const rowToDelete = document.getElementById(rowId);\r\n const tableBody = rowToDelete.parentNode;\r\n\r\n table.deleteRow(rowId);\r\n\r\n //* FOR RE-ORDERING ROWS ON DELETE\r\n const rowsLeftOver = [...tableBody.querySelectorAll('.table__row')];\r\n rowsLeftOver.forEach(async (row, i) => {\r\n const rowIdText = row.id.replace(/[0-9]/g, '');\r\n const order = parseInt(row.id.replaceAll(/\\D+/g, ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n row.id = `${rowIdText}${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n function updateRowOrder(evt) {\r\n const newPos = evt.newIndex + 1;\r\n const oldPos = evt.oldIndex + 1;\r\n\r\n assessmentAjax.updateAssessmentAnswerRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planId),\r\n questionSetId: parseInt(evt.row.dataset.questionsetid),\r\n answerIds: evt.row.dataset.answerids,\r\n newPos: parseInt(newPos),\r\n oldPos: parseInt(oldPos),\r\n });\r\n\r\n const tableBody = evt.row.parentNode;\r\n const rowsLeftOver = [...tableBody.querySelectorAll('.table__row')];\r\n rowsLeftOver.forEach((row, i) => {\r\n const rowIdText = row.id.replace(/[0-9]/g, '');\r\n const order = parseInt(row.id.replaceAll(/\\D+/g, ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // update row id\r\n row.id = `${rowIdText}${i + 1}`; //\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n function getSelectedVendors() {\r\n return Object.keys(selectedVendors);\r\n }\r\n\r\n // DROPDOWNS\r\n //----------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentArea,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateBestWayToConnectDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.communicationType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateDailyLifeDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.dailyLifeDropdownType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateLevelsOfSupervisionDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.levelsOfSupervision.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n //-- map id to name -------\r\n function getLevelOfSupervisionById(id) {\r\n const filteredData = dropdownData.levelsOfSupervision.filter(dd => dd.value === id);\r\n return filteredData.length > 0 ? filteredData[0].text : '';\r\n }\r\n function getCommicationById(id) {\r\n const filteredData = dropdownData.communicationType.filter(dd => dd.value === id);\r\n return filteredData.length > 0 ? filteredData[0].text : '';\r\n }\r\n function getDailyLifeById(id) {\r\n const filteredData = dropdownData.dailyLifeDropdownType.filter(dd => dd.value === id);\r\n return filteredData.length > 0 ? filteredData[0].text : '';\r\n }\r\n\r\n // IMPORTANT TO/FOR TABLES\r\n //--------------------------------------------------------------------\r\n async function addImportantTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const importantTo = data.importantTo.answer;\r\n const importantFor = data.importantFor.answer;\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planImportantTable${secTitle}${row}`;\r\n\r\n table.addRows(\r\n `planImportantTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, importantTo, importantFor],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.importantTo.answerId}|${data.importantFor.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planImportantTable${secTitle}`, '');\r\n showImportantTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n async function updateImportantTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const importantTo = data.importantTo.answer;\r\n const importantFor = data.importantFor.answer;\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planImportantTable${secTitle}${row}`;\r\n\r\n table.updateRows(\r\n `planImportantTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, importantTo, importantFor],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.importantTo.answerId}|${data.importantFor.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planImportantTable${secTitle}`, '');\r\n showImportantTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n // markup\r\n //------------------\r\n function toggleImportantDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.importantPopup .error');\r\n const doneBtn = document.querySelector('.importantPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showImportantTablePopup(popupData, isNew) {\r\n let hasInitialErros;\r\n\r\n let sectionTitle = popupData.sectionTitle ? popupData.sectionTitle : '';\r\n let importantTo = popupData.importantTo ? popupData.importantTo.answer : '';\r\n let importantFor = popupData.importantFor ? popupData.importantFor.answer : '';\r\n let row = popupData.row;\r\n\r\n let importantToAnswerId, importantForAnswerId;\r\n\r\n if (!isNew) {\r\n importantToAnswerId = popupData.importantTo.answerId;\r\n importantForAnswerId = popupData.importantFor.answerId;\r\n }\r\n\r\n const importantPopup = POPUP.build({\r\n header: isNew ? 'Add Important To/For' : 'Edit Important To/For',\r\n classNames: 'importantPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownITF',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n sectionTitle = selectedOption.value;\r\n\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleImportantDoneBtn();\r\n },\r\n });\r\n if (!isNew) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Important To\r\n const importantToTextarea = input.build({\r\n label: '*Important To',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: importantTo,\r\n charLimit: charLimits.importantTo,\r\n forceCharLimit: true,\r\n callback: e => {\r\n importantTo = e.target.value;\r\n\r\n if (importantTo === '' && importantFor === '') {\r\n importantToTextarea.classList.add('error');\r\n importantForTextarea.classList.add('error');\r\n } else {\r\n importantToTextarea.classList.remove('error');\r\n importantForTextarea.classList.remove('error');\r\n }\r\n\r\n toggleImportantDoneBtn();\r\n },\r\n });\r\n importantToTextarea.classList.add('importantTo');\r\n // Important For\r\n const importantForTextarea = input.build({\r\n label: '*Important For',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: importantFor,\r\n charLimit: charLimits.importantFor,\r\n forceCharLimit: true,\r\n callback: e => {\r\n importantFor = e.target.value;\r\n\r\n if (importantTo === '' && importantFor === '') {\r\n importantToTextarea.classList.add('error');\r\n importantForTextarea.classList.add('error');\r\n } else {\r\n importantToTextarea.classList.remove('error');\r\n importantForTextarea.classList.remove('error');\r\n }\r\n\r\n toggleImportantDoneBtn();\r\n },\r\n });\r\n importantForTextarea.classList.add('importantFor');\r\n\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n let questionSetId = questionSetIdMap['importantTableData'][sectionTitle];\r\n let upateSingleEmptyRowInsteadOfAddingNew = false;\r\n\r\n const tableDataKeys = Object.keys(summaryData.importantTableData[sectionTitle]);\r\n if (isNew && tableDataKeys.length === 1) {\r\n const rowData = summaryData.importantTableData[sectionTitle]['1'];\r\n const impToAnswer = rowData['importantTo'].answer;\r\n const impForAnswer = rowData['importantFor'].answer;\r\n\r\n if (!impToAnswer && !impForAnswer) {\r\n upateSingleEmptyRowInsteadOfAddingNew = true;\r\n\r\n importantToAnswerId = rowData['importantTo'].answerId;\r\n importantForAnswerId = rowData['importantFor'].answerId;\r\n rowData['importantTo'].answer = importantTo;\r\n rowData['importantFor'].answer = importantFor;\r\n row = 1;\r\n }\r\n }\r\n\r\n if (isNew && !upateSingleEmptyRowInsteadOfAddingNew) {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowOrder = table.getRowCount(`planImportantTable${secTitle}`);\r\n const questionIds = questionIdMap['importantTableData'][sectionTitle];\r\n rowOrder = rowOrder + 1;\r\n const answerIds = await summaryAjax.insertAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [rowOrder, rowOrder],\r\n anywQuestionIds: [\r\n parseInt(questionIds.importantTo),\r\n parseInt(questionIds.importantFor),\r\n ],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(importantTo),\r\n UTIL.removeUnsavableNoteText(importantFor),\r\n ],\r\n });\r\n\r\n await addImportantTableRow({\r\n sectionTitle,\r\n row: rowOrder,\r\n questionSetId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: answerIds[questionIds.importantTo],\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: answerIds[questionIds.importantFor],\r\n },\r\n });\r\n } else {\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row],\r\n anywAnswerIds: [parseInt(importantToAnswerId), parseInt(importantForAnswerId)],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(importantTo),\r\n UTIL.removeUnsavableNoteText(importantFor),\r\n ],\r\n });\r\n\r\n await updateImportantTableRow({\r\n sectionTitle,\r\n row,\r\n questionSetId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: importantToAnswerId,\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: importantForAnswerId,\r\n },\r\n });\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(importantPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(importantPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this entry?';\r\n ISP.showDeleteWarning(importantPopup, message, async () => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowCount = table.getRowCount(`planImportantTable${secTitle}`);\r\n const setId = questionSetIdMap['importantTableData'][sectionTitle];\r\n\r\n if (rowCount > 1) {\r\n deleteTableRow(setId, row, `planImportantTable${secTitle}${row}`);\r\n } else {\r\n importantTo = '';\r\n importantFor = '';\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row],\r\n anywAnswerIds: [parseInt(importantToAnswerId), parseInt(importantForAnswerId)],\r\n answers: [importantTo, importantFor],\r\n });\r\n\r\n updateImportantTableRow({\r\n sectionTitle,\r\n row,\r\n questionSetId: setId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: importantToAnswerId,\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: importantForAnswerId,\r\n },\r\n });\r\n }\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (importantTo === '' && importantFor === '') {\r\n importantToTextarea.classList.add('error');\r\n importantForTextarea.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n importantToTextarea.classList.add('disabled');\r\n importantForTextarea.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n importantPopup.appendChild(assessmentAreaDropdown);\r\n importantPopup.appendChild(importantToTextarea);\r\n importantPopup.appendChild(importantForTextarea);\r\n importantPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionTitle);\r\n\r\n POPUP.show(importantPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function buildImportTableBySection(data) {\r\n let tableData = [];\r\n\r\n const secTitle = Object.keys(data)[0].replaceAll(' ', '');\r\n\r\n const importantTable = table.build({\r\n tableId: `planImportantTable${secTitle}`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Important To: What makes the person feel satisfied, content',\r\n 'Important For: Health, safety, valued member / social role',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: evt => {\r\n updateRowOrder(evt);\r\n },\r\n });\r\n\r\n Object.entries(data).forEach(([sectionTitle, rowData]) => {\r\n Object.entries(rowData).forEach(([rowId, val]) => {\r\n const importantTo = val.importantTo.answer;\r\n const importantFor = val.importantFor.answer;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const questionSetId = val.importantFor.questionSetId;\r\n\r\n tableData.push({\r\n id: `planImportantTable${secTitle}${rowId}`,\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${val.importantTo.answerId}|${val.importantFor.answerId}`,\r\n },\r\n ],\r\n values: [sectionTitle, importantTo, importantFor],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planImportantTable${secTitle}`, '');\r\n showImportantTablePopup(\r\n {\r\n sectionTitle,\r\n row: rowOrderFromID,\r\n questionSetId,\r\n importantTo: {\r\n answer: importantTo,\r\n answerId: val.importantTo.answerId,\r\n },\r\n importantFor: {\r\n answer: importantFor,\r\n answerId: val.importantFor.answerId,\r\n },\r\n },\r\n false,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n\r\n table.populate(importantTable, tableData, isSortable);\r\n\r\n return importantTable;\r\n }\r\n function getImportantTablesMarkup(importantTableData) {\r\n const importantDiv = document.createElement('div');\r\n importantDiv.classList.add('importantTablesWrap');\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerHTML = 'Important To / Important For';\r\n importantDiv.appendChild(heading);\r\n\r\n const a = assessment.getApplicableSections();\r\n\r\n if (importantTableData) {\r\n Object.entries(sectionOrderMap).forEach(([key, val], index) => {\r\n if (a[sectionIdMap[val]]) {\r\n const tableData = importantTableData[val];\r\n const importantTable = buildImportTableBySection({ [val]: tableData });\r\n if (index === 0) importantTable.classList.add('main');\r\n importantDiv.appendChild(importantTable);\r\n }\r\n });\r\n }\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Important To/For',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => showImportantTablePopup({}, true),\r\n });\r\n if (isReadOnly) addRowBtn.classList.add('disabled');\r\n importantDiv.appendChild(addRowBtn);\r\n\r\n return importantDiv;\r\n }\r\n\r\n // SKILLS & ABILITIES TABLES\r\n //--------------------------------------------------------------------\r\n async function addSkillsTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const skillAbility = data.skillAbility.answer;\r\n const questionSetId = data.questionSetId;\r\n const row = data.row;\r\n const answerIds = [data.skillAbility.answerId];\r\n const rowId = `planSkillsTable${secTitle}${row}`;\r\n\r\n let colText;\r\n\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: data.skillAbility.answerId,\r\n },\r\n };\r\n\r\n colText = skillAbility;\r\n\r\n table.addRows(\r\n `planSkillsTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, colText],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: answerIds.join('|'),\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planSkillsTable${secTitle}`, '');\r\n showSkillsTablePopup(\r\n {\r\n ...popupData,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n async function updateSkillsTableRow(data) {\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const skillAbility = data.skillAbility.answer;\r\n const questionSetId = data.questionSetId;\r\n const row = data.row;\r\n const answerIds = [data.skillAbility.answerId];\r\n const rowId = `planSkillsTable${secTitle}${row}`;\r\n let colText;\r\n\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: data.skillAbility.answerId,\r\n },\r\n };\r\n\r\n colText = skillAbility;\r\n\r\n table.updateRows(\r\n `planSkillsTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [sectionTitle, colText],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: answerIds.join('|'),\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planSkillsTable${secTitle}`, '');\r\n showSkillsTablePopup(\r\n {\r\n ...popupData,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n }\r\n // markup\r\n //------------------\r\n function toggleSkillsDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.skillsPopup .error');\r\n const doneBtn = document.querySelector('.skillsPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showSkillsTablePopup(popupData, isNew) {\r\n let hasInitialErros;\r\n\r\n let sectionTitle = popupData.sectionTitle ? popupData.sectionTitle : '';\r\n let skillAbility = popupData.skillAbility ? popupData.skillAbility.answer : '';\r\n let row = popupData.row;\r\n\r\n let skillAbilityId;\r\n\r\n if (!isNew) {\r\n skillAbilityId = popupData.skillAbility.answerId;\r\n communicationId = popupData.communication ? popupData.communication.answerId : '';\r\n dailyLifeId = popupData.dailyLife ? popupData.dailyLife.answerId : '';\r\n }\r\n\r\n const skillsPopup = POPUP.build({\r\n header: isNew ? 'Add Skill/Ability' : 'Edit Skill/Ability',\r\n classNames: 'skillsPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area Dropdown\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownSA',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n sectionTitle = selectedOption.value;\r\n\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleSkillsDoneBtn();\r\n },\r\n });\r\n if (!isNew) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Text Input\r\n const defaultTextInput = input.build({\r\n label: '*What is this person good at?',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: skillAbility,\r\n charLimit: charLimits.skillsAndAbilities,\r\n forceCharLimit: true,\r\n callback: e => {\r\n skillAbility = e.target.value;\r\n\r\n if (skillAbility === '') {\r\n defaultTextInput.classList.add('error');\r\n } else {\r\n defaultTextInput.classList.remove('error');\r\n }\r\n\r\n toggleSkillsDoneBtn();\r\n },\r\n });\r\n defaultTextInput.classList.add('skillAbility');\r\n defaultTextInput.addEventListener('keyup', e => {\r\n skillAbility = e.target.value;\r\n\r\n if (skillAbility === '') {\r\n defaultTextInput.classList.add('error');\r\n } else {\r\n defaultTextInput.classList.remove('error');\r\n }\r\n\r\n toggleSkillsDoneBtn();\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n let questionSetId = questionSetIdMap['skillsTableData'][sectionTitle];\r\n let upateSingleEmptyRowInsteadOfAddingNew = false;\r\n\r\n const tableDataKeys = Object.keys(summaryData.skillsTableData[sectionTitle]);\r\n if (isNew && tableDataKeys.length === 1) {\r\n const rowData = summaryData.skillsTableData[sectionTitle]['1'];\r\n const skillAbilityAnswer = rowData['skillAbility'].answer;\r\n\r\n if (!skillAbilityAnswer) {\r\n upateSingleEmptyRowInsteadOfAddingNew = true;\r\n\r\n skillAbilityId = rowData['skillAbility'].answerId;\r\n rowData['skillAbility'].answer = skillAbility;\r\n\r\n row = 1;\r\n }\r\n }\r\n\r\n if (isNew && !upateSingleEmptyRowInsteadOfAddingNew) {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowOrder = table.getRowCount(`planSkillsTable${secTitle}`);\r\n const questionIds = questionIdMap['skillsTableData'][sectionTitle];\r\n rowOrder = rowOrder + 1;\r\n\r\n const retrieveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [rowOrder],\r\n anywQuestionIds: [parseInt(questionIds.skillAbility)],\r\n answers: [UTIL.removeUnsavableNoteText(skillAbility)],\r\n };\r\n\r\n const answerIds = await summaryAjax.insertAssessmentSummaryAnswers({\r\n ...retrieveData,\r\n });\r\n\r\n const popupData = {\r\n sectionTitle,\r\n row: rowOrder,\r\n questionSetId,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: answerIds[questionIds.skillAbility],\r\n },\r\n };\r\n\r\n await addSkillsTableRow({\r\n ...popupData,\r\n });\r\n } else {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row],\r\n anywAnswerIds: [parseInt(skillAbilityId)],\r\n answers: [UTIL.removeUnsavableNoteText(skillAbility)],\r\n };\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: skillAbilityId,\r\n },\r\n };\r\n\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n ...retrieveData,\r\n });\r\n\r\n await updateSkillsTableRow({\r\n ...popupData,\r\n });\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(skillsPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(skillsPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this entry?';\r\n ISP.showDeleteWarning(skillsPopup, message, async () => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowCount = table.getRowCount(`planSkillsTable${secTitle}`);\r\n const setId = questionSetIdMap['skillsTableData'][sectionTitle];\r\n\r\n if (rowCount > 1) {\r\n deleteTableRow(setId, row, `planSkillsTable${secTitle}${row}`);\r\n } else {\r\n skillAbility = '';\r\n\r\n const retrieveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row],\r\n anywAnswerIds: [parseInt(skillAbilityId)],\r\n answers: [skillAbility],\r\n };\r\n const popupData = {\r\n sectionTitle,\r\n questionSetId: setId,\r\n row,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: skillAbilityId,\r\n },\r\n };\r\n\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n ...retrieveData,\r\n });\r\n\r\n updateSkillsTableRow({\r\n ...popupData,\r\n });\r\n }\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (skillAbility === '') {\r\n defaultTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n defaultTextInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n skillsPopup.appendChild(assessmentAreaDropdown);\r\n skillsPopup.appendChild(defaultTextInput);\r\n skillsPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, popupData.sectionTitle);\r\n\r\n POPUP.show(skillsPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function buildSkillsTableBySection(data) {\r\n let tableData = [];\r\n\r\n const secTitle = Object.keys(data)[0].replaceAll(' ', '');\r\n\r\n const skillsTable = table.build({\r\n tableId: `planSkillsTable${secTitle}`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'What is the person good at, what can they do on their own, what do they have to contribute',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: evt => {\r\n updateRowOrder(evt);\r\n },\r\n });\r\n\r\n Object.entries(data).forEach(([sectionTitle, rowData]) => {\r\n Object.entries(rowData).forEach(([rowId, val]) => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const skillAbility = val.skillAbility.answer;\r\n const questionSetId = val.skillAbility.questionSetId;\r\n let colText;\r\n\r\n const popupData = {\r\n sectionTitle,\r\n row: rowId,\r\n questionSetId,\r\n skillAbility: {\r\n answer: skillAbility,\r\n answerId: val.skillAbility.answerId,\r\n },\r\n };\r\n\r\n const answerIds = [val.skillAbility.answerId];\r\n\r\n colText = skillAbility;\r\n\r\n tableData.push({\r\n id: `planSkillsTable${secTitle}${rowId}`,\r\n values: [sectionTitle, colText],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: answerIds.join('|'),\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planSkillsTable${secTitle}`, '');\r\n showSkillsTablePopup(\r\n {\r\n ...popupData,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n\r\n table.populate(skillsTable, tableData, isSortable);\r\n\r\n return skillsTable;\r\n }\r\n function getSkillsTablesMarkup(skillsTableData) {\r\n const skillsDiv = document.createElement('div');\r\n skillsDiv.classList.add('skillsTablesWrap');\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerHTML = 'Skills & Abilities';\r\n skillsDiv.appendChild(heading);\r\n\r\n const a = assessment.getApplicableSections();\r\n\r\n if (skillsTableData) {\r\n Object.entries(sectionOrderMap).forEach(([key, val], index) => {\r\n if (a[sectionIdMap[val]]) {\r\n const tableData = skillsTableData[val];\r\n const skillsTable = buildSkillsTableBySection({ [val]: tableData });\r\n if (index === 0) skillsTable.classList.add('main');\r\n skillsDiv.appendChild(skillsTable);\r\n }\r\n });\r\n }\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Skill/Ability',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => showSkillsTablePopup({}, true),\r\n });\r\n if (isReadOnly) addRowBtn.classList.add('disabled');\r\n skillsDiv.appendChild(addRowBtn);\r\n\r\n //* Added Questions\r\n if (additionalSummaryData.bestWayToConnect === '%') {\r\n //TODO: have backend set default\r\n additionalSummaryData.bestWayToConnect = '1';\r\n summaryAjax.updateBestWayToConnect({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n bestWayId: '1',\r\n });\r\n }\r\n\r\n const questionsWrap = document.createElement('div');\r\n questionsWrap.classList.add('additionalQuestionWrap');\r\n // const bestWayToConnectDropdown = dropdown.build({\r\n // dropdownId: 'connectDropdown',\r\n // label: 'Best way to connect with the person',\r\n // style: 'secondary',\r\n // callback: async (e, selectedOption) => {\r\n // additionalSummaryData.bestWayToConnect = selectedOption.value;\r\n\r\n // if (additionalSummaryData.bestWayToConnect === '7') {\r\n // if (additionalSummaryData.moreDetail === '') {\r\n // otherTextInput.classList.add('error');\r\n // }\r\n // } else {\r\n // otherTextInput.classList.remove('error');\r\n // }\r\n\r\n // // update dropdown value to DB\r\n // await summaryAjax.updateBestWayToConnect({\r\n // token: $.session.Token,\r\n // anywAssessmentId: planId,\r\n // bestWayId: selectedOption.value,\r\n // });\r\n // },\r\n // });\r\n // const otherTextInput = input.build({\r\n // label: 'More Detail',\r\n // type: 'textarea',\r\n // style: 'secondary',\r\n // classNames: 'autosize',\r\n // value: additionalSummaryData.moreDetail,\r\n // charLimit: '1000',\r\n // forceCharLimit: true,\r\n // callback: async e => {\r\n // additionalSummaryData.moreDetail = e.target.value;\r\n\r\n // if (additionalSummaryData.bestWayToConnect === '7') {\r\n // if (additionalSummaryData.moreDetail === '') {\r\n // otherTextInput.classList.add('error');\r\n // } else {\r\n // otherTextInput.classList.remove('error');\r\n // }\r\n // }\r\n\r\n // await summaryAjax.updateMoreDetail({\r\n // token: $.session.Token,\r\n // anywAssessmentId: planId,\r\n // detail: e.target.value,\r\n // });\r\n // },\r\n // });\r\n const placeOnPathDropdown = dropdown.build({\r\n dropdownId: 'pathDropdown',\r\n label: 'Place on path to community employment',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n additionalSummaryData.placeOnPath = selectedOption.value;\r\n\r\n await summaryAjax.updatePlaceOnPath({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n placeId: selectedOption.value,\r\n });\r\n },\r\n });\r\n\r\n // questionsWrap.appendChild(bestWayToConnectDropdown);\r\n // questionsWrap.appendChild(otherTextInput);\r\n questionsWrap.appendChild(placeOnPathDropdown);\r\n skillsDiv.appendChild(questionsWrap);\r\n\r\n if (isReadOnly) {\r\n // bestWayToConnectDropdown.classList.add('disabled');\r\n // otherTextInput.classList.add('disabled');\r\n placeOnPathDropdown.classList.add('disabled');\r\n }\r\n\r\n //* Required fields for added questions\r\n // if (additionalSummaryData.bestWayToConnect === '7') {\r\n // if (additionalSummaryData.moreDetail === '') {\r\n // otherTextInput.classList.add('error');\r\n // }\r\n // }\r\n\r\n // populateBestWayToConnectDropdown(\r\n // bestWayToConnectDropdown,\r\n // additionalSummaryData.bestWayToConnect,\r\n // );\r\n populateDailyLifeDropdown(placeOnPathDropdown, additionalSummaryData.placeOnPath);\r\n\r\n return skillsDiv;\r\n }\r\n\r\n // KNOWN & LIKELY RISKS TABLES\r\n //--------------------------------------------------------------------\r\n async function addRisksTableRow(data) {\r\n // Extracting values from data\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const riskSupervision = data.riskSupervision.answer;\r\n const whatIsRisk = data.whatIsRisk.answer;\r\n const whatSupportLooksLike = data.whatSupportLooksLike.answer;\r\n const whoResponsible = data.whoResponsible.answer;\r\n const whoResponsibleText = planData.getRelationshipNameById(whoResponsible);\r\n const levelOfSupervision = getLevelOfSupervisionById(riskSupervision);\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planRisksTable${secTitle}${row}`;\r\n\r\n // Checking for errors\r\n const hasError = whatIsRisk && (!whatSupportLooksLike || !levelOfSupervision || !whoResponsible);\r\n\r\n // Incrementing selected vendors\r\n if (whoResponsible) {\r\n if (selectedVendors[whoResponsible]) {\r\n selectedVendors[whoResponsible] = selectedVendors[whoResponsible] + 1;\r\n } else {\r\n selectedVendors[whoResponsible] = 1;\r\n }\r\n }\r\n\r\n // Adding the row to the table\r\n table.addRows(\r\n `planRisksTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [\r\n sectionTitle,\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n levelOfSupervision,\r\n whoResponsibleText,\r\n ],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.whatIsRisk.answerId}|${data.whatSupportLooksLike.answerId}|${data.riskSupervision.answerId}|${data.whoResponsible.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planRisksTable${secTitle}`, '');\r\n showRisksTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n false,\r\n );\r\n },\r\n onCopyClick: e => {\r\n if (isReadOnly) return;\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: '',\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n },\r\n },\r\n true,\r\n true,\r\n );\r\n },\r\n // Add the hasError property to the row object\r\n hasError: hasError,\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n if (hasError) {\r\n planValidation.setSummaryRiskValidation(false);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n } else {\r\n planValidation.setSummaryRiskValidation(true);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n }\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n}\r\n async function updateRisksTableRow(data, oldData) {\r\n // Extracting values from data\r\n const sectionTitle = data.sectionTitle;\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const row = data.row;\r\n const riskSupervision = data.riskSupervision.answer;\r\n const whatIsRisk = data.whatIsRisk.answer;\r\n const whatSupportLooksLike = data.whatSupportLooksLike.answer;\r\n const whoResponsible = data.whoResponsible.answer;\r\n const whoResponsibleText = planData.getRelationshipNameById(whoResponsible);\r\n const levelOfSupervision = getLevelOfSupervisionById(riskSupervision);\r\n const questionSetId = data.questionSetId;\r\n const rowId = `planRisksTable${secTitle}${row}`;\r\n\r\n // Checking for errors\r\n const hasError = whatIsRisk && (!whatSupportLooksLike || !levelOfSupervision || !whoResponsible);\r\n\r\n // Update selected vendors if responsible party changed\r\n if (Object.keys(oldData).length) {\r\n if (oldData.whoResponsible.answer !== whoResponsible) {\r\n // remove old\r\n if (oldData.whoResponsible.answer !== '') {\r\n if (selectedVendors[oldData.whoResponsible.answer] === 1) {\r\n delete selectedVendors[oldData.whoResponsible.answer];\r\n } else {\r\n selectedVendors[oldData.whoResponsible.answer] = selectedVendors[whoResponsible] - 1;\r\n }\r\n }\r\n // add new\r\n if (whoResponsible) {\r\n if (selectedVendors[whoResponsible]) {\r\n selectedVendors[whoResponsible] = selectedVendors[whoResponsible] + 1;\r\n } else {\r\n selectedVendors[whoResponsible] = 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Updating the row in the table\r\n table.updateRows(\r\n `planRisksTable${secTitle}`,\r\n [\r\n {\r\n id: rowId,\r\n values: [\r\n sectionTitle,\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n levelOfSupervision,\r\n whoResponsibleText,\r\n ],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${data.whatIsRisk.answerId}|${data.whatSupportLooksLike.answerId}|${data.riskSupervision.answerId}|${data.whoResponsible.answerId}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planRisksTable${secTitle}`, '');\r\n showRisksTablePopup(\r\n {\r\n ...data,\r\n row: rowOrderFromID,\r\n },\r\n false,\r\n false,\r\n );\r\n },\r\n onCopyClick: e => {\r\n if (isReadOnly) return;\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: '',\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n },\r\n },\r\n true,\r\n true,\r\n );\r\n },\r\n hasError: hasError,\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n if (hasError) {\r\n planValidation.setSummaryRiskValidation(false);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n } else {\r\n planValidation.setSummaryRiskValidation(true);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n }\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n summaryData = mapSummaryData(SummaryData);\r\n}\r\n // markup\r\n //------------------\r\n function toggleRisksDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.risksPopup .error');\r\n const doneBtn = document.querySelector('.risksPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n }\r\n }\r\n function showRisksTablePopup(popupData, isNew, isCopy) {\r\n let hasInitialErros;\r\n\r\n let dataCache = popupData;\r\n\r\n let sectionTitle = popupData.sectionTitle ? popupData.sectionTitle : '';\r\n let whatIsRisk = popupData.whatIsRisk ? popupData.whatIsRisk.answer : '';\r\n let whatSupportLooksLike = popupData.whatSupportLooksLike\r\n ? popupData.whatSupportLooksLike.answer\r\n : '';\r\n let riskSupervision = popupData.riskSupervision ? popupData.riskSupervision.answer : '';\r\n let whoResponsible = popupData.whoResponsible ? popupData.whoResponsible.answer : '';\r\n let row = popupData.row;\r\n\r\n if (!isNew) {\r\n whatIsRiskId = popupData.whatIsRisk.answerId;\r\n whatSupportLooksLikeId = popupData.whatSupportLooksLike.answerId;\r\n riskSupervisionId = popupData.riskSupervision.answerId;\r\n whoResponsibleId = popupData.whoResponsible.answerId;\r\n }\r\n\r\n const risksPopup = POPUP.build({\r\n header: isNew ? 'Add Risk' : 'Edit Risk',\r\n classNames: 'risksPopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownSA',\r\n label: '*Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n sectionTitle = selectedOption.value;\r\n\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n if (!isNew) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // What is Risk\r\n const whatIsRiskTextarea = input.build({\r\n label: '*What is the risk, what it looks like, where it occurs',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: whatIsRisk,\r\n charLimit: charLimits.whatIsRisk,\r\n forceCharLimit: true,\r\n callback: e => {\r\n whatIsRisk = e.target.value;\r\n if (whatIsRisk === '') {\r\n whatIsRiskTextarea.classList.add('error');\r\n } else {\r\n whatIsRiskTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n whatIsRiskTextarea.classList.add('whatIsRiskTextarea');\r\n whatIsRiskTextarea.addEventListener('keyup', e => {\r\n whatIsRisk = e.target.value;\r\n if (whatIsRisk === '') {\r\n whatIsRiskTextarea.classList.add('error');\r\n } else {\r\n whatIsRiskTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n });\r\n // What Support Looks Like\r\n const whatSupportLooksLikeTextarea = input.build({\r\n label: '*What support must look like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: whatSupportLooksLike,\r\n charLimit: charLimits.whatSupportLooksLike,\r\n forceCharLimit: true,\r\n callback: e => {\r\n whatSupportLooksLike = e.target.value;\r\n if (whatSupportLooksLike === '') {\r\n whatSupportLooksLikeTextarea.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n whatSupportLooksLikeTextarea.classList.add('whatSupportLooksLike');\r\n whatSupportLooksLikeTextarea.addEventListener('keyup', e => {\r\n whatSupportLooksLike = e.target.value;\r\n if (whatSupportLooksLike === '') {\r\n whatSupportLooksLikeTextarea.classList.add('error');\r\n } else {\r\n whatSupportLooksLikeTextarea.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n });\r\n // Levels of Supervision\r\n const levelsOfSupervisionDropdown = dropdown.build({\r\n dropdownId: 'levelsOfSupervisionDropdownSA',\r\n label: '*Levels Of Supervision',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n riskSupervision = selectedOption.value;\r\n if (riskSupervision === '%' || riskSupervision === '') {\r\n levelsOfSupervisionDropdown.classList.add('error');\r\n } else {\r\n levelsOfSupervisionDropdown.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n const whoResponsibleDropdown = dropdown.build({\r\n label: '*Who is Responsible',\r\n dropdownId: 'whoResponsibleDropdown',\r\n readonly: isReadOnly,\r\n callback: (e, selectedOption) => {\r\n whoResponsible = selectedOption.value;\r\n if (whoResponsible === '') {\r\n whoResponsibleDropdown.classList.add('error');\r\n } else {\r\n whoResponsibleDropdown.classList.remove('error');\r\n }\r\n toggleRisksDoneBtn();\r\n },\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: isCopy ? 'Save Copy' : isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n let questionSetId = questionSetIdMap['risksTableData'][sectionTitle];\r\n let upateSingleEmptyRowInsteadOfAddingNew = false;\r\n\r\n const tableDataKeys = Object.keys(summaryData.risksTableData[sectionTitle]);\r\n if (isNew && tableDataKeys.length === 1) {\r\n const rowData = summaryData.risksTableData[sectionTitle]['1'];\r\n const riskAnswer = rowData['riskSupervision'].answer;\r\n const whatIsRiskAnswer = rowData['whatIsRisk'].answer;\r\n const supportAnswer = rowData['whatSupportLooksLike'].answer;\r\n const whoResponsibleAnswer = rowData['whoResponsible'].answer;\r\n\r\n if (!riskAnswer && !whatIsRiskAnswer && !supportAnswer && !whoResponsibleAnswer) {\r\n upateSingleEmptyRowInsteadOfAddingNew = true;\r\n\r\n riskSupervisionId = rowData['riskSupervision'].answerId;\r\n whatIsRiskId = rowData['whatIsRisk'].answerId;\r\n whatSupportLooksLikeId = rowData['whatSupportLooksLike'].answerId;\r\n whoResponsibleId = rowData['whoResponsible'].answerId;\r\n\r\n rowData['riskSupervision'].answer = riskSupervision;\r\n rowData['whatIsRisk'].answer = whatIsRisk;\r\n rowData['whatSupportLooksLike'].answer = whatSupportLooksLike;\r\n rowData['whoResponsible'].answer = whoResponsible;\r\n\r\n row = 1;\r\n }\r\n }\r\n\r\n if (isNew && !upateSingleEmptyRowInsteadOfAddingNew) {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowOrder = table.getRowCount(`planRisksTable${secTitle}`);\r\n const questionIds = questionIdMap['risksTableData'][sectionTitle];\r\n rowOrder = rowOrder + 1;\r\n const answerIds = await summaryAjax.insertAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [rowOrder, rowOrder, rowOrder, rowOrder],\r\n anywQuestionIds: [\r\n parseInt(questionIds.whatIsRisk),\r\n parseInt(questionIds.whatSupportLooksLike),\r\n parseInt(questionIds.riskSupervision),\r\n parseInt(questionIds.whoResponsible),\r\n ],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(whatIsRisk),\r\n UTIL.removeUnsavableNoteText(whatSupportLooksLike),\r\n riskSupervision,\r\n UTIL.removeUnsavableNoteText(whoResponsible),\r\n ],\r\n });\r\n\r\n await addRisksTableRow({\r\n sectionTitle,\r\n row: rowOrder,\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: answerIds[questionIds.whatIsRisk],\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: answerIds[questionIds.whatSupportLooksLike],\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: answerIds[questionIds.riskSupervision],\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: answerIds[questionIds.whoResponsible],\r\n },\r\n });\r\n } else {\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row, row, row],\r\n anywAnswerIds: [\r\n parseInt(whatIsRiskId),\r\n parseInt(whatSupportLooksLikeId),\r\n parseInt(riskSupervisionId),\r\n parseInt(whoResponsibleId),\r\n ],\r\n answers: [\r\n UTIL.removeUnsavableNoteText(whatIsRisk),\r\n UTIL.removeUnsavableNoteText(whatSupportLooksLike),\r\n riskSupervision,\r\n UTIL.removeUnsavableNoteText(whoResponsible),\r\n ],\r\n });\r\n\r\n await updateRisksTableRow(\r\n {\r\n sectionTitle,\r\n row,\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: whatIsRiskId,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: whatSupportLooksLikeId,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: riskSupervisionId,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: whoResponsibleId,\r\n },\r\n },\r\n dataCache,\r\n );\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n doneBtn.disabled = false;\r\n POPUP.hide(risksPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(risksPopup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this entry?';\r\n ISP.showDeleteWarning(risksPopup, message, async () => {\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n let rowCount = table.getRowCount(`planRisksTable${secTitle}`);\r\n const setId = questionSetIdMap['risksTableData'][sectionTitle];\r\n\r\n if (rowCount > 1) {\r\n deleteTableRow(setId, row, `planRisksTable${secTitle}${row}`);\r\n } else {\r\n whatIsRisk = '';\r\n whatSupportLooksLike = '';\r\n riskSupervision = '';\r\n whoResponsible = '';\r\n\r\n await summaryAjax.updateAssessmentSummaryAnswers({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n anywAssessmentId: parseInt(planId),\r\n answerRow: [row, row, row, row],\r\n anywAnswerIds: [\r\n parseInt(whatIsRiskId),\r\n parseInt(whatSupportLooksLikeId),\r\n parseInt(riskSupervisionId),\r\n parseInt(whoResponsibleId),\r\n ],\r\n answers: [whatIsRisk, whatSupportLooksLike, riskSupervision, whoResponsible],\r\n });\r\n\r\n updateRisksTableRow(\r\n {\r\n sectionTitle,\r\n row,\r\n questionSetId: setId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: whatIsRiskId,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: whatSupportLooksLikeId,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: riskSupervisionId,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: whoResponsibleId,\r\n },\r\n },\r\n dataCache,\r\n );\r\n }\r\n });\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (sectionTitle === '' || sectionTitle === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (whatIsRisk === '') {\r\n whatIsRiskTextarea.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (whatSupportLooksLike === '') {\r\n whatSupportLooksLikeTextarea.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (whoResponsible === '') {\r\n whoResponsibleDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (riskSupervision === '') {\r\n levelsOfSupervisionDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n whatIsRiskTextarea.classList.add('disabled');\r\n whatSupportLooksLikeTextarea.classList.add('disabled');\r\n levelsOfSupervisionDropdown.classList.add('disabled');\r\n whoResponsibleDropdown.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n doneBtn.disabled = true;\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n risksPopup.appendChild(assessmentAreaDropdown);\r\n risksPopup.appendChild(whatIsRiskTextarea);\r\n risksPopup.appendChild(whatSupportLooksLikeTextarea);\r\n risksPopup.appendChild(levelsOfSupervisionDropdown);\r\n risksPopup.appendChild(whoResponsibleDropdown);\r\n risksPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionTitle);\r\n populateLevelsOfSupervisionDropdown(levelsOfSupervisionDropdown, riskSupervision);\r\n planData.populateRelationshipDropdown(\r\n whoResponsibleDropdown,\r\n whoResponsible,\r\n (includeSupports = true),\r\n );\r\n\r\n POPUP.show(risksPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function buildRisksTableBySection(data) {\r\n let tableData = [];\r\n\r\n const secTitle = Object.keys(data)[0].replaceAll(' ', '');\r\n\r\n const risksTable = table.build({\r\n tableId: `planRisksTable${secTitle}`,\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'What is the risk, what it looks like, where it occurs',\r\n 'What support must look like, why the person needs this support',\r\n 'Does this risk require supervision?',\r\n 'Who is responsible',\r\n ],\r\n sortable: isSortable,\r\n onSortCallback: evt => {\r\n updateRowOrder(evt);\r\n },\r\n allowCopy: true,\r\n });\r\n\r\n Object.entries(data).forEach(([sectionTitle, rowData]) => {\r\n Object.entries(rowData).forEach(([rowId, val]) => {\r\n const riskSupervision = val.riskSupervision.answer;\r\n const whatIsRisk = val.whatIsRisk.answer;\r\n const whatSupportLooksLike = val.whatSupportLooksLike.answer;\r\n const whoResponsible = val.whoResponsible ? val.whoResponsible.answer : '';\r\n const whoResponsibleText = planData.getRelationshipNameById(whoResponsible);\r\n const levelOfSupervision = getLevelOfSupervisionById(riskSupervision);\r\n const secTitle = sectionTitle.replaceAll(' ', '');\r\n const questionSetId = val.whatIsRisk.questionSetId;\r\n\r\n const hasError = whatIsRisk && (!whatSupportLooksLike || !levelOfSupervision || !whoResponsible);\r\n\r\n if (whoResponsible) {\r\n if (selectedVendors[whoResponsible]) {\r\n selectedVendors[whoResponsible] = selectedVendors[whoResponsible] + 1;\r\n } else {\r\n selectedVendors[whoResponsible] = 1;\r\n }\r\n }\r\n\r\n const isRowEmpty = [\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n riskSupervision,\r\n whoResponsible,\r\n ].every(e => e === '');\r\n\r\n tableData.push({\r\n id: `planRisksTable${secTitle}${rowId}`,\r\n values: [\r\n sectionTitle,\r\n whatIsRisk,\r\n whatSupportLooksLike,\r\n levelOfSupervision,\r\n whoResponsibleText,\r\n ],\r\n attributes: [\r\n { key: 'data-questionSetId', value: questionSetId },\r\n {\r\n key: 'data-answerIds',\r\n value: `${val.whatIsRisk.answerId}|${val.whatSupportLooksLike.answerId}|${\r\n val.riskSupervision.answerId\r\n }|${whoResponsible ? whoResponsible : ''}`,\r\n },\r\n ],\r\n onClick: e => {\r\n const rowOrderFromID = e.target.id.replace(`planRisksTable${secTitle}`, '');\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: rowOrderFromID,\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n answerId: val.whatIsRisk.answerId,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n answerId: val.whatSupportLooksLike.answerId,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n answerId: val.riskSupervision.answerId,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n answerId: val.whoResponsible ? val.whoResponsible.answerId : '',\r\n },\r\n },\r\n false,\r\n false,\r\n );\r\n },\r\n hasError: hasError,\r\n onCopyClick: isRowEmpty\r\n ? false\r\n : e => {\r\n if (isRowEmpty || isReadOnly) return;\r\n\r\n showRisksTablePopup(\r\n {\r\n sectionTitle,\r\n row: '',\r\n questionSetId,\r\n whatIsRisk: {\r\n answer: whatIsRisk,\r\n },\r\n whatSupportLooksLike: {\r\n answer: whatSupportLooksLike,\r\n },\r\n riskSupervision: {\r\n answer: riskSupervision,\r\n },\r\n whoResponsible: {\r\n answer: whoResponsible,\r\n },\r\n },\r\n true,\r\n true,\r\n );\r\n },\r\n });\r\n });\r\n });\r\n\r\n table.populate(risksTable, tableData, isSortable);\r\n\r\n const sectionHasErrors = tableData.some(row => row.hasError);\r\n if (sectionHasErrors) {\r\n planValidation.setSummaryRiskValidation(false);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n } else {\r\n planValidation.setSummaryRiskValidation(true);\r\n planValidation.alertCheckSummaryRisksValidation();\r\n }\r\n\r\n return risksTable;\r\n }\r\n function buildDropdownLegend() {\r\n const legend = document.createElement('div');\r\n legend.classList.add('riskSupervisionDropdownLegend');\r\n\r\n legend.innerHTML = `\r\n

    Levels of Supervision and Definitions:

    \r\n
      \r\n
    • 1. No Paid Supports The person can be alone and does not require any paid/remote support to ensure safety.
    • \r\n
    • 2. General Staff must be able to hear/contact the person if they called for help, and respond within a few minutes.
    • \r\n
    • 3. Auditory Staff must be able to hear the person if they called for help and respond quickly.
    • \r\n
    • 4. Visual Staff must be able to see the person and be able to provide support or direction.
    • \r\n
    • 5. Close & Constant Staff may never leave the person, and must always be able to respond immediately.
    • \r\n
    • 6. Technology Describe technology solutions in conjunction with 1 - 5.
    • \r\n
    \r\n `;\r\n\r\n return legend;\r\n }\r\n function getRisksTablesMarkup(risksTableData) {\r\n const risksWrap = document.createElement('div');\r\n risksWrap.classList.add('risksWrap');\r\n\r\n const heading = document.createElement('h3');\r\n heading.innerHTML = `Known & Likely Risks: Include any MUI trends and preventative measures`;\r\n risksWrap.appendChild(heading);\r\n\r\n const dropdownLegend = buildDropdownLegend();\r\n risksWrap.appendChild(dropdownLegend);\r\n\r\n const risksDiv = document.createElement('div');\r\n risksDiv.classList.add('risksTablesWrap');\r\n\r\n const a = assessment.getApplicableSections();\r\n\r\n if (risksTableData) {\r\n Object.entries(sectionOrderMap).forEach(([key, val], index) => {\r\n if (a[sectionIdMap[val]]) {\r\n const tableData = risksTableData[val];\r\n const risksTable = buildRisksTableBySection({ [val]: tableData });\r\n if (index === 0) risksTable.classList.add('main');\r\n risksDiv.appendChild(risksTable);\r\n }\r\n });\r\n }\r\n\r\n const addRowBtn = button.build({\r\n text: 'Add Known & Likely Risk',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => showRisksTablePopup({}, true, false),\r\n });\r\n if (isReadOnly) addRowBtn.classList.add('disabled');\r\n\r\n risksDiv.appendChild(addRowBtn);\r\n risksWrap.appendChild(risksDiv);\r\n\r\n return risksWrap;\r\n }\r\n\r\n function checkForPaidSupports(numOfPaidSupports) {\r\n hasPaidSupports = numOfPaidSupports > 0;\r\n \r\n }\r\n function getAdditionalSummaryQuestionMarkup() {\r\n const additionalQuestionDiv = document.createElement('div');\r\n additionalQuestionDiv.classList.add('additionalQuestionWrap');\r\n\r\n hasPaidSupports = servicesSupports.getHasPaidSupports();\r\n\r\n // Amount of time person can be left alone\r\n const amountOfTimeWrap = document.createElement('div');\r\n const amountOfTimePrompt = document.createElement('p');\r\n amountOfTimePrompt.innerText = 'Amount of time the person can safely be alone';\r\n\r\n amountOfTimeQuestion = input.build({\r\n id: 'amountOfTime',\r\n value: additionalSummaryData.aloneTimeAmount,\r\n type: 'textarea',\r\n charLimit: charLimits.aloneTime,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n onBlurCallback: event => {\r\n additionalSummaryData.aloneTimeAmount = event.target.value;\r\n const submitData = {\r\n anywAssessmentId: planId,\r\n aloneTimeAmount: UTIL.removeUnsavableNoteText(additionalSummaryData.aloneTimeAmount),\r\n providerBackUp: UTIL.removeUnsavableNoteText(additionalSummaryData.providerBackUp),\r\n };\r\n summaryAjax.updateAdditionalAssessmentSummaryAnswers(submitData);\r\n },\r\n });\r\n amountOfTimeWrap.appendChild(amountOfTimePrompt);\r\n amountOfTimeWrap.appendChild(amountOfTimeQuestion);\r\n\r\n // Provide back-up plan\r\n const backupPlanWrap = document.createElement('div');\r\n const backupPlanPrompt = document.createElement('p');\r\n backupPlanPrompt.innerText = 'Provider Back-up Plan';\r\n\r\n backupPlanQuestion = input.build({\r\n id: 'backupPlan',\r\n type: 'textarea',\r\n value: additionalSummaryData.providerBackUp,\r\n charLimit: 10000,\r\n classNames: 'autosize',\r\n forceCharLimit: true,\r\n onBlurCallback: event => {\r\n additionalSummaryData.providerBackUp = event.target.value;\r\n const submitData = {\r\n anywAssessmentId: planId,\r\n aloneTimeAmount: UTIL.removeUnsavableNoteText(additionalSummaryData.aloneTimeAmount),\r\n providerBackUp: UTIL.removeUnsavableNoteText(additionalSummaryData.providerBackUp),\r\n };\r\n summaryAjax.updateAdditionalAssessmentSummaryAnswers(submitData);\r\n },\r\n });\r\n\r\n backupPlanWrap.appendChild(backupPlanPrompt);\r\n backupPlanWrap.appendChild(backupPlanQuestion);\r\n\r\n additionalQuestionDiv.appendChild(amountOfTimeWrap);\r\n additionalQuestionDiv.appendChild(backupPlanWrap);\r\n\r\n if (isReadOnly) {\r\n amountOfTimeQuestion.classList.add('disabled');\r\n backupPlanQuestion.classList.add('disabled');\r\n }\r\n\r\n return additionalQuestionDiv;\r\n }\r\n function getMarkup() {\r\n const summaryWrap = document.createElement('div');\r\n summaryWrap.classList.add('planSummary');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Discovery Assessment Summary';\r\n heading.classList.add('sectionHeading');\r\n\r\n const importantTables = getImportantTablesMarkup(summaryData.importantTableData);\r\n const skillsTables = getSkillsTablesMarkup(summaryData.skillsTableData);\r\n const risksTables = getRisksTablesMarkup(summaryData.risksTableData);\r\n const additionalSummaryMarkup = getAdditionalSummaryQuestionMarkup();\r\n\r\n summaryWrap.appendChild(heading);\r\n summaryWrap.appendChild(importantTables);\r\n summaryWrap.appendChild(skillsTables);\r\n summaryWrap.appendChild(risksTables);\r\n summaryWrap.appendChild(additionalSummaryMarkup);\r\n\r\n return summaryWrap;\r\n }\r\n\r\n async function init(data) {\r\n // data = { planId, readOnly }\r\n planId = data.planId;\r\n isReadOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('summary');\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n dropdownData = planData.getDropdownData();\r\n\r\n const SummaryData = await summaryAjax.getAssessmentSummaryQuestions({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: planId,\r\n });\r\n\r\n if (AdditionalSummaryData) {\r\n if (AdditionalSummaryData.length > 0) {\r\n additionalSummaryData = { ...AdditionalSummaryData[0] };\r\n\r\n if (additionalSummaryData.placeOnPath === '' || additionalSummaryData.placeOnPath === '0') {\r\n additionalSummaryData.placeOnPath = '%';\r\n }\r\n if (\r\n additionalSummaryData.bestWayToConnect === '' ||\r\n additionalSummaryData.bestWayToConnect === '0'\r\n ) {\r\n additionalSummaryData.bestWayToConnect = '%';\r\n }\r\n }\r\n } else {\r\n additionalSummaryData = {\r\n aloneTimeAmount: '',\r\n providerBackUp: '',\r\n moreDetail: '',\r\n placeOnPath: '%',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n\r\n const mappedSummaryData = mapSummaryData(SummaryData);\r\n summaryData = mappedSummaryData;\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n checkForPaidSupports,\r\n refreshDropdownData,\r\n getSelectedVendors,\r\n };\r\n})();\r\n","const summaryAjax = (function () {\r\n async function getAssessmentSummaryQuestions(retrieveData) {\r\n // string token, long anywAssessmentId\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentSummaryQuestions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAssessmentSummaryQuestionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getAdditionalAssessmentSummaryQuestions(retrieveData) {\r\n // string token, long anywAssessmentId\r\n if (retrieveData.anywAssessmentId !== '') {\r\n retrieveData.anywAssessmentId = parseInt(retrieveData.anywAssessmentId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAdditionalAssessmentSummaryQuestions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAdditionalAssessmentSummaryQuestionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function insertAssessmentSummaryAnswers(retrieveData) {\r\n // string token, long anywAssessmentId, long[] anywQuestionIds, int[] answerRow, string[] answers, string userId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAssessmentSummaryAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return Object.values(\r\n Object.entries(data.insertAssessmentSummaryAnswersResult).reduce((acc, [key, val]) => {\r\n key = key.split('Id');\r\n const type = key[0];\r\n const num = key[1];\r\n\r\n if (!acc[num]) {\r\n acc[num] = {};\r\n }\r\n\r\n if (type === 'answer') {\r\n acc[num].answerId = val;\r\n } else {\r\n acc[num].questionId = val;\r\n }\r\n\r\n return acc;\r\n }, {}),\r\n ).reduce((acc, val) => {\r\n if (!acc[val.questionId]) {\r\n acc[val.questionId] = val.answerId;\r\n }\r\n return acc;\r\n }, {});\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateAssessmentSummaryAnswers(retrieveData) {\r\n // string token, long anywAssessmentId, long[] anywAnswerIds, string[] answers, string userId\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentSummaryAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAssessmentSummaryAnswersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateAdditionalAssessmentSummaryAnswers(retrieveData) {\r\n // long anywAssessmentId, string aloneTimeAmount, string providerBackUp\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAdditionalAssessmentSummaryAnswer/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAdditionalAssessmentSummaryAnswerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateBestWayToConnect(retrieveData) {\r\n // string token, long anywAssessmentId, int bestWayId\r\n\r\n if (retrieveData.bestWayId === '%') {\r\n retrieveData.bestWayId = 0;\r\n } else {\r\n retrieveData.bestWayId = parseInt(retrieveData.bestWayId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateBestWayToConnect/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateBestWayToConnectResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updatePlaceOnPath(retrieveData) {\r\n // string token, long anywAssessmentId, int placeId\r\n\r\n if (retrieveData.placeId === '%') {\r\n retrieveData.placeId = 0;\r\n } else {\r\n retrieveData.placeId = parseInt(retrieveData.placeId);\r\n }\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlaceOnPath/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlaceOnPathResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateMoreDetail(retrieveData) {\r\n // string token, long anywAssessmentId, string detail\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateMoreDetail/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateMoreDetailResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getAssessmentSummaryQuestions,\r\n getAdditionalAssessmentSummaryQuestions,\r\n updateAssessmentSummaryAnswers,\r\n updateAdditionalAssessmentSummaryAnswers,\r\n insertAssessmentSummaryAnswers,\r\n updateBestWayToConnect,\r\n updatePlaceOnPath,\r\n updateMoreDetail,\r\n };\r\n})();\r\n","//Widget ID = 2\r\n\r\nconst cnCaseLoadSettings = (function () {\r\n // Data\r\n let CN_CASELOAD_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox,\r\n viewNotesEnteredByOtherUsersCheckBox,\r\n lastNoteDaysBackInput,\r\n reviewNotesDaysBackInput,\r\n saveBtn;\r\n\r\n //settings needed:\r\n // show hide - Y/N, default Y\r\n // view notes days back - min 1, max 60, default 30\r\n // last note entered days back - min 1, max 60, default 30\r\n // view notes entered by other users (permisison based) - Y/N, default N, forced N for case notes view entered === true\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('2');\r\n showHide = widgetSettings.showHide;\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_CASELOAD_SETTINGS = {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n };\r\n } else {\r\n CN_CASELOAD_SETTINGS = widgetSettings.widgetConfig;\r\n }\r\n }\r\n\r\n function buildCNCaseLoadSettings() {\r\n getSettings();\r\n\r\n const section = document.getElementById('CN_CaseLoad');\r\n section.classList.add('cnCaseLoad');\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: 'Show',\r\n style: 'secondary',\r\n isChecked: showHide === 'Y' ? true : false,\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox');\r\n\r\n viewNotesEnteredByOtherUsersCheckBox = input.buildCheckbox({\r\n text: 'View Notes Entered by Other Users',\r\n style: 'secondary',\r\n isChecked: CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers === 'Y' ? true : false,\r\n });\r\n viewNotesEnteredByOtherUsersCheckBox.classList.add('settingsCheckBox');\r\n lastNoteDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Last Note Entered Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_CASELOAD_SETTINGS.lastNoteEnteredDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n reviewNotesDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Review Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_CASELOAD_SETTINGS.viewNotesDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n saveBtn = button.build({\r\n id: 'cnCaseLoadSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings,\r\n });\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox);\r\n section.appendChild(lastNoteDaysBackInput);\r\n section.appendChild(reviewNotesDaysBackInput);\r\n if ($.session.CaseNotesViewEntered) {\r\n section.appendChild(viewNotesEnteredByOtherUsersCheckBox);\r\n } else {\r\n CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = 'N';\r\n }\r\n section.appendChild(saveBtn);\r\n\r\n eventListeners();\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues();\r\n const configString = JSON.stringify(CN_CASELOAD_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(2, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newViewNotesDaysBack = parseInt(reviewNotesDaysBackInput.firstElementChild.value);\r\n const newLastNoteEnteredDaysBack = parseInt(lastNoteDaysBackInput.firstElementChild.value);\r\n let newViewEnteredByOthers = 'N';\r\n if ($.session.CaseNotesViewEntered) {\r\n newViewEnteredByOthers = viewNotesEnteredByOtherUsersCheckBox.firstElementChild.checked\r\n ? 'Y'\r\n : 'N';\r\n }\r\n\r\n if (newViewNotesDaysBack >= 1 && newViewNotesDaysBack <= 60) {\r\n CN_CASELOAD_SETTINGS.viewNotesDaysBack = newViewNotesDaysBack;\r\n }\r\n if (newLastNoteEnteredDaysBack >= 1 && newLastNoteEnteredDaysBack <= 60) {\r\n CN_CASELOAD_SETTINGS.lastNoteEnteredDaysBack = newLastNoteEnteredDaysBack;\r\n }\r\n CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = newViewEnteredByOthers;\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n showHide = 'Y';\r\n } else showHide = 'N';\r\n });\r\n viewNotesEnteredByOtherUsersCheckBox.addEventListener('change', event => {\r\n if (event.target.checked && $.session.CaseNotesViewEntered) {\r\n CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = 'Y';\r\n } else CN_CASELOAD_SETTINGS.viewEnteredByOtherUsers = 'N';\r\n });\r\n }\r\n\r\n return {\r\n buildCNCaseLoadSettings,\r\n };\r\n})();\r\n","//Widget ID = 4\r\n\r\nconst wfPlanSettings = (function() {\r\n // Data\r\n let WF_PLAN_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox, dueDateDropdown, saveBtn;\r\n\r\n //settings needed:\r\n // show hide - Y/N, default Y\r\n // due date - dropdown with values: today, next 7 days, next 30 days, prior 7 days, prior 30 days, default today\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('4')\r\n showHide = widgetSettings.showHide\r\n if (widgetSettings.widgetConfig === null) {\r\n WF_PLAN_SETTINGS = {\r\n dueDate: 'today', \r\n };\r\n } else {\r\n WF_PLAN_SETTINGS = widgetSettings.widgetConfig\r\n }\r\n }\r\n\r\n\r\n function buildWfPlanSettings() {\r\n getSettings()\r\n\r\n const section = document.getElementById(\"WF_Plan\");\r\n section.classList.add(\"wfPlan\");\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: \"Show\",\r\n style: \"secondary\",\r\n isChecked: showHide === \"Y\" ? true : false\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox') \r\n\r\n dueDateDropdown = dropdown.build({\r\n label: \"Due Date\",\r\n style: \"secondary\",\r\n dropdownId: \"dueDateDropdown\",\r\n });\r\n\r\n let data = [\r\n {id: 1, value: 'today', text: 'Today' }, \r\n {id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n {id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n {id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n {id: 5, value: 'prior 30 days', text: 'Prior 30 Days' }\r\n ] \r\n dropdown.populate(dueDateDropdown, data, WF_PLAN_SETTINGS.dueDate); \r\n \r\n saveBtn = button.build({\r\n id: 'wfPlanSave',\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings\r\n })\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox)\r\n section.appendChild(dueDateDropdown)\r\n\r\n section.appendChild(saveBtn)\r\n\r\n eventListeners()\r\n }\r\n\r\n async function setSettings() {\r\n const configString = JSON.stringify(WF_PLAN_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(4, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n } \r\n \r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved'\r\n saveBtn.classList.add('saved')\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved')\r\n saveBtn.innerText = 'save'\r\n }, 1600)\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener(\"change\", event => {\r\n if (event.target.checked) {\r\n showHide = \"Y\"\r\n } else showHide = \"N\"\r\n });\r\n\r\n dueDateDropdown.addEventListener(\"change\", (e)=> {\r\n WF_PLAN_SETTINGS.dueDate = e.target.value; \r\n });\r\n\r\n dueDateDropdown.addEventListener(\"click\", (e)=> {\r\n e.stopPropagation(); // stop nav.js from handling the click event for this\r\n });\r\n }\r\n\r\n return { \r\n buildWfPlanSettings,\r\n }\r\n})()","const cnProductivitySettings = (function() {\r\n //DATA\r\n let CN_PRODUCTIVITY_SETTINGS = {};\r\n let showHide\r\n //HTML ELEMENTS\r\n let showHideCheckBox;\r\n let daysBackInput;\r\n let productivityThresholdPercentage;\r\n let workHoursPerDay;\r\n let saveBtn;\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('1')\r\n showHide = widgetSettings.showHide\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_PRODUCTIVITY_SETTINGS = {\r\n productivityThreshold: 60,\r\n daysBack: 7,\r\n workHoursPerDay: 7\r\n };\r\n } else {\r\n CN_PRODUCTIVITY_SETTINGS = widgetSettings.widgetConfig\r\n }\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues()\r\n const configString = JSON.stringify(CN_PRODUCTIVITY_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(1, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n const newProductivity = parseInt(productivityThresholdPercentage.firstElementChild.value);\r\n const newWorkHours = parseFloat(workHoursPerDay.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 14) {\r\n CN_PRODUCTIVITY_SETTINGS.daysBack = newDaysBack\r\n }\r\n if (newProductivity >= 0 && newProductivity <= 100) {\r\n CN_PRODUCTIVITY_SETTINGS.productivityThreshold = newProductivity\r\n }\r\n if (newWorkHours >= 0.1 && newWorkHours <= 24) {\r\n CN_PRODUCTIVITY_SETTINGS.workHoursPerDay = newWorkHours\r\n }\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved'\r\n saveBtn.classList.add('saved')\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved')\r\n saveBtn.innerText = 'save'\r\n }, 1600)\r\n }\r\n\r\n function buildCNProductivity() {\r\n getSettings()\r\n\r\n const section = document.getElementById(\"CN_Productivity\");\r\n section.classList.add(\"cnProductivity\");\r\n const group1 = document.createElement(\"div\");\r\n group1.classList.add(\"group1\");\r\n const group2 = document.createElement(\"div\");\r\n group2.classList.add(\"group2\");\r\n const percentSymb = document.createElement(\"p\");\r\n percentSymb.innerText = \"%\";\r\n percentSymb.style.color = \"black\";\r\n percentSymb.style.position = \"absolute\";\r\n percentSymb.style.marginLeft = \"252px\";\r\n percentSymb.style.marginTop = \"-99px\";\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: \"Show\",\r\n className: \"showHide\",\r\n style: \"secondary\",\r\n isChecked: showHide === \"Y\" ? true : false\r\n });\r\n daysBackInput = input.build({\r\n id: \"cnProductivityDaysBack\",\r\n label: \"Days Back\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.daysBack,\r\n attributes: [\r\n { key: \"min\", value: \"1\" },\r\n { key: \"max\", value: \"14\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n productivityThresholdPercentage = input.build({\r\n id: \"productivityThresholdPercentage\",\r\n label: \"Productivity Threshold\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.productivityThreshold,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n workHoursPerDay = input.build({\r\n id: \"cnProductivityWorkHoursPerDay\",\r\n label: \"Work Hours/Day\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.workHoursPerDay,\r\n attributes: [\r\n { key: \"min\", value: \"1\" },\r\n { key: \"max\", value: \"24\" }\r\n ]\r\n });\r\n saveBtn = button.build({\r\n id: 'cnProductivitySave',\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings\r\n })\r\n\r\n // display min a max of each input?\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n group1.appendChild(daysBackInput);\r\n group1.appendChild(workHoursPerDay);\r\n group2.appendChild(productivityThresholdPercentage);\r\n section.appendChild(group1);\r\n section.appendChild(group2);\r\n section.appendChild(saveBtn);\r\n section.appendChild(percentSymb);\r\n\r\n eventListeners();\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener(\"change\", event => {\r\n if (event.target.checked) {\r\n showHide = \"Y\"\r\n } else showHide = \"N\"\r\n });\r\n }\r\n\r\n return {\r\n buildCNProductivity,\r\n setSettings\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\nconst cnProductivitySettingsAjax = (function() {\r\n //placeholder\r\n function getCaseNoteProductivitySettings() {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/ /',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivitySettings\r\n };\r\n})()","//Widget ID = 3\r\n\r\nconst cnRejectedSettings = (function () {\r\n // Data\r\n let CN_REJECTED_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox, daysBackInput, saveBtn;\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('3');\r\n showHide = widgetSettings.showHide;\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_REJECTED_SETTINGS = {\r\n daysBack: 60,\r\n };\r\n } else {\r\n CN_REJECTED_SETTINGS = widgetSettings.widgetConfig;\r\n }\r\n }\r\n\r\n function buildCNRejectedSettings() {\r\n getSettings();\r\n\r\n const section = document.getElementById('CN_Rejected');\r\n section.classList.add('cnRejected');\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: 'Show',\r\n style: 'secondary',\r\n isChecked: showHide === 'Y' ? true : false,\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox');\r\n\r\n daysBackInput = input.build({\r\n id: 'cnRejectedDaysBack',\r\n label: 'Rejected Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_REJECTED_SETTINGS.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n saveBtn = button.build({\r\n id: 'cnRejectedSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings,\r\n });\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox);\r\n section.appendChild(daysBackInput);\r\n\r\n section.appendChild(saveBtn);\r\n\r\n eventListeners();\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues();\r\n const configString = JSON.stringify(CN_REJECTED_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(3, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n\r\n if (newDaysBack >= 1 && newDaysBack <= 60) {\r\n CN_REJECTED_SETTINGS.daysBack = newDaysBack;\r\n }\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n showHide = 'Y';\r\n } else showHide = 'N';\r\n });\r\n }\r\n\r\n return {\r\n buildCNRejectedSettings,\r\n };\r\n})();\r\n","const TRANS_consumerDocCard = (function () {\r\n let scheduledTimeInput, travelMinInput, addressDropdown, directionsBtn, specialInstructionsBtn, noteInput, ro;\r\n\r\n /**\r\n * @param {string} consumerId Consumer Id\r\n * @param {object} cardData Data to populate the card\r\n * @param {boolean} [ro] Read Only\r\n */\r\n function createCard(consumerId, cardData, readOnly = false) {\r\n const {\r\n firstName,\r\n lastName,\r\n middleI,\r\n address1,\r\n address2,\r\n city,\r\n state,\r\n zip,\r\n notes,\r\n scheduledTime,\r\n totalTravelTime,\r\n pickupOrder,\r\n directions,\r\n specialInstructions,\r\n riderStatus,\r\n alternateAddress,\r\n batchId\r\n } = cardData;\r\n\r\n ro = readOnly;\r\n\r\n const hasDirections = directions ? true : false;\r\n const hasSpecialInstructions = specialInstructions ? true : false;\r\n const hasAltAddress = alternateAddress ? true : false;\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n\r\n //! Main Card //\r\n const cardContainer = document.createElement(\"div\");\r\n cardContainer.classList.add(\"consumerCardContainer\", \"collapsable\");\r\n // cardContainer.setAttribute(\"data-alternate-address\", hasAltAddress);\r\n cardContainer.setAttribute(\"data-rider-status\", riderStatus);\r\n cardContainer.setAttribute(\"data-expanded\", \"false\");\r\n cardContainer.setAttribute(\"id\", `${consumerId}-card`);\r\n\r\n //* Card Heading (Portrait, Name, Buttons, ALT ADDRESS WARNING) //\r\n const cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"consumerCardHeader\");\r\n const portraitContainer = document.createElement(\"div\");\r\n portraitContainer.classList.add('portrait')\r\n portraitContainer.innerHTML = `\r\n `;\r\n // *\r\n\r\n const altAddressWarning = document.createElement('h5');\r\n altAddressWarning.innerText = 'Alternate Address!'\r\n altAddressWarning.classList.add('altAddressWarning')\r\n\r\n const nameContainer = document.createElement(\"div\");\r\n nameContainer.classList.add(\"consumerCardName\");\r\n nameContainer.innerText = `${lastName}, ${firstName} ${middleI}`;\r\n const expandBtn = button.build({\r\n classNames: \"expandIcon\",\r\n type: \"text\",\r\n icon: \"keyArrowDown\",\r\n callback: (event) => {\r\n expandCard(event, consumerId, cardContainer);\r\n },\r\n });\r\n const attendanceIcon = riderStatus === 'P' || riderStatus === 'N' ?\r\n 'thumbUp' : riderStatus === 'A' ?\r\n 'thumbDown' : 'thumbUpDown'\r\n const attendanceBtn = button.build({\r\n classNames: 'attendanceIcon',\r\n type: \"text\",\r\n icon: attendanceIcon,\r\n callback: (event) => {\r\n updateRiderStatus(event, consumerId, cardContainer) \r\n if ((section === 'editRoute' || section === 'routeDocumentation') && $.session.billableTransportation == 'Y' && cardContainer.getAttribute(\"data-rider-status\") == 'P' && (DOM.ACTIONCENTER.getAttribute('data-active-section') === 'routeDocumentation' || DOM.ACTIONCENTER.getAttribute('data-active-section') === 'editRoute')) {\r\n billableCheckbox.style.display = 'inline-flex'; \r\n billableCheckbox.querySelector('#billableCheckbox').checked = true;\r\n setDefaultCheckForBillable(consumerId, cardContainer); \r\n }\r\n else {\r\n billableCheckbox.style.display = 'none';\r\n }\r\n },\r\n });\r\n const billableCheckbox = input.buildCheckbox({\r\n id: 'billableCheckbox',\r\n text: 'Billable',\r\n isChecked: riderStatus == 'P' ? true : false,\r\n callback: () => setCheckForBillable(event.target, consumerId, cardContainer),\r\n });\r\n\r\n const headerButtons = document.createElement(\"div\");\r\n headerButtons.classList.add(\"btnWrap\");\r\n headerButtons.appendChild(billableCheckbox);\r\n headerButtons.appendChild(expandBtn);\r\n if (!ro && section !== 'addroute') headerButtons.appendChild(attendanceBtn);\r\n cardHeader.appendChild(portraitContainer);\r\n cardHeader.appendChild(nameContainer);\r\n if (hasAltAddress) cardHeader.appendChild(altAddressWarning);\r\n cardHeader.appendChild(headerButtons);\r\n cardContainer.appendChild(cardHeader);\r\n // !\r\n\r\n /*\r\n ! Collapsed Items\r\n * update/change address (Manage route Only)\r\n * Address\r\n * Directions BTN\r\n * Special Instructions BTN\r\n * Scheduled Time\r\n * Travel Min\r\n * Note\r\n * Delete Consumer BTN\r\n */\r\n\r\n // * Address\r\n // Google Maps Search Information: https://developers.google.com/maps/documentation/urls/get-started#top_of_page\r\n const googleAddress = createGoogleAddress(address1, address2, city, state, zip)\r\n const addressDiv = document.createElement(\"a\");\r\n if (googleAddress) {\r\n addressDiv.classList.add(\"address\", \"content\", \"hidden\");\r\n addressDiv.target = \"_blank\"; // < new tab\r\n addressDiv.href = `https://www.google.com/maps/dir/?api=1&destination=${googleAddress}`;\r\n addressDiv.innerText = `${address1} ${address2}, ${city} ${state}, ${zip}`;\r\n } else {\r\n addressDiv.innerText = `This consumer does not have an assoicated address`;\r\n addressDiv.style.color = '#DB162f';\r\n }\r\n addressDiv.tabIndex = -1;\r\n //\r\n // * Directions and Special Instructions\r\n directionsBtn = button.build({\r\n text: 'Directions',\r\n style: 'secondary',\r\n type: 'contained',\r\n tabindex: -1,\r\n callback: () => {dirSpecInsPopup({\r\n type: \"directions\",\r\n address: \"\",\r\n consumerId: consumerId,\r\n btn: directionsBtn\r\n })}\r\n });\r\n if (hasDirections) directionsBtn.classList.add('attention')\r\n specialInstructionsBtn = button.build({\r\n text: 'Special Instructions',\r\n style: 'secondary',\r\n type: 'contained',\r\n tabindex: -1,\r\n callback: () => {dirSpecInsPopup({\r\n type: \"specialInstructions\",\r\n consumerId: consumerId,\r\n btn: specialInstructionsBtn\r\n })}\r\n });\r\n if (hasSpecialInstructions) specialInstructionsBtn.classList.add('attention')\r\n const dirSpecBtnWrap = document.createElement('div');\r\n dirSpecBtnWrap.classList.add('btnWrap');\r\n dirSpecBtnWrap.classList.add('dirSpecWrap');\r\n dirSpecBtnWrap.appendChild(directionsBtn);\r\n dirSpecBtnWrap.appendChild(specialInstructionsBtn);\r\n //\r\n // * Address Dropdown (if needed)\r\n addressDropdown = dropdown.build({\r\n label: 'Change Address',\r\n className: 'consumerAddressDropdown'\r\n })\r\n //* Travel time and min //\r\n const travelContainer = document.createElement(\"div\");\r\n travelContainer.classList.add(\"content\", \"travelWrap\", \"hidden\");\r\n scheduledTimeInput = input.build({\r\n id: `${consumerId}-timeInput`,\r\n label: \"Scheduled Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n tabindex: -1,\r\n value: scheduledTime\r\n });\r\n travelMinInput = input.build({\r\n id: `${consumerId}-travelMin`,\r\n label: \"Travel(Min)\",\r\n tabindex: -1,\r\n value: totalTravelTime\r\n });\r\n\r\n travelContainer.appendChild(scheduledTimeInput);\r\n travelContainer.appendChild(travelMinInput);\r\n\r\n // * Pick-up Order\r\n pickupOrderInput = input.build({\r\n id: `${consumerId}-pickupOrder`,\r\n label: \"Pick-up Order\",\r\n tabindex: -1,\r\n value: pickupOrder\r\n });\r\n\r\n pickupOrderInput.classList.add('pickuporder');\r\n\r\n // * Note\r\n noteInput = input.build({\r\n label: 'Notes',\r\n type: 'textarea',\r\n tabindex: -1,\r\n value: notes\r\n })\r\n //\r\n // * Delete Consumer\r\n const deleteConsumerBtn = button.build({\r\n id: `${consumerId}-delConsumer`,\r\n text: 'Remove Consumer',\r\n style: 'secondary',\r\n type: 'contained',\r\n tabindex: -1,\r\n callback: event => removeConsumerCard(event, consumerId, cardContainer)\r\n });\r\n const deleteConsumerBtnWrap = document.createElement('div');\r\n deleteConsumerBtnWrap.classList.add('btnWrap');\r\n deleteConsumerBtnWrap.classList.add('delConsumerBtnWrap');\r\n deleteConsumerBtnWrap.appendChild(deleteConsumerBtn);\r\n //\r\n\r\n cardContainer.appendChild(addressDiv);\r\n cardContainer.appendChild(dirSpecBtnWrap);\r\n if (section === 'editRoute' && !ro) {\r\n cardContainer.appendChild(addressDropdown)\r\n populateAddressDropdown(consumerId, addressDropdown, alternateAddress)\r\n altAddressEventListener(consumerId)\r\n }\r\n cardContainer.appendChild(travelContainer);\r\n cardContainer.appendChild(pickupOrderInput)\r\n cardContainer.appendChild(noteInput);\r\n if (!ro) cardContainer.appendChild(deleteConsumerBtnWrap);\r\n\r\n\r\n if (section === 'routeDocumentation') {\r\n // scheduledTimeInput.classList.add('disabled')\r\n // travelMinInput.classList.add('disabled')\r\n // noteInput.classList.add('disabled')\r\n pickupOrderInput.classList.add('disabled') \r\n } \r\n \r\n if (section === 'editRoute' || section === 'routeDocumentation') {\r\n if ($.session.billableTransportation == 'Y' && (riderStatus === 'P' || riderStatus === 'N')) {\r\n billableCheckbox.style.display = 'inline-flex';\r\n if (batchId != '' && batchId > 0) {\r\n billableCheckbox.classList.add('disabled');\r\n billableCheckbox.firstChild.setAttribute('disabled', true);\r\n }\r\n else {\r\n billableCheckbox.classList.remove('disabled')\r\n }\r\n }\r\n else {\r\n billableCheckbox.style.display = 'none';\r\n }\r\n } else {\r\n billableCheckbox.style.display = 'none';\r\n } \r\n\r\n eventListeners(consumerId)\r\n\r\n return cardContainer;\r\n }\r\n\r\n function altAddressEventListener(consumerId) {\r\n addressDropdown.addEventListener('change', event => {\r\n const addressCode = event.target.value;\r\n let dir, specInstr;\r\n if (addressCode !== \"\") {\r\n const altAddress = TRANS_mainLanding.getAlternateAddress(consumerId);\r\n const altAddressInfo = altAddress.filter(address => address.code === addressCode)[0];\r\n dir = altAddressInfo.directions\r\n specInstr = altAddressInfo.specialInstructions\r\n } else {\r\n dir = getSectionConsumerData(consumerId, 'defaultDirections')\r\n specInstr = getSectionConsumerData(consumerId, 'defaultSpecialInstructions')\r\n }\r\n updateSectionConsumerData({consumerId: consumerId, key: 'directions', value: dir})\r\n updateSectionConsumerData({consumerId: consumerId, key: 'specialInstructions', value: specInstr})\r\n dir === \"\" ? directionsBtn.classList.remove('attention') : directionsBtn.classList.add('attention');\r\n specInstr === \"\" ? specialInstructionsBtn.classList.remove('attention') : specialInstructionsBtn.classList.add('attention');\r\n })\r\n }\r\n\r\n function eventListeners(consumerId) {\r\n scheduledTimeInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'scheduledTime', value: event.target.value})\r\n })\r\n travelMinInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'totalTravelTime', value: event.target.value})\r\n })\r\n pickupOrderInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'pickupOrder', value: event.target.value})\r\n });\r\n noteInput.addEventListener('change', event => {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'notes', value: event.target.value})\r\n });\r\n\r\n }\r\n\r\n function dirSpecInsPopup(opts) {\r\n const { type, address, consumerId, btn } = opts;\r\n const popup = POPUP.build({});\r\n const textinput = input.build({\r\n label: type === 'directions' ? \"Directions\" : \"Special Instructions\",\r\n type: 'textarea',\r\n value: getSectionConsumerData(consumerId, type)\r\n });\r\n function saveCallback() {\r\n const newVal = textinput.querySelector('textarea').value;\r\n const updateData = {consumerId: consumerId, key: type, value: newVal}\r\n updateSectionConsumerData(updateData)\r\n if (newVal === \"\") {\r\n btn.classList.remove('attention')\r\n } else btn.classList.add('attention')\r\n }\r\n const saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n saveCallback()\r\n }\r\n });\r\n saveBtn.style.width = '100%';\r\n if (address) {\r\n const addressDiv = document.createElement(\"a\");\r\n addressDiv.classList.add(\"address\", \"content\", \"hidden\");\r\n addressDiv.target = \"_blank\"; // < new tab\r\n addressDiv.href = `https://www.google.com/maps/dir/?api=1&destination=1+Capitol+Square+columbus+oh+43215`;\r\n addressDiv.innerText = `1 Capitol Square, Columbus, OH 43215`\r\n popup.appendChild(addressDiv)\r\n }\r\n if (ro) textinput.classList.add('disabled')\r\n popup.appendChild(textinput)\r\n if (!ro) popup.appendChild(saveBtn)\r\n POPUP.show(popup)\r\n }\r\n\r\n function createGoogleAddress(address1, address2, city, state, zip) {\r\n if (address1 === \"\" && address2 === \"\" ) return null;\r\n address1 = address1.trim();\r\n address2 = address2.trim();\r\n city = city.trim();\r\n state = state.trim();\r\n zip = zip.trim();\r\n address1.replace(/\\s/g, '+');\r\n address2.replace(/\\s/g, '+');\r\n return `${address1}+${address2}+${city}+${state}+${zip}`\r\n }\r\n\r\n function populateAddressDropdown(consumerId, addressDropdown, altAddressCode) {\r\n const addresses = TRANS_mainLanding.getAlternateAddress(consumerId);\r\n const dropdownData = []\r\n if (addresses) {\r\n addresses.forEach(address => {\r\n dropdownData.push({\r\n value: address.code,\r\n text: `Alternate Address ${address.code} - ${address.address1}`\r\n })\r\n })\r\n }\r\n dropdownData.unshift({value: \"\", text: \"Default Address\"})\r\n dropdown.populate(addressDropdown, dropdownData, altAddressCode)\r\n function addressChangeAction(event) {\r\n updateSectionConsumerData({consumerId: consumerId, key: 'alternateAddress', value: event.target.value})\r\n }\r\n\r\n addressDropdown.addEventListener('change', event => addressChangeAction(event))\r\n }\r\n\r\n function expandCard(event, consumerId, cardContainer) {\r\n const expanded = cardContainer.getAttribute(\"data-expanded\");\r\n if (expanded === \"false\") {\r\n cardContainer.setAttribute(\"data-expanded\", \"true\");\r\n // cardContainer.querySelector(\"expandIcon\").style.transform = \"rotate(-180deg)\";\r\n } else {\r\n cardContainer.setAttribute(\"data-expanded\", \"false\");\r\n // cardContainer.querySelector(\"expandIcon\").style.transform = \"rotate(0deg)\";\r\n }\r\n\r\n const content = cardContainer.querySelectorAll(\".content\");\r\n content.forEach((element) => {\r\n if (element.classList.contains(\"hidden\")) {\r\n element.classList.remove(\"hidden\");\r\n } else {\r\n element.classList.add(\"hidden\");\r\n }\r\n });\r\n }\r\n\r\n function updateRiderStatus(event, consumerId, cardContainer) {\r\n let updateData\r\n const riderStatus = cardContainer.getAttribute(\"data-rider-status\");\r\n switch (riderStatus) {\r\n case 'P':\r\n // P updates to A\r\n updateData = {consumerId: consumerId, key: 'riderStatus', value: 'A'}\r\n cardContainer.setAttribute(\"data-rider-status\", 'A');\r\n cardContainer.querySelector('.attendanceIcon').innerHTML = icons.thumbDown\r\n break;\r\n case 'A':\r\n // A updates to blank\r\n updateData = {consumerId: consumerId, key: 'riderStatus', value: ''}\r\n cardContainer.setAttribute(\"data-rider-status\", '');\r\n cardContainer.querySelector('.attendanceIcon').innerHTML = icons.thumbUpDown\r\n\r\n break;\r\n default:\r\n //blank updates to P\r\n updateData = {consumerId: consumerId, key: 'riderStatus', value: 'P'}\r\n cardContainer.setAttribute(\"data-rider-status\", 'P');\r\n cardContainer.querySelector('.attendanceIcon').innerHTML = icons.thumbUp\r\n break;\r\n }\r\n updateSectionConsumerData(updateData);\r\n }\r\n\r\n function setCheckForBillable(event, consumerId, cardContainer) {\r\n if (event.checked) {\r\n updateData = { consumerId: consumerId, key: 'riderStatus', value: 'P' }\r\n cardContainer.setAttribute(\"data-rider-status\", 'P');\r\n }\r\n else {\r\n updateData = { consumerId: consumerId, key: 'riderStatus', value: 'N' }\r\n cardContainer.setAttribute(\"data-rider-status\", 'N');\r\n }\r\n updateSectionConsumerData(updateData);\r\n }\r\n\r\n function setDefaultCheckForBillable(consumerId, cardContainer) {\r\n updateData = { consumerId: consumerId, key: 'riderStatus', value: 'P' }\r\n cardContainer.setAttribute(\"data-rider-status\", 'P');\r\n updateSectionConsumerData(updateData);\r\n }\r\n\r\n function updateSectionConsumerData(updateData) {\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n switch (section) {\r\n case 'addroute':\r\n TRANS_addRoute.updateConsumerData(updateData)\r\n break;\r\n case 'routeDocumentation':\r\n TRANS_routeDocumentation.updateConsumerData(updateData)\r\n break;\r\n case 'editRoute':\r\n TRANS_manageEditRoute.updateConsumerData(updateData)\r\n break;\r\n default:\r\n console.error('warning, could not determine which section this consumer was removed from')\r\n break;\r\n }\r\n }\r\n function getSectionConsumerData(consumerId, key) {\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n switch (section) {\r\n case 'addroute':\r\n return TRANS_addRoute.retrieveConsumerData(consumerId, key)\r\n case 'routeDocumentation':\r\n return TRANS_routeDocumentation.retrieveConsumerData(consumerId, key)\r\n case 'editRoute':\r\n return TRANS_manageEditRoute.retrieveConsumerData(consumerId, key)\r\n default:\r\n console.error('warning, could not determine which section this consumer was removed from')\r\n break;\r\n }\r\n }\r\n\r\n function removeConsumerCard(event, consumerId, cardContainer) {\r\n function accpetCallback() {\r\n cardContainer.remove();\r\n roster2.removeConsumerFromActiveConsumers(consumerId)\r\n // Section specific actions\r\n const section = DOM.ACTIONCENTER.getAttribute('data-active-section');\r\n switch (section) {\r\n case 'addroute':\r\n TRANS_addRoute.consumerRemoveAction(consumerId)\r\n break;\r\n case 'routeDocumentation':\r\n TRANS_routeDocumentation.consumerRemoveAction(consumerId)\r\n break;\r\n case 'editRoute':\r\n TRANS_manageEditRoute.consumerRemoveAction(consumerId)\r\n break;\r\n default:\r\n console.error('warning, could not determine which section this consumer was removed from')\r\n break;\r\n }\r\n }\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to remove this consumer from the route?',\r\n accept: {text: 'Yes', callback: accpetCallback},\r\n reject: {text: 'No', callback: () =>{}}\r\n })\r\n }\r\n return {\r\n createCard,\r\n };\r\n})();\r\n","const TRANS_routeDocumentation = (function () {\r\n /* Page Components\r\n Route and Vehicle Display\r\n Route/Vehicle Start/End Time and Start/End ODO\r\n Consumer Section\r\n Consumer Card\r\n Pic\r\n full name\r\n Address/Alternate Address\r\n Scheduled Time\r\n Travel Min\r\n Status\r\n Notes\r\n Directions\r\n Special Instructions\r\n Save and Cancel btns\r\n */\r\n\r\n let routeStartInput, routeEndInput, routeStartOdo, routeEndOdo, ro;\r\n let consumerDocCardBody;\r\n\r\n // * Data storage\r\n let consumersOnRecord = new Map() //{consumerId: {consumer data}}\r\n let consumersToRemove\r\n let tripInfo, tripsCompletedId, dateOfService, routeVehicle;\r\n\r\n\r\n function buildPage(params) {\r\n const column1 = document.createElement('div');\r\n column1.classList.add('col-1')\r\n const column2 = document.createElement('div');\r\n column2.classList.add('col-2')\r\n\r\n const routeVehicleDisplay = document.createElement(\"div\");\r\n const vehicleOnRoute = TRANS_mainLanding.vehicleLookup(routeVehicle)\r\n // Convert date to readable date:\r\n const readableDate = UTIL.formatDateFromIso(params.date)\r\n const otherRider = tripInfo.otherRider !== \"\" ? TRANS_mainLanding.driverLookup(tripInfo.otherRider) : \"\"\r\n let otherRiderElement = '';\r\n if (otherRider) {\r\n otherRiderElement = `

    Other Rider: ${otherRider.Last_Name}, ${otherRider.First_Name}

    `;\r\n };\r\n routeVehicleDisplay.innerHTML = `\r\n

    Route: ${params.routeName}

    \r\n

    Vehicle: ${vehicleOnRoute.vehicleDescription}

    \r\n

    Date: ${readableDate}

    \r\n ${otherRider ? otherRiderElement : ''}\r\n `;\r\n column1.appendChild(routeVehicleDisplay);\r\n\r\n // Route Documentation Card//\r\n const routeDocCard = document.createElement(\"div\");\r\n routeDocCard.classList.add(\"card\");\r\n const routeDocCardBody = document.createElement(\"div\");\r\n routeDocCardBody.classList.add(\"card__body\");\r\n routeDocCard.innerHTML = `\r\n
    Route Documentation
    \r\n `;\r\n routeDocCard.appendChild(routeDocCardBody);\r\n // inputs for route doc card\r\n routeStartInput = input.build({\r\n id: \"routeStartTime\",\r\n label: \"Route Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: tripInfo.startTime\r\n });\r\n routeEndInput = input.build({\r\n id: \"routeEndTime\",\r\n label: \"Route End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: tripInfo.endTime\r\n });\r\n routeStartOdo = input.build({\r\n id: \"routeStartOdo\",\r\n type: 'number',\r\n label: \"Starting Odometer\",\r\n style: \"secondary\",\r\n value: tripInfo.odometerStart\r\n });\r\n routeEndOdo = input.build({\r\n id: \"routeEndOdo\",\r\n type: 'number',\r\n label: \"Ending Odometer\",\r\n style: \"secondary\",\r\n value: tripInfo.odometerStop\r\n });\r\n if (ro) {\r\n routeStartInput.classList.add('disabled')\r\n routeEndInput.classList.add('disabled')\r\n routeStartOdo.classList.add('disabled')\r\n routeEndOdo.classList.add('disabled')\r\n }\r\n routeDocCardBody.appendChild(routeStartInput);\r\n routeDocCardBody.appendChild(routeStartOdo);\r\n routeDocCardBody.appendChild(routeEndInput);\r\n routeDocCardBody.appendChild(routeEndOdo);\r\n column1.appendChild(routeDocCard);\r\n // ! Consumer Section //\r\n const consumerDocCard = document.createElement(\"div\");\r\n consumerDocCard.classList.add(\"card\");\r\n consumerDocCardBody = document.createElement(\"div\");\r\n consumerDocCardBody.classList.add(\"card__body\");\r\n consumerDocCard.innerHTML = `\r\n
    Consumers
    \r\n `;\r\n consumerDocCard.appendChild(consumerDocCardBody);\r\n column2.appendChild(consumerDocCard);\r\n // Save Cancel Btn //\r\n const saveBtn = button.build({\r\n id: 'saveBtn',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveData()}\r\n });\r\n const saveCloseBtn = button.build({\r\n id: 'saveCloseBtn',\r\n text: 'Save & Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveData(true)}\r\n });\r\n const cancelBtn = button.build({\r\n id: 'cancelBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn()\r\n TRANS_myRoute.init()\r\n }\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (!ro) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(saveCloseBtn);\r\n column2.appendChild(btnWrap);\r\n }\r\n column2.appendChild(cancelBtn)\r\n cancelBtn.style.width = '100%';\r\n /////////////////////\r\n DOM.ACTIONCENTER.appendChild(column1)\r\n DOM.ACTIONCENTER.appendChild(column2)\r\n buildConsumerCards()\r\n eventListeners()\r\n }\r\n\r\n function eventListeners() {\r\n function odoCheck() {\r\n const startVal = parseInt(routeStartOdo.querySelector('input').value)\r\n const endVal = parseInt(routeEndOdo.querySelector('input').value)\r\n //Odo can be null, check to see if they are numbers (NaN when they are null)\r\n if (typeof(startVal) !== 'number' && typeof(endVal) !== 'number') {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n return\r\n }\r\n\r\n const dif = endVal - startVal;\r\n if (dif < 0) {\r\n routeStartOdo.classList.add('error');\r\n routeEndOdo.classList.add('error')\r\n } else {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n }\r\n }\r\n\r\n routeStartInput.addEventListener('click', event => {\r\n event.target.value = UTIL.getCurrentTime();\r\n routeStartInput.dispatchEvent(new Event('change'))\r\n }, {once: true})\r\n routeEndInput.addEventListener('click', event => {\r\n event.target.value = UTIL.getCurrentTime();\r\n routeEndInput.dispatchEvent(new Event('change'))\r\n }, {once: true})\r\n\r\n routeStartInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.firstChild.value, routeEndInput.querySelector('input').value)\r\n if (totalHours < 0) {\r\n routeStartInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n\r\n })\r\n routeEndInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.querySelector('input').value, routeEndInput.firstChild.value)\r\n if (totalHours < 0) {\r\n routeEndInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n })\r\n routeStartOdo.addEventListener('change', () => odoCheck())\r\n routeEndOdo.addEventListener('change', () => odoCheck())\r\n }\r\n\r\n function buildConsumerCards() {\r\n consumersOnRecord.forEach((val,key, map) => {\r\n transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n consumerDocCardBody.appendChild(transportationCard)\r\n })\r\n }\r\n\r\n function loadData(routeID, routeName, date) {\r\n function cleanData(getTripInformationResult, getTripConsumersResult) {\r\n tripInfo = getTripInformationResult[0];\r\n getTripConsumersResult.forEach(consumer => {\r\n consumer.batchId = tripInfo.batchId; \r\n consumersOnRecord.set(consumer.consumerId, consumer);\r\n // Roster Required Info:\r\n const consumerobj = roster2.buildConsumerCard({\r\n FN: consumer.firstName,\r\n LN: consumer.lastName,\r\n id: consumer.consumerId\r\n });\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n })\r\n buildPage({routeName: routeName, date: date});\r\n }\r\n //Get data for the route\r\n const routeInfo = TRANS_routeDocumentationAjax.getRouteInformation(routeID)\r\n const consumerInfo = TRANS_routeDocumentationAjax.getRouteConsumers(routeID)\r\n Promise.all([routeInfo, consumerInfo]).then(val => {\r\n const getTripInformationResult = val[0].getTripInformationResult\r\n const getTripConsumersResult = val[1].getTripConsumersResult\r\n cleanData(getTripInformationResult, getTripConsumersResult);\r\n })\r\n }\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId);\r\n consumersToRemove.push(consumerId)\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerDocCardBody.appendChild(transportationCard)\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n DOM.toggleNavLayout();\r\n roster2.clearSelectedConsumers();\r\n break;\r\n }\r\n }\r\n }\r\n function saveData(closeTrip = false) {\r\n pendingSave.show('Saving Route...')\r\n // debugger\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n\r\n const startTime = routeStartInput.querySelector('input').value\r\n const endTime = routeEndInput.querySelector('input').value\r\n const odoStart = routeStartOdo.querySelector('input').value\r\n const odoEnd = routeEndOdo.querySelector('input').value\r\n const dbCallArr = []\r\n const tripDetailSubmit = {\r\n token: $.session.Token,\r\n tripsCompletedId: tripsCompletedId,\r\n odometerStart: odoStart,\r\n odometerStop: odoEnd,\r\n startTime: startTime,\r\n endTime: endTime\r\n }\r\n dbCallArr.push(TRANS_routeDocumentationAjax.updateTripDetails(tripDetailSubmit))\r\n consumersOnRecord.forEach((val,key,map) => {\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: tripsCompletedId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes: '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit))\r\n })\r\n consumersToRemove.forEach(consumer => {\r\n const data = {\r\n tripsCompletedId: tripsCompletedId,\r\n consumerId: consumer\r\n }\r\n dbCallArr.push(TRANS_routeDocumentationAjax.deleteConsumerFromTrip(data))\r\n })\r\n Promise.all(dbCallArr).then(() => {\r\n pendingSave.fulfill('Save Successful');\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n if (closeTrip) {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn()\r\n TRANS_myRoute.init()\r\n }\r\n }, 1000);\r\n })\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.')\r\n console.error('Failing due to odometer or time overlap. Check odometer and time overlaps.')\r\n } else {\r\n pendingSave.reject('Failed to save. Please try again.')\r\n }\r\n console.error(error)\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n\r\n }\r\n /**\r\n *\r\n * @param {object} opts Options\r\n * @param {string} opts.date Selected Date\r\n * @param {string} opts.routeID Selected Route ID\r\n * @param {string} opts.routeName Selected Route ID\r\n * @param {boolean} [opts.ro] Read Only. True when batched, future date is selected, or based on permissions?\r\n */\r\n function init(opts) {\r\n const { date, routeID, routeName, readOnly, vehicleInfoId} = opts\r\n ro = readOnly\r\n // No Update permission = read only\r\n if ($.session.transportationUpdate === false) {\r\n ro = true;\r\n }\r\n // Reset Values:\r\n consumersOnRecord.clear();\r\n consumersToRemove = [];\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"routeDocumentation\");\r\n tripsCompletedId = routeID;\r\n dateOfService = date;\r\n routeVehicle = vehicleInfoId;\r\n loadData(routeID, routeName, date)\r\n // Mini roster\r\n if (!ro) {\r\n roster2.miniRosterinit(null, {hideDate: true})\r\n roster2.updateSelectedDate(date)\r\n }\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_routeDocumentationAjax = (function() {\r\n\r\n function getRouteInformation(tripCompletedId) {\r\n const data = {\r\n token: $.session.Token,\r\n tripsCompletedId: tripCompletedId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTripInformation/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function getRouteConsumers(tripCompletedId) {\r\n const data = {\r\n token: $.session.Token,\r\n tripsCompletedId: tripCompletedId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTripConsumers/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function getConsumerDetails(consumerId) {\r\n const data = {\r\n token: $.session.Token,\r\n consumerId: consumerId\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumerDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function updateTripDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateTripDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateTripConsumers(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateTripConsumers/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function deleteConsumerFromTrip(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteConsumerFromTrip/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n getRouteInformation,\r\n getRouteConsumers,\r\n getConsumerDetails,\r\n updateTripDetails,\r\n insertUpdateTripConsumers,\r\n deleteConsumerFromTrip\r\n }\r\n})();","// var itConsumerSection = (function () {\r\n// // DOM\r\n// // ---------------------\r\n// var section;\r\n// var sectionBody;\r\n// var consumerError;\r\n// var consumersWrap;\r\n// var consumerSections;\r\n// // DATA\r\n// //---------------------\r\n// var activeConsumers = [];\r\n// var consumersInvolved;\r\n// var consumerInvolvedIdArray;\r\n// // Values\r\n// // ---------------------\r\n\r\n// function clearData() {\r\n// consumerFollowUp.clearData();\r\n// consumerInjuries.clearData();\r\n// consumerIntervention.clearData();\r\n// consumerInvolvement.clearData();\r\n// consumerReporting.clearData();\r\n// consumerReview.clearData();\r\n// // consumerBehavior.clearData();\r\n// activeConsumers = [];\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// consumerFollowUp.deleteConsumerData(consumerId);\r\n// consumerInjuries.deleteConsumerData(consumerId);\r\n// consumerIntervention.deleteConsumerData(consumerId);\r\n// consumerInvolvement.deleteConsumerData(consumerId);\r\n// consumerReporting.deleteConsumerData(consumerId);\r\n// consumerReview.deleteConsumerData(consumerId);\r\n// // consumerBehavior.deleteConsumerData(consumerId);\r\n// }\r\n\r\n// function getConsumersInvolved() {\r\n// if (consumersInvolved) return [...consumersInvolved];\r\n// }\r\n// function getConsumersInvolvedIds() {\r\n// if (consumerInvolvedIdArray && consumerInvolvedIdArray.length > 0) {\r\n// return [...consumerInvolvedIdArray];\r\n// }\r\n// }\r\n\r\n// function showConsumersWrap() {\r\n// consumersWrap.classList.add('visible');\r\n// consumerSections.classList.remove('visible');\r\n// }\r\n// function displayCount() {\r\n// var count = activeConsumers.length;\r\n// var countHolder = section.querySelector('span[data-count=\"consumers\"]');\r\n// countHolder.innerHTML = `( ${count} )`;\r\n// }\r\n// function checkForRequiredConsumer() {\r\n// if (activeConsumers.length === 0) {\r\n// consumerError.classList.remove('hidden');\r\n// consumersWrap.classList.remove('visible');\r\n// consumerSections.classList.remove('visible');\r\n\r\n// incidentCard.toggleSave(true);\r\n// return;\r\n// }\r\n\r\n// consumerError.classList.add('hidden');\r\n// consumersWrap.classList.add('visible');\r\n// }\r\n// function removeConsumerErrors() {\r\n// var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n// consumerCards.forEach(card => card.classList.remove('error'));\r\n\r\n// var cardHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n// if (cardHasErrors) {\r\n// incidentCard.toggleSave(true);\r\n// } else {\r\n// incidentCard.toggleSave(false);\r\n// }\r\n// }\r\n// function showConsumerError(consumerIdArray) {\r\n// incidentCard.toggleSave(true);\r\n\r\n// var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n\r\n// if (consumerIdArray[0] === '%') {\r\n// // mark all\r\n// // show error \"At least one consumer must have PPI checked.\"\r\n// consumerCards.forEach(card => card.classList.add('error'));\r\n// return;\r\n// }\r\n\r\n// consumerCards.forEach(card => {\r\n// var cardId = card.dataset.consumerId;\r\n// if (consumerIdArray.includes(cardId)) {\r\n// card.classList.add('error');\r\n// } else {\r\n// card.classList.remove('error');\r\n// }\r\n// });\r\n// }\r\n\r\n// function moveConsumersToConsumersInvolved(consumers) {\r\n// var initPromises = [];\r\n\r\n// consumersWrap.classList.add('visible');\r\n\r\n// consumers.forEach(consumer => {\r\n// //If consumer is already on the selected consumer list ignore\r\n// if (activeConsumers.filter(actConsumer => actConsumer.id === consumer.id).length > 0) return;\r\n// consumer.card.classList.remove('highlighted');\r\n// var clone = consumer.card.cloneNode(true);\r\n// var card = buildConsumer(clone);\r\n// consumersWrap.appendChild(card);\r\n// var initPromise = consumerInvolvement.initConsumerData(consumer.id);\r\n// initPromises.push(initPromise);\r\n// });\r\n\r\n// activeConsumers = roster2.getActiveConsumers();\r\n// checkForRequiredConsumer();\r\n// displayCount();\r\n\r\n// Promise.all(initPromises).then(() => {\r\n// consumerInvolvement.checkRequiredFields();\r\n// });\r\n\r\n// // Event when you add a consumer\r\n// // 1. Ensure that all required fields are filled in on the details section\r\n// var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n// if (detailSectionHasErrors) {\r\n// incidentCard.toggleSave(true);\r\n// } else {\r\n// incidentCard.toggleSave(false);\r\n// }\r\n// }\r\n// function removeConsumerFromConsumersInvolved(selectedConsumerId) {\r\n// var consumerCard = document.querySelector(\r\n// `[data-consumer-id=\"${selectedConsumerId}\"]`,\r\n// ).parentElement;\r\n// consumersWrap.removeChild(consumerCard);\r\n\r\n// consumerSections.classList.remove('visible');\r\n\r\n// incidentCard.toggleActionBtns(false);\r\n\r\n// roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n// activeConsumers = roster2.getActiveConsumers();\r\n\r\n// deleteConsumerData(selectedConsumerId);\r\n\r\n// checkForRequiredConsumer();\r\n// consumerInvolvement.checkRequiredFields();\r\n// displayCount();\r\n// roster2.toggleMiniRosterBtnVisible(true);\r\n\r\n// // Event when you remove a consumer\r\n// // 1. Ensure that at least one consumer is selected\r\n// // 2. Ensure that all required fields are filled in on the details section\r\n// var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n// //var consumerSectionHasErrors = incidentCard.checkforRequiredConsumer();\r\n// // var consumerSectionConsumers = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n// if (detailSectionHasErrors || activeConsumers.length === 0) {\r\n// incidentCard.toggleSave(true);\r\n// } else {\r\n// incidentCard.toggleSave(false);\r\n// }\r\n// }\r\n\r\n// // Populate\r\n// //-----------------------------------------------\r\n// function populateConsumersWrap() {\r\n// consumerInvolvedIdArray = [];\r\n\r\n// consumersInvolved.forEach(c => {\r\n// consumerInvolvedIdArray.push({ id: c.consumerId, involvedId: c.consumerInvolvedId });\r\n// // build consumer card\r\n// var consumer = roster2.buildConsumerCard({\r\n// FN: c.firstName,\r\n// LN: c.lastName,\r\n// id: c.consumerId,\r\n// });\r\n// // build incident card\r\n// var card = buildConsumer(consumer);\r\n// consumersWrap.appendChild(card);\r\n// // move consumer to avtive list\r\n// roster2.addConsumerToActiveConsumers(consumer);\r\n// });\r\n\r\n// activeConsumers = roster2.getActiveConsumers();\r\n\r\n// consumersWrap.classList.add('visible');\r\n\r\n// checkForRequiredConsumer();\r\n// consumerInvolvement.checkRequiredFields();\r\n// displayCount();\r\n// }\r\n\r\n// // Consumer Card\r\n// //-----------------------------------------------\r\n// function buildConsumer(consumerCard) {\r\n// function checkInvolvedRequirements() {\r\n// const locationId = consumerInvolvement.involvementDataLookup(\r\n// consumerCard.dataset.consumerId,\r\n// ).locationId;\r\n\r\n// const involvementSec = document.querySelector(\"[data-sectionid='4']\");\r\n\r\n// if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n// involvementSec.classList.add('sectionError');\r\n// } else {\r\n// involvementSec.classList.remove('sectionError');\r\n// }\r\n// }\r\n\r\n// consumerCard.classList.remove('highlighted');\r\n\r\n// var cardWrap = document.createElement('div');\r\n// cardWrap.classList.add('incidentCard__consumer');\r\n\r\n// // build card\r\n// cardWrap.appendChild(consumerCard);\r\n\r\n// // card event\r\n// cardWrap.addEventListener('click', function (event) {\r\n// if (event.target === consumerCard) {\r\n// incidentCard.toggleActionBtns(true);\r\n// consumersWrap.classList.remove('visible');\r\n// consumerSections.classList.add('visible');\r\n// consumerSubSections.showMenu(consumerCard);\r\n// checkInvolvedRequirements();\r\n// if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(false);\r\n// }\r\n// });\r\n\r\n// return cardWrap;\r\n// }\r\n\r\n// // Section\r\n// //-----------------------------------------------\r\n// function buildSection(options, consumersInvolvedData) {\r\n// var opts = options;\r\n// consumersInvolved = consumersInvolvedData;\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('incidentSection', 'visible');\r\n// section.setAttribute('data-card-page', 'consumers');\r\n// section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n// var heading = document.createElement('div');\r\n// heading.classList.add('incidentSection__header');\r\n// heading.innerHTML = `

    Consumers Involved

    `;\r\n\r\n// sectionBody = document.createElement('div');\r\n// sectionBody.classList.add('incidentSection__body');\r\n\r\n// consumerError = document.createElement('p');\r\n// consumerError.classList.add('consumerError');\r\n// consumerError.innerHTML = 'You must select at least one consumer';\r\n\r\n// consumersWrap = document.createElement('div');\r\n// consumersWrap.classList.add('consumersWrap');\r\n\r\n// consumerSections = consumerSubSections.build(consumersInvolved);\r\n\r\n// sectionBody.appendChild(consumerError);\r\n// sectionBody.appendChild(consumersWrap);\r\n// sectionBody.appendChild(consumerSections);\r\n\r\n// section.appendChild(heading);\r\n// section.appendChild(sectionBody);\r\n\r\n// if (consumersInvolved) {\r\n// populateConsumersWrap();\r\n// } else {\r\n// consumerInvolvedIdArray = undefined;\r\n// }\r\n\r\n// return section;\r\n// }\r\n\r\n// return {\r\n// build: buildSection,\r\n// addConsumers: moveConsumersToConsumersInvolved,\r\n// removeConsumer: removeConsumerFromConsumersInvolved,\r\n// showConsumersWrap,\r\n// getConsumersInvolved,\r\n// getConsumersInvolvedIds,\r\n// removeConsumerErrors,\r\n// showConsumerError,\r\n// clearData,\r\n// };\r\n// })();\r\n","// var consumerSubSections = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var sectionsContainer;\r\n// var sectionsTopBar;\r\n// var backBtn;\r\n// var sectionsMenu;\r\n// //* sub sections\r\n// var followUpSection;\r\n// var injuriesSection;\r\n// var interventionSection;\r\n// var involvementSection;\r\n// var reportingSection;\r\n// var reviewSection;\r\n// var behaviorSection;\r\n// // DATA\r\n// //---------------------\r\n// // var consumersInvolved;\r\n// var sections = [\r\n// { id: 0, name: 'Remove Consumer' },\r\n// { id: 1, name: 'Behavior Details' },\r\n// { id: 2, name: 'Follow Up' },\r\n// { id: 3, name: 'Injuries' },\r\n// { id: 4, name: 'Intervention' },\r\n// { id: 5, name: 'Involvement' },\r\n// { id: 6, name: 'Reporting' },\r\n// { id: 7, name: 'Review' },\r\n// ];\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n\r\n// // Hide/Show\r\n// //-----------------------------------------------\r\n// function handleBackButtonClick() {\r\n// var visibleSection = sectionsContainer.querySelector('.consumerSections__section.visible');\r\n\r\n// if (visibleSection) {\r\n// var visibleSectionHome = visibleSection.querySelector('.consumerSections__section__home');\r\n// if (visibleSectionHome) {\r\n// visibleSectionHome.classList.remove('hidden'); // reshow home page\r\n// }\r\n// visibleSection.classList.remove('visible'); // hide section\r\n// sectionsMenu.classList.add('visible'); // show menu\r\n// } else {\r\n// incidentCard.toggleActionBtns(false);\r\n// itConsumerSection.showConsumersWrap();\r\n// if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(true);\r\n// }\r\n// }\r\n// function hideBackBtn() {\r\n// backBtn.classList.add('hidden');\r\n// }\r\n// function showBackBtn() {\r\n// backBtn.classList.remove('hidden');\r\n// }\r\n// function showSectionMenu() {\r\n// sectionsMenu.classList.add('visible');\r\n// }\r\n// function showSection(sectionName) {\r\n// var targetSection;\r\n\r\n// switch (sectionName) {\r\n// case 'Follow Up': {\r\n// targetSection = followUpSection;\r\n// break;\r\n// }\r\n// case 'Injuries': {\r\n// targetSection = injuriesSection;\r\n// break;\r\n// }\r\n// case 'Intervention': {\r\n// targetSection = interventionSection;\r\n// break;\r\n// }\r\n// case 'Involvement': {\r\n// targetSection = involvementSection;\r\n// break;\r\n// }\r\n// case 'Reporting': {\r\n// targetSection = reportingSection;\r\n// break;\r\n// }\r\n// case 'Review': {\r\n// targetSection = reviewSection;\r\n// break;\r\n// }\r\n// case 'Behavior Details': {\r\n// targetSection = behaviorSection;\r\n// break;\r\n// }\r\n// }\r\n\r\n// sectionsMenu.classList.remove('visible');\r\n// targetSection.classList.add('visible');\r\n// }\r\n\r\n// // Populate\r\n// //-----------------------------------------------\r\n// function populateSection(sectionName) {\r\n// incidentId = incident.getIncidentId();\r\n\r\n// if (incidentId) {\r\n// switch (sectionName) {\r\n// case 'Follow Up': {\r\n// incidentTrackingAjax.getitConsumerFollowUps(selectedConsumerId, incidentId, res => {\r\n// consumerFollowUp.populate(res, selectedConsumerId);\r\n// });\r\n// break;\r\n// }\r\n// case 'Injuries': {\r\n// incidentTrackingAjax.getitConsumerInjuries(selectedConsumerId, incidentId, res => {\r\n// consumerInjuries.populate(res, selectedConsumerId);\r\n// });\r\n// break;\r\n// }\r\n// case 'Intervention': {\r\n// incidentTrackingAjax.getitConsumerInterventions(selectedConsumerId, incidentId, res => {\r\n// consumerIntervention.populate(res, selectedConsumerId);\r\n// });\r\n// break;\r\n// }\r\n// case 'Involvement': {\r\n// consumerInvolvement.populate(selectedConsumerId);\r\n// break;\r\n// }\r\n// case 'Reporting': {\r\n// incidentTrackingAjax.getitConsumerReporting(selectedConsumerId, incidentId, res => {\r\n// consumerReporting.populate(res, selectedConsumerId);\r\n// });\r\n// break;\r\n// }\r\n// case 'Review': {\r\n// incidentTrackingAjax.getitConsumerReviews(selectedConsumerId, incidentId, res => {\r\n// consumerReview.populate(res, selectedConsumerId);\r\n// });\r\n// break;\r\n// }\r\n// // case 'Behavior Details': {\r\n// // incidentTrackingAjax.getitConsumerBehavior(selectedConsumerId, incidentId, res => {\r\n// // console.log(res);\r\n// // consumerBehavior.populate(res, selectedConsumerId);\r\n// // });\r\n// // break;\r\n// // }\r\n// }\r\n// } else {\r\n// switch (sectionName) {\r\n// case 'Follow Up': {\r\n// consumerFollowUp.populate(null, selectedConsumerId);\r\n// break;\r\n// }\r\n// case 'Injuries': {\r\n// consumerInjuries.populate(null, selectedConsumerId);\r\n// break;\r\n// }\r\n// case 'Intervention': {\r\n// consumerIntervention.populate(null, selectedConsumerId);\r\n// break;\r\n// }\r\n// case 'Involvement': {\r\n// consumerInvolvement.populate(selectedConsumerId);\r\n// break;\r\n// }\r\n// case 'Reporting': {\r\n// consumerReporting.populate(null, selectedConsumerId);\r\n// break;\r\n// }\r\n// case 'Review': {\r\n// consumerReview.populate(null, selectedConsumerId);\r\n// break;\r\n// }\r\n// // case 'Behavior Details': {\r\n// // consumerBehavior.populate(null, selectedConsumerId);\r\n// // break;\r\n// // }\r\n// }\r\n// }\r\n// }\r\n\r\n// // Top Bar\r\n// //-----------------------------------------------\r\n// function buildTopBar() {\r\n// var topBar = document.createElement('div');\r\n// topBar.classList.add('topBar');\r\n\r\n// backBtn = button.build({\r\n// text: 'Back',\r\n// style: 'secondary',\r\n// type: 'text',\r\n// icon: 'arrowBack',\r\n// classNames: ['backBtn'],\r\n// callback: handleBackButtonClick,\r\n// });\r\n\r\n// topBar.appendChild(backBtn);\r\n\r\n// return topBar;\r\n// }\r\n\r\n// // Menu\r\n// //-----------------------------------------------\r\n// function showMenu(consumerCard) {\r\n// selectedConsumerId = consumerCard.dataset.consumerId;\r\n\r\n// sectionsMenu.classList.add('visible');\r\n\r\n// // remove old consumer card\r\n// var oldCard = sectionsTopBar.querySelector('.consumerCard');\r\n// if (oldCard) sectionsTopBar.removeChild(oldCard);\r\n\r\n// // add selected consumer card\r\n// var cardClone = consumerCard.cloneNode(true);\r\n// sectionsTopBar.appendChild(cardClone);\r\n// }\r\n// function buildMenu() {\r\n// var menu = document.createElement('div');\r\n// menu.classList.add('consumerSections__menu', 'visible');\r\n\r\n// sections.forEach(sec => {\r\n// var sectionItem = document.createElement('div');\r\n// sectionItem.classList.add('menuItem');\r\n// sectionItem.innerHTML = sec.name;\r\n// sectionItem.setAttribute('data-sectionId', sec.id);\r\n// if (sec.name === 'Remove Consumer') sectionItem.classList.add('removeConsumer');\r\n// menu.appendChild(sectionItem);\r\n// });\r\n\r\n// menu.addEventListener('click', e => {\r\n// var targetSectionName = e.target.innerHTML;\r\n\r\n// if (targetSectionName === 'Remove Consumer') {\r\n// itConsumerSection.removeConsumer(selectedConsumerId);\r\n// } else {\r\n// showSection(targetSectionName);\r\n// populateSection(targetSectionName);\r\n// }\r\n// });\r\n\r\n// return menu;\r\n// }\r\n\r\n// // Main\r\n// //-----------------------------------------------\r\n// function build(consumersInvolvedData) {\r\n// sectionsContainer = document.createElement('div');\r\n// sectionsContainer.classList.add('consumerSections');\r\n\r\n// sectionsTopBar = buildTopBar();\r\n\r\n// var sectionsInner = document.createElement('div');\r\n// sectionsInner.classList.add('consumerSections__inner');\r\n\r\n// sectionsMenu = buildMenu();\r\n// followUpSection = consumerFollowUp.build();\r\n// injuriesSection = consumerInjuries.build();\r\n// interventionSection = consumerIntervention.build();\r\n// involvementSection = consumerInvolvement.build(consumersInvolvedData);\r\n// reportingSection = consumerReporting.build();\r\n// reviewSection = consumerReview.build();\r\n// // behaviorSection = consumerBehavior.build();\r\n\r\n// sectionsInner.appendChild(sectionsMenu);\r\n// // sectionsInner.appendChild(behaviorSection);\r\n// sectionsInner.appendChild(followUpSection);\r\n// sectionsInner.appendChild(injuriesSection);\r\n// sectionsInner.appendChild(interventionSection);\r\n// sectionsInner.appendChild(involvementSection);\r\n// sectionsInner.appendChild(reportingSection);\r\n// sectionsInner.appendChild(reviewSection);\r\n\r\n// sectionsContainer.appendChild(sectionsTopBar);\r\n// sectionsContainer.appendChild(sectionsInner);\r\n\r\n// return sectionsContainer;\r\n// }\r\n\r\n// return {\r\n// build,\r\n// showMenu,\r\n// showSectionMenu,\r\n// showBackBtn,\r\n// hideBackBtn,\r\n// };\r\n// })();\r\n","const consumerBehavior = (function () {\r\n // DOM\r\n //---------------------\r\n let section;\r\n let behaviorHome;\r\n let newBehaviorBtn;\r\n let behaviorReviewTable;\r\n //*form\r\n let behaviorTypeDropdown;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let occurrencesInput;\r\n let formButtons;\r\n let deleteBtn;\r\n let saveBtn;\r\n let cancelBtn;\r\n // DATA\r\n //---------------------\r\n let behaviorData; // save/update data\r\n let behaviorDeleteData;\r\n let behaviorTypes; // dropdown data\r\n // Values\r\n //---------------------\r\n let selectedConsumerId;\r\n let selectedBehaviorId;\r\n //*form default values\r\n let behaviorType;\r\n let behaviorTypeId;\r\n let startTime;\r\n let endTime;\r\n let occurrences;\r\n\r\n let isEdit;\r\n let formReadOnly;\r\n\r\n function getDataForSave() {\r\n return behaviorData;\r\n }\r\n function getDataForDelete() {\r\n return behaviorDeleteData;\r\n }\r\n function clearData() {\r\n behaviorData = undefined;\r\n behaviorDeleteData = undefined;\r\n selectedConsumerId = undefined;\r\n selectedBehaviorId = undefined;\r\n\r\n clearFormDataDefaults();\r\n clearReviewTable();\r\n }\r\n function deleteConsumerData(consumerId) {\r\n // deletes all follow ups\r\n if (behaviorData[consumerId]) {\r\n var { [consumerId]: removedConsumerData, ...newBehaviorData } = behaviorData;\r\n behaviorData = newBehaviorData;\r\n\r\n if (!behaviorDeleteData[consumerId]) {\r\n behaviorDeleteData[consumerId] = removedConsumerData;\r\n }\r\n }\r\n }\r\n function deleteConsumerBehaviorData() {\r\n if (!selectedBehaviorId.includes('new')) {\r\n var deletedBehavior = behaviorData[selectedConsumerId][selectedBehaviorId];\r\n if (!behaviorDeleteData[selectedConsumerId]) behaviorDeleteData[selectedConsumerId] = {};\r\n behaviorDeleteData[selectedConsumerId][selectedBehaviorId] = deletedBehavior;\r\n }\r\n\r\n delete behaviorData[selectedConsumerId][selectedBehaviorId];\r\n\r\n selectedBehaviorId = undefined;\r\n var form = section.querySelector('.behaviorForm');\r\n section.removeChild(form);\r\n behaviorHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n }\r\n function formatTime(dirtyTime) {\r\n dirtyTime.replace('-', '');\r\n const splitTime = dirtyTime.split(':');\r\n const hours = splitTime[0].length === 1 ? `0${splitTime[0]}` : splitTime[0];\r\n const minutes = splitTime[1].length === 1 ? `0${splitTime[1]}` : splitTime[1];\r\n return `${hours}:${minutes}`;\r\n }\r\n function getTimeLength(start, end) {\r\n if (!start || !end) return '';\r\n if (start.includes('/')) {\r\n start = start.split(' ')[1];\r\n }\r\n let totalTime = UTIL.calculateTotalHours(start, end, 'hh:mm');\r\n totalTime = formatTime(totalTime);\r\n return totalTime;\r\n }\r\n function parseStartTime(dirtyStart) {\r\n const splittime = dirtyStart.split(' ');\r\n const time = `${splittime[1]} ${splittime[2]}`;\r\n return UTIL.convertToMilitary(time);\r\n }\r\n\r\n function getDropdownData() {\r\n incidentTrackingAjax.getitConsumerBehaviorTypes(function (res) {\r\n behaviorTypes = res;\r\n });\r\n }\r\n\r\n // Form\r\n //-----------------------------------------------\r\n function showDeleteWarning() {\r\n var deleteWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n deleteConsumerBehaviorData();\r\n POPUP.hide(deleteWarningPopup);\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n POPUP.hide(deleteWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteWarningPopup.appendChild(message);\r\n deleteWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteWarningPopup);\r\n }\r\n function checkRequiredFields() {\r\n var hasErrors = [].slice.call(section.querySelectorAll('.error:not(button)'));\r\n\r\n if (hasErrors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n function clearFormDataDefaults() {\r\n behaviorType = undefined;\r\n behaviorTypeId = undefined;\r\n startTime = undefined;\r\n endTime = undefined;\r\n occurrences = undefined;\r\n }\r\n function setFormDataDefaults(formData) {\r\n if (formData) {\r\n behaviorType = formData.behaviorType;\r\n behaviorTypeId = formData.behaviorTypeId;\r\n startTime = formData.startTime;\r\n endTime = formData.endTime;\r\n occurrences = formData.occurrences;\r\n }\r\n }\r\n // events\r\n function setupFormEvents() {\r\n let tmpBehaviorTypeId = null;\r\n let tmpStartTime = null;\r\n let tmpEndTime = null;\r\n let tmpOccurrences = null;\r\n\r\n behaviorTypeDropdown.addEventListener('change', e => {\r\n if (!e.target.value || e.target.value === '%') {\r\n behaviorTypeDropdown.classList.add('error');\r\n } else {\r\n behaviorTypeDropdown.classList.remove('error');\r\n }\r\n\r\n tmpBehaviorTypeId = e.target.value;\r\n checkRequiredFields();\r\n });\r\n startTimeInput.addEventListener('change', e => {\r\n tmpStartTime = e.target.value;\r\n });\r\n endTimeInput.addEventListener('change', e => {\r\n tmpEndTime = e.target.value;\r\n });\r\n occurrencesInput.addEventListener('keyup', e => {\r\n if (e.target.value < 0 || e.target.value.includes('-')) {\r\n occurrencesInput.classList.add('error');\r\n } else {\r\n occurrencesInput.classList.remove('error');\r\n }\r\n checkRequiredFields();\r\n });\r\n occurrencesInput.addEventListener('change', e => {\r\n tmpOccurrences = e.target.value;\r\n });\r\n\r\n if (deleteBtn) {\r\n deleteBtn.addEventListener('click', e => {\r\n showDeleteWarning();\r\n });\r\n }\r\n\r\n formButtons.addEventListener('click', e => {\r\n if (e.target === saveBtn) {\r\n if (e.target.classList.contains('disabled')) return;\r\n\r\n if (!behaviorData[selectedConsumerId]) {\r\n behaviorData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!behaviorData[selectedConsumerId][selectedBehaviorId]) {\r\n var keys = Object.keys(behaviorData[selectedConsumerId]);\r\n selectedBehaviorId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n behaviorData[selectedConsumerId][selectedBehaviorId] = {\r\n behaviorTypeId: '',\r\n startTime: '',\r\n endTime: '',\r\n occurrences: '',\r\n updated: '',\r\n };\r\n }\r\n\r\n if (\r\n tmpBehaviorTypeId !== null ||\r\n tmpStartTime !== null ||\r\n tmpEndTime !== null ||\r\n tmpOccurrences !== null\r\n ) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].updated = true;\r\n }\r\n\r\n if (tmpBehaviorTypeId !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].behaviorTypeId = tmpBehaviorTypeId;\r\n }\r\n if (tmpStartTime !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].startTime = tmpStartTime;\r\n }\r\n if (tmpEndTime !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].endTime = tmpEndTime;\r\n }\r\n if (tmpOccurrences !== null) {\r\n behaviorData[selectedConsumerId][selectedBehaviorId].occurrences = tmpOccurrences;\r\n }\r\n\r\n selectedBehaviorId = undefined;\r\n\r\n var form = section.querySelector('.behaviorForm');\r\n section.removeChild(form);\r\n behaviorHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n populateReviewTable();\r\n incidentCard.checkEntireIncidentCardforErrors();\r\n return;\r\n }\r\n\r\n if (e.target === cancelBtn) {\r\n selectedBehaviorId = undefined;\r\n var form = section.querySelector('.behaviorForm');\r\n section.removeChild(form);\r\n behaviorHome.classList.remove('hidden');\r\n consumerSubSections.showBackBtn();\r\n clearFormDataDefaults();\r\n return;\r\n }\r\n });\r\n }\r\n // build\r\n function buildBehaviorTypeDropdown() {\r\n var opts = {\r\n label: 'Behavior Type',\r\n style: 'secondary',\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var behaviortypeDrop = dropdown.build(opts);\r\n\r\n var data = behaviorTypes.map(fu => {\r\n return {\r\n value: fu.itBehaviorTypeId,\r\n text: fu.behaviorTypeName,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n return a.text.toLowerCase() < b.text.toLowerCase() ? -1 : 1;\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(behaviortypeDrop, data, behaviorTypeId);\r\n\r\n if (!behaviorTypeId || behaviorTypeId === '%') {\r\n behaviortypeDrop.classList.add('error');\r\n } else {\r\n behaviortypeDrop.classList.remove('error');\r\n }\r\n\r\n return behaviortypeDrop;\r\n }\r\n function buildStartTimeInput() {\r\n var opts = {\r\n label: 'Start Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: startTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var startTimeInput = input.build(opts);\r\n\r\n return startTimeInput;\r\n }\r\n function buildEndTimeInput() {\r\n var opts = {\r\n label: 'End Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: endTime,\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var endTimeInput = input.build(opts);\r\n\r\n return endTimeInput;\r\n }\r\n function buildOccurrencesInput() {\r\n var opts = {\r\n label: 'No. of Occurrences',\r\n type: 'number',\r\n style: 'secondary',\r\n value: occurrences,\r\n attributes: [\r\n {\r\n key: 'min',\r\n value: 1,\r\n },\r\n {\r\n key: 'step',\r\n value: 1,\r\n },\r\n ],\r\n };\r\n\r\n if (isEdit && formReadOnly) {\r\n opts.readonly = true;\r\n }\r\n\r\n var occurrencesInput = input.build(opts);\r\n\r\n return occurrencesInput;\r\n }\r\n\r\n function buildFormBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n saveBtn = button.build({\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n });\r\n\r\n if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildDeleteBtn() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'error',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildNewBehaviorForm() {\r\n let form = document.createElement('div');\r\n form.classList.add('behaviorForm');\r\n\r\n behaviorTypeDropdown = buildBehaviorTypeDropdown();\r\n startTimeInput = buildStartTimeInput();\r\n endTimeInput = buildEndTimeInput();\r\n occurrencesInput = buildOccurrencesInput();\r\n formButtons = buildFormBtns();\r\n\r\n if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n deleteBtn = buildDeleteBtn();\r\n form.appendChild(deleteBtn);\r\n }\r\n\r\n form.appendChild(behaviorTypeDropdown);\r\n form.appendChild(startTimeInput);\r\n form.appendChild(endTimeInput);\r\n form.appendChild(occurrencesInput);\r\n form.appendChild(formButtons);\r\n\r\n return form;\r\n }\r\n // show\r\n function showForm(isedit) {\r\n isEdit = isedit;\r\n\r\n consumerSubSections.hideBackBtn();\r\n\r\n behaviorHome.classList.add('hidden');\r\n\r\n behaviorForm = buildNewBehaviorForm();\r\n section.appendChild(behaviorForm);\r\n\r\n setupFormEvents();\r\n checkRequiredFields();\r\n }\r\n\r\n // Review Table\r\n //-----------------------------------------------\r\n function clearReviewTable() {\r\n var tableBody = behaviorReviewTable.querySelector('.table__body');\r\n tableBody.innerHTML = '';\r\n }\r\n function populateReviewTable() {\r\n if (!behaviorData) return;\r\n if (!behaviorData[selectedConsumerId]) return;\r\n\r\n let tableData = [];\r\n\r\n let keys = Object.keys(behaviorData[selectedConsumerId]);\r\n keys.forEach(key => {\r\n let behaviorDATA = behaviorData[selectedConsumerId][key];\r\n\r\n let filterBehaviorTypes = behaviorTypes.filter(\r\n type => type.itBehaviorTypeId === behaviorDATA.behaviorTypeId,\r\n );\r\n let behaviorType = filterBehaviorTypes[0] ? filterBehaviorTypes[0].behaviorTypeName : '';\r\n let timeLength = getTimeLength(behaviorDATA.startTime, behaviorDATA.endTime);\r\n let occurrencesNum = behaviorDATA.occurrences;\r\n\r\n tableData.push({\r\n id: key,\r\n values: [behaviorType, timeLength, occurrencesNum],\r\n });\r\n });\r\n\r\n table.populate(behaviorReviewTable, tableData);\r\n }\r\n function buildReviewTable() {\r\n var reviewTable = table.build({\r\n tableId: 'consumerBehaviorTable',\r\n columnHeadings: ['Behavior Type', 'Time Length', 'Occurrences'],\r\n });\r\n\r\n reviewTable.addEventListener('click', event => {\r\n if (\r\n event.target.classList.contains('table__row') &&\r\n !event.target.classList.contains('header')\r\n ) {\r\n selectedBehaviorId = event.target.id;\r\n setFormDataDefaults(behaviorData[selectedConsumerId][selectedBehaviorId]);\r\n showForm(true);\r\n }\r\n });\r\n\r\n return reviewTable;\r\n }\r\n\r\n // Home Page\r\n //-----------------------------------------------\r\n function init() {\r\n formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n behaviorData = {};\r\n behaviorDeleteData = {};\r\n getDropdownData();\r\n }\r\n function buildAddNewBehaviorBtn() {\r\n var btn = button.build({\r\n text: 'Add New Behavior Detail',\r\n type: 'contained',\r\n style: 'secondary',\r\n });\r\n btn.addEventListener('click', () => {\r\n showForm(false);\r\n });\r\n\r\n return btn;\r\n }\r\n function build() {\r\n init();\r\n\r\n section = document.createElement('div');\r\n section.classList.add('consumerSections__section', 'behaviorSection');\r\n\r\n behaviorHome = document.createElement('div');\r\n behaviorHome.classList.add('consumerSections__section__home');\r\n\r\n newBehaviorBtn = buildAddNewBehaviorBtn();\r\n behaviorReviewTable = buildReviewTable();\r\n\r\n if ($.session.incidentTrackingUpdate) behaviorHome.appendChild(newBehaviorBtn);\r\n behaviorHome.appendChild(behaviorReviewTable);\r\n\r\n section.appendChild(behaviorHome);\r\n\r\n return section;\r\n }\r\n function populate(data, selectedConsumerID) {\r\n selectedConsumerId = selectedConsumerID;\r\n\r\n if (data) {\r\n data.forEach(d => {\r\n if (!behaviorData[selectedConsumerId]) {\r\n behaviorData[selectedConsumerId] = {};\r\n }\r\n\r\n if (!behaviorData[selectedConsumerId][d.itConsumerBehaviorId]) {\r\n behaviorData[selectedConsumerId][d.itConsumerBehaviorId] = d;\r\n behaviorData[selectedConsumerId][d.itConsumerBehaviorId].updated = false;\r\n }\r\n });\r\n }\r\n\r\n clearReviewTable();\r\n populateReviewTable();\r\n }\r\n\r\n return {\r\n build,\r\n populate,\r\n clearData,\r\n deleteConsumerData,\r\n getData: getDataForSave,\r\n getDeleteData: getDataForDelete,\r\n };\r\n})();\r\n","// var consumerFollowUp = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var section;\r\n// var followUpHome;\r\n// var newFollowUpBtn;\r\n// var followUpReviewTable;\r\n// //*form\r\n// var followUpForm;\r\n// var followUpTypeDropdown;\r\n// var personResponsibleInput;\r\n// var dueDateInput;\r\n// var completedDateInput;\r\n// var notesInput;\r\n// var formButtons;\r\n// var deleteBtn;\r\n// var saveBtn;\r\n// var cancelBtn;\r\n// // DATA\r\n// //---------------------\r\n// var followUpsData; // save/update data\r\n// var followUpsDeleteData;\r\n// var followUpTypes;\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n// var selectedFollowUpId;\r\n// //*form default values\r\n// var dueDate;\r\n// var dateCompleted;\r\n// var followUpTypeId;\r\n// var personResponsible;\r\n// var followUpNote;\r\n// var lastUpdatedBy;\r\n// var lastUpdatedOn;\r\n\r\n// var isEdit;\r\n// var formReadOnly;\r\n\r\n// function getDataForSave() {\r\n// return followUpsData;\r\n// }\r\n// function getDataForDelete() {\r\n// return followUpsDeleteData;\r\n// }\r\n// function clearData() {\r\n// followUpsData = undefined;\r\n// followUpsDeleteData = undefined;\r\n// selectedConsumerId = undefined;\r\n// selectedFollowUpId = undefined;\r\n\r\n// clearFormDataDefaults();\r\n// clearReviewTable();\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// // deletes all follow ups\r\n// if (followUpsData[consumerId]) {\r\n// var { [consumerId]: removedConsumerData, ...newFollowUpsData } = followUpsData;\r\n// followUpsData = newFollowUpsData;\r\n\r\n// if (!followUpsDeleteData[consumerId]) {\r\n// followUpsDeleteData[consumerId] = removedConsumerData;\r\n// }\r\n// }\r\n// }\r\n// function deleteConsumerFollowUpData() {\r\n// if (!selectedFollowUpId.includes('new')) {\r\n// var deletedFollowUp = followUpsData[selectedConsumerId][selectedFollowUpId];\r\n// if (!followUpsDeleteData[selectedConsumerId]) followUpsDeleteData[selectedConsumerId] = {};\r\n// followUpsDeleteData[selectedConsumerId][selectedFollowUpId] = deletedFollowUp;\r\n// }\r\n\r\n// delete followUpsData[selectedConsumerId][selectedFollowUpId];\r\n\r\n// selectedFollowUpId = undefined;\r\n// var form = section.querySelector('.followUpForm');\r\n// section.removeChild(form);\r\n// followUpHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// }\r\n\r\n// function getDropdownData() {\r\n// incidentTrackingAjax.getitConsumerFollowUpTypes(function (res) {\r\n// followUpTypes = res;\r\n// });\r\n// }\r\n\r\n// // Form\r\n// //-----------------------------------------------\r\n// function showDeleteWarning() {\r\n// var deleteWarningPopup = POPUP.build({});\r\n\r\n// var message = document.createElement('p');\r\n// message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n// var yesBtn = button.build({\r\n// text: 'Yes',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// deleteConsumerFollowUpData();\r\n// POPUP.hide(deleteWarningPopup);\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n\r\n// },\r\n// });\r\n// var noBtn = button.build({\r\n// text: 'No',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// POPUP.hide(deleteWarningPopup);\r\n// },\r\n// });\r\n\r\n// btnWrap.appendChild(yesBtn);\r\n// btnWrap.appendChild(noBtn);\r\n\r\n// deleteWarningPopup.appendChild(message);\r\n// deleteWarningPopup.appendChild(btnWrap);\r\n\r\n// POPUP.show(deleteWarningPopup);\r\n// }\r\n// function checkRequiredFields() {\r\n// var hasErrors = false;\r\n\r\n// var followUpTypeSelect = followUpTypeDropdown.querySelector('.dropdown__select');\r\n// if (!followUpTypeSelect.value || followUpTypeSelect.value === '%') {\r\n// followUpTypeDropdown.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// followUpTypeDropdown.classList.remove('error');\r\n// }\r\n\r\n// if (hasErrors) {\r\n// saveBtn.classList.add('disabled');\r\n// } else {\r\n// saveBtn.classList.remove('disabled');\r\n// }\r\n// }\r\n// function clearFormDataDefaults() {\r\n// dueDate = undefined;\r\n// dateCompleted = undefined;\r\n// followUpTypeId = undefined;\r\n// lastUpdatedBy = undefined;\r\n// lastUpdatedOn = undefined;\r\n// personResponsible = undefined;\r\n// followUpNote = undefined;\r\n// }\r\n// function setFormDataDefaults(formData) {\r\n// if (formData) {\r\n// dueDate = formData.dueDate;\r\n// dateCompleted = formData.dateCompleted;\r\n// followUpTypeId = formData.followUpTypeId;\r\n// personResponsible = formData.personResponsible;\r\n// followUpNote = formData.notes;\r\n// }\r\n// }\r\n// // events\r\n// function setupFormEvents() {\r\n// var tmpFollowUpTypeId;\r\n// var tmpPersonResponsible;\r\n// var tmpDueDate;\r\n// var tmpCompletedDate;\r\n// var tmpNote;\r\n\r\n// followUpTypeDropdown.addEventListener('change', e => {\r\n// tmpFollowUpTypeId = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// personResponsibleInput.addEventListener('change', e => {\r\n// tmpPersonResponsible = e.target.value;\r\n// });\r\n// dueDateInput.addEventListener('change', e => {\r\n// tmpDueDate = e.target.value;\r\n// });\r\n// completedDateInput.addEventListener('change', e => {\r\n// tmpCompletedDate = e.target.value;\r\n// });\r\n// notesInput.addEventListener('change', e => {\r\n// tmpNote = e.target.value;\r\n// });\r\n\r\n// if (deleteBtn) {\r\n// deleteBtn.addEventListener('click', e => {\r\n// showDeleteWarning();\r\n// });\r\n// }\r\n\r\n// formButtons.addEventListener('click', e => {\r\n// if (e.target === saveBtn) {\r\n// if (!followUpsData[selectedConsumerId]) {\r\n// followUpsData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!followUpsData[selectedConsumerId][selectedFollowUpId]) {\r\n// var keys = Object.keys(followUpsData[selectedConsumerId]);\r\n// selectedFollowUpId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n// followUpsData[selectedConsumerId][selectedFollowUpId] = {\r\n// dateCompleted: '',\r\n// dueDate: '',\r\n// followUpTypeId: '',\r\n// notes: '',\r\n// personResponsible: '',\r\n// updated: '',\r\n// };\r\n// }\r\n\r\n// if (\r\n// tmpCompletedDate ||\r\n// tmpDueDate ||\r\n// tmpFollowUpTypeId ||\r\n// tmpNote ||\r\n// tmpPersonResponsible\r\n// ) {\r\n// followUpsData[selectedConsumerId][selectedFollowUpId].updated = true;\r\n// }\r\n\r\n// if (tmpCompletedDate)\r\n// followUpsData[selectedConsumerId][selectedFollowUpId].dateCompleted = tmpCompletedDate;\r\n// if (tmpDueDate) followUpsData[selectedConsumerId][selectedFollowUpId].dueDate = tmpDueDate;\r\n// if (tmpFollowUpTypeId)\r\n// followUpsData[selectedConsumerId][selectedFollowUpId].followUpTypeId = tmpFollowUpTypeId;\r\n// if (tmpNote) followUpsData[selectedConsumerId][selectedFollowUpId].notes = tmpNote;\r\n// if (tmpPersonResponsible)\r\n// followUpsData[selectedConsumerId][selectedFollowUpId].personResponsible =\r\n// tmpPersonResponsible;\r\n\r\n// selectedFollowUpId = undefined;\r\n\r\n// var form = section.querySelector('.followUpForm');\r\n// section.removeChild(form);\r\n// followUpHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// return;\r\n// }\r\n\r\n// if (e.target === cancelBtn) {\r\n// selectedFollowUpId = undefined;\r\n// var form = section.querySelector('.followUpForm');\r\n// section.removeChild(form);\r\n// followUpHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// return;\r\n// }\r\n// });\r\n// }\r\n// // build\r\n// function buildFollowUpTypeDropdown() {\r\n// var opts = {\r\n// label: 'Follow Up Type',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var followUptypeDrop = dropdown.build(opts);\r\n\r\n// var data = followUpTypes.map(fu => {\r\n// return {\r\n// value: fu.itFollowUpTypeId,\r\n// text: fu.followUpTypeName,\r\n// };\r\n// });\r\n\r\n// data.unshift({ value: '%', text: '' });\r\n\r\n// dropdown.populate(followUptypeDrop, data, followUpTypeId);\r\n\r\n// return followUptypeDrop;\r\n// }\r\n// function buildPersonResponsibleInput() {\r\n// var opts = {\r\n// label: 'Person Responsible',\r\n// type: 'text',\r\n// style: 'secondary',\r\n// value: personResponsible,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var personInput = input.build(opts);\r\n\r\n// return personInput;\r\n// }\r\n// function buildDueDateInput() {\r\n// var inputOptions = {\r\n// label: 'Due Date',\r\n// type: 'date',\r\n// style: 'secondary',\r\n// value: '',\r\n// };\r\n\r\n// if (dueDate) inputOptions.value = dueDate;\r\n// if (isEdit && formReadOnly) {\r\n// inputOptions.readonly = true;\r\n// }\r\n\r\n// var dateInput = input.build(inputOptions);\r\n\r\n// return dateInput;\r\n// }\r\n// function buildCompletedDateInput() {\r\n// var inputOptions = {\r\n// label: 'Date Completed',\r\n// type: 'date',\r\n// style: 'secondary',\r\n// value: '',\r\n// };\r\n\r\n// if (dateCompleted) inputOptions.value = dateCompleted;\r\n// if (isEdit && formReadOnly) {\r\n// inputOptions.readonly = true;\r\n// }\r\n\r\n// var dateInput = input.build(inputOptions);\r\n\r\n// return dateInput;\r\n// }\r\n// function buildNotesInput() {\r\n// var opts = {\r\n// label: 'Note',\r\n// type: 'textarea',\r\n// style: 'secondary',\r\n// value: followUpNote,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var noteInput = input.build(opts);\r\n\r\n// return noteInput;\r\n// }\r\n// function buildFormBtns() {\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n\r\n// saveBtn = button.build({\r\n// text: 'Done',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// classNames: 'disabled',\r\n// });\r\n// cancelBtn = button.build({\r\n// text: 'Cancel',\r\n// type: 'outlined',\r\n// style: 'secondary',\r\n// });\r\n\r\n// if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n// btnWrap.appendChild(saveBtn);\r\n// btnWrap.appendChild(cancelBtn);\r\n\r\n// return btnWrap;\r\n// }\r\n// function buildDeleteBtn() {\r\n// var btn = button.build({\r\n// text: 'Delete',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// classNames: 'error',\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function buildNewFollowUpForm() {\r\n// var form = document.createElement('div');\r\n// form.classList.add('followUpForm');\r\n\r\n// followUpTypeDropdown = buildFollowUpTypeDropdown();\r\n// personResponsibleInput = buildPersonResponsibleInput();\r\n// dueDateInput = buildDueDateInput();\r\n// completedDateInput = buildCompletedDateInput();\r\n// notesInput = buildNotesInput();\r\n// formButtons = buildFormBtns();\r\n\r\n// if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n// deleteBtn = buildDeleteBtn();\r\n// form.appendChild(deleteBtn);\r\n// }\r\n\r\n// form.appendChild(followUpTypeDropdown);\r\n// form.appendChild(personResponsibleInput);\r\n// form.appendChild(dueDateInput);\r\n// form.appendChild(completedDateInput);\r\n// form.appendChild(notesInput);\r\n// form.appendChild(formButtons);\r\n\r\n// return form;\r\n// }\r\n// // show\r\n// function showForm(isedit) {\r\n// isEdit = isedit;\r\n\r\n// consumerSubSections.hideBackBtn();\r\n\r\n// followUpHome.classList.add('hidden');\r\n\r\n// followUpForm = buildNewFollowUpForm();\r\n// section.appendChild(followUpForm);\r\n\r\n// setupFormEvents();\r\n// checkRequiredFields();\r\n// }\r\n\r\n// // Review Table\r\n// //-----------------------------------------------\r\n// function clearReviewTable() {\r\n// var tableBody = followUpReviewTable.querySelector('.table__body');\r\n// tableBody.innerHTML = '';\r\n// }\r\n// function populateReviewTable() {\r\n// if (!followUpsData) return;\r\n// if (!followUpsData[selectedConsumerId]) return;\r\n\r\n// var tableData = [];\r\n\r\n// var keys = Object.keys(followUpsData[selectedConsumerId]);\r\n// keys.forEach(key => {\r\n// var followUpData = followUpsData[selectedConsumerId][key];\r\n\r\n// var filterFollowUpTypes = followUpTypes.filter(\r\n// type => type.itFollowUpTypeId === followUpData.followUpTypeId,\r\n// );\r\n// var followUpType = filterFollowUpTypes[0] ? filterFollowUpTypes[0].followUpTypeName : '';\r\n// var personResponsible = followUpData.personResponsible;\r\n// var dueDate = followUpData.dueDate ? followUpData.dueDate.split(' ')[0] : '';\r\n// dueDate = dueDate ? UTIL.formatDateFromIso(dueDate) : dueDate;\r\n\r\n// tableData.push({\r\n// id: key,\r\n// values: [followUpType, personResponsible, dueDate],\r\n// });\r\n// });\r\n\r\n// table.populate(followUpReviewTable, tableData);\r\n// }\r\n// function buildReviewTable() {\r\n// var reviewTable = table.build({\r\n// tableId: 'consumerFollowUpTable',\r\n// columnHeadings: ['Follow Up Type', 'Person Responsible', 'Due Date'],\r\n// });\r\n\r\n// reviewTable.addEventListener('click', event => {\r\n// if (\r\n// event.target.classList.contains('table__row') &&\r\n// !event.target.classList.contains('header')\r\n// ) {\r\n// selectedFollowUpId = event.target.id;\r\n// setFormDataDefaults(followUpsData[selectedConsumerId][selectedFollowUpId]);\r\n// showForm(true);\r\n// }\r\n// });\r\n\r\n// return reviewTable;\r\n// }\r\n\r\n// // Home Page\r\n// //-----------------------------------------------\r\n// function init() {\r\n// formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n// followUpsData = {};\r\n// followUpsDeleteData = {};\r\n// getDropdownData();\r\n// }\r\n// function buildAddNewFollowUpBtn() {\r\n// var btn = button.build({\r\n// text: 'Add New Follow Up',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n// btn.addEventListener('click', () => {\r\n// showForm(false);\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function build() {\r\n// init();\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('consumerSections__section', 'followUpSection');\r\n\r\n// followUpHome = document.createElement('div');\r\n// followUpHome.classList.add('consumerSections__section__home');\r\n\r\n// newFollowUpBtn = buildAddNewFollowUpBtn();\r\n// followUpReviewTable = buildReviewTable();\r\n\r\n// if ($.session.incidentTrackingUpdate) followUpHome.appendChild(newFollowUpBtn);\r\n// followUpHome.appendChild(followUpReviewTable);\r\n\r\n// section.appendChild(followUpHome);\r\n\r\n// return section;\r\n// }\r\n// function populate(data, selectedConsumerID) {\r\n// selectedConsumerId = selectedConsumerID;\r\n\r\n// if (data) {\r\n// data.forEach(d => {\r\n// if (!followUpsData[selectedConsumerId]) {\r\n// followUpsData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!followUpsData[selectedConsumerId][d.itConsumerFollowUpId]) {\r\n// followUpsData[selectedConsumerId][d.itConsumerFollowUpId] = d;\r\n// followUpsData[selectedConsumerId][d.itConsumerFollowUpId].updated = false;\r\n\r\n// // format dates\r\n// var dateTimeCompleted =\r\n// followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dateCompleted;\r\n// var dueDateTime = followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dueDate;\r\n// dateCompleted = dateTimeCompleted ? dateTimeCompleted.split(' ')[0] : null;\r\n// dueDate = dueDateTime ? dueDateTime.split(' ')[0] : null;\r\n\r\n// if (dateCompleted) {\r\n// followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dateCompleted =\r\n// UTIL.formatDateToIso(dateCompleted);\r\n// }\r\n// if (dueDate) {\r\n// followUpsData[selectedConsumerId][d.itConsumerFollowUpId].dueDate =\r\n// UTIL.formatDateToIso(dueDate);\r\n// }\r\n// }\r\n// });\r\n// }\r\n// console.table(followUpsData);\r\n\r\n// clearReviewTable();\r\n// populateReviewTable();\r\n// }\r\n\r\n// return {\r\n// build,\r\n// populate,\r\n// clearData,\r\n// deleteConsumerData,\r\n// getData: getDataForSave,\r\n// getDeleteData: getDataForDelete,\r\n// };\r\n// })();\r\n","// var consumerInjuries = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var section;\r\n// var injuriesHome;\r\n// var newInjuryBtn;\r\n// var injuriesReviewTable;\r\n// //*form\r\n// var injuryLocationDropdown;\r\n// var injuryTypeDropdown;\r\n// var checkedByNurseCheckbox;\r\n// var detailsInput;\r\n// var treatmentInput;\r\n// var dateCheckedInput;\r\n// var formButtons;\r\n// var deleteBtn;\r\n// var saveBtn;\r\n// var cancelBtn;\r\n// // DATA\r\n// //---------------------\r\n// var injuryData; // save/update data\r\n// var injuryDeleteData;\r\n// var injuryLocations;\r\n// var injuryTypes;\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n// var selectedInjuryId;\r\n// //*form values\r\n// var injuryLocationId;\r\n// var injuryTypeId;\r\n// var checkedByNurse;\r\n// var details;\r\n// var treatment;\r\n// var dateChecked;\r\n// var lastUpdatedBy;\r\n// var lastUpdatedOn;\r\n\r\n// var isEdit;\r\n// var formReadOnly;\r\n\r\n// function getDataForSave() {\r\n// return injuryData;\r\n// }\r\n// function getDataForDelete() {\r\n// return injuryDeleteData;\r\n// }\r\n// function clearData() {\r\n// injuryData = undefined;\r\n// injuryDeleteData = undefined;\r\n// selectedConsumerId = undefined;\r\n// selectedInjuryId = undefined;\r\n\r\n// clearFormDataDefaults();\r\n// clearReviewTable();\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// if (injuryData[consumerId]) {\r\n// var { [consumerId]: removedConsumerData, ...newInjuryData } = injuryData;\r\n// injuryData = newInjuryData;\r\n\r\n// if (!injuryDeleteData[consumerId]) {\r\n// injuryDeleteData[consumerId] = removedConsumerData;\r\n// }\r\n// }\r\n// }\r\n// function deleteConsumerInjuryData() {\r\n// if (!selectedInjuryId.includes('new')) {\r\n// var deletedInjury = injuryData[selectedConsumerId][selectedInjuryId];\r\n// if (!injuryDeleteData[selectedConsumerId]) injuryDeleteData[selectedConsumerId] = {};\r\n// injuryDeleteData[selectedConsumerId][selectedInjuryId] = deletedInjury;\r\n// }\r\n\r\n// delete injuryData[selectedConsumerId][selectedInjuryId];\r\n\r\n// selectedInjuryId = undefined;\r\n// var form = section.querySelector('.injuryForm');\r\n// section.removeChild(form);\r\n// injuriesHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// }\r\n\r\n// function getDropdownData() {\r\n// incidentTrackingAjax.getInjuryLocationsDropdown(function (locations) {\r\n// injuryLocations = locations;\r\n\r\n// incidentTrackingAjax.getInjuryTypesDropdown(function (types) {\r\n// injuryTypes = types;\r\n// });\r\n// });\r\n// }\r\n\r\n// // Form\r\n// //-----------------------------------------------\r\n// function showDeleteWarning() {\r\n// var deleteWarningPopup = POPUP.build({});\r\n\r\n// var message = document.createElement('p');\r\n// message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n// var yesBtn = button.build({\r\n// text: 'Yes',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// deleteConsumerInjuryData();\r\n// POPUP.hide(deleteWarningPopup);\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// },\r\n// });\r\n// var noBtn = button.build({\r\n// text: 'No',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// POPUP.hide(deleteWarningPopup);\r\n// },\r\n// });\r\n\r\n// btnWrap.appendChild(yesBtn);\r\n// btnWrap.appendChild(noBtn);\r\n\r\n// deleteWarningPopup.appendChild(message);\r\n// deleteWarningPopup.appendChild(btnWrap);\r\n\r\n// POPUP.show(deleteWarningPopup);\r\n// }\r\n// function checkRequiredFields() {\r\n// var hasErrors = false;\r\n\r\n// var injuryLocationSelect = injuryLocationDropdown.querySelector('.dropdown__select');\r\n// var injuryTypeSelect = injuryTypeDropdown.querySelector('.dropdown__select');\r\n\r\n// if (!injuryLocationSelect.value || injuryLocationSelect.value === '%') {\r\n// injuryLocationDropdown.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// injuryLocationDropdown.classList.remove('error');\r\n// }\r\n\r\n// if (!injuryTypeSelect.value || injuryTypeSelect.value === '%') {\r\n// injuryTypeDropdown.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// injuryTypeDropdown.classList.remove('error');\r\n// }\r\n\r\n// if (hasErrors) {\r\n// saveBtn.classList.add('disabled');\r\n// } else {\r\n// saveBtn.classList.remove('disabled');\r\n// }\r\n// }\r\n// function clearFormDataDefaults() {\r\n// injuryLocationId = undefined;\r\n// injuryTypeId = undefined;\r\n// checkedByNurse = undefined;\r\n// details = undefined;\r\n// treatment = undefined;\r\n// dateChecked = undefined;\r\n// lastUpdatedBy = undefined;\r\n// lastUpdatedOn = undefined;\r\n// }\r\n// function setFormDataDefaults(formData) {\r\n// if (formData) {\r\n// injuryLocationId = formData.injuryLocationId;\r\n// injuryTypeId = formData.injuryTypeId;\r\n// checkedByNurse = formData.checkedByNurse;\r\n// details = formData.injuryDetails;\r\n// treatment = formData.injuryTreatment;\r\n// dateChecked = formData.checkedDate;\r\n// }\r\n// }\r\n// // events\r\n// function setupFormEvents() {\r\n// var tmpInjuryLocation;\r\n// var tmpInjuryType;\r\n// var tmpCheckedBy;\r\n// var tmpDetails;\r\n// var tmpTreatment;\r\n// var tmpDateChecked;\r\n\r\n// injuryLocationDropdown.addEventListener('change', e => {\r\n// tmpInjuryLocation = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// injuryTypeDropdown.addEventListener('change', e => {\r\n// tmpInjuryType = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// checkedByNurseCheckbox.addEventListener('change', e => {\r\n// tmpCheckedBy = e.target.checked ? 'Y' : 'N';\r\n// });\r\n// detailsInput.addEventListener('change', e => {\r\n// tmpDetails = e.target.value;\r\n// });\r\n// treatmentInput.addEventListener('change', e => {\r\n// tmpTreatment = e.target.value;\r\n// });\r\n// dateCheckedInput.addEventListener('change', e => {\r\n// tmpDateChecked = e.target.value;\r\n// });\r\n\r\n// if (deleteBtn) {\r\n// deleteBtn.addEventListener('click', e => {\r\n// showDeleteWarning();\r\n// });\r\n// }\r\n\r\n// formButtons.addEventListener('click', e => {\r\n// if (e.target === saveBtn) {\r\n// if (!injuryData[selectedConsumerId]) {\r\n// injuryData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!injuryData[selectedConsumerId][selectedInjuryId]) {\r\n// var keys = Object.keys(injuryData[selectedConsumerId]);\r\n// selectedInjuryId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n// injuryData[selectedConsumerId][selectedInjuryId] = {\r\n// injuryLocationId: '',\r\n// injuryTypeId: '',\r\n// checkedByNurse: 'N',\r\n// injuryDetails: '',\r\n// injuryTreatment: '',\r\n// checkedDate: '',\r\n// updated: '',\r\n// };\r\n// }\r\n\r\n// if (\r\n// tmpInjuryLocation ||\r\n// tmpInjuryType ||\r\n// tmpCheckedBy ||\r\n// tmpDetails ||\r\n// tmpTreatment ||\r\n// tmpDateChecked\r\n// ) {\r\n// injuryData[selectedConsumerId][selectedInjuryId].updated = true;\r\n// }\r\n\r\n// if (tmpInjuryLocation)\r\n// injuryData[selectedConsumerId][selectedInjuryId].injuryLocationId = tmpInjuryLocation;\r\n// if (tmpInjuryType)\r\n// injuryData[selectedConsumerId][selectedInjuryId].injuryTypeId = tmpInjuryType;\r\n// if (tmpCheckedBy)\r\n// injuryData[selectedConsumerId][selectedInjuryId].checkedByNurse = tmpCheckedBy;\r\n// if (tmpDetails) injuryData[selectedConsumerId][selectedInjuryId].injuryDetails = tmpDetails;\r\n// if (tmpTreatment)\r\n// injuryData[selectedConsumerId][selectedInjuryId].injuryTreatment = tmpTreatment;\r\n// if (tmpDateChecked)\r\n// injuryData[selectedConsumerId][selectedInjuryId].checkedDate = tmpDateChecked;\r\n\r\n// selectedInjuryId = undefined;\r\n\r\n// var form = section.querySelector('.injuryForm');\r\n// section.removeChild(form);\r\n// injuriesHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// return;\r\n// }\r\n\r\n// if (e.target === cancelBtn) {\r\n// selectedInjuryId = undefined;\r\n// var form = section.querySelector('.injuryForm');\r\n// section.removeChild(form);\r\n// injuriesHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// return;\r\n// }\r\n// });\r\n// }\r\n// // build\r\n// function buildInjuryLocationDropdown() {\r\n// var opts = {\r\n// label: 'Injury Location',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var iLocDrop = dropdown.build(opts);\r\n\r\n// var data = injuryLocations.map(loc => {\r\n// return {\r\n// value: loc.injuryLocationId,\r\n// text: loc.injuryLocation,\r\n// };\r\n// });\r\n\r\n// data.unshift({ value: '%', text: '' });\r\n\r\n// dropdown.populate(iLocDrop, data, injuryLocationId);\r\n\r\n// return iLocDrop;\r\n// }\r\n// function buildInjuryTypeDropdown() {\r\n// var opts = {\r\n// label: 'Injury Type',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var iTypeDrop = dropdown.build(opts);\r\n\r\n// var data = injuryTypes.map(type => {\r\n// return {\r\n// value: type.injuryTypeId,\r\n// text: type.injuryType,\r\n// };\r\n// });\r\n\r\n// data.unshift({ value: '%', text: '' });\r\n\r\n// dropdown.populate(iTypeDrop, data, injuryTypeId);\r\n\r\n// return iTypeDrop;\r\n// }\r\n// function buildCheckedByCheckbox() {\r\n// var opts = {\r\n// text: 'Checked By Nurse',\r\n// isChecked: checkedByNurse === 'Y' ? true : false,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var checkbox = input.buildCheckbox(opts);\r\n\r\n// return checkbox;\r\n// }\r\n// function buildDetailsInput() {\r\n// var opts = {\r\n// label: 'Details',\r\n// type: 'textarea',\r\n// style: 'secondary',\r\n// value: details,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var dInput = input.build(opts);\r\n\r\n// return dInput;\r\n// }\r\n// function buildTreatmentInput() {\r\n// var opts = {\r\n// label: 'Treatment',\r\n// type: 'textarea',\r\n// style: 'secondary',\r\n// value: treatment,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var tInput = input.build(opts);\r\n\r\n// return tInput;\r\n// }\r\n// function buildDateCheckedInput() {\r\n// var opts = {\r\n// label: 'Date Checked',\r\n// type: 'date',\r\n// style: 'secondary',\r\n// value: dateChecked,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var dcInput = input.build(opts);\r\n\r\n// return dcInput;\r\n// }\r\n// function buildFormBtns() {\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n\r\n// saveBtn = button.build({\r\n// text: 'Done',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n// cancelBtn = button.build({\r\n// text: 'Cancel',\r\n// type: 'outlined',\r\n// style: 'secondary',\r\n// });\r\n\r\n// if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n// btnWrap.appendChild(saveBtn);\r\n// btnWrap.appendChild(cancelBtn);\r\n\r\n// return btnWrap;\r\n// }\r\n// function buildDeleteBtn() {\r\n// var btn = button.build({\r\n// text: 'Delete',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// classNames: 'error',\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function buildNewInjuryForm() {\r\n// var form = document.createElement('div');\r\n// form.classList.add('injuryForm');\r\n\r\n// injuryLocationDropdown = buildInjuryLocationDropdown();\r\n// injuryTypeDropdown = buildInjuryTypeDropdown();\r\n// checkedByNurseCheckbox = buildCheckedByCheckbox();\r\n// detailsInput = buildDetailsInput();\r\n// treatmentInput = buildTreatmentInput();\r\n// dateCheckedInput = buildDateCheckedInput();\r\n// formButtons = buildFormBtns();\r\n\r\n// if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n// deleteBtn = buildDeleteBtn();\r\n// form.appendChild(deleteBtn);\r\n// }\r\n\r\n// form.appendChild(injuryLocationDropdown);\r\n// form.appendChild(injuryTypeDropdown);\r\n// form.appendChild(checkedByNurseCheckbox);\r\n// form.appendChild(detailsInput);\r\n// form.appendChild(treatmentInput);\r\n// form.appendChild(dateCheckedInput);\r\n// form.appendChild(formButtons);\r\n\r\n// form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n// return form;\r\n// }\r\n// // show\r\n// function showForm(isedit) {\r\n// isEdit = isedit;\r\n\r\n// consumerSubSections.hideBackBtn();\r\n\r\n// injuriesHome.classList.add('hidden');\r\n\r\n// var injuryForm = buildNewInjuryForm();\r\n// section.appendChild(injuryForm);\r\n\r\n// setupFormEvents();\r\n// checkRequiredFields();\r\n// }\r\n\r\n// // Review Table\r\n// //-----------------------------------------------\r\n// function clearReviewTable() {\r\n// var tableBody = injuriesReviewTable.querySelector('.table__body');\r\n// tableBody.innerHTML = '';\r\n// }\r\n// function populateReviewTable() {\r\n// if (!injuryData) return;\r\n// if (!injuryData[selectedConsumerId]) return;\r\n\r\n// var tableData = [];\r\n\r\n// var keys = Object.keys(injuryData[selectedConsumerId]);\r\n// keys.forEach(key => {\r\n// var data = injuryData[selectedConsumerId][key];\r\n// var filteredLocations = injuryLocations.filter(\r\n// iLoc => iLoc.injuryLocationId === data.injuryLocationId,\r\n// );\r\n// var filteredTypes = injuryTypes.filter(iType => iType.injuryTypeId === data.injuryTypeId);\r\n// var injuryLocation = filteredLocations[0].injuryLocation;\r\n// var injuryType = filteredTypes[0].injuryType;\r\n// var nurseChecked = data.checkedByNurse === 'Y' ? 'Yes' : 'No';\r\n\r\n// tableData.push({\r\n// id: key,\r\n// values: [injuryLocation, injuryType, nurseChecked],\r\n// });\r\n// });\r\n\r\n// table.populate(injuriesReviewTable, tableData);\r\n// }\r\n// function buildReviewTable() {\r\n// var reviewTable = table.build({\r\n// tableId: 'consumerInjuriesTable',\r\n// columnHeadings: ['Injury Location', 'Injury Type', 'Checked By Nurse'],\r\n// });\r\n\r\n// reviewTable.addEventListener('click', event => {\r\n// if (\r\n// event.target.classList.contains('table__row') &&\r\n// !event.target.classList.contains('header')\r\n// ) {\r\n// selectedInjuryId = event.target.id;\r\n// setFormDataDefaults(injuryData[selectedConsumerId][selectedInjuryId]);\r\n// showForm(true);\r\n// }\r\n// });\r\n\r\n// return reviewTable;\r\n// }\r\n\r\n// // Home Page\r\n// //-----------------------------------------------\r\n// function init() {\r\n// formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n// injuryData = {};\r\n// injuryDeleteData = {};\r\n// getDropdownData();\r\n// }\r\n// function buildAddNewInjuryBtn() {\r\n// var btn = button.build({\r\n// text: 'Add New Injury',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n\r\n// btn.addEventListener('click', () => {\r\n// showForm(false);\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function build() {\r\n// init();\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('consumerSections__section', 'injuriesSection');\r\n\r\n// injuriesHome = document.createElement('div');\r\n// injuriesHome.classList.add('consumerSections__section__home');\r\n\r\n// newInjuryBtn = buildAddNewInjuryBtn();\r\n// injuriesReviewTable = buildReviewTable();\r\n\r\n// if ($.session.incidentTrackingUpdate) injuriesHome.appendChild(newInjuryBtn);\r\n// injuriesHome.appendChild(injuriesReviewTable);\r\n\r\n// section.appendChild(injuriesHome);\r\n\r\n// return section;\r\n// }\r\n// function populate(data, selectedConsumerID) {\r\n// selectedConsumerId = selectedConsumerID;\r\n\r\n// if (data) {\r\n// data.forEach(d => {\r\n// if (!injuryData[selectedConsumerId]) {\r\n// injuryData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!injuryData[selectedConsumerId][d.itConsumerInjuryId]) {\r\n// injuryData[selectedConsumerId][d.itConsumerInjuryId] = d;\r\n// injuryData[selectedConsumerId][d.itConsumerInjuryId].updated = false;\r\n\r\n// // format dates\r\n// var dateChecked = injuryData[selectedConsumerId][d.itConsumerInjuryId].checkedDate;\r\n// dateChecked = dateChecked ? dateChecked.split(' ')[0] : null;\r\n\r\n// if (dateChecked) {\r\n// injuryData[selectedConsumerId][d.itConsumerInjuryId].checkedDate =\r\n// UTIL.formatDateToIso(dateChecked);\r\n// }\r\n// }\r\n// });\r\n// }\r\n\r\n// clearReviewTable();\r\n// populateReviewTable();\r\n// }\r\n\r\n// return {\r\n// build,\r\n// populate,\r\n// clearData,\r\n// deleteConsumerData,\r\n// getData: getDataForSave,\r\n// getDeleteData: getDataForDelete,\r\n// };\r\n// })();\r\n","// var consumerIntervention = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var section;\r\n// var interventionHome;\r\n// var newInterventionBtn;\r\n// var interventionReviewTable;\r\n// //*form\r\n// var interventionTypeDropdown;\r\n// var startTimeInput;\r\n// var endTimeInput;\r\n// var totalTimeInput;\r\n// var aversiveCheckbox;\r\n// var notesInput;\r\n// var formButtons;\r\n// var deleteBtn;\r\n// var saveBtn;\r\n// var cancelBtn;\r\n// // DATA\r\n// //---------------------\r\n// var interventionData; // save/update data\r\n// var interventionDeleteData;\r\n// var interventionTypes;\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n// var selectedInterventionId;\r\n// //*form values\r\n// var interventionTypeId;\r\n// var startTime;\r\n// var endTime;\r\n// var timeLength;\r\n// var aversive;\r\n// var note;\r\n// var lastUpdatedBy;\r\n// var lastUpdatedOn;\r\n\r\n// var isEdit;\r\n// var formReadOnly;\r\n\r\n// function calculateTotalHours(dirtyStart, dirtyEnd) {\r\n// // must be military time\r\n// if (dirtyStart === '' || dirtyEnd === '' || !dirtyStart || !dirtyEnd) {\r\n// return;\r\n// }\r\n\r\n// var startTime = dirtyStart.split(':');\r\n// var endTime = dirtyEnd.split(':');\r\n\r\n// var tempDate = new Date();\r\n// var year = tempDate.getFullYear();\r\n// var month = tempDate.getMonth();\r\n// var day = tempDate.getDate();\r\n\r\n// var startDate = new Date(year, month, day, startTime[0], startTime[1]);\r\n// var endDate;\r\n// if (dirtyEnd === '00:00') {\r\n// endDate = new Date(year, month, day + 1, endTime[0], endTime[1]);\r\n// } else {\r\n// endDate = new Date(year, month, day, endTime[0], endTime[1]);\r\n// }\r\n\r\n// var timeDiff = endDate - startDate;\r\n// var hoursDiff = Math.floor((timeDiff % 86400000) / 3600000);\r\n// var minutesDiff = Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n\r\n// return `${UTIL.leadingZero(hoursDiff)}:${UTIL.leadingZero(minutesDiff)}`;\r\n// }\r\n// function calculateTimeLength() {\r\n// var stInput = startTimeInput.querySelector('input');\r\n// var etInput = endTimeInput.querySelector('input');\r\n// var ttInput = totalTimeInput.querySelector('input');\r\n\r\n// var sTime = stInput.value;\r\n// var eTime = etInput.value;\r\n\r\n// if (!sTime || !eTime) {\r\n// if (!sTime) startTimeInput.classList.remove('error');\r\n// if (!eTime) endTimeInput.classList.remove('error');\r\n// if (!sTime && !eTime) saveBtn.classList.remove('disabled');\r\n// return null;\r\n// }\r\n\r\n// var totalTime = calculateTotalHours(sTime, eTime);\r\n\r\n// if (totalTime.search('-') === -1) {\r\n// ttInput.value = totalTime;\r\n// startTimeInput.classList.remove('error');\r\n// endTimeInput.classList.remove('error');\r\n// saveBtn.classList.remove('disabled');\r\n// return totalTime;\r\n// } else {\r\n// ttInput.value = '';\r\n// startTimeInput.classList.add('error');\r\n// endTimeInput.classList.add('error');\r\n// saveBtn.classList.add('disabled');\r\n// return null;\r\n// }\r\n// }\r\n\r\n// function getDataForSave() {\r\n// return interventionData;\r\n// }\r\n// function getDataForDelete() {\r\n// return interventionDeleteData;\r\n// }\r\n// function clearData() {\r\n// interventionData = undefined;\r\n// interventionDeleteData = undefined;\r\n// selectedConsumerId = undefined;\r\n// selectedInterventionId = undefined;\r\n\r\n// clearFormDataDefaults();\r\n// clearReviewTable();\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// if (interventionData[consumerId]) {\r\n// var { [consumerId]: removedConsumerData, ...newInterventionData } = interventionData;\r\n// interventionData = newInterventionData;\r\n\r\n// if (!interventionDeleteData[consumerId]) {\r\n// interventionDeleteData[consumerId] = removedConsumerData;\r\n// }\r\n// }\r\n// }\r\n// function deleteConsumerInterventionData() {\r\n// if (!selectedInterventionId.includes('new')) {\r\n// var deletedIntervention = interventionData[selectedConsumerId][selectedInterventionId];\r\n// if (!interventionDeleteData[selectedConsumerId])\r\n// interventionDeleteData[selectedConsumerId] = {};\r\n// interventionDeleteData[selectedConsumerId][selectedInterventionId] = deletedIntervention;\r\n// }\r\n\r\n// delete interventionData[selectedConsumerId][selectedInterventionId];\r\n\r\n// selectedInterventionId = undefined;\r\n// var form = section.querySelector('.interventionForm');\r\n// section.removeChild(form);\r\n// interventionHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// }\r\n\r\n// function getDropdownData() {\r\n// incidentTrackingAjax.getInterventionTypesDropdown(function (res) {\r\n// interventionTypes = res;\r\n// });\r\n// }\r\n\r\n// // Form\r\n// //-----------------------------------------------\r\n// function showDeleteWarning() {\r\n// var deleteWarningPopup = POPUP.build({});\r\n\r\n// var message = document.createElement('p');\r\n// message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n// var yesBtn = button.build({\r\n// text: 'Yes',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// deleteConsumerInterventionData();\r\n// POPUP.hide(deleteWarningPopup);\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// },\r\n// });\r\n// var noBtn = button.build({\r\n// text: 'No',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// POPUP.hide(deleteWarningPopup);\r\n// },\r\n// });\r\n\r\n// btnWrap.appendChild(yesBtn);\r\n// btnWrap.appendChild(noBtn);\r\n\r\n// deleteWarningPopup.appendChild(message);\r\n// deleteWarningPopup.appendChild(btnWrap);\r\n\r\n// POPUP.show(deleteWarningPopup);\r\n// }\r\n// function checkRequiredFields() {\r\n// var hasErrors = false;\r\n\r\n// var interventionTypeSelect = interventionTypeDropdown.querySelector('.dropdown__select');\r\n// if (!interventionTypeSelect.value || interventionTypeSelect.value === '%') {\r\n// interventionTypeDropdown.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// interventionTypeDropdown.classList.remove('error');\r\n// }\r\n\r\n// //var errors = [...followUpForm.querySelectorAll('.error')];\r\n// if (hasErrors) {\r\n// saveBtn.classList.add('disabled');\r\n// } else {\r\n// saveBtn.classList.remove('disabled');\r\n// }\r\n// }\r\n// function clearFormDataDefaults() {\r\n// interventionTypeId = undefined;\r\n// startTime = undefined;\r\n// endTime = undefined;\r\n// timeLength = undefined;\r\n// aversive = undefined;\r\n// note = undefined;\r\n// lastUpdatedBy = undefined;\r\n// lastUpdatedOn = undefined;\r\n// }\r\n// function setFormDataDefaults(formData) {\r\n// if (formData) {\r\n// var sTime = formData.startTime.split(':');\r\n// var eTime = formData.stopTime.split(':');\r\n// var tTime = formData.timeLength.split(':');\r\n\r\n// interventionTypeId = formData.interventionType;\r\n// startTime = `${sTime[0]}:${sTime[1]}`;\r\n// endTime = `${eTime[0]}:${eTime[1]}`;\r\n// timeLength = `${tTime[0]}:${tTime[1]}`;\r\n// aversive = formData.aversive;\r\n// note = formData.interventionNotes;\r\n// lastUpdatedBy = formData.lastUpdatedBy;\r\n// lastUpdatedOn = formData.lastUpdatedOn;\r\n// }\r\n// }\r\n// // events\r\n// function setupFormEvents() {\r\n// var tmpInterventionType;\r\n// var tmpStartTime;\r\n// var tmpEndTime;\r\n// var tmpTimeLength;\r\n// var tmpAversive;\r\n// var tmpNote;\r\n\r\n// interventionTypeDropdown.addEventListener('change', e => {\r\n// tmpInterventionType = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// startTimeInput.addEventListener('change', e => {\r\n// tmpStartTime = e.target.value;\r\n// tmpTimeLength = calculateTimeLength();\r\n// });\r\n// endTimeInput.addEventListener('change', e => {\r\n// tmpEndTime = e.target.value;\r\n// tmpTimeLength = calculateTimeLength();\r\n// });\r\n// aversiveCheckbox.addEventListener('change', e => {\r\n// tmpAversive = e.target.checked ? 'Y' : 'N';\r\n// });\r\n// notesInput.addEventListener('change', e => {\r\n// tmpNote = e.target.value;\r\n// });\r\n\r\n// if (deleteBtn) {\r\n// deleteBtn.addEventListener('click', e => {\r\n// showDeleteWarning();\r\n// });\r\n// }\r\n\r\n// formButtons.addEventListener('click', e => {\r\n// if (e.target === saveBtn) {\r\n// if (!interventionData[selectedConsumerId]) {\r\n// interventionData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!interventionData[selectedConsumerId][selectedInterventionId]) {\r\n// var keys = Object.keys(interventionData[selectedConsumerId]);\r\n// selectedInterventionId =\r\n// keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n// interventionData[selectedConsumerId][selectedInterventionId] = {\r\n// interventionType: '',\r\n// startTime: '',\r\n// stopTime: '',\r\n// timeLength: '',\r\n// aversive: '',\r\n// interventionNotes: '',\r\n// updated: '',\r\n// };\r\n// }\r\n\r\n// if (\r\n// tmpInterventionType ||\r\n// tmpStartTime ||\r\n// tmpEndTime ||\r\n// tmpTimeLength ||\r\n// tmpAversive ||\r\n// tmpNote\r\n// ) {\r\n// interventionData[selectedConsumerId][selectedInterventionId].updated = true;\r\n// }\r\n\r\n// if (tmpInterventionType)\r\n// interventionData[selectedConsumerId][selectedInterventionId].interventionType =\r\n// tmpInterventionType;\r\n// if (tmpStartTime)\r\n// interventionData[selectedConsumerId][selectedInterventionId].startTime = tmpStartTime;\r\n// if (tmpEndTime)\r\n// interventionData[selectedConsumerId][selectedInterventionId].stopTime = tmpEndTime;\r\n// if (tmpTimeLength)\r\n// interventionData[selectedConsumerId][selectedInterventionId].timeLength = tmpTimeLength;\r\n// if (tmpAversive)\r\n// interventionData[selectedConsumerId][selectedInterventionId].aversive = tmpAversive;\r\n// if (tmpNote)\r\n// interventionData[selectedConsumerId][selectedInterventionId].interventionNotes = tmpNote;\r\n\r\n// selectedInterventionId = undefined;\r\n\r\n// var form = section.querySelector('.interventionForm');\r\n// section.removeChild(form);\r\n// interventionHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// return;\r\n// }\r\n\r\n// if (e.target === cancelBtn) {\r\n// selectedInterventionId = undefined;\r\n// var form = section.querySelector('.interventionForm');\r\n// section.removeChild(form);\r\n// interventionHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// return;\r\n// }\r\n// });\r\n// }\r\n// // build\r\n// function buildInterventionTypeDropdown() {\r\n// var opts = {\r\n// label: 'Intervention Type',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var iTypeDrop = dropdown.build(opts);\r\n\r\n// var data = interventionTypes.map(it => {\r\n// return {\r\n// value: it.interventionTypeId,\r\n// text: it.description,\r\n// };\r\n// });\r\n\r\n// data.unshift({ value: '%', text: '' });\r\n\r\n// dropdown.populate(iTypeDrop, data, interventionTypeId);\r\n\r\n// return iTypeDrop;\r\n// }\r\n// function buildStartTimeInput() {\r\n// var opts = {\r\n// label: 'Start Time',\r\n// type: 'time',\r\n// style: 'secondary',\r\n// value: startTime,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var stInput = input.build(opts);\r\n\r\n// return stInput;\r\n// }\r\n// function buildEndTimeInput() {\r\n// var opts = {\r\n// label: 'End Time',\r\n// type: 'time',\r\n// style: 'secondary',\r\n// value: endTime,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var etInput = input.build(opts);\r\n\r\n// return etInput;\r\n// }\r\n// function buildTotalTimeInput() {\r\n// var opts = {\r\n// label: 'Total Time',\r\n// type: 'text',\r\n// style: 'secondary',\r\n// readonly: true,\r\n// value: timeLength,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var etInput = input.build(opts);\r\n\r\n// return etInput;\r\n// }\r\n// function buildAversiveCheckbox() {\r\n// var opts = {\r\n// text: 'Aversive',\r\n// isChecked: aversive === 'Y' ? true : false,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var checkbox = input.buildCheckbox(opts);\r\n\r\n// return checkbox;\r\n// }\r\n// function buildNotesInput() {\r\n// var opts = {\r\n// label: 'Notes',\r\n// type: 'textarea',\r\n// style: 'secondary',\r\n// value: note,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var nInput = input.build(opts);\r\n\r\n// return nInput;\r\n// }\r\n// function buildFormBtns() {\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n\r\n// saveBtn = button.build({\r\n// text: 'Done',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n// cancelBtn = button.build({\r\n// text: 'Cancel',\r\n// type: 'outlined',\r\n// style: 'secondary',\r\n// });\r\n\r\n// if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n// btnWrap.appendChild(saveBtn);\r\n// btnWrap.appendChild(cancelBtn);\r\n\r\n// return btnWrap;\r\n// }\r\n// function buildDeleteBtn() {\r\n// var btn = button.build({\r\n// text: 'Delete',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// classNames: 'error',\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function buildNewInterventionForm() {\r\n// var form = document.createElement('div');\r\n// form.classList.add('interventionForm');\r\n\r\n// interventionTypeDropdown = buildInterventionTypeDropdown();\r\n// startTimeInput = buildStartTimeInput();\r\n// endTimeInput = buildEndTimeInput();\r\n// totalTimeInput = buildTotalTimeInput();\r\n// aversiveCheckbox = buildAversiveCheckbox();\r\n// notesInput = buildNotesInput();\r\n// formButtons = buildFormBtns();\r\n\r\n// if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n// deleteBtn = buildDeleteBtn();\r\n// form.appendChild(deleteBtn);\r\n// }\r\n\r\n// form.appendChild(interventionTypeDropdown);\r\n// form.appendChild(startTimeInput);\r\n// form.appendChild(endTimeInput);\r\n// form.appendChild(totalTimeInput);\r\n// form.appendChild(aversiveCheckbox);\r\n// form.appendChild(notesInput);\r\n// form.appendChild(formButtons);\r\n\r\n// form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n// return form;\r\n// }\r\n// // show\r\n// function showForm(isedit) {\r\n// isEdit = isedit;\r\n\r\n// consumerSubSections.hideBackBtn();\r\n\r\n// interventionHome.classList.add('hidden');\r\n\r\n// var interventionForm = buildNewInterventionForm();\r\n// section.appendChild(interventionForm);\r\n\r\n// setupFormEvents();\r\n// checkRequiredFields();\r\n// }\r\n\r\n// // Review Table\r\n// //-----------------------------------------------\r\n// function clearReviewTable() {\r\n// var tableBody = interventionReviewTable.querySelector('.table__body');\r\n// tableBody.innerHTML = '';\r\n// }\r\n// function populateReviewTable() {\r\n// if (!interventionData) return;\r\n// if (!interventionData[selectedConsumerId]) return;\r\n\r\n// var tableData = [];\r\n\r\n// var keys = Object.keys(interventionData[selectedConsumerId]);\r\n// keys.forEach(key => {\r\n// var data = interventionData[selectedConsumerId][key];\r\n// var filteredInterventionTypes = interventionTypes.filter(\r\n// it => it.interventionTypeId === data.interventionType,\r\n// );\r\n// var interventionType = filteredInterventionTypes[0].description;\r\n// var timeLength = data.timeLength.split(':');\r\n// timeLength = `${timeLength[0]}:${timeLength[1]}`;\r\n// var aversive = data.aversive === 'Y' ? 'Yes' : 'No';\r\n\r\n// tableData.push({\r\n// id: key,\r\n// values: [interventionType, timeLength, aversive],\r\n// });\r\n// });\r\n\r\n// table.populate(interventionReviewTable, tableData);\r\n// }\r\n// function buildReviewTable() {\r\n// var reviewTable = table.build({\r\n// tableId: 'consumerInterventionTable',\r\n// columnHeadings: ['Intervention Type', 'Time Length', 'Aversive'],\r\n// });\r\n\r\n// reviewTable.addEventListener('click', event => {\r\n// if (\r\n// event.target.classList.contains('table__row') &&\r\n// !event.target.classList.contains('header')\r\n// ) {\r\n// selectedInterventionId = event.target.id;\r\n// setFormDataDefaults(interventionData[selectedConsumerId][selectedInterventionId]);\r\n// showForm(true);\r\n// }\r\n// });\r\n\r\n// return reviewTable;\r\n// }\r\n\r\n// // Home Page\r\n// //-----------------------------------------------\r\n// function init() {\r\n// formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n// interventionData = {};\r\n// interventionDeleteData = {};\r\n// getDropdownData();\r\n// }\r\n// function buildAddNewInterventionBtn() {\r\n// var btn = button.build({\r\n// text: 'Add New Intervention',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n\r\n// btn.addEventListener('click', () => {\r\n// showForm(false);\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function build() {\r\n// init();\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('consumerSections__section', 'interventionSection');\r\n\r\n// interventionHome = document.createElement('div');\r\n// interventionHome.classList.add('consumerSections__section__home');\r\n\r\n// newInterventionBtn = buildAddNewInterventionBtn();\r\n// interventionReviewTable = buildReviewTable();\r\n\r\n// if ($.session.incidentTrackingUpdate) interventionHome.appendChild(newInterventionBtn);\r\n// interventionHome.appendChild(interventionReviewTable);\r\n\r\n// section.appendChild(interventionHome);\r\n\r\n// return section;\r\n// }\r\n// function populate(data, selectedConsumerID) {\r\n// selectedConsumerId = selectedConsumerID;\r\n\r\n// if (data) {\r\n// data.forEach(d => {\r\n// if (!interventionData[selectedConsumerId]) {\r\n// interventionData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!interventionData[selectedConsumerId][d.itConsumerInterventionId]) {\r\n// interventionData[selectedConsumerId][d.itConsumerInterventionId] = d;\r\n// interventionData[selectedConsumerId][d.itConsumerInterventionId].updated = false;\r\n// }\r\n// });\r\n// }\r\n\r\n// clearReviewTable();\r\n// populateReviewTable();\r\n// }\r\n\r\n// return {\r\n// build,\r\n// populate,\r\n// clearData,\r\n// deleteConsumerData,\r\n// getData: getDataForSave,\r\n// getDeleteData: getDataForDelete,\r\n// };\r\n// })();\r\n","// var consumerInvolvement = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var section;\r\n// var involvementDropdown;\r\n// var locationDropdown;\r\n// var ppiCheckbox;\r\n// var actionBtns;\r\n// var saveBtn;\r\n// var cancelBtn;\r\n// // DATA\r\n// //---------------------\r\n// var involvementsData;\r\n// var involvementTypes;\r\n// var consumerLocationData;\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n\r\n// var isEdit;\r\n// var formReadOnly;\r\n\r\n// function getDataForSave() {\r\n// return involvementsData;\r\n// }\r\n\r\n// function deleteConsumerData(consumerId) {\r\n// if (involvementsData[consumerId]) {\r\n// var { [consumerId]: removedConsumer, ...newInvolvementsData } = involvementsData;\r\n// involvementsData = newInvolvementsData;\r\n// }\r\n// }\r\n\r\n// function clearData() {\r\n// selectedConsumerId = undefined;\r\n// involvementsData = undefined;\r\n// }\r\n\r\n// function setInvolvementsData(data) {\r\n// involvementsData = {};\r\n\r\n// if (data) {\r\n// data.forEach(d => {\r\n// involvementsData[d.consumerId] = {\r\n// includeInCount: d.includeInCount,\r\n// involvementId: d.involvementId,\r\n// locationId: d.locationId,\r\n// name: `${d.firstName} ${d.LastName}`,\r\n// };\r\n// });\r\n// }\r\n// }\r\n// function initConsumerInvolvementData(consumerId) {\r\n// // get location data for consumer\r\n// return new Promise((fulfill, reject) => {\r\n// incidentTrackingAjax.getConsumerServiceLocations(consumerId, results => {\r\n// consumerLocationData[consumerId] = results.map(r => {\r\n// return {\r\n// value: r.locationId,\r\n// text: r.description,\r\n// };\r\n// });\r\n\r\n// if (!involvementsData[consumerId]) {\r\n// var includeInCount = 'Y';\r\n// var involvementId = involvementTypes[0].involvementId;\r\n// var locationId =\r\n// consumerLocationData[consumerId].length === 1\r\n// ? consumerLocationData[consumerId][0].value\r\n// : '';\r\n\r\n// console.log(`Location Id for consumer${consumerId} = ${locationId}`);\r\n\r\n// involvementsData[consumerId] = {\r\n// includeInCount,\r\n// involvementId,\r\n// locationId,\r\n// };\r\n// }\r\n\r\n// fulfill();\r\n// });\r\n// });\r\n// }\r\n\r\n// function toggleSaveDisabled() {\r\n// var errors = [].slice.call(section.querySelectorAll('.error'));\r\n\r\n// if (errors.length > 0) {\r\n// saveBtn.classList.add('disabled');\r\n// } else {\r\n// saveBtn.classList.remove('disabled');\r\n// }\r\n// }\r\n// function checkRequiredFields() {\r\n// var allHaveLocation = true;\r\n// var oneHasPPI = false;\r\n// var consumerIds = [];\r\n\r\n// var keys = Object.keys(involvementsData);\r\n// keys.forEach(k => {\r\n// var data = involvementsData[k];\r\n// if (data.locationId === '') {\r\n// allHaveLocation = false;\r\n// consumerIds.push(k);\r\n// }\r\n// if (data.includeInCount === 'Y') oneHasPPI = true;\r\n// });\r\n\r\n// if (!oneHasPPI) {\r\n// itConsumerSection.showConsumerError(['%'], 'At least one consumer must have PPI checked.');\r\n// return;\r\n// } else {\r\n// if (!allHaveLocation) {\r\n// itConsumerSection.showConsumerError(consumerIds, 'Involvement location is required.');\r\n// } else {\r\n// itConsumerSection.removeConsumerErrors();\r\n// }\r\n// }\r\n// }\r\n\r\n// function checkOneHasPPI() {\r\n// let oneHasPPI = false;\r\n// const keys = Object.keys(involvementsData);\r\n// keys.forEach(k => {\r\n// const data = involvementsData[k];\r\n// if (data.includeInCount === 'Y') oneHasPPI = true;\r\n// });\r\n// return oneHasPPI;\r\n// }\r\n\r\n// function doesAnotherConsumerHavePPIChecked() {\r\n// var otherConsumerHasPPI = false;\r\n\r\n// var keys = Object.keys(involvementsData);\r\n\r\n// if (keys.length === 1) {\r\n// return true;\r\n// }\r\n\r\n// keys.forEach(k => {\r\n// var data = involvementsData[k];\r\n// if (data.includeInCount === 'Y') otherConsumerHasPPI = true;\r\n// });\r\n\r\n// return otherConsumerHasPPI;\r\n// }\r\n\r\n// // Events\r\n// //-----------------------------------------------\r\n// function setupEvents() {\r\n// var tmpInvolvementId;\r\n// var tmpLocationId;\r\n// var tmpPpi;\r\n\r\n// involvementDropdown.addEventListener('change', e => {\r\n// tmpInvolvementId = e.target.value;\r\n// if (tmpInvolvementId === '') {\r\n// involvementDropdown.classList.add('error');\r\n// } else {\r\n// involvementDropdown.classList.remove('error');\r\n// }\r\n// toggleSaveDisabled();\r\n// });\r\n// locationDropdown.addEventListener('change', e => {\r\n// tmpLocationId = e.target.value;\r\n// if (tmpLocationId === '') {\r\n// locationDropdown.classList.add('error');\r\n// } else {\r\n// locationDropdown.classList.remove('error');\r\n// }\r\n// toggleSaveDisabled();\r\n// });\r\n// ppiCheckbox.addEventListener('change', e => {\r\n// tmpPpi = e.target.checked ? 'Y' : 'N';\r\n\r\n// if (tmpPpi === 'Y') {\r\n// ppiCheckbox.classList.remove('error');\r\n// } else {\r\n// if (doesAnotherConsumerHavePPIChecked()) {\r\n// ppiCheckbox.classList.remove('error');\r\n// } else {\r\n// ppiCheckbox.classList.add('error');\r\n// }\r\n// }\r\n\r\n// toggleSaveDisabled();\r\n// });\r\n\r\n// actionBtns.addEventListener('click', e => {\r\n// if (e.target === saveBtn) {\r\n// if (tmpPpi) involvementsData[selectedConsumerId].includeInCount = tmpPpi;\r\n// if (tmpInvolvementId) involvementsData[selectedConsumerId].involvementId = tmpInvolvementId;\r\n// if (tmpLocationId) involvementsData[selectedConsumerId].locationId = tmpLocationId;\r\n\r\n// tmpPpi = undefined;\r\n// tmpInvolvementId = undefined;\r\n// tmpLocationId = undefined;\r\n\r\n// const locationId = involvementsData[selectedConsumerId].locationId;\r\n// const involvementSec = document.querySelector(\"[data-sectionid='4']\");\r\n// if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n// involvementSec.classList.add('sectionError');\r\n// } else {\r\n// involvementSec.classList.remove('sectionError');\r\n// }\r\n\r\n// section.classList.remove('visible');\r\n// consumerSubSections.showSectionMenu();\r\n// checkRequiredFields();\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// }\r\n\r\n// if (e.target === cancelBtn) {\r\n// section.classList.remove('visible');\r\n// consumerSubSections.showSectionMenu();\r\n// }\r\n// });\r\n// }\r\n// // Populate\r\n// //-----------------------------------------------\r\n// function populateLocationDropdown() {\r\n// function populateDropdown(data) {\r\n// var locationId = involvementsData[selectedConsumerId].locationId;\r\n\r\n// if (!locationId && data.length > 1) {\r\n// if (data[0].value !== '') data.unshift({ value: '', text: '' });\r\n// locationDropdown.classList.add('error');\r\n// }\r\n\r\n// dropdown.populate(locationDropdown, data, locationId);\r\n// }\r\n\r\n// var data = consumerLocationData[selectedConsumerId];\r\n\r\n// if (!data) {\r\n// incidentTrackingAjax.getConsumerServiceLocations(selectedConsumerId, results => {\r\n// consumerLocationData[selectedConsumerId] = results.map(r => {\r\n// return {\r\n// value: r.locationId,\r\n// text: r.description,\r\n// };\r\n// });\r\n\r\n// populateDropdown(consumerLocationData[selectedConsumerId]);\r\n// });\r\n\r\n// return;\r\n// }\r\n\r\n// populateDropdown(data);\r\n// }\r\n// function setInvolvmentDropdownValue() {\r\n// var consumerData = involvementsData[selectedConsumerId];\r\n// var involvmentSelect = involvementDropdown.querySelector('select');\r\n// if (consumerData.involvementId !== '') {\r\n// involvmentSelect.value = consumerData.involvementId;\r\n// involvementDropdown.classList.remove('error');\r\n// }\r\n// }\r\n// function setPPICheckboxValue() {\r\n// var consumerData = involvementsData[selectedConsumerId];\r\n// var ppiCheckboxInput = ppiCheckbox.querySelector('input');\r\n// if (consumerData.includeInCount === 'Y' || consumerData.includeInCount === '') {\r\n// ppiCheckboxInput.checked = true;\r\n// } else {\r\n// ppiCheckboxInput.checked = false;\r\n// }\r\n// }\r\n// // Build\r\n// //-----------------------------------------------\r\n// function buildInvolvementDropdown() {\r\n// var opts = {\r\n// className: `involvementDropdown`,\r\n// label: 'Involvement',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var iDropdown = dropdown.build(opts);\r\n\r\n// involvementTypes = incidentTracking.getInvolvementTypes();\r\n\r\n// var data = involvementTypes.map(it => {\r\n// var involvementId = it.involvementId === '%' ? '' : it.involvementId;\r\n// return { value: involvementId, text: it.description };\r\n// });\r\n\r\n// dropdown.populate(iDropdown, data);\r\n\r\n// return iDropdown;\r\n// }\r\n// function buildLocationDropdown() {\r\n// var opts = {\r\n// dropdownId: `involvementLocation-${selectedConsumerId}`,\r\n// className: `locationDropdown`,\r\n// label: 'Location',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var lDropdown = dropdown.build(opts);\r\n\r\n// return lDropdown;\r\n// }\r\n// function buildCheckbox() {\r\n// var opts = {\r\n// className: 'ppiCheckbox',\r\n// text: 'Include in Counts',\r\n// isChecked: true,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var checkbox = input.buildCheckbox(opts);\r\n\r\n// return checkbox;\r\n// }\r\n// function buildBtns() {\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n\r\n// var saveText = true ? 'Update' : 'Save';\r\n\r\n// saveBtn = button.build({\r\n// text: saveText,\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n// cancelBtn = button.build({\r\n// text: 'Cancel',\r\n// type: 'outlined',\r\n// style: 'secondary',\r\n// });\r\n\r\n// if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n// btnWrap.appendChild(saveBtn);\r\n// btnWrap.appendChild(cancelBtn);\r\n\r\n// return btnWrap;\r\n// }\r\n\r\n// function involvementDataLookup(consumerId) {\r\n// return involvementsData[consumerId];\r\n// }\r\n\r\n// function build(consumersInvolvedData) {\r\n// formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n// consumerLocationData = {};\r\n// setInvolvementsData(consumersInvolvedData);\r\n// isEdit = consumersInvolvedData ? true : false;\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('consumerSections__section', 'involvementSection');\r\n\r\n// involvementDropdown = buildInvolvementDropdown();\r\n// locationDropdown = buildLocationDropdown();\r\n// ppiCheckbox = buildCheckbox();\r\n// actionBtns = buildBtns();\r\n\r\n// section.appendChild(involvementDropdown);\r\n// section.appendChild(locationDropdown);\r\n// section.appendChild(ppiCheckbox);\r\n// section.appendChild(actionBtns);\r\n\r\n// setupEvents();\r\n// toggleSaveDisabled();\r\n\r\n// return section;\r\n// }\r\n// function populate(consumerId) {\r\n// selectedConsumerId = consumerId;\r\n\r\n// populateLocationDropdown();\r\n// setInvolvmentDropdownValue();\r\n// setPPICheckboxValue();\r\n// checkRequiredFields();\r\n// }\r\n\r\n// return {\r\n// build,\r\n// populate,\r\n// checkRequiredFields,\r\n// initConsumerData: initConsumerInvolvementData,\r\n// deleteConsumerData,\r\n// getData: getDataForSave,\r\n// clearData,\r\n// involvementDataLookup,\r\n// checkOneHasPPI,\r\n// };\r\n// })();\r\n","// var consumerReporting = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var section;\r\n// var reportingHome;\r\n// var newReportingBtn;\r\n// var reportingReviewTable;\r\n// //*form\r\n// var reportingCategoryDropdown;\r\n// var reportedByInput;\r\n// var reportedToInput;\r\n// var reportMethodInput;\r\n// var reportDateInput;\r\n// var reportTimeInput;\r\n// var reportNotesInput;\r\n// var formButtons;\r\n// var deleteBtn;\r\n// var saveBtn;\r\n// var cancelBtn;\r\n// // DATA\r\n// //---------------------\r\n// var reportingData;\r\n// var reportingDeleteData;\r\n// var reportingCategories;\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n// var selectedReportId;\r\n// //*form values\r\n// var dateReported;\r\n// var reportTime;\r\n// var reportBy;\r\n// var reportMethod;\r\n// var reportTo;\r\n// var reportingCategoryId;\r\n// var reportNotes;\r\n// var lastUpdatedBy;\r\n// var lastUpdatedOn;\r\n\r\n// var isEdit;\r\n// var formReadOnly;\r\n\r\n// function getDataForSave() {\r\n// return reportingData;\r\n// }\r\n// function getDataForDelete() {\r\n// return reportingDeleteData;\r\n// }\r\n// function clearData() {\r\n// reportingData = undefined;\r\n// reportingDeleteData = undefined;\r\n// selectedConsumerId = undefined;\r\n// selectedReportId = undefined;\r\n\r\n// clearFormDataDefaults();\r\n// clearReviewTable();\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// var { [consumerId]: removedConsumerData, ...newReportingData } = reportingData;\r\n// reportingData = newReportingData;\r\n\r\n// if (!reportingDeleteData[consumerId]) {\r\n// reportingDeleteData[consumerId] = removedConsumerData;\r\n// }\r\n// }\r\n// function deleteConsumerReportingData() {\r\n// if (!selectedReportId.includes('new')) {\r\n// var deletedReport = reportingData[selectedConsumerId][selectedReportId];\r\n// if (!reportingDeleteData[selectedConsumerId]) reportingDeleteData[selectedConsumerId] = {};\r\n// reportingDeleteData[selectedConsumerId][selectedReportId] = deletedReport;\r\n// }\r\n\r\n// delete reportingData[selectedConsumerId][selectedReportId];\r\n\r\n// selectedReportId = undefined;\r\n// var form = section.querySelector('.reportForm');\r\n// section.removeChild(form);\r\n// reportingHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// }\r\n\r\n// function getDropdownData() {\r\n// incidentTrackingAjax.getitReportingCategories(function (res) {\r\n// reportingCategories = res;\r\n// });\r\n// }\r\n\r\n// // Form\r\n// //-----------------------------------------------\r\n// function showDeleteWarning() {\r\n// var deleteWarningPopup = POPUP.build({});\r\n\r\n// var message = document.createElement('p');\r\n// message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n// var yesBtn = button.build({\r\n// text: 'Yes',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// deleteConsumerReportingData();\r\n// POPUP.hide(deleteWarningPopup);\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// },\r\n// });\r\n// var noBtn = button.build({\r\n// text: 'No',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// POPUP.hide(deleteWarningPopup);\r\n// },\r\n// });\r\n\r\n// btnWrap.appendChild(yesBtn);\r\n// btnWrap.appendChild(noBtn);\r\n\r\n// deleteWarningPopup.appendChild(message);\r\n// deleteWarningPopup.appendChild(btnWrap);\r\n\r\n// POPUP.show(deleteWarningPopup);\r\n// }\r\n// function checkRequiredFields() {\r\n// var hasErrors = false;\r\n\r\n// var reportCatSelect = reportingCategoryDropdown.querySelector('.dropdown__select');\r\n// if (!reportCatSelect.value || reportCatSelect.value === '%') {\r\n// reportingCategoryDropdown.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// reportingCategoryDropdown.classList.remove('error');\r\n// }\r\n\r\n// var dateInput = reportDateInput.querySelector('input');\r\n// if (!dateInput.value) {\r\n// reportDateInput.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// reportDateInput.classList.remove('error');\r\n// }\r\n\r\n// if (hasErrors) {\r\n// saveBtn.classList.add('disabled');\r\n// } else {\r\n// saveBtn.classList.remove('disabled');\r\n// }\r\n// }\r\n// function clearFormDataDefaults() {\r\n// dateReported = undefined;\r\n// reportTime = undefined;\r\n// reportBy = undefined;\r\n// reportMethod = undefined;\r\n// reportTo = undefined;\r\n// reportingCategoryId = undefined;\r\n// reportNotes = undefined;\r\n// lastUpdatedBy = undefined;\r\n// lastUpdatedOn = undefined;\r\n// }\r\n// function setFormDataDefaults(formData) {\r\n// console.table(formData);\r\n// if (formData) {\r\n// dateReported = formData.dateReported;\r\n// reportTime = formData.timeReported; // todo\r\n// reportBy = formData.reportBy;\r\n// reportMethod = formData.reportMethod;\r\n// reportTo = formData.reportTo;\r\n// reportingCategoryId = formData.reportingCategoryID;\r\n// reportNotes = formData.notes;\r\n// }\r\n// }\r\n// // events\r\n// function setupFormEvents() {\r\n// var tmpReportingCategoryId;\r\n// var tmpReportedBy;\r\n// var tmpReportedTo;\r\n// var tmpReportMethod;\r\n// var tmpReportDate;\r\n// var tmpReportTime;\r\n// var tmpNote;\r\n\r\n// reportingCategoryDropdown.addEventListener('change', e => {\r\n// tmpReportingCategoryId = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// reportedByInput.addEventListener('change', e => {\r\n// tmpReportedBy = e.target.value;\r\n// });\r\n// reportedToInput.addEventListener('change', e => {\r\n// tmpReportedTo = e.target.value;\r\n// });\r\n// reportMethodInput.addEventListener('change', e => {\r\n// tmpReportMethod = e.target.value;\r\n// });\r\n// reportDateInput.addEventListener('change', e => {\r\n// tmpReportDate = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// reportTimeInput.addEventListener('change', e => {\r\n// tmpReportTime = e.target.value;\r\n// });\r\n// reportNotesInput.addEventListener('change', e => {\r\n// tmpNote = e.target.value;\r\n// });\r\n\r\n// if (deleteBtn) {\r\n// deleteBtn.addEventListener('click', e => {\r\n// showDeleteWarning();\r\n// });\r\n// }\r\n\r\n// formButtons.addEventListener('click', e => {\r\n// if (e.target === saveBtn) {\r\n// if (!reportingData[selectedConsumerId]) {\r\n// reportingData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!reportingData[selectedConsumerId][selectedReportId]) {\r\n// var keys = Object.keys(reportingData[selectedConsumerId]);\r\n// selectedReportId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n// reportingData[selectedConsumerId][selectedReportId] = {\r\n// reportingCategoryID: '',\r\n// reportBy: '',\r\n// reportTo: '',\r\n// reportMethod: '',\r\n// dateReported: '',\r\n// notes: '',\r\n// updated: '',\r\n// };\r\n// }\r\n\r\n// if (\r\n// tmpReportingCategoryId ||\r\n// tmpReportedBy ||\r\n// tmpReportedTo ||\r\n// tmpReportMethod ||\r\n// tmpReportDate ||\r\n// tmpReportTime ||\r\n// tmpNote\r\n// ) {\r\n// reportingData[selectedConsumerId][selectedReportId].updated = true;\r\n// }\r\n\r\n// if (tmpReportingCategoryId)\r\n// reportingData[selectedConsumerId][selectedReportId].reportingCategoryID =\r\n// tmpReportingCategoryId;\r\n// if (tmpReportedBy)\r\n// reportingData[selectedConsumerId][selectedReportId].reportBy = tmpReportedBy;\r\n// if (tmpReportedTo)\r\n// reportingData[selectedConsumerId][selectedReportId].reportTo = tmpReportedTo;\r\n// if (tmpReportMethod)\r\n// reportingData[selectedConsumerId][selectedReportId].reportMethod = tmpReportMethod;\r\n// if (tmpReportDate)\r\n// reportingData[selectedConsumerId][selectedReportId].dateReported = tmpReportDate;\r\n// if (tmpReportTime)\r\n// reportingData[selectedConsumerId][selectedReportId].timeReported = tmpReportTime;\r\n// if (tmpNote) reportingData[selectedConsumerId][selectedReportId].notes = tmpNote;\r\n\r\n// selectedReportId = undefined;\r\n\r\n// var form = section.querySelector('.reportForm');\r\n// section.removeChild(form);\r\n// reportingHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// return;\r\n// }\r\n\r\n// if (e.target === cancelBtn) {\r\n// selectedReportId = undefined;\r\n// var form = section.querySelector('.reportForm');\r\n// section.removeChild(form);\r\n// reportingHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// return;\r\n// }\r\n// });\r\n// }\r\n// // build\r\n// function buildReportingCategoryDropdown() {\r\n// var opts = {\r\n// label: 'Reporting To Category',\r\n// style: 'secondary',\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rCatDrop = dropdown.build(opts);\r\n\r\n// var data = reportingCategories.map(cat => {\r\n// return {\r\n// value: cat.itReportingCategoryId,\r\n// text: cat.itReportingCategoryName,\r\n// };\r\n// });\r\n\r\n// data.unshift({ value: '%', text: '' });\r\n\r\n// dropdown.populate(rCatDrop, data, reportingCategoryId);\r\n\r\n// return rCatDrop;\r\n// }\r\n// function buildReportedByInput() {\r\n// var opts = {\r\n// label: 'Reported By',\r\n// type: 'text',\r\n// style: 'secondary',\r\n// value: reportBy,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rbInput = input.build(opts);\r\n\r\n// return rbInput;\r\n// }\r\n// function buildReportedToInput() {\r\n// var opts = {\r\n// label: 'Reported To',\r\n// type: 'text',\r\n// style: 'secondary',\r\n// value: reportTo,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rtInput = input.build(opts);\r\n\r\n// return rtInput;\r\n// }\r\n// function buildReportMethodInput() {\r\n// var opts = {\r\n// label: 'Report Method',\r\n// type: 'text',\r\n// style: 'secondary',\r\n// value: reportMethod,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rmInput = input.build(opts);\r\n\r\n// return rmInput;\r\n// }\r\n// function buildReportedDateInput() {\r\n// var opts = {\r\n// label: 'Date Reported',\r\n// type: 'date',\r\n// style: 'secondary',\r\n// value: dateReported,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rdInput = input.build(opts);\r\n\r\n// return rdInput;\r\n// }\r\n// function buildReportedTimeInput() {\r\n// var opts = {\r\n// label: 'Reported Time',\r\n// type: 'time',\r\n// style: 'secondary',\r\n// value: reportTime,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rtInput = input.build(opts);\r\n\r\n// return rtInput;\r\n// }\r\n// function buildNotesInput() {\r\n// var opts = {\r\n// label: 'Notes',\r\n// type: 'textarea',\r\n// style: 'secondary',\r\n// value: reportNotes,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var nInput = input.build(opts);\r\n\r\n// return nInput;\r\n// }\r\n// function buildFormBtns() {\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n\r\n// saveBtn = button.build({\r\n// text: 'Done',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n// cancelBtn = button.build({\r\n// text: 'Cancel',\r\n// type: 'outlined',\r\n// style: 'secondary',\r\n// });\r\n\r\n// if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n// btnWrap.appendChild(saveBtn);\r\n// btnWrap.appendChild(cancelBtn);\r\n\r\n// return btnWrap;\r\n// }\r\n// function buildDeleteBtn() {\r\n// var btn = button.build({\r\n// text: 'Delete',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// classNames: 'error',\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function buildNewReportingForm() {\r\n// var form = document.createElement('div');\r\n// form.classList.add('reportForm');\r\n\r\n// reportingCategoryDropdown = buildReportingCategoryDropdown();\r\n// reportedByInput = buildReportedByInput();\r\n// reportedToInput = buildReportedToInput();\r\n// reportMethodInput = buildReportMethodInput();\r\n// reportDateInput = buildReportedDateInput();\r\n// reportTimeInput = buildReportedTimeInput();\r\n// reportNotesInput = buildNotesInput();\r\n// formButtons = buildFormBtns();\r\n\r\n// form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n// if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n// deleteBtn = buildDeleteBtn();\r\n// form.appendChild(deleteBtn);\r\n// }\r\n\r\n// form.appendChild(reportingCategoryDropdown);\r\n// form.appendChild(reportedByInput);\r\n// form.appendChild(reportedToInput);\r\n// form.appendChild(reportMethodInput);\r\n// form.appendChild(reportDateInput);\r\n// form.appendChild(reportTimeInput);\r\n// form.appendChild(reportNotesInput);\r\n// form.appendChild(formButtons);\r\n\r\n// return form;\r\n// }\r\n// // show\r\n// function showForm(isedit) {\r\n// isEdit = isedit;\r\n\r\n// consumerSubSections.hideBackBtn();\r\n\r\n// reportingHome.classList.add('hidden');\r\n\r\n// var reportingForm = buildNewReportingForm();\r\n// section.appendChild(reportingForm);\r\n\r\n// setupFormEvents();\r\n// checkRequiredFields();\r\n// }\r\n\r\n// // Review Table\r\n// //-----------------------------------------------\r\n// function clearReviewTable() {\r\n// var tableBody = reportingReviewTable.querySelector('.table__body');\r\n// tableBody.innerHTML = '';\r\n// }\r\n// function populateReviewTable() {\r\n// if (!reportingData) return;\r\n// if (!reportingData[selectedConsumerId]) return;\r\n\r\n// var tableData = [];\r\n\r\n// var keys = Object.keys(reportingData[selectedConsumerId]);\r\n// keys.forEach(key => {\r\n// var data = reportingData[selectedConsumerId][key];\r\n// var filteredCategories = reportingCategories.filter(\r\n// rCat => rCat.itReportingCategoryId === data.reportingCategoryID,\r\n// );\r\n// var reportedCategory = filteredCategories[0].itReportingCategoryName;\r\n// var date = data.dateReported ? data.dateReported.split(' ')[0] : '';\r\n// date = date ? UTIL.formatDateFromIso(date) : date;\r\n// var reportBy = data.reportBy;\r\n\r\n// tableData.push({\r\n// id: key,\r\n// values: [reportedCategory, date, reportBy],\r\n// });\r\n// });\r\n\r\n// table.populate(reportingReviewTable, tableData);\r\n// }\r\n// function buildReviewTable() {\r\n// var reviewTable = table.build({\r\n// tableId: 'consumerReportingTable',\r\n// columnHeadings: ['Reporting Category', 'Date Reported', 'Reported By'],\r\n// });\r\n\r\n// reviewTable.addEventListener('click', event => {\r\n// if (\r\n// event.target.classList.contains('table__row') &&\r\n// !event.target.classList.contains('header')\r\n// ) {\r\n// selectedReportId = event.target.id;\r\n// setFormDataDefaults(reportingData[selectedConsumerId][selectedReportId]);\r\n// showForm(true);\r\n// }\r\n// });\r\n\r\n// return reviewTable;\r\n// }\r\n\r\n// // Home Page\r\n// //-----------------------------------------------\r\n// function init() {\r\n// formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n// reportingData = {};\r\n// reportingDeleteData = {};\r\n// getDropdownData();\r\n// }\r\n// function buildAddNewFollowUpBtn() {\r\n// var btn = button.build({\r\n// text: 'Add New Reporting',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n\r\n// btn.addEventListener('click', () => {\r\n// showForm(false);\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function build() {\r\n// init();\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('consumerSections__section', 'reportingSection');\r\n\r\n// reportingHome = document.createElement('div');\r\n// reportingHome.classList.add('consumerSections__section__home');\r\n\r\n// newReportingBtn = buildAddNewFollowUpBtn();\r\n// reportingReviewTable = buildReviewTable();\r\n\r\n// if ($.session.incidentTrackingUpdate) reportingHome.appendChild(newReportingBtn);\r\n// reportingHome.appendChild(reportingReviewTable);\r\n\r\n// section.appendChild(reportingHome);\r\n\r\n// return section;\r\n// }\r\n// function populate(data, selectedConsumerID) {\r\n// selectedConsumerId = selectedConsumerID;\r\n\r\n// if (data) {\r\n// data.forEach(d => {\r\n// if (!reportingData[selectedConsumerId]) {\r\n// reportingData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!reportingData[selectedConsumerId][d.itConsumerReportId]) {\r\n// reportingData[selectedConsumerId][d.itConsumerReportId] = d;\r\n// reportingData[selectedConsumerId][d.itConsumerReportId].updated = false;\r\n\r\n// // format dates\r\n// if (reportingData[selectedConsumerId][d.itConsumerReportId].dateReported) {\r\n// var dateReported =\r\n// reportingData[selectedConsumerId][d.itConsumerReportId].dateReported.split(' ')[0];\r\n// reportingData[selectedConsumerId][d.itConsumerReportId].dateReported =\r\n// UTIL.formatDateToIso(dateReported);\r\n// }\r\n// }\r\n// });\r\n// }\r\n\r\n// clearReviewTable();\r\n// populateReviewTable();\r\n// }\r\n\r\n// return {\r\n// build,\r\n// populate,\r\n// clearData,\r\n// deleteConsumerData,\r\n// getData: getDataForSave,\r\n// getDeleteData: getDataForDelete,\r\n// };\r\n// })();\r\n","// var consumerReview = (function () {\r\n// // DOM\r\n// //---------------------\r\n// var section;\r\n// var reviewsHome;\r\n// var newReviewBtn;\r\n// var reviewsReviewTable;\r\n// //*form\r\n// var reviewDateInput;\r\n// var reviewedByDropdown;\r\n// var notesInput;\r\n// var formButtons;\r\n// var deleteBtn;\r\n// var saveBtn;\r\n// var cancelBtn;\r\n// // DATA\r\n// //---------------------\r\n// var reviewData;\r\n// var reviewDeleteData;\r\n// var reviewedByDropdownData;\r\n// // Values\r\n// //---------------------\r\n// var selectedConsumerId;\r\n// var selectedReviewId;\r\n// //*form values\r\n// var reviewedDate;\r\n// var reviewedById;\r\n// var reviewNotes;\r\n// var lastUpdatedBy;\r\n// var lastUpdatedOn;\r\n\r\n// var isEdit;\r\n// var formReadOnly;\r\n\r\n// function getDataForSave() {\r\n// return reviewData;\r\n// }\r\n// function getDataForDelete() {\r\n// return reviewDeleteData;\r\n// }\r\n// function clearData() {\r\n// reviewData = undefined;\r\n// reviewDeleteData = undefined;\r\n// selectedConsumerId = undefined;\r\n// selectedReviewId = undefined;\r\n\r\n// clearFormDataDefaults();\r\n// clearReviewTable();\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// if (reviewData[consumerId]) {\r\n// var { [consumerId]: removedConsumer, ...newReviewData } = reviewData;\r\n// reviewData = newReviewData;\r\n\r\n// if (!reviewDeleteData[consumerId]) {\r\n// reviewDeleteData[consumerId] = removedConsumerData;\r\n// }\r\n// }\r\n// }\r\n// function deleteConsumerReviewData() {\r\n// if (!selectedReviewId.includes('new')) {\r\n// var deletedReview = reviewData[selectedConsumerId][selectedReviewId];\r\n// if (!reviewDeleteData[selectedConsumerId]) reviewDeleteData[selectedConsumerId] = {};\r\n// reviewDeleteData[selectedConsumerId][selectedReviewId] = deletedReview;\r\n// }\r\n\r\n// delete reviewData[selectedConsumerId][selectedReviewId];\r\n\r\n// selectedReviewId = undefined;\r\n// var form = section.querySelector('.reviewForm');\r\n// section.removeChild(form);\r\n// reviewsHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// }\r\n\r\n// function getDropdownData() {\r\n// incidentTrackingAjax.getReviewedByDropdown(function (res) {\r\n// reviewedByDropdownData = res;\r\n// });\r\n// }\r\n\r\n// // Form\r\n// //-----------------------------------------------\r\n// function showDeleteWarning() {\r\n// var deleteWarningPopup = POPUP.build({});\r\n\r\n// var message = document.createElement('p');\r\n// message.innerHTML = 'Are you sure you want to delete?';\r\n\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n// var yesBtn = button.build({\r\n// text: 'Yes',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// deleteConsumerReviewData();\r\n// POPUP.hide(deleteWarningPopup);\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// },\r\n// });\r\n// var noBtn = button.build({\r\n// text: 'No',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// callback: () => {\r\n// POPUP.hide(deleteWarningPopup);\r\n// },\r\n// });\r\n\r\n// btnWrap.appendChild(yesBtn);\r\n// btnWrap.appendChild(noBtn);\r\n\r\n// deleteWarningPopup.appendChild(message);\r\n// deleteWarningPopup.appendChild(btnWrap);\r\n\r\n// POPUP.show(deleteWarningPopup);\r\n// }\r\n// function checkRequiredFields() {\r\n// var hasErrors = false;\r\n\r\n// var dateInput = reviewDateInput.querySelector('input');\r\n// if (!dateInput.value) {\r\n// reviewDateInput.classList.add('error');\r\n// hasErrors = true;\r\n// } else {\r\n// reviewDateInput.classList.remove('error');\r\n// }\r\n\r\n// if (hasErrors) {\r\n// saveBtn.classList.add('disabled');\r\n// } else {\r\n// saveBtn.classList.remove('disabled');\r\n// }\r\n// }\r\n// function clearFormDataDefaults() {\r\n// reviewedDate = undefined;\r\n// reviewedById = undefined;\r\n// reviewNotes = undefined;\r\n// lastUpdatedBy = undefined;\r\n// lastUpdatedOn = undefined;\r\n// }\r\n// function setFormDataDefaults(formData) {\r\n// if (formData) {\r\n// reviewedDate = formData.reviewedDate;\r\n// reviewedById = formData.reviewedBy;\r\n// reviewNotes = formData.notes;\r\n// }\r\n// }\r\n// // events\r\n// function setupFormEvents() {\r\n// var tmpReviewDate;\r\n// var tmpReviewedBy;\r\n// var tmpNote;\r\n\r\n// reviewDateInput.addEventListener('change', e => {\r\n// tmpReviewDate = e.target.value;\r\n// checkRequiredFields();\r\n// });\r\n// reviewedByDropdown.addEventListener('change', e => {\r\n// tmpReviewedBy = e.target.value;\r\n// });\r\n// notesInput.addEventListener('change', e => {\r\n// tmpNote = e.target.value;\r\n// });\r\n\r\n// if (deleteBtn) {\r\n// deleteBtn.addEventListener('click', e => {\r\n// showDeleteWarning();\r\n// });\r\n// }\r\n\r\n// formButtons.addEventListener('click', e => {\r\n// if (e.target === saveBtn) {\r\n// if (!reviewData[selectedConsumerId]) {\r\n// reviewData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!reviewData[selectedConsumerId][selectedReviewId]) {\r\n// var keys = Object.keys(reviewData[selectedConsumerId]);\r\n// selectedReviewId = keys.length === 0 ? `new${keys.length}` : `new${keys.length + 1}`;\r\n\r\n// reviewData[selectedConsumerId][selectedReviewId] = {\r\n// reviewedDate: '',\r\n// reviewedBy: '',\r\n// notes: '',\r\n// updated: '',\r\n// };\r\n// }\r\n\r\n// if (tmpReviewDate || tmpReviewedBy || tmpNote) {\r\n// reviewData[selectedConsumerId][selectedReviewId].updated = true;\r\n// }\r\n\r\n// if (tmpReviewDate)\r\n// reviewData[selectedConsumerId][selectedReviewId].reviewedDate = tmpReviewDate;\r\n// if (tmpReviewedBy)\r\n// reviewData[selectedConsumerId][selectedReviewId].reviewedBy = tmpReviewedBy;\r\n// if (tmpNote) reviewData[selectedConsumerId][selectedReviewId].notes = tmpNote;\r\n\r\n// selectedReviewId = undefined;\r\n\r\n// var form = section.querySelector('.reviewForm');\r\n// section.removeChild(form);\r\n// reviewsHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// populateReviewTable();\r\n// incidentCard.checkEntireIncidentCardforErrors();\r\n// return;\r\n// }\r\n\r\n// if (e.target === cancelBtn) {\r\n// selectedReviewId = undefined;\r\n// var form = section.querySelector('.reviewForm');\r\n// section.removeChild(form);\r\n// reviewsHome.classList.remove('hidden');\r\n// consumerSubSections.showBackBtn();\r\n// clearFormDataDefaults();\r\n// return;\r\n// }\r\n// });\r\n// }\r\n// // build\r\n// function buildReviewDateInput() {\r\n// var opts = {\r\n// label: 'Review Date',\r\n// type: 'date',\r\n// style: 'secondary',\r\n// value: reviewedDate,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var dateInput = input.build(opts);\r\n\r\n// return dateInput;\r\n// }\r\n// function buildReviewedByDropdown() {\r\n// var opts = {\r\n// label: 'Reviewed By',\r\n// style: 'secondary',\r\n// classNames: $.session.incidentTrackingReviewedBy ? 'reviewedBy' : ['reviewedBy', 'disabled'],\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var rbDrop = dropdown.build(opts);\r\n\r\n// var data = reviewedByDropdownData.map(rb => {\r\n// return {\r\n// value: rb.employeeId,\r\n// text: rb.employeeName,\r\n// };\r\n// });\r\n\r\n// data.unshift({ value: '%', text: '' });\r\n\r\n// if ($.session.incidentTrackingReviewedBy) {\r\n// dropdown.populate(rbDrop, data, reviewedById);\r\n// } else {\r\n// dropdown.populate(rbDrop, data, $.session.PeopleId);\r\n// }\r\n\r\n// return rbDrop;\r\n// }\r\n// function buildNotesInput() {\r\n// var opts = {\r\n// label: 'Notes',\r\n// type: 'textarea',\r\n// style: 'secondary',\r\n// value: reviewNotes,\r\n// };\r\n\r\n// if (isEdit && formReadOnly) {\r\n// opts.readonly = true;\r\n// }\r\n\r\n// var nInput = input.build(opts);\r\n\r\n// return nInput;\r\n// }\r\n// function buildFormBtns() {\r\n// var btnWrap = document.createElement('div');\r\n// btnWrap.classList.add('btnWrap');\r\n\r\n// saveBtn = button.build({\r\n// text: 'Done',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n// cancelBtn = button.build({\r\n// text: 'Cancel',\r\n// type: 'outlined',\r\n// style: 'secondary',\r\n// });\r\n\r\n// if ((!isEdit || (isEdit && !formReadOnly)) && $.session.incidentTrackingUpdate)\r\n// btnWrap.appendChild(saveBtn);\r\n// btnWrap.appendChild(cancelBtn);\r\n\r\n// return btnWrap;\r\n// }\r\n// function buildDeleteBtn() {\r\n// var btn = button.build({\r\n// text: 'Delete',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// classNames: 'error',\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function buildNewReviewForm() {\r\n// var form = document.createElement('div');\r\n// form.classList.add('reviewForm');\r\n\r\n// reviewDateInput = buildReviewDateInput();\r\n// reviewedByDropdown = buildReviewedByDropdown();\r\n// notesInput = buildNotesInput();\r\n// formButtons = buildFormBtns();\r\n\r\n// if (isEdit && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n// deleteBtn = buildDeleteBtn();\r\n// form.appendChild(deleteBtn);\r\n// }\r\n\r\n// form.appendChild(reviewDateInput);\r\n// form.appendChild(reviewedByDropdown);\r\n// form.appendChild(notesInput);\r\n// form.appendChild(formButtons);\r\n\r\n// form.addEventListener('change', () => incidentCard.checkEntireIncidentCardforErrors());\r\n\r\n// return form;\r\n// }\r\n// // show\r\n// function showForm(isedit) {\r\n// isEdit = isedit;\r\n\r\n// consumerSubSections.hideBackBtn();\r\n\r\n// reviewsHome.classList.add('hidden');\r\n\r\n// var reviewForm = buildNewReviewForm();\r\n// section.appendChild(reviewForm);\r\n\r\n// setupFormEvents();\r\n// checkRequiredFields();\r\n// }\r\n\r\n// // Review Table\r\n// //-----------------------------------------------\r\n// function clearReviewTable() {\r\n// var tableBody = reviewsReviewTable.querySelector('.table__body');\r\n// tableBody.innerHTML = '';\r\n// }\r\n// function populateReviewTable() {\r\n// if (!reviewData) return;\r\n// if (!reviewData[selectedConsumerId]) return;\r\n\r\n// var tableData = [];\r\n\r\n// var keys = Object.keys(reviewData[selectedConsumerId]);\r\n// keys.forEach(key => {\r\n// var data = reviewData[selectedConsumerId][key];\r\n\r\n// var reviewedBy = reviewedByDropdownData.find(d => d.employeeId === data.reviewedBy);\r\n// reviewedBy = reviewedBy ? reviewedBy.employeeName : '';\r\n// var dateReviewed = UTIL.formatDateFromIso(data.reviewedDate);\r\n\r\n// tableData.push({\r\n// id: key,\r\n// values: [reviewedBy, dateReviewed],\r\n// });\r\n// });\r\n\r\n// table.populate(reviewsReviewTable, tableData);\r\n// }\r\n// function buildReviewTable() {\r\n// var reviewTable = table.build({\r\n// tableId: 'consumerReviewTable',\r\n// columnHeadings: ['Reviewed By', 'Date Reviewed'],\r\n// });\r\n\r\n// reviewTable.addEventListener('click', event => {\r\n// if (\r\n// event.target.classList.contains('table__row') &&\r\n// !event.target.classList.contains('header')\r\n// ) {\r\n// selectedReviewId = event.target.id;\r\n// setFormDataDefaults(reviewData[selectedConsumerId][selectedReviewId]);\r\n// showForm(true);\r\n// }\r\n// });\r\n\r\n// return reviewTable;\r\n// }\r\n\r\n// // Home Page\r\n// //-----------------------------------------------\r\n// function init() {\r\n// formReadOnly = $.session.incidentTrackingUpdate === true ? false : true;\r\n\r\n// reviewData = {};\r\n// reviewDeleteData = {};\r\n// getDropdownData();\r\n// }\r\n// function buildAddNewReviewBtn() {\r\n// var btn = button.build({\r\n// text: 'Add New Review',\r\n// type: 'contained',\r\n// style: 'secondary',\r\n// });\r\n\r\n// btn.addEventListener('click', () => {\r\n// showForm(false);\r\n// });\r\n\r\n// return btn;\r\n// }\r\n// function build() {\r\n// init();\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('consumerSections__section', 'reviewSection');\r\n\r\n// reviewsHome = document.createElement('div');\r\n// reviewsHome.classList.add('consumerSections__section__home');\r\n\r\n// newReviewBtn = buildAddNewReviewBtn();\r\n// reviewsReviewTable = buildReviewTable();\r\n\r\n// if ($.session.incidentTrackingUpdate) reviewsHome.appendChild(newReviewBtn);\r\n// reviewsHome.appendChild(reviewsReviewTable);\r\n\r\n// section.appendChild(reviewsHome);\r\n\r\n// return section;\r\n// }\r\n// function populate(data, selectedConsumerID) {\r\n// selectedConsumerId = selectedConsumerID;\r\n\r\n// if (data) {\r\n// data.forEach(d => {\r\n// if (!reviewData[selectedConsumerId]) {\r\n// reviewData[selectedConsumerId] = {};\r\n// }\r\n\r\n// if (!reviewData[selectedConsumerId][d.itConsumerReviewId]) {\r\n// reviewData[selectedConsumerId][d.itConsumerReviewId] = d;\r\n// reviewData[selectedConsumerId][d.itConsumerReviewId].updated = false;\r\n\r\n// // format dates\r\n// if (reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate) {\r\n// var reviewDate =\r\n// reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate.split(' ')[0];\r\n// reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate =\r\n// UTIL.formatDateToIso(reviewDate);\r\n// }\r\n// }\r\n// });\r\n// }\r\n\r\n// clearReviewTable();\r\n// populateReviewTable();\r\n// }\r\n\r\n// return {\r\n// build,\r\n// populate,\r\n// clearData,\r\n// deleteConsumerData,\r\n// getData: getDataForSave,\r\n// getDeleteData: getDataForDelete,\r\n// };\r\n// })();\r\n"]}