{"version":3,"sources":["global/forms.js","global/icons.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","sessions/mfa.js","sessions/session.js","sessions/sessionAjax.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/Administration/resetPassword.js","modules/Administration/resetPasswordAjax.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/Dashboard/dashboard.js","modules/Dashboard/home.js","modules/Dashboard/homeAjax.js","modules/Dashboard/psiLogin.js","modules/DayServices/dayServices.js","modules/DayServices/dayServicesAjax.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/FSS/EditFamilies.js","modules/FSS/EditFamilyHeader.js","modules/FSS/EditFamilyInformation.js","modules/FSS/EditMembers.js","modules/FSS/FSS.js","modules/FSS/FSSAjax.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/importServices.js","modules/Outcomes/outcomes.js","modules/Outcomes/outcomesAjax.js","modules/Outcomes/outcomesReview.js","modules/Plan/plan.js","modules/Plan/planAjax.js","modules/Plan/planAttachments.js","modules/Plan/planData.js","modules/Plan/planDates.js","modules/Roster/roster.js","modules/Roster/rosterAjax.js","modules/Roster/rosterWorkflow.js","modules/Settings/defaults.js","modules/Settings/defaultsAjax.js","modules/Settings/help.js","modules/Settings/information.js","modules/Reports/reports.js","modules/Reports/reportsAjax.js","modules/Scheduling/scheduling.js","modules/Scheduling/schedulingAjax.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/utils/DOM.js","modules/CaseNotes/utils/UTIL.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/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/CaseNotesRejected/caseNotesRejected.js","modules/Dashboard/CaseNotesRejected/caseNotesRejectedAjax.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivity.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivityAjax.js","modules/Dashboard/CNCaseLoad/cnCaseLoad.js","modules/Dashboard/CNCaseLoad/cnCaseLoadAjax.js","modules/Dashboard/ConsumerFinances/ConsumerFinances.js","modules/Dashboard/ConsumerFinances/ConsumerFinancesAjax.js","modules/Dashboard/ConsumerProgressNotes/consumerProgressNotes.js","modules/Dashboard/DayServiceClockedIn/clockedIn.js","modules/Dashboard/DayServiceClockedIn/clockedInAjax.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessages.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessagesAjax.js","modules/Dashboard/HoursWorked/hoursWorked.js","modules/Dashboard/HoursWorked/hoursWorkedAjax.js","modules/Dashboard/InfalTimeClock/infalTimeClock.js","modules/Dashboard/InfalTimeClock/infalTimeClockAjax.js","modules/Dashboard/IncidentTracking/incidentTracking.js","modules/Dashboard/IncidentTracking/incidentTrackingAjax.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/Schedule/schedule.js","modules/Dashboard/Schedule/scheduleAjax.js","modules/Dashboard/Signatures/missingSignatures.js","modules/Dashboard/Signatures/signaturesAjax.js","modules/IncidentTracking/incident/incident.js","modules/IncidentTracking/incident/newIncident.js","modules/IncidentTracking/incident/permissions.js","modules/IncidentTracking/incident/reviewIncident.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCount.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCountAjax.js","modules/IncidentTracking/incidentCard/incidentCard.js","modules/IncidentTracking/overview/incidentOverview.js","modules/Dashboard/TimeClock/timeClock.js","modules/Dashboard/TimeClock/timeClockAjax.js","modules/OOD/Form10/OODFormTransportation.js","modules/OOD/Form4/MonthlyPlacement.js","modules/OOD/Form4/MonthlySummary.js","modules/OOD/Form16/summerYouthWorkExperience.js","modules/OOD/Form16/summerYouthWorkExperienceSummary.js","modules/OOD/Form6/Tier1andJDPlan.js","modules/OOD/Form8/communityBasedAssessment.js","modules/OOD/Form8/communityBasedAssessmentSummary.js","modules/Plan/PlanValidation/planValidation.js","modules/Plan/PlanValidation/planValidationAjax.js","modules/Plan/ISP/ISP.js","modules/Plan/assessment/assessment.js","modules/Plan/assessment/assessmentAjax.js","modules/Plan/workflow/planWorkflow.js","modules/Roster/groups/rosterGroupIndividuals.js","modules/Roster/groups/rosterGroups.js","modules/Roster/groups/rosterGroupsAjax.js","modules/Roster/absent/absent.js","modules/Roster/absent/absentAjax.js","modules/Roster/info/consumerInfo.js","modules/Roster/info/demographics.js","modules/Roster/intellivue/intellivue.js","modules/Settings/widget/widgetSettings.js","modules/Settings/widget/widgetSettingsAjax.js","modules/Scheduling/ApproveRequestOff/schedulingApproveRequest.js","modules/Roster/notes/locationNotes.js","modules/Roster/notes/locationNotesAjax.js","modules/Roster/notes/progressNotes.js","modules/Roster/notes/progressNotesAjax.js","modules/Scheduling/RequestOff/schedulingRequestTimeOff.js","modules/Scheduling/Calendar/schedulingCalendar.js","modules/SingleEntry/Reports/reports.js","modules/SingleEntry/Reports/reportsAjax.js","modules/SingleEntry/Signature/signature.js","modules/SingleEntry/Signature/signatureAjax.js","modules/SingleEntry/TimeApproval/timeApproval.js","modules/SingleEntry/TimeEntry/timeEntryCard.js","modules/SingleEntry/TimeEntry/timeEntryEdit.js","modules/SingleEntry/TimeEntry/timeEntryNew.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/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/RestrictiveMeasures/restrictiveMeasures.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasuresAjax.js","modules/Plan/ISP/Outcome/outcomes.js","modules/Plan/ISP/Outcome/outcomesAjax.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/Plan/assessment/assessmentCard/assessmentCard.js","modules/Plan/assessment/assessmentCard/questionsAndAnswers.js","modules/Plan/assessment/assessmentCard/tableOfContents.js","modules/Settings/widget/cnProductivitySettings/cnProductivitySettings.js","modules/Settings/widget/cnProductivitySettings/cnProductivitySettingsAjax.js","modules/Settings/widget/cnRejectedSettings/cnRejectedSettings.js","modules/Settings/widget/wfPlanSettings/wfPlanSettings.js","modules/Settings/widget/cnCaseLoadSettings/cnCaseLoadSettings.js","modules/Transportation/myRoutes/routeDocumentation/consumerCard.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentation.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentationAjax.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","ACTION_NAV","nav","setColumns","count","classList","remove","hide","innerHTML","populate","elements","length","ele","handleNavEvents","event","target","dataset","actionNav","activeModule","actioncenter","activeSection","newNote","handleActionNavEvent","newNoteSSA","reviewNote","dayServices","outcomesReview","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","FSS","miniRosterBtn","querySelector","addEventListener","button","id","icon","iconPos","text","toLowerCase","toggle","setAttribute","btnText","toggled","toggleText","classNames","Array","isArray","c","attributes","att","key","value","callback","tabindex","tabIndex","dropdownId","className","readonly","wrap","select","e","selectedOption","selectedIndex","notch","inlineBuild","span","hiddenDropdown","hidOpt","data","defaultVal","getElementById","d","option","a","populateStyle","groupingPopulate","opt","nonGroupedData","group","groupLabel","groupId","dropdownValues","charLimit","tab","accept","pointerEvents","callbackType","onBlurCallback","characterCount","undefined","initialLength","innerText","checkOverLimit","handleEvents","forceCharLimit","subString","substring","sttBtn","azureSTTConnection","stt","SPEECH","addSTTContinuousRecEvent","eyeBtn","preventDefault","togglePasswordVisibility","buildCheckbox","checkbox","isChecked","isDisabled","buildNativeCheckbox","buildRadio","radio","checked","name","disableInputField","element","inputEle","nodeName","parentElement","radios","querySelectorAll","enableInputField","removeAttribute","passwordInput","passwordToggleBtn","isVisible","getAttribute","GOOGLE_MAP","map","bounds","markerCluster","insertLocation","mapElement","clearMap","initMap","zoom","arguments","center","markers","google","maps","Map","maxZoom","fullscreenControl","latLngObj","markerArray","location","i","Marker","position","marker","infoWindow","InfoWindow","content","markerLabels","addListener","open","get","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","replace","dd","noOptions","console","warn","multiOption","display","buildChip","push","stopPropagation","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","bodyScrollLock","enableBodyScroll","loadApp","overlay","currToggleState","addAttr","removeAttr","utilMenuBtn","modalOverlay","getElementsByClassName","disableBodyScroll","mainMenu","defaultsMenu","informationMenu","settings","widgetSettingsMenu","helpMenu","action","url","$","session","applicationName","win","window","focus","defaults","buildPage","widgetSettings","information","MINI_MODULE_MENU","menuClone","removeChild","cloneNode","menuHeader","menuInner","insertBefore","appName","multiTabs","newTabOpen","isIE","popup","parent","POPUP","header","onChangeCallback","closePopBtn","body","overflow","closeCallback","hideX","modal","background","appendTo","removeFrom","successfulSave","noPopup","sspopup","asPopup","removeOverlay","successfulSavePopup","failSave","failSavePopup","pendingSave","spinnerWrap","spinnerMessage","spinnerBar","fulfill","reject","PROGRESS","_show","progressBar","removeProperty","_hide","SPINNER","newSpinner","spinnerMessageElement","speed","PROGRESS__ANYWHERE","insertElement","containingElement","smallSpinnerWrap","smallSpinnerBar","PROGRESS__BTN","btnSpinnerWrap","buttonTextCache","btnElement","cache","set","width","clientWidth","table","tableBody","tableId","sortable","Sortable","handle","draggable","onSort","evt","onSortCallback","oldIndex","newIndex","row","item","plain","headline","headerRow","td","columnHeadings","heading","startIcon","startIconHeader","startIconHeaderCallback","firstChild","endIcon","endIconHeading","secondendIcon","secondendIconHeading","allowCopy","isSortable","disabled","overlap","hasError","onClick","cell","values","v","startIconCallback","endIconCallback","secondendIconCallback","onCopyClick","addRows","rowData","updateRows","rowId","oldRow","newRow","replaceChild","deleteRow","getRowCount","tableRows","sortTableByHeader","headers","directions","from","index","sortColumn","transform","parseFloat","Date","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","complete","contactSectionComplete","summaryRisksValidation","buildTabSection","sectionMarkup","tabSection","tabsData","markup","targetTab","targetTabIndex","targetSectionId","navOnClick","toggleNavStatus","status","t","exports","module","define","amd","n","r","o","loaded","m","p","__esModule","addPickerToOtherInputs","supportsDateInput","addPickerToDateInputs","Object","defineProperty","Math","self","Function","__g","hasOwnProperty","f","u","TypeError","Symbol","store","version","__e","s","l","F","G","h","S","y","P","B","W","g","x","apply","virtual","R","U","keys","enumerable","configurable","writable","random","concat","toString","split","propertyIsEnumerable","prototype","ceil","floor","isNaN","valueOf","charAt","M","w","O","D","k","T","_","A","E","j","C","N","entries","src","contentWindow","write","create","defineProperties","getOwnPropertyNames","getOwnPropertySymbols","String","getFullYear","getMonth","getDate","setDate","getDay","getTimezoneOffset","setHours","getHours","test","masks","ddd","i18n","dayNames","dddd","mm","mmm","monthNames","mmmm","yy","yyyy","hh","H","HH","MM","ss","L","round","tt","TT","Z","match","pop","abs","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","expiresHeaderFormat","locale","format","localeText","getLocaleText","valueAsDate","valueAsNumber","NaN","attachTo","keyCode","pingInput","sync","indexOf","substr","days","months","today","ja","thePicker","date","isOpen","container","year","createRangeSelect","setYear","refreshDaysMatrix","month","setMonth","textContent","setInput","daysHead","hasAttribute","parseInt","removeClickOut","parentNode","removeBlur","blur","removeEventListener","setTimeout","onpopstate","getBoundingClientRect","top","height","documentElement","scrollTop","trim","right","left","scrollLeft","refreshLocale","absoluteDate","join","Event","createEvent","initEvent","dispatchEvent","getTime","constructor","next","done","isExtensible","preventExtensions","NEED","KEY","fastKey","getWeak","onFreeze","getOwnPropertyDescriptor","getPrototypeOf","charCodeAt","max","min","_t","_i","_k","Arguments","JSON","stringify","J","I","Y","z","QObject","findChild","iterator","K","V","q","Q","X","et","nt","for","keyFor","useSetter","useSimple","refs","parts","css","media","sourceMap","insertAt","nextSibling","Error","splice","rel","singleton","bind","URL","createObjectURL","revokeObjectURL","Blob","btoa","href","styleSheet","cssText","createTextNode","unescape","encodeURIComponent","navigator","userAgent","head","getElementsByTagName","Boolean","locals","dates","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_DAY","MILLISECONDS_IN_WEEK","toDate","argument","argStr","toInteger","dirtyNumber","number","Number","cloneDate","getTimezoneOffsetInMilliseconds","utcDate","UTC","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","isValid","dirtyDate","leadingZero","num","getTodaysDateObj","todaysDate","getTodaysDateISOString","getDaysInMonth","monthIndex","lastDayOfMonth","setFullYear","addHours","amount","newDateValue","addDays","dirtyAmount","addWeeks","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","addYears","subHours","subDays","subWeeks","subMonths","subYears","endOfWeek","dirtyOptions","weekStartsOn","UTIL","RangeError","day","diff","startDayOfWeek","util","startOfDay","endOfMonth","_date","startOfMonth","startOfWeek","differenceInDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeftTime","timestampRightTime","timestampLeft","timestampRight","differenceInWeeks","startOfWeekLeft","startOfWeekRight","differenceInMonths","dateLeft","dateRight","yearDiff","monthDiff","differenceInYears","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual","dirtyLeftDate","dirtyRightDate","isDateInCurrentWeek","currentDate","curentWeekStart","curentWeekEnd","isDateInFuture","checkFormat","dateString","isoFormatPattern","standardFormatPattern","formatISO","originalDate","representation","result","tzOffset","dateDelimiter","timeDelimiter","offset","absoluteOffset","hourOffset","minuteOffset","sign","hour","minute","second","separator","time","formateToISO","splitBy","YYYY","DD","formateToStandard","joinBy","shorten","shortenYear","eachDayOfInterval","interval","startDate","start","endDate","end","endTime","step","convertFromMilitary","amPm","convertToMilitary","timeString","amPM","formatSecondsToFullTime","totalSeconds","hours","minutes","seconds","_UTIL","padNumberWithZero","getMilitaryTimeDifference","startTime","timeDifference","totalMinutes","formattedTime","removeTimestamp","splitDate","BODY","GRID_CONTAINER","autosizeTextarea","textarea","textareas","area","scrollHeight","toggleHeaderOpacity","removeHeaderOpacity","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","zIndex","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","platform","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","azureSTTApi","speechRecognitionLanguage","enableDictation","setServiceProperty","ServicePropertyChannel","UriQueryParameter","AudioConfig","fromDefaultMicrophoneInput","alert","abbreviateDateYear","dateArr","camelize","str","chr","toUpperCase","capitalize","calculateTotalHours","dirtyStart","dirtyEnd","tempDate","timeDiff","hoursDiff","minutesDiff","toFixed","chunkArray","chunkSize","detectBrowser","ua","msie","ver","trident","rv","versionNumber","edge","formatDateToIso","formatDateFromIso","formatDateFromDateObj","dirtyDateObj","dateObj","formatTimeString","formatPhoneNumber","phoneNumberString","cleaned","findAndSlice","itemFind","findIndex","getGeoLocation","handleSuccess","coords","latitude","long","longitude","geoLocationPosition","handleFirstRunError","geolocation","getCurrentPosition","handleSecondRunError","enableHighAccuracy","protocol","hostname","getFormattedDateFromDate","getDBDateNow","getTodaysDate","returnObj","getCurrentTime","now","getRange","isObject","obj","iterationCopy","prop","parseXml","xmlString","parser","xmlDoc","DOMParser","parseFromString","removeDecimals","removeQuotes","string","removeNonIntegerCharactersFromString","inputString","validateTime","splitTime","validateDateFromInput","dateArray","inputDate","removeUnsavableNoteText","romanize","digits","roman","warningPopup","acceptBtn","btnWrap","rejectBtn","warningMessage","deromanize","validator","token","CM","CD","XC","XL","IX","IV","exec","LS","getStorage","user","UserId","state","localStorage","getItem","setStorage","setItem","checkValidDateRange","toggleMenuItemHighlight","current","toggleHighlight","btn","mfa","mfaPopup","submitBtn","codeInput","messageArea","buildPopup","mainElement","submitCode","cancelBtn","overlayElement","eventListeners","pleaseWait","textAlign","code","authenticatedLogin","mfaReject","errorReason","clearUNPW","errorMessage","errorBox","unInput","pwInput","firstRunShit","ViewMyInformation","UpdateMyInformation","DayServiceView","DayServiceInsert","DayServiceUpdate","DayServiceDelete","DayServiceNonBillable","DayServiceOverRide","DayServiceCaseLoad","DenyStaffClockUpdate","DenyClockUpdate","DemographicsView","DemographicsUpdate","DemographicsBasicDataView","DemographicsRelationshipsView","DemographicsPictureUpdate","DemographicsPictureDelete","DemographicsNotesView","DemographicsViewAttachments","viewLocationSchedulesKey","DemographicsViewDOB","DemographicsViewMedicaid","DemographicsViewMedicare","DemographicsViewResident","DemographicsViewSSN","DemographicsViewLocalId","DemographicsViewConsumerNumber","DemographicsUpdateRelationship","GoalsView","GoalsUpdate","InsertOutcomes","UpdateOutcomes","OutcomesReview","InsertServices","UpdateServices","UpdatePlan","ServiceActivityCaseLoad","CaseNotesView","CaseNotesTablePermissionView","CaseNotesViewEntered","CaseNotesUpdate","CaseNotesUpdateEntered","CaseNotesCaseloadRestriction","CaseNotesSSANotes","SingleEntryView","SingleEntryUpdate","anywhereMainPermission","WorkshopView","WorkshopUpdate","WorkshopCaseLoad","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","Token","browser","browserVer","OS","locations","locationids","lastMenuSelection","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","viewableGoalTypeIds","outcomesPermission","dayServicesPermission","caseNotesPermission","singleEntryPermission","workshopPermission","intellivuePermission","passwordResetPermission","anywhereResetPasswordPermission","anywhereConsumerFinancesPermission","anywhereFSSPermission","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","SingleEntryCaseLoad","incidentTrackingView","incidentTrackingViewPerm","incidentTrackingReviewedBy","incidentTrackingUpdate","incidentTrackingInsert","incidentTrackingDelete","incidentTrackingViewCaseLoad","defaultIncidentTrackingReviewDays","incidentTrackingPopulateIncidentDate","incidentTrackingPopulateIncidentTime","incidentTrackingPopulateReportedDate","incidentTrackingPopulateReportedTime","incidentTrackingEmailIncident","incidentTrackingCaseLoad","infalHasConnectionString","isPSI","anywhereMinutestotimeout","useAbsentFeature","useProgressNotes","singleEntryEditLocationHack","HideProgressNotes","RosterCaseLoad","firstLoad","portraitPath","isASupervisor","seAdminRemoveMap","removeGoalsWidget","createTimeEntries","changeEmailSent","evvDataCache","singleEntryShowConsumerSignature","singleEntryShowConsumerNote","schedulingUpdate","schedulingView","schedulingStartDayOfWeek","schedAllowCallOffRequests","schedRequestOpenShifts","hideAllScheduleButton","authorizationsView","authorizationsVendorInfoView","authorizationsCaseLoad","planUpdate","planDelete","planView","planInsertNewTeamMember","planAssignCaseload","downloadPlans","planSignatureUpdateDOB","planSignatureUpdateBuildingNumber","planClearSignature","PlanCaseLoad","waitingListInsert","waitingListView","waitingListUpdate","waitingListDelete","WaitingListAssessmentCaseLoad","transportationUpdate","transportationView","transportationManageRoute","transportationAddRoute","transportationCaseLoad","emarView","emarCaseLoad","sttEnabled","formsDelete","formsInsert","formsUpdate","formsView","formsCaseload","formsFormtype","OODDelete","OODInsert","OODUpdate","OODView","OODCaseLoad","OODInsertEmployers","CFDelete","CFInsert","CFUpdate","CFView","CFADDPayee","CFEditAccountEntries","CFInsertAccounts","CFUpdateEditAccounts","CFViewEditAccounts","CFViewChecking","CFViewCraditCard","CFViewFoodStamp","CFViewPettyCash","CFViewShaving","CFViewChristmasClub","CFViewSystem20183A","CFViewSystem20183","CFViewOhioEBT","CFViewViewFoodStampDebitCardEBT","ConsumerFinanceCaseLoad","ResetPasswordView","ResetPasswordUpdate","EmploymentView","EmploymentUpdate","EmploymentDelete","InsertEmployers","UpdateEmployers","EmploymentCaseLoad","consumerId","FSSView","FSSUpdate","FSSDelete","InsertFSS","FSSCaseLoad","sendWaitingListEmail","stateAbbreviation","deviceGUID","isActiveUsers","isActiveFamilies","billableTransportation","requireTimeEntryTransportationTimes","ohioEVVChangeDate","anyRequireEndTime","resize","setDefaultLoc","createCookie","saveDefaultLocationValueAjax","setTime","expires","toGMTString","escape","cookie","readCookie","nameEQ","ca","eraseCookie","setSessionVariables","cookieInnards","permissionString","tmpWindows","tmpWindow","window_name","tmpPerm","permission","tmpSpec","special_data","removeClass","ProductName","informationMenuBtn","setSessionJQUERY","each","getUserPermissions","setInterval","tokenCheck","setSession","checkforErrors","xmlReturn","retVal","ErrorText","setCookieOnFail","checkForErrors","errorXml","customPasswordChangeClick","customPasswordChange","setUpPasswordResetMessages","res","success","html","reset","toResetPage","resetPasswordClick","backToLoginPage","reload","BrowserDetect","searchString","dataBrowser","searchVersion","appVersion","dataOS","dataString","dataProp","versionSearchString","versionSearch","identity","vendor","opera","convertMilitaryTimeToAMPM","inputTime","convertedTime","overClicky","outStr","last","lastStr","compared","startsWith","IsPasswordStrong","password","preSpecialCharCheckString","replaceAll","specCharNoCommas","withCommas","specChar","RegExp","checkChangePasswordLoginValues","pass","pass1","pass2","checkPass","specialCharDisplay","getMonthName","getShortMonthName","setDefaultValue","mySrc","srcElement","parents","typeName","switchCase","saveDefaultLocationNameAjax","getConsumerGroups","tabletFocus","inputId","customTextVersionWork","customText","checkVersions","updateVersionAjax","getFormattedTime1","getAMPM","ampm","allowAccess","testInt","checkModulePermissions","addClass","disableModules","anywhereSchedulingPermission","covidPermission","transportationPermission","emarPermission","formsPermission","OODPermission","anywherePlanPermission","setUpAdminPermissions","generateURL","endPoint","webServer","address","port","serviceName","md5Hash","encoder","TextEncoder","encode","hashBuffer","crypto","subtle","digest","hashArray","Uint8Array","hashHex","padStart","logIn","loginBtn","userId","val","localDeviceId","insertData","hash","crypt","method","source","deviceId","ajax","contentType","beforeSend","dataType","response","xhr","resXML","getLogInResult","windowName","loginWarningPopup","okButton","username","is","hasClass","logInChangePassword","patchIt","strongPasswordValue","passwordInfo","setESignaturesMessage","sendCode","newCode","sendBtn","backgroundColor","Promise","resolve","generatedCodeSuccessfully","fetchData","tempUserId","generateAuthenticationCodeResult","updateHTMLAfterCodeSent","newCodeMessageDiv","popupMessageText","params","URLSearchParams","loginMessageData","redactedName","getSignerLoginMessageDataResult","maskedFirstName","maskedLastName","signerEmail","tempUserEmail","messageDiv","locationNoticeText","verifyCodeBtnWrap","sendCodeAgainBtn","verifyBtn","checkVerificationCode","hashedPassword","codeVerification","verifyESignLoginResult","esignatures","errorMessageDiv","getCustomLoginTextAndVersion","getCustomTextAndAnywhereVersionResult","changeIt","changeBtn","newPW","passwordChangeError","inactiveUser","passwordReuseError","activeElement","passwordChangeConfPOPUP","okBtn","marginBottom","resetIt","postError","errNum","errMsg","errLvl","curr_month","strDate","locationId","locationName","checkLogin","checkInfalConnectionAjax","CheckInfalConnectionResult","infalOnly","dashboard","load","getUserPermissionsResult","caseNotesPerm","find","supervisorPerm","docTimePerm","caseNoteDocTimePerm","adminSEPerm","featureLogging","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","RequireViewPlan","caseNotesWarningStartTime","warningStartTime","caseNotesWarningEndTime","warningEndTime","defaultRosterLocationValue","defaultDayServiceLocationValue","defaultTimeClockLocationValue","defaultTimeClockLocationName","defaulttimeclocklocationname","defaultWorkshopLocationName","defaultRosterGroupName","defaultrostergroupname","userName","genKey","authenticatedLoginResult","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","tableOptions","assessmentEntries","authorizationsAjax","getAssessmentEntriesAsync","methodology","score","priorAuthAmtFrom","priorAuthAmtTo","getAssessmentEntriesResult","groupHistoryData","populateTable","results","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","dataObj","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","dbaInput","DBA","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","SEARCH_WRAP","SEARCH_BTN","SEARCH_INPUT","userTableData","tempUserTableData","displayedUsers","userTable","DDNumberBtnWrap","localNumberBtnWrap","goodStandingBtnWrap","homeServicesBtnWrap","takingNewReferralsBtnWrap","fundingSourceBtnWrap","serviceCodeBtnWrap","vendorsData","groupedVendors","vendorGroupCount","loadMoreVendors","fromFilter","topNav","buildRosterTopNav","buildTable","tableUserSearch","loadReviewPage","click","buildSearchBtn","handleVendorInfoTableEvents","contact","wrap1","searchValue","consumer","fullName","matchesName","consumerObj","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","INACTIVE_CHKBOX","changePasswordPopup","savePasswordBtn","cancelPasswordBtn","confirmPasswordInput","newPasswordInput","isCardDisabled","newPasswordValue","confirmPasswordValue","selectedUserID","changePasswordBtn","buildInactiveChkBox","setCheckForInactiveUser","buildActiveChkBox","buildChangePasswordPopup","userFirstName","UserLastName","popupClassNames","class","headerSpace","errortext","confirmMessage","setupChangePasswordEvents","messagetext","savePassword","checkPassword","confirmPW","resetPasswordAjax","changeUserPassword","UserID","IsFirstLoad","userID","User_ID","LastName","Last_Name","FirstName","First_Name","Active","additionalInformation","activeCheckbox","outerHTML","setCheckUpdateUserStatus","updateActiveInactiveUser","firstName","lastName","fullNameReversed","matchesNameReverse","getActiveInactiveUserlist","getActiveInactiveUserDateJSONResult","getUserCredDateJSONResult","myObj","getPassword","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","_ref","_ref2","_ref3","hasDecimal","onFormChange","onKeyupCallbacks","_ref4","_ref5","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","_rd$serviceName","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","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","backPage","account","loadCFEditLanding","loadCFEditFromAccountRegister","Consumers","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","backFromConsumerFinanceEditAccount","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","editButtonBar","editAccountBtn","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","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","appendAddMessageButton","addMessageBtn","linksAndMessages","buildAddMessagePopup","appendPDFButton","pdfBtn","generateReports","passFilterValuesForReport","showWarningPopup","buildFilterPopup","initAbsentWidget","showHide","getWidgetSettings","loadAbsentWidget","div","absentWidget","initLinksAndMessagesWidget","showHideCustomLinks","loadSysMessagesAndCustomLinksWidget","div2","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","stopTime","validTime","popDayStaffTimeBox","tagname","nonFormattedTime","originalText","convertTimeToMilitary","setupTimeInputBox","validateStaffTime","valueText","rowid","timein","timeout","timeOverlapError","getTimeClockInput","objId","pushStr","change","newText","textFieldEdit","showRemainingGoals","$goalsCount","$listTarget","$goalsConsumerCount","consumerCount","oid","first_name","last_name","names","li","append","displayChangeUser","HTMLresponse","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","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","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","isDisabld","getFilterValues","dayServiceLocation","dayServiceServiceDate","createMainReportButton","buttonsData","buttonData","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","getDateToCheckShowCIResult","getExistingCIStaffId","resIn","ciButtonId","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","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","totalHours","getWorkScheduleEntriesResult","buildNewWorkScheduleForm","workScheduleDiv","NEW_SHIFT_BTN","addWorkSchedulePopupBtn","buildworkScheduleEntriesTable","totalHourDiv","timeInHours","WorkScheduleId","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","EditFamilies","familyTableData","tempfamilyTableData","viewEditFamilyBtn","familyId","familyName","FamilyName","Address","PrimaryPhone","EditFamilyHeader","refreshFamily","FSSAjax","getActiveInactiveFamilylist","familyID","EditFamilyInformation","EditMembers","FamilyId","getFamilyInfoByID","IsValueChanged","zip","secondaryPhone","familyInfoWrap","buildFamilyForm","getFamilyInfoByIDResult","familyNameInput","primaryPhoneInput","secondaryPhoneInput","activeChk","notesInput","familyBtnWrap","addressNameDisplay","updateFamilyInfo","memberEntriesTable","familyEntries","memberName","memberId","addEditMemberPopup","newMemberId","getFamilyMembers","memberWrap","buildNewMemberForm","newMemberBtn","addMemberPopup","buildmemberEntriesTable","getFamilyMembersResult","deleteMemberPOPUP","deleteMember","deleteMemberInfo","memberIdd","memberValues","memberDropdown","yesActiveRadio","noActiveRadio","populateMemberDropdown","saveNewMemberPopup","memberNm","getMembersResult","getMembers","insertMemberInfo","fSSData","editFamily","filesList","backBtn","familyNameBtnWrap","primaryPhoneBtnWrap","addressBtnWrap","coPayVal","allocationVal","fundingSourceVal","startDateVal","endDateVal","authorizationPopup","UtilizationPopup","encumberedInputsVal","familyMemberDropdownVal","serviceCodeDropdownVal","paidAmountInputsVal","vendorDropdownVal","datePaidVal","loadFSSLanding","backbtnWrap","addInsertServicesBtnWrap","editFamiliesButton","backButton","getFSSPageData","familyNameBtn","familyNameCloseBtn","primaryPhoneBtn","primaryPhoneCloseBtn","addressBtn","addressCloseBtn","addressInput","btnFilterWrap","groupSubChildData","toggleIcon","fundingSourceID","fID","authId","encumbered","amtPaid","endIconSub","toggleIconSub","coPay","allocation","funding","addFamilyUtilization","subChildRowWrap","subChildHeading","pageDataSubChild","subChild","aID","paidAmt","subChildDataRow","paidDate","familyMember","addFamilyAuthorization","saveAuthorizationData","fundingDropdownPopulate","authorizationPopupEventListeners","authorizationRequiredFieldsOfPopup","allocate","cPay","setAuthorizationBtnStatusOfPopup","getFundingResult","Fundings","getFunding","fundings","insertAuthorization","familyMemberDropdown","encumberedInputs","paidAmountInputs","datePaid","UAPPLY_BTN","saveUtilizationData","UCANCEL_BTN","UtilizationDropdownPopulate","UtilizationPopupEventListeners","UtilizationRequiredFieldsOfPopup","familyMemberVal","serviceCodeVal","paidAmountval","setUtilizationBtnStatusOfPopup","getFamilyMembersDropDownResult","FamilyMembers","getFamilyMembersDropDown","familyMembersData","familyMembers","getServiceCodesResult","getServiceCodes","getVendorsResult","Vendors","getVendors","insertUtilization","paidAmount","authID","getFSSPageDataResult","getActiveInactiveFamilylistResult","updateFamilyInfoResult","insertMemberInfoResult","deleteMemberInfoResult","insertAuthorizationResult","insertUtilizationResult","defaultval","displayfromBLOBBtn","documntId","newFormBtn","isFormLocked","templateId","typeId","templateDropdown","doneBtn","formIds","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","populateTypeDropdown","templateDropdownValidation","templateDropdownOptions","completeDate","getFormTypeResult","FormType","getFormTypeAsync","formTypeId","formTypeDescription","getUserFormTemplatesResult","templates","getUserFormTemplatesAsync","uniqueForms","template","exists","formTemplateId","viewer","viewerWrap","checkFormsLockValue","checkFormsLock","insertSeveralConsumerFormAsync","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","useEmbeddedPrint","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","getRiskAndCauseDropdown","GetRiskAndCauseDropdownsResult","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","getRelationshipData","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","createfilterPopupCreateBTN","updateEmploymentGoalBtn","employmentGoalText","newEntryBtn","newSummaryBtn","OODEntriesTable","OODConsumerBtns","createfilterPopup","selectedConsumerPeopleId","serviceDateStartInput","serviceDateEndInput","createServiceDateStartInput","createServiceDateEndInput","employeeDropdown","servicesDropdown","referenceNumbersDropdown","createreferenceNumbersDropdown","createFilterValues","thisStartDate","thisEndDate","serviceDateStartBtnWrap","serviceDateEndBtnWrap","employeeBtnWrap","serviceBtnWrap","referenceNumberBtnWrap","OODENTRIESFILTER","FORM4MONTHLYSUMMARYSERVICES","consumerServicesDropdown","consumerServicesDoneBtn","selectConsumerServicePopup","selectedConsumerServiceId","selectedConsumerReferenceNumber","selectedConsumerServiceType","selectedConsumerFormNumber","selectedConsumerServiceName","summaryServicesDropdown","summaryServicesDoneBtn","selectSummaryServicePopup","employmentGoalTextarea","planAjax","getConsumerPeopleId","getEmploymentGoalResult","EmploymentGoal","getEmploymentGoal","employmentGoalDIV","employmentGoalMessage","buildUpdateEmploymentGoalsBtn","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","loggedInUserPersonId","generateForm4","generateForm6","generateForm8","generateForm10","generateForm16","formsPopup","buildIndividualFormBtn","formText","buildCreateFormPopUp","showCreateFormsPopup","buildEmploymentGoalPopUp","form4Btn","form6Btn","form8Btn","form10Btn","form16Btn","filteredDate","serviceDateStartBtn","serviceDateEndBtn","employeeBtn","employeeCloseBtn","serviceBtn","serviceCloseBtn","referenceNumberBtn","referenceNumberCloseBtn","filterPopupDoneBtn","populateEmployeeDropdown","populateServiceCodeDropdown","populateReferenceNumberDropdown","getActiveEmployeesResult","populateCreateEmployeeDropdown","getActiveServiceCodesResult","getActiveServiceCodesAsync","serviceType","getConsumerReferenceNumbersResult","referencenumbers","getConsumerReferenceNumbersAsync","referencenumber","populatecreateReferenceNumberDropdown","checkCreatePopupRequiredFields","employmentGoalPopupCancelBtn","employmentGoalPopup","toISOString","createfilterPopupDoneBtn","createeventListeners","createreferenceNumbersDropDown","updateEmploymentGoal","ServiceGoal","employmentGoalTitle","padding","checkEmploymentGoalRequiredFields","checkEmploymentGoalEventListners","employmentGoalInput","getConsumerEmployersAsync","getEmployerJSONResult","updateEmploymentGoalResult","serviceCodeType","getContactTypesAsync","getOutcomesAsync","getContactMethodsAsync","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","loggedInUserPersonIdInput","addEditOutcomeServices","outcomeServicesData","addOutCome","importServicesBtn","outcomeTypeDropdown","effectiveDateStart","effectiveDateEnd","importDate","outcomeTypeBtnWrap","effectiveDateBtnWrap","importDateBtnWrap","fromImportedServicesPage","selectedConsume","navigatedFromImport","buildNewOutcomeServices","addOutcomesButton","createUploadPopup","outcomesAjax","getOutcomeServicsPageData","outcomeTypeName","popupContent","dropArea","flexDirection","alignItems","justifyContent","dropText1","dropText2","dataTransfer","handleFiles","selectFilesButton","fileListDisplay","closeButton","hidePopup","importButton","processFilesForUpload","importServices","uploadBtnsWrap","displayFileNames","list","listItem","removeButton","color","cursor","removeFile","toggleButtonsDisabled","addOutcomes","backToOutcomeLoad","outcomeTypeBtn","outcomeTypeCloseBtn","effectiveDateBtn","importDateBtn","effectiveDateWrap","effectiveDateEndInput","importDateWrap","importDateInput","populateOutcomeTypeDropdown","getOutcomeTypeDropDownResult","OutcomeType","getOutcomeTypeDropDownAsync","outcomeTypeData","outcomeTypes","Goal_Type_ID","goal_type_description","goalID","goal_id","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","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","extractionData","currentlySelectedConsumer","existingOutcomesVendorData","selectedOutcomes","assessmentAreas","sectionToTableMap","importSelectedServicesPopup","knownAndLikelyRisksTable","experiencesTable","paidSupportsTable","additionalSupportsTable","professionalReferralsTable","outcomesServicesData","buildImportSections","headerCheckbox","rowCheckbox","formatDateToYYYYMMDD","handleCheckboxSelection","currentTable","closest","tableRowId","outcomeRowId","escapedOutcomeRowId","CSS","outcomeRowContainer","outcomeData","existingOutcomeGoalId","combinedData","selectedRow","toggleImportButton","handleHeaderCheckboxSelection","headerCheckboxSelector","tableSelector","rowCheckboxes","createAddToExistingOutcomesRow","isPaidSupportsTable","_existingOutcomesVend","serviceDateStartValue","importedOutcomesPDFDataResult","serviceDateEndValue","bDate","eDate","paidSupports","BeginDateEndDate","formattedBDate","formattedEDate","exitingOutcomDropdown","createAddToExistingOutcomesRowContainerDiv","appendToEachRow","insertAdjacentElement","riskAssessments","ra","tableValues","raData","mapRiskAssessmentsDataForTable","assessmentAreaId","experiences","ex","exData","mapExperiencesDataForTable","ps","psData","mapPaidSupportDataForTable","additionalSupports","as","asData","mapAdditionalSupportDataForTable","professionalReferrals","pr","prData","mapProfessionalReferralsDataForTable","importSelectedSerivcesAndCancelBtnWrap","importSelectedServicesBtn","showImportSelectedServicesPopup","checkboxes","anyChecked","allValid","dateInputs","isDropdownSelected","isStartDateValid","isEndDateValid","isDateRangeValid","importSelectedServicesPopupMessage","createDefaultImportedTable","assessmentArea","whatIsRisk","whatSupportMustLookLike","whatSupportLooksLike","riskRequiresSupervision","whatNeedsToHappen","howItShouldHappen","whoIsResponsible","whenHowOften","providerName","scopeOfService","howOftenValue","howOftenText","howOftenFrequency","whoSupports","newOrExisting","reasonForReferral","importedTables","tableDiv","escapedId","existingOutcomeContainer","esitingOutcomeContainerDropdown","additionalData","importSelectedServicesResult","getAssessmentAreaId","targetKey","provderId","WhatIsRisk","WhatSupportMustLookLike","RiskRequiresSupervision","WhoIsResponsible","AssessmentArea","WhatNeedsToHappen","HowItShouldHappen","WhenHowOften","ServiceName","ScopeOfService","HowOftenHowMuch","fundingSourceText","paidSupportsId","ProviderName","howOften","WhoSupports","whoSupportsText","WhatSupportLooksLike","additionalSupportsId","whenHowOftenDesc","NewOrExisting","ReasonForReferral","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","notifyEmployee","promptType","promptNumber","locationSecondaryId","goalStartTime","goalEndTime","goalCILevel","dateSpanMessage","daysBack","useConsumerLocation","defaultPrimaryLocation","currentSection","todaysDateToDisplay","firstDayOfWeek","lastDayOfWeek","firstDayOfMonth","yearOfCurrentDay","dailyAbsent","initLoad","tmpService","tmpOutcome","tmpOutcomeId","editOutcomeBtn","viewPlanBtn","viewPlanPOPUP","updatePlanPopup","isViewedAvailableOSPlan","getAllowedConsumerIds","allowedConsumerIds","getDropdownValues","prompts","getDataForOverview","objLocationId","goalLocationId","primaryLocationId","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","addReviewNote","objectiveActivityId","objectiveActivityDate","resetOutcomeSaveData","getConsumersWithRemainingGoals","loadCardView","applyOutComeFilter","promptTypeInput","promptNumberInput","goalnoteInput","deleteObjectiveActivity","deleteGoal","_successDetails","_successDetails2","_successDetails3","_successDetails4","_successDetails5","_successDetails6","_successDetails7","_successDetails8","_successDetails9","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","closefilter","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","buildDateInput","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","buildReviewNoteInput","buildNotifyCheckbox","notifyEmployeeCheckbox","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","Objective_Activity_Note","reviewNoteInput","submitted_by_user_id","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","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","displayPlanViewPopup","topFilterDateWrap","date_Input","outcomesService","outcomesType","outcomesConsumer","outcomesDate","reviewOutcomesBtn","planViewPOPUP","showPopup","getPlanbyConsumerHistory","getPlanbyConsumerHistoryResult","isPlanAvailable","isViewPlabBtnDisabled","isViewPlabBtnDisabledResult","documentingForDiv","dayBackDateSpanWrap","daysBackDiv","outcomesTabs","goalsResp","getGoalsAsync","occur","buildAllowedConsumersObj","userIdsWithGoals","userIdsWithRemainingGoals","remainingGoalsIds","every","userReminingGoal","showAlert","showAlertIcon","getUserIdPromise","getUserIdsWithGoalsByDate","getRemainingDailyGoalsPromise","getRemainingDailyGoals","planNow","savePlanNow","planLater","savePlanLater","planUpdatePOPUP","getPlanHistorybyConsumer","getPlanHistorybyConsumerResult","isPlanLaterDisable","planNowBtn","closePopupBtn","resultCheckPlan","addOutcomePlanLater","addOutcomePlanNow","updatePlanPOPUP","popupDateWrap","addOutcomePlan","getViewableGoalIdsByPermission","goalDate","getGoalsByDateNewResult","getGoalSpecificLocationInfo","getGoalSpecificLocationInfoJSONResult","getIdsWithGoals","getUserIdsWithGoalsJSONResult","goalsCheckDate","getUserIdsWithGoalsByDateJSONResult","getDaysBackForEditingGoalsJSONResult","getViewableGoalIdsByPermissionJSONResult","ashLikesThisLoop","getRemainingDailyGoalsJSONResult","getGoalsCommunityIntegrationLevelJSONResult","getGoalsCommunityIntegrationRequired","getGoalsCommunityIntegrationRequiredJSONResult","getOutcomeTypeForFilterJSONResult","saveGoalResult","getObjectiveActivityResult","getOutcomesPromptsResult","goalTypeId","getOutcomesSuccessTypesResult","getOutcomesPrimaryAndSecondaryLocationsResult","getSuccessSymbols","getSuccessSymbolLookupResult","getOutcomeServicsPageDataResult","Type","getReviewTableData","getOutcomesReviewGridResult","getReviewTableDataSecondary","getOutcomesReviewGridSecondaryResult","getAllGoalTypes","getAllGoalTypesResult","updateReviewNoteResult","addOutcomePlanResult","addOutcomePlanLaterResult","isViewedAvailableOSPlanInput","isNewBtnDisabledByPlanHistory","goalTypeID","selectedConsumerCard","outcomesDataRaw","outcomesDataSecondaryRaw","exclamationIds","exclamationSecondaryIds","exclamationDateMap","timesDocByDate","activityRes","goalTypes","tabSections","servBtnWrap","typeBtnWrap","serviceFilterVal","outcomeTypeFilterVal","selectedDateSpan","to","unitType","spanLength","daysBackInput","isDaysBackFilter","outcomesReviewDiv","reviewNotePopup","NO_FREQ_SPAN","HOUR_SPAN","DAY_SPAN","WEEK_SPAN","MONTH_SPAN","YEAR_SPAN","NO_FREQ","HOUR","DAY","WEEK","MONTH","YEAR","FREQ_MAP","hourly","daily","weekly","monthly","yearly","MONTHS","FREQUENCY","OBJFMAL","OBJFMAN","OBJFMAR","OBJFMEX","OBJFMNM","RECURRANCE","newConsumerCardHeader","consumerCardHeader","newOutcomeTabs","populateTabSections","sortLocations","showAddReviewNotePopup","attempts","selectedConsumerName","topInfo","savebtn","cancelbtn","secLocId","sloc","buildAddNoteButton","lastUpdatedDateDirty","showDetailViewPopup","tmpData","primaryLoc","secLoc","prompt","notifyCheckbox","lastEditBy","_successDetails10","_successDetails11","_successDetails12","_successDetails13","updateData","Objective_Date","rnUpdateData","onDetailRowClick","getSuccessTypes","getActivity","calculateSpanFromDateRange","toWeekStart","fromWeekStart","isoToDate","isoFromDate","updateSpanInput","updateDateRangeInputs","updateFilterDates","daysBackToggleBtn","daysBackLabel","buildFilterDates","toggleButtonWrap","dateRangeToggleBtn","daysBackInputWrap","dateRangeInputWrap","dateRangeInnerWrap1","dateRangeInnerWrap2","fromDateLabel","toDateLabel","dateRange","setUnitType","buildCurrentFilterdisplay","dateFilter","filteredByWrap","buildTypesDropdown","_outcomeTypeFilterVal","typesDrop","goalTypeDescription","buildServiceDropdown","_serviceFilterVal","servDrop","tempServiceVal","tempTypeVal","typesDropdown","buildToggleIcon","showTabExclamation","mainRowWrap","mainRow","outcomeTypeId","showExclamation","mainTI","individual","timesDoc","successRate","mainRowSubWrap","showChildren","reviewDates","dateRowWrap","dateRow","dateTI","dateForRow","detailsTable","detailsHeading","details","detailRow","sectionTable","sectionID","outcometype","outcometypeid","showexclamation","tabNavItems","freq","getPercentForSuccessRate","topNumb","bottomNum","percent","setDatesForMiddleTier","occ","dObj","currentDateTime","setMinutes","setSeconds","loopLength","nextDate","stDate","weekStart","isoStartDate","stStartDate","weekEnd","isoEndDate","stEndDate","dateKey","setTabSections","sortReviewTableData","dirtyData","objIdSet","Set","objID","recurr","objectiveStatement","objectiveIncrement","frequencyIncrement","sortReviewTableDataSecondary","outcomeOjb","objective_date","top_number","bottom_number","dateThisBelongsTo","objectiveSuccessSymbol","objectiveSuccessDescription","objectiveActivityNote","splitStart","splitKey","afterDate","compareDate","objectiveDate","objectiveIdList","gridSecondary","rDate","freqMod","freqInc","timesDocDate","otherData","backbtn","filterDisplay","addConsumerToActiveConsumers","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","selectedWorkflows","addWorkflowDoneBtn","planAttBody","workflowAttBody","signatureAttBody","portalPlanAttBody","portalWorkflowAttBody","portalSignatureAttBody","DODDplanAttBody","DODDsignAttBody","DODDworkflowAttBody","include","includeCheckbox","launchWorkflowViewer","processId","WorkflowProcess","CONSUMER_PLAN_REVISION","CONSUMER_PLAN_ANNUAL","WorkflowViewerComponent","pId","pageLoadCallback","offsetTop","consumerFirstName","consumerLastName","FN","LN","plans","getConsumerPlans","pd","consumerPlanId","assessmentData","assessment","getAssessmentData","effectiveStart","effectiveEnd","planDates","planYearStartDate","planYearStart","planYearEndDate","planYearEnd","effectiveStartDate","effectiveEndDate","planReviewDate","reviewDate","buildPlanPage","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","templateID","wf","populateAddWorkflowScreen","getProcessId","wfvData","getWorkflowList","buildWorkflowList","workflowTemplateId","copyWorkflowtemplateToRecord","referenceId","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","idArray","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","alertokBtn","clipboard","writeText","showOKPopup","displayDetailBtn","sendtoDODDDetailErrorMessage","closeBtn","generalMessage","detailMessagePopup","detailBtnWrap","displayGeneralBtn","detailMessage","OKPopup","OKBtnWrap","OKMessage","sendtoDODDSuccessPopup","sendtoDODDSuccessMesssage","sendtoPortalResponse","alertPopup","alertbtnWrap","alertMessage","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","wfAttachmentStepIds","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","workflowViewer","addWorkflowBtn","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","workflowId","insertedSSA","workflowIds","wfDocIds","salesForceCaseManagerId","getStateCaseManagerforConsumer","planYearReviewDate","returnString","insertAnnualPlan","insertRevisedPlan","useLatestPlanVersion","wftemplateId","thiswfForms","thiswfFormslist","WFtemplateId","wantedFormAttachmentIds","priorReferenceId","autoworkflowIds","insertAutomatedWorkflows","autoWFIds","showAddedToTeamMemberNoCasemanagerFoundPopup","addedMemberNoCaseManagerPopup","displayWFwithMissingResponsibleParties","showAddedToTeamMemberPopup","forChangeType","callbackForChangeType","prevPlan","toggleNewPlanDoneBtn","disable","buildNewPlanSetupPage","showInvalidSalesForceWarningPopup","buildNewPlanBtn","isValidSalesforce","validateConsumerForSalesForceId","buildAssignCaseloadBtn","csAssignCaseload","showAssignCaseLoadPopup","buildDownloadPlanBtn","downloadPlanFromSalesforceProgress","downloadPlanFromSalesforce","saleforceIdClass","downloadedDate","downloadDate","sentToDODD","dateSentDODD","userSentDODD","setReviewPlanDates","aDate","aDateObj","bDateObj","checkForSalesForce","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","whenHowOftenOther","whatWillHappen","whenToCheckIn","fundingSourceOther","howOftenHowMuch","howOftenOther","summary","aloneTime","importantTo","importantFor","skillsAndAbilities","getISPCharacterLimits","getAllISPcharacterLimts","getAssessmentCharacterLimits","removeDupRelationships","relationships","unique","flag","removeDups","flagN","setDropdownData","defaultDropdowns","serviceTypes","showWith","howOftenHowMuchFrequency","whenHowOftenFrequency","howOFtenExperiences","communicationType","dailyLifeDropdownType","levelsOfSupervision","outcomeStatus","relationshipsWithDups","refreshDropdownData","planSummary","planOutcomes","contactInformation","getRelationshipNameById","contactId","endsWith","supportData","getSelectedVendors","filteredService","providerId","populateRelationshipDropdown","dropdownEle","includeSupports","teamMemberGroup","nonTeamMemberGroup","paidSupportsGroup","signatureId","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","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","consumersWithAlerts","totalConsumerCount","rosterGroupCount","islocationDisabled","MASS_SELECT_ALL_BTN","MASS_DESELECT_ALL_BTN","locationHasUnreadNote","isCaseLoad","selectedConsumersToActiveList","addConsumerToSelectedConsumers","removeConsumerFromSelectedConsumers","getSelectedConsumers","getSelectedConsumersCache","getSelectedConsumersMiniRoster","getAllRosterConsumers","getRosterData","getRosterConsumersData","clearHighlightedConsumers","consumers","selectNoneHighlightedConsumers","removeMiniRosterBtn","getSelectedLocationObj","getSelectedDate","getConsumersWithUnreadNotes","setRosterGroups","rosterData","setSelectedGroupData","defaultRosterGroup","defaultRosterGroupCode","defaultRosterGroupID","setSelectedLocationData","selectedLocationObj","setCustomDefaultLocationData","searchRoster","rc","middleName","MN","rosterlists","rl","groupRosterConsumers","populateRoster","updateTotalConsumerCount","filteredBy1","filteredDateBtn","selectedLocationNameBtn","selectedLocationNameCloseBtn","selectedActiveBtn","totalConsumerCountBtn","groupResults","getConsumerGroupsData","toggleMassAbsentBtn","filterApply","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","updateSalesforceIds","populateConsumerCardPortraits","consumerCards","consumerData","fName","lName","mName","serviceLocations","LId","primaryLocation","conL","ac","isSelected","hasAlert","cwa","dateOfBirth","dob","SalesforceID","isInactive","IDa","statusCode","isAllowed","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","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","getEditConsumerRelationships","getRelationshipsType","getRelationshipsName","getRelationshipsNameByID","selectedValue","relationType","insertEditRelationship","consumerRelationshipsNew","consumerRelationships","consumerRelationshipsNewList","consumerRelationshipsList","rosterWorkflow","strWorkflowIds","convertedstrWorkFlowIds","getWFwithMissingResponsibleParties","constrWorkFlowIds","responsibleData","workflowNames","strWorkflowNames","missingResponsiblePartyAlert","showAddWorkflowPopup","wfPopup","getManualWorkflowList","notPlan","workflowList","wfvItem","newScreen","buildWorkflowScreen","onResetViewer","getWorkflowScreen","onResetViewerFunc","workflowConsumerId","workflowConsumerName","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","moduleDefault","getInvalidDefaultsResult","updateConsumerNotesChecklistDaysBack","updatedChecklistDays","updatedDaysBack","updateCaseNotesReviewDaysResult","helpPage","linkButton","demographicInfo","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","setCaretPosition","elem","caretPos","move","stringAdd","newSubStr","populateCarrierDropdown","carrier","carrierId","carrierName","buildAddressSection","addressSection","stateZipWrap","buildNumbersSection","validPhone","numberSection","saveValue","buildEmailSection","emailSection","updateButton","phoneNumberSection","reportRunning","reportType","generateReportsAjax","generateReport","checkIfReportIsReadyInterval","createIndividualReportButton","reportWarningPopup","intSeconds","checkIfReportExists","callReport","reportData","generateReportResult","checkIfReportExistsResult","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","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","_ref6","_ref7","enableIsIndividualSkillsDeclined","_ref8","_ref9","risksIs","_ref10","isNotAppChecked","hasCheck","hasCheckDocs","risksIsRiskToSelfInputId","risksHas","_ref11","_ref12","physicalNeeds","_ref13","isPhysicalCareNeededInputId","medicalNeeds","_ref14","_ref15","isNeedsActionRequiredYes","rMIs","_ref16","cleardNotApp","hasOtherCheck","isRequired","_ref17","_ref18","_ref19","_ref20","_ref21","_ref22","_ref23","onChangeCallbacksFormWatch","_ref24","formsToDelete","checkboxGroupId","_event$target$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","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","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","x-axis","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","rn","formatters","toExponential","logarithmic","on","sn","ln","un","dn","hn","major","minor","gc","widest","highest","cn","drawTicks","tickMarkLength","gn","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","fragment","DocumentFragment","tempDiv","htmlFragment","textNode","byte","isReferenceFree","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","separateHTMLAttribrutes","props","matching","leftover","sectionName","stringContainsHTML","regExp","scrollTo","behavior","regex","asyncSetTimeout","timeoutId","apiEndpoint","onSendComplete","queue","queueLength","failedUpdates","isSending","sendUpdates","forceUpdate","updatesToSend","sendPromises","setSendCompleteCallback","camelCaseStr","spacedStr","connectionWatch","statusPopup","statusMessage","wait","executedFunction","_len","args","_key","context","later","URL_BASE","fetch","ok","json","getDeviceType","isTablet","storedValue","updatedValue","mergeObjects","baseObject","mergeObject","sortByProperty","sortProp","aValue","bValue","splitObjectByPropNames","dirtyObj","maxLength","fileExtension","maxMainLength","firstPartLength","secondPartLength","watchVariable","initialValue","validateFileType","forbiddenTypesPattern","_event$target$files$","Notifications","DEFAULT_OPTIONS","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","showPicker","eachDayOfWeek","isCurrentWeek","navigationEle","weekWrapEle","prevWeekNavBtn","nextWeekNavBtn","customDatePicker","isDateCurrentlySelected","classArray","dateWrapEle","toDateString","dayOfWeekEle","dateEle","currentSelectedDate","messagePending","messageSuccess","messageError","iconWrap","clickOutToClose","Spinner","showPending","showSuccess","replaceWith","_this$middleName","filterDate","isCaseLoadDisabled","failedImageCache","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","inputGroup","filenamelength","targetID","forbiddenTypes","isFileTypeValid","newInputId","newInputInstance","_viewAttachment","newAttachments","newAttachment","classes","isDisbled","isHidden","updateText","inputWrap","inputNote","readOnly","setCustomValidity","updateLableValue","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","optionEle","onOff","removeElement","getNodeIndex","checkDateFormat","rowSortable","selectedRows","tableNav","tBodies","_multiSelect","newCheckbox","checkboxInput","th","tHead","cells","_columnSort","colIndex","lastDirection","lastHeading","clonedTableBody","_rowSort","newSort","rowEle","initRowSort","_this$options$heading","SpeechToText","textareaInstance","isSpeechInitialized","isListening","initSpeechRecognizer","mutationObserver","speechRecognizer","currValue","startSpeechRecognizer","stopSpeechRecognizer","closeSpeechRecognizer","FullscreenTextarea","fullScreenDialog","fullScreenCloseBtn","dupShowModalBtn","fullScreenShowBtn","inputClone","speechToTextBtn","autoClose","waitDuration","closeToastButton","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","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","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","rejectedNotes","strgroupids","objgroups","groupids","getRejectedData","CN_RejectedWidgetAjax","getCaseNotesRejected","Case_Note_ID","cnGroupId","Case_Note_Group_ID","first_Name","Service_Code","End_Time","lastUpdate","getRejectedcnGroups","getGroupsIds","getGroupCaseNotes","objgroupids","grpconsumer","grpconsumerObj","populateRejectedWidget","rejectedTable","tmpstartTime","frmtStartTime","tmpendTime","frmtEndTime","updateDate","setDefaultIfConfigNull","setWidgetSettingConfig","cleanSettings","getDashboardCaseNotesRejectedResult","groupNoteIds","getDashboardGroupCaseNoteConsumerNamesResult","daysBackWidgetSetting","getDates","addChartData","CN_ProductivityWidgetAjax","getCaseNoteProductivity","getDashboardCaseNoteProductivityResult","preBuildDataObj","originalEnteredDate","Original_Update","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","caseLoad","consumerCountlbl","currentRowConsumerId","viewNotesDaysBack","lastNoteEnteredDaysBack","viewEnteredByOtherUsers","lastNoteEnteredDaysBackDate","showSendReportPopup","emailData","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","cfWidgetLocationId","cfWidgetLocationName","cfWidgetConsumerName","cfWidgetSortOrderId","cfWidgetSortOrderName","sortOrderDropdown","tempCFWidgetLocationName","tempCFWidgetConsumerName","tempCFWidgetSortOrderName","ConsumerFinancesWidgetAjax","getConsumerFinanceWidgetEntriesDataAjax","sortOrderName","populateConsumerFinanceResults","populateCFWidgetLocations","populateCFWidgetConsumers","populateCFWidgetDropdowns","sortData","cfTable","cfTableData","lastTransaction","getCFWidgetConsumers","getCFWidgetConsumersResult","getConsumerFinanceWidgetEntriesDataResult","consumerProgresNoteslocationDropdown","progressNoteList","locationObject","locationLookupObject","tmpSelectedLocation","filteredLocation","filteredLocationExists","getNotesFiltered","getConsumersWithUnreadNotesByEmployeeAndLocationPermission","populateProgressNoteWidgetResult","progNote","noteTitle","populateLocationLookup","getlocations","getlocationsWithConsumersWithUnreadNotes","clockedInStaff","asOfTime","populateLocations","populateCurrentClockInTime","populateConsumersNames","clockedinconsumername","consumersSorted","populateStaffNames","totalEmployees","staffclockedinname","employeeCount","clockedInWidgetAjax","getClockedInConsumerNamesDayServicesAjax","getClockedInStaffNamesDayServicesAjax","staffNames","getLocationsForDashboardDayServices","getDashboardDayServicesLocationsJSONResult","getClockedInConsumerNamesDayServicesJSONResult","getClockedInStaffNamesDayServicesJSONResult","linksWidget","messagesWidget","messages","addMessagePopup","EmployeeListWrap","EmployeeNameList","selectMoreEmployeeBtn","expirationDate","expirationTime","messageInput","textMessage","timeOfExpiration","dateOfExpiration","selectedEmployee","consumerswithEmployeeIds","currentconsumersSelected","assignEmployeePopup","assignBtn","isMultiSelection","nameHeading","nameList","singleSelectedEmployee","loadCustomLinks","linksList","linkaddress","linkname","linktarget","linksAndMessagesWidgetAjax","loadCaraSolva","loadSystemMessages","messageList","separateLinksAndMessages","showAssignEmployeePopup","tomorrowDate","addSystemMessageAsync","addSystemMessageResult","NoteID","checkRequiredFieldsOfNewMessage","setBtnStatusOfNewMessage","getEmployeeListResult","toggleAssignButton","popupMessage","innerWrap","consumersContainer","cHeading","C_SEARCH_BTN","C_SEARCH_WRAP","C_SEARCH_INPUT","C_filterBtn","multiSelectBodyC","emp","C_btnWrap","consumerSearch","selected","cancelSelectBtn","getSystemMessagesAndCustomLinks","linkError","getSystemMessagesAndCustomLinksJSONResult","CaraSolvaURLResult","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","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","defaultShow","tempShow","incidentTrackingWidgetObj","showDropdown","populateIncidentTrackingWidget","showValue","showDropdownData","itTable","incidents","dupName","viewedBy","o1","o2","removeArray","viewedOn","orginUser","originallyEnteredBy","userHasViewed","showBold","incidentCategory","reviewIncident","incidentTrackingWidgetAjax","getITDashboardWidgetDataAjax","getITDashboardWidgetDataResult","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","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","missingSignatureData","signaturePlanStatus","signatureWidgetGroupId","signatureWidgetGroupName","signatureWidgetGroupCode","signatureWidgetLocationId","signatureWidgetLocationName","missingSignaturesList","planStatusDropdown","populatePlanStatusDropdown","locData","oldSignaturePlanStatus","oldSignatureWidgetGroupId","oldSignatureWidgetGroupName","oldSignatureWidgetGroupCode","oldSignatureWidgetLocationId","oldSignatureWidgetLocationName","filteredSignatures","populateMissingSignatures","statusName","aname","bname","newId","activeStatus","sigTable","missingSignatureAjax","getMissingPlanSignatures","getMissingPlanSignaturesResult","getGroupsDropdownData","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","notifyInput","employeeNameDropdownSelectedValue","employeeid","involvement","getPeopleInvolvedUpdateData","peopleRows","companies","addresses1","addresses2","cities","states","zips","phones","involevmentTypes","involevmentDescriptions","companyInput","company","getIncidentDetailsUpdateData","iDate","iTime","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","causeOfInjuryIdArray","riskOfInjuryIdArray","iData","checkedByNurse","checkedDate","injuryDetails","injuryLocationId","injuryTypeId","injuryCauseId","injuryRiskId","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","getEntryInfo","populateSingleEntryCountInfo","groupSingleEntryCountInfo","singleEntryCountWidgetAjax","getSingleEntryCountInfo","getSingleEntryCountInfoJSONResult","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","emailString","selectedRelation","gkRelationships","relationshipDoneBtn","relationshipCancelBtn","populateSelectedFilterValues","selectedFilters","showBtnWrap","supervisorBtn","showCloseBtn","fromDateBtn","toDateBtn","populateOverviewTable","saveFilterData","alphaId","betaId","populateFilterDropdowns","populateLocationsDropdown","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","importFromRelationshipsBtn","popFromRelationships","toAddress","inputField","ccAddress","bccAddress","checkIfITReportIsReadyInterval","getRelationshipDataResult","mainWrap","mainPopup","emailSendBtn","importPopup","relationshipSection","cleanName","cleanAddress","cityStateZip","cleanCityStateZip","relationshipDisp","checkITReportExists","callITReport","supervisorName","consumersInvolved","incidentEmailBtn","dateOne","dateTwo","newDateOne","newDateTwo","timeOne","timeTwo","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","displayRowData","locationsDropdown","applyChanges","showTimeClockDeleteWarning","timeClockDeleteWarningPop","orgTime","isStartTime","checkedAgainstTime","lastClockOutTime","Staff_ID","location_code","resultsRow","jqXHR","timeClockDate","getStaffActivityJSONResult","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","addEmployersBtn","popupSaveBtn","popupCancelBtn","inputContainer1","inputContainer2","populateStaticDropDowns","populateConsumerEmployersDropdown","populateContactTypeDropdown","currentConsumerId","employers","employr","filtereddata","getContactTypesResult","contactTypes","contactCaption","getOutcomesResult","outcomeCode","outcomeCaption","SAMLevelDropdownData","yesNoDropdownData","deleteOODFormEntryResult","checkPopupRequiredFields","monthYearDropdown","referenceNumberDropdown","nextScheduledReviewInput","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","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","narrativeInput","populateContactMethodDropdown","getContactMethodsResult","contactMethods","otherEmployerDropdown","behavioralIndicatorsDropdown","jobTaskQualityIndicatorsDropdown","jobTaskQuantityIndicatorsDropdown","positionDropDownData","wrapHeading","inputContainer3","populateOtherEmployerDropdown","filteredemployers","otherItem","positiondropdown","employerWrap","otheremployerdropdown","otherEmployerdropdown","employerAssessmentInput","supportAndTransitionInput","employerAssessmentLabel","supportAndTransitionLabel","employerAssessmentInpt","supportAndTransitionInpt","workingSectionCase","workingNotWorking","sectionsApplicable","servicesAndSupports","servicesAndSupportsChecked","noSupport","naturalSupport","technology","communitResource","professionalReferral","potentialOutcome","hasASectionApplicable","workingSectionComplete","servicesAndSupportsError","IspValidationCheck","missingExperiences","missingReviews","planProgressSummary","selectedProviders","paidSupportsProviders","invalidProviders","contactsValidation","importantPeople","importantPlaces","bestWayToConnect","servicesAndSupportsQuestionIds","noSupportQuestionIds","paidSupportQuestionIds","professionalReferralQuestionIds","potentialOutcomeQuestionIds","additionalSupportQuestionIds","naturalSupportQuestionIds","technologyQuestionIds","communityQuestionIds","attachedDiv","tooltipText","getAssessmentValidation","servicesAndSupportsData","planValidationAjax","getAssessmentValidationData","workingSectionCheck","applicable","additionalSupportCounts","countOccurrences","additionalSupport","paidSupportCounts","professionalReferralCounts","potentialOutcomeCounts","assessmentOutcomes","allAssessmentAreasComplete","updatedAssessmenteValidation","workingAlertDivCase1","workingAlertDivCase2","tocAlertDiv","tocMobileAlertDiv","tocAssessmentCheck","servicesAndSupportsAllVisibleSectionsCheck","updateTocSectionHeaders","groupedByRow","hasValue605Array","hasValue606Array","answerRow","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","applicableSections","findQuestionIdCategory","counts","updateSectionApplicability","applied","matchingIndex","updateAssessmentValidationSection","updateAssessmentValidationProperty","questionIdCategory","ISPValidation","getPlanSpecificOutcomes","planOutcomeExperiences","responsibility","planExperienceResponsibilities","responsibleProvider","paidSupportsIds","isSalesforceLocation","uniqueOutcomeIds","planOutcome","planReviews","outcomeExperienceOutcomeIds","outcomeReviewOutcomeIds","missingOutcomeExperiences","missingOutcomeReviews","progressSummary","checkAllOutcomesComplete","ispValidationContactCheck","summaryRisksValidationCheck","updatedIspOutcomesSetAlerts","validationCheck","ISPAlertDiv","outcomesNav","updateOutcomeDetails","emptyString","updateOutcome","reviewsValidationCheck","alertDiv","experiencesValidationCheck","checkResponsibleProvider","outcomeID","presetArray","planOutcomeExperience","experienceResponsibility","invalidProvidersCheck","contactsValidationCheck","_contactData$","contactData","getContactValidationData","importantPeopleData","importantPeopleType","typeOther","importantPeopleTypeOther","importantPlacesData","importantPlacesType","importantPlacesTypeOther","checkImportantPeople","checkImportantPlaces","checkBestWayToConnect","checkContactsValidation","place","getContactValidation","bestWayToConnectAlertDiv","checkExperienceProviders","secondValues","checkExperiencesAfterAddingNewPaidSupport","divs","matches","summaryValidationData","getSummaryRiskValidationData","groupedByQuestionSetId","QuestionSetId","hasNullOrEmptyAnswer","Answer","hasNonEmptyAnswer","QuestionText","hasNullOrEmpty","returnSummaryRisksValidation","setSummaryRiskValidation","alertCheckSummaryRisksValidation","summaryAlertDiv","isEverythingComplete","getAssessmentValidationDataResult","getContactValidationDataResult","getSummaryRiskValidationDataResult","planRestrictiveMeasures","planConsentAndSign","getSectionMarkup","planIntroduction","servicesSupportsAjax","getServicesAndSupports","anywAssessmentId","showDeleteWarning","deleteWarning","closeWarningBtn","outcomesAlertDiv","contactsAlertDiv","contactValidationCheck","isPlanComplete","isPlanActive","hasUpdatePermission","sectionData","subsectionData","questionSetData","questionData","conditionalQuestionData","getApplicableSections","showApplicableWarningMessage","toggleIsSectionApplicable","isApplicable","toggleApplicability","getConditionalQuestions","conditionalQuestionId","getQuestionDataById","sortAssessmentDetails","answerData","subsectionId","questionSetId","sectionOrder","isAssessment","subsectionOrder","subsectionName","questionSetOrder","setType","questionSetType","allowRowInsert","questionSetAllowMultirowInserts","defaultAnswer","questionDefaultAnswer","questionOrder","answerId","answerText","answerStyle","questionAnswerStyle","answerOptions","questionAnswerOptions","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","selectedWorkflowForms","workflowListData","formListData","workflowFormList","formHeader","wfName","formItem","WFTemplateId","workflowID","WFTemplateID","workflowDiv","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","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","menuNewList","currentScreen","previousScreen","nextScreen","backwordBtn","forwardBtn","rosterList","editRelationshipPopup","hasADropdownN","startDateInputN","whoIsDropdownN","endDateInputN","deleteBtnN","showInactive","tempConsumer","relationshipPopupBtnWrap","dataName","isValueChanged","deletedIds","archiveConsumerRelationships","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","closeCard","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","relationshipEditPopup","subDataRowPrimaryPhone","subDataRowSecondaryPhone","cellularPhone","subDataRowCellularPhone","subDataRowEmail","getEditConsumerRelationshipsJSONResult","popupHeader","headerWrap","createPopupElements","saveRelationshipBtn","editRelationshipSaveData","setupCard","AddRelationshipBtn","checkRequiredFieldsEditConsumerRelationships","cancelRelationshipBtn","resetPopupValues","populateEditRelationshipDropdown","deleteToId","selectedDropdownId","rePopulateEditRelationshipDropdown","hasA","whoIs","setBtnStatusEditConsumerRelationships","getRelationshipsNameJSONResult","RelationshipsName","relationshipsName","personID","getRelationshipsTypeJSONResult","RelationshipsType","relationshipsType","typeID","getRelationshipsNameByIDJSONResult","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","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","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","widgetSettingsPage","sectionreorder","updatedListOrder","widgetsContainer","saveID","group1","group2","percentSymb","productivityThresholdPercentage","newDaysBack","newProductivity","newWorkHours","configString","viewNotesByOtherUsersCheckBox","lastNoteDaysBackInput","reviewNotesDaysBackInput","newViewNotesDaysBack","newLastNoteEnteredDaysBack","newViewEnteredByOthers","dueDateDropdown","setWidgetSettings","buildWidgetBodyInnerHTML","settingHTML","buildTeamMemberTable","sectionBody","teamMemberTable","allElmnts","setWidgetSettingOrder","sortedProducts","IsBuild","tableOBJ","control","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","dateTime","toLocaleDateString","toLocaleTimeString","approveDenyResponse","daysOffIdString","requestDataText","parentDiv","nestedDivs","nestedDivsObject","nestedDiv1","nestedDiv2","nestedDiv3","paragraphs","allNotesPage","allNotesList","singleNotePage","singleNotesList","allNotesData","singleNoteData","formatTime","datecreatedArray","sortDataByDate","dateArrayA","dateArrayB","Date_Entered","buildNoteImage","buildNoteAuthorName","buildNoteDateTime","buildNoteTitle","buildNoteText","buildNoteDetails","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","singleNoteList","dateTimeArray","timeArray","hidenote","hasBeenRead","hideNoteCheckbox","hidenotedetail","clickableNoteAreas","tmpHideNote","updateHideNote","sendButton","addNoteBtn","notesList","deleteConsumerNote","getConsumersWithUnreadNotesByEmployeeAndLocationPermissionResult","selectNotesByConsumerAndLocationResult","selectConsumerNoteResult","getlocationsWithConsumersWithUnreadNotesResult","eachDateOfInterval","dirtyInterval","startTimeMilliseconds","endTimeMilliseconds","populateEmployeesDropdown","employeeName","employeeData","populateReasonsDropdown","submitRequest","dateInterval","areDatesValid","fromTimeVal","toTimeVal","areTimesValid","employeeNotifiedId","requestResult","requestDaysOffSchedulingResult","buildRequestTimeOff","fromTimeInput","toTimeInput","reasonDropdown","submitRequestBtn","fromDateField","toDateField","reasonDropdownField","employeeDropdownField","_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","isWithinInterval","getTotalHours","startTimeDate","endTimeDate","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","cancelRequestBtn","requestedById","eventId","toggleView","scheduleView","renderScheduleViewBtn","scheduleViewBtn","populateShiftTotalHours","getDateRangeFromCalTitle","calTitle","dateString1","dateString2","calcWeekTotalHours","dateRangeObj","myShifts","withinInterval","doesIdMatch","hoursScheduled","wrapMarkup","populateAppointments","allDay","takenToApptBy","timeRegEx","groupPos","callOffStatus","requestShiftStatus","drawCalendar","ical","Web2Cal","loadEvents","onNewEvent","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","reportCurrentlyProcessing","isTimeApproval","reportPopup","showTimeEntryReport","reportsAjax","getEmpSingleEntryDetailReportAjax","getEmpSingleEntrySupervisorDetailReportAjax","showOverlapReport","getOverlapSingleEntryDetailReportAjax","overlapBtn","BasicSingleEntryReportResult","workCodeId","BasicSingleEntrySupervisorReportResult","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","evvDiv","_evvSave","_saveSignature","_saveNote","_evvCancel","fromData","saveButton","_undoSignature","toData","_clearSignature","clearButton","undoButton","editInit","populatePopup","showSignature","showNote","getConsumersSignaturesAndNotesResult","evvOptions","evv","getSpecificConsumerSignatureAndNote","signOrNote","signatureAndNoteData","payPeriodData","rejectionReasonText","supervisors","payPeriodText","statusBtnWrap","workCodeBtnWrap","tmpSupervisorId","tmpSupervisorName","tmpEmployeeId","tmpEmployeeName","tmpStatus","tmpStatusText","selectAllBtn","mapBtn","payPeriodsDropdown","approveNavBtn","rejectNavBtn","submitNavBtn","workCodeData","workCodeDropdown","workCodeName","tmpWorkCodeId","tmpWorkCodeName","statusLookup","workCodeLookup","enableSelectAll","sortedSelectedRows","rejectOrApprove","showMap","IsFilterDisable","sortSelectedRowsForUpdate","sr","updateSelectAllStatus","updatePromiseArray","selectedRowKeys","statusUpdateData","rejectionReason","updatePromise","updateEntryStatus","setApproveOrReject","approveOrReject","buildStatusChangePopupMessage","pCount","aCount","messageBody","pMessageContainer","pMessageWrap","pMessage","aMessageContainer","aMessageWrap","aMessage","aMessage2Wrap","aMessage2","aMessageBtnWrap","approveBtn","showStatusChangePopup","reviewTableData","actionNavEvent","dataMessage","reasonInput","notifyBtn","statusCloseBtn","workCodeBtn","workCodeCloseBtn","buildSupervisorDropdown","sup","aNameSplit","bNameSplit","aName","bName","buildEmployeeDropdown","repopulateEmployeeDropdown","shortDescription","buildStatusDropdown","buildWorkCodeDropdown","wc","workcodeid","workcodename","checkDateValidation","setBtnStatusOfApplyFilter","getDataForTimeEntryEdit","isOrginUser","editSingleEntryCardStatus","editTimeEntry","recordActivityElement","showRowDetails","entryStatus","rowName","rowDate","rowStartTime","rowEndTime","rowWorkCode","editBtn","showSubmitError","showRejectionPopup","workCodeText","consumerDisplay","loadingDisplay","transportationDisplay","enableSelectAllRows","handleReviewTableEvents","Single_Entry_ID","Anywhere_status","Date_of_Service","Location_Name","workcode","WCCode","comments","Number_Consumers_Present","transportation_units","keyTimes","iconsBox","commentsBox","svgElement","buildHoursWorked","buildSERecordActivity","seData","seID","rejected","dateVal","timeVal","submittedUser","submit_date","approved_time","approvedUser","rejectedUser","rejected_time","buildTopNav","buildReportButton","buildReviewPage","addMap","fitleredBy","startPeriod","endPeriod","dashStatus","markerLabelDate","markerLabelStartTime","markerLabelEndTime","markerLabelText","recordCnt","payperiod","crossMidnightTimeData","saveUserId","rejectedTime","payPeriodDropdown","locationTypeDropdown","totalHoursInput","rejectionReasonInput","transportationBtn","transportationPopup","licenseplateInput","odometerStartInput","odometerEndInput","odometerTotalInput","destinationInput","saveTransBtn","deleteTransBtn","cancelTransBtn","transportationStartTimeInput","transportationEndTimeInput","saveOrUpdate","nowMinutes","evvReasonCodeObj","evvReasonCode","locationTypeCode","wcServiceType","reasonRequired","eligibleConsumersObj","endTimeClicks","evvAttest","evvCommunity","defaultTimesChanged","timeOverlap","isBillable","startLatitude","startLongitude","endLatitude","endLongitude","transportationSaved","isTransportationValid","transportationEndTime","transportationStartTime","transportationType","tmpTransportationType","tmpTransportationReimbursable","tmpOdometerStart","tmpTransportationStartTime","tmpTransportationEndTime","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","Work_Code_ID","Check_Hours","Comments","billable","keytimes","transportationendtime","transportationstarttime","clearCard","reasonCodeDropdown","checkPermissions","clearConsumerSection","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","checkTransportationStartEndTimes","transportationEndTimeVal","transportationStartTimeVal","setupTransportationEvents","oldTransportationType","oldlicenseplate","oldTransportationReimbursable","oldOdometerStart","oldOdometerEnd","oldTransportationEndTime","oldTransportationStartTime","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","sendevv","showDeleteEntryWarningPopup","checkAttestStatus","workCodeDropdownEvent","evvCheckConsumerEligibilityExistingConsumers","origStartTime","evvCheck","setEndTimeOnClick","origEndTime","systemDefaultForCheckEnd","insertType","saveAndUpdate","servicetype","tempEndTime","endTimeHour","endTimeMinute","populatePayPeriodDropdown","pp","startDateAbbr","endDateAbbr","populateWorkCodeDropdown","wcData","populateReasonCodeDropdown","reasonCode","reasonDescription","populateLocationTypeDropdown","locationTypeDropdownData","populateCard","showEvv","wcObj","ppObj","disableCardFields","buildPayPeriodDropdown","buildEVVReasonDropdown","buildLocationTypeDropdown","buildEVVReasontext","buildStartTimeInput","buildEndTimeInput","buildTotalHoursInput","buildRejectionReasonInput","buildAttestCheckbox","buildCommunityCheckbox","buildTimeEntrySection","wrap4","wrap5","wrap6","wrap7","consumerSectionError","cp","buildSaveDeleteCancelButtons","isOnlyEndTimeChangePermission","timeEntrySection","saveDeleteCancel","timeCard","seActivityElement","timeEntryData","tx","Anywhere_Closed","dateofService","borderBottom","Work_Code_Name","splitStartDate","splitEndDate","wcAbbreviation","entriesByDate","payPeriodBtnWrap","locationNameBtnWrap","workCodeNameBtnWrap","submitEntries","statusDataObj","deleteEntries","deletePromises","submitEntry","payPeriodBtn","locationNameBtn","locationNameCloseBtn","workCodeNameBtn","workCodeNameCloseBtn","SE_Trans_Reimbursable","setupFilterEventListeners","dropdownID","wcCode","abbStatus","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","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","poplateResponsibleDropDownbyTypeID","responsibleDropdown","commentsTextInput","responsibleParty","getResponsiblePartyIdforThisEditStep","responsiblePartyClassification","getResponsiblePartyClassification","responsiblePartyClassificationData","getPeopleNamesResult","getPeopleNamesAsync","FormsWorkflowStepComponent","formsWorkflowStepFinished","activeConsumerId","formsWorkflowStepCancelled","templateddl","formddl","fullNameArray","userFormDropdown","getTemplates","usrForm","WorkflowComponent","responsiblePeople","processName","currentStatusId","addedToPlan","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","injuryCauseDropdown","riskOfInjuryDropdown","checkedByNurseCheckbox","detailsInput","treatmentInput","dateCheckedInput","injuryDeleteData","injuryLocations","injuryTypes","injuryRisks","injuryCauses","selectedInjuryId","treatment","dateChecked","newInjuryData","deleteConsumerInjuryData","deletedInjury","riskAndCause","injuryRiskDropdown","injuryCauseDropdowns","injuryLocationSelect","injuryTypeSelect","tmpInjuryLocation","tmpInjuryType","tmpInjuryCause","tmpInjuryRisk","tmpCheckedBy","tmpDetails","tmpTreatment","tmpDateChecked","buildInjuryLocationDropdown","iLocDrop","injuryLocation","buildInjuryTypeDropdown","iTypeDrop","injuryType","buildInjuryCauseDropdown","iCauseDrop","injuryCauseDescription","buildRiskOfInjuryDropdown","iRiskDrop","injuryRiskdescription","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","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","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","involvementType","involvementTypeId","employeeInvolvementTypeId","buildNameDropdown","nameDropdown","buildInvolvmentDropdown","involvmentTypeDropdown","checkedValue","employeeRow","delteBtn","addEmployeeBtn","othersInvolved","addNewPersonRow","peopleCard","buildOtherPersonCard","otherPeopleRow","involvementDropdownData","addPeopleBtn","consumerswithSaleforceIds","caseManagersfromOptionsTable","assignmentResults","currentCaseManagerSelected","assignCaseLoadPopup","showConfirmationPopup","selectedConsumerObjs","confirmCaseLoadPopup","assignedConsumerList","assignStateCaseManagertoConsumers","processedStateConsumerObjs","filteredStateConsumers","assignresult","getCaseManagersfromOptionsTable","getConsumerswithSaleforceIds","caseManagersContainer","cmHeading","CM_SEARCH_BTN","CM_SEARCH_WRAP","CM_SEARCH_INPUT","CM_filterBtn","multiSelectBodyCM","caseManager","existing","CM_btnWrap","caseManagerSearch","cs","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","newPos","inPersonSignature","relationshipType","csTeamMember","getSignatureTypeByID","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","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","AccountName","calculateAge","dobStr","monthDifference","isDateBefore1900","relData","guardianSalesforceId","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","cityStateZipInput","countyInput","sexInput","maritalStatusInput","charLimits","newDropdownData","populateBestWayToConnectDropdown","buildContactInputs","inputSection","dateFundingSoureContainer","ispDatesSection","ispDatesHeader","ispFundingSuourcesSection","ispFundingSuourcesHeader","fsContainer","bestWayToConnectDropdown","otherTextInput","summaryAjax","updateBestWayToConnect","bestWayId","updateMoreDetail","bestWayToConnectBtnAlertDiv","bestWaytoConnectAlertDiv","combinedName","addNewLine","combinedAddress","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","AdditionalSummaryData","getAdditionalAssessmentSummaryQuestions","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","applyGKRelationship","popFromSignatures","signaturesSection","signatureNames","joinedAddress","phoneDisp","tablePopup","popupData","typeDD","relationshipVal","addressVal","phoneVal","phoneVal2","extVal","extVal2","emailVal","typeOtherVal","thisPhone","thisPhone2","phone2","importantPersonId","typeValueUpdate","typeValValidated","importantId","typeDropdownValues","importFromSignaturesBtn","phoneWrap","phoneWrap2","phnDisp","slicedValue","buildTableMarkup","peopleTable","oldPos","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","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","firstElement","getPlanRestrictiveMeasuresResult","insertPlanRestrictiveMeasuresResult","updatePlanRestrictiveMeasuresResult","deletePlanRestrictiveMeasuresResult","progressSummaryId","outcomesWrap","outcomesProgressSummary","addOutcomeBtn","addExpTableBtn","hasPreviousPlan","responseIdCache","respProviderIdToNameMap","mapOutcomesDetails","outcomeOrder","reviews","experienceId","experienceIds","experienceOrder","whatHappened","howHappened","responsibilities","responsibilityIds","responsibilityId","responsibleContact","responsibleProviderSalesforce","whenHowOftenValue","whenValue","whenFrequency","whenHowOftenText","whenOther","outcomeReviewId","whoReview","who","reviewIds","whoResponsible","reviewOrder","sortOutcomesByOrder","objA","objB","checkIfSummaryRequired","populateAssessmentAreaDropdown","populateStatusDropdown","populateExperiencesHowOftenDropdown","populateReviewsWhoDropdown","populateResponsibleProviderDropdown","defaultValueSalesForce","serviceVendors","salesforce","vendorIds","coflictingIds","conflictIndex","getPlanOutcomesPaidSupportProvidersResult","getPlanOutcomesPaidSupportProviders","selectedVendorIds","isSelectedVendor","tempData","saveUpdateProvider","populateResponsibleContactDropdown","getWhenHowOFtenFrequencyById","filteredFrequency","getWhoTypeById","filteredWho","isSalesforceLocationTrue","insertOutcome","fromAssessment","insertPlanOutcome","updatePlanOutcome","deleteOutcome","exp","respId","toggleAddNewOutcomePopupDoneBtn","inputsWithErrors","showAddNewOutcomePopup","hasInitialErros","outcomeText","detailsText","historyText","newOutcomePopup","assessmentAreaDropdown","carryoverInput","outcomeTextInput","detailsTextInput","historyTextInput","insertOutcomeExperience","expTableWrap","newTableData","insertPlanOutcomesExperience","respData","responsibleProviderName","respIds","insertPlanOutcomeExperienceResponsibility","getColTextForWhoResponsible","getColTextForWhenHowOften","showExperiencesPopup","experiencesDummyTable","onEnd","updatePlanOutcomesExperienceOrder","newDraggableIndex","oldDraggableIndex","updateOutcomeExperience","respPartysToDelete","updatePlanOutcomesExperience","isRespPartyForDelete","deletePlanOutcomeExperienceResponsibility","updatePlanOutcomeExperienceResponsibility","newExperiencesTable","oldExperiencesTable","deleteOutcomeExperience","deletePlanOutcomeExperience","outcomeDiv","expTable","filteredRelationship","toggleExperiencesPopupDoneBtn","saveUpdateData","experiencesPopup","whatHappenedInput","howHappenedInput","buildResponsiblePartyInputs","saveUpdateDataRef","dataRefKey","inputsWrap","whoReponsibleWrap","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","rowOrder","addReviewRow","buildReviewsTable","reviewsDiv","reviewsTable","updateOutcomesReviewOrder","addRowBtn","reviewsBtnAlertDiv","reviewAlertDiv","buildQuestion","awnser","questionInput","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","modificationsId","servicesSupportsData","selectedFundingSources","hasPaidSupports","selectedPaidSupportIds","selectedPaidSupportRows","multiEditBtn","multiEditUpdateBtn","multiEditCancelBtn","fundingSourceDropdownSelectedText","servicesDropdownSelectedText","servicesOtherDropdownSelectedText","providerDropdownSelectedText","hcbsSelected","serviceNameId","serviceNameOther","scopeOfservice","beginDate","getAssessmentAreaById","getProviderNameById","getServiceNameById","serviceOtherName","getOtherServiceNameById","fundingSourceDesc","howOftenFrequencyText","getHowOftenHowMuchFrequencyById","whatSupportsLookLike","getWhenHowOftenFrequencyById","mapProfessionalReferralDataForTable","professionalReferralId","newExisting","getNumberOfPaidSupports","getNumberOfAdditionalSupports","additionalSupportsCount","getNumberOfProfessionalReferrals","professionalReferralsCount","getHasPaidSupports","setInitialSelectedVendorIds","setInitialFundingSourceNames","getSelectedFudningSourceNames","populateFundingSourceDropdown","populateServiceNameDropdown","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","showAddPaidSupportPopup","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","addPaidSupportRow","getPaidSupportsMarkup","paidSupportsDiv","supportId","updatePaidSupportsRowOrder","mutliEditBtnWrap","insertAdditionalSupport","additionalSupportId","insertAdditionalSupports","showAddAdditionalSupportPopup","updateAdditionalSupport","updateAdditionalSupports","deleteAdditionalSupport","additionalSupportData","deleteAdditionalSupports","toggleAdditionalSupportDoneBtn","additionalSupportPopup","whoSupportsDropdown","whatSupportLooksLikeInput","addAdditionalSupportRow","getAdditionalSupportsMarkup","additionalSupportsDiv","updateAdditionalSupportsRowOrder","addSupportId","insertProfessionalReferral","profRefId","showAddProfessionalReferralPopup","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","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","additionalSummaryData","sectionIdMap","sectionOrderMap","questionIdMap","questionSetIdMap","tablesToHide","amountOfTimeQuestion","backupPlanQuestion","mapSummaryData","sectionTitle","questionCol","importantTableData","skillsTableData","risksTableData","deleteTableRow","dataSection","SummaryData","getAssessmentSummaryQuestions","rowToDelete","rowsLeftOver","rowIdText","updateRowOrder","questionsetid","answerIds","answerids","populateDailyLifeDropdown","populateLevelsOfSupervisionDropdown","getLevelOfSupervisionById","getCommicationById","getDailyLifeById","addImportantTableRow","secTitle","rowOrderFromID","showImportantTablePopup","updateImportantTableRow","toggleImportantDoneBtn","importantToAnswerId","importantForAnswerId","importantPopup","importantToTextarea","importantForTextarea","upateSingleEmptyRowInsteadOfAddingNew","tableDataKeys","impToAnswer","impForAnswer","questionIds","insertAssessmentSummaryAnswers","anywQuestionIds","updateAssessmentSummaryAnswers","anywAnswerIds","rowCount","setId","buildImportTableBySection","importantTable","getImportantTablesMarkup","importantDiv","addSkillsTableRow","skillAbility","colText","showSkillsTablePopup","updateSkillsTableRow","toggleSkillsDoneBtn","skillAbilityId","communicationId","communication","dailyLifeId","dailyLife","skillsPopup","defaultTextInput","skillAbilityAnswer","buildSkillsTableBySection","skillsTable","getSkillsTablesMarkup","skillsDiv","questionsWrap","placeOnPathDropdown","placeOnPath","updatePlaceOnPath","placeId","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","aloneTimeAmount","providerBackUp","updateAdditionalAssessmentSummaryAnswers","backupPlanWrap","backupPlanPrompt","summaryWrap","skillsTables","risksTables","additionalSummaryMarkup","mappedSummaryData","getAssessmentSummaryQuestionsResult","getAdditionalAssessmentSummaryQuestionsResult","insertAssessmentSummaryAnswersResult","updateAssessmentSummaryAnswersResult","updateAdditionalAssessmentSummaryAnswerResult","updateBestWayToConnectResult","updatePlaceOnPathResult","updateMoreDetailResult","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","assessmentDropdownData","colNameDropdownMap","deleteRowsActive","hideOrShowStatus","observerCallback","isIntersecting","intersectionRatio","highlightLink","IntersectionObserver","root","rootMargin","threshold","checkArrayConsistency","updateRowOrderAfterDelete","grid","gridBody","addAnswer","getSectionQuestionCount","relationshipDropdownData","toggleIntentionallyBlankCheckbox","setID","toggleConditionalQuestion","conditionalQuestions","questionSet","answered","sectionKeys","sectionKey","questionSetKeys","tableQuestionSets","questionSetKey","questionKeys","questionKey","leaveblank","questionDiv","rowElement","atLeastOneColumnAnswered","tableQuestionSetsKeys","setKey","tableHasAtLeastOneRowAnsered","tableElement","rowOrderKeys","rowOrderKey","awnseredQuestions","leftBlankQuestions","awnseredTables","leftBlankTables","handleAssessmentChangeEvents","isForRow","isforrow","answerid","questionid","setid","sectionid","textAreaInput","questionSetGridRows","questionSetActionButtons","rowCells","cellInput","questionRowId","sectionDiv","questionSetDiv","isCustomSection","radioLabelText","hideCheckbox","setGrid","buildSectionMarkup","sectionHeading","sectionHeadingInner","applicableCheckbox","sectionPrompt","buildSectionFooter","buildSubSectionMarkup","subSection","subSectionHeading","deleteSelectedRows","successfulDelete","buildGridHeaderRow","gridHeaderRow","buildGridHeaderCell","gridHeaderCell","buildGridRow","rok","gridRow","buildGridRowCell","colName","gridCell","hasStaticText","textAreaCharLimit","colKey","dataKey","dID","dText","buildQuestionGridMarkup","deleteRowsBtn","cancelDeleteRowsBtn","areAllGridAnswersEmpty","COL_NAME_MAP","tableRowData","rowIndex","rowKey","rowQuestions","cellData","cellId","columnName","inputData","gridCells","cellIds","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","belongsToSection","addSectionQuestions","questionSectionSetsOrderKeys","qssoKey","questionSetMarkup","addSubSectionQuestions","subSectionOrderKeys","ssoKey","subSectionMarkup","questionSubSectionSetsOrderKeys","subSectionTitle","footerMarkup","sectionOrderKeys","soKey","toc","tocInner","sectionGroup","scrollIntoView","block","inline","validateTableHasAtLeastOneRowAnswered","tableQuestions","questionCountObj","sectionUnawnseredQuestions","numOfQuestionsUnawnseredWrapDiv","numOfQuestionsUnawnseredDiv","numOfQuestionsUnawnsered","isWorkingSectionComplete","sectionNumber","tocSectionAlertDiv","workingSectionCaseValue","tocHeader","tocMain","tocToggle","tocClose","cnProductivitySettings","CN_PRODUCTIVITY_SETTINGS","showHideCheckBox","getSettings","setSettings","getInputFieldValues","styleSaveBtnOnSave","buildCNProductivity","cnProductivitySettingsAjax","getCaseNoteProductivitySettings","cnRejectedSettings","CN_REJECTED_SETTINGS","buildCNRejectedSettings","wfPlanSettings","WF_PLAN_SETTINGS","buildWfPlanSettings","cnCaseLoadSettings","CN_CASELOAD_SETTINGS","viewNotesEnteredByOtherUsersCheckBox","buildCNCaseLoadSettings","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"],"mappings":"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;AACA,SAAS;EACP;EACAC,KAAK,EAAE;AACT;AACA,WAAW;EACTC,QAAQ,EAAE;AACZ;AACA;AACA,WAAW;EACTC,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACTC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACTC,aAAa,EAAE;AACjB;AACA,WAAW;EACTC,YAAY,EAAE;AAChB;AACA,WAAW;EACTC,UAAU,EAAE;AACd;AACA,WAAW;EACTC,YAAY,EAAE;AAChB;AACA,WAAW;EACT;EACAC,OAAO,EAAE;AACX;AACA;AACA,WAAW;EACTC,WAAW,EAAE;AACf;AACA;AACA,WAAW;EACT;EACAC,EAAE,EAAE;AACN;AACA;AACA,WAAW;EACTC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACTC,OAAO,EAAE;AACX;AACA;AACA,WAAW;EACT;EACAC,UAAU,EAAE;AACd;AACA;AACA,WAAW;EACTC,YAAY,EAAE;AAChB;AACA;AACA,WAAW;EACTC,YAAY,EAAE;AAChB;AACA;AACA,WAAW;EACTC,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT;EACAC,MAAM,EAAE;AACV;AACA;AACA,WAAW;EACT;EACAC,KAAK,EAAE;AACT;AACA,SAAS;EACP;EACAC,OAAO,EAAE;AACX;AACA,WAAW;EACTC,OAAO,EAAE;AACX;AACA;AACA;AACA,GAAG;EACDC,SAAS,EAAE;AACb;AACA;AACA,WAAW;EACT;EACAC,IAAI,EAAE;AACR;AACA;AACA,WAAW;EACT;EACAC,IAAI,EAAE;AACR;AACA;AACA;AACA;AACA,WAAW;EACT;EACAC,OAAO,EAAE;AACX;AACA;AACA,SAAS;EACP;EACAC,SAAS,EAAE;AACb;AACA;AACA,SAAS;EACP;EACAC,WAAW,EAAE;AACf;AACA;AACA,SAAS;EACP;EACAC,UAAU,EAAE;AACd;AACA;AACA,UAAU;EACR;EACAC,gBAAgB,EAAE;AACpB;AACA;AACA,UAAU;EACR;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CA24B,gBAAgB;IAChBj5B,iBAAiB;IACjBs5B,mBAAmB;IACnBE,eAAe;IACfG,gBAAgB;IAChBM,iBAAiB;IACjBV;EACJ,CAAC;AACL,CAAC,CAAE,CAAC;AC1FJ;AACA;AACA;AACA;AACA;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;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,MAAMjqB,eAAe,CAAC;EAClBmc,WAAWA,CAACje,GAAG,EAAE0sB,WAAW,EAAEC,WAAW,EAAE;IACzC,IAAI,CAAC/pB,MAAM,CAACd,eAAe,EAAEnB,MAAM,CAACC,IAAI,CAACgsB,WAAW,CAAC;IACrD,IAAI,CAACC,IAAI,GAAG7sB,GAAG;;IAEf;AACN;AACA;AACA;AACA;AACA;IACM,IAAI,CAAC8sB,0BAA0B,GAAG,aAAa;;IAE/C;AACN;AACA;AACA;AACA;AACA;IACM,IAAI,CAACC,+BAA+B,GAAG,KAAK;IAC5C;AACN;AACA;AACA;IACM,IAAI,CAACC,QAAQ,GAAG,EAAE;;IAElB;AACN;AACA;IACM,IAAI,CAACC,SAAS,GAAG,EAAE;IAEnB,IAAI,CAACC,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;IAEjC;AACN;AACA;IACM,IAAI,CAACC,OAAO,GAAG,EAAE;;IAEjB;AACN;AACA;AACA;IACM,IAAI,CAACC,MAAM,GAAG,KAAK;IAEnB,IAAI77B,OAAO,GAAGo7B,WAAW,IAAI,CAAC,CAAC;;IAE/B;AACN;AACA;IACM,IAAI,CAACU,OAAO,GAAG97B,OAAO,CAAC,QAAQ,CAAC,IAAIoP,MAAM,CAACC,IAAI,CAACQ,MAAM,CAACksB,UAAU,GAAG,CAAC;;IAErE;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,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,KAAK,EAAE,IAAI;IACXC,cAAc,EAAE,EAAE;IAClBC,cAAc,EAAE;EACpB,CAAC;;EAED;EACA,IAAI18D,IAAI,GAAG;IACPnoD,MAAM,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGskH,gBAAgB,EAAE;AAC1B;AACA;AACA;AACA;AACA,KAAK;IACGR,WAAW,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGM,SAAS,EAAE;AACnB;AACA;AACA;AACA;AACA,KAAK;IACGD,KAAK,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGD,WAAW,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGM,gBAAgB,EAAE;AAC1B;AACA;AACA;AACA;AACA,KAAK;IACGG,KAAK,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;IACGV,SAAS,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGM,QAAQ,EAAE;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGF,WAAW,EAAE;AACrB;AACA;AACA;AACA;AACA,KAAK;IACGO,cAAc,EAAE;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGZ,qBAAqB,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGD,mBAAmB,EAAE;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGL,qBAAqB,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,iBAAiB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,iBAAiB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGC,YAAY,EAAE;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;IACGY,iBAAiB,EAAE;AAC3B;AACA;AACA;A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","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","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 if (activeSection === 'outcomes-review') {\r\n outcomesReview.handleActionNavEvent(target);\r\n } else {\r\n outcomes.handleActionNavEvent(target);\r\n }\r\n \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 case 'FSS': {\r\n FSS.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 function populateStyle(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 if (d.style == 'italic') \r\n option.classList.add('italicStyle');\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 /**\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 populateStyle\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 document.getElementById('fSSButton').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 document.getElementById('fSSButton').setAttribute(\"title\", \"FSS\");\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 startIcon\r\n if (options.startIcon) {\r\n var td = document.createElement('div');\r\n td.classList.add('startIcon');\r\n td.innerHTML = options.startIconHeader;\r\n td.addEventListener('click', options.startIconHeaderCallback);\r\n headerRow.insertBefore(td, headerRow.firstChild);\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.startIcon) {\r\n const cell = document.createElement('div');\r\n cell.classList.add('startIcon');\r\n cell.innerHTML = d.startIcon;\r\n cell.addEventListener('click', d.startIconCallback);\r\n row.insertBefore(cell, row.firstChild);\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.replace('', 0).replace(',', '')); \r\n case 'amount':\r\n return parseFloat(content.replace('$', '')); \r\n case 'date':\r\n return Date.parse(content.replace(' ', '')); \r\n case 'string':\r\n default:\r\n return content.replace(' ', ''); \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 if (event.target.classList.contains('active')) return;\r\n\r\n var activeTab = tabNav.querySelector('.active');\r\n var activeSection = tabBody.querySelector('.active');\r\n var targetSection = `.${event.target.innerText.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.innerText,\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 addHours(date, amount) {\r\n const newDateValue = +toDate(date) + amount * MILLISECONDS_IN_HOUR; // Add hours converted to milliseconds\r\n return new Date(newDateValue);\r\n }\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 subHours(date, amount) {\r\n return addHours(date, -amount);\r\n }\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 subMonths(date, amount) {\r\n return addMonths(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 // END/START\r\n function endOfWeek(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 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 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 function startOfDay(dirtyDate) {\r\n const date = toDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n function endOfMonth(date) {\r\n const _date = toDate(date);\r\n const month = _date.getMonth();\r\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\r\n _date.setHours(23, 59, 59, 999);\r\n return _date;\r\n }\r\n function startOfMonth(date) {\r\n const _date = toDate(date);\r\n _date.setDate(1);\r\n _date.setHours(0, 0, 0, 0);\r\n return _date;\r\n }\r\n function startOfWeek(dirtyDate) {\r\n const weekStartsOn = 0;\r\n\r\n const date = toDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n // DIFFERENCE\r\n function differenceInDays(dirtyDateLeft, dirtyDateRight) {\r\n const startOfDayLeft = startOfDay(dirtyDateLeft);\r\n const startOfDayRight = startOfDay(dirtyDateRight);\r\n\r\n const timestampLeftTime = startOfDayLeft.getTime();\r\n const timestampRightTime = startOfDayRight.getTime();\r\n\r\n const timestampLeft = timestampLeftTime - startOfDayLeft;\r\n const timestampRight = timestampRightTime - startOfDayRight;\r\n\r\n return Math.round((timestampLeftTime - timestampRightTime) / MILLISECONDS_IN_DAY);\r\n }\r\n function differenceInWeeks(dirtyDateLeft, dirtyDateRight) {\r\n const startOfWeekLeft = startOfWeek(dirtyDateLeft, {});\r\n const startOfWeekRight = startOfWeek(dirtyDateRight, {});\r\n\r\n const timestampLeftTime = startOfWeekLeft.getTime();\r\n const timestampRightTime = startOfWeekRight.getTime();\r\n\r\n const timestampLeft = timestampLeftTime - startOfWeekLeft;\r\n const timestampRight = timestampRightTime - startOfWeekRight;\r\n\r\n return Math.round((timestampLeftTime - timestampRightTime) / MILLISECONDS_IN_WEEK);\r\n }\r\n function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\r\n const dateLeft = toDate(dirtyDateLeft);\r\n const dateRight = toDate(dirtyDateRight);\r\n\r\n const yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\r\n const monthDiff = dateLeft.getMonth() - dateRight.getMonth();\r\n\r\n return yearDiff * 12 + monthDiff;\r\n }\r\n function differenceInYears(dirtyDateLeft, dirtyDateRight) {\r\n const dateLeft = toDate(dirtyDateLeft);\r\n const dateRight = toDate(dirtyDateRight);\r\n\r\n return dateLeft.getFullYear() - dateRight.getFullYear();\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 addHours,\r\n addDays,\r\n addWeeks,\r\n addMonths,\r\n addYears,\r\n subHours,\r\n subDays,\r\n subWeeks,\r\n subMonths,\r\n subYears,\r\n endOfWeek,\r\n startDayOfWeek,\r\n endOfMonth,\r\n startOfMonth,\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 differenceInDays,\r\n differenceInWeeks,\r\n differenceInMonths,\r\n differenceInYears,\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\r\n function removeHeaderOpacity() {\r\n var header = document.querySelector('.site-header');\r\n header.classList.remove('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 removeHeaderOpacity, \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 DOM.removeHeaderOpacity();\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 case 'fSS': {\r\n target = document.getElementById('fSSdiv');\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 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.DayServiceCaseLoad = 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.DemographicsUpdateRelationship = false;\r\n$.session.GoalsView = false;\r\n$.session.GoalsUpdate = false;\r\n$.session.InsertOutcomes = false;\r\n$.session.UpdateOutcomes = false;\r\n$.session.OutcomesReview = false;\r\n$.session.InsertServices = false;\r\n$.session.UpdateServices = false;\r\n$.session.UpdatePlan = false;\r\n$.session.ServiceActivityCaseLoad = 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.WorkshopCaseLoad = 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.anywhereFSSPermission = '';\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$.session.SingleEntryCaseLoad = 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$.session.incidentTrackingCaseLoad = false;\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\n$.session.RosterCaseLoad = 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$.session.authorizationsCaseLoad = 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$.session.PlanCaseLoad = 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$.session.WaitingListAssessmentCaseLoad = 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$.session.transportationCaseLoad = false;\r\n// eMAR\r\n$.session.emarView = false;\r\n$.session.emarCaseLoad = 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$.session.OODCaseLoad = false;\r\n$.session.OODInsertEmployers = 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$.session.ConsumerFinanceCaseLoad = false;\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$.session.EmploymentCaseLoad = false;\r\n$.session.consumerId = '';\r\n\r\n// FSS\r\n$.session.FSSView = false;\r\n$.session.FSSUpdate = false;\r\n$.session.FSSDelete = false;\r\n$.session.InsertFSS = false;\r\n$.session.FSSCaseLoad = false;\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.3';\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$.session.isActiveFamilies = true; // to get active and inactive families both\r\n$.session.activeModule = '';\r\n$.session.billableTransportation = 'N';\r\n$.session.requireTimeEntryTransportationTimes = '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' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.DayServiceCaseLoad = true;\r\n }\r\n }\r\n\r\n //Goals Permissions\r\n if (tmpWindow == 'Anywhere Service Activity' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.ServiceActivityCaseLoad = true;\r\n }\r\n if (tmpPerm == 'Update Plan') {\r\n $.session.UpdatePlan = true;\r\n }\r\n if (tmpPerm == 'Review') {\r\n $.session.OutcomesReview = true;\r\n }\r\n }\r\n\r\n //Single Entry Permissions\r\n if (tmpWindow == 'Anywhere Single Entry' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.SingleEntryCaseLoad = true;\r\n }\r\n }\r\n\r\n //Workshop Module\r\n if (tmpWindow == 'Anywhere Workshop' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.WorkshopCaseLoad = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere Case Notes' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#casenotessettingsdiv').removeClass('disabledModule');\r\n $.session.CaseNotesView = true;\r\n }\r\n if (tmpPerm == 'View Entered' || $.session.isPSI == true) {\r\n $.session.CaseNotesViewEntered = true;\r\n }\r\n if (tmpPerm == 'Update Entered' || $.session.isPSI == true) {\r\n $.session.CaseNotesUpdateEntered = true;\r\n }\r\n if (tmpPerm == 'Update') {\r\n $.session.CaseNotesUpdate = true;\r\n }\r\n if ($.session.isPSI == false && 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' || $.session.isPSI == true) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.RosterCaseLoad = true;\r\n }\r\n }\r\n //Demographics\r\n if (tmpWindow == 'Anywhere Demographics' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\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' || $.session.isPSI == true) {\r\n $.session.DemographicsRelationshipsView = true;\r\n }\r\n\r\n if (tmpPerm == 'View General' || $.session.isPSI == true) {\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' || $.session.isPSI == true) {\r\n $.session.DemographicsNotesView = true;\r\n }\r\n\r\n if (tmpPerm == 'View Attachments' || $.session.isPSI == true) {\r\n $.session.DemographicsViewAttachments = true;\r\n }\r\n\r\n if (tmpPerm == 'View Location Schedule' || $.session.isPSI == true) {\r\n $.session.viewLocationSchedulesKey = true;\r\n }\r\n if (tmpPerm == 'View DOB' || $.session.isPSI == true) {\r\n $.session.DemographicsViewDOB = true;\r\n }\r\n if (tmpPerm == 'View Medicaid Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewMedicaid = true;\r\n }\r\n if (tmpPerm == 'View Medicare Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewMedicare = true;\r\n }\r\n if (tmpPerm == 'View Resident Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewResident = true;\r\n }\r\n if (tmpPerm == 'View SSN' || $.session.isPSI == true) {\r\n $.session.DemographicsViewSSN = true;\r\n }\r\n if (tmpPerm == 'View Consumer Number' || $.session.isPSI == true) {\r\n $.session.DemographicsViewConsumerNumber = true;\r\n }\r\n if (tmpPerm == 'View Local ID' || $.session.isPSI == true) {\r\n $.session.DemographicsViewLocalId = true;\r\n }\r\n if (tmpPerm == 'Update Relationships') {\r\n $.session.DemographicsUpdateRelationship = true;\r\n }\r\n }\r\n\r\n //Incident Tracking Permissons\r\n if (tmpWindow == 'Anywhere Incident Tracking' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View Case Load' || $.session.isPSI == true) {\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' || $.session.isPSI == true) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.incidentTrackingCaseLoad = 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 == false) {\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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.PlanCaseLoad = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.authorizationsCaseLoad = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.WaitingListAssessmentCaseLoad = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.emarCaseLoad = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.transportationCaseLoad = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.OODCaseLoad = true;\r\n }\r\n if (tmpPerm == 'Insert Employers' || $.session.isPSI == true) {\r\n $.session.OODInsertEmployers = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.ConsumerFinanceCaseLoad = 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 if ($.session.isPSI == false && (tmpPerm == 'Case Load' || tmpPerm == 'Caseload' || tmpPerm == 'Caseload only')) {\r\n $.session.EmploymentCaseLoad = true;\r\n }\r\n }\r\n\r\n //FSS\r\n if (tmpWindow == 'Anywhere FSS' || $.session.isPSI == true) {\r\n if (tmpPerm == 'View' || $.session.isPSI == true) {\r\n $('#fSSdiv').removeClass('disabledModule');\r\n $.session.FSSView = true;\r\n }\r\n if (tmpPerm == 'Update' || $.session.isPSI == true) {\r\n $.session.FSSUpdate = true;\r\n }\r\n if (tmpPerm == 'Delete' || $.session.isPSI == true) {\r\n $.session.FSSDelete = true;\r\n }\r\n if (tmpPerm == 'Insert' || $.session.isPSI == true) {\r\n $.session.InsertFSS = true;\r\n }\r\n if ($.session.isPSI == false && tmpPerm == 'Case load') {\r\n $.session.FSSCaseLoad = true;\r\n }\r\n }\r\n\r\n if (tmpWindow == 'Anywhere User Home' || $.session.isPSI == true) {\r\n if (tmpPerm == 'Deny Staff TimeClock Change') {\r\n $.session.DenyStaffClockUpdate = true;\r\n }\r\n if (tmpPerm == 'View My Information' || $.session.isPSI == true) {\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' || $.session.isPSI == true) {\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 setSessionJQUERY(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\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.FSSView == false) {\r\n $('#fSSdiv').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 $('#fSSdiv').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 if ($.session.anywhereFSSPermission == 'Anywhere_FSS') {\r\n //Leave module on\r\n } else {\r\n $('#fSSdiv').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\nasync function md5Hash(password) {\r\n const encoder = new TextEncoder();\r\n const data = encoder.encode(password);\r\n\r\n const hashBuffer = await crypto.subtle.digest('MD5', data);\r\n const hashArray = Array.from(new Uint8Array(hashBuffer));\r\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\r\n\r\n return hashHex;\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 let locationNoticeText = document.createElement('div');\r\n locationNoticeText.innerHTML = `\r\n
\r\n

IMPORTANT - The Anywhere site must be allowed to access your location in order to send the security code. If you need help allowing location access in your browser, please click on one of the below links and search 'location access':


\r\n

\r\n Microsoft Edge - \r\n https://support.microsoft.com/en-us/microsoft-edge\r\n


\r\n

\r\n Google Chrome -\r\n https://support.google.com/chrome\r\n


\r\n

\r\n Apple Safari -
\r\n http://support.apple.com/safari\r\n

\r\n
\r\n `;\r\n\r\n messageDiv.appendChild(popupMessageText);\r\n messageDiv.appendChild(sendBtn);\r\n messageDiv.appendChild(locationNoticeText);\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.requireTimeEntryTransportationTimes = res.requireTimeEntryTransportationTimes;\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 $.session.anywhereFSSPermission = res.anywhereFSSPermission; \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 $.session.RequireViewPlan = res.RequireViewPlan === 'Y' ? true : false;\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","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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = assessmentEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Start Date\r\n headers[1].setAttribute('data-type', 'date'); // End Date\r\n headers[2].setAttribute('data-type', 'string'); // Methodology\r\n headers[3].setAttribute('data-type', 'string'); // Score \r\n headers[4].setAttribute('data-type', 'string'); // Beh mod \r\n headers[5].setAttribute('data-type', 'string'); // medicile mod\r\n headers[6].setAttribute('data-type', 'string'); // Dc Mod \r\n headers[7].setAttribute('data-type', 'string'); // CC Mod\r\n headers[8].setAttribute('data-type', 'date'); // Prior Auth Applied \r\n headers[9].setAttribute('data-type', 'date'); // Prior Auth Recieved\r\n headers[10].setAttribute('data-type', 'string'); // Prior Auth Amount \r\n\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n landingPage.appendChild(assessmentEntriesTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(assessmentEntriesTable);\r\n\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 headers = certificationEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Certification\r\n headers[1].setAttribute('data-type', 'date'); // Start Date\r\n headers[2].setAttribute('data-type', 'date'); // End Date \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\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(certificationEntriesTable); \r\n\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 dbaInput = input.build({\r\n id: 'dbaInput',\r\n type: 'text',\r\n label: 'Doing Business As',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].DBA,\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 dbaInput.classList.add('marginTop2Per');\r\n addNewCardBody.appendChild(dbaInput);\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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = userTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Name\r\n headers[1].setAttribute('data-type', 'string'); // DBA\r\n headers[2].setAttribute('data-type', 'string'); // DD Number\r\n headers[3].setAttribute('data-type', 'string'); // Local Number \r\n headers[4].setAttribute('data-type', 'string'); // Contact \r\n headers[5].setAttribute('data-type', 'string'); // Phone\r\n\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 // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 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', 'DBA', '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 var DBA = td.DBA;\r\n\r\n return {\r\n vendorID: vendorID,\r\n name: name,\r\n DBA: DBA,\r\n DDNumber: DDNumber,\r\n localNumber: localNumber,\r\n contact: contact,\r\n phone: phone,\r\n values: [name, DBA, 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 if (event.target.childNodes[0].innerText == undefined) return;\r\n var name = event.target.childNodes[0].innerText;\r\n var DDNum = event.target.childNodes[2].innerText;\r\n var localNum = event.target.childNodes[3].innerText;\r\n var phone = event.target.childNodes[5].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 DBA: consumer.DBA, \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 // Set the data type for each header, for sorting purposes\r\n const headers = locationReviewEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Location\r\n headers[1].setAttribute('data-type', 'string'); // Review Type\r\n headers[2].setAttribute('data-type', 'date'); // Due Date \r\n headers[3].setAttribute('data-type', 'date'); // Completed Date \r\n headers[4].setAttribute('data-type', 'string'); // Responsible Staff \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 = `
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\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(locationReviewEntriesTable); \r\n\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 headers = providerTypeEntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Provider Type\r\n headers[1].setAttribute('data-type', 'date'); // Start Date\r\n headers[2].setAttribute('data-type', 'date'); // End Date \r\n headers[3].setAttribute('data-type', 'string'); // Notes \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\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(providerTypeEntriesTable); \r\n\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\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'); // Funding Source\r\n headers[1].setAttribute('data-type', 'string'); // Service Code\r\n headers[2].setAttribute('data-type', 'string'); // Service Description \r\n\r\n table.populate(oTable, tableData);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable); \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 const headers = UCREntriesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Service\r\n headers[1].setAttribute('data-type', 'string'); // Group Size\r\n headers[2].setAttribute('data-type', 'string'); // Service Location \r\n headers[3].setAttribute('data-type', 'string'); // CDB Category \r\n headers[4].setAttribute('data-type', 'string'); // Assessment/ Acuity Score\r\n headers[5].setAttribute('data-type', 'date'); // Start Date\r\n headers[6].setAttribute('data-type', 'date'); // End Date \r\n headers[7].setAttribute('data-type', 'amount'); // UCR\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\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(UCREntriesTable); \r\n\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 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 // Set the data type for each header, for sorting purposes\r\n const headers = userTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // User Name\r\n headers[1].setAttribute('data-type', 'string'); // Last Name\r\n headers[2].setAttribute('data-type', 'string'); // First Name \r\n \r\n DOM.ACTIONCENTER.appendChild(topNav); \r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 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","","//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 });//test\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 let backPage;\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 backPage = 1; \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 async function loadCFEditFromAccountRegister(Consumers) { \r\n setActiveModuleAttribute('CFEditAccount');\r\n backPage = 2;\r\n DOM.clearActionCenter();\r\n selectedConsumers = Consumers;\r\n page = 'Update';\r\n load = 1; \r\n await loadCFEditLanding();\r\n DOM.toggleNavLayout();\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 () => {\r\n if (backPage == 1) \r\n cancleAccount();\r\n else {\r\n ConsumerFinances.backFromConsumerFinanceEditAccount(selectedConsumers); \r\n }\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 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 loadCFEditFromAccountRegister,\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 async function backFromConsumerFinanceEditAccount(Consumers) { \r\n setActiveModuleAttribute('ConsumerFinances'); \r\n DOM.clearActionCenter();\r\n selectedConsumers = Consumers;\r\n filterValues = undefined;\r\n await loadConsumerFinanceLanding();\r\n DOM.toggleNavLayout(); \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\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', 'date'); // Date\r\n headers[1].setAttribute('data-type', 'string'); // Account\r\n headers[2].setAttribute('data-type', 'string'); // Payee\r\n headers[3].setAttribute('data-type', 'string'); // Category \r\n headers[4].setAttribute('data-type', 'amount'); // Amount \r\n headers[5].setAttribute('data-type', 'string'); // Check No\r\n headers[6].setAttribute('data-type', 'amount'); // Balance \r\n headers[7].setAttribute('data-type', 'string'); // Enter By \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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 const editButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '32%';\r\n entryButtonBar.style.width = '32%';\r\n editButtonBar.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 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 () => {\r\n if (!entryBtn.classList.contains('disabled')) { \r\n NewEntryCF.init()\r\n }\r\n },\r\n });\r\n\r\n const editAccountBtn = button.build({\r\n text: 'Edit Accounts',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => { \r\n if (!editAccountBtn.classList.contains('disabled')) { \r\n CFEditAccount.loadCFEditFromAccountRegister(selectedConsumers)\r\n }\r\n },\r\n });\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\r\n if ($.session.CFViewEditAccounts) {\r\n editAccountBtn.classList.remove('disabled');\r\n }\r\n else {\r\n editAccountBtn.classList.add('disabled');\r\n }\r\n\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%'; \r\n editAccountBtn.style.height = '50px';\r\n editAccountBtn.style.minWidth = '100%'; \r\n\r\n buildNewFilterBtn();\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n editButtonBar.appendChild(editAccountBtn);\r\n editButtonBar.style.marginLeft = '2%';\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '2%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(editButtonBar); \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 backFromConsumerFinanceEditAccount,\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 // Set the data type for each header, for sorting purposes\r\n const headers = checklistTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Time\r\n headers[1].setAttribute('data-type', 'string'); // Location\r\n headers[2].setAttribute('data-type', 'string'); //Setting\r\n\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(checklistTable);\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})();","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 appendAddMessageButton(widgetId, btnId) {\r\n var addMessageBtn = document.getElementById(btnId);\r\n if (!addMessageBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n addMessageBtn = button.build({\r\n id: btnId,\r\n text: 'New',\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'add',\r\n iconPos: 'right',\r\n callback: function () { \r\n linksAndMessages.buildAddMessagePopup(); \r\n }, \r\n });\r\n widgetHeader.appendChild(addMessageBtn);\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 appendAddMessageButton,\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 = $(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 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 if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') { } else {\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n } \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 if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') {\r\n defaultVal = 'CAS'; \r\n } else {\r\n defaultVal = !filterGroupID || filterGroupID === '%' ? 'ALL' : filterGroupID;\r\n } \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 var isDisabld = false;\r\n if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') {\r\n isDisabld = true;\r\n }\r\n\r\n filterGroupDropdown = dropdown.build({\r\n dropdownId: 'dsGroupDropdown',\r\n label: 'Group',\r\n style: 'secondary',\r\n readonly: isDisabld, \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 \r\n if ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices') {\r\n selectedGroupName = 'Caseload'; \r\n temp__groupID = 'CAS';\r\n } else {\r\n selectedGroupName = 'Everyone';\r\n }\r\n \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","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\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'); // Employer\r\n headers[1].setAttribute('data-type', 'string'); // Address\r\n headers[2].setAttribute('data-type', 'string'); // City\r\n headers[3].setAttribute('data-type', 'string'); // State \r\n headers[4].setAttribute('data-type', 'number'); // Zip Code \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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\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'); // Employer\r\n headers[1].setAttribute('data-type', 'string'); // Position\r\n headers[2].setAttribute('data-type', 'date'); // Position start \r\n headers[3].setAttribute('data-type', 'date'); // Position End \r\n headers[4].setAttribute('data-type', 'string'); // Job Standing \r\n\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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\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', 'number'); // Task\r\n headers[1].setAttribute('data-type', 'string'); // Description\r\n headers[2].setAttribute('data-type', 'date'); // Start Date\r\n headers[3].setAttribute('data-type', 'date'); // End Date\r\n headers[4].setAttribute('data-type', 'string'); // Initial Performance\r\n headers[5].setAttribute('data-type', 'string'); // Initial Performance Notes\r\n headers[6].setAttribute('data-type', 'string'); // Employer Standard\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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\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', 'number'); // Avg Hours Per Week\r\n headers[1].setAttribute('data-type', 'amount'); // Avg Wages Per Week \r\n headers[2].setAttribute('data-type', 'date'); // Start Date\r\n headers[3].setAttribute('data-type', 'date'); // End Date \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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 let totalHours;\r\n let messagetext;\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 totalHours = ScheduleEntries.getWorkScheduleEntriesResult[0].totalHours;\r\n }\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 const totalHourDiv = document.createElement(\"div\");\r\n totalHourDiv.classList.add(\"totalHour\"); \r\n totalHourDiv.innerHTML = `
    Total Hours: ${totalHours}
    `;\r\n addNewCardBody.appendChild(totalHourDiv); \r\n\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\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'); // Day Of Week\r\n headers[1].setAttribute('data-type', 'date'); // Start Time\r\n headers[2].setAttribute('data-type', 'date'); //End Date \r\n headers[3].setAttribute('data-type', 'number'); // Hours \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n \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 messagetext = document.getElementById('confirmMessage'); \r\n messagetext.innerHTML = ``; \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 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 EditFamilies = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let INACTIVE_CHKBOX;\r\n let familyTableData = [];\r\n let tempfamilyTableData = [];\r\n let displayedUsers = [];\r\n var userTable;\r\n var isChecked;\r\n\r\n function init() {\r\n setActiveModuleAttribute('FSS');\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = userTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Family Name\r\n headers[1].setAttribute('data-type', 'string'); // Address\r\n headers[2].setAttribute('data-type', 'number'); // Phone \r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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.isActiveFamilies;\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 viewEditFamilyBtn() {\r\n return button.build({\r\n text: 'View/Edit Family',\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.isActiveFamilies,\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: ['Name', 'Address', 'Primary Phone'],\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 //populate\r\n function populateTable(results, IsFirstLoad) {\r\n familyTableData = results.map(td => {\r\n var familyId = td.familyId;\r\n var primaryPhone = td.primaryPhone;\r\n var familyName = td.familyName;\r\n var address = td.address;\r\n var Active = td.active;\r\n\r\n const additionalInformation = viewEditFamilyBtn();\r\n additionalInformation.innerHTML = 'View/Edit Family';\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\r\n return {\r\n id: familyId,\r\n endIcon: additionalInformation.outerHTML,\r\n secondendIcon: activeCheckbox.outerHTML,\r\n FamilyName: familyName,\r\n Address: address,\r\n PrimaryPhone: primaryPhone,\r\n Active: Active,\r\n values: [familyName, address, primaryPhone],\r\n attributes: [\r\n { key: 'data-status', value: Active },\r\n { key: 'familyId', value: familyId },\r\n ],\r\n endIconCallback: e => {\r\n EditFamilyHeader.refreshFamily(familyId, familyName);\r\n },\r\n secondendIconCallback: e => {\r\n },\r\n };\r\n });\r\n if (IsFirstLoad) {\r\n tempfamilyTableData = familyTableData;\r\n }\r\n table.populate(userTable, familyTableData, 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.isActiveFamilies = 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 tableUserSearch(searchValue) {\r\n\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n tempfamilyTableData.forEach(consumer => {\r\n var familyName = consumer.FamilyName.toLowerCase();\r\n var address = consumer.Address.toLowerCase();\r\n var primaryPhone = consumer.PrimaryPhone.toLowerCase();\r\n var fullName = `${familyName} ${address} ${primaryPhone}`;\r\n var fullNameReversed = `${address} ${familyName} ${primaryPhone}`;\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 familyId: consumer.id,\r\n familyName: consumer.FamilyName,\r\n address: consumer.Address,\r\n primaryPhone: consumer.PrimaryPhone,\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 FSSAjax.getActiveInactiveFamilylist(\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 EditFamilyHeader = (function () {\r\n let familyID;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let name;\r\n let tabPositionIndex;\r\n\r\n const sections = [\r\n {\r\n title: 'Family',\r\n id: 0,\r\n markup: () => EditFamilyInformation.getMarkup(),\r\n },\r\n {\r\n title: 'Members',\r\n id: 1,\r\n markup: () => EditMembers.getMarkup(),\r\n }, \r\n ];\r\n\r\n async function refreshFamily(FamilyId, Name, TabPosition = 0) {\r\n familyID = FamilyId;\r\n name = Name;\r\n tabPositionIndex = TabPosition;\r\n\r\n DOM.clearActionCenter();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('familyBtnWrap');\r\n const heading = document.createElement('div');\r\n const head = document.createElement('div');\r\n\r\n const ispWrap = document.createElement('div');\r\n ispWrap.id = 'planISP';\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 () => { EditFamilies.init(); }, \r\n });\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n heading.innerHTML = `

    ${name}

    `;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\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 (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 EditFamilyInformation.init(familyID, name);\r\n await EditMembers.init(familyID, name);\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 refreshFamily,\r\n getMarkup,\r\n };\r\n})();\r\n","const EditFamilyInformation = (() => {\r\n let getFamilyInfoByID = [];\r\n let familyID;\r\n let headingName;\r\n let IsValueChanged = false;\r\n\r\n let familyName;\r\n let address1;\r\n let address2;\r\n let city; \r\n let state;\r\n let zip;\r\n let primaryPhone;\r\n let secondaryPhone;\r\n let email;\r\n let notes;\r\n let active; \r\n\r\n\r\n async function init(familyId, name) {\r\n familyID = familyId;\r\n headingName = name;\r\n\r\n if (familyID != undefined) {\r\n getFamilyInfoByID = await FSSAjax.getFamilyInfoByID(familyID);\r\n }\r\n\r\n }\r\n\r\n function getMarkup() {\r\n const familyInfoWrap = document.createElement('div');\r\n familyInfoWrap.classList.add('planSummary');\r\n const importantTables = buildFamilyForm();\r\n familyInfoWrap.appendChild(importantTables);\r\n return familyInfoWrap;\r\n }\r\n\r\n function buildFamilyForm() {\r\n\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n familyName = getFamilyInfoByID.getFamilyInfoByIDResult[0].familyName;\r\n address1 = getFamilyInfoByID.getFamilyInfoByIDResult[0].address1;\r\n address2 = getFamilyInfoByID.getFamilyInfoByIDResult[0].address2;\r\n city = getFamilyInfoByID.getFamilyInfoByIDResult[0].city;\r\n state = getFamilyInfoByID.getFamilyInfoByIDResult[0].state;\r\n zip = getFamilyInfoByID.getFamilyInfoByIDResult[0].zip;\r\n primaryPhone = getFamilyInfoByID.getFamilyInfoByIDResult[0].primaryPhone;\r\n secondaryPhone = getFamilyInfoByID.getFamilyInfoByIDResult[0].secondaryPhone;\r\n email = getFamilyInfoByID.getFamilyInfoByIDResult[0].email;\r\n notes = getFamilyInfoByID.getFamilyInfoByIDResult[0].notes;\r\n active = getFamilyInfoByID.getFamilyInfoByIDResult[0].active;\r\n\r\n\r\n familyNameInput = input.build({\r\n id: 'familyNameInput',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (familyName) ? familyName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n type: 'text',\r\n label: 'Address1',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (address1) ? address1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n id: 'address2Input',\r\n type: 'text',\r\n label: 'Address2',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (address2) ? address2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n type: 'text',\r\n label: 'City',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (city) ? city : '',\r\n });\r\n\r\n stateInput = input.build({\r\n id: 'stateInput',\r\n type: 'text',\r\n label: 'State',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (state) ? state : '',\r\n });\r\n\r\n zipInput = input.build({\r\n id: 'zipInput',\r\n type: 'text',\r\n label: 'Zip',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (zip) ? zip : '',\r\n });\r\n\r\n primaryPhoneInput = input.build({\r\n id: 'primaryPhoneInput',\r\n type: 'number',\r\n label: 'Primary Phone',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (primaryPhone) ? primaryPhone : '',\r\n });\r\n\r\n secondaryPhoneInput = input.build({\r\n id: 'secondaryPhoneInput',\r\n type: 'number',\r\n label: 'Secondary Phone',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (secondaryPhone) ? secondaryPhone : '',\r\n });\r\n\r\n activeChk = input.buildCheckbox({\r\n text: 'Active?',\r\n id: 'activeChk',\r\n isChecked: active == 'Y' ? true : false,\r\n readonly: $.session.FSSUpdate == true ? false : true,\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 readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (email) ? email : '',\r\n });\r\n\r\n notesInput = input.build({\r\n id: 'notesInput',\r\n label: 'Notes',\r\n type: 'text',\r\n style: 'secondary',\r\n readonly: $.session.FSSUpdate == true ? false : true,\r\n value: (notes) ? notes : '',\r\n });\r\n\r\n // Save button\r\n SAVE_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n readonly: $.session.FSSUpdate == true ? false : true,\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 () => { EditFamilies.init() },\r\n });\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 = `
    Family
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const familyBtnWrap = document.createElement('div');\r\n familyBtnWrap.classList.add('familyDTWrap');\r\n familyNameInput.classList.add('width65Per');\r\n familyBtnWrap.appendChild(familyNameInput);\r\n activeChk.classList.add('width32Per');\r\n familyBtnWrap.appendChild(activeChk);\r\n addNewCardBody.appendChild(familyBtnWrap);\r\n\r\n const addressNameDisplay = document.createElement(\"p\");\r\n addressNameDisplay.classList.add(\"heading\");\r\n addressNameDisplay.innerHTML = `${'Address Information'}`;\r\n addressNameDisplay.style.marginLeft = '10px';\r\n addressNameDisplay.style.marginBottom = '15px';\r\n addNewCardBody.appendChild(addressNameDisplay);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(LineBr);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('familyDTWrap');\r\n address1Input.classList.add('width32Per');\r\n dropWrap.appendChild(address1Input);\r\n address2Input.classList.add('width32Per');\r\n dropWrap.appendChild(address2Input);\r\n cityInput.classList.add('width32Per');\r\n dropWrap.appendChild(cityInput);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('familyDTWrap');\r\n stateInput.classList.add('width32Per');\r\n drWrap.appendChild(stateInput);\r\n zipInput.classList.add('width32Per');\r\n drWrap.appendChild(zipInput);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Contact 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('familyDTWrap');\r\n primaryPhoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(primaryPhoneInput);\r\n secondaryPhoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(secondaryPhoneInput);\r\n emailInput.classList.add('width32Per');\r\n infoWrap.appendChild(emailInput);\r\n addNewCardBody.appendChild(infoWrap);\r\n\r\n addNewCardBody.appendChild(notesInput);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('familyBtnWrap');\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 employeeInfoDiv.appendChild(column1);\r\n checkRequiredFieldsOfEmployeeInfo(familyName);\r\n\r\n return employeeInfoDiv;\r\n }\r\n\r\n function getRequiredFieldsOfEmployeeInfo() {\r\n var familyName = familyNameInput.querySelector('#familyNameInput');\r\n checkRequiredFieldsOfEmployeeInfo(familyName.value)\r\n }\r\n\r\n function checkRequiredFieldsOfEmployeeInfo(familyName) {\r\n if (familyName === '') {\r\n familyNameInput.classList.add('error');\r\n } else {\r\n familyNameInput.classList.remove('error');\r\n }\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 return;\r\n } else {\r\n if (IsValueChanged == true) {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n familyNameInput.addEventListener('input', event => {\r\n familyName = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n address1Input.addEventListener('input', event => {\r\n address1 = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n address2Input.addEventListener('input', event => {\r\n address2 = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n cityInput.addEventListener('input', event => {\r\n city = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n zipInput.addEventListener('input', event => {\r\n zip = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n stateInput.addEventListener('input', event => {\r\n state = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n primaryPhoneInput.addEventListener('input', event => {\r\n primaryPhone = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n secondaryPhoneInput.addEventListener('input', event => {\r\n secondaryPhone = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n activeChk.addEventListener('change', event => {\r\n active = event.target.checked == true ? 'Y' : 'N';\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n emailInput.addEventListener('input', event => {\r\n email = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n notesInput.addEventListener('input', event => {\r\n notes = event.target.value;\r\n IsValueChanged = true;\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n }\r\n\r\n async function saveEmployeeInfo() {\r\n\r\n await FSSAjax.updateFamilyInfo({\r\n token: $.session.Token,\r\n familyName: familyName,\r\n address1: address1,\r\n address2: address2,\r\n city: city,\r\n state: state,\r\n zip: zip,\r\n primaryPhone: primaryPhone,\r\n secondaryPhone: secondaryPhone,\r\n email: email,\r\n notes: notes,\r\n active: active,\r\n userId: $.session.UserId,\r\n familyID: familyID\r\n });\r\n\r\n EditFamilyHeader.refreshFamily(familyID, familyName, tabPositionIndex = 0);\r\n\r\n }\r\n\r\n return {\r\n init,\r\n buildFamilyForm,\r\n getMarkup,\r\n };\r\n})(); ","const EditMembers = (() => {\r\n\r\n let memberEntriesTable;\r\n let familyID;\r\n let familyEntries;\r\n let headingName;\r\n let name;\r\n let nameOfEvent;\r\n let memberName;\r\n var isActive;\r\n var memberId;\r\n let addEditMemberPopup;\r\n var newMemberId;\r\n\r\n async function init(familyId, name) {\r\n familyID = familyId;\r\n headingName = name;\r\n\r\n if (familyID != undefined) {\r\n familyEntries = await FSSAjax.getFamilyMembers(familyID);\r\n }\r\n }\r\n\r\n function getMarkup() {\r\n const memberWrap = document.createElement('div');\r\n memberWrap.classList.add('planSummary');\r\n const importantTables = buildNewMemberForm();\r\n memberWrap.appendChild(importantTables);\r\n return memberWrap;\r\n }\r\n\r\n function buildNewMemberForm() {\r\n const workScheduleDiv = document.createElement('div');\r\n workScheduleDiv.classList.add('additionalQuestionWrap');\r\n\r\n const newMemberBtn = button.build({\r\n text: '+ ADD FAMILY MEMBER',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => addMemberPopup(0,0, 'Add')\r\n });\r\n memberEntriesTable = buildmemberEntriesTable();\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 = `
    Family Members
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n if ($.session.EmploymentUpdate) {\r\n addNewCardBody.appendChild(newMemberBtn);\r\n }\r\n addNewCardBody.appendChild(memberEntriesTable);\r\n workScheduleDiv.appendChild(column1);\r\n return workScheduleDiv;\r\n }\r\n\r\n\r\n function buildmemberEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'employmentWorkScheduleTable',\r\n columnHeadings: ['Family Member', 'Active?'],\r\n endIcon: $.session.FSSUpdate == true ? true : false,\r\n };\r\n\r\n let tableData = familyEntries.getFamilyMembersResult.map((entry) => ({\r\n values: [entry.memberName, entry.active == 'Y' ? 'Yes' : 'No'],\r\n attributes: [{ key: 'familyId', value: entry.familyId }],\r\n onClick: (e) => {\r\n addMemberPopup(entry.familyId, entry.memberId, 'Edit')\r\n },\r\n endIcon: `${icons['delete']}`,\r\n endIconCallback: (e) => {\r\n deleteMemberPOPUP(entry.familyId, entry.memberId);\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'); // Family Member\r\n headers[1].setAttribute('data-type', 'string'); // Active\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function deleteMemberPOPUP(familyId, memberId) {\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 deleteMember(familyId, memberId, 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 Member?';\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 deleteMember(familyId, memberId, confirmPopup) {\r\n FSSAjax.deleteMemberInfo(\r\n {\r\n token: $.session.Token,\r\n memberId: memberId,\r\n familyID: familyID\r\n }\r\n );\r\n POPUP.hide(confirmPopup);\r\n EditFamilyHeader.refreshFamily(familyID, headingName, tabPositionIndex = 1);\r\n }\r\n\r\n function addMemberPopup(familyId, memberIdd, eventName) {\r\n if (eventName == 'Add') {\r\n memberName = '';\r\n isActive = 'Y';\r\n memberId = '';\r\n newMemberId = '';\r\n }\r\n else {\r\n let memberValues = familyEntries.getFamilyMembersResult.find(x => x.familyId == familyId && x.memberId == memberIdd);\r\n memberName = memberValues.memberName;\r\n isActive = memberValues.active;\r\n memberId = memberValues.memberId;\r\n newMemberId = memberValues.memberId;\r\n }\r\n addEditMemberPopup = 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 Family Member';\r\n memberId = memberId;\r\n }\r\n else {\r\n heading.innerText = 'Add Family Member';\r\n memberId = '0';\r\n }\r\n\r\n // dropdowns & inputs\r\n memberDropdown = dropdown.build({\r\n id: 'memberDropdown',\r\n label: \"Family Member\",\r\n dropdownId: \"memberDropdown\",\r\n value: (memberId) ? memberId : '',\r\n });\r\n\r\n const yesActiveRadio = input.buildRadio({\r\n id: 'yesActiveRadio',\r\n text: \"Yes\",\r\n name: \"activeChk\",\r\n isChecked: true,\r\n })\r\n const noActiveRadio = input.buildRadio({\r\n id: 'noActiveRadio',\r\n text: \"No\",\r\n name: \"activeChk\",\r\n })\r\n\r\n const radioDiv = document.createElement('div')\r\n radioDiv.classList.add('radioDiv')\r\n radioDiv.appendChild(yesActiveRadio)\r\n radioDiv.appendChild(noActiveRadio)\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 addEditMemberPopup.appendChild(heading);\r\n addEditMemberPopup.appendChild(memberDropdown);\r\n\r\n const active = document.createElement('h3');\r\n active.innerText = 'Active?';\r\n\r\n var timebtnWrap = document.createElement('div');\r\n timebtnWrap.classList.add('btnWrap');\r\n active.style.marginLeft = '1%';\r\n active.style.width = '48%';\r\n timebtnWrap.appendChild(active);\r\n radioDiv.style.marginLeft = '2%';\r\n radioDiv.style.width = '48%';\r\n timebtnWrap.appendChild(radioDiv);\r\n addEditMemberPopup.appendChild(timebtnWrap);\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 addEditMemberPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addEditMemberPopup);\r\n PopupEventListeners();\r\n populateMemberDropdown(memberId);\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n memberDropdown.addEventListener('change', event => {\r\n newMemberId = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n yesActiveRadio.addEventListener('change', event => {\r\n isActive = 'Y';\r\n });\r\n noActiveRadio.addEventListener('change', event => {\r\n isActive = 'N';\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewMemberPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addEditMemberPopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var memberNm = memberDropdown.querySelector('#memberDropdown');\r\n\r\n if (memberNm.value === '') {\r\n memberDropdown.classList.add('errorPopup');\r\n } else {\r\n memberDropdown.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 async function populateMemberDropdown(memberId) {\r\n const {\r\n getMembersResult: Members,\r\n } = await FSSAjax.getMembers();\r\n let data = Members.map((members) => ({\r\n id: members.memberId,\r\n value: members.memberId,\r\n text: members.memberName\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"memberDropdown\", data, memberId);\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n async function saveNewMemberPopup() {\r\n\r\n\r\n await FSSAjax.insertMemberInfo({\r\n token: $.session.Token,\r\n memberId: memberId,\r\n familyID: familyID,\r\n active: isActive,\r\n userId: $.session.UserId,\r\n newMemberId: newMemberId,\r\n });\r\n POPUP.hide(addEditMemberPopup);\r\n EditFamilyHeader.refreshFamily(familyID, headingName, tabPositionIndex = 1);\r\n\r\n\r\n }\r\n\r\n return {\r\n init,\r\n buildNewMemberForm,\r\n getMarkup,\r\n };\r\n})(); ","const FSS = (() => {\r\n //Inputs\r\n var selectedConsumer;\r\n let fSSData;\r\n //filter\r\n let filterValues;\r\n let newFilterValues;\r\n let editFamily;\r\n let filesList = [];\r\n let backBtn;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n //--\r\n let filterPopup;\r\n let address;\r\n let applyFilterBtn;\r\n let btnWrap;\r\n let familyNameBtnWrap;\r\n let primaryPhoneBtnWrap;\r\n let addressBtnWrap;\r\n let coPayVal;\r\n let allocationVal;\r\n let fundingSourceVal;\r\n let startDateVal;\r\n let endDateVal;\r\n let authorizationPopup;\r\n let UtilizationPopup\r\n let encumberedInputsVal;\r\n let familyMemberDropdownVal;\r\n let serviceCodeDropdownVal;\r\n let paidAmountInputsVal;\r\n let vendorDropdownVal;\r\n let datePaidVal;\r\n let selectedConsumersId;\r\n //--\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 switch (targetAction) {\r\n case 'miniRosterDone': {\r\n var activeConsumers = roster2.getActiveConsumers();\r\n selectedConsumer = activeConsumers[activeConsumers.length - 1];\r\n selectedConsumersId = activeConsumers[activeConsumers.length - 1].id;\r\n await loadFSSLanding();\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 async function loadFSSLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n initFilterValues();\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 const addInsertServicesBtnWrap = document.createElement('div');\r\n addInsertServicesBtnWrap.classList.add('addInsertServicesBtnWrap');\r\n backbtnWrap.appendChild(addInsertServicesBtnWrap);\r\n\r\n filteredByData = buildFilteredByData();\r\n editFamily = editFamiliesButton();\r\n backBtn = backButton();\r\n addInsertServicesBtnWrap.appendChild(editFamily);\r\n\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.FSSUpdate == true) {\r\n editFamily.classList.remove('disabled');\r\n } else {\r\n editFamily.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 fSSData = await FSSAjax.getFSSPageData({\r\n token: $.session.Token,\r\n familyName: filterValues.familyName,\r\n primaryPhone: filterValues.primaryPhone,\r\n address: filterValues.address,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n buildOverviewTable();\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n wrap.appendChild(selectedConsumer.card);\r\n return wrap;\r\n }\r\n\r\n function initFilterValues() {\r\n filterValues = {\r\n familyName: '%',\r\n primaryPhone: '%',\r\n address: '%',\r\n };\r\n }\r\n\r\n function buildFilteredByData() {\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 if (filterValues.familyName === '%') {\r\n btnWrap.appendChild(familyNameBtnWrap);\r\n btnWrap.removeChild(familyNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(familyNameBtnWrap);\r\n if (document.getElementById('familyNameBtn') != null)\r\n document.getElementById('familyNameBtn').innerHTML = 'Family Name: ' + filterValues.familyName;\r\n }\r\n\r\n if (filterValues.primaryPhone === '%') {\r\n btnWrap.appendChild(primaryPhoneBtnWrap);\r\n btnWrap.removeChild(primaryPhoneBtnWrap);\r\n } else {\r\n btnWrap.appendChild(primaryPhoneBtnWrap);\r\n if (document.getElementById('primaryPhoneBtn') != null)\r\n document.getElementById('primaryPhoneBtn').innerHTML = ' Primary Phone: ' + filterValues.primaryPhone;\r\n }\r\n\r\n if (filterValues.address === '%') {\r\n btnWrap.appendChild(addressBtnWrap);\r\n btnWrap.removeChild(addressBtnWrap);\r\n } else {\r\n btnWrap.appendChild(addressBtnWrap);\r\n if (document.getElementById('addressBtn') != null)\r\n document.getElementById('addressBtn').innerHTML = 'Address: ' + filterValues.address;\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 familyNameBtn = button.build({\r\n id: 'familyNameBtn',\r\n text: 'Family Name: ' + filterValues.familyName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('familyNameBtn');\r\n },\r\n });\r\n familyNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('familyNameBtn');\r\n },\r\n });\r\n\r\n primaryPhoneBtn = button.build({\r\n id: 'primaryPhoneBtn',\r\n text: 'Primary Phone: ' + filterValues.primaryPhone,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('primaryPhoneBtn');\r\n },\r\n });\r\n\r\n primaryPhoneCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('primaryPhoneBtn');\r\n },\r\n });\r\n\r\n addressBtn = button.build({\r\n id: 'addressBtn',\r\n text: 'Import Date: ' + filterValues.address,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('addressBtn');\r\n },\r\n });\r\n\r\n addressCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('addressBtn');\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 familyNameBtnWrap = document.createElement('div');\r\n familyNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n familyNameBtnWrap.appendChild(familyNameBtn);\r\n familyNameBtnWrap.appendChild(familyNameCloseBtn);\r\n btnWrap.appendChild(familyNameBtnWrap);\r\n\r\n primaryPhoneBtnWrap = document.createElement('div');\r\n primaryPhoneBtnWrap.classList.add('filterSelectionBtnWrap');\r\n primaryPhoneBtnWrap.appendChild(primaryPhoneBtn);\r\n primaryPhoneBtnWrap.appendChild(primaryPhoneCloseBtn);\r\n btnWrap.appendChild(primaryPhoneBtnWrap);\r\n\r\n addressBtnWrap = document.createElement('div');\r\n addressBtnWrap.classList.add('filterSelectionBtnWrap');\r\n addressBtnWrap.appendChild(addressBtn);\r\n addressBtnWrap.appendChild(addressCloseBtn);\r\n btnWrap.appendChild(addressBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'familyNameBtn') {\r\n newFilterValues.familyName = '%';\r\n }\r\n if (closeFilter == 'primaryPhoneBtn') {\r\n newFilterValues.primaryPhone = '%';\r\n }\r\n if (closeFilter == 'addressBtn') {\r\n newFilterValues.address = '%';\r\n }\r\n applyFilter();\r\n }\r\n\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n // Inputs\r\n familyNameInput = input.build({\r\n type: 'text',\r\n label: 'Family Name',\r\n style: 'secondary',\r\n value: filterValues.familyName == '%' ? '' : filterValues.familyName,\r\n });\r\n\r\n primaryPhoneInput = input.build({\r\n type: 'text',\r\n label: 'Primary Phone',\r\n style: 'secondary',\r\n value: filterValues.primaryPhone == '%' ? '' : filterValues.primaryPhone,\r\n });\r\n\r\n addressInput = input.build({\r\n type: 'text',\r\n label: 'Address',\r\n style: 'secondary',\r\n value: filterValues.address == '%' ? '' : filterValues.address,\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 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 == 'familyNameBtn') filterPopup.appendChild(familyNameInput);\r\n if (IsShow == 'ALL' || IsShow == 'primaryPhoneBtn') filterPopup.appendChild(primaryPhoneInput);\r\n if (IsShow == 'ALL' || IsShow == 'addressBtn') filterPopup.appendChild(addressInput);\r\n filterPopup.appendChild(btnFilterWrap);\r\n\r\n POPUP.show(filterPopup);\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n familyNameInput.addEventListener('input', event => {\r\n newFilterValues.familyName = event.target.value;\r\n });\r\n\r\n primaryPhoneInput.addEventListener('input', event => {\r\n newFilterValues.primaryPhone = event.target.value;\r\n });\r\n\r\n addressInput.addEventListener('input', event => {\r\n newFilterValues.address = event.target.value;\r\n });\r\n\r\n applyFilterBtn.addEventListener('click', async e => {\r\n if (!applyFilterBtn.classList.contains('disabled')) {\r\n applyFilter();\r\n POPUP.hide(filterPopup);\r\n }\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 fSSData = await FSSAjax.getFSSPageData({\r\n token: $.session.Token,\r\n familyName: filterValues.familyName,\r\n primaryPhone: filterValues.primaryPhone,\r\n address: filterValues.address,\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 editFamiliesButton() {\r\n return button.build({\r\n text: 'Edit Families',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: async () => {\r\n if (!editFamily.classList.contains('disabled')) {\r\n EditFamilies.init();\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 roster2.clearSelectedConsumers();\r\n roster2.clearActiveConsumers();\r\n FSS.init()\r\n },\r\n });\r\n }\r\n\r\n\r\n function buildOverviewTable() {\r\n groupChildData();\r\n groupSubChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('fssTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('fssTable__header');\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Family Name
    \r\n
    Address
    \r\n
    Primary Phone
    \r\n
    Notes
    \r\n
    \r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n fSSData.pageDataParent.forEach(parent => {\r\n const familyID = parent.familyId;\r\n var eventName;\r\n const notes = parent.notes == null ? '' : parent.notes;\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('fssTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('fssTable__mainDataRow', 'fssTable__dataRow');\r\n mainDataRow.value = parent.familyId;\r\n const endIcon = document.createElement('div');\r\n endIcon.classList.add('fssTable__endIcon');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('fssTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = ` \r\n
    ${parent.familyName}
    \r\n
    ${parent.address}
    \r\n
    ${parent.primaryPhone}
    \r\n
    ${notes}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n if ($.session.FSSUpdate == 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('fssTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('fssTable__subHeader');\r\n subHeading.innerHTML = `\r\n
    \r\n
    Start Date
    \r\n
    End Date
    \r\n
    Co-Pay %
    \r\n
    Allocation
    \r\n
    Encumbered
    \r\n
    Amt. Paid
    \r\n
    Balance
    \r\n
    Funding
    \r\n
    \r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (fSSData.pageDataChild[familyID]) {\r\n fSSData.pageDataChild[familyID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n fSSData.pageDataChild[familyID].forEach(child => {\r\n const fundingSourceID = child.fundingSourceID;\r\n const fID = child.familyId;\r\n const authId = child.authId;\r\n const encumbered = child.encumbered == null ? '0.0' : child.encumbered;\r\n const amtPaid = child.amtPaid == null ? '0.0' : child.amtPaid;\r\n const subDataRow = document.createElement('div');\r\n var startDate =\r\n child.startDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.startDate.split('T')[0]));\r\n var endDate =\r\n child.endDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.endDate.split('T')[0]));\r\n subDataRow.classList.add('fssTable__subDataRow', 'fssTable__dataRow');\r\n const endIconSub = document.createElement('div');\r\n endIconSub.classList.add('fssTable__endIcon');\r\n const toggleIconSub = document.createElement('div');\r\n toggleIconSub.id = 'authToggle';\r\n toggleIconSub.classList.add('fssTable__endIcon');\r\n toggleIconSub.innerHTML = icons['keyArrowRight'];\r\n\r\n subDataRow.innerHTML = `\r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n
    ${child.coPay}
    \r\n
    ${child.allocation}
    \r\n
    ${encumbered}
    \r\n
    ${amtPaid}
    \r\n
    ${child.balance}
    \r\n
    ${child.funding}
    \r\n\r\n `;\r\n subDataRow.prepend(toggleIconSub);\r\n if ($.session.FSSUpdate == true) {\r\n endIconSub.innerHTML = icons['add'];\r\n } else {\r\n endIconSub.innerHTML = `
    `;\r\n }\r\n subDataRow.appendChild(endIconSub);\r\n subRowWrap.appendChild(subDataRow);\r\n\r\n endIconSub.addEventListener('click', e => {\r\n addFamilyUtilization(child.familyId, child.authId, fundingSourceID);\r\n });\r\n\r\n // SUB CHILD ROWS\r\n //---------------------------------\r\n const subChildRowWrap = document.createElement('div');\r\n subChildRowWrap.classList.add('fssTable__subChildRowWrap');\r\n\r\n const subChildHeading = document.createElement('div');\r\n subChildHeading.classList.add('fssTable__subChildHeader');\r\n subChildHeading.innerHTML = `\r\n
    \r\n
    Family Member
    \r\n
    Service Code
    \r\n
    Vendor
    \r\n
    Encumbered
    \r\n
    Paid amount
    \r\n
    Date Paid
    \r\n
    \r\n `;\r\n subChildRowWrap.appendChild(subChildHeading);\r\n\r\n if (fSSData.pageDataSubChild[authId]) {\r\n fSSData.pageDataSubChild[authId].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n fSSData.pageDataSubChild[authId].forEach(subChild => {\r\n const aID = subChild.authId;\r\n const encumbered = subChild.encumbered == null ? '0.0' : subChild.encumbered;\r\n const paidAmt = subChild.paidAmt == null ? '0.0' : subChild.paidAmt;\r\n const subChildDataRow = document.createElement('div');\r\n var paidDate =\r\n subChild.paidDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(subChild.paidDate.split('T')[0]));\r\n\r\n subChildDataRow.classList.add('fssTable__subChildDataRow', 'fssTable__dataRow');\r\n const endIconSub = document.createElement('div');\r\n endIconSub.classList.add('fssTable__endIcon');\r\n\r\n\r\n subChildDataRow.innerHTML = `\r\n
    \r\n
    ${subChild.familyMember}
    \r\n
    ${subChild.serviceCode}
    \r\n
    ${subChild.Vendor}
    \r\n
    ${encumbered}
    \r\n
    ${paidAmt}
    \r\n
    ${paidDate}
    \r\n `;\r\n if ($.session.FSSUpdate == true) {\r\n endIconSub.innerHTML = icons['delete'];\r\n } else {\r\n endIconSub.innerHTML = `
    `;\r\n }\r\n subChildDataRow.appendChild(endIconSub);\r\n subChildRowWrap.appendChild(subChildDataRow);\r\n\r\n subChildDataRow.addEventListener('click', e => {\r\n //subChild.authDetailId subChild.authId\r\n });\r\n });\r\n }\r\n toggleIconSub.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subChildRowWrap.classList.contains('active')) {\r\n // close it\r\n subChildRowWrap.classList.remove('active');\r\n toggleIconSub.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subChildRowWrap.classList.add('active');\r\n toggleIconSub.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n subRowWrap.appendChild(subChildRowWrap);\r\n });\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 addFamilyAuthorization(parent.familyId)\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 (!fSSData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = fSSData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.familyId]) {\r\n obj[child.familyId] = [];\r\n obj[child.familyId].push(child);\r\n } else {\r\n obj[child.familyId].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n fSSData.pageDataChild = { ...groupedChildren };\r\n }\r\n\r\n function groupSubChildData() {\r\n if (!fSSData.pageDataSubChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = fSSData.pageDataSubChild.reduce((obj, child) => {\r\n if (!obj[child.authId]) {\r\n obj[child.authId] = [];\r\n obj[child.authId].push(child);\r\n } else {\r\n obj[child.authId].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n fSSData.pageDataSubChild = { ...groupedChildren };\r\n }\r\n\r\n function addFamilyAuthorization(familyId) {\r\n\r\n authorizationPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerText = 'New Family Authorization';\r\n\r\n // inputs \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: UTIL.getTodaysDate(),\r\n });\r\n startDateVal = UTIL.getTodaysDate()\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 });\r\n coPay = input.build({\r\n id: 'coPay',\r\n type: 'number',\r\n label: 'Copay %',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '0' },\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 });\r\n\r\n allocation = input.build({\r\n id: 'allocation',\r\n type: 'text',\r\n label: 'Allocation',\r\n style: 'secondary',\r\n value: '$',\r\n });\r\n\r\n fundingSourceDropdown = dropdown.build({\r\n id: 'fundingSourceDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"fundingSourceDropdown\",\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n await saveAuthorizationData(familyId);\r\n POPUP.hide(authorizationPopup);\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 authorizationPopup.appendChild(heading);\r\n authorizationPopup.appendChild(newStartDate);\r\n authorizationPopup.appendChild(newEndDate);\r\n authorizationPopup.appendChild(coPay);\r\n authorizationPopup.appendChild(allocation);\r\n authorizationPopup.appendChild(fundingSourceDropdown);\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 authorizationPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(authorizationPopup);\r\n fundingDropdownPopulate();\r\n authorizationPopupEventListeners();\r\n authorizationRequiredFieldsOfPopup();\r\n }\r\n\r\n function authorizationPopupEventListeners() {\r\n coPay.addEventListener('input', event => {\r\n coPayVal = event.target.value;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n\r\n allocation.addEventListener('input', event => {\r\n allocationVal = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(allocationVal)) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n else if (allocationVal.includes('.') && (allocationVal.match(/\\./g).length > 1 || allocationVal.toString().split('.')[1].length > 2)) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n if (allocationVal.includes('-') || allocationVal.includes(' ')) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n if (allocationVal.includes('$') && allocationVal.match(/\\$/g).length > 1) {\r\n document.getElementById('allocation').value = '$';\r\n }\r\n allocationVal = allocationVal.replace('$', '');\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n\r\n fundingSourceDropdown.addEventListener('change', event => {\r\n fundingSourceVal = event.target.options[event.target.selectedIndex].id;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n newStartDate.addEventListener('input', event => {\r\n startDateVal = event.target.value;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n newEndDate.addEventListener('input', event => {\r\n endDateVal = event.target.value;\r\n authorizationRequiredFieldsOfPopup();\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(authorizationPopup);\r\n });\r\n }\r\n\r\n function authorizationRequiredFieldsOfPopup() {\r\n var allocate = allocation.querySelector('#allocation');\r\n var fundingSource = fundingSourceDropdown.querySelector('#fundingSourceDropdown');\r\n var startDate = newStartDate.querySelector('#newStartDate');\r\n var endDate = newEndDate.querySelector('#newEndDate');\r\n var cPay = coPay.querySelector('#coPay');\r\n\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n\r\n if (fundingSource.value === '') {\r\n fundingSourceDropdown.classList.add('errorPopup');\r\n } else {\r\n fundingSourceDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (cPay.value != '' && parseInt(cPay.value) > 99) {\r\n coPay.classList.add('errorPopup');\r\n } else {\r\n coPay.classList.remove('errorPopup');\r\n }\r\n\r\n if (allocate.value === '' || allocate.value === '$' || allocate.value.includes('-') || !reg.test(allocate.value)) {\r\n allocation.classList.add('errorPopup');\r\n } else {\r\n allocation.classList.remove('errorPopup');\r\n }\r\n\r\n if (startDate.value === '') {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n if (endDate.value === '' || startDate.value > endDate.value) {\r\n newEndDate.classList.add('errorPopup');\r\n } else {\r\n newEndDate.classList.remove('errorPopup');\r\n }\r\n\r\n setAuthorizationBtnStatusOfPopup();\r\n }\r\n\r\n async function fundingDropdownPopulate() {\r\n const {\r\n getFundingResult: Fundings,\r\n } = await FSSAjax.getFunding();\r\n\r\n let data = Fundings.map((fundings) => ({\r\n id: fundings.id,\r\n value: fundings.id,\r\n text: fundings.name\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"fundingSourceDropdown\", data, '');\r\n }\r\n\r\n function setAuthorizationBtnStatusOfPopup() {\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 saveAuthorizationData(familyId) {\r\n await FSSAjax.insertAuthorization({\r\n token: $.session.Token,\r\n coPay: coPayVal,\r\n allocation: allocationVal,\r\n fundingSource: fundingSourceVal,\r\n startDate: startDateVal,\r\n endDate: endDateVal,\r\n userId: $.session.UserId,\r\n familyID: familyId,\r\n });\r\n applyFilter();\r\n }\r\n\r\n\r\n\r\n function addFamilyUtilization(familyId, authId, fundingSourceID) {\r\n\r\n UtilizationPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerText = 'New Family Utilization';\r\n\r\n // inputs \r\n familyMemberDropdown = dropdown.build({\r\n id: 'familyMemberDropdown',\r\n label: \"Family Member\",\r\n dropdownId: \"familyMemberDropdown\",\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 vendorDropdown = dropdown.build({\r\n id: 'vendorDropdown',\r\n label: \"Vendor\",\r\n dropdownId: \"vendorDropdown\",\r\n });\r\n\r\n encumberedInputs = input.build({\r\n id: 'encumbered',\r\n type: 'text',\r\n label: 'Encumbered',\r\n style: 'secondary',\r\n });\r\n\r\n paidAmountInputs = input.build({\r\n id: 'paidAmountInputs',\r\n type: 'text',\r\n label: 'Paid amount',\r\n style: 'secondary',\r\n });\r\n\r\n datePaid = input.build({\r\n id: 'datePaid',\r\n type: 'date',\r\n label: 'Date Paid',\r\n style: 'secondary',\r\n });\r\n\r\n UAPPLY_BTN = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!UAPPLY_BTN.classList.contains('disabled')) {\r\n await saveUtilizationData(familyId, authId);\r\n POPUP.hide(UtilizationPopup);\r\n }\r\n },\r\n });\r\n\r\n UCANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n var LineBr = document.createElement('br');\r\n UtilizationPopup.appendChild(heading);\r\n UtilizationPopup.appendChild(LineBr);\r\n UtilizationPopup.appendChild(LineBr);\r\n UtilizationPopup.appendChild(familyMemberDropdown);\r\n UtilizationPopup.appendChild(serviceCodeDropdown);\r\n UtilizationPopup.appendChild(vendorDropdown);\r\n\r\n\r\n UtilizationPopup.appendChild(encumberedInputs);\r\n UtilizationPopup.appendChild(paidAmountInputs);\r\n\r\n UtilizationPopup.appendChild(datePaid);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(UAPPLY_BTN);\r\n popupbtnWrap.appendChild(UCANCEL_BTN);\r\n UtilizationPopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(UtilizationPopup);\r\n UtilizationDropdownPopulate(fundingSourceID);\r\n UtilizationPopupEventListeners();\r\n UtilizationRequiredFieldsOfPopup();\r\n }\r\n\r\n function UtilizationPopupEventListeners() { \r\n encumberedInputs.addEventListener('input', event => {\r\n encumberedInputsVal = event.target.value;\r\n });\r\n familyMemberDropdown.addEventListener('change', event => {\r\n familyMemberDropdownVal = event.target.options[event.target.selectedIndex].id;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n serviceCodeDropdown.addEventListener('change', event => {\r\n serviceCodeDropdownVal = event.target.options[event.target.selectedIndex].id;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n vendorDropdown.addEventListener('change', event => {\r\n vendorDropdownVal = event.target.options[event.target.selectedIndex].id;\r\n });\r\n paidAmountInputs.addEventListener('input', event => {\r\n paidAmountInputsVal = event.target.value;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n datePaid.addEventListener('input', event => {\r\n datePaidVal = event.target.value;\r\n UtilizationRequiredFieldsOfPopup();\r\n });\r\n\r\n UCANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(UtilizationPopup);\r\n });\r\n }\r\n\r\n function UtilizationRequiredFieldsOfPopup() {\r\n var familyMemberVal = familyMemberDropdown.querySelector('#familyMemberDropdown');\r\n var serviceCodeVal = serviceCodeDropdown.querySelector('#serviceCodeDropdown');\r\n var paidAmountval = paidAmountInputs.querySelector('#paidAmountInputs');\r\n var datePaidVal = datePaid.querySelector('#datePaid');\r\n\r\n if (familyMemberVal.value === '') {\r\n familyMemberDropdown.classList.add('errorPopup');\r\n } else {\r\n familyMemberDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (serviceCodeVal.value === '') {\r\n serviceCodeDropdown.classList.add('errorPopup');\r\n } else {\r\n serviceCodeDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n if (paidAmountval.value === '' && datePaidVal.value != '') {\r\n paidAmountInputs.classList.add('errorPopup');\r\n } else {\r\n paidAmountInputs.classList.remove('errorPopup');\r\n }\r\n\r\n if (datePaidVal.value === '' && paidAmountval.value != '') {\r\n datePaid.classList.add('errorPopup');\r\n } else {\r\n datePaid.classList.remove('errorPopup');\r\n }\r\n\r\n setUtilizationBtnStatusOfPopup();\r\n }\r\n\r\n async function UtilizationDropdownPopulate(fundingSourceID) {\r\n const {\r\n getFamilyMembersDropDownResult: FamilyMembers,\r\n } = await FSSAjax.getFamilyMembersDropDown();\r\n\r\n let familyMembersData = FamilyMembers.map((familyMembers) => ({\r\n id: familyMembers.id,\r\n value: familyMembers.id,\r\n text: familyMembers.name\r\n }));\r\n familyMembersData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"familyMemberDropdown\", familyMembersData, '');\r\n\r\n const {\r\n getServiceCodesResult: ServiceCode,\r\n } = await FSSAjax.getServiceCodes(fundingSourceID);\r\n\r\n let serviceCodeData = ServiceCode.map((serviceCode) => ({\r\n id: serviceCode.id,\r\n value: serviceCode.id,\r\n text: serviceCode.name\r\n }));\r\n serviceCodeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"serviceCodeDropdown\", serviceCodeData, '');\r\n\r\n const {\r\n getVendorsResult: Vendors,\r\n } = await FSSAjax.getVendors();\r\n\r\n let vendorsData = Vendors.map((vendors) => ({\r\n id: vendors.id,\r\n value: vendors.id,\r\n text: vendors.name\r\n }));\r\n vendorsData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"vendorDropdown\", vendorsData, '');\r\n }\r\n\r\n function setUtilizationBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n UAPPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n UAPPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUtilizationData(familyId, authId) {\r\n await FSSAjax.insertUtilization({\r\n token: $.session.Token,\r\n encumbered: encumberedInputsVal,\r\n familyMember: familyMemberDropdownVal,\r\n serviceCode: serviceCodeDropdownVal,\r\n paidAmount: paidAmountInputsVal,\r\n vendor: vendorDropdownVal,\r\n datePaid: datePaidVal,\r\n userId: $.session.UserId,\r\n familyID: familyId,\r\n authID: authId,\r\n consumerID: selectedConsumersId,\r\n });\r\n applyFilter();\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 function init() {\r\n setActiveModuleAttribute('FSS');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadFSSLanding,\r\n };\r\n})(); \r\n","var FSSAjax = (function () {\r\n // FSS Main/Landing Page\r\n \r\n async function getFSSPageData(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 '/getFSSPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getFSSPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function getActiveInactiveFamilylist(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getActiveInactiveFamilylist/',\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.getActiveInactiveFamilylistResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n async function getFamilyInfoByID(familyId) {\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 '/getFamilyInfoByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"familyId\":\"' +\r\n familyId +\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 updateFamilyInfo(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 '/updateFamilyInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateFamilyInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFamilyMembers(familyID) {\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 '/getFamilyMembers/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"familyID\":\"' +\r\n familyID +\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 getMembers() {\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 '/getMembers/',\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 async function insertMemberInfo(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 '/insertMemberInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertMemberInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteMemberInfo(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 '/deleteMemberInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.deleteMemberInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFunding() {\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 '/getFunding/',\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 async function insertAuthorization(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 '/insertAuthorization/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertAuthorizationResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function insertUtilization(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 '/insertUtilization/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertUtilizationResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getFamilyMembersDropDown() {\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 '/getFamilyMembersDropDown/',\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 async function getServiceCodes(fundingSourceID) {\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 '/getServiceCodes/',\r\n data:\r\n '{\"fundingSourceID\":\"' +\r\n fundingSourceID +\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 getVendors() {\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 '/getVendors/',\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\r\n return {\r\n getFSSPageData,\r\n getActiveInactiveFamilylist,\r\n getFamilyInfoByID,\r\n updateFamilyInfo,\r\n getFamilyMembers,\r\n getMembers,\r\n insertMemberInfo,\r\n deleteMemberInfo,\r\n getFunding,\r\n insertAuthorization,\r\n insertUtilization,\r\n getFamilyMembersDropDown,\r\n getServiceCodes,\r\n getVendors\r\n };\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 typeId;\r\n let templateDropdown;\r\n let typeDropdown;\r\n let doneBtn;\r\n let formIds = [];\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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = oTable.querySelectorAll('.header div');\r\n headers[1].setAttribute('data-type', 'string'); // Type\r\n headers[2].setAttribute('data-type', 'date'); //Completion \r\n headers[3].setAttribute('data-type', 'string'); // Last Update \r\n headers[4].setAttribute('data-type', 'string'); // User Updated\r\n\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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 typeDropdown = dropdown.build({\r\n label: 'Form Type',\r\n dropdownId: 'typeDropdown',\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(typeDropdown);\r\n selectTemplatePopup.appendChild(templateDropdown);\r\n selectTemplatePopup.appendChild(completeDateInput);\r\n selectTemplatePopup.appendChild(btnWrap);\r\n\r\n populateTypeDropdown();\r\n populateDropdown('0');\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 typeDropdown.addEventListener('change', async e => {\r\n typeId = e.target.value;\r\n await populateDropdown(typeId);\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 Type Form Popup Window\r\n async function populateTypeDropdown() {\r\n const {\r\n getFormTypeResult: FormType,\r\n } = await formsAjax.getFormTypeAsync();\r\n let data = FormType.map((formType) => ({\r\n id: formType.formTypeId,\r\n value: formType.formTypeId,\r\n text: formType.formTypeDescription\r\n }));\r\n data.unshift({ id: null, value: '0', text: 'ALL' });\r\n dropdown.populate(\"typeDropdown\", data, '0');\r\n }\r\n\r\n // Populate the DDL on the Template Form Popup Window\r\n async function populateDropdown(typeId) {\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 typeId,\r\n );\r\n\r\n // Array to store unique template objects\r\n const uniqueForms = [];\r\n formIds = []; \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 if (typeId != '0')\r\n formIds.push(template.formTemplateId);\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 if (typeId == '0' || templates.length == 0) { \r\n data.unshift({ id: null, value: '', text: '' }); // Add blank value\r\n dropdown.populate('templateDropdown', data);\r\n }\r\n else {\r\n data.unshift({ id: null, value: '0', text: 'ALL' }); // Add blank value\r\n dropdown.populate('templateDropdown', data, '0');\r\n }\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 if (formId == '0') { \r\n await formsAjax.insertSeveralConsumerFormAsync($.session.UserId, consumerId, formIds, isTemplate, formCompleteDate); \r\n POPUP.hide(formPopup);\r\n forms.loadPDFFormsLanding(); \r\n }\r\n else {\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 }\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 \r\n instance.UI.useEmbeddedPrint(true);\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 \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, 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 '/getUserFormTemplates/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId: userId,\r\n hasAssignedFormTypes: hasAssignedFormTypes,\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 getFormTypeAsync() {\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 '/getFormType/',\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 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 insertSeveralConsumerFormAsync(\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n isTemplate,\r\n formCompleteDate,\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 '/insertSeveralConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n isTemplate,\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 getFormTypeAsync,\r\n insertSeveralConsumerFormAsync\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 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 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 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 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 $.ajax({\r\n type: 'POST',\r\n url:\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 $.ajax({\r\n type: 'POST',\r\n url:\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 getRiskAndCauseDropdown(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 '/getRiskAndCauseDropdowns/',\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.GetRiskAndCauseDropdownsResult;\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 async function getRelationshipData(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 '/getRelationshipData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n supervisorId: $.session.PeopleId,\r\n consumerId: 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 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 getRiskAndCauseDropdown,\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 getRelationshipData,\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\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'); // Employer\r\n headers[1].setAttribute('data-type', 'string'); // Address\r\n headers[2].setAttribute('data-type', 'string'); // City\r\n headers[3].setAttribute('data-type', 'string'); // State \r\n headers[4].setAttribute('data-type', 'number'); // Zip Code \r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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 createfilterPopupCreateBTN;\r\n let updateEmploymentGoalBtn;\r\n let employmentGoalText;\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 let createfilterPopup;\r\n\r\n // New Roster\r\n //let initRosterSelection;\r\n var enabledConsumers;\r\n var selectedConsumers;\r\n let selectedConsumerPeopleId;\r\n\r\n //filter\r\n let serviceDateStartInput;\r\n let serviceDateEndInput;\r\n let createServiceDateStartInput;\r\n let createServiceDateEndInput;\r\n \r\n let employeeDropdown;\r\n let servicesDropdown;\r\n let referenceNumbersDropdown;\r\n let createreferenceNumbersDropdown;\r\n let filterValues;\r\n let createFilterValues;\r\n let thisStartDate;\r\n let thisEndDate;\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 let employmentGoalTextarea;\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 \r\n await planAjax.getConsumerPeopleId(selectedConsumers[0].id, function (results) {\r\n selectedConsumerPeopleId = results[0].id;\r\n \r\n });\r\n\r\n const { getEmploymentGoalResult: EmploymentGoal } = await OODAjax.getEmploymentGoal(\r\n selectedConsumerPeopleId,\r\n );\r\n\r\n employmentGoalText = EmploymentGoal;\r\n\r\n let employmentGoalDIV = document.createElement('div');\r\n\r\n \r\n let employmentGoalMessage = document.createElement('p');\r\n employmentGoalMessage.innerHTML =\r\n `Employment Goal: ${EmploymentGoal}`;\r\n\r\n updateEmploymentGoalBtn = buildUpdateEmploymentGoalsBtn();\r\n updateEmploymentGoalBtn.setAttribute('max-width', '100px: !importatnt;');\r\n \r\n\r\n employmentGoalDIV.classList.add(\"EmployeeGoal\");\r\n employmentGoalDIV.appendChild(employmentGoalMessage) \r\n if ($.session.OODUpdate) employmentGoalDIV.appendChild(updateEmploymentGoalBtn);\r\n\r\n // employmentGoalDIV.appendChild(employmentGoalMessage);\r\n // employmentGoalDIV.appendChild(updateEmploymentGoalBtn);\r\n\r\n landingPage.appendChild(filterRow);\r\n landingPage.appendChild(employmentGoalDIV);\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\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', 'date'); // Service date\r\n headers[1].setAttribute('data-type', 'string'); // Consumer\r\n headers[2].setAttribute('data-type', 'string'); // Service\r\n headers[3].setAttribute('data-type', 'number'); // Ref No \r\n headers[4].setAttribute('data-type', 'string'); // User Updated \r\n headers[5].setAttribute('data-type', 'string'); // Employer\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(oTable);\r\n\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: createFilterValues.referenceNumber,\r\n peopleId: selectedConsumerIds[0],\r\n serviceCodeId: filterValues.serviceId,\r\n startDate: createFilterValues.serviceDateStart,\r\n endDate: createFilterValues.serviceDateEnd,\r\n userId: createFilterValues.userId,\r\n loggedInUserPersonId: $.session.PeopleId \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 if (formsPopup) 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\r\n \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 \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\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 // displayPopup\r\n buildCreateFormPopUp(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 \r\n // build Update Employment Goals button,\r\n function buildUpdateEmploymentGoalsBtn() {\r\n return button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'createFormsBtn2',\r\n callback: () => {\r\n buildEmploymentGoalPopUp();\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 popup.setAttribute('overflow-y', 'unset: !importatnt;');\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 // if (filterValues.referenceNumber != 'ALL' && filterValues.referenceNumber != '%' && filterValues.referenceNumber != '') {\r\n // createFilterValues.referenceNumber = filterValues.referenceNumber;\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 // createFilterValues.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 async function populateCreateEmployeeDropdown() {\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, createFilterValues.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 // dropdown.populate('createreferenceNumbersDropdown', data, filterValues.referenceNumber);\r\n }\r\n\r\n // Populate the Reference Number DDL on the Filter Popup Window\r\n async function populatecreateReferenceNumberDropdown(formNumber) {\r\n var consumerIds = selectedConsumerIds.join(', ');\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(consumerIds, createFilterValues.serviceDateStart, createFilterValues.serviceDateEnd, 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 data.unshift({ id: null, value: '%', text: '' }); //ADD Blank value\r\n // dropdown.populate('referenceNumbersDropdown', data, filterValues.referenceNumber);\r\n \r\n if (filterValues.referenceNumber === '%' || filterValues.referenceNumber === 'ALL') {\r\n dropdown.populate('createreferenceNumbersDropdown', data, createFilterValues.referenceNumber);\r\n } else {\r\n dropdown.populate('createreferenceNumbersDropdown', data, filterValues.referenceNumber);\r\n createFilterValues.referenceNumber = filterValues.referenceNumber\r\n checkCreatePopupRequiredFields();\r\n }\r\n \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 // createFilterValues.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 employmentGoalPopupCancelBtn() {\r\n POPUP.hide(employmentGoalPopup);\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n // build Create Form pop-up that displays when a Form is selected\r\n function buildCreateFormPopUp(formNumber) {\r\n\r\n if (!thisStartDate) {\r\n thisStartDate = new Date();\r\n thisStartDate.setDate(1); // Set to the first day of the current month\r\n thisStartDate.setMonth(thisStartDate.getMonth() - 1); // Go back one month\r\n thisStartDate.setDate(1); // Ensure it's the first day of the previous month\r\n }\r\n\r\n if (!thisEndDate) {\r\n thisEndDate = new Date();\r\n thisEndDate.setDate(0); // Sets the date to the last day of the previous month\r\n }\r\n\r\n createFilterValues = {\r\n token: $.session.Token,\r\n // serviceDateStart: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n // serviceDateEnd: UTIL.getTodaysDate(),\r\n serviceDateStart: thisStartDate.toISOString().split('T')[0],\r\n serviceDateEnd: thisEndDate.toISOString().split('T')[0],\r\n\r\n 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 // popup\r\n createfilterPopup = 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 // value: createFilterValues.userId,\r\n });\r\n\r\n createServiceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: createFilterValues.serviceDateStart,\r\n });\r\n createServiceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: createFilterValues.serviceDateEnd,\r\n });\r\n\r\n createreferenceNumbersDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'createreferenceNumbersDropdown',\r\n id: 'createreferenceNumbersDropdown',\r\n // value: '',\r\n });\r\n\r\n // apply filters button\r\n createfilterPopupCreateBTN = button.build({\r\n text: `Create Form ${formNumber}`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => createfilterPopupDoneBtn(formNumber),\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => POPUP.hide(createfilterPopup),\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(createfilterPopupCreateBTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n \r\n createfilterPopup.appendChild(employeeDropdown);\r\n \r\n createfilterPopup.appendChild(createServiceDateStartInput);\r\n \r\n createfilterPopup.appendChild(createServiceDateEndInput);\r\n \r\n createfilterPopup.appendChild(createreferenceNumbersDropdown);\r\n createfilterPopup.appendChild(btnWrap);\r\n\r\n populateCreateEmployeeDropdown();\r\n populatecreateReferenceNumberDropdown(formNumber);\r\n createeventListeners(formNumber);\r\n // checkCreatePopupRequiredFields();\r\n // setupFilterEvent();\r\n\r\n \r\n\r\n //return filterPopup;\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n\r\n POPUP.show(createfilterPopup);\r\n checkCreatePopupRequiredFields();\r\n\r\n }\r\n\r\n async function createfilterPopupDoneBtn(formNumber) {\r\n POPUP.hide(createfilterPopup);\r\n createeventListeners(formNumber);\r\n generateAndTrackFormProgress(formNumber);\r\n \r\n loadOODLanding();\r\n\r\n }\r\n\r\n\r\n function createeventListeners(formNumber) {\r\n createServiceDateStartInput.addEventListener('input', event => { \r\n if (event.target.value !== '') {\r\n createFilterValues.serviceDateStart = event.target.value;\r\n populatecreateReferenceNumberDropdown(formNumber);\r\n } else {\r\n event.target.value = createFilterValues.serviceDateStart;\r\n \r\n } \r\n });\r\n createServiceDateEndInput.addEventListener('input', event => { \r\n if (event.target.value !== '') { \r\n createFilterValues.serviceDateEnd = event.target.value;\r\n populatecreateReferenceNumberDropdown(formNumber);\r\n } else {\r\n event.target.value = createFilterValues.serviceDateEnd;\r\n \r\n }\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n createFilterValues.userId = event.target.value;\r\n createFilterValues.userName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n \r\n createreferenceNumbersDropdown.addEventListener('change', event => {\r\n createFilterValues.referenceNumber = event.target.value;\r\n checkCreatePopupRequiredFields();\r\n });\r\n \r\n }\r\n\r\n function checkCreatePopupRequiredFields() {\r\n // var createreferenceNumbersDropdown = document.querySelector('#createreferenceNumbersDropdown');\r\n let createreferenceNumbersDropDown = document.getElementById(\"createreferenceNumbersDropdown\");\r\n if (createreferenceNumbersDropDown.value === '' || createreferenceNumbersDropDown.value === '%') { \r\n createreferenceNumbersDropDown.parentElement.classList.add('error');\r\n createfilterPopupCreateBTN.classList.add('disabled'); \r\n return;\r\n } else {\r\n createreferenceNumbersDropDown.parentElement.classList.remove('error');\r\n createfilterPopupCreateBTN.classList.remove('disabled');\r\n }\r\n\r\n }\r\n\r\n function buildEmploymentGoalPopUp() {\r\n // popup\r\n employmentGoalPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n \r\n\r\n\temploymentGoalTextarea = input.build({\r\n label: 'Employment Goal',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: employmentGoalText,\r\n // charLimit: charLimits.importantTo,\r\n forceCharLimit: true,\r\n callback: e => {\r\n employmentGoalText = e.target.value; \r\n },\r\n });\r\n employmentGoalTextarea.classList.add('importantTo');\r\n\t\t\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const success = await OODAjax.updateEmploymentGoal(\r\n { peopleId: selectedConsumerPeopleId, \r\n userId: $.session.UserId, \r\n ServiceGoal: employmentGoalText,\r\n });\r\n POPUP.hide(employmentGoalPopup);\r\n loadOODLanding();\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: () => {\r\n\r\n employmentGoalPopupCancelBtn()\r\n loadOODLanding();\r\n },\r\n });\r\n\t\t\r\n\t\t\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 let employmentGoalTitle = document.createElement('h2');\r\n employmentGoalTitle.innerHTML =\r\n `Update Employment Goal`;\r\n\r\n employmentGoalTitle.style.padding = '10px';\r\n\r\n employmentGoalPopup.appendChild(employmentGoalTitle);\r\n\t\temploymentGoalPopup.appendChild(employmentGoalTextarea);\r\n\t employmentGoalPopup.appendChild(btnWrap);\r\n\r\n //return filterPopup;\r\n POPUP.show(employmentGoalPopup);\r\n checkEmploymentGoalRequiredFields();\r\n checkEmploymentGoalEventListners();\r\n }\r\n\r\n function checkEmploymentGoalRequiredFields() {\r\n var employmentGoalInput = employmentGoalPopup.querySelector('textarea');\r\n\r\n if (employmentGoalInput.value === '') {\r\n employmentGoalTextarea.classList.add('error');\r\n } else {\r\n employmentGoalTextarea.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(employmentGoalPopup.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0)) {\r\n APPLY_BTN.classList.add('disabled');\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n \r\n }\r\n function checkEmploymentGoalEventListners() {\r\n // var employeeGoalInput = employeeGoalPopup.querySelector('textarea');\r\n employmentGoalTextarea.addEventListener('input', event => {\r\n employmentGoalText = event.target.value;\r\n checkEmploymentGoalRequiredFields();\r\n });\r\n }\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\r\n async function updateEmploymentGoal(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 '/updateEmploymentGoal/',\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.updateEmploymentGoalResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\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 // 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 employer: data.employer,\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 employer: data.employer,\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 async function getEmploymentGoal(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 '/getEmploymentGoal/',\r\n data: JSON.stringify({\r\n peopleId: peopleId,\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 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 loggedInUserPersonId: data.loggedInUserPersonId\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 loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\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 form.appendChild(loggedInUserPersonIdInput);\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 loggedInUserPersonId: data.loggedInUserPersonId\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 loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\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 form.appendChild(loggedInUserPersonIdInput);\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 loggedInUserPersonId: data.loggedInUserPersonId\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 var loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\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 form.appendChild(loggedInUserPersonIdInput);\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 loggedInUserPersonId: data.loggedInUserPersonId\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 loggedInUserPersonIdInput = document.createElement('input');\r\n loggedInUserPersonIdInput.setAttribute('name', 'loggedInUserPersonId');\r\n loggedInUserPersonIdInput.setAttribute('value', data.loggedInUserPersonId);\r\n loggedInUserPersonIdInput.id = 'loggedInUserPersonId';\r\n\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 form.appendChild(loggedInUserPersonIdInput);\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 updateEmploymentGoal,\r\n getEmploymentGoal,\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 importServicesBtn;\r\n let filesList = [];\r\n let backBtn;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n let fileInput;\r\n //--\r\n let filterPopup;\r\n let outcomeTypeDropdown;\r\n let effectiveDateStart;\r\n let effectiveDateEnd;\r\n let importDate;\r\n let applyFilterBtn;\r\n let btnWrap;\r\n let outcomeTypeBtnWrap;\r\n let effectiveDateBtnWrap;\r\n let importDateBtnWrap;\r\n let fromImportedServicesPage = false;\r\n\r\n async function init(selectedConsume, navigatedFromImport) {\r\n selectedConsumer = selectedConsume;\r\n\r\n if (navigatedFromImport) {\r\n fromImportedServicesPage = navigatedFromImport;\r\n } else {\r\n fromImportedServicesPage = false;\r\n }\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 const addInsertServicesBtnWrap = document.createElement('div');\r\n addInsertServicesBtnWrap.classList.add('addInsertServicesBtnWrap');\r\n backbtnWrap.appendChild(addInsertServicesBtnWrap);\r\n\r\n filteredByData = buildFilteredByData();\r\n addOutCome = addOutcomesButton();\r\n backBtn = backButton();\r\n addInsertServicesBtnWrap.appendChild(addOutCome);\r\n\r\n if ($.session.InsertServices === true && $.session.applicationName === 'Advisor') {\r\n importServicesBtn = button.build({\r\n text: 'IMPORT SERVICES',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'importServices',\r\n callback: async () => {\r\n createUploadPopup();\r\n },\r\n });\r\n\r\n addInsertServicesBtnWrap.appendChild(importServicesBtn);\r\n }\r\n\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 // Create and append the popup to the body\r\n function createUploadPopup() {\r\n let filesList = [];\r\n\r\n // Create the main popup container\r\n const popup = document.createElement('div');\r\n popup.id = 'upload-popup';\r\n popup.className = 'upload-popup hiddenPopup';\r\n\r\n // Create the content container\r\n const popupContent = document.createElement('div');\r\n popupContent.className = 'upload-popup-content';\r\n\r\n // Create the heading\r\n const heading = document.createElement('h2');\r\n heading.innerText = 'Upload File';\r\n\r\n // Create the drop area\r\n const dropArea = document.createElement('div');\r\n dropArea.id = 'drop-area';\r\n dropArea.className = 'drop-area';\r\n dropArea.style.display = 'flex'; // Make the dropArea a flex container\r\n dropArea.style.flexDirection = 'column';\r\n dropArea.style.alignItems = 'center';\r\n dropArea.style.justifyContent = 'center';\r\n\r\n // Add text to the drop area\r\n const dropText1 = document.createElement('p');\r\n dropText1.innerText = 'Drag & drop a file here';\r\n const dropText2 = document.createElement('p');\r\n dropText2.innerText = 'or';\r\n\r\n // Handle drag and drop\r\n dropArea.addEventListener('dragover', event => {\r\n event.preventDefault();\r\n dropArea.classList.add('active');\r\n });\r\n\r\n dropArea.addEventListener('dragleave', () => {\r\n dropArea.classList.remove('active');\r\n });\r\n\r\n dropArea.addEventListener('drop', event => {\r\n event.preventDefault();\r\n dropArea.classList.remove('active');\r\n const files = event.dataTransfer.files;\r\n handleFiles(files);\r\n });\r\n\r\n // Create the file input element\r\n fileInput = document.createElement('input');\r\n fileInput.type = 'file';\r\n fileInput.id = 'file-input';\r\n fileInput.className = 'file-input';\r\n fileInput.multiple = true;\r\n fileInput.style.display = 'none'; // Hide the input element\r\n\r\n // Create the button for selecting files\r\n const selectFilesButton = button.build({\r\n text: 'Select File',\r\n id: 'select-files',\r\n style: 'primary',\r\n type: 'contained',\r\n classNames: 'btn',\r\n callback: async () => {\r\n fileInput.click();\r\n },\r\n });\r\n\r\n // Center the button in its container\r\n selectFilesButton.style.margin = '10px auto';\r\n\r\n // Event listener to handle file selection\r\n fileInput.addEventListener('change', event => {\r\n const files = event.target.files;\r\n handleFiles(files);\r\n });\r\n\r\n // Append text and button to drop area\r\n dropArea.appendChild(dropText1);\r\n dropArea.appendChild(dropText2);\r\n dropArea.appendChild(selectFilesButton);\r\n\r\n // Create the file list display area\r\n const fileListDisplay = document.createElement('div');\r\n fileListDisplay.id = 'file-list';\r\n fileListDisplay.className = 'file-list';\r\n\r\n // Create the close button\r\n const closeButton = button.build({\r\n text: 'Close',\r\n id: 'upload-close',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'btn',\r\n callback: async () => {\r\n hidePopup();\r\n filesList = [];\r\n },\r\n });\r\n\r\n // Create the Import button\r\n const importButton = button.build({\r\n text: 'Start Import',\r\n id: 'upload-import',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn', 'disabled'],\r\n callback: async () => {\r\n const attachmentsForSave = await processFilesForUpload(filesList);\r\n\r\n hidePopup();\r\n importServices.init(attachmentsForSave, outcomeServicesData, selectedConsumer);\r\n },\r\n });\r\n\r\n const uploadBtnsWrap = document.createElement('div');\r\n uploadBtnsWrap.className = 'uploadBtnsWrap';\r\n\r\n // Append all elements to the content container\r\n popupContent.appendChild(heading);\r\n popupContent.appendChild(dropArea);\r\n popupContent.appendChild(fileListDisplay);\r\n uploadBtnsWrap.appendChild(importButton);\r\n uploadBtnsWrap.appendChild(closeButton);\r\n popupContent.appendChild(uploadBtnsWrap);\r\n\r\n // Append the content container to the popup\r\n popup.appendChild(popupContent);\r\n\r\n // Append the popup to the body\r\n document.body.appendChild(popup);\r\n\r\n // Function to display file names\r\n function displayFileNames(filesList) {\r\n fileListDisplay.innerHTML = ''; // Clear previous file list\r\n const list = document.createElement('ul');\r\n filesList.forEach((file, index) => {\r\n const listItem = document.createElement('li');\r\n listItem.innerText = file.name;\r\n\r\n // Create the remove button (X)\r\n const removeButton = document.createElement('button');\r\n removeButton.innerText = 'X';\r\n removeButton.style.marginLeft = '10px';\r\n removeButton.style.color = 'red';\r\n removeButton.style.border = 'none';\r\n removeButton.style.background = 'transparent';\r\n removeButton.style.cursor = 'pointer';\r\n\r\n // Event listener to remove the file from the list\r\n removeButton.addEventListener('click', () => {\r\n removeFile(index);\r\n });\r\n\r\n listItem.appendChild(removeButton);\r\n list.appendChild(listItem);\r\n });\r\n fileListDisplay.appendChild(list);\r\n }\r\n\r\n // Function to handle files\r\n function handleFiles(files) {\r\n filesList = filesList.concat(Array.from(files));\r\n displayFileNames(filesList);\r\n for (const file of files) {\r\n console.log('File uploaded:', file.name);\r\n }\r\n\r\n toggleButtonsDisabled('import', filesList);\r\n }\r\n\r\n function toggleButtonsDisabled(filesList) {\r\n const importButton = document.getElementById('upload-import');\r\n\r\n if (filesList.length > 0) {\r\n importButton.disabled = false;\r\n importButton.classList.remove('disabled');\r\n } else {\r\n importButton.disabled = true;\r\n importButton.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Function to remove a file from the list\r\n function removeFile(index) {\r\n filesList.splice(index, 1);\r\n fileInput.value = '';\r\n displayFileNames(filesList);\r\n \r\n toggleButtonsDisabled(filesList);\r\n }\r\n\r\n // Function to process files for upload\r\n async function processFilesForUpload(files) {\r\n let attachments = [];\r\n \r\n for (const file of files) {\r\n const attachmentDetails = await _DOM.getAttachmentDetails(file);\r\n attachments.push(attachmentDetails.attachment);\r\n }\r\n \r\n return attachments; // Return just the attachment data\r\n }\r\n }\r\n\r\n // Hide popup function\r\n function hidePopup() {\r\n const popup = document.getElementById('upload-popup');\r\n if (popup) {\r\n popup.remove();\r\n }\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 importDate: 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 importDate = '';\r\n\r\n if (fromImportedServicesPage) {\r\n importDate = `${formatDate(filterValues.effectiveDateEnd)}`;\r\n }\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 = 'Effective As Of: ' + effectiveDateEnd;\r\n }\r\n\r\n if (importDate == '') {\r\n btnWrap.removeChild(importDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(importDateBtnWrap);\r\n if (document.getElementById('importDateBtn') != null)\r\n document.getElementById('importDateBtn').innerHTML = 'ImportDate: ' + importDate;\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 importDateBtn = button.build({\r\n id: 'importDateBtn',\r\n text: 'Import Date: ' + importDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('importDateBtn');\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 importDateBtnWrap = document.createElement('div');\r\n importDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n importDateBtnWrap.appendChild(importDateBtn);\r\n btnWrap.appendChild(importDateBtnWrap);\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 effectiveDateWrap = 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 const importDateWrap = document.createElement('div');\r\n importDateInput = input.build({\r\n type: 'date',\r\n label: 'Import Date',\r\n style: 'secondary',\r\n value: filterValues.importDate,\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'effectiveDateBtn') {\r\n effectiveDateWrap.appendChild(effectiveDateEndInput);\r\n }\r\n\r\n if (IsShow == 'ALL' || IsShow == 'importDateBtn') {\r\n importDateWrap.appendChild(importDateInput);\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(effectiveDateWrap);\r\n filterPopup.appendChild(importDateWrap);\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(selectedConsumer);\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 function buildConsumerCard() {\r\n selectedConsumers.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(selectedConsumers.card);\r\n \r\n return wrap;\r\n }\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 const consumerCard = buildConsumerCard();\r\n landingPage.appendChild(consumerCard);\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(selectedConsumerId, startDate);\r\n\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\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\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 function buildConsumerCard() {\r\n selectedConsumers.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(selectedConsumers.card);\r\n \r\n return wrap;\r\n }\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 const consumerCard = buildConsumerCard();\r\n landingPage.appendChild(consumerCard);\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 == '' ? UTIL.getTodaysDate() : 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(selectedConsumerId, startDate);\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","const importServices = (() => {\r\n\r\n //DATA\r\n let extractionData;\r\n let currentlySelectedConsumer;\r\n let existingOutcomesVendorData;\r\n let selectedOutcomes = [];\r\n let assessmentAreas = \r\n {\r\n 'Communication' : 34,\r\n 'Advocacy & Engagement' : 35,\r\n 'Safety and Security' : 36,\r\n 'Social and Spirituality' : 37,\r\n 'Daily Life and Employment' : 38,\r\n 'Community Living' : 39,\r\n 'Healthy Living' : 40\r\n }\r\n const sectionToTableMap = {\r\n 'Known & Likely Risks': 'importedPlanRisksTable',\r\n 'Experiences': 'importedExperiencesTable',\r\n 'Paid Supports': 'importedPaidSupportsTable',\r\n 'Additional Supports': 'importedAdditionalSupportsTable',\r\n 'Professional Referrals': 'importedProfessionalReferralsTable',\r\n }; \r\n\r\n //ELEMENTS \r\n let importSelectedServicesPopup;\r\n\r\n // TABLES\r\n let knownAndLikelyRisksTable;\r\n let experiencesTable;\r\n let paidSupportsTable;\r\n let additionalSupportsTable;\r\n let professionalReferralsTable;\r\n\r\n async function init(files, outcomesServicesData, selectedConsumer) {\r\n const token = $.session.Token\r\n currentlySelectedConsumer = selectedConsumer;\r\n\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n landingPage.appendChild(spinner);\r\n\r\n extractionData = await _UTIL.fetchData('importedOutcomesPDFData', {token, files});\r\n existingOutcomesVendorData = outcomesServicesData.pageDataParent.map(outcome => ({\r\n value: outcome.goal_id,\r\n text: outcome.outcomeStatement,\r\n }))\r\n buildImportSections();\r\n }\r\n\r\n // Build New Outcomes Page \r\n async function buildImportSections() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n var headerCheckbox = document.createElement('input');\r\n headerCheckbox.type = 'checkbox';\r\n headerCheckbox.classList.add('header-checkbox');\r\n\r\n var rowCheckbox = document.createElement('input');\r\n rowCheckbox.type = 'checkbox';\r\n rowCheckbox.classList.add('row-checkbox');\r\n\r\n function formatDateToYYYYMMDD(dateString) {\r\n const date = new Date(dateString);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are 0-based\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n function handleCheckboxSelection(event, rowData) {\r\n let checkbox = event.target;\r\n const currentTable = checkbox.closest('.table');\r\n const tableRow = checkbox.closest('.table__row');\r\n const tableRowId = tableRow.id;\r\n const outcomeRowId = `${tableRowId}A`;\r\n \r\n // Use CSS.escape to ensure the ID is properly escaped for querySelector\r\n const escapedOutcomeRowId = `#${CSS.escape(outcomeRowId)}`;\r\n \r\n // Find the outcomeRowContainer within the current table\r\n const outcomeRowContainer = currentTable.querySelector(escapedOutcomeRowId);\r\n \r\n // Check if the target is the checkbox itself\r\n if (checkbox.type !== 'checkbox') {\r\n // If not, assume we're in the div and select the checkbox within the startIcon div\r\n checkbox = event.target.querySelector('input[type=\"checkbox\"]');\r\n }\r\n \r\n if (checkbox && checkbox.checked) {\r\n // Gather values from the outcomeRowContainer inputs\r\n const dropdownId = `existingOutcomeDropdown_${tableRowId}`;\r\n const dropdown = document.getElementById(dropdownId);\r\n const serviceDateStart = outcomeRowContainer.querySelector('input.startDate');\r\n const serviceDateEnd = outcomeRowContainer.querySelector('input.endDate');\r\n \r\n // Add these input values to the rowData\r\n const outcomeData = {\r\n rowId: tableRowId,\r\n existingOutcomeGoalId: dropdown ? dropdown.value : null,\r\n serviceDateStart: serviceDateStart ? serviceDateStart.value : null,\r\n serviceDateEnd: serviceDateEnd ? serviceDateEnd.value : null\r\n };\r\n \r\n // Merge the rowData with the outcomeData\r\n const combinedData = { ...rowData, ...outcomeData };\r\n \r\n // Add the newly checked row data to the selected outcomes array\r\n selectedOutcomes.push(combinedData);\r\n \r\n // Show the existing outcomes div below the checkbox row\r\n outcomeRowContainer.style.display = 'flex';\r\n \r\n } else {\r\n // Remove the now unselected row data from the selected outcomes array\r\n selectedOutcomes = selectedOutcomes.filter(\r\n selectedRow => selectedRow.rowId !== tableRowId\r\n );\r\n \r\n // Hide the existing outcomes div below the checkbox row\r\n outcomeRowContainer.style.display = 'none';\r\n }\r\n \r\n // Toggle the import button based on the current state of checkboxes\r\n toggleImportButton();\r\n }\r\n \r\n function handleHeaderCheckboxSelection(headerCheckboxSelector, tableSelector) {\r\n const headerCheckbox = document.querySelector(headerCheckboxSelector);\r\n const rowCheckboxes = document.querySelectorAll(`${tableSelector} .row-checkbox`);\r\n \r\n rowCheckboxes.forEach(checkbox => {\r\n checkbox.checked = headerCheckbox.checked;\r\n\r\n // Find the cell that contains this checkbox\r\n const cell = checkbox.closest('.startIcon');\r\n\r\n // Dispatch the click event on the cell to trigger the callback\r\n if (cell) {\r\n cell.dispatchEvent(new Event('click'));\r\n }\r\n });\r\n }\r\n\r\n function createAddToExistingOutcomesRow(rowId, isPaidSupportsTable) {\r\n let serviceDateStartValue = extractionData.importedOutcomesPDFDataResult.startDate;\r\n let serviceDateEndValue = extractionData.importedOutcomesPDFDataResult.endDate;\r\n // Only check for BeginDateEndDate if we are dealing with the paidSupports table\r\n if (isPaidSupportsTable) {\r\n const index = parseInt(rowId, 10) - 1; // Convert rowId to an integer and adjust for 0-based index\r\n const [bDate, eDate] = extractionData.importedOutcomesPDFDataResult.paidSupports[index].BeginDateEndDate.split(/(?<=\\d{4})\\s+/);\r\n\r\n // Format the dates to 'YYYY-MM-DD'\r\n const formattedBDate = formatDateToYYYYMMDD(bDate);\r\n const formattedEDate = formatDateToYYYYMMDD(eDate);\r\n\r\n serviceDateStartValue = formattedBDate;\r\n serviceDateEndValue = formattedEDate;\r\n }\r\n const exitingOutcomDropdown = dropdown.build({\r\n id: `existingOutcomeDropdown_${rowId}`,\r\n label: 'Add to Existing Outcome',\r\n dropdownId: `existingOutcomeDropdown_${rowId}`,\r\n callback: () => toggleImportButton(),\r\n callbackType: 'change',\r\n classNames: \"existingOutcomesDropdown\"\r\n });\r\n \r\n const serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n callback: () => toggleImportButton(),\r\n callbackType: 'input',\r\n value: serviceDateStartValue,\r\n classNames: \"startDate\"\r\n });\r\n \r\n const serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n callback: () => toggleImportButton(),\r\n callbackType: 'input',\r\n value: serviceDateEndValue,\r\n classNames: \"endDate\"\r\n });\r\n \r\n const createAddToExistingOutcomesRowContainerDiv = document.createElement('div');\r\n createAddToExistingOutcomesRowContainerDiv.classList.add('addToExistingOutcomesRowContainer');\r\n createAddToExistingOutcomesRowContainerDiv.id = `${rowId}A`;\r\n \r\n createAddToExistingOutcomesRowContainerDiv.appendChild(exitingOutcomDropdown);\r\n createAddToExistingOutcomesRowContainerDiv.appendChild(serviceDateStartInput);\r\n createAddToExistingOutcomesRowContainerDiv.appendChild(serviceDateEndInput);\r\n \r\n // Populate dropdown with options\r\n dropdown.populate(exitingOutcomDropdown, existingOutcomesVendorData, existingOutcomesVendorData[0]?.value);\r\n \r\n createAddToExistingOutcomesRowContainerDiv.style.display = 'none';\r\n return createAddToExistingOutcomesRowContainerDiv;\r\n }\r\n\r\n function appendToEachRow(table, isPaidSupportsTable = false) { \r\n const tableBody = table.querySelector('.table__body');\r\n const rows = Array.from(tableBody.querySelectorAll('.table__row'));\r\n \r\n rows.forEach(row => {\r\n // Create a new row for each existing table row\r\n const newRow = createAddToExistingOutcomesRow(row.id, isPaidSupportsTable);\r\n \r\n // Insert the new row after the current row\r\n row.insertAdjacentElement('afterend', newRow);\r\n });\r\n }\r\n\r\n knownAndLikelyRisksTable = table.build({\r\n tableId: `importedPlanRisksTable`,\r\n headline: `Know & Likely Risks`,\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: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedPlanRisksTable .startIcon input[type=\"checkbox\"]', '#importedPlanRisksTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.riskAssessments) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.riskAssessments\r\n .map((ra, i) => {\r\n const { tableValues, raData } = mapRiskAssessmentsDataForTable(ra);\r\n const rowId = i + 1;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: raData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, raData),\r\n onClick: event => {},\r\n };\r\n });\r\n\r\n table.populate(knownAndLikelyRisksTable, tableData, false);\r\n appendToEachRow(knownAndLikelyRisksTable);\r\n };\r\n \r\n // Experiences Table\r\n experiencesTable = table.build({\r\n tableId: `importedExperiencesTable`,\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 startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedExperiencesTable .startIcon input[type=\"checkbox\"]', '#importedExperiencesTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.experiences) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.experiences\r\n .map((ex, i) => { \r\n const { tableValues, exData } = mapExperiencesDataForTable(ex);\r\n const rowId = i + 1; \r\n \r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: exData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, exData),\r\n onClick: () => {},\r\n };\r\n });\r\n \r\n table.populate(experiencesTable, tableData, false);\r\n appendToEachRow(experiencesTable);\r\n }\r\n \r\n // Paid Supports Table\r\n paidSupportsTable = table.build({\r\n tableId: 'importedPaidSupportsTable',\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: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedPaidSupportsTable .startIcon input[type=\"checkbox\"]', '#importedPaidSupportsTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.paidSupports) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.paidSupports\r\n .map((ps, i) => {\r\n const { tableValues, psData } = mapPaidSupportDataForTable(ps);\r\n const rowId = i + 1;\r\n\r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: psData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, psData),\r\n onClick: event => {},\r\n };\r\n });\r\n\r\n table.populate(paidSupportsTable, tableData, false, true);\r\n appendToEachRow(paidSupportsTable, true);\r\n };\r\n \r\n // Additional Supports Table\r\n additionalSupportsTable = table.build({\r\n tableId: 'importedAdditionalSupportsTable',\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: false,\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedAdditionalSupportsTable .startIcon input[type=\"checkbox\"]', '#importedAdditionalSupportsTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.additionalSupports) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.additionalSupports\r\n .map((as, i) => { \r\n const { tableValues, asData } = mapAdditionalSupportDataForTable(as);\r\n const rowId = i + 1; \r\n \r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: asData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, asData),\r\n onClick: () => {},\r\n };\r\n });\r\n \r\n table.populate(additionalSupportsTable, tableData, false);\r\n\r\n appendToEachRow(additionalSupportsTable);\r\n }\r\n \r\n // Professional Referrals Table\r\n professionalReferralsTable = table.build({\r\n tableId: 'importedProfessionalReferralsTable',\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 ],\r\n sortable: false,\r\n startIcon: true,\r\n startIconHeader: headerCheckbox.outerHTML,\r\n startIconHeaderCallback: () => handleHeaderCheckboxSelection('#importedProfessionalReferralsTable .startIcon input[type=\"checkbox\"]', '#importedProfessionalReferralsTable'),\r\n });\r\n\r\n if (extractionData.importedOutcomesPDFDataResult.professionalReferrals) {\r\n const tableData = extractionData.importedOutcomesPDFDataResult.professionalReferrals\r\n .map((pr, i) => { \r\n const { tableValues, prData } = mapProfessionalReferralsDataForTable(pr);\r\n const rowId = i + 1; \r\n \r\n return {\r\n id: rowId,\r\n values: tableValues,\r\n attributes: [{ key: 'sectionId', value: prData.assessmentAreaId }],\r\n startIcon: rowCheckbox.outerHTML,\r\n startIconCallback: (event) => handleCheckboxSelection(event, prData),\r\n onClick: () => {}\r\n }\r\n });\r\n \r\n table.populate(professionalReferralsTable, tableData, false);\r\n appendToEachRow(professionalReferralsTable);\r\n }\r\n\r\n const importSelectedSerivcesAndCancelBtnWrap = document.createElement('div');\r\n importSelectedSerivcesAndCancelBtnWrap.classList.add('importSelectedSerivcesAndCancelBtnWrap');\r\n const importSelectedServicesBtn = button.build({\r\n id: 'importSelectedServicesBtn',\r\n text: 'Import Selected Services',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['importSelectedServicesBtn', 'disabled'],\r\n callback: async () => {showImportSelectedServicesPopup()},\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: 'contained',\r\n classNames: 'cancelBtn',\r\n callback: () => {\r\n selectedOutcomes = [];\r\n addEditOutcomeServices.init(currentlySelectedConsumer, true);\r\n },\r\n });\r\n\r\n function toggleImportButton() {\r\n const importButton = document.getElementById('importSelectedServicesBtn');\r\n const checkboxes = document.querySelectorAll('.row-checkbox');\r\n \r\n // Check if any checkbox is checked at all\r\n const anyChecked = Array.from(checkboxes).some(checkbox => checkbox.checked);\r\n \r\n // No checkboxes are selected, keep the import button disabled\r\n if (!anyChecked) {\r\n importButton.disabled = true;\r\n importButton.classList.add('disabled');\r\n return;\r\n }\r\n \r\n let allValid = true; // Flag to track if all selected rows are valid\r\n \r\n checkboxes.forEach(checkbox => {\r\n if (checkbox.checked) {\r\n const currentTable = checkbox.closest('.table');\r\n const tableRow = checkbox.closest('.table__row');\r\n const tableRowId = tableRow.id;\r\n const outcomeRowId = `${tableRowId}A`;\r\n let startDateInput;\r\n let endDateInput;\r\n \r\n // Use CSS.escape to ensure the ID is properly escaped for querySelector\r\n const escapedOutcomeRowId = `#${CSS.escape(outcomeRowId)}`;\r\n \r\n // Find the outcomeRowContainer within the current table\r\n const outcomeRowContainer = currentTable.querySelector(escapedOutcomeRowId);\r\n \r\n if (outcomeRowContainer) {\r\n const dropdown = outcomeRowContainer.querySelector('select');\r\n\r\n // Find all date inputs within the outcomeRowContainer\r\n const dateInputs = outcomeRowContainer.querySelectorAll('input[type=\"date\"]');\r\n\r\n // Ensure there are at least two date inputs\r\n if (dateInputs.length >= 2) {\r\n startDateInput = dateInputs[0];\r\n endDateInput = dateInputs[1];\r\n }\r\n \r\n // Validate dropdown and date inputs\r\n const isDropdownSelected = dropdown && dropdown.value !== \"\";\r\n const isStartDateValid = startDateInput && startDateInput.value !== \"\";\r\n const isEndDateValid = endDateInput && endDateInput.value !== \"\";\r\n const isDateRangeValid = isStartDateValid && isEndDateValid && (new Date(startDateInput.value) <= new Date(endDateInput.value));\r\n \r\n // If any condition is not met, set allValid to false\r\n if (!isDropdownSelected || !isStartDateValid || !isEndDateValid || !isDateRangeValid) {\r\n allValid = false;\r\n }\r\n } else {\r\n // If outcomeRowContainer is not found, set allValid to false\r\n allValid = false;\r\n }\r\n }\r\n });\r\n \r\n // Enable or disable the button based on the validation checks\r\n if (allValid) {\r\n importButton.disabled = false;\r\n importButton.classList.remove('disabled');\r\n } else {\r\n importButton.disabled = true;\r\n importButton.classList.add('disabled');\r\n }\r\n }\r\n \r\n \r\n\r\n importSelectedSerivcesAndCancelBtnWrap.appendChild(importSelectedServicesBtn);\r\n importSelectedSerivcesAndCancelBtnWrap.appendChild(cancelBtn);\r\n\r\n async function showImportSelectedServicesPopup() {\r\n importSelectedServicesPopup = POPUP.build({\r\n classNames: 'importSelectedServicesPopup',\r\n })\r\n\r\n let importSelectedServicesPopupMessage = document.createElement('p');\r\n\r\n const okBtn = button.build({\r\n id: 'okBtn',\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'okBtn',\r\n callback: () => {\r\n selectedOutcomes = [];\r\n POPUP.hide(importSelectedServicesPopup)\r\n addEditOutcomeServices.init(currentlySelectedConsumer, true);\r\n },\r\n });\r\n\r\n const token = $.session.Token;\r\n\r\n // Define the properties of ImportedTables with default values\r\n function createDefaultImportedTable(rowData) {\r\n return {\r\n assessmentAreaId: rowData.assessmentAreaId || null,\r\n assessmentArea: rowData.assessmentArea || \"\",\r\n whatIsRisk: rowData.whatIsRisk || \"\",\r\n whatSupportMustLookLike: rowData.whatSupportMustLookLike || \"\",\r\n whatSupportLooksLike: rowData.whatSupportLooksLike || \"\",\r\n riskRequiresSupervision: rowData.riskRequiresSupervision || \"\",\r\n whatNeedsToHappen: rowData.whatNeedsToHappen || \"\",\r\n howItShouldHappen: rowData.howItShouldHappen || \"\",\r\n whoIsResponsible: rowData.whoIsResponsible || \"\",\r\n whenHowOften: rowData.whenHowOften || \"\",\r\n providerName: rowData.providerName || \"\",\r\n scopeOfService: rowData.scopeOfService || \"\",\r\n howOftenValue: rowData.howOftenValue || \"\",\r\n howOftenText: rowData.howOftenText || \"\",\r\n howOftenFrequency: rowData.howOftenFrequency || \"\",\r\n whoSupports: rowData.whoSupports || \"\",\r\n newOrExisting: rowData.newOrExisting || \"\",\r\n reasonForReferral: rowData.reasonForReferral || \"\",\r\n section: rowData.section || \"\",\r\n existingOutcomeGoalId: rowData.existingOutcomeGoalId || \"\",\r\n serviceDateStart: rowData.serviceDateStart || \"\",\r\n serviceDateEnd: rowData.serviceDateEnd || \"\"\r\n };\r\n }\r\n\r\n // Gather all selected rows with additional data\r\n const importedTables = selectedOutcomes.map((rowData) => {\r\n // Use the sectionToTableMap to get the tableId\r\n const tableId = sectionToTableMap[rowData.section];\r\n const tableDiv = document.getElementById(tableId);\r\n\r\n const escapedId = CSS.escape(`${rowData.rowId}A`); // Escape the ID to handle special characters like digits or others\r\n const existingOutcomeContainer = tableDiv.querySelector(`#${escapedId}`);\r\n\r\n const dropdownId = `existingOutcomeDropdown_${rowData.rowId}`;\r\n const esitingOutcomeContainerDropdown = tableDiv.querySelector(`#${dropdownId}`);\r\n\r\n const serviceDateStart = existingOutcomeContainer.querySelector('.addToExistingOutcomesRowContainer input.startDate');\r\n const serviceDateEnd = existingOutcomeContainer.querySelector('.addToExistingOutcomesRowContainer input.endDate');\r\n\r\n const additionalData = {\r\n existingOutcomeGoalId: esitingOutcomeContainerDropdown ? esitingOutcomeContainerDropdown.value : null,\r\n serviceDateStart: serviceDateStart ? serviceDateStart.value : null,\r\n serviceDateEnd: serviceDateEnd ? serviceDateEnd.value : null\r\n };\r\n\r\n // Create a default ImportedTable object and merge with additional data\r\n return createDefaultImportedTable({ ...rowData, ...additionalData });\r\n });\r\n\r\n const importSelectedServicesResult = await _UTIL.fetchData('importSelectedServices', {token, importedTables});\r\n\r\n if (importSelectedServicesResult.importSelectedServicesResult.length === 0) {\r\n importSelectedServicesPopupMessage.innerText = 'Your outcomes have been successfully imported.'\r\n } else {\r\n importSelectedServicesPopupMessage.innerText = 'Something went wrong when trying to import your services. Please Try again.'\r\n }\r\n\r\n importSelectedServicesPopup.appendChild(importSelectedServicesPopupMessage);\r\n importSelectedServicesPopup.appendChild(okBtn);\r\n\r\n POPUP.show(importSelectedServicesPopup);\r\n }\r\n \r\n landingPage.appendChild(knownAndLikelyRisksTable);\r\n landingPage.appendChild(experiencesTable);\r\n landingPage.appendChild(paidSupportsTable);\r\n landingPage.appendChild(additionalSupportsTable);\r\n landingPage.appendChild(professionalReferralsTable);\r\n landingPage.appendChild(importSelectedSerivcesAndCancelBtnWrap);\r\n }\r\n\r\n // Match string of imported table assessment area to get the associated assessment area id\r\n function getAssessmentAreaId(targetKey) {\r\n return assessmentAreas.hasOwnProperty(targetKey) ? assessmentAreas[targetKey] : '';\r\n }\r\n \r\n\r\n // map the know and likely risks data into the format needed for populating the table\r\n function mapRiskAssessmentsDataForTable(ra) {\r\n let provderId = '';\r\n\r\n const whatIsRisk = ra.WhatIsRisk || \"\";\r\n const whatSupportMustLookLike = ra.WhatSupportMustLookLike || \"\";\r\n const riskRequiresSupervision = ra.RiskRequiresSupervision || \"\";\r\n const whoIsResponsible = ra.WhoIsResponsible || \"\";\r\n\r\n const assessmentAreaId = getAssessmentAreaId(ra.AssessmentArea);\r\n const assessmentArea = ra.AssessmentArea;\r\n\r\n const section = 'Known & Likely Risks';\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n whatIsRisk,\r\n whatSupportMustLookLike,\r\n riskRequiresSupervision,\r\n whoIsResponsible,\r\n ],\r\n raData: {\r\n assessmentAreaId,\r\n assessmentArea,\r\n whatIsRisk,\r\n whatSupportMustLookLike,\r\n riskRequiresSupervision,\r\n whoIsResponsible,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the experiences data into the format needed for populating the table\r\n function mapExperiencesDataForTable(ex) {\r\n const whatNeedsToHappen = ex.WhatNeedsToHappen || \"\";\r\n const howItShouldHappen = ex.HowItShouldHappen || \"\";\r\n const whoIsResponsible = ex.WhoIsResponsible || \"\";\r\n const whenHowOften = ex.WhenHowOften || \"\";\r\n\r\n const section = 'Experiences';\r\n const assessmentAreaId = getAssessmentAreaId(ex.AssessmentArea);\r\n const assessmentArea = ex.AssessmentArea;\r\n\r\n return {\r\n tableValues: [\r\n whatNeedsToHappen,\r\n howItShouldHappen,\r\n whoIsResponsible,\r\n whenHowOften,\r\n ],\r\n exData: {\r\n assessmentAreaId,\r\n assessmentArea,\r\n whatNeedsToHappen,\r\n howItShouldHappen,\r\n whoIsResponsible,\r\n whenHowOften,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the paid support data into the format needed for populating the table\r\n function mapPaidSupportDataForTable(ps) {\r\n // Split the string into two parts\r\n const [bDate, eDate] = (ps.BeginDateEndDate).split(/(?<=\\d{4})\\s+/);\r\n\r\n const serviceName = ps.ServiceName || \"\";\r\n const scopeOfService = ps.ScopeOfService || \"\";\r\n const howOftenValue = ps.HowOftenHowMuch || \"\";\r\n const howOftenText = ps.HowOftenHowMuch || \"\";\r\n const fundingSourceText = ps.FundingSource || \"\";\r\n const paidSupportsId = '';\r\n const providerName = ps.ProviderName || \"\";\r\n\r\n const assessmentAreaId = getAssessmentAreaId(ps.AssessmentArea);\r\n const assessmentArea = ps.AssessmentArea;\r\n\r\n const section = 'Paid Supports';\r\n\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n fundingSourceText,\r\n serviceName,\r\n providerName,\r\n scopeOfService,\r\n howOftenText,\r\n bDate,\r\n eDate,\r\n ],\r\n psData: {\r\n assessmentAreaId,\r\n providerName,\r\n //serviceNameOther,\r\n scopeOfService,\r\n howOftenValue,\r\n howOftenText,\r\n bDate,\r\n eDate,\r\n fundingSourceText,\r\n paidSupportsId,\r\n section\r\n },\r\n };\r\n }\r\n\r\n // map the additional supports data into the format needed for populating the table\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 = as.WhoSupports || \"\";\r\n const whatSupportLooksLike = as.WhatSupportLooksLike || \"\";\r\n const howOftenValue = as.WhenHowOften || \"\";\r\n const howOftenFrequency = as.WhenHowOften || \"\";\r\n const howOftenText = as.WhenHowOften || \"\";\r\n const additionalSupportsId = '';\r\n\r\n assessmentAreaId = getAssessmentAreaId(as.AssessmentArea);\r\n assessmentArea = as.AssessmentArea;\r\n\r\n const section = 'Additional Supports';\r\n\r\n const whenHowOftenDesc = '';\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: [\r\n assessmentArea, \r\n whoSupportsText, \r\n whatSupportLooksLike, \r\n howOften,\r\n ],\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 section\r\n },\r\n };\r\n }\r\n\r\n // map the professional referrals data into the format needed for populating the table\r\n function mapProfessionalReferralsDataForTable(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 reasonForReferral = pr.ReasonForReferral || \"\";\r\n const howOftenValue = pr.WhenHowOften || \"\";\r\n const howOftenFrequency = pr.WhenHowOften || \"\";\r\n const howOftenText = pr.WhenHowOften || \"\";\r\n const additionalSupportsId = '';\r\n\r\n assessmentAreaId = getAssessmentAreaId(pr.AssessmentArea);\r\n assessmentArea = pr.AssessmentArea;\r\n\r\n const section = 'Professional Referrals';\r\n\r\n const whenHowOftenDesc = '';\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: [\r\n assessmentArea, \r\n newOrExisting, \r\n whoSupports, \r\n reasonForReferral,\r\n ],\r\n prData: {\r\n assessmentAreaId,\r\n assessmentArea, \r\n newOrExisting, \r\n whoSupports, \r\n reasonForReferral,\r\n section\r\n },\r\n };\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})(); ","const outcomes = (function () {\r\n let OUTCOMES_SECTION;\r\n\r\n // Filter DOM\r\n let filterPopup;\r\n let filterButton;\r\n let dateInput;\r\n let serviceDropdown;\r\n let outcomeDropdown;\r\n let applyButton;\r\n //const currentFilterDisplay = document.createElement(\"div\");\r\n // Filter Values\r\n let currDate;\r\n let currService;\r\n let currOutcome;\r\n let currOutcomeId;\r\n // Data\r\n //----------------------------\r\n let selectedConsumerObj;\r\n let selectedConsumerId;\r\n let selectedConsume;\r\n // front card data\r\n let outcomesDataObj;\r\n let outcomesPrompts;\r\n let outcomesLocations;\r\n // back card dom (popup)\r\n let detailsPopup;\r\n let primaryLocationDropdown;\r\n let secondaryLocationDropdown;\r\n let resultsDropdown;\r\n let promptsDropdown;\r\n let attemptsDropdown;\r\n let cIDropdown;\r\n let timeInputs;\r\n let saveBtn;\r\n let deleteBtn;\r\n let noteInput;\r\n let enteredByUser;\r\n let edit__lastEditedByDetails;\r\n // back card data\r\n let ciData;\r\n let successObj;\r\n let successType;\r\n let successDetails;\r\n let currResult = '';\r\n let currReason = '';\r\n let currAttempts = '';\r\n let currPrompt = '';\r\n let currCI = '';\r\n let currNote = '';\r\n let currStartTime = '';\r\n let currEndTime = '';\r\n let defaultObjLocationId;\r\n let defaultGoalLocationId;\r\n // save/update data\r\n let personId;\r\n let objectiveId;\r\n let activityId;\r\n let objdate;\r\n let success;\r\n let goalnote;\r\n let reviewNote;\r\n let notifyEmployee = 'N';\r\n let promptType;\r\n let promptNumber;\r\n let locationId;\r\n let locationSecondaryId;\r\n let goalStartTime;\r\n let goalEndTime;\r\n let goalCILevel;\r\n // other\r\n let dateSpanMessage;\r\n let daysBack;\r\n let daysBackDate;\r\n let useConsumerLocation;\r\n let defaultPrimaryLocation;\r\n let currentSection;\r\n let todaysDateToDisplay;\r\n let firstDayOfWeek;\r\n let lastDayOfWeek;\r\n let firstDayOfMonth;\r\n let lastDayOfMonth;\r\n let yearOfCurrentDay;\r\n let dailyAbsent = false;\r\n let 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 let tmpService;\r\n let tmpOutcome;\r\n let tmpOutcomeId;\r\n let editOutcomeBtn;\r\n let viewPlanBtn;\r\n let viewPlanPOPUP;\r\n let updatePlanPopup;\r\n let attachmentInput; \r\n\r\n let isViewedAvailableOSPlan = 'false';\r\n\r\n function getAllowedConsumerIds() {\r\n return allowedConsumerIds;\r\n }\r\n function getDropdownValues() {\r\n return {\r\n prompts: outcomesPrompts,\r\n ci: ciData,\r\n };\r\n }\r\n function getDataForOverview() {\r\n return {\r\n objLocationId: defaultObjLocationId,\r\n goalLocationId: defaultGoalLocationId,\r\n primaryLocationId: defaultPrimaryLocation,\r\n };\r\n }\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 const 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, async function () {\r\n await outcomesAjax.addReviewNote({\r\n token: $.session.Token,\r\n objectiveActivityId: activityId,\r\n reviewNote: reviewNote,\r\n consumerId: selectedConsumerId,\r\n objectiveActivityDate: objdate,\r\n notifyEmployee: notifyEmployee,\r\n });\r\n\r\n resetOutcomeSaveData();\r\n getConsumersWithRemainingGoals();\r\n locationSecondaryId = 0;\r\n setTimeout(async () => {\r\n successfulSave.hide();\r\n await loadCardView(selectedConsumerObj, 'false');\r\n applyOutComeFilter();\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 notifyEmployee = 'N';\r\n reviewNote = '';\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, async () => {\r\n POPUP.hide(detailsPopup);\r\n await loadCardView(selectedConsumerObj);\r\n });\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 }\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 //! I do not think this is used anymore\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 //! I do not think this is used anymore\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, async 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 await 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 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 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 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 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 buildDateInput() {\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', (event) => {\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 buildReviewNoteInput(note) {\r\n const noteInput = input.build({\r\n label: 'Review Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n reviewNote = note;\r\n\r\n noteInput.addEventListener('keyup', (event) => {\r\n reviewNote = event.target.value;\r\n });\r\n \r\n return noteInput;\r\n }\r\n function buildNotifyCheckbox() {\r\n const notifyEmployeeCheckbox = input.buildCheckbox({\r\n text: 'Notify Employee via System Message',\r\n });\r\n \r\n notifyEmployeeCheckbox.addEventListener('change', e => {\r\n notifyEmployee = e.target.checked ? 'Y' : 'N';\r\n });\r\n \r\n return notifyEmployeeCheckbox;\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 noteInput = buildNoteInput(editData.Objective_Activity_Note);\r\n reviewNoteInput = buildReviewNoteInput(editData.reviewNote);\r\n notifyEmployeeCheckbox = buildNotifyCheckbox();\r\n saveBtn = buildSaveButton(true);\r\n deleteBtn = buildDeleteButton();\r\n enteredByUser = editData.submitted_by_user_id;\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 reviewNoteInput = buildReviewNoteInput();\r\n notifyEmployeeCheckbox = buildNotifyCheckbox();\r\n saveBtn = buildSaveButton(false);\r\n deleteBtn = undefined;\r\n }\r\n\r\n \r\n if (!$.session.OutcomesReview) {\r\n reviewNoteInput.classList.add('disabled');\r\n notifyEmployeeCheckbox.classList.add('disabled');\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\r\n if ($.session.applicationName !== 'Gatekeeper') {\r\n detailsPopup.appendChild(cIDropdown);\r\n detailsPopup.appendChild(timeWrap);\r\n }\r\n\r\n detailsPopup.appendChild(noteInput);\r\n detailsPopup.appendChild(reviewNoteInput);\r\n detailsPopup.appendChild(notifyEmployeeCheckbox);\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\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 async 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\r\n //const result = await outcomesAjax.isNewBtnDisabledByPlanHistory(\r\n // selectedConsumerId,\r\n // outcome.goal_id,\r\n // outcome.Objective_id,\r\n // );\r\n // const { isNewBtnDisabledByPlanHistoryResult } = result;\r\n\r\n // if (dailyAbsent || isNewBtnDisabledByPlanHistoryResult[0].isNewDisabled == 'true') {\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(async oc => {\r\n var card = await 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(async oc => {\r\n var card = await 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(async oc => {\r\n var card = await 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(async oc => {\r\n var card = await 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(async oc => {\r\n var card = await 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(async oc => {\r\n var card = await 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 async function loadCardView(selectedConsumer, displayPlanViewPopup) {\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 = buildDateInput();\r\n topFilterDateWrap.appendChild(dateInput);\r\n }\r\n\r\n reportsBtn = 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 const 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 generateReports.showReportsPopup([\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 },\r\n });\r\n editOutcomeBtn = button.build({\r\n text: 'EDIT OUTCOMES/SERVICES',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: () => {\r\n if (!editOutcomeBtn.classList.contains('disabled')) {\r\n addEditOutcomeServices.init(selectedConsume);\r\n }\r\n },\r\n });\r\n reviewOutcomesBtn = button.build({\r\n text: 'REVIEW OUTCOMES/SERVICES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n outcomesReview.init({\r\n consumer: selectedConsumerObj,\r\n consumerName: consumerName,\r\n date: currDate,\r\n allowedConsumerIds: allowedConsumerIds,\r\n });\r\n },\r\n });\r\n\r\n let buttonName = 'VIEW PLAN';\r\n if ($.session.UpdatePlan) buttonName = 'VIEW/UPDATE PLAN';\r\n\r\n viewPlanBtn = button.build({\r\n text: buttonName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!viewPlanBtn.classList.contains('disabled')) {\r\n planViewPOPUP();\r\n }\r\n },\r\n });\r\n topFilterDateWrap.appendChild(editOutcomeBtn);\r\n if ($.session.OutcomesReview) {\r\n topFilterDateWrap.appendChild(reviewOutcomesBtn);\r\n }\r\n\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 const showPopup = await outcomesAjax.getPlanbyConsumerHistory(selectedConsumerId);\r\n const { getPlanbyConsumerHistoryResult } = showPopup;\r\n\r\n if (getPlanbyConsumerHistoryResult[0].isPlanAvailable == 'true') {\r\n if (displayPlanViewPopup !== 'false' && $.session.RequireViewPlan) planViewPOPUP(); \r\n if ($.session.RequireViewPlan) topFilterDateWrap.appendChild(viewPlanBtn);\r\n //viewPlanBtn.classList.remove('disabled');\r\n }\r\n else {\r\n //planViewPOPUP(); \r\n if ($.session.RequireViewPlan) topFilterDateWrap.appendChild(viewPlanBtn);\r\n // viewPlanBtn.classList.add('disabled');\r\n }\r\n \r\n const result = await outcomesAjax.isViewPlabBtnDisabled(selectedConsumerId);\r\n const { isViewPlabBtnDisabledResult } = result;\r\n\r\n if (isViewPlabBtnDisabledResult[0].isPlanAvailable == 'false' && !$.session.UpdatePlan) {\r\n viewPlanBtn.classList.add('disabled');\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 DOM.ACTIONCENTER.appendChild(outcomesTabs);\r\n\r\n //Build and populate card overview\r\n const goalsResp = await outcomesAjax.getGoalsAsync(selectedConsumerId, currDate);\r\n loadOutcomesCards(goalsResp);\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 allowedConsumerIds = consumerIds;\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\r\n async function planViewPOPUP() {\r\n viewPlanPOPUP = POPUP.build({\r\n hideX: false, \r\n });\r\n\r\n planNow = button.build({\r\n text: 'READ AND ACKNOWLEDGE PLAN NOW',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'planNowBtn',\r\n callback: async () => {\r\n await savePlanNow(isViewedAvailableOSPlan);\r\n POPUP.hide(viewPlanPOPUP);\r\n },\r\n });\r\n\r\n planLater = button.build({\r\n text: 'READ AND ACKNOWLEDGE PLAN LATER',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await savePlanLater();\r\n POPUP.hide(viewPlanPOPUP);\r\n },\r\n });\r\n\r\n planUpdate = button.build({\r\n text: 'UPDATE PLAN',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n planUpdatePOPUP();\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n planNow.style.width = '100%';\r\n planLater.style.width = '100%';\r\n planUpdate.style.width = '100%';\r\n message.innerText =\r\n \"A new ISP is available for viewing for this individual. You are required to acknowledge that you've read this plan before documenting for services. Would you like to read the plan now or later? \";\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n viewPlanPOPUP.appendChild(message);\r\n viewPlanPOPUP.appendChild(planNow);\r\n\r\n const result = await outcomesAjax.getPlanHistorybyConsumer(selectedConsumerId);\r\n const { getPlanHistorybyConsumerResult } = result;\r\n\r\n // if isPlanAvailable = TRUE -- then either history table doesnt have this attachment or history table has attachment and it hasn't been viewed \r\n if (getPlanHistorybyConsumerResult[0].isPlanAvailable == 'true' ) {\r\n viewPlanPOPUP.appendChild(planLater);\r\n if (getPlanHistorybyConsumerResult[0].isPlanLaterDisable == 'true') {\r\n planLater.classList.add('disabled'); \r\n\r\n } else {\r\n planLater.classList.remove('disabled');\r\n //viewPlanPOPUP.appendChild(planLater);\r\n }\r\n } else {\r\n\r\n }\r\n\r\n // if isViewedAvailableOSPlan = TRUE -- history table has attachment and it has been viewed\r\n if (getPlanHistorybyConsumerResult[0].isViewedAvailableOSPlan == 'true' ) {\r\n\r\n const planNowBtn = viewPlanPOPUP.getElementsByClassName('planNowBtn')[0];\r\n planNowBtn.innerHTML = 'READ CURRENT PLAN';\r\n isViewedAvailableOSPlan = 'true';\r\n message.style.display = 'none';\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'inline';\r\n\r\n } else {\r\n\r\n isViewedAvailableOSPlan = 'false';\r\n }\r\n\r\n if ($.session.UpdatePlan) viewPlanPOPUP.appendChild(planUpdate);\r\n\r\n const resultCheckPlan = await outcomesAjax.isViewPlabBtnDisabled(selectedConsumerId);\r\n const { isViewPlabBtnDisabledResult } = resultCheckPlan;\r\n\r\n if (isViewPlabBtnDisabledResult[0].isPlanAvailable == 'false' && $.session.UpdatePlan) {\r\n message.style.display = 'none';\r\n planNow.style.display = 'none';\r\n planLater.style.display = 'none';\r\n // viewPlanPOPUP.closePopupBtn.display = 'none'\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'inline';\r\n\r\n \r\n\r\n\r\n } else {\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'none';\r\n\r\n if (getPlanHistorybyConsumerResult[0].isViewedAvailableOSPlan == 'true' ) {\r\n\r\n const planNowBtn = viewPlanPOPUP.getElementsByClassName('planNowBtn')[0];\r\n planNowBtn.innerHTML = 'READ CURRENT PLAN';\r\n isViewedAvailableOSPlan = 'true';\r\n message.style.display = 'none';\r\n const closePopupBtn = viewPlanPOPUP.getElementsByClassName('closePopupBtn')[0];\r\n closePopupBtn.style.display = 'inline';\r\n \r\n } else {\r\n \r\n const planNowBtn = viewPlanPOPUP.getElementsByClassName('planNowBtn')[0];\r\n planNowBtn.innerHTML = 'READ AND ACKNOWLEDGE PLAN NOW';\r\n isViewedAvailableOSPlan = 'false';\r\n }\r\n }\r\n POPUP.show(viewPlanPOPUP);\r\n }\r\n\r\n async function savePlanLater() {\r\n const saveData = {\r\n token: $.session.Token,\r\n consumerId: selectedConsumerId,\r\n };\r\n outcomesAjax.addOutcomePlanLater(saveData);\r\n }\r\n\r\n async function savePlanNow(isViewedAvailableOSPlan) {\r\n outcomesAjax.addOutcomePlanNow(selectedConsumerId, isViewedAvailableOSPlan);\r\n }\r\n\r\n function planUpdatePOPUP() {\r\n updatePlanPOPUP = POPUP.build({\r\n classNames: ['updatePlanPOPUP'],\r\n hideX: true,\r\n });\r\n\r\n //inputs\r\n newStartDate = input.build({\r\n id: 'newStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\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 });\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 var popupDateWrap = document.createElement('div');\r\n popupDateWrap.classList.add('btnWrap');\r\n newStartDate.style.width = '49%';\r\n newEndDate.style.width = '49%';\r\n popupDateWrap.appendChild(newStartDate);\r\n popupDateWrap.appendChild(newEndDate);\r\n updatePlanPOPUP.appendChild(popupDateWrap);\r\n\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 updatePlanPOPUP.appendChild(newAttachmentList);\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.addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentInput.style.marginBottom = '15px';\r\n updatePlanPOPUP.appendChild(attachmentInput);\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 updatePlanPOPUP.appendChild(popupbtnWrap);\r\n\r\n POPUP.hide(viewPlanPOPUP);\r\n POPUP.show(updatePlanPOPUP);\r\n PopupEventListeners();\r\n checkRequiredFieldsOfPopup();\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 checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\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', async () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\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(attachmentArray);\r\n\r\n POPUP.hide(updatePlanPOPUP);\r\n POPUP.hide(viewPlanPOPUP);\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(updatePlanPOPUP);\r\n POPUP.show(viewPlanPOPUP);\r\n });\r\n }\r\n\r\n async function saveAttachmentsToDB(attachmentArray) {\r\n if (attachmentArray.length === 0) return;\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n consumerId: selectedConsumerId,\r\n attachmentType: attachment.description,\r\n attachment: attachment.arrayBuffer,\r\n startDate: startDate,\r\n endDate: endDate,\r\n };\r\n outcomesAjax.addOutcomePlan(saveData);\r\n });\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 const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n\r\n if (attachmentInputs[0].value == '') {\r\n attachmentInput.classList.add('errorPopup');\r\n } else {\r\n attachmentInput.classList.remove('errorPopup');\r\n }\r\n if (startDate.value === '') {\r\n newStartDate.classList.add('errorPopup');\r\n } else {\r\n newStartDate.classList.remove('errorPopup');\r\n }\r\n\r\n if (endDate.value === '' || (startDate.value != '' && startDate.value > endDate.value)) {\r\n newEndDate.classList.add('errorPopup');\r\n } else {\r\n newEndDate.classList.remove('errorPopup');\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 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 DOM.ACTIONCENTER.appendChild(OUTCOMES_SECTION);\r\n\r\n currDate = UTIL.getTodaysDate();\r\n outcomesAjax.getViewableGoalIdsByPermission(getConsumersWithRemainingGoals);\r\n }\r\n\r\n function init() {\r\n initLoad = true;\r\n loadLandingPage();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n init,\r\n backToOutcomeLoad,\r\n getAllowedConsumerIds,\r\n getDropdownValues,\r\n getDataForOverview,\r\n };\r\n})();\r\n","const 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 callback();\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: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\", \"goalDate\":\"' + goalDate + '\"}',\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 async function getGoalsAsync(consumerId, goalDate) {\r\n const retrieveData = {\r\n consumerId,\r\n goalDate,\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 '/getGoalsByDateNew/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getGoalsByDateNewResult;\r\n } catch (error) {\r\n console.log(error.responseText);\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('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 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(selectedConsumer, effectiveDateStart) {\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 consumerId: selectedConsumer.id,\r\n effectiveDateStart,\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(selectedConsumerId, startDate) {\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 consumerId: selectedConsumerId,\r\n effectiveDateStart: startDate,\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: '{\"token\":\"' + $.session.Token + '\", \"goalId\":\"' + goalId + '\"}',\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: '{\"token\":\"' + $.session.Token + '\", \"objectiveId\":\"' + objectiveId + '\"}',\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,\r\n endDate,\r\n outcomeType,\r\n outcomeStatement,\r\n userID,\r\n goalId,\r\n consumerId,\r\n 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,\r\n endDate,\r\n outcomeType,\r\n servicesStatement,\r\n ServiceType,\r\n method,\r\n success,\r\n frequencyModifier,\r\n frequency,\r\n frequencyPeriod,\r\n userID,\r\n objectiveId,\r\n consumerId,\r\n location,\r\n 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 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 // Review\r\n async function getReviewTableData(retrieveData) {\r\n //consumerId, objectiveDate\r\n //4365, '2024/07/01'\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 '/getOutcomesReviewGrid/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...retrieveData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.getOutcomesReviewGridResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n async function getReviewTableDataSecondary(retrieveData) {\r\n //consumerId, startDate, endDate, objectiveIdList\r\n //4365, '2024/07/01', '2024/10/01',\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 '/getOutcomesReviewGridSecondary/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...retrieveData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.getOutcomesReviewGridSecondaryResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n async function getAllGoalTypes() {\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 '/getAllGoalTypes/',\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 result.getAllGoalTypesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n async function addReviewNote(data) {\r\n // @token\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 '/updateReviewNote/',\r\n data: JSON.stringify({token: $.session.Token, ...data}),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result.updateReviewNoteResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n //\r\n\r\n async function addOutcomePlan(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 '/addOutcomePlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addOutcomePlanResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getPlanHistorybyConsumer(selectedConsumerId) {\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 '/getPlanHistorybyConsumer/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + selectedConsumerId + '\"}',\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 getPlanbyConsumerHistory(selectedConsumerId) {\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 '/getPlanbyConsumerHistory/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + selectedConsumerId + '\"}',\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 addOutcomePlanLater(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 '/addOutcomePlanLater/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addOutcomePlanLaterResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function addOutcomePlanNow(selectedConsumerId, isViewedAvailableOSPlan) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: selectedConsumerId,\r\n isViewedAvailableOSPlan: isViewedAvailableOSPlan,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/addOutcomePlanNow/`;\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', 'consumerId');\r\n attachmentInput.setAttribute('value', selectedConsumerId);\r\n attachmentInput.id = 'consumerId';\r\n var isViewedAvailableOSPlanInput = document.createElement('input');\r\n isViewedAvailableOSPlanInput.setAttribute('name', 'isViewedAvailableOSPlan');\r\n isViewedAvailableOSPlanInput.setAttribute('value', isViewedAvailableOSPlan);\r\n isViewedAvailableOSPlanInput.id = 'isViewedAvailableOSPlan';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(isViewedAvailableOSPlanInput);\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 isNewBtnDisabledByPlanHistory(selectedConsumerId, goalTypeID, 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 '/isNewBtnDisabledByPlanHistory/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n selectedConsumerId +\r\n '\", \"goalTypeID\":\"' +\r\n goalTypeID +\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 isViewPlabBtnDisabled(selectedConsumerId) {\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 '/isViewPlabBtnDisabled/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + selectedConsumerId + '\"}',\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 getGoalsAsync,\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 // Review\r\n getReviewTableData,\r\n getReviewTableDataSecondary,\r\n getAllGoalTypes,\r\n addReviewNote,\r\n //\r\n addOutcomePlan,\r\n getPlanHistorybyConsumer,\r\n addOutcomePlanLater,\r\n addOutcomePlanNow,\r\n isNewBtnDisabledByPlanHistory,\r\n isViewPlabBtnDisabled,\r\n getPlanbyConsumerHistory,\r\n };\r\n})();\r\n","const outcomesReview = (function () {\r\n // Data\r\n let selectedConsumerId;\r\n let selectedConsumerCard;\r\n let selectedDate;\r\n let outcomesData;\r\n let outcomesDataRaw;\r\n let outcomesDataSecondaryRaw;\r\n let exclamationIds;\r\n let exclamationSecondaryIds;\r\n let exclamationDateMap;\r\n let timesDocByDate;\r\n let dropdownData;\r\n let activityRes;\r\n let locations;\r\n let successTypes;\r\n let goalTypes;\r\n let tabSections;\r\n let activeTab;\r\n // Filter\r\n let filterBtn;\r\n let servBtnWrap;\r\n let serviceBtn;\r\n let serviceCloseBtn;\r\n let typeBtnWrap;\r\n let outcomeTypeBtn;\r\n let outcomeTypeCloseBtn;\r\n let serviceFilterVal;\r\n let outcomeTypeFilterVal;\r\n // Date span/days back filter\r\n let selectedDateSpan = { to: null, from: null };\r\n let unitType;\r\n let spanLength;\r\n let daysBackInput;\r\n let toDateInput;\r\n let fromDateInput;\r\n let isDaysBackFilter = true;\r\n // DOM\r\n let outcomesReviewDiv;\r\n let outcomeTabs;\r\n let detailsPopup;\r\n let reviewNotePopup;\r\n // Constants\r\n const NO_FREQ_SPAN = 7;\r\n const HOUR_SPAN = 24;\r\n const DAY_SPAN = 2;\r\n const WEEK_SPAN = 1;\r\n const MONTH_SPAN = 2;\r\n const YEAR_SPAN = 2;\r\n const NO_FREQ = 'no frequency';\r\n const HOUR = 'hourly';\r\n const DAY = 'daily';\r\n const WEEK = 'weekly';\r\n const MONTH = 'monthly';\r\n const YEAR = 'yearly';\r\n const FREQ_MAP = {\r\n 'no frequency': 'NF',\r\n hourly: 'H',\r\n daily: 'D',\r\n weekly: 'W',\r\n monthly: 'M',\r\n yearly: 'Y',\r\n };\r\n const MONTHS = {\r\n '01': 'January',\r\n '02': 'February',\r\n '03': 'March',\r\n '04': 'April',\r\n '05': 'May',\r\n '06': 'June',\r\n '07': 'July',\r\n '08': 'August',\r\n '09': 'September',\r\n 10: 'October',\r\n 11: 'November',\r\n 12: 'December',\r\n };\r\n const FREQUENCY = {\r\n OBJFMAL: 'At least',\r\n OBJFMAN: 'As needed',\r\n OBJFMAR: 'As Requested',\r\n OBJFMEX: 'Exactly',\r\n OBJFMNM: 'No more than',\r\n };\r\n const RECURRANCE = {\r\n D: 'per day',\r\n Y: 'per year',\r\n W: 'per week',\r\n M: 'per month',\r\n H: 'per hour',\r\n };\r\n\r\n function buildConsumerCard() {\r\n selectedConsumerCard.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumerCard);\r\n\r\n return wrap;\r\n }\r\n\r\n // Mini Roster\r\n //----------------------------------------------------\r\n async function handleActionNavEvent(target) {\r\n if (target.dataset.actionNav === 'miniRosterCancel') {\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n if (target.dataset.actionNav === 'miniRosterDone') {\r\n DOM.toggleNavLayout();\r\n\r\n roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n\r\n const activeConsumers = roster2.getActiveConsumers();\r\n selectedConsumerId = activeConsumers[0].id;\r\n selectedConsumerCard = activeConsumers[0].card;\r\n\r\n await getReviewTableData();\r\n await getReviewTableDataSecondary();\r\n\r\n // replace consumer header\r\n const newConsumerCardHeader = buildConsumerCard();\r\n outcomesReviewDiv.replaceChild(newConsumerCardHeader, consumerCardHeader);\r\n consumerCardHeader = newConsumerCardHeader;\r\n // rebuild & populate tabs/tables\r\n const newOutcomeTabs = buildTabs();\r\n outcomesReviewDiv.replaceChild(newOutcomeTabs, outcomeTabs);\r\n outcomeTabs = newOutcomeTabs;\r\n\r\n populateTabSections();\r\n\r\n // data that is based off consumerID\r\n outcomesAjax.getDaysBackForEditingGoalsAndUseConsumerLocation(selectedConsumerId, res => {\r\n defaultPrimaryLocation = results[0].consumer_location;\r\n });\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(\r\n selectedConsumerId,\r\n dates.formateToISO(selectedDate),\r\n results => sortLocations(results),\r\n );\r\n }\r\n }\r\n\r\n // Detail View Popup\r\n //----------------------------------------------------\r\n function showAddReviewNotePopup({ date, result, attempts, prompts, employeeId, activityId }) {\r\n const saveData = {\r\n objectiveActivityId: activityId,\r\n reviewNote: '',\r\n consumerId: selectedConsumerId,\r\n objectiveActivityDate: date.split(' ')[0],\r\n notifyEmployee: 'N',\r\n };\r\n\r\n reviewNotePopup = POPUP.build({\r\n id: 'reviewNotePopup',\r\n hideX: true,\r\n });\r\n\r\n const header = _DOM.createElement('div', { class: ['reviewNoteHeader'] });\r\n header.innerHTML = `

    Service Review Note - ${selectedConsumerName}

    `;\r\n const topInfo = _DOM.createElement('div', { class: ['reviewNoteInfo'] });\r\n topInfo.innerHTML = `\r\n

    Date: ${date}

    \r\n

    Result: ${result}

    \r\n

    Attempts: ${attempts}

    \r\n

    Prompts: ${prompts}

    \r\n `;\r\n\r\n const noteInput = input.build({\r\n label: 'Review Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n callback: e => {\r\n saveData.reviewNote = e.target.value;\r\n },\r\n });\r\n const notifyEmployeeCheckbox = input.buildCheckbox({\r\n text: 'Notify Employee via System Message',\r\n callback: e => {\r\n saveData.notifyEmployee = e.target.checked ? 'Y' : 'N';\r\n },\r\n });\r\n const savebtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await outcomesAjax.addReviewNote({\r\n token: $.session.Token,\r\n ...saveData,\r\n });\r\n\r\n POPUP.hide(reviewNotePopup);\r\n POPUP.show(detailsPopup);\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(reviewNotePopup);\r\n POPUP.show(detailsPopup);\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(cancelbtn);\r\n\r\n reviewNotePopup.appendChild(header);\r\n reviewNotePopup.appendChild(topInfo);\r\n reviewNotePopup.appendChild(noteInput);\r\n reviewNotePopup.appendChild(notifyEmployeeCheckbox);\r\n reviewNotePopup.appendChild(btnWrap);\r\n\r\n POPUP.show(reviewNotePopup);\r\n }\r\n function sortLocations(results) {\r\n locations = {};\r\n\r\n results.forEach(res => {\r\n if (!locations[res.type]) {\r\n locations[res.type] = [];\r\n }\r\n\r\n locations[res.type].push(res);\r\n });\r\n locations['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 (locations.Secondary) {\r\n locations['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 // Popup\r\n function buildPrimaryLocationDropdown(locId) {\r\n const select = dropdown.build({\r\n label: 'Primary Location',\r\n style: 'secondary',\r\n });\r\n\r\n const data = locations.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 dropdown.populate(select, data, locId);\r\n\r\n return select;\r\n }\r\n function buildSecondaryLocationDropdown(secLocId) {\r\n const select = dropdown.build({\r\n label: 'Secondary Location',\r\n style: 'secondary',\r\n });\r\n\r\n if (!locations.Secondary || locations.Secondary.legnth < 1) return select;\r\n\r\n const data = locations.Secondary.filter(sloc => {\r\n return sloc.primaryLocId === secLocId ? true : false;\r\n }).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 data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(select, data, secLocId);\r\n\r\n return select;\r\n }\r\n function buildResultsDropdown(result = '') {\r\n const select = dropdown.build({\r\n label: 'Results',\r\n style: 'secondary',\r\n });\r\n\r\n const data = Object.values(successTypes).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 data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n const successType = result || data[0].value;\r\n successDetails = successTypes[successType];\r\n\r\n dropdown.populate(select, data, result);\r\n\r\n return select;\r\n }\r\n function buildPromptsDropdown(code = '') {\r\n const select = dropdown.build({\r\n label: 'Prompts',\r\n style: 'secondary',\r\n });\r\n\r\n const data = dropdownData.prompts.map(op => {\r\n return {\r\n value: op.Code,\r\n text: `${op.Code} ${op.Caption}`,\r\n };\r\n });\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(select, data, code);\r\n\r\n return select;\r\n }\r\n function buildAttemptsDropdown(attempt = '') {\r\n const select = dropdown.build({\r\n label: 'Attempts',\r\n style: 'secondary',\r\n });\r\n\r\n const 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\r\n dropdown.populate(select, data, attempt);\r\n\r\n return select;\r\n }\r\n function buildCommunityIntegrationDropdown(ciLevel = '') {\r\n const select = dropdown.build({\r\n label: 'Community Integration',\r\n style: 'secondary',\r\n });\r\n\r\n const data = dropdownData.ci.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 dropdown.populate(select, data, ciLevel);\r\n\r\n return select;\r\n }\r\n function buildTimeInputs(startTime, endTime) {\r\n const start = input.build({\r\n label: 'Start Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: startTime,\r\n });\r\n const 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 const timeWrap = document.createElement('div');\r\n timeWrap.appendChild(start);\r\n timeWrap.appendChild(end);\r\n\r\n return { timeWrap, start, end };\r\n }\r\n function buildNoteInput(note) {\r\n const 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 return noteInput;\r\n }\r\n function buildReviewNoteInput(note) {\r\n const noteInput = input.build({\r\n label: 'Review Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n return noteInput;\r\n }\r\n function buildNotifyCheckbox() {\r\n const notifyEmployeeCheckbox = input.buildCheckbox({\r\n text: 'Notify Employee via System Message',\r\n });\r\n\r\n return notifyEmployeeCheckbox;\r\n }\r\n function buildSaveButton(isEdit) {\r\n const text = isEdit ? 'Update' : 'Save';\r\n const btn = button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildDeleteButton() {\r\n const btn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildAddNoteButton() {\r\n const btn = button.build({\r\n text: 'Add Review Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n return btn;\r\n }\r\n function buildCardEnteredByDetails(enteredBy, lastUpdatedDateDirty) {\r\n let lastEditedTime = lastUpdatedDateDirty.split(' ')[1];\r\n const lastEditHH = lastEditedTime.split(':')[0];\r\n const lastEditMM = UTIL.leadingZero(lastEditedTime.split(':')[1]);\r\n lastEditedTime = `${lastEditHH}:${lastEditMM} ${lastUpdatedDateDirty.split(' ')[2]}`;\r\n const lastEditedDate = lastUpdatedDateDirty.split(' ')[0];\r\n const lastEdited = `${lastEditedDate} ${lastEditedTime}`;\r\n\r\n const txtArea = document.createElement('p');\r\n txtArea.classList.add('enteredByDetail');\r\n txtArea.innerHTML = `Entered By: ${enteredBy}
    Last Updated: ${lastEdited}`;\r\n\r\n return txtArea;\r\n }\r\n function showDetailViewPopup(editData, outcomeData) {\r\n detailsPopup = POPUP.build({});\r\n const tmpData = {\r\n notifyEmployee: 'N',\r\n reviewNote: outcomeData.reviewNote || ''\r\n };\r\n\r\n if (editData) {\r\n locationID = editData.Location_ID || '';\r\n tmpData.primaryLoc = editData.Location_ID || '';\r\n tmpData.secLoc = editData.Locations_Secondary_ID || '';\r\n tmpData.success = editData.Objective_Success || '';\r\n tmpData.prompt = editData.Prompt_Type || '';\r\n tmpData.attempt = editData.Prompt_Number || '';\r\n tmpData.ci = editData.community_integration_level || '';\r\n tmpData.startTime = editData.start_time || '';\r\n tmpData.endTime = editData.end_time || '';\r\n tmpData.note = editData.Objective_Activity_Note || '';\r\n }\r\n\r\n const primaryLocationDropdown = buildPrimaryLocationDropdown(editData.Location_ID);\r\n const secondaryLocationDropdown = buildSecondaryLocationDropdown(editData.Locations_Secondary_ID);\r\n const resultsDropdown = buildResultsDropdown(editData.objective_success_description);\r\n const promptsDropdown = buildPromptsDropdown(editData.Prompt_Type);\r\n const attemptsDropdown = buildAttemptsDropdown(editData.Prompt_Number);\r\n const cIDropdown = buildCommunityIntegrationDropdown(editData.community_integration_level);\r\n const timeInputs = buildTimeInputs(editData.start_time, editData.end_time);\r\n const noteInput = buildNoteInput(editData.Objective_Activity_Note);\r\n const reviewNoteInput = buildReviewNoteInput(outcomeData.reviewNote);\r\n const notifyCheckbox = buildNotifyCheckbox();\r\n const saveBtn = buildSaveButton(true);\r\n const deleteBtn = buildDeleteButton();\r\n const lastEditBy = buildCardEnteredByDetails(editData.submitted_by_user_id, editData.Last_Update);\r\n \r\n\r\n const checkShowFields = () => {\r\n const showAttempts = successDetails?.Show_Attempts;\r\n const showPrompts = successDetails?.Show_Prompts;\r\n const showTime = successDetails?.Show_Time;\r\n const showCI = successDetails?.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 const checkRequiredFields = () => {\r\n const showAttempts = successDetails?.Show_Attempts;\r\n const showPrompts = successDetails?.Show_Prompts;\r\n const showTime = successDetails?.Show_Time;\r\n const showCI = successDetails?.Show_Community_Integration;\r\n\r\n const attemptsRequired = successDetails?.Attempts_Required;\r\n const promptsRequired = successDetails?.Prompt_Required;\r\n const timeRequired = successDetails?.Times_Required;\r\n const ciRequired = successDetails?.Community_Integration_Required;\r\n const noteRequired = successDetails?.Notes_Required;\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 (!tmpData.attempt || tmpData.attempt === '') {\r\n attemptsDropdown.classList.add('error');\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 (!tmpData.prompt || tmpData.prompt === '') {\r\n promptsDropdown.classList.add('error');\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 (!tmpData.ci || tmpData.ci === '') {\r\n cIDropdown.classList.add('error');\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 (tmpData.startTime === '') {\r\n timeInputs.start.classList.add('error');\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n }\r\n if (tmpData.endTime === '') {\r\n timeInputs.end.classList.add('error');\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 (!tmpData.note || tmpData.note === '') {\r\n noteInput.classList.add('error');\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 const errors = [...detailsPopup.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 const checkErrors = () => {\r\n const 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\r\n primaryLocationDropdown.addEventListener('change', e => {\r\n tmpData.primaryLoc = e.target.value;\r\n });\r\n secondaryLocationDropdown.addEventListener('change', e => {\r\n tmpData.secLoc = e.target.value;\r\n });\r\n resultsDropdown.addEventListener('change', e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n tmpData.success = selectedOption.dataset.success;\r\n successDetails = successTypes[selectedOption.value];\r\n\r\n if (selectedOption.value === '') {\r\n resultsDropdown.classList.add('error');\r\n } else {\r\n resultsDropdown.classList.remove('error');\r\n }\r\n\r\n checkErrors();\r\n checkRequiredFields();\r\n });\r\n promptsDropdown.addEventListener('change', e => {\r\n tmpData.prompt = e.target.value;\r\n checkRequiredFields();\r\n });\r\n attemptsDropdown.addEventListener('change', e => {\r\n tmpData.attempt = e.target.value;\r\n checkRequiredFields();\r\n });\r\n cIDropdown.addEventListener('change', e => {\r\n tmpData.ci = e.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n timeInputs.start.addEventListener('change', e => {\r\n if (e.target) {\r\n tmpData.startTime = e.target.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n timeInputs.end.addEventListener('change', e => {\r\n if (e.target) {\r\n tmpData.endTime = e.target.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n noteInput.addEventListener('change', e => {\r\n tmpData.note = e.target.value;\r\n checkRequiredFields();\r\n });\r\n reviewNoteInput.addEventListener('change', e => {\r\n tmpData.reviewNote = e.target.value;\r\n });\r\n notifyCheckbox.addEventListener('change', e => {\r\n tmpData.notifyEmployee = e.target.checked ? 'Y' : 'N';\r\n });\r\n\r\n saveBtn.addEventListener('click', async e => {\r\n // main outcome\r\n const updateData = {\r\n personId: selectedConsumerId,\r\n objectiveId: editData.Objective_ID,\r\n activityId: outcomeData.activityId,\r\n objdate: dates.formateToISO(editData.Objective_Date.split(' ')[0]),\r\n success: tmpData.success,\r\n goalnote: UTIL.removeUnsavableNoteText(tmpData.note),\r\n promptType: tmpData.prompt === '' ? '0' : tmpData.prompt,\r\n promptNumber: tmpData.attempt === '' ? '0' : tmpData.attempt,\r\n locationId: tmpData.primaryLoc,\r\n locationSecondaryId: tmpData.secLoc === '' ? 0 : tmpData.secLoc,\r\n goalStartTime: tmpData.startTime,\r\n goalEndTime: tmpData.endTime,\r\n goalCILevel: tmpData.ci,\r\n }\r\n outcomesAjax.saveGoals(updateData, () => {\r\n POPUP.hide(detailsPopup);\r\n });\r\n\r\n // review note\r\n const rnUpdateData = {\r\n objectiveActivityId: outcomeData.activityId,\r\n reviewNote: tmpData.reviewNote,\r\n consumerId: selectedConsumerId,\r\n objectiveActivityDate: editData.Objective_Date.split(' ')[0],\r\n notifyEmployee: tmpData.notifyEmployee,\r\n }\r\n await outcomesAjax.addReviewNote({\r\n token: $.session.Token,\r\n ...rnUpdateData,\r\n });\r\n \r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n });\r\n deleteBtn.addEventListener('click', e => {\r\n outcomesAjax.deleteGoal(outcomeData.activityId, selectedConsumerId, selectedDate, async () => {\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n POPUP.hide(detailsPopup);\r\n });\r\n });\r\n\r\n if (!$.session.OutcomesReview) {\r\n reviewNoteInput.classList.add('disabled');\r\n notifyCheckbox.classList.add('disabled');\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(deleteBtn);\r\n\r\n detailsPopup.appendChild(primaryLocationDropdown);\r\n if (locations.Secondary) detailsPopup.appendChild(secondaryLocationDropdown);\r\n detailsPopup.appendChild(resultsDropdown);\r\n detailsPopup.appendChild(promptsDropdown);\r\n detailsPopup.appendChild(attemptsDropdown);\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') {\r\n detailsPopup.appendChild(cIDropdown);\r\n detailsPopup.appendChild(timeInputs.timeWrap);\r\n }\r\n\r\n detailsPopup.appendChild(noteInput);\r\n detailsPopup.appendChild(reviewNoteInput);\r\n detailsPopup.appendChild(notifyCheckbox);\r\n detailsPopup.appendChild(btnWrap);\r\n detailsPopup.appendChild(lastEditBy);\r\n\r\n POPUP.show(detailsPopup);\r\n\r\n checkShowFields();\r\n\r\n return;\r\n\r\n //? Might need below but need more data from Mike\r\n if (\r\n editData &&\r\n editData.submitted_by_user_id &&\r\n editData.submitted_by_user_id.toUpperCase() !== $.session.UserId.toUpperCase()\r\n ) {\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.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 btnWrap.classList.add('hidden');\r\n }\r\n }\r\n function onDetailRowClick(outcome) {\r\n const getSuccessTypes = new Promise((resolve, reject) => {\r\n outcomesAjax.getOutcomesSuccessTypes(outcome.goalTypeID, results => {\r\n unOrderedSuccessObj = {};\r\n successTypes = {};\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 successTypes[key] = unOrderedSuccessObj[key];\r\n });\r\n\r\n resolve('success');\r\n });\r\n });\r\n\r\n const getActivity = new Promise((resolve, reject) => {\r\n outcomesAjax.getObjectiveActivity(outcome.activityId, results => {\r\n activityRes = results;\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([getSuccessTypes, getActivity]).then(function () {\r\n showDetailViewPopup(activityRes[0], outcome);\r\n });\r\n }\r\n\r\n // Filtering\r\n //----------------------------------------------------\r\n // date span filter\r\n function calculateSpanFromDateRange() {\r\n const toDate = new Date(`${selectedDateSpan.to} 00:00:00`);\r\n const fromDate = new Date(`${selectedDateSpan.from} 00:00:00`);\r\n\r\n const toWeekStart = dates.startDayOfWeek(toDate);\r\n const fromWeekStart = dates.startDayOfWeek(fromDate);\r\n const isoToDate = dates.formatISO(toWeekStart).split('T')[0];\r\n const isoFromDate = dates.formatISO(fromWeekStart).split('T')[0];\r\n\r\n switch (activeTab) {\r\n case NO_FREQ: {\r\n spanLength = dates.differenceInDays(toDate, fromDate);\r\n break;\r\n }\r\n case HOUR: {\r\n spanLength = dates.differenceInDays(toDate, fromDate);\r\n spanLength = spanLength * 24;\r\n break;\r\n }\r\n case DAY: {\r\n spanLength = dates.differenceInDays(toDate, fromDate);\r\n break;\r\n }\r\n case WEEK: {\r\n spanLength = dates.differenceInWeeks(toDate, fromDate);\r\n break;\r\n }\r\n case MONTH: {\r\n spanLength = dates.differenceInMonths(toDate, fromDate);\r\n break;\r\n }\r\n case YEAR: {\r\n spanLength = dates.differenceInYears(toDate, fromDate);\r\n break;\r\n }\r\n }\r\n }\r\n function updateSpanInput() {\r\n daysBackInput.value = spanLength;\r\n }\r\n function updateDateRangeInputs() {\r\n fromDateInput.value = selectedDateSpan.from;\r\n toDateInput.value = selectedDateSpan.to;\r\n }\r\n function updateFilterDates() {\r\n daysBackToggleBtn.textContent = `${unitType} Back`;\r\n daysBackLabel.textContent = `${unitType} Back`;\r\n updateDateRangeInputs();\r\n updateSpanInput();\r\n }\r\n function buildFilterDates() {\r\n const toggleButtonWrap = _DOM.createElement('div', { class: 'dateFilterToggle' });\r\n daysBackToggleBtn = _DOM.createElement('button', {\r\n class: 'active',\r\n id: 'days-back-btn',\r\n text: `${unitType} Back`,\r\n });\r\n const dateRangeToggleBtn = _DOM.createElement('button', { id: 'date-range-btn', text: 'Date Range' });\r\n toggleButtonWrap.appendChild(daysBackToggleBtn);\r\n toggleButtonWrap.appendChild(dateRangeToggleBtn);\r\n\r\n const daysBackInputWrap = _DOM.createElement('div', { class: ['daysBack', 'active'] });\r\n daysBackLabel = _DOM.createElement('label', { for: 'daysBack', text: `${unitType} Back` });\r\n daysBackInput = _DOM.createElement('input', {\r\n id: 'daysBack',\r\n type: 'number',\r\n name: 'daysBack',\r\n value: spanLength,\r\n });\r\n daysBackInputWrap.appendChild(daysBackLabel);\r\n daysBackInputWrap.appendChild(daysBackInput);\r\n\r\n const dateRangeInputWrap = _DOM.createElement('div', { class: ['dateRange'] });\r\n const dateRangeInnerWrap1 = _DOM.createElement('div');\r\n const dateRangeInnerWrap2 = _DOM.createElement('div');\r\n dateRangeInputWrap.appendChild(dateRangeInnerWrap1);\r\n dateRangeInputWrap.appendChild(dateRangeInnerWrap2);\r\n\r\n const fromDateLabel = _DOM.createElement('label', { for: 'fromDate', text: `From:` });\r\n fromDateInput = _DOM.createElement('input', {\r\n id: 'fromDate',\r\n type: 'date',\r\n name: 'fromDate',\r\n value: selectedDateSpan.from,\r\n });\r\n dateRangeInnerWrap1.appendChild(fromDateLabel);\r\n dateRangeInnerWrap1.appendChild(fromDateInput);\r\n\r\n const toDateLabel = _DOM.createElement('label', { for: 'toDate', text: `To:` });\r\n toDateInput = _DOM.createElement('input', {\r\n id: 'toDate',\r\n type: 'date',\r\n name: 'toDate',\r\n value: selectedDateSpan.to,\r\n });\r\n dateRangeInnerWrap2.appendChild(toDateLabel);\r\n dateRangeInnerWrap2.appendChild(toDateInput);\r\n\r\n const dateWrap = _DOM.createElement('div', { class: 'dateFilter' });\r\n dateWrap.appendChild(toggleButtonWrap);\r\n dateWrap.appendChild(daysBackInputWrap);\r\n dateWrap.appendChild(dateRangeInputWrap);\r\n\r\n toggleButtonWrap.addEventListener('click', async e => {\r\n if (e.target.classList.contains('active')) {\r\n return;\r\n }\r\n\r\n const daysBack = dateWrap.querySelector('.daysBack');\r\n const dateRange = dateWrap.querySelector('.dateRange');\r\n\r\n if (e.target === daysBackToggleBtn) {\r\n isDaysBackFilter = true;\r\n daysBack.classList.add('active');\r\n daysBackToggleBtn.classList.add('active');\r\n dateRange.classList.remove('active');\r\n dateRangeToggleBtn.classList.remove('active');\r\n\r\n if (selectedDateSpan.to !== selectedDate) {\r\n setUnitType();\r\n updateFilterDates();\r\n \r\n await getReviewTableDataSecondary();\r\n \r\n populateTabSections();\r\n }\r\n\r\n return;\r\n }\r\n\r\n isDaysBackFilter = false;\r\n dateRange.classList.add('active');\r\n dateRangeToggleBtn.classList.add('active');\r\n daysBack.classList.remove('active');\r\n daysBackToggleBtn.classList.remove('active');\r\n });\r\n\r\n dateWrap.addEventListener('change', async e => {\r\n if (e.target.id === 'daysBack') {\r\n spanLength = e.target.value;\r\n selectedDateSpan.to = selectedDate;\r\n\r\n switch (activeTab) {\r\n case NO_FREQ: {\r\n const dateObj = dates.subDays(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case HOUR: {\r\n const dateObj = dates.subHours(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case DAY: {\r\n const dateObj = dates.subDays(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case WEEK: {\r\n const dateObj = dates.subWeeks(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case MONTH: {\r\n const dateObj = dates.subMonths(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n case YEAR: {\r\n const dateObj = dates.subYears(new Date(`${selectedDateSpan.to} 00:00:00`), spanLength);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n break;\r\n }\r\n }\r\n\r\n updateDateRangeInputs();\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n }\r\n if (e.target.id === 'fromDate') {\r\n selectedDateSpan.from = e.target.value;\r\n calculateSpanFromDateRange();\r\n updateSpanInput();\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n }\r\n if (e.target.id === 'toDate') {\r\n selectedDateSpan.to = e.target.value;\r\n calculateSpanFromDateRange();\r\n updateSpanInput();\r\n await getReviewTableDataSecondary();\r\n populateTabSections();\r\n }\r\n });\r\n\r\n return dateWrap;\r\n }\r\n // current filter display\r\n function buildCurrentFilterdisplay() {\r\n const currentFilterDisplay = _DOM.createElement('div', { class: 'filteredByData' });\r\n const dateFilter = buildFilterDates();\r\n const filteredByWrap = _DOM.createElement('div', { class: 'filteredByWrap' });\r\n const btnWrap = _DOM.createElement('div', { class: 'filterBtnWrap' });\r\n servBtnWrap = _DOM.createElement('div', { class: 'filterSelectionBtnWrap' });\r\n typeBtnWrap = _DOM.createElement('div', { class: 'filterSelectionBtnWrap' });\r\n\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:',\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:',\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.appendChild(filterBtn);\r\n\r\n servBtnWrap.appendChild(serviceBtn);\r\n servBtnWrap.appendChild(serviceCloseBtn);\r\n\r\n typeBtnWrap.appendChild(outcomeTypeBtn);\r\n typeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n\r\n filteredByWrap.appendChild(btnWrap);\r\n filteredByWrap.appendChild(servBtnWrap);\r\n filteredByWrap.appendChild(typeBtnWrap);\r\n currentFilterDisplay.appendChild(filteredByWrap);\r\n currentFilterDisplay.appendChild(dateFilter);\r\n\r\n return currentFilterDisplay;\r\n }\r\n function updateCurrentFilterDisplay(service = '%', outcomeType = '%') {\r\n if (service === '%' || service === 'All') {\r\n servBtnWrap.classList.add('hidden');\r\n } else {\r\n servBtnWrap.classList.remove('hidden');\r\n serviceBtn.textContent = `Service: ${service}`;\r\n }\r\n\r\n if (outcomeType === '%' || outcomeType === 'All') {\r\n typeBtnWrap.classList.add('hidden');\r\n } else {\r\n typeBtnWrap.classList.remove('hidden');\r\n outcomeTypeBtn.textContent = `Outcome Type: ${outcomeType}`;\r\n }\r\n }\r\n // filter popup\r\n function applyFilter() {\r\n updateCurrentFilterDisplay(serviceFilterVal.text, outcomeTypeFilterVal.text);\r\n\r\n populateTabSections();\r\n }\r\n async function buildTypesDropdown() {\r\n const typesDrop = dropdown.build({\r\n dropdownId: 'outcomeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n const data = goalTypes.map(type => {\r\n return {\r\n value: type.goalTypeId,\r\n text: type.goalTypeDescription,\r\n };\r\n });\r\n data.unshift({ value: '%', text: 'All' });\r\n\r\n const defaultValue = outcomeTypeFilterVal?.value ?? '%';\r\n dropdown.populate(typesDrop, data, defaultValue);\r\n\r\n return typesDrop;\r\n }\r\n function buildServiceDropdown() {\r\n const servDrop = dropdown.build({\r\n label: 'Service',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n const data = [\r\n { value: 'All', text: 'All' },\r\n { value: 'Complete', text: 'Complete' },\r\n { value: 'Incomplete', text: 'Incomplete' },\r\n ];\r\n\r\n const defaultValue = serviceFilterVal?.value ?? 'All';\r\n dropdown.populate(servDrop, data, defaultValue);\r\n\r\n return servDrop;\r\n }\r\n function closeFilter(closefilter) {\r\n if (closefilter == 'serviceBtn') {\r\n serviceFilterVal.text = 'All';\r\n serviceFilterVal.value = 'All';\r\n }\r\n if (closefilter == 'outcomeTypeBtn') {\r\n outcomeTypeFilterVal.text = 'All';\r\n outcomeTypeFilterVal.value = '%';\r\n }\r\n applyFilter();\r\n }\r\n async function showFilterPopup(IsShow) {\r\n let tempServiceVal, tempTypeVal;\r\n\r\n filterPopup = POPUP.build({\r\n closeCallback: () => {},\r\n });\r\n\r\n const serviceDropdown = buildServiceDropdown();\r\n const typesDropdown = await buildTypesDropdown();\r\n const applyButton = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n applyButton.classList.add('singleBtn');\r\n\r\n serviceDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tempServiceVal = selectedOption;\r\n });\r\n typesDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tempTypeVal = selectedOption;\r\n });\r\n applyButton.addEventListener('click', () => {\r\n serviceFilterVal = tempServiceVal ?? serviceFilterVal;\r\n outcomeTypeFilterVal = tempTypeVal ?? outcomeTypeFilterVal;\r\n applyFilter();\r\n POPUP.hide(filterPopup);\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn') filterPopup.appendChild(serviceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(typesDropdown);\r\n filterPopup.appendChild(applyButton);\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Table\r\n //----------------------------------------------------\r\n function buildToggleIcon() {\r\n const toggleIcon = _DOM.createElement('div', { class: ['rowToggle', 'closed'] });\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n return toggleIcon;\r\n }\r\n function buildTable(data, frequency) {\r\n let showTabExclamation;\r\n\r\n const table = _DOM.createElement('div');\r\n table.classList.add('outcomesReviewTable');\r\n\r\n const mainHeading = _DOM.createElement('div', { class: ['heading', 'heading-main'] });\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Individual
    \r\n
    Service Statement
    \r\n
    Frequency
    \r\n
    Times Documented
    \r\n
    Success Rate
    \r\n
    \r\n `;\r\n table.appendChild(mainHeading);\r\n\r\n for (const objId in data) {\r\n const d = data[objId];\r\n\r\n const mainRowWrap = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-main'] });\r\n table.appendChild(mainRowWrap);\r\n\r\n const mainRow = _DOM.createElement('div', { class: ['row', 'row-main'] });\r\n mainRow.setAttribute('data-objid', objId);\r\n mainRow.setAttribute('data-outcomeType', d.outcomeType);\r\n mainRow.setAttribute('data-outcomeTypeId', d.outcomeTypeId);\r\n mainRow.setAttribute('data-showExclamation', d.showExclamation);\r\n const mainTI = buildToggleIcon();\r\n mainTI.classList.add('mainToggle');\r\n mainRow.appendChild(mainTI);\r\n mainRow.innerHTML += `\r\n
    ${d.individual}
    \r\n
    ${d.serviceStatement}
    \r\n
    ${d.frequency}
    \r\n
    ${d.timesDoc}
    \r\n
    ${d.successRate}
    \r\n
    ${d.showExclamation ? icons.error : ''}
    \r\n `;\r\n mainRowWrap.appendChild(mainRow);\r\n \r\n\r\n const mainRowSubWrap = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-main-sub', 'hidden'] });\r\n mainRowWrap.appendChild(mainRowSubWrap);\r\n\r\n mainRow.addEventListener('click', e => {\r\n const target = e.target;\r\n\r\n if (!target.classList.contains('mainToggle')) return;\r\n\r\n const showChildren = target.classList.contains('closed');\r\n\r\n if (showChildren) {\r\n target.innerHTML = icons.keyArrowDown;\r\n target.classList.remove('closed');\r\n mainRowSubWrap.classList.remove('hidden');\r\n } else {\r\n target.innerHTML = icons.keyArrowRight;\r\n target.classList.add('closed');\r\n mainRowSubWrap.classList.add('hidden');\r\n }\r\n });\r\n\r\n for (const date in data[objId].reviewDates) {\r\n const dateRowWrap = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-date'] });\r\n mainRowSubWrap.appendChild(dateRowWrap);\r\n\r\n const dateRow = _DOM.createElement('div', { class: ['row', 'row-date'] });\r\n const dateTI = buildToggleIcon();\r\n dateTI.classList.add('subToggle');\r\n dateRow.appendChild(dateTI);\r\n const dateForRow = frequency === 'H' ? dates.convertFromMilitary(date) : date;\r\n dateRow.innerHTML += `
    ${dateForRow !== 'nf' ? dateForRow : 'No Frequency'}
    `;\r\n dateRowWrap.appendChild(dateRow);\r\n if (exclamationDateMap[objId] && exclamationDateMap[objId][date]) {\r\n dateRow.innerHTML += `
    ${icons.error}
    `;\r\n showTabExclamation = true;\r\n }\r\n\r\n const detailsTable = _DOM.createElement('div', { class: ['rowWrap', 'rowWrap-date-sub', 'hidden'] });\r\n dateRowWrap.appendChild(detailsTable);\r\n\r\n dateRow.addEventListener('click', e => {\r\n const target = e.target;\r\n\r\n if (!target.classList.contains('subToggle')) return;\r\n\r\n const showChildren = target.classList.contains('closed');\r\n\r\n if (showChildren) {\r\n target.innerHTML = icons.keyArrowDown;\r\n target.classList.remove('closed');\r\n detailsTable.classList.remove('hidden');\r\n } else {\r\n target.innerHTML = icons.keyArrowRight;\r\n target.classList.add('closed');\r\n detailsTable.classList.add('hidden');\r\n }\r\n });\r\n\r\n if (Object.keys(data[objId].reviewDates[date]).length > 0) {\r\n const detailsHeading = _DOM.createElement('div', { class: ['heading', 'heading-details'] });\r\n detailsHeading.innerHTML = `\r\n
    Employee
    \r\n
    Result
    \r\n
    Attempts
    \r\n
    Prompts
    \r\n
    Note
    \r\n `;\r\n detailsTable.appendChild(detailsHeading);\r\n\r\n for (const activityId in data[objId].reviewDates[date]) {\r\n const details = data[objId].reviewDates[date][activityId];\r\n\r\n const detailRow = _DOM.createElement('div', { class: ['row', 'row-details'] });\r\n detailRow.innerHTML = `\r\n
    ${details.employee}
    \r\n
    ${details.result}
    \r\n
    ${details.attempts}
    \r\n
    ${details.prompts}
    \r\n
    ${details.note}
    \r\n `;\r\n detailsTable.appendChild(detailRow);\r\n\r\n detailRow.addEventListener('click', () => {\r\n onDetailRowClick({\r\n goalTypeID: d.outcomeTypeId,\r\n activityId: details.activityId,\r\n date: date,\r\n result: details.result,\r\n attempt: details.attempts,\r\n employeeId: details.staffId,\r\n reviewNote: details.reviewNote\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n return { sectionTable: table, showTabExclamation };\r\n }\r\n\r\n // Tabs\r\n //----------------------------------------------------\r\n function buildTabs() {\r\n return tabs.build({\r\n sections: Object.values(tabSections),\r\n active: 0,\r\n tabNavCallback: async function (data) {\r\n activeTab = data.activeSection.toLowerCase();\r\n setUnitType();\r\n updateFilterDates();\r\n \r\n await getReviewTableDataSecondary();\r\n\r\n populateTabSections();\r\n },\r\n });\r\n }\r\n function populateTabSections(data) {\r\n if (!data) data = outcomesData;\r\n\r\n const key = FREQ_MAP[activeTab];\r\n const sectionID = tabSections[key].toLowerCase();\r\n const section = document.getElementById(sectionID);\r\n section.innerHTML = '';\r\n\r\n const { sectionTable, showTabExclamation } = buildTable(data[key], key);\r\n\r\n const rows = [...sectionTable.querySelectorAll('.row.row-main')];\r\n rows.forEach(row => {\r\n const outcomeType = row.dataset.outcometype;\r\n const outcomeTypeId = row.dataset.outcometypeid;\r\n const showExclamation = row.dataset.showexclamation;\r\n\r\n if (outcomeTypeFilterVal.text !== 'All' && outcomeTypeFilterVal.text !== outcomeType) {\r\n row.parentNode.style.display = 'none';\r\n return;\r\n }\r\n\r\n if (serviceFilterVal.text === 'Complete' && showExclamation === 'true') {\r\n row.parentNode.style.display = 'none';\r\n return;\r\n }\r\n\r\n if (serviceFilterVal.text === 'Incomplete' && showExclamation === 'false') {\r\n row.parentNode.style.display = 'none';\r\n return;\r\n }\r\n\r\n row.parentNode.style.display = 'flex';\r\n });\r\n\r\n const tabNavItems = [...document.querySelectorAll('.tabs__nav--item')];\r\n tabNavItems.forEach(item => {\r\n const freq = item.getAttribute('section');\r\n\r\n if (freq.toLowerCase() === activeTab.toLowerCase() && showTabExclamation) {\r\n item.innerHTML = `${freq} ${icons.error}`;\r\n } else {\r\n item.innerHTML = freq;\r\n }\r\n });\r\n\r\n section.appendChild(sectionTable);\r\n\r\n return;\r\n }\r\n\r\n // Main\r\n //----------------------------------------------------\r\n function getPercentForSuccessRate(topNumb, bottomNum) {\r\n if (bottomNum === '0' && topNumb === '0') {\r\n return 'N';\r\n }\r\n\r\n if (bottomNum === '0' && topNumb !== '0') {\r\n return '';\r\n }\r\n\r\n const percent = ((parseInt(topNumb) / parseInt(bottomNum)) * 100).toString().slice(0, 5);\r\n\r\n return `${percent}%`;\r\n }\r\n function setDatesForMiddleTier() {\r\n Object.keys(outcomesData).forEach(occ => {\r\n if (occ === 'NF') return;\r\n\r\n Object.keys(outcomesData[occ]).forEach(objId => {\r\n outcomesData[occ][objId].reviewDates = {};\r\n \r\n const dObj = {};\r\n\r\n if (occ === 'H') {\r\n dObj[0] = currentDateTime;\r\n dObj[0].setMinutes(0);\r\n dObj[0].setSeconds(0);\r\n } else {\r\n dObj[0] = new Date(`${selectedDateSpan.to} 00:00:00`)\r\n }\r\n\r\n const loopLength = isDaysBackFilter ? spanLength - 1 : spanLength;\r\n for (let index = 0; index < loopLength; index++) {\r\n switch (occ) {\r\n case 'H': {\r\n const nextDate = dates.subHours(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'D': {\r\n const nextDate = dates.subDays(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'W': {\r\n const nextDate = dates.subWeeks(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'M': {\r\n const nextDate = dates.subMonths(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n case 'Y': {\r\n const nextDate = dates.subYears(dObj[index], 1);\r\n dObj[index + 1] = nextDate;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n Object.keys(dObj).forEach(key => {\r\n switch (occ) {\r\n case 'H': {\r\n //2024-10-31T14:11:35-04:00\r\n const militaryTime = dates.formatISO(dObj[key]).slice(11, 16);\r\n outcomesData[occ][objId].reviewDates[militaryTime] = {};\r\n break;\r\n }\r\n case 'D': {\r\n const isoDate = dates.formatISO(dObj[key]).split('T')[0];\r\n const stDate = dates.formateToStandard(isoDate);\r\n outcomesData[occ][objId].reviewDates[stDate] = {};\r\n break;\r\n }\r\n case 'W': {\r\n const weekStart = dates.startDayOfWeek(dObj[key]);\r\n const isoStartDate = dates.formatISO(weekStart).split('T')[0];\r\n const stStartDate = dates.formateToStandard(isoStartDate);\r\n\r\n const weekEnd = dates.endOfWeek(dObj[key]);\r\n const isoEndDate = dates.formatISO(weekEnd).split('T')[0];\r\n const stEndDate = dates.formateToStandard(isoEndDate);\r\n\r\n const dateKey = `${stStartDate}-${stEndDate}`;\r\n\r\n outcomesData[occ][objId].reviewDates[dateKey] = {};\r\n break;\r\n }\r\n case 'M': {\r\n const isoDate = dates.formatISO(dObj[key]).split('T')[0];\r\n const stDate = dates.formateToStandard(isoDate);\r\n const dateKey = MONTHS[stDate.split('/')[0]];\r\n outcomesData[occ][objId].reviewDates[dateKey] = {};\r\n break;\r\n }\r\n case 'Y': {\r\n const isoDate = dates.formatISO(dObj[key]).split('T')[0];\r\n const stDate = dates.formateToStandard(isoDate);\r\n const dateKey = stDate.split('/')[2];\r\n outcomesData[occ][objId].reviewDates[dateKey] = {};\r\n break;\r\n }\r\n }\r\n });\r\n });\r\n });\r\n }\r\n function setUnitType() {\r\n selectedDateSpan.to = selectedDate;\r\n\r\n switch (activeTab) {\r\n case NO_FREQ: {\r\n const dateObj = dates.subDays(new Date(`${selectedDate} 00:00:00`), NO_FREQ_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Day(s)';\r\n spanLength = NO_FREQ_SPAN;\r\n break;\r\n }\r\n case HOUR: {\r\n const dateObj = dates.subHours(new Date(`${selectedDate} 00:00:00`), HOUR_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Hour(s)';\r\n spanLength = HOUR_SPAN;\r\n break;\r\n }\r\n case DAY: {\r\n const dateObj = dates.subDays(new Date(`${selectedDate} 00:00:00`), DAY_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Day(s)';\r\n spanLength = DAY_SPAN;\r\n break;\r\n }\r\n case WEEK: {\r\n let dateObj;\r\n\r\n if (WEEK_SPAN === 1) {\r\n dateObj = new Date(`${selectedDate} 00:00:00`)\r\n } else {\r\n dateObj = dates.subWeeks(new Date(`${selectedDate} 00:00:00`), WEEK_SPAN);\r\n }\r\n \r\n dateObj = dates.startDayOfWeek(dateObj);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Week(s)';\r\n spanLength = WEEK_SPAN;\r\n break;\r\n }\r\n case MONTH: {\r\n const dateObj = dates.subMonths(new Date(`${selectedDate} 00:00:00`), MONTH_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Month(s)';\r\n spanLength = MONTH_SPAN;\r\n break;\r\n }\r\n case YEAR: {\r\n const dateObj = dates.subYears(new Date(`${selectedDate} 00:00:00`), YEAR_SPAN);\r\n selectedDateSpan.from = dates.formatISO(dateObj).split('T')[0];\r\n unitType = 'Year(s)';\r\n spanLength = YEAR_SPAN;\r\n break;\r\n }\r\n default: {\r\n console.error(activeTab);\r\n throw new Error('something went wrong setting unit types');\r\n }\r\n }\r\n }\r\n function setTabSections() {\r\n tabSections = {};\r\n\r\n if (outcomesData.hasOwnProperty('NF')) tabSections['NF'] = NO_FREQ;\r\n if (outcomesData.hasOwnProperty('H')) tabSections['H'] = HOUR;\r\n if (outcomesData.hasOwnProperty('D')) tabSections['D'] = DAY;\r\n if (outcomesData.hasOwnProperty('W')) tabSections['W'] = WEEK;\r\n if (outcomesData.hasOwnProperty('M')) tabSections['M'] = MONTH;\r\n if (outcomesData.hasOwnProperty('Y')) tabSections['Y'] = YEAR;\r\n\r\n activeTab = Object.values(tabSections)[0];\r\n }\r\n function sortReviewTableData(dirtyData) {\r\n objIdSet = new Set();\r\n\r\n return dirtyData.reduce((a, d) => {\r\n const occurrence = d.objectiveRecurrance || 'NF';\r\n const objID = d.objectiveId;\r\n\r\n if (!occurrence || !objID) return a;\r\n\r\n objIdSet.add(objID);\r\n\r\n if (!a[occurrence]) {\r\n a[occurrence] = {};\r\n }\r\n\r\n if (!a[occurrence][objID]) {\r\n a[occurrence][objID] = {};\r\n }\r\n\r\n const freq = FREQUENCY[d.frequencyModifier] || '';\r\n const recurr = RECURRANCE[d.objectiveRecurrance] || '';\r\n\r\n a[occurrence][objID].showExclamation = false;\r\n a[occurrence][objID].individual = d.consumerName;\r\n a[occurrence][objID].serviceStatement = d.objectiveStatement;\r\n a[occurrence][objID].frequency = `${freq} ${d.objectiveIncrement} ${recurr}`;\r\n a[occurrence][objID].frequencyIncrement = d.objectiveIncrement;\r\n a[occurrence][objID].frequencyModifier = d.frequencyModifier;\r\n a[occurrence][objID].outcomeType = d.goalTypeDescription;\r\n a[occurrence][objID].outcomeTypeId = d.goalTypeId;\r\n\r\n return a;\r\n }, {});\r\n }\r\n function sortReviewTableDataSecondary(data, outcomeOjb) {\r\n timesDocByDate = {};\r\n\r\n data.forEach(d => {\r\n const occurrence = d.objectiveRecurrance || 'NF';\r\n const objID = d.objectiveId;\r\n const date = d.objective_date.split(' ')[0];\r\n const staffId = d.staffId;\r\n const activityId = d.objectiveActivityId;\r\n const percent = getPercentForSuccessRate(d.top_number, d.bottom_number);\r\n\r\n if (outcomeOjb[occurrence]) {\r\n if (outcomeOjb[occurrence][objID]) {\r\n outcomeOjb[occurrence][objID].successRate = percent;\r\n\r\n const prompt = dropdownData.prompts.find(p => p.Code === d.promptType);\r\n\r\n let dateThisBelongsTo;\r\n\r\n if (occurrence === 'NF') {\r\n outcomeOjb[occurrence][objID].timesDoc++;\r\n\r\n if (!outcomeOjb[occurrence][objID].reviewDates) {\r\n outcomeOjb[occurrence][objID].reviewDates = {};\r\n }\r\n\r\n if (!outcomeOjb[occurrence][objID].reviewDates['nf']) {\r\n outcomeOjb[occurrence][objID].reviewDates['nf'] = {};\r\n }\r\n\r\n if (!outcomeOjb[occurrence][objID].reviewDates['nf'][activityId]) {\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId] = {};\r\n }\r\n\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].employee = d.employee;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][\r\n activityId\r\n ].result = `${d.objectiveSuccessSymbol} ${d.objectiveSuccessDescription}`;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].attempts = d.promptNumber;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].prompts = `${prompt ? prompt.Code : ''} ${prompt ? prompt.Caption : ''}`;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].note = d.objectiveActivityNote;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].activityId = d.objectiveActivityId;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].staffId = staffId;\r\n outcomeOjb[occurrence][objID].reviewDates['nf'][activityId].reviewNote = d.reviewNote;\r\n\r\n return;\r\n }\r\n if (occurrence === 'H') {\r\n if (d.startTime) {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n let splitStart = d.startTime.split(':');\r\n let splitKey = key.split(':');\r\n\r\n if (splitStart[0] === splitKey[0]) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n }\r\n if (occurrence === 'D') {\r\n const splitDate = date.split('/');\r\n const month = splitDate[0] < 10 ? `0${splitDate[0]}` : splitDate[0];\r\n const day = splitDate[1] < 10 ? `0${splitDate[1]}` : splitDate[1];\r\n const year = splitDate[2];\r\n \r\n dateThisBelongsTo = `${month}/${day}/${year}`;\r\n }\r\n if (occurrence === 'W') {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n const [start, end] = key.split('-');\r\n const afterDate = new Date(`${start} 00:00:00`);\r\n const endDate = new Date(`${end} 00:00:00`);\r\n const compareDate = new Date(`${date} 00:00:00`);\r\n const isAfter = dates.isAfter(compareDate, afterDate);\r\n const isBefore = dates.isBefore(compareDate, endDate);\r\n\r\n if (isAfter && isBefore) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n if (occurrence === 'M') {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n let [month, day, year] = date.split('/');\r\n if (month < 10 && month.length === 1) {\r\n month = `0${month}`;\r\n }\r\n\r\n if (MONTHS[month] === key) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n if (occurrence === 'Y') {\r\n Object.keys(outcomeOjb[occurrence][objID].reviewDates).forEach(key => {\r\n const [month, day, year] = date.split('/');\r\n if (year === key) {\r\n dateThisBelongsTo = key;\r\n }\r\n });\r\n }\r\n\r\n if (!dateThisBelongsTo) return;\r\n if (!outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo]) return;\r\n\r\n outcomeOjb[occurrence][objID].timesDoc++;\r\n\r\n if (!timesDocByDate[occurrence]) timesDocByDate[occurrence] = {};\r\n if (!timesDocByDate[occurrence][objID]) timesDocByDate[occurrence][objID] = {};\r\n if (!timesDocByDate[occurrence][objID][dateThisBelongsTo]) timesDocByDate[occurrence][objID][dateThisBelongsTo] = {};\r\n if (!timesDocByDate[occurrence][objID][dateThisBelongsTo].timesDoc) {\r\n timesDocByDate[occurrence][objID][dateThisBelongsTo].timesDoc = 1;\r\n } else {\r\n timesDocByDate[occurrence][objID][dateThisBelongsTo].timesDoc++;\r\n }\r\n \r\n if (!outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId]) {\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId] = {};\r\n }\r\n\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].employee = d.employee;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][\r\n activityId\r\n ].result = `${d.objectiveSuccessSymbol} ${d.objectiveSuccessDescription}`;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].attempts = d.promptNumber;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][\r\n activityId\r\n ].prompts = `${prompt ? prompt.Code : ''} ${prompt ? prompt.Caption : ''}`;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].note = d.objectiveActivityNote;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].staffId = staffId;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].activityId = d.objectiveActivityId;\r\n outcomeOjb[occurrence][objID].reviewDates[dateThisBelongsTo][activityId].reviewNote = d.reviewNote;\r\n }\r\n }\r\n });\r\n }\r\n async function getReviewTableData() {\r\n const data = await outcomesAjax.getReviewTableData({\r\n consumerId: selectedConsumerId,\r\n objectiveDate: dates.formateToISO(selectedDate),\r\n });\r\n\r\n outcomesDataRaw = data;\r\n\r\n outcomesData = sortReviewTableData(data);\r\n setTabSections();\r\n setUnitType();\r\n }\r\n async function getReviewTableDataSecondary() {\r\n exclamationDateMap = {};\r\n setDatesForMiddleTier();\r\n\r\n const frequency = FREQ_MAP[activeTab];\r\n const data = await outcomesAjax.getReviewTableDataSecondary({\r\n consumerId: selectedConsumerId,\r\n startDate: selectedDateSpan.from,\r\n endDate: selectedDateSpan.to,\r\n objectiveIdList: Array.from(objIdSet).join(','),\r\n frequency,\r\n });\r\n\r\n outcomesDataSecondaryRaw = data.gridSecondary;\r\n\r\n Object.keys(outcomesData).forEach(a => {\r\n Object.keys(outcomesData[a]).forEach(b => {\r\n outcomesData[a][b].timesDoc = 0;\r\n outcomesData[a][b].successRate = 0;\r\n outcomesData[a][b].showExclamation = false;\r\n });\r\n });\r\n\r\n sortReviewTableDataSecondary(data.gridSecondary, outcomesData);\r\n\r\n Object.keys(outcomesData[frequency]).forEach(objId => {\r\n if (outcomesData[frequency][objId].successRate === 'N') {\r\n if (outcomesData[frequency][objId].timesDoc > 0) {\r\n outcomesData[frequency][objId].successRate = '0%';\r\n }\r\n\r\n if (outcomesData[frequency][objId].timesDoc === 0) {\r\n outcomesData[frequency][objId].successRate = '';\r\n }\r\n } else {\r\n if (outcomesData[frequency][objId].timesDoc > 0) {\r\n if (!outcomesData[frequency][objId].successRate) {\r\n outcomesData[frequency][objId].successRate = '100%';\r\n }\r\n } else if (outcomesData[frequency][objId].timesDoc === 0) {\r\n outcomesData[frequency][objId].successRate = '0%';\r\n }\r\n }\r\n \r\n if (outcomesData[frequency][objId].reviewDates) {\r\n Object.keys(outcomesData[frequency][objId].reviewDates).forEach(rDate => {\r\n if (frequency === 'NF') return;\r\n\r\n const freqMod = outcomesData[frequency][objId].frequencyModifier;\r\n const freqInc = outcomesData[frequency][objId].frequencyIncrement;\r\n const timesDoc = outcomesData[frequency][objId].timesDoc;\r\n let timesDocDate = 0;\r\n\r\n if (timesDocByDate[frequency] && timesDocByDate[frequency][objId] && timesDocByDate[frequency][objId][rDate]) {\r\n timesDocDate = timesDocByDate[frequency][objId][rDate].timesDoc ?? 0;\r\n }\r\n\r\n if (!exclamationDateMap[objId]) exclamationDateMap[objId] = {};\r\n\r\n if (freqMod === 'OBJFMAL' && timesDocDate < parseInt(freqInc)) {\r\n //'At least'\r\n outcomesData[frequency][objId].showExclamation = true\r\n exclamationDateMap[objId][rDate] = true;\r\n }\r\n if (freqMod === 'OBJFMEX' && timesDocDate !== parseInt(freqInc)) {\r\n //'Exactly'\r\n outcomesData[frequency][objId].showExclamation = true\r\n exclamationDateMap[objId][rDate] = true;\r\n }\r\n if (freqMod === 'OBJFMNM' && timesDocDate > parseInt(freqInc)) {\r\n //'No more than'\r\n outcomesData[frequency][objId].showExclamation = true\r\n exclamationDateMap[objId][rDate] = true;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n \r\n async function init({ consumer, consumerName, date, allowedConsumerIds }) {\r\n console.clear();\r\n\r\n selectedConsumerId = consumer.id;\r\n selectedConsumerCard = consumer.card;\r\n selectedConsumerName = consumerName;\r\n selectedDate = date;\r\n serviceFilterVal = {\r\n text: 'All',\r\n value: 'All'\r\n };\r\n outcomeTypeFilterVal = {\r\n text: 'All',\r\n value: '%'\r\n };\r\n currentDateTime = new Date();\r\n\r\n setActiveModuleSectionAttribute('outcomes-review');\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n\r\n otherData = outcomes.getDataForOverview();\r\n dropdownData = outcomes.getDropdownValues();\r\n\r\n await getReviewTableData();\r\n await getReviewTableDataSecondary();\r\n\r\n DOM.clearActionCenter();\r\n\r\n outcomesReviewDiv = _DOM.createElement('div');\r\n outcomesReviewDiv.classList.add('outcomesReview');\r\n\r\n const backbtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n outcomes.backToOutcomeLoad(consumer);\r\n }\r\n });\r\n\r\n consumerCardHeader = buildConsumerCard();\r\n\r\n const filterDisplay = buildCurrentFilterdisplay();\r\n outcomeTabs = buildTabs();\r\n\r\n outcomesReviewDiv.appendChild(backbtn);\r\n outcomesReviewDiv.appendChild(consumerCardHeader);\r\n outcomesReviewDiv.appendChild(filterDisplay);\r\n outcomesReviewDiv.appendChild(outcomeTabs);\r\n DOM.ACTIONCENTER.appendChild(outcomesReviewDiv);\r\n\r\n updateCurrentFilterDisplay();\r\n populateTabSections();\r\n\r\n roster2.setAllowedConsumers(allowedConsumerIds);\r\n roster2.addConsumerToActiveConsumers(selectedConsumerCard);\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n\r\n goalTypes = await outcomesAjax.getAllGoalTypes();\r\n outcomesAjax.getOutcomesPrimaryAndSecondaryLocations(\r\n selectedConsumerId,\r\n dates.formateToISO(selectedDate),\r\n results => sortLocations(results),\r\n );\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\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 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(selectedAttachmentsWorkflow),\r\n sigAttachmentIds: getAttachmentIds(selectedAttachmentsSignature), \r\n wfAttachmentStepIds: getwfstepdocIds(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: async () => {\r\n PROGRESS__BTN.SPINNER.show(assignCaseLoadBtn);\r\n await csAssignCaseload.showAssignCaseLoadPopup();\r\n PROGRESS__BTN.SPINNER.hide(assignCaseLoadBtn);\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 saleforceIdClass = selectedConsumer.card.querySelector('.saleforce_Id');\r\n if (saleforceIdClass != null)\r\n saleforceIdClass.style.display = 'block';\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 async function init() {\r\n setActiveModuleAttribute('plan');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n await planAjax.checkForSalesForce();\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 async function getConsumerPeopleId(consumerId, 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 '/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","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 let isCaseLoad = false;\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 if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n } else {\r\n selectedGroupName = selectedGroupName = rosterData[0].GroupName;\r\n }\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 if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n } else {\r\n selectedGroupName = g.GroupName;\r\n }\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')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n }\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 if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) { }\r\n else {\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n }\r\n\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\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n selectedGroupCode = 'CAS';\r\n } else {\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n }\r\n\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 isDisabld = false;\r\n if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n isDisabld = true;\r\n }\r\n var groupDropdown = dropdown.build({\r\n dropdownId: 'rosterGroupDropdown',\r\n label: 'Groups',\r\n style: 'secondary',\r\n readonly: isDisabld,\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 || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\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 if (($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupName = 'Caseload';\r\n } else {\r\n selectedGroupName = groupResults[0].GroupName;\r\n }\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 if ($.session.isPSI && $.session.activeModule === 'plan') {\r\n const updateSalesforceIds = button.build({\r\n text: 'Update Salesforce Ids',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n pendingSave.show('Updating Database...');\r\n const data = await _UTIL.fetchData('updateSalesforceIdsScriptOneTimeUse', {applicationName: $.session.applicationName});\r\n pendingSave.fulfill('Update Complete')\r\n await new Promise(resolve => setTimeout(resolve, 2000));\r\n const successfulSavePopup = document.querySelector('.successfulSavePopup');\r\n successfulSavePopup.style.display = 'none';\r\n pendingSave.hide();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(updateSalesforceIds);\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 const SalesforceID = consumerData.SalesforceID ? consumerData.SalesforceID : ''; \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\r\n if ($.loadedApp === 'plan')\r\n details.innerHTML = `\r\n
    \r\n

    ${lName},

    \r\n\t\t

    ${fName} ${mName}

    Salesforce ID: ${SalesforceID}

    \r\n
    `;\r\n else\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 === 'fSS' ||\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 === 'fSS' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n $.loadedApp === 'OOD'\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')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n selectedGroupCode = 'CAS';\r\n isCaseLoad = true;\r\n }\r\n const getConsumerByGroupData = {\r\n selectedGroupCode,\r\n selectedGroupId,\r\n selectedLocationId,\r\n selectedDate,\r\n selectedActive,\r\n isCaseLoad\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\r\n || ($.session.formsCaseload == true && $.loadedApp === 'forms')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'authorizations')\r\n || ($.session.authorizationsCaseLoad === true && $.loadedApp === 'assessmentHistory')\r\n || ($.session.DayServiceCaseLoad === true && $.loadedApp === 'dayservices')\r\n || ($.session.EmploymentCaseLoad === true && $.loadedApp === 'employment')\r\n || ($.session.FSSCaseLoad === true && $.loadedApp === 'fSS')\r\n || ($.session.PlanCaseLoad === true && $.loadedApp === 'plan')\r\n || ($.session.RosterCaseLoad === true && $.loadedApp === 'roster')\r\n || ($.session.ServiceActivityCaseLoad === true && $.loadedApp === 'outcomes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')\r\n || ($.session.WorkshopCaseLoad === true && $.loadedApp === 'workshop')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'ConsumerFinances')\r\n || ($.session.ConsumerFinanceCaseLoad === true && $.loadedApp === 'CFEditAccount')\r\n || ($.session.incidentTrackingCaseLoad === true && $.loadedApp === 'incidenttracking')\r\n || ($.session.OODCaseLoad === true && $.loadedApp === 'OOD')\r\n || ($.session.SingleEntryCaseLoad === true && $.loadedApp === 'timeEntry')\r\n || ($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.transportationCaseLoad === true && $.loadedApp === 'transportation')) {\r\n setSelectedGroupData();\r\n }\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 === 'fSS' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n $.loadedApp === 'OOD' ||\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 \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 async function getEditConsumerRelationships(consumerId, isActive) {\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 '/getEditConsumerRelationshipsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\",\"isActive\":\"' + isActive + '\"}',\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 getRelationshipsType() {\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 '/getRelationshipsTypeJSON/',\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 getRelationshipsName() {\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 '/getRelationshipsNameJSON/',\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 getRelationshipsNameByID(selectedValue) {\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 '/getRelationshipsNameByIDJSON/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n relationType: selectedValue,\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 insertEditRelationship(consumerRelationshipsNew, consumerRelationships, 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 '/insertEditRelationship/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n consumerRelationshipsNewList: consumerRelationshipsNew,\r\n consumerRelationshipsList: consumerRelationships,\r\n consumerId: 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 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 getEditConsumerRelationships,\r\n getRelationshipsType,\r\n getRelationshipsName,\r\n insertEditRelationship,\r\n getRelationshipsNameByID\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 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: \"DOCUMENTATION LIBRARY\",\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","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 ","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, dateTime)\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})();","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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = workshopTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer\r\n headers[1].setAttribute('data-type', 'date'); // Start Time\r\n headers[2].setAttribute('data-type', 'date'); // End Time\r\n headers[3].setAttribute('data-type', 'string'); // Job Code\r\n headers[4].setAttribute('data-type', 'string'); // Job Step \r\n headers[5].setAttribute('data-type', 'number'); // Hours\r\n headers[6].setAttribute('data-type', 'number'); // Quantity\r\n headers[7].setAttribute('data-type', 'string'); // Supervisor \r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(workshopTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(workshopTable); \r\n\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._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});","(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","(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 let isCaseLoadDisabled;\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 if (($.session.CaseNotesCaseloadRestriction === true && $.loadedApp === 'casenotes')\r\n || ($.session.WaitingListAssessmentCaseLoad === true && $.loadedApp === 'waitingList')) {\r\n isCaseLoadDisabled = true;\r\n this.groupCode = 'CAS';\r\n } else {\r\n isCaseLoadDisabled = false;\r\n this.groupCode = 'ALL'; \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: isCaseLoadDisabled,\r\n disabled: isCaseLoadDisabled,\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","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_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 // Set the data type for each header, for sorting purposes\r\n const headers = rejectedTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer\r\n headers[1].setAttribute('data-type', 'date'); // Serv Date\r\n headers[2].setAttribute('data-type', 'string'); // Code\r\n headers[3].setAttribute('data-type', 'date'); // Start\r\n headers[4].setAttribute('data-type', 'date'); // End\r\n headers[5].setAttribute('data-type', 'date'); // Update \r\n\r\n widgetBody.innerHTML = \"\";\r\n widgetBody.appendChild(rejectedTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(rejectedTable);\r\n\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})();","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 // this code for height setting of widget \r\n var height = 225; \r\n if (daysBackWidgetSetting > 14 && daysBackWidgetSetting < 29)\r\n height = 450;\r\n if (daysBackWidgetSetting > 29 && daysBackWidgetSetting < 43)\r\n height = 750;\r\n if (daysBackWidgetSetting > 43)\r\n height = 1000; \r\n \r\n const widgetBody = document.getElementById('cn_productivity');\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 290;\r\n canvas.height = height; \r\n\r\n if (widgetBody == null) return; \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: 60,\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","//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 // Set the data type for each header, for sorting purposes\r\n const headers = caseLoadTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer\r\n headers[1].setAttribute('data-type', 'string'); // Resident Number\r\n headers[2].setAttribute('data-type', 'date'); // Last Note \r\n\r\n widgetBody.innerHTML = '';\r\n widgetBody.appendChild(consumerCountlbl);\r\n widgetBody.appendChild(caseLoadTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 $.loadedApp = '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 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 // Set the data type for each header, for sorting purposes\r\n const headers = cfTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Name\r\n headers[1].setAttribute('data-type', 'string'); // Account\r\n headers[2].setAttribute('data-type', 'amount'); // Balance\r\n headers[3].setAttribute('data-type', 'date'); // Last Transaction \r\n\r\n widgetBody.appendChild(cfTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 == '' ? '$0.00' : '$' + 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","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 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 linksAndMessages = (function () {\r\n var linksWidget;\r\n var messagesWidget;\r\n var links = [];\r\n var messages = [];\r\n\r\n // New System Message\r\n //-----------------------\r\n var addMessagePopup;\r\n var employeeDropdown;\r\n var EmployeeListWrap;\r\n var EmployeeNameList = [];\r\n var saveBtn;\r\n var cancelBtn;\r\n var selectMoreEmployeeBtn;\r\n var expirationDate;\r\n var expirationTime;\r\n var messageInput;\r\n let textMessage;\r\n let timeOfExpiration;\r\n let dateOfExpiration;\r\n let selectedEmployee = [];\r\n\r\n // Employee Selection Popup\r\n //-----------------------\r\n let consumerswithEmployeeIds;\r\n let currentconsumersSelected = [];\r\n let assignEmployeePopup;\r\n let assignBtn;\r\n let isMultiSelection;\r\n let nameHeading;\r\n let nameList;\r\n let singleSelectedEmployee;\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 buildAddMessagePopup() {\r\n isMultiSelection = false;\r\n addMessagePopup = POPUP.build({\r\n id: 'sig_addMessagePopup',\r\n classNames: 'assignEmployeePopup',\r\n hideX: true,\r\n });\r\n\r\n employeeDropdown = dropdown.build({\r\n dropdownId: 'employeesDropdown',\r\n label: 'Employee to Notify',\r\n style: 'secondary',\r\n });\r\n\r\n selectMoreEmployeeBtn = button.build({\r\n text: 'Select More Employees',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (isMultiSelection)\r\n POPUP.show(assignEmployeePopup);\r\n else\r\n await showAssignEmployeePopup();\r\n\r\n saveBtn.classList.add('disabled');\r\n cancelBtn.classList.add('disabled');\r\n },\r\n });\r\n selectMoreEmployeeBtn.style.width = '100%';\r\n let today = UTIL.getTodaysDate(true);\r\n let tomorrowDate = moment(dates.addDays(today, 1), 'YYYY-MM-DD').format('YYYY-MM-DD');\r\n dateOfExpiration = tomorrowDate;\r\n expirationDate = input.build({\r\n id: 'expirationDate',\r\n type: 'date',\r\n label: 'Expiration Date',\r\n style: 'secondary',\r\n value: tomorrowDate,\r\n attributes: [\r\n { key: 'min', value: UTIL.getTodaysDate() },\r\n ],\r\n });\r\n timeOfExpiration = UTIL.getCurrentTime();\r\n expirationTime = input.build({\r\n id: 'expirationTime',\r\n type: 'time',\r\n label: 'Expiration Time',\r\n style: 'secondary',\r\n value: UTIL.getCurrentTime(),\r\n });\r\n\r\n messageInput = input.build({\r\n id: 'messageInput',\r\n type: 'textarea',\r\n label: 'Message',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'SAVE',\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(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n nameHeading = document.createElement('b');\r\n nameHeading.classList.add('boldfont');\r\n nameHeading.innerText = 'Selected Employees: ';\r\n nameList = document.createElement('p');\r\n nameList.classList.add('nameListFont');\r\n nameList.innerText = EmployeeNameList.toString().replace(/,/g, ', ');\r\n EmployeeListWrap = document.createElement('div');\r\n EmployeeListWrap.classList.add('nameListWrap');\r\n EmployeeListWrap.appendChild(nameHeading);\r\n EmployeeListWrap.appendChild(nameList);\r\n EmployeeListWrap.style.marginBottom = '10px';\r\n\r\n addMessagePopup.appendChild(employeeDropdown);\r\n addMessagePopup.appendChild(EmployeeListWrap);\r\n addMessagePopup.appendChild(selectMoreEmployeeBtn);\r\n addMessagePopup.appendChild(expirationDate);\r\n addMessagePopup.appendChild(expirationTime);\r\n addMessagePopup.appendChild(messageInput);\r\n addMessagePopup.appendChild(btnWrap);\r\n messageInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n eventSetup();\r\n populateEmployeeDropdown();\r\n EmployeeListWrap.style.display = 'none';\r\n POPUP.show(addMessagePopup);\r\n }\r\n\r\n function eventSetup() {\r\n employeeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n singleSelectedEmployee = selectedOption.id;\r\n selectedEmployee = [];\r\n currentconsumersSelected = [];\r\n selectedEmployee.push(selectedOption.id);\r\n isMultiSelection = false;\r\n });\r\n saveBtn.addEventListener('click', async () => {\r\n selectedEmployee.push($.session.UserId);\r\n const result = await linksAndMessagesWidgetAjax.addSystemMessageAsync(textMessage, timeOfExpiration, dateOfExpiration, selectedEmployee);\r\n const { addSystemMessageResult } = result;\r\n if (addSystemMessageResult[0].NoteID != null) {\r\n POPUP.hide(addMessagePopup);\r\n selectedEmployee = [];\r\n currentconsumersSelected = [];\r\n EmployeeNameList = [];\r\n dashboard.load();\r\n }\r\n });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n selectedEmployee = [];\r\n currentconsumersSelected = [];\r\n EmployeeNameList = [];\r\n POPUP.hide(addMessagePopup);\r\n });\r\n messageInput.addEventListener('input', event => {\r\n textMessage = event.target.value;\r\n checkRequiredFieldsOfNewMessage();\r\n });\r\n expirationDate.addEventListener('input', event => {\r\n dateOfExpiration = event.target.value;\r\n checkRequiredFieldsOfNewMessage();\r\n });\r\n expirationTime.addEventListener('input', event => {\r\n timeOfExpiration = event.target.value;\r\n checkRequiredFieldsOfNewMessage();\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfNewMessage() {\r\n var date = expirationDate.querySelector('#expirationDate');\r\n var time = expirationTime.querySelector('#expirationTime');\r\n var message = messageInput.querySelector('#messageInput');\r\n\r\n if (date.value === '') {\r\n expirationDate.classList.add('error');\r\n } else {\r\n expirationDate.classList.remove('error');\r\n }\r\n\r\n if (time.value === '') {\r\n expirationTime.classList.add('error');\r\n } else {\r\n expirationTime.classList.remove('error');\r\n }\r\n\r\n if (message.value.trim() === '') {\r\n messageInput.classList.add('error');\r\n } else {\r\n messageInput.classList.remove('error');\r\n }\r\n setBtnStatusOfNewMessage();\r\n }\r\n\r\n function setBtnStatusOfNewMessage() {\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 async function populateEmployeeDropdown() {\r\n const {\r\n getEmployeeListResult: Employer,\r\n } = await linksAndMessagesWidgetAjax.getEmployersAsync();\r\n consumerswithEmployeeIds = Employer;\r\n singleSelectedEmployee = Employer[0].employerId;\r\n selectedEmployee.push(Employer[0].employerId);\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 dropdown.populate(\"employeesDropdown\", data);\r\n }\r\n\r\n function toggleAssignButton() {\r\n if (currentconsumersSelected.length === 0) {\r\n assignBtn.classList.add('disabled');\r\n return;\r\n }\r\n assignBtn.classList.remove('disabled');\r\n }\r\n\r\n async function showAssignEmployeePopup() {\r\n // Popup \r\n assignEmployeePopup = POPUP.build({\r\n id: 'sig_assignEmployeePopup',\r\n classNames: 'assignEmployeePopup',\r\n hideX: true,\r\n header: 'Select Employees',\r\n });\r\n const popupMessage = document.createElement('p');\r\n popupMessage.classList.add('popupMessage');\r\n popupMessage.innerText = '*Must select at least one employee before clicking Save button.';\r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('peopleListWrap');\r\n\r\n // Consumers\r\n const consumersContainer = document.createElement('div');\r\n consumersContainer.classList.add('assignPeopleList');\r\n\r\n const cHeading = document.createElement('p');\r\n cHeading.innerText = 'Select one (or multiple) users';\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 Employees');\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: () => {\r\n cnFilters.init(filterValues);\r\n },\r\n });\r\n\r\n const multiSelectBodyC = document.createElement('div');\r\n consumerswithEmployeeIds.forEach(person => {\r\n let consumer = document.createElement('p');\r\n consumer.setAttribute('data-personId', person.employerId);\r\n consumer.innerText = person.employerName;\r\n multiSelectBodyC.appendChild(consumer);\r\n \r\n if (person.employerId == singleSelectedEmployee) {\r\n consumer.classList.add('selected'); \r\n currentconsumersSelected.push(person.employerId);\r\n }\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 if (isSelected) {\r\n e.target.classList.remove('selected');\r\n currentconsumersSelected = currentconsumersSelected.filter(emp => emp !== person.employerId);\r\n } else {\r\n e.target.classList.add('selected');\r\n currentconsumersSelected.push(person.employerId);\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: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () { \r\n selectedEmployee = [];\r\n selectedEmployee = currentconsumersSelected;\r\n EmployeeNameList = [];\r\n consumerswithEmployeeIds.forEach(person => {\r\n currentconsumersSelected.forEach(selected => {\r\n if (person.employerId == selected) {\r\n EmployeeNameList.push(person.employerName.replace(/,/g, ''));\r\n }\r\n });\r\n });\r\n\r\n POPUP.hide(assignEmployeePopup);\r\n saveBtn.classList.remove('disabled');\r\n checkRequiredFieldsOfNewMessage();\r\n cancelBtn.classList.remove('disabled');\r\n isMultiSelection = true;\r\n overlay.show();\r\n if (selectedEmployee.length > 1) {\r\n nameList.innerText = EmployeeNameList.toString().replace(/,/g, ', ');\r\n EmployeeListWrap.style.display = 'block';\r\n employeeDropdown.style.display = 'none'\r\n }\r\n else {\r\n EmployeeListWrap.style.display = 'none';\r\n employeeDropdown.style.display = 'flex'\r\n document.getElementById('employeesDropdown').value = selectedEmployee[0];\r\n }\r\n\r\n },\r\n });\r\n\r\n var cancelSelectBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(assignEmployeePopup);\r\n saveBtn.classList.remove('disabled');\r\n checkRequiredFieldsOfNewMessage();\r\n cancelBtn.classList.remove('disabled');\r\n overlay.show();\r\n currentconsumersSelected = [];\r\n isMultiSelection = true;\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(cancelSelectBtn);\r\n innerWrap.appendChild(consumersContainer);\r\n assignEmployeePopup.appendChild(popupMessage);\r\n assignEmployeePopup.appendChild(innerWrap);\r\n assignEmployeePopup.appendChild(btnWrap);\r\n POPUP.show(assignEmployeePopup);\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 consumerswithEmployeeIds.forEach(consumer => {\r\n var fullName = consumer.employerName.toLowerCase();\r\n var matchesName = fullName.indexOf(searchValue);\r\n var thisConsumer = document.querySelector(`[data-personid=\"${consumer.employerId}\"]`);\r\n\r\n if (matchesName !== -1) {\r\n thisConsumer.classList.remove('hidden');\r\n displayedConsumers.push(consumer.employerId);\r\n } else {\r\n thisConsumer.classList.add('hidden');\r\n var index = displayedConsumers.indexOf(consumer.employerId);\r\n if (index > -1) displayedConsumers.splice(index, 1);\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 // append add message button\r\n dashboard.appendAddMessageButton('dashsystemmessagewidget', 'addMessageFilterBtn');\r\n\r\n if (links.length > 0 || messages.length > 0) {\r\n links = [];\r\n messages = [];\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 buildAddMessagePopup\r\n }\r\n}());","var linksAndMessagesWidgetAjax = (function () {\r\n function getSystemMessagesAndCustomLinks(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 + '/getSystemMessagesAndCustomLinksJSON/',\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.getSystemMessagesAndCustomLinksJSONResult;\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\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 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 '/getEmployeeList/',\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 addSystemMessageAsync(textMessage, timeOfExpiration, dateOfExpiration, selectedEmployee) {\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 '/addSystemMessage/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n textMessage: textMessage,\r\n timeOfExpiration: timeOfExpiration,\r\n dateOfExpiration: dateOfExpiration,\r\n selectedEmployee: selectedEmployee, \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 getSystemMessagesAndCustomLinks,\r\n loadCaraSolva,\r\n getEmployersAsync,\r\n addSystemMessageAsync\r\n };\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 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","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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = itTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Consumer Involved\r\n headers[1].setAttribute('data-type', 'date'); // Date of Incident\r\n headers[2].setAttribute('data-type', 'string'); // Category / Subcategory\r\n\r\n widgetBody.innerHTML = '';\r\n widgetBody.appendChild(itTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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","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","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","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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = sigTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Individual\r\n headers[1].setAttribute('data-type', 'date'); // PY Start Date \r\n headers[2].setAttribute('data-type', 'string'); // Plan Type\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(sigTable);\r\n\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 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 causeOfInjuryIdArray: [],\r\n riskOfInjuryIdArray: []\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 injuryCauseId = iData.injuryCauseId ? iData.injuryCauseId : '';\r\n var injuryRiskId = iData.injuryRiskId ? iData.injuryRiskId : '';\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.causeOfInjuryIdArray.push(injuryCauseId);\r\n saveData.riskOfInjuryIdArray.push(injuryRiskId);\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 // 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 'miniRosterDone': {\r\n var selectedConsumers = roster2.getActiveConsumers();\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\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 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 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 let emailString;\r\n let selectedRelation = [];\r\n let gkRelationships;\r\n let relationshipDoneBtn;\r\n let relationshipCancelBtn;\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, consumerId) {\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 const importFromRelationshipsBtn = button.build({\r\n text: 'SELECT FROM RELATIONSHIPS',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromRelationships(consumerId);\r\n },\r\n });\r\n importFromRelationshipsBtn.style.width = '100%';\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 const result = await incidentTrackingAjax.getRelationshipData(consumerId);\r\n const { getRelationshipDataResult } = result;\r\n gkRelationships = getRelationshipDataResult;\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n incidentEmailPopup.appendChild(importFromRelationshipsBtn);\r\n if (gkRelationships.length == 0) importFromRelationshipsBtn.classList.add('disabled');\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 async function popFromRelationships(consumerId) {\r\n const mainPopup = document.getElementById('sig_mainPopup');\r\n const emailSendBtn = document.getElementById('incidentEmailSendBtn');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'sig_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 relationshipDoneBtn = button.build({\r\n id: 'incidentDoneBtn',\r\n text: 'Done',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n selectedRelation = selectedRelation.filter(n => n);\r\n emailString = selectedRelation.toString().replaceAll(\",\", \";\"); \r\n document.getElementById('toAddress').value = emailString;\r\n incidentTrackingEmailData.toAddresses = emailString; \r\n if (emailString == '')\r\n emailSendBtn.classList.add('disabled');\r\n else\r\n emailSendBtn.classList.remove('disabled');\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n selectedRelation = [];\r\n },\r\n });\r\n\r\n relationshipCancelBtn = button.build({\r\n id: 'incidentCancelBtn',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(importPopup);\r\n },\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}`;\r\n relationshipDisp.classList.add('sig_gkRelationships');\r\n\r\n relationshipDisp.addEventListener('click', e => {\r\n const isSelected = e.target.classList.contains('selected');\r\n if (isSelected) {\r\n e.target.classList.remove('selected');\r\n selectedRelation = selectedRelation.filter(e => e !== rel.email);\r\n } else {\r\n e.target.classList.add('selected');\r\n selectedRelation.push(rel.email);\r\n }\r\n toggleAssignButton();\r\n });\r\n\r\n relationshipSection.appendChild(relationshipDisp);\r\n });\r\n\r\n importPopup.appendChild(relationshipSection);\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(relationshipDoneBtn);\r\n relationshipDoneBtn.classList.add('disabled');\r\n btnWrap2.appendChild(relationshipCancelBtn);\r\n mainWrap.appendChild(btnWrap2);\r\n importPopup.appendChild(mainWrap);\r\n\r\n POPUP.show(importPopup);\r\n\r\n }\r\n\r\n function toggleAssignButton() {\r\n if (selectedRelation.length === 0) {\r\n relationshipDoneBtn.classList.add('disabled');\r\n return;\r\n }\r\n relationshipDoneBtn.classList.remove('disabled');\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\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', 'string'); // Location\r\n headers[1].setAttribute('data-type', 'string'); // Entered By\r\n headers[2].setAttribute('data-type', 'date'); //Date\r\n headers[3].setAttribute('data-type', 'date'); // Time\r\n headers[4].setAttribute('data-type', 'string'); // Type \r\n headers[5].setAttribute('data-type', 'string'); // Consumer(s) Involved \r\n\r\n\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 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, obj.consumerId);\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","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","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 addEmployersBtn;\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\n// employer data\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 popupSaveBtn;\r\n let popupCancelBtn;\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 id: \"employerDropdown\",\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 employer = '';\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n addEmployersBtn = button.build({\r\n text: 'Add Employers',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave'],\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 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 if ($.session.OODInsertEmployers) inputContainer1.appendChild(addEmployersBtn);\r\n \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(contactMethodDropdown);\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 employer = '';\r\n\t\t\t\t\t\t} \r\n\r\n checkRequiredFields();\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 // 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 popupSaveBtn = 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 (!popupSaveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n popupCancelBtn = 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(popupSaveBtn);\r\n btnWrap.appendChild(popupCancelBtn);\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 checkPopupRequiredFields();\r\n }\r\n\r\n function popUpEventHandlers() {\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkPopupRequiredFields();\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\nfunction checkPopupRequiredFields() {\r\n var employrInput = employerInput.querySelector('#employerInput');\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n popupSaveBtn.classList.add('disabled'); \r\n return;\r\n } else {\r\n employerInput.classList.remove('error');\r\n popupSaveBtn.classList.remove('disabled');\r\n }\r\n\r\n // if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n // popupSaveBtn.classList.remove('disabled');\r\n // } else {\r\n // popupSaveBtn.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 employer = insertEmployerResult.employerId;\r\n\r\n if (employer == '0') {\r\n warningPopup();\r\n } else {\r\n \r\n populateConsumerEmployersDropdown(consumerId);\r\n // const dropdown = document.querySelector('#employerDropdown');\r\n // const selectedValue = dropdown.value;\r\n // var selectedOption = dropdown.options[dropdown.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 POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n \r\n \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 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})();\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 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 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 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 otherEmployerDropdown;\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 addEmployersBtn;\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 employer;\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 let positionDropDownData;\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 employer = caseNoteData[0].employerId;\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 employer = '';\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 id: 'positionDropdown',\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 otherEmployerDropdown = dropdown.build({\r\n id: \"otherEmployerDropdown\",\r\n label: \"Other Employer\",\r\n dropdownId: \"otherEmployerDropdown\",\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: 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 addEmployersBtn = button.build({\r\n id: 'addEmployersBtn',\r\n text: 'Add Employers',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave'],\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\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_form8monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n \r\n const wrapHeading = document.createElement('div');\r\n wrapHeading.classList.add('ChoosePositionEmployer')\r\n wrapHeading.innerHTML = '

    Choose either a Position or Employer.

    ';\r\n\r\n inputContainer1.appendChild(wrapHeading);\r\n inputContainer1.appendChild(positionDropdown);\r\n inputContainer1.appendChild(otherEmployerDropdown);\r\n if ($.session.OODInsertEmployers) inputContainer1.appendChild(addEmployersBtn);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n\r\n inputContainer2.appendChild(SAMLevelDropdown);\r\n inputContainer2.appendChild(contactMethodDropdown);\r\n inputContainer2.appendChild(behavioralIndicatorsDropdown);\r\n\r\n const inputContainer3 = document.createElement('div');\r\n inputContainer3.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n\r\n inputContainer3.appendChild(jobTaskQualityIndicatorsDropdown);\r\n inputContainer3.appendChild(jobTaskQuantityIndicatorsDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n container.appendChild(inputContainer3);\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 populateOtherEmployerDropdown(consumerId);\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 \r\n positionDropDownData = positions;\r\n\r\n let data = positions.map(position => ({\r\n id: position.employerId,\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 // employer = ''; \r\n } else {\r\n // employer = '0' // 'SEE POSITION DROPDOWN';\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\r\n async function populateOtherEmployerDropdown(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 var filteredemployers = employers.filter(item => !positionDropDownData.some(otherItem => otherItem.employerId === item.employerId));\r\n\r\n\t let data = filteredemployers.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 var positiondropdown = document.getElementById(\"positionDropdown\");\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 employer = '';\r\n // positiondropdown.disabled = false;\r\n // position = '';\r\n\t\t\t\t\t\t} else {\r\n \r\n // positiondropdown.disabled = true;\r\n // position = '0' // 'SEE OTHER EMPLOYER DROPDOWN';\r\n }\r\n\r\n checkRequiredFields();\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(\"otherEmployerDropdown\", filtereddata, employer); \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 const employerWrap = document.getElementsByClassName(\"ood_form8monthlyplacement_inputContainer1\");\r\n\r\n if (!position || position === '' || position === '0') {\r\n if (!employer || employer === '') {\r\n positionDropdown.classList.add('error');\r\n otherEmployerDropdown.classList.add('error'); \r\n \r\n employerWrap[0].classList.add('error');\r\n let otheremployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n // otheremployerdropdown.disabled = false; \r\n let positiondropdown = document.getElementById(\"positionDropdown\");\r\n // positiondropdown.disabled = false;\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n otherEmployerDropdown.classList.remove('error'); \r\n employerWrap[0].classList.remove('error');\r\n let otheremployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n // otheremployerdropdown.disabled = false; \r\n let positiondropdown = document.getElementById(\"positionDropdown\");\r\n // positiondropdown.disabled = true;\r\n }\r\n \r\n } else {\r\n positionDropdown.classList.remove('error'); \r\n otherEmployerDropdown.classList.remove('error'); \r\n employerWrap[0].classList.remove('error');\r\n let otheremployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n // otheremployerdropdown.disabled = true;\r\n let positiondropdown = document.getElementById(\"positionDropdown\");\r\n // positiondropdown.disabled = false; \r\n }\r\n\r\n // if (!employer || employer === '') {\r\n // otherEmployerDropdown.classList.add('error');\r\n // } else {\r\n // otherEmployerDropdown.classList.remove('error');\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 var otherEmployerdropdown = document.getElementById(\"otherEmployerDropdown\");\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n position = '';\r\n // otherEmployerdropdown.disabled = false; \r\n // addEmployersBtn.disabled = false;\r\n // employer = '';\r\n } else {\r\n position = selectedOption.value;\r\n // otherEmployerdropdown.disabled = true; \r\n // addEmployersBtn.disabled = true;\r\n // employer = '0' // 'SEE POSITION DROPDOWN';\r\n employer = '';\r\n populateOtherEmployerDropdown();\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n otherEmployerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var positiondropdown = document.getElementById(\"positionDropdown\");\r\n\r\n if (selectedOption.value == \"SELECT\") {\r\n employer = '';\r\n // positiondropdown.disabled = false; \r\n // position = '';\r\n } else {\r\n employer = selectedOption.value;\r\n // positiondropdown.disabled = true;\r\n // position = '0' //'SEE OTHER EMPLOYER DROPDOWN';\r\n position = ''; \r\n populatePositionDropdown();\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 employer,\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 employer,\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// build Employer pop-up used for adding/editing Employer information\r\nasync 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 popupSaveBtn = 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 (!popupSaveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n popupCancelBtn = 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(popupSaveBtn);\r\n btnWrap.appendChild(popupCancelBtn);\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 checkPopupRequiredFields();\r\n}\r\n\r\nfunction popUpEventHandlers() {\r\nemployerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkPopupRequiredFields();\r\n});\r\n\r\naddress1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n});\r\n\r\naddress2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n});\r\n\r\ncityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n});\r\n\r\nstateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n});\r\n\r\nzipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n});\r\n}\r\n\r\nfunction checkPopupRequiredFields() {\r\nvar employrInput = employerInput.querySelector('#employerInput');\r\nif (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n popupSaveBtn.classList.add('disabled'); \r\n return;\r\n} else {\r\n employerInput.classList.remove('error');\r\n popupSaveBtn.classList.remove('disabled');\r\n}\r\n\r\n// if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n// popupSaveBtn.classList.remove('disabled');\r\n// } else {\r\n// popupSaveBtn.classList.add('disabled');\r\n// }\r\n}\r\n\r\n// Event for Done BTN on the Edit Employer Popup Window\r\nasync 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 employer = insertEmployerResult.employerId;\r\n\r\n if (employer == '0') {\r\n warningPopup();\r\n } else {\r\n \r\n populateOtherEmployerDropdown(consumerId);\r\n // const dropdown = document.querySelector('#employerDropdown');\r\n // const selectedValue = dropdown.value;\r\n // var selectedOption = dropdown.options[dropdown.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 position = ''; \r\n populatePositionDropdown();\r\n checkRequiredFields();\r\n\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n \r\n \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\nfunction 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 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","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 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 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 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 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 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 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","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 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 let backwordBtn;\r\n let forwardBtn;\r\n let rosterList;\r\n\r\n // Edit relationship \r\n let editRelationshipPopup;\r\n let numberOfRows;\r\n let btnWrapInputsN = [];\r\n let hasADropdownN = [];\r\n let startDateInputN = [];\r\n let whoIsDropdownN = [];\r\n let endDateInputN = [];\r\n let deleteBtnN = [];\r\n let showInactive;\r\n let tempConsumer;\r\n let consumerRelationships = [];\r\n let consumerRelationshipsNew = [];\r\n let relationshipPopupBtnWrap;\r\n let dataType;\r\n let dataName;\r\n let isValueChanged;\r\n let deletedIds = [];\r\n let archiveConsumerRelationships = [];\r\n\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 tempConsumer = 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 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 rosterList = document.querySelector('.roster');\r\n if (rosterList != null) {\r\n rosterList.classList.remove('hidden');\r\n rosterList.classList.remove('fadeOut');\r\n }\r\n DOM.removeHeaderOpacity();\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\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 const endIcon = document.createElement('div');\r\n endIcon.classList.add('relationshipTable__endIcon');\r\n if ($.session.DemographicsUpdateRelationship == true) {\r\n endIcon.innerHTML = icons['edit'];\r\n } else {\r\n endIcon.innerHTML = `
    `;\r\n }\r\n\r\n relationshipTable.appendChild(relationshipHeader);\r\n relationshipHeader.appendChild(endIcon);\r\n sectionInner.appendChild(relationshipTable);\r\n\r\n endIcon.addEventListener('click', e => {\r\n relationshipEditPopup();\r\n closeCard();\r\n });\r\n if (data.length === 0) {\r\n const errorMessage = document.createElement('div');\r\n errorMessage.innerHTML = `

    No relationships found.

    `;\r\n sectionInner.appendChild(errorMessage);\r\n }\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 ${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 ${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 ${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 async function relationshipEditPopup(isActive = false) {\r\n\r\n const result = await rosterAjax.getEditConsumerRelationships(consumerId, isActive);\r\n const { getEditConsumerRelationshipsJSONResult } = result;\r\n\r\n consumerRelationships = getEditConsumerRelationshipsJSONResult;\r\n archiveConsumerRelationships = getEditConsumerRelationshipsJSONResult;\r\n numberOfRows = consumerRelationships.length;\r\n editRelationshipPopup = POPUP.build({\r\n hideX: true,\r\n id: \"editRelationshipPopup\"\r\n });\r\n\r\n editRelationshipPopup.style.maxWidth = '65%';\r\n editRelationshipPopup.style.left = '50%';\r\n\r\n showInactive = input.buildCheckbox({\r\n text: 'Show Inactive',\r\n id: 'chkShowInactive',\r\n isChecked: isActive,\r\n callback: () => {\r\n POPUP.hide(editRelationshipPopup);\r\n relationshipEditPopup(event.target.checked);\r\n }\r\n });\r\n\r\n const popupHeader = document.createElement(\"div\");\r\n popupHeader.classList.add(\"popupHeader\");\r\n const headerWrap = document.createElement(\"div\");\r\n headerWrap.classList.add(\"editRelationshipInputWrap\");\r\n const headerText = document.createElement(\"div\");\r\n headerText.innerHTML = consumerName + \"'s Relationship\";\r\n headerWrap.appendChild(headerText);\r\n headerWrap.appendChild(showInactive);\r\n popupHeader.appendChild(headerWrap);\r\n editRelationshipPopup.appendChild(popupHeader);\r\n\r\n for (let i = 0; i < numberOfRows; i++) {\r\n await createPopupElements(i, consumerRelationships);\r\n editRelationshipPopup.appendChild(btnWrapInputsN[i]);\r\n }\r\n\r\n saveRelationshipBtn = button.build({\r\n id: \"saveRelationshipBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: async () => {\r\n if (!saveRelationshipBtn.classList.contains('disabled')) {\r\n await editRelationshipSaveData();\r\n POPUP.hide(editRelationshipPopup);\r\n showCard(tempConsumer);\r\n setupCard('Relationships');\r\n }\r\n },\r\n });\r\n\r\n AddRelationshipBtn = button.build({\r\n id: \"AddRelationshipBtn\",\r\n text: \"New\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: async () => {\r\n let i = numberOfRows;\r\n numberOfRows = numberOfRows + 1;\r\n await createPopupElements(i, null);\r\n editRelationshipPopup.insertBefore(btnWrapInputsN[i], relationshipPopupBtnWrap);\r\n dropdown.populate(\"hasADropdownN\" + i, dataType, '');\r\n dropdown.populate(\"whoIsDropdownN\" + i, dataName, '');\r\n popUpSplitTransectionEventHandlers();\r\n checkRequiredFieldsEditConsumerRelationships();\r\n },\r\n });\r\n\r\n cancelRelationshipBtn = button.build({\r\n id: \"cancelRelationshipBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => {\r\n POPUP.hide(editRelationshipPopup);\r\n showCard(tempConsumer);\r\n setupCard('Relationships');\r\n resetPopupValues();\r\n },\r\n });\r\n\r\n relationshipPopupBtnWrap = document.createElement(\"div\");\r\n relationshipPopupBtnWrap.classList.add(\"editRelationshipBtnWrap\");\r\n relationshipPopupBtnWrap.appendChild(saveRelationshipBtn);\r\n relationshipPopupBtnWrap.appendChild(AddRelationshipBtn);\r\n relationshipPopupBtnWrap.appendChild(cancelRelationshipBtn);\r\n editRelationshipPopup.appendChild(relationshipPopupBtnWrap);\r\n POPUP.show(editRelationshipPopup);\r\n await populateEditRelationshipDropdown();\r\n isValueChanged = false;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n popUpSplitTransectionEventHandlers();\r\n }\r\n\r\n async function createPopupElements(i, getEditConsumerRelationshipsJSONResult) {\r\n hasADropdownN[i] = dropdown.build({\r\n id: 'hasADropdownN' + i,\r\n label: \"Has a:\",\r\n dropdownId: \"hasADropdownN\" + i,\r\n });\r\n\r\n whoIsDropdownN[i] = dropdown.build({\r\n id: 'whoIsDropdownN' + i,\r\n label: \"Who is:\",\r\n dropdownId: \"whoIsDropdownN\" + i,\r\n });\r\n\r\n startDateInputN[i] = input.build({\r\n id: 'startDateInputN' + i,\r\n type: 'date',\r\n label: 'Start Date:',\r\n style: 'secondary',\r\n value: getEditConsumerRelationshipsJSONResult == null ? UTIL.getTodaysDate() : moment(getEditConsumerRelationshipsJSONResult[i].startDate).format('YYYY-MM-DD'),\r\n });\r\n\r\n endDateInputN[i] = input.build({\r\n id: 'endDateInputN' + i,\r\n type: 'date',\r\n label: 'End Date:',\r\n style: 'secondary',\r\n value: getEditConsumerRelationshipsJSONResult == null ? '' : moment(getEditConsumerRelationshipsJSONResult[i].endDate).format('YYYY-MM-DD'),\r\n });\r\n\r\n deleteBtnN[i] = button.build({\r\n id: 'deleteBtnN' + i,\r\n type: 'text',\r\n icon: 'delete',\r\n style: 'secondary',\r\n callback: function (event) {\r\n isValueChanged = true;\r\n var deleteToId = Number(event.target.id.replace('deleteBtnN', ''));\r\n editRelationshipPopup.removeChild(btnWrapInputsN[deleteToId]);\r\n deletedIds.push(deleteToId);\r\n checkRequiredFieldsEditConsumerRelationships();\r\n popUpSplitTransectionEventHandlers();\r\n },\r\n });\r\n\r\n btnWrapInputsN[i] = document.createElement(\"div\");\r\n btnWrapInputsN[i].classList.add(\"editRelationshipInputWrap\");\r\n hasADropdownN[i].classList.add('width22Per');\r\n btnWrapInputsN[i].appendChild(hasADropdownN[i]);\r\n whoIsDropdownN[i].classList.add('width22Per');\r\n btnWrapInputsN[i].appendChild(whoIsDropdownN[i]);\r\n startDateInputN[i].classList.add('width23Per');\r\n btnWrapInputsN[i].appendChild(startDateInputN[i]);\r\n endDateInputN[i].classList.add('width23Per');\r\n btnWrapInputsN[i].appendChild(endDateInputN[i]);\r\n deleteBtnN[i].classList.add('width4Per');\r\n btnWrapInputsN[i].appendChild(deleteBtnN[i]);\r\n }\r\n\r\n function popUpSplitTransectionEventHandlers() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n startDateInputN[i].addEventListener('input', event => {\r\n isValueChanged = true;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n endDateInputN[i].addEventListener('input', event => {\r\n isValueChanged = true;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n\r\n hasADropdownN[i].addEventListener('change', async event => {\r\n isValueChanged = true;\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n var selectedDropdownId = event.target.id.replace('hasADropdownN', '');\r\n var selectedValue = event.target.value;\r\n await rePopulateEditRelationshipDropdown(selectedDropdownId, selectedValue, '');\r\n }\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n whoIsDropdownN[i].addEventListener('change', event => {\r\n isValueChanged = true;\r\n checkRequiredFieldsEditConsumerRelationships();\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFieldsEditConsumerRelationships() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var hasA = hasADropdownN[i].querySelector('#hasADropdownN' + i);\r\n var whoIs = whoIsDropdownN[i].querySelector('#whoIsDropdownN' + i);\r\n var startDate = startDateInputN[i].querySelector('#startDateInputN' + i);\r\n var endDate = endDateInputN[i].querySelector('#endDateInputN' + i);\r\n\r\n if (hasA.value === '') {\r\n hasADropdownN[i].classList.add('errorPopup');\r\n } else {\r\n hasADropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (whoIs.value === '') {\r\n whoIsDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n whoIsDropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (startDate.value === '' || (endDate.value != '' && startDate.value > endDate.value)) {\r\n startDateInputN[i].classList.add('errorPopup');\r\n } else {\r\n startDateInputN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n setBtnStatusEditConsumerRelationships();\r\n }\r\n\r\n function setBtnStatusEditConsumerRelationships() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveRelationshipBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n if (isValueChanged)\r\n saveRelationshipBtn.classList.remove('disabled');\r\n else\r\n saveRelationshipBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n async function populateEditRelationshipDropdown() {\r\n const {\r\n getRelationshipsNameJSONResult: RelationshipsName,\r\n } = await rosterAjax.getRelationshipsName();\r\n dataName = RelationshipsName.map((relationshipsName) => ({\r\n id: relationshipsName.personID,\r\n value: relationshipsName.personID,\r\n text: relationshipsName.name,\r\n style: relationshipsName.statusCode != 'A' && relationshipsName.statusCode != null ? 'italic' : ''\r\n }));\r\n dataName.unshift({ id: null, value: '', text: '' });\r\n\r\n const {\r\n getRelationshipsTypeJSONResult: RelationshipsType,\r\n } = await rosterAjax.getRelationshipsType();\r\n dataType = RelationshipsType.map((relationshipsType) => ({\r\n id: relationshipsType.typeID,\r\n value: relationshipsType.typeID,\r\n text: relationshipsType.description \r\n }));\r\n dataType.unshift({ id: null, value: '', text: '' });\r\n for (let i = 0; i < numberOfRows; i++) {\r\n dropdown.populate(\"hasADropdownN\" + i, dataType, consumerRelationships[i] != undefined ? consumerRelationships[i].typeID : '');\r\n\r\n if ($.session.applicationName === 'Gatekeeper' && consumerRelationships[i] != undefined && consumerRelationships[i].typeID != '') {\r\n await rePopulateEditRelationshipDropdown(i, consumerRelationships[i].typeID, consumerRelationships[i] != undefined ? consumerRelationships[i].personID : '')\r\n } else {\r\n dropdown.populateStyle(\"whoIsDropdownN\" + i, dataName, consumerRelationships[i] != undefined ? consumerRelationships[i].personID : '');\r\n }\r\n }\r\n }\r\n\r\n async function rePopulateEditRelationshipDropdown(selectedDropdownId, selectedValue , personId) {\r\n const {\r\n getRelationshipsNameByIDJSONResult: RelationshipsName,\r\n } = await rosterAjax.getRelationshipsNameByID(selectedValue);\r\n\r\n dataName = RelationshipsName.map((relationshipsName) => ({\r\n id: relationshipsName.personID,\r\n value: relationshipsName.personID,\r\n text: relationshipsName.name,\r\n style: relationshipsName.statusCode != 'A' && relationshipsName.statusCode != null ? 'italic' : ''\r\n }));\r\n dataName.unshift({ id: null, value: '', text: '' });\r\n dropdown.populateStyle(\"whoIsDropdownN\" + selectedDropdownId, dataName, personId);\r\n }\r\n\r\n async function editRelationshipSaveData() {\r\n consumerRelationshipsNew = [];\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var hasA = hasADropdownN[i].querySelector('#hasADropdownN' + i);\r\n var whoIs = whoIsDropdownN[i].querySelector('#whoIsDropdownN' + i);\r\n var startDate = startDateInputN[i].querySelector('#startDateInputN' + i);\r\n var endDate = endDateInputN[i].querySelector('#endDateInputN' + i);\r\n\r\n if (hasA.value !== '' && !deletedIds.includes(i)) {\r\n consumerRelationshipsNew.push({\r\n \"consumerId\": consumerId,\r\n \"endDate\": endDate.value,\r\n \"personID\": whoIs.options[whoIs.selectedIndex].id,\r\n \"startDate\": startDate.value,\r\n \"typeID\": hasA.options[hasA.selectedIndex].id\r\n });\r\n }\r\n }\r\n\r\n\r\n for (let j = 0; j < consumerRelationshipsNew.length; j++) {\r\n for (let i = 0; i < consumerRelationships.length; i++) {\r\n\r\n archiveConsumerRelationships[i].endDate = consumerRelationships[i].endDate == '' ? '' : moment(consumerRelationships[i].endDate).format('YYYY-MM-DD');\r\n archiveConsumerRelationships[i].startDate = moment(consumerRelationships[i].startDate).format('YYYY-MM-DD');\r\n\r\n if (archiveConsumerRelationships[i].endDate == consumerRelationshipsNew[j].endDate && consumerRelationships[i].personID == consumerRelationshipsNew[j].personID\r\n && moment(consumerRelationships[i].startDate).format('YYYY-MM-DD') == consumerRelationshipsNew[j].startDate && consumerRelationships[i].typeID == consumerRelationshipsNew[j].typeID) {\r\n const index = archiveConsumerRelationships.indexOf(archiveConsumerRelationships[i]);\r\n archiveConsumerRelationships.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n await rosterAjax.insertEditRelationship(consumerRelationshipsNew, archiveConsumerRelationships, consumerId);\r\n resetPopupValues();\r\n }\r\n\r\n function resetPopupValues() {\r\n btnWrapInputsN = [];\r\n hasADropdownN = [];\r\n startDateInputN = [];\r\n whoIsDropdownN = [];\r\n endDateInputN = [];\r\n deleteBtnN = [];\r\n consumerRelationships = [];\r\n consumerRelationshipsNew = [];\r\n deletedIds = [];\r\n archiveConsumerRelationships = []\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 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 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 dataLoad.addressone = name == 'addressOne' ? saveValue : dataLoad.addressone; \r\n dataLoad.addresstwo = name == 'addressTwo' ? saveValue : dataLoad.addresstwo;\r\n dataLoad.mailcity = name == 'city' ? saveValue : dataLoad.mailcity; \r\n dataLoad.mailstate = name == 'state' ? saveValue : dataLoad.mailstate;\r\n dataLoad.mailzipcode = name == 'zip' ? saveValue : dataLoad.mailzipcode; \r\n dataLoad.MedicaidNumber = name == 'medicaidNumber' ? saveValue : dataLoad.MedicaidNumber; \r\n dataLoad.MedicareNumber = name == 'medicareNumber' ? saveValue : dataLoad.MedicareNumber; \r\n dataLoad.ResidentNumber = name == 'residentNumber' ? saveValue : dataLoad.ResidentNumber; \r\n dataLoad.DOB = name == 'dateOfBirth' ? saveValue : dataLoad.DOB; \r\n dataLoad.SSN = name == 'ssn' ? saveValue : dataLoad.SSN; \r\n dataLoad.localID = name == 'localID' ? saveValue : dataLoad.localID; \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})();","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: '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 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 <= 60) {\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 daysBackInput.addEventListener('input', event => {\r\n if (event.target.value < 1 || event.target.value > 60) {\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\r\n workHoursPerDay.addEventListener('input', event => {\r\n if (event.target.value < 1 || event.target.value > 24) {\r\n workHoursPerDay.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n workHoursPerDay.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n productivityThresholdPercentage.addEventListener('input', event => {\r\n if (event.target.value < 0 || event.target.value > 100) { \r\n productivityThresholdPercentage.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n productivityThresholdPercentage.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\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 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') {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === '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\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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = daysOffTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employee\r\n headers[1].setAttribute('data-type', 'date'); // Start Date/Time\r\n headers[2].setAttribute('data-type', 'date'); //End Date/Time\r\n headers[3].setAttribute('data-type', 'string'); // Reason\r\n headers[4].setAttribute('data-type', 'string'); // Approve/Deny\r\n\r\n let data = renderDaysOffSectionBody(requestData.daysOff);\r\n actioncenter.appendChild(daysOffTable);\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(daysOffTable);\r\n\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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = callOffTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employee\r\n headers[1].setAttribute('data-type', 'date'); // Start Date/Time\r\n headers[2].setAttribute('data-type', 'string'); //Location\r\n headers[3].setAttribute('data-type', 'string'); // Reason\r\n headers[4].setAttribute('data-type', 'string'); // Approve/Deny\r\n\r\n let data = dataForCallOffandOpenShifts(requestData.callOff);\r\n actioncenter.appendChild(callOffTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(callOffTable);\r\n\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\r\n // Set the data type for each header, for sorting purposes\r\n const headers = openShiftTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Employee\r\n headers[1].setAttribute('data-type', 'date'); // Start Date/Time\r\n headers[2].setAttribute('data-type', 'string'); //Location\r\n headers[3].setAttribute('data-type', 'string'); // Reason\r\n headers[4].setAttribute('data-type', 'string'); // Approve/Deny\r\n\r\n let data = dataForCallOffandOpenShifts(requestData.openShift);\r\n actioncenter.appendChild(openShiftTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(openShiftTable);\r\n\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 (requestData.daysOff.length === 0 && requestData.callOff.length === 0 && requestData.openShift.length === 0) {\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(lastSubArray[lastSubArray.length - 1].day, cv.day);\r\n consecutiveReason = 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(group[0].fromTime)}`;\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(shift.fromTime)} - ${UTIL.convertFromMilitary(\r\n shift.toTime,\r\n )}`;\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(openShiftTableBody.querySelectorAll('.table__row'));\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(callOffTableBody.querySelectorAll('.table__row'));\r\n }\r\n if (daysOffTable) {\r\n var daysOffTableBody = daysOffTable.querySelector('.table__body');\r\n var daysOffRequests = Array.prototype.slice.call(daysOffTableBody.querySelectorAll('.table__row'));\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 \r\n var dateTime;\r\n var startDate = new Date(request.children[1].innerHTML).toLocaleDateString(); \r\n var endDate = new Date(request.children[2].innerHTML).toLocaleDateString();\r\n var startTime = new Date(request.children[1].innerHTML).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\r\n var endTime = new Date(request.children[2].innerHTML).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); \r\n\r\n if (startDate === endDate) {\r\n dateTime = startTime == '12:00 AM' ? startDate : endTime == '11:59 PM' ? startDate + ' ' + startTime : startDate + ' ' + startTime + ' - ' + endTime ;\r\n \r\n }\r\n else {\r\n dateTime = startDate + ' ' + (startTime == '12:00 AM' ? '' : startTime) + ' - ' + endDate + ' ' + (endTime == '11:59 PM' ? '' : endTime);\r\n }\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 dateTime: dateTime,\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 = '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","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 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","//=============================================\r\n// *** EDIT THIS CODE AT YOUR OWN RISK ***\r\n//=============================================\r\nvar schedulingCalendar = (function () {\r\n var months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];\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 (argument instanceof Date || (typeof argument === 'object')) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === '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 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 = 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(locationId, '%', populateSchedules);\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 = shiftType === 'A' ? 'Awake' : shiftType === 'N' ? 'Night' : shiftType === 'D' ? 'Day' : '';\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 await 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 } else {\r\n displayOverlapPopup(overlapWithExistingShift);\r\n return;\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 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 // 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(shiftDateForCall, detailsLocationId, populateEmployeesDropdown);\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 = shiftType === 'A' ? 'Awake' : shiftType === 'N' ? 'Night' : shiftType === 'D' ? 'Day' : '';\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 = shiftType === 'A' ? 'Awake' : shiftType === 'N' ? 'Night' : shiftType === 'D' ? 'Day' : '';\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(shiftDateForCall, detailsLocationId, populateEmployeesDropdown);\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('%', $.session.PeopleId, populateSchedules);\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(locationId, '%', populateSchedules);\r\n } else {\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax(defaultLocation, '%', populateSchedules);\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(totalHours).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(document.querySelectorAll('.eventBody .hdr'));\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(endTime.getHours())}:${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 = _scheduleView === 'mine' ? res.locationName : `${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(document.querySelectorAll('.calHeader'));\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 (_scheduleView === 'mine' && $.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\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 (event.target.classList.contains('red') || event.target.classList.contains('blueTemplate')) {\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 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 (results) {\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 reports = (function(){\r\n var reportCurrentlyProcessing = false;\r\n var startDate;\r\n var endDate;\r\n var filterValues;\r\n var isTimeApproval = false;\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 if (!isTimeApproval) {\r\n reportsAjax.getEmpSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n } else {\r\n reportsAjax.getEmpSingleEntrySupervisorDetailReportAjax(userId, filterValues);\r\n }\r\n }\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 //optional paramters used to show it is a supervisor running report with different values needed\r\n function init(payPeriod, timeApproval, filterData) {\r\n actioncenter = document.getElementById('actioncenter');\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n isTimeApproval = timeApproval;\r\n\r\n if (filterData && timeApproval) {\r\n filterValues = filterData;\r\n }\r\n\r\n showReportsPopup();\r\n \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 getEmpSingleEntrySupervisorDetailReportAjax(userId, filterValues) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/BasicSingleEntrySupervisorReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + filterValues.startDate + '\", \"endDate\":\"' + filterValues.endDate + '\", \"supervisorId\":\"' + filterValues.supervisorId + '\", \"locationId\":\"' + filterValues.locationId + '\", \"personId\":\"' + filterValues.employeeId + '\", \"status\":\"' + filterValues.status + '\", \"workCodeId\":\"' + filterValues.workCodeId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.BasicSingleEntrySupervisorReportResult._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 getEmpSingleEntrySupervisorDetailReportAjax,\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 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 var totalHourDiv\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 if (event.target.childNodes.length == 1) return; //\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 totalHourDiv.innerHTML = `
    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\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 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 reports.init(payPeriod, true, filterData);\r\n },\r\n });\r\n\r\n return btn;\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 reportBtn = buildReportButton();\r\n var fitleredBy = buildFilteredBy();\r\n reviewTable = buildTable();\r\n\r\n // Set the data type for each header, for sorting purposes\r\n const headers = reviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Status\r\n headers[1].setAttribute('data-type', 'string'); // Employee\r\n headers[2].setAttribute('data-type', 'date'); // Date\r\n headers[3].setAttribute('data-type', 'date'); // Start Time\r\n headers[4].setAttribute('data-type', 'date'); // End Time \r\n headers[5].setAttribute('data-type', 'number'); // Hours \r\n headers[6].setAttribute('data-type', 'string'); // Location\r\n headers[7].setAttribute('data-type', 'string'); // Work Code \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 totalHourDiv = document.createElement(\"div\");\r\n totalHourDiv.classList.add(\"totalHour\");\r\n totalHourDiv.innerHTML = ``;\r\n DOM.ACTIONCENTER.appendChild(totalHourDiv); \r\n\r\n DOM.ACTIONCENTER.appendChild(mapBtn);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(reviewTable);\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 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 var transportationStartTimeInput;\r\n var transportationEndTimeInput\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 transportationEndTime = null;\r\n var transportationStartTime = 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 tmpTransportationStartTime = null;\r\n var tmpTransportationEndTime = 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 transportationEndTime: transportationEndTime ? transportationEndTime : '',\r\n transportationStartTime: transportationStartTime ? transportationStartTime : '',\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 transportationEndTime: transportationEndTime ? transportationEndTime : '',\r\n transportationStartTime: transportationStartTime ? transportationStartTime : '',\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 transportationEndTime = ed.transportationendtime;\r\n transportationStartTime = ed.transportationstarttime;\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 transportationEndTime = null;\r\n transportationStartTime = 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 tmpTransportationStartTime = null;\r\n tmpTransportationEndTime = 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 transportationEndTime = null;\r\n transportationStartTime = 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 // Require Time Entry Transportation Start and End Times\r\n function checkTransportationStartEndTimes() {\r\n var transportationEndTimeVal = transportationEndTime;\r\n var transportationStartTimeVal = transportationStartTime;\r\n\r\n if ($.session.requireTimeEntryTransportationTimes === 'Y') {\r\n if (transportationStartTimeVal === '' || !transportationStartTimeVal) {\r\n transportationStartTimeInput.classList.add('error');\r\n } else {\r\n transportationStartTimeInput.classList.remove('error');\r\n }\r\n\r\n if (transportationEndTimeVal === '' || !transportationEndTimeVal) {\r\n transportationEndTimeInput.classList.add('error');\r\n } else {\r\n if (UTIL.checkValidDateRange(transportationStartTimeVal, transportationEndTimeVal)) {\r\n transportationEndTimeInput.classList.remove('error');\r\n } else {\r\n transportationEndTimeInput.classList.add('error');\r\n }\r\n }\r\n } else {\r\n if (transportationStartTimeVal && transportationEndTimeVal && transportationEndTimeVal !== '' && transportationStartTimeVal !== '' && !UTIL.checkValidDateRange(transportationStartTimeVal, transportationEndTimeVal)) {\r\n transportationEndTimeInput.classList.add('error');\r\n } else {\r\n transportationEndTimeInput.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 checkTransportationStartEndTimes();\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 oldTransportationEndTime;\r\n var oldTransportationStartTime;\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 transportationStartTimeInput.addEventListener('change', event => {\r\n if (!oldTransportationStartTime) oldTransportationStartTime = transportationStartTime;\r\n transportationStartTime = event.target.value;\r\n checkTransportationRequiredFields();\r\n });\r\n transportationEndTimeInput.addEventListener('change', event => {\r\n if (!oldTransportationEndTime) oldTransportationEndTime = transportationEndTime;\r\n transportationEndTime = 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 transportationEndTime = oldTransportationEndTime || oldTransportationEndTime === '' ? oldTransportationEndTime : transportationEndTime;\r\n transportationStartTime = oldTransportationStartTime || oldTransportationStartTime === '' ? oldTransportationStartTime : transportationStartTime;\r\n destination = oldDestination || oldDestination === '' ? oldDestination : destination;\r\n reason = oldReason || oldReason === '' ? oldReason : reason;\r\n licensePlateNumber = oldlicenseplate || 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 tmpTransportationStartTime = null;\r\n tmpTransportationEndTime = 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 transportationStartTimeInput = input.build({\r\n id: 'transportationStartTimeInput',\r\n type: 'time',\r\n label: 'Start Time',\r\n style: 'secondary',\r\n value: transportationStartTime,\r\n });\r\n transportationEndTimeInput = input.build({\r\n id: 'transportationEndTimeInput',\r\n type: 'time',\r\n label: 'End Time',\r\n style: 'secondary',\r\n value: transportationEndTime,\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\r\n timeWrap = document.createElement('div');\r\n timeWrap.classList.add('btnWrap');\r\n transportationStartTimeInput.style.width = '49%';\r\n transportationEndTimeInput.style.width = '49%';\r\n timeWrap.appendChild(transportationStartTimeInput);\r\n timeWrap.appendChild(transportationEndTimeInput);\r\n transportationPopup.appendChild(timeWrap);\r\n\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 clearConsumerSection(); \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 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, false);\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 // Set the data type for each header, for sorting purposes\r\n const headers = reviewTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Status\r\n headers[1].setAttribute('data-type', 'date'); // Date\r\n headers[2].setAttribute('data-type', 'date'); // Start Time\r\n headers[3].setAttribute('data-type', 'date'); // End Time \r\n headers[4].setAttribute('data-type', 'number'); // Hours\r\n headers[5].setAttribute('data-type', 'string'); // Location\r\n headers[6].setAttribute('data-type', 'string'); // Work Code \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 // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 // Set the data type for each header, for sorting purposes\r\n const headers = routesTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'date'); // Date\r\n headers[1].setAttribute('data-type', 'string'); // Route\r\n headers[2].setAttribute('data-type', 'string'); // Driver\r\n headers[3].setAttribute('data-type', 'string'); // Vehicle\r\n headers[4].setAttribute('data-type', 'string'); // Location \r\n headers[5].setAttribute('data-type', 'number'); // Start Odometer \r\n headers[6].setAttribute('data-type', 'number'); // End Odometer \r\n headers[7].setAttribute('data-type', 'date'); // Start Time \r\n headers[8].setAttribute('data-type', 'date'); // Stop Time \r\n\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay);\r\n DOM.ACTIONCENTER.appendChild(routesTable);\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 // Set the data type for each header, for sorting purposes\r\n const headers = inspectionTable.querySelectorAll('.header div');\r\n headers[0].setAttribute('data-type', 'string'); // Vehicle Number\r\n headers[1].setAttribute('data-type', 'date'); // Date\r\n headers[2].setAttribute('data-type', 'date'); //Time\r\n headers[3].setAttribute('data-type', 'string'); // Last Update \r\n headers[4].setAttribute('data-type', 'string'); // Route\r\n\r\n DOM.ACTIONCENTER.appendChild(backButton)\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay)\r\n DOM.ACTIONCENTER.appendChild(inspectionTable)\r\n\r\n // Call function to allow table sorting by clicking on a header.\r\n table.sortTableByHeader(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 constructor(\r\n { workflowId, name, processName, description, currentStatusId, statuses, groups, addedToPlan },\r\n people,\r\n responsiblePeople,\r\n ) {\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 this.addedToPlan = addedToPlan;\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:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/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 let {\r\n workflowId,\r\n name,\r\n currentStatusId,\r\n description,\r\n processName,\r\n groups,\r\n statuses,\r\n people,\r\n setStatusAsync,\r\n getFirstAndLastName,\r\n responsiblePeople,\r\n addedToPlan\r\n } = 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 ${addedToPlan ? `

    Added to plan on ${addedToPlan.split(' ')[0]}

    ` : ''}\r\n `;\r\n\r\n workflowNameContainer.addEventListener('click', e => {\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 new EditResponsibleRelationshipsComponent(workflowId, people, async (workflowId, ddlcache) => {\r\n try {\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(\r\n ddlcache[ddl].modified,\r\n workflowId,\r\n workflowResponsibilityType,\r\n );\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 (\r\n workflowSteps[i].getElementsByClassName(`responsiblePartytype_${workflowResponsibilityType}`)[0] !=\r\n undefined\r\n ) {\r\n if (workflowSteps[i].getElementsByClassName('wf-step-done-date')[0].innerText == '') {\r\n let responsiblestep = workflowSteps[i].getElementsByClassName(\r\n `responsiblePartytype_${workflowResponsibilityType}`,\r\n )[0];\r\n responsiblestep.getElementsByTagName('p')[0].innerText = getFirstAndLastName(\r\n ddlcache[ddl].modified,\r\n people,\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 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 const setStatus = setStatusAsync(workflowId, e.target.value);\r\n setStatus\r\n .then(() => {\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 = {\r\n original: currentStatusId,\r\n modified: e.target.value,\r\n isChanged: changed,\r\n eventTypeId: workflowId,\r\n eventType: 'workflow',\r\n eventId: 12,\r\n };\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(\r\n statusDropdown,\r\n statuses.map(s => ({ id: s.statusId, value: s.statusId, text: s.description })),\r\n currentStatusId,\r\n );\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 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(\r\n workflowDetailContainer,\r\n g,\r\n people,\r\n responsiblePeople,\r\n ).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 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)\r\n 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.split(\".\").shift();\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}/getAttachmentWF/`;\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(`[data-consumer-id=\"${selectedConsumerId}\"]`).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(consumerCard.dataset.consumerId).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 (tmpCompletedDate || tmpDueDate || tmpFollowUpTypeId || tmpNote || tmpPersonResponsible) {\r\n followUpsData[selectedConsumerId][selectedFollowUpId].updated = true;\r\n }\r\n\r\n if (tmpCompletedDate) followUpsData[selectedConsumerId][selectedFollowUpId].dateCompleted = tmpCompletedDate;\r\n if (tmpDueDate) followUpsData[selectedConsumerId][selectedFollowUpId].dueDate = tmpDueDate;\r\n if (tmpFollowUpTypeId) followUpsData[selectedConsumerId][selectedFollowUpId].followUpTypeId = tmpFollowUpTypeId;\r\n if (tmpNote) followUpsData[selectedConsumerId][selectedFollowUpId].notes = tmpNote;\r\n if (tmpPersonResponsible)\r\n followUpsData[selectedConsumerId][selectedFollowUpId].personResponsible = 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) 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(type => type.itFollowUpTypeId === followUpData.followUpTypeId);\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 (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\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 = 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 = 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 injuryCauseDropdown;\r\n var riskOfInjuryDropdown;\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 var injuryRisks;\r\n var injuryCauses;\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 injuryCauseId;\r\n var injuryRiskId;\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 incidentTrackingAjax.getRiskAndCauseDropdown(function (riskAndCause) {\r\n injuryRisks = riskAndCause.injuryRiskDropdown;\r\n injuryCauses = riskAndCause.injuryCauseDropdowns;\r\n });\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 injuryCauseId = undefined;\r\n injuryRiskId = 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 injuryCauseId = formData.injuryCauseId;\r\n injuryRiskId = formData.injuryRiskId;\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 let tmpInjuryLocation;\r\n let tmpInjuryType;\r\n let tmpInjuryCause;\r\n let tmpInjuryRisk;\r\n let tmpCheckedBy;\r\n let tmpDetails;\r\n let tmpTreatment;\r\n let 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 injuryCauseDropdown.addEventListener('change', e => {\r\n tmpInjuryCause = e.target.value;\r\n });\r\n riskOfInjuryDropdown.addEventListener('change', e => {\r\n tmpInjuryRisk = e.target.value;\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 !== undefined ||\r\n tmpInjuryType !== undefined ||\r\n tmpInjuryCause !== undefined ||\r\n tmpInjuryRisk !== undefined ||\r\n tmpCheckedBy !== undefined ||\r\n tmpDetails !== undefined ||\r\n tmpTreatment !== undefined ||\r\n tmpDateChecked !== undefined\r\n ) {\r\n injuryData[selectedConsumerId][selectedInjuryId].updated = true;\r\n }\r\n\r\n if (tmpInjuryLocation !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryLocationId = tmpInjuryLocation;\r\n if (tmpInjuryType !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryTypeId = tmpInjuryType;\r\n if (tmpInjuryCause !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryCauseId = tmpInjuryCause;\r\n if (tmpInjuryRisk !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryRiskId = tmpInjuryRisk;\r\n if (tmpCheckedBy !== undefined) injuryData[selectedConsumerId][selectedInjuryId].checkedByNurse = tmpCheckedBy;\r\n if (tmpDetails !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryDetails = tmpDetails;\r\n if (tmpTreatment !== undefined) injuryData[selectedConsumerId][selectedInjuryId].injuryTreatment = tmpTreatment;\r\n if (tmpDateChecked !== undefined) 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 buildInjuryCauseDropdown() {\r\n var opts = {\r\n label: 'Cause of Injury',\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 iCauseDrop = dropdown.build(opts);\r\n\r\n var data = injuryCauses.map(type => {\r\n return {\r\n value: type.injuryCauseId,\r\n text: type.injuryCauseDescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n if (a.text.toLowerCase() < b.text.toLowerCase()) return -1;\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) return 1;\r\n return 0;\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(iCauseDrop, data, injuryCauseId);\r\n\r\n return iCauseDrop;\r\n }\r\n function buildRiskOfInjuryDropdown() {\r\n var opts = {\r\n label: 'Risk of Serious Injury',\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 iRiskDrop = dropdown.build(opts);\r\n\r\n var data = injuryRisks.map(type => {\r\n return {\r\n value: type.injuryRiskId,\r\n text: type.injuryRiskdescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n if (a.text.toLowerCase() < b.text.toLowerCase()) return -1;\r\n if (a.text.toLowerCase() > b.text.toLowerCase()) return 1;\r\n return 0;\r\n });\r\n\r\n data.unshift({ value: '', text: '' });\r\n dropdown.populate(iRiskDrop, data, injuryRiskId);\r\n\r\n return iRiskDrop;\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) 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 injuryCauseDropdown = buildInjuryCauseDropdown();\r\n riskOfInjuryDropdown = buildRiskOfInjuryDropdown();\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(injuryCauseDropdown);\r\n form.appendChild(riskOfInjuryDropdown);\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(iLoc => iLoc.injuryLocationId === data.injuryLocationId);\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 (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\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 = 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]) 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 = 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 (tmpInterventionType || tmpStartTime || tmpEndTime || tmpTimeLength || tmpAversive || tmpNote) {\r\n interventionData[selectedConsumerId][selectedInterventionId].updated = true;\r\n }\r\n\r\n if (tmpInterventionType)\r\n interventionData[selectedConsumerId][selectedInterventionId].interventionType = tmpInterventionType;\r\n if (tmpStartTime) interventionData[selectedConsumerId][selectedInterventionId].startTime = tmpStartTime;\r\n if (tmpEndTime) interventionData[selectedConsumerId][selectedInterventionId].stopTime = tmpEndTime;\r\n if (tmpTimeLength) interventionData[selectedConsumerId][selectedInterventionId].timeLength = tmpTimeLength;\r\n if (tmpAversive) interventionData[selectedConsumerId][selectedInterventionId].aversive = tmpAversive;\r\n if (tmpNote) 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) 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(it => it.interventionTypeId === data.interventionType);\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 (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\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 ? consumerLocationData[consumerId][0].value : '';\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) 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 = tmpReportingCategoryId;\r\n if (tmpReportedBy) reportingData[selectedConsumerId][selectedReportId].reportBy = tmpReportedBy;\r\n if (tmpReportedTo) reportingData[selectedConsumerId][selectedReportId].reportTo = tmpReportedTo;\r\n if (tmpReportMethod) reportingData[selectedConsumerId][selectedReportId].reportMethod = tmpReportMethod;\r\n if (tmpReportDate) reportingData[selectedConsumerId][selectedReportId].dateReported = tmpReportDate;\r\n if (tmpReportTime) 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) 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 (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\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 = reportingData[selectedConsumerId][d.itConsumerReportId].dateReported.split(' ')[0];\r\n reportingData[selectedConsumerId][d.itConsumerReportId].dateReported = 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 ($.session.incidentTrackingReviewedBy && (!currentReviewedBy || currentReviewedBy === '')) {\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) 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 (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\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 = reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate.split(' ')[0];\r\n reviewData[selectedConsumerId][d.itConsumerReviewId].reviewedDate = 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\nconst 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 (tmpBehaviorTypeId !== null || tmpStartTime !== null || tmpEndTime !== null || tmpOccurrences !== null) {\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) 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(type => type.itBehaviorTypeId === behaviorDATA.behaviorTypeId);\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 (event.target.classList.contains('table__row') && !event.target.classList.contains('header')) {\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 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 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, teamMemberType) {\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 teamMemberType\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.getTeamMemberListFromState({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n let guarddata;\r\n if (stateGuardiansObj && stateGuardiansObj.length !== 0) {\r\n guarddata = stateGuardiansObj\r\n .filter(dd => dd.Role === \"Guardian\") // Filter by role \"Guardian\"\r\n .map(dd => {\r\n return {\r\n value: dd.Id,\r\n text: dd.AccountName,\r\n };\r\n });\r\n \r\n if (guarddata.length > 0) {\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 } else {\r\n guarddata = [{ value: '', text: 'NO STATE GUARDIANS FOUND' }];\r\n }\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 selectedMemberData.guardianSalesforceId = relData.guardianSalesforceId;\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 teamMemberType: selectedMemberData.teamMember,\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, selectedMemberData.teamMember);\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, selectedMemberData.teamMember);\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, selectedMemberData.teamMember);\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 || selectedMemberData.guardianSalesforceId === 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 || selectedMemberData.guardianSalesforceId) &&\r\n (selectedMemberData.salesForceId !== selectedStateGuardianSalesForceId &&\r\n selectedMemberData.guardianSalesforceId !== selectedStateGuardianSalesForceId) &&\r\n 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.guardianSalesforceId &&\r\n selectedMemberData.guardianSalesforceId !== '' &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n selectedMemberData.guardianSalesforceId !== 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.guardianSalesforceId === '' || !selectedMemberData.guardianSalesforceId) ||\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.guardianSalesforceId === '' || !selectedMemberData.guardianSalesforceId) &&\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 teamMemberType: 'Guardian',\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 // EMAIL\r\n emailInput.querySelector('input').value = opts.email; \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 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 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 let respProviderIdToNameMap;\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 responsibleProviderSalesforce: !resp.isSalesforceLocation ? '' : resp.isSalesforceLocation,\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, defaultValueSalesForce) {\r\n const data = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n salesforce: dd.isSalesforceLocation,\r\n };\r\n });\r\n\r\n const vendorIds = new Map();\r\n const coflictingIds = {};\r\n data.forEach((d, index) => {\r\n if (vendorIds.has(d.value)) {\r\n const conflictIndex = vendorIds.get(d.value);\r\n\r\n coflictingIds[d.value] = true;\r\n\r\n data[conflictIndex].value = `${data[conflictIndex].value}|${data[conflictIndex].salesforce}`;\r\n data[index].value = `${d.value}|${d.salesforce}`;\r\n\r\n } else {\r\n vendorIds.set(d.value, index);\r\n }\r\n });\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n // nonPaidSupportData, paidSupportData\r\n const nonPaidSupportData = [];\r\n const paidSupportData = [];\r\n data.forEach(d => {\r\n const provider = d.value.split('|');\r\n const isSelectedVendor = selectedVendorIds.includes(provider[0])\r\n\r\n if (provider[1]) {\r\n nonPaidSupportData.push(d);\r\n return;\r\n }\r\n\r\n if (isSelectedVendor) {\r\n paidSupportData.push(d);\r\n } else {\r\n nonPaidSupportData.push(d);\r\n }\r\n });\r\n // const nonPaidSupportData = data.filter(provider => {\r\n // return !selectedVendorIds.includes(provider.value.split('|')[0]);\r\n // });\r\n // const paidSupportData = data.filter(provider => {\r\n // return selectedVendorIds.includes(provider.value.split('|')[0]);\r\n // });\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 } else {\r\n if (coflictingIds[defaultValue]) {\r\n defaultValue = `${defaultValue}|${defaultValueSalesForce}`;\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 }\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, name) {\r\n let vendor = dropdownData.serviceVendors.filter(vendor => vendor.vendorId === value);\r\n\r\n if (!vendor.length) return 'False';\r\n\r\n if (vendor.length === 1) {\r\n return vendor[0].isSalesforceLocation;\r\n }\r\n\r\n vendor = vendor.filter(vendor => vendor.vendorName === name);\r\n\r\n return vendor[0].isSalesforceLocation;\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\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, resp.responsibleProviderName);\r\n delete resp.responsibleProviderName;\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 saveData.responsibilities[index].isSalesforceLocation,\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: ['What needs to happen', 'How should it happen?', 'Who is responsible?', 'When / How Often?'],\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 = resp.responsibleContact === '%' ? 0 : parseInt(resp.responsibleContact);\r\n const isSalesforceLocation = resp.responsibleProviderSalesforce;\r\n delete resp.responsibleProviderName;\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(`${responsibleContact}`, `${responsibleProvider}`, isSalesforceLocation);\r\n const whenHowOften = getColTextForWhenHowOften(`${whenHowOftenFrequency}`, whenHowOftenValue, whenHowOftenText);\r\n\r\n const vendorID = 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: ['What needs to happen', 'How should it happen?', 'Who is responsible?', 'When / How Often?'],\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, responsibleProviderSalesforce) {\r\n if (responsibleProvider !== '%' && responsibleProvider !== '0') {\r\n const filteredVendor = dropdownData.serviceVendors.filter(dd => dd.vendorId === responsibleProvider);\r\n\r\n if (!filteredVendor.length) {\r\n return '';\r\n }\r\n\r\n if (filteredVendor.length === 1) {\r\n return filteredVendor[0].vendorName;\r\n }\r\n\r\n const vendor = filteredVendor.find(vendor => vendor.isSalesforceLocation.toUpperCase() === responsibleProviderSalesforce.toString().toUpperCase());\r\n return vendor.vendorName;\r\n } else {\r\n if (dropdownData.relationships) {\r\n const filteredRelationship = dropdownData.relationships.filter(dd => dd.contactId === responsibleContact);\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 = '

    *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.split('|')[0];\r\n saveUpdateDataRef.responsibleProviderSalesforce = selectedOption.value.split('|')[1] || '';\r\n saveUpdateDataRef.responsibleProviderName = selectedOption.text;\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 = whenHowOftenTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateDataRef.whenHowOftenFrequency === '' || saveUpdateDataRef.whenHowOftenFrequency === '%') {\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 = 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 (saveUpdateDataRef.responsibleContact === '%' && saveUpdateDataRef.responsibleProvider === '%') {\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 (saveUpdateDataRef.whenHowOftenFrequency === '' || saveUpdateDataRef.whenHowOftenFrequency === '%') {\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(whenHowOftenFrequencyDropdown, saveUpdateDataRef.whenHowOftenFrequency);\r\n populateResponsibleProviderDropdown(\r\n responsibleProviderDropdown,\r\n saveUpdateDataRef.responsibleProvider,\r\n saveUpdateDataRef.responsibleProviderSalesforce,\r\n );\r\n planData.populateRelationshipDropdown(responsiblePersonDropdown, saveUpdateDataRef.responsibleContact);\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(saveUpdateData.responsibilities[respLength], respLength);\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(`#experiencesTableDummy${saveUpdateData.outcomeId}`);\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(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(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: ['What needs to happen', 'How should it happen?', 'Who is responsible?', 'When / How Often?'],\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 ? -1 : a.experienceOrder > b.experienceOrder ? 1 : 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 responsibleProviderSalesforce = resp.responsibleProviderSalesforce;\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 responsibleProviderSalesforce: responsibleProviderSalesforce,\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 responsibleProviderSalesforce,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(whenHowOftenFrequency, whenHowOftenValue, whenHowOftenText);\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('At least one experience must be entered for each outcome', experienceAlertDiv);\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 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 // 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 // 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: [`What will progress look like? How will we know it's happening?`, 'Who?', 'When to check In?'],\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('At least one review must be entered for each outcome', reviewAlertDiv);\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 (hasPreviousPlan && outcomesUpdateData.status === '1' && outcomesUpdateData.carryOverReason === '') {\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: '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 (hasPreviousPlan && outcomesUpdateData.status === '1' && outcomesUpdateData.carryOverReason === '') {\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 (!planOutcomesData.planProgressSummary || planOutcomesData.planProgressSummary.length === 0) {\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 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","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 let hideOrShowStatus;\r\n\r\n const observerCallback = entries => {\r\n console.log(`Observer callback fired.`);\r\n entries.forEach(entry => {\r\n console.log(`Observing entry ${entry.target.id}`);\r\n if (entry.isIntersecting) {\r\n console.log(entry.intersectionRatio);\r\n\r\n if (!entry.target.classList.contains('nonApplicable')) {\r\n const sectionId = entry.target.id;\r\n console.log(`${sectionId} is in view`);\r\n tableOfContents.highlightLink(sectionId.replace('section', ''));\r\n }\r\n // if (entry.intersectionRatio >= 0.75) {\r\n \r\n // }\r\n }\r\n });\r\n };\r\n\r\n if (!('IntersectionObserver' in window)) {\r\n alert('Intersection Observer API is not available')\r\n }\r\n\r\n const observer = new IntersectionObserver(observerCallback, {\r\n root: DOM.ACTIONCENTER,\r\n rootMargin: '0px 0px 0px 0px',\r\n threshold: 0.08,\r\n });\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 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\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 hideOrShowStatus = hideOrShow;\r\n\r\n const awnseredQuestions = [...document.querySelectorAll('.question:not(.unawnsered)')];\r\n const leftBlankQuestions = [...document.querySelectorAll('.question.intentionallyDisabled')];\r\n [...awnseredQuestions, ...leftBlankQuestions].forEach(q => {\r\n if (hideOrShow === 'hide') {\r\n q.style.display = 'none';\r\n } else {\r\n q.removeAttribute('style');\r\n }\r\n });\r\n\r\n const awnseredTables = [...document.querySelectorAll('.grid.awnsered')];\r\n const leftBlankTables = [...document.querySelectorAll('.grid.intentionallyDisabled')];\r\n [...awnseredTables, ...leftBlankTables].forEach(t => {\r\n if (hideOrShow === 'hide') {\r\n t.style.display = 'none';\r\n } else {\r\n t.removeAttribute('style');\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 \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 textAreaInput.parentNode.closest('.question').classList.add('intentionallyDisabled');\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = true;\r\n } else {\r\n input.enableInputField(textAreaInput);\r\n textAreaInput.parentNode.closest('.question').classList.remove('intentionallyDisabled');\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\r\n const grid = questionSet.querySelector('.grid');\r\n if (isChecked) {\r\n grid.classList.add('intentionallyDisabled');\r\n } else {\r\n grid.classList.remove('intentionallyDisabled');\r\n }\r\n\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][questionSetId][questionRowId].leaveblank = true;\r\n } else {\r\n input.enableInputField(cellInput);\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 if (hideOrShowStatus === 'hide') {\r\n toggleUnansweredQuestionFilter(hideOrShowStatus);\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 });\r\n\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(applicableCheckbox);\r\n }\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\r\n sectionHeadingInner.appendChild(sectionTitle);\r\n sectionHeading.appendChild(sectionHeadingInner);\r\n section.appendChild(sectionHeading);\r\n\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 observer.observe(section);\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 } else if (colName === 'Who Said it?') {\r\n textAreaCharLimit = 250;\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\r\n // Handle text limit for the working/not working section\r\n if (questionId === \"605\" || questionId === \"606\") {\r\n textAreaCharLimit = 1000;\r\n } else if (questionId === \"607\") {\r\n textAreaCharLimit = 250;\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 question.classList.add('intentionallyDisabled');\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 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 } 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 function highlightLink(sectionId) {\r\n for (const key in sections) {\r\n if (sections[key].id === sectionId) {\r\n console.log(`Link for section ${sections[key].id} is highlighted`);\r\n sections[key].markup.classList.add('inView');\r\n sections[key].markup.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n })\r\n } else {\r\n sections[key].markup.classList.remove('inView');\r\n }\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('.numOfQuestionsUnawnseredWrap');\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 sectionUnawnseredQuestions[sectionKey]++;\r\n }\r\n }\r\n if (answered || leaveblank) tableQuestionSets[questionSetKey][rowOrder].atLeastOneColumnAnswered = true;\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(tableQuestionSets[setKey]);\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('This section is missing an Outcome, Support, or Referral', tocSectionAlertDiv);\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 } 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] ? Object.keys(subSections[sectionId]) : 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 }\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('At least one section of the Assessment must be selected', tocAlertDiv);\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 highlightLink,\r\n };\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 <= 60) {\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: \"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 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","//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})()","//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","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})();"]}