{"version":3,"sources":["helpers/date-input.js","helpers/date.js","helpers/dom.js","helpers/markerCluster.js","helpers/scrollLock.js","helpers/speech.js","helpers/util.js","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","sessions/mfa.js","sessions/session.js","sessions/sessionAjax.js","helpers/chartJS/Chart.min.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/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/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/Dashboard/dashboard.js","modules/Dashboard/home.js","modules/Dashboard/homeAjax.js","modules/Dashboard/psiLogin.js","modules/covid/checklist.js","modules/covid/checklistActions.js","modules/covid/checklistFields.js","modules/covid/covidAjax.js","modules/covid/covidLanding.js","modules/DayServices/dayServices.js","modules/DayServices/dayServicesAjax.js","modules/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/ESignatures/esignatures.js","modules/ESignatures/esignaturesAjax.js","modules/Forms/forms.js","modules/Forms/formsAjax.js","modules/IncidentTracking/incidentTracking.js","modules/IncidentTracking/incidentTrackingAjax.js","modules/Infal/infal.js","modules/Infal/infalAjax.js","modules/MultiTabs/multiTabs.js","modules/OneSpan/oneSpan.js","modules/OneSpan/oneSpanAjax.js","modules/OOD/employers.js","modules/OOD/OOD.js","modules/OOD/OODAjax.js","modules/Outcomes/addEditOutcomeServices.js","modules/Outcomes/addOutcomes.js","modules/Outcomes/addServicesForm.js","modules/Outcomes/outcomes.js","modules/Outcomes/outcomesAjax.js","modules/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/Reports/reports.js","modules/Reports/reportsAjax.js","modules/Scheduling/scheduling.js","modules/Scheduling/schedulingAjax.js","modules/SimpleMar/simpleMar.js","modules/SimpleMar/simpleMarAjax.js","modules/Transportation/transportationLanding.js","modules/Transportation/transportationLandingAjax.js","modules/Settings/defaults.js","modules/Settings/defaultsAjax.js","modules/Settings/help.js","modules/Settings/information.js","modules/SingleEntry/timeEntry.js","modules/SingleEntry/timeEntryAjax.js","modules/SingleEntry/timeEntryDetailsPopup.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","modules/CaseNotes/archive/Notifications.js","modules/CaseNotes/archive/Tutorial.js","modules/CaseNotes/archive/Validations.js","modules/CaseNotes/components/ConfirmationPopup.js","modules/CaseNotes/components/DateNav.js","modules/CaseNotes/components/RequestVisualizer.js","modules/CaseNotes/components/RosterCard.js","modules/CaseNotes/components/RosterPicker.js","modules/CaseNotes/components/WarningPopup.js","modules/CaseNotes/UI/Attachments.js","modules/CaseNotes/UI/Button.js","modules/CaseNotes/UI/Checkbox.js","modules/CaseNotes/UI/CheckboxGroup.js","modules/CaseNotes/UI/Dialog.js","modules/CaseNotes/UI/Form.js","modules/CaseNotes/UI/Icon.js","modules/CaseNotes/UI/Input.js","modules/CaseNotes/UI/Portrait.js","modules/CaseNotes/UI/Radio.js","modules/CaseNotes/UI/Select.js","modules/CaseNotes/UI/Spinner.js","modules/CaseNotes/UI/Table.js","modules/CaseNotes/UI/Textarea.js","modules/CaseNotes/UI/Toast.js","modules/CaseNotes/utils/DOM.js","modules/CaseNotes/utils/UTIL.js","modules/CaseNotesOld/overview/cnFilters.js","modules/CaseNotesOld/overview/notesOverview.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/Dashboard/AdminSingleEntry/adminSingleEntry.js","modules/Dashboard/AdminSingleEntry/adminSingleEntryAjax.js","modules/Dashboard/Absent/absent.js","modules/Dashboard/Absent/absentAjax.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivity.js","modules/Dashboard/CaseNotesProductivity/caseNotesProductivityAjax.js","modules/Dashboard/CaseNotesRejected/caseNotesRejected.js","modules/Dashboard/CaseNotesRejected/caseNotesRejectedAjax.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/HoursWorked/hoursWorked.js","modules/Dashboard/HoursWorked/hoursWorkedAjax.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessages.js","modules/Dashboard/CustomLinksAndMessages/linksAndMessagesAjax.js","modules/Dashboard/IncidentTracking/incidentTracking.js","modules/Dashboard/IncidentTracking/incidentTrackingAjax.js","modules/Dashboard/DayServiceClockedIn/clockedIn.js","modules/Dashboard/DayServiceClockedIn/clockedInAjax.js","modules/Dashboard/PlanToDoList/planWorkflowWidget.js","modules/Dashboard/InfalTimeClock/infalTimeClock.js","modules/Dashboard/InfalTimeClock/infalTimeClockAjax.js","modules/Dashboard/locationNotes/unreadLocationNotesWidget.js","modules/Dashboard/RemainingDailyServices/remainingDailyServices.js","modules/Dashboard/RemainingDailyServices/remainingDailyServicesAjax.js","modules/Dashboard/Schedule/schedule.js","modules/Dashboard/Schedule/scheduleAjax.js","modules/Dashboard/Signatures/missingSignatures.js","modules/Dashboard/Signatures/signaturesAjax.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCount.js","modules/Dashboard/UnapprovedTimeEntries/singleEntryCountAjax.js","modules/Dashboard/TimeClock/timeClock.js","modules/Dashboard/TimeClock/timeClockAjax.js","modules/IncidentTracking/incident/incident.js","modules/IncidentTracking/incident/newIncident.js","modules/IncidentTracking/incident/permissions.js","modules/IncidentTracking/incident/reviewIncident.js","modules/IncidentTracking/incidentCard/incidentCard.js","modules/IncidentTracking/overview/incidentOverview.js","modules/OOD/Form10/OODFormTransportation.js","modules/OOD/Form16/summerYouthWorkExperience.js","modules/OOD/Form16/summerYouthWorkExperienceSummary.js","modules/OOD/Form4/MonthlyPlacement.js","modules/OOD/Form4/MonthlySummary.js","modules/OOD/Form6/Tier1andJDPlan.js","modules/OOD/Form8/communityBasedAssessment.js","modules/OOD/Form8/communityBasedAssessmentSummary.js","modules/Plan/assessment/assessment.js","modules/Plan/assessment/assessmentAjax.js","modules/Plan/ISP/ISP.js","modules/Plan/PlanValidation/planValidation.js","modules/Plan/PlanValidation/planValidationAjax.js","modules/Plan/workflow/planWorkflow.js","modules/Roster/absent/absent.js","modules/Roster/absent/absentAjax.js","modules/Roster/groups/rosterGroupIndividuals.js","modules/Roster/groups/rosterGroups.js","modules/Roster/groups/rosterGroupsAjax.js","modules/Roster/info/consumerInfo.js","modules/Roster/info/demographics.js","modules/Roster/intellivue/intellivue.js","modules/Roster/notes/locationNotes.js","modules/Roster/notes/locationNotesAjax.js","modules/Roster/notes/progressNotes.js","modules/Roster/notes/progressNotesAjax.js","modules/Scheduling/ApproveRequestOff/schedulingApproveRequest.js","modules/Scheduling/Calendar/schedulingCalendar.js","modules/Scheduling/RequestOff/schedulingRequestTimeOff.js","modules/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/Settings/widget/widgetSettings.js","modules/Settings/widget/widgetSettingsAjax.js","modules/SingleEntry/Reports/reports.js","modules/SingleEntry/Reports/reportsAjax.js","modules/SingleEntry/TimeApproval/timeApproval.js","modules/SingleEntry/Signature/signature.js","modules/SingleEntry/Signature/signatureAjax.js","modules/SingleEntry/TimeEntry/timeEntryCard.js","modules/SingleEntry/TimeEntry/timeEntryEdit.js","modules/SingleEntry/TimeEntry/timeEntryNew.js","modules/SingleEntry/TimeReview/timeEntryReview.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/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/assessment/assessmentCard/assessmentCard.js","modules/Plan/assessment/assessmentCard/questionsAndAnswers.js","modules/Plan/assessment/assessmentCard/tableOfContents.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/Introduction/introduction.js","modules/Plan/ISP/Introduction/introductionAjax.js","modules/Plan/ISP/Outcome/outcomes.js","modules/Plan/ISP/Outcome/outcomesAjax.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasures.js","modules/Plan/ISP/RestrictiveMeasures/restrictiveMeasuresAjax.js","modules/Plan/ISP/ServicesSupports/servicesSupports.js","modules/Plan/ISP/ServicesSupports/servicesSupportsAjax.js","modules/Settings/widget/cnCaseLoadSettings/cnCaseLoadSettings.js","modules/Plan/ISP/Summary/Summary.js","modules/Plan/ISP/Summary/SummaryAjax.js","modules/Transportation/myRoutes/routeDocumentation/consumerCard.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentation.js","modules/Transportation/myRoutes/routeDocumentation/routeDocumentationAjax.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/IncidentTracking/incidentCard/sections/consumerSection/consumersSection.js","modules/IncidentTracking/incidentCard/sections/consumerSection/consumerSubSections.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/behavior.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/followUp.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/injuries.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/intervention.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/involvement.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/reporting.js","modules/IncidentTracking/incidentCard/sections/consumerSection/subSections/review.js"],"names":["t","e","exports","module","define","amd","n","r","o","id","loaded","call","m","c","p","__esModule","i","a","addPickerToOtherInputs","supportsDateInput","addPickerToDateInputs","document","addEventListener","querySelector","Object","defineProperty","get","window","Math","self","Function","__g","hasOwnProperty","f","u","TypeError","value","Symbol","store","version","__e","s","l","d","F","G","h","S","y","P","B","v","W","b","g","x","arguments","length","apply","virtual","R","U","keys","enumerable","configurable","writable","random","concat","toString","split","propertyIsEnumerable","prototype","ceil","floor","isNaN","valueOf","charAt","key","slice","createElement","M","w","O","D","k","T","_","A","E","j","C","N","entries","name","values","style","display","appendChild","src","contentWindow","open","write","close","create","defineProperties","getOwnPropertyNames","getOwnPropertySymbols","push","String","Date","getFullYear","getMonth","getDate","setDate","getDay","getTimezoneOffset","setHours","getHours","Array","isArray","toLowerCase","test","masks","dd","ddd","i18n","dayNames","dddd","mm","mmm","monthNames","mmmm","yy","yyyy","hh","H","HH","MM","ss","L","round","tt","TT","Z","match","pop","replace","abs","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","expiresHeaderFormat","element","setAttribute","locale","getAttribute","body","format","localeText","getLocaleText","valueAsDate","set","valueAsNumber","NaN","attachTo","keyCode","hide","pingInput","sync","map","indexOf","substr","querySelectorAll","days","months","today","ja","thePicker","date","input","isOpen","container","year","createRangeSelect","className","setYear","refreshDaysMatrix","month","setMonth","textContent","setInput","daysHead","target","hasAttribute","removeAttribute","parseInt","removeClickOut","parentNode","removeBlur","blur","removeEventListener","setTimeout","onpopstate","getBoundingClientRect","top","height","documentElement","scrollTop","width","trim","right","left","scrollLeft","show","refreshLocale","parse","absoluteDate","focus","innerHTML","join","Event","createEvent","initEvent","dispatchEvent","text","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","keyFor","useSetter","useSimple","refs","parts","css","media","sourceMap","insertAt","nextSibling","insertBefore","firstChild","Error","removeChild","splice","type","rel","singleton","bind","URL","createObjectURL","revokeObjectURL","Blob","btoa","href","styleSheet","cssText","createTextNode","childNodes","unescape","encodeURIComponent","navigator","userAgent","head","getElementsByTagName","filter","Boolean","locals","dates","toDate","argument","argStr","toInteger","dirtyNumber","number","Number","cloneDate","isValid","dirtyDate","leadingZero","num","getTodaysDateObj","todaysDate","getTodaysDateISOString","getDaysInMonth","monthIndex","lastDayOfMonth","setFullYear","addDays","dirtyAmount","amount","addWeeks","addMonths","desiredMonth","dateWithDesiredMonth","daysInMonth","addYears","subDays","subWeeks","subYears","endOfWeek","dirtyOptions","options","weekStartsOn","undefined","UTIL","RangeError","day","diff","startDayOfWeek","util","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","isDateInCurrentWeek","currentDate","curentWeekStart","curentWeekEnd","isDateInFuture","checkFormat","dateString","isoFormatPattern","standardFormatPattern","formatISO","originalDate","representation","result","tzOffset","dateDelimiter","timeDelimiter","offset","absoluteOffset","hourOffset","minuteOffset","sign","hour","minute","getMinutes","second","getSeconds","separator","time","formateToISO","splitBy","YYYY","DD","formateToStandard","joinBy","opts","shorten","shortenYear","substring","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","DOM","BODY","GRID_CONTAINER","ACTIONCENTER","getElementById","autosizeTextarea","textarea","textareas","forEach","area","scrollHeight","clearActionCenter","actioncenter","toggleHeaderOpacity","header","classList","toggle","toggleNavLayout","isMobile","actionBtn","nav","contains","add","remove","requestAnimFrame","cb","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","scrollToTopOfPage","MarkerClusterer","opt_markers","opt_options","extend","google","maps","OverlayView","map_","MARKER_CLUSTER_IMAGE_PATH_","MARKER_CLUSTER_IMAGE_EXTENSION_","markers_","clusters_","sizes","styles_","ready_","zIndex_","Marker","MAX_ZINDEX","gridSize_","minClusterSize_","maxZoom_","imagePath_","imageExtension_","zoomOnClick_","averageCenter_","setupStyles_","setMap","prevZoom_","getZoom","that","event","addListener","zoom","minZoom","maxZoom","mapTypes","getMapTypeId","resetViewport","redraw","addMarkers","obj1","obj2","object","property","onAdd","setReady_","draw","size","url","fitMapToMarkers","markers","getMarkers","bounds","LatLngBounds","marker","getPosition","fitBounds","setZIndex","zIndex","getZIndex","setStyles","styles","getStyles","isZoomOnClick","isAverageCenter","getTotalMarkers","setMaxZoom","getMaxZoom","calculator_","numStyles","index","count","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","LatLng","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","center","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","pos","getPosFromLatLng_","createCss","panes","getPanes","overlayMouseTarget","addDomListener","latlng","width_","height_","onRemove","text_","index_","useStyle","url_","textColor_","anchor_","textSize_","backgroundPosition_","backgroundPosition","txtColor","txtSize","global","factory","mod","bodyScrollLock","_toConsumableArray","arr","arr2","from","hasPassiveEvents","passiveTestOptions","passive","isIosDevice","platform","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","el","some","lock","preventDefault","rawEvent","touches","setOverflowHidden","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","clientWidth","paddingRight","overflow","restoreOverflowSetting","isTargetElementTotallyScrolled","targetElement","clientHeight","handleScroll","clientY","targetTouches","stopPropagation","disableBodyScroll","console","error","ontouchstart","ontouchmove","_lock","clearAllBodyScrollLocks","enableBodyScroll","SPEECH","speechConfig","audioConfig","addSTTContinuousRecEvent","btnElement","textField","listening","continuousListening","recognizer","SpeechSDK","SpeechRecognizer","recognizing","recognized","reason","ResultReason","RecognizedSpeech","firstElementChild","bubbles","NoMatch","log","canceled","CancellationReason","errorCode","errorDetails","callback","errorCB","startContinuousRecognitionAsync","stop","stopContinuousRecognitionAsync","icons","microphoneFilled","microphone","observNode","config","attributes","observer","mutationList","mutation","attributeName","disconnect","MutationObserver","observe","init","SpeechConfig","fromSubscription","session","azureSTTApi","speechRecognitionLanguage","enableDictation","setServiceProperty","ServicePropertyChannel","UriQueryParameter","AudioConfig","fromDefaultMicrophoneInput","message","alert","abbreviateDateYear","dateArr","camelize","str","chr","toUpperCase","capitalize","calculateTotalHours","dirtyStart","dirtyEnd","tempDate","timeDiff","hoursDiff","minutesDiff","parseFloat","toFixed","chunkArray","chunkSize","detectBrowser","ua","msie","ver","trident","rv","versionNumber","edge","formatDateToIso","formatDateFromIso","formatDateFromDateObj","dirtyDateObj","dateObj","formatTimeString","formatPhoneNumber","phoneNumberString","cleaned","findAndSlice","array","itemFind","item","findIndex","getGeoLocation","handleSuccess","position","coords","latitude","long","longitude","geoLocationPosition","handleFirstRunError","geolocation","getCurrentPosition","handleSecondRunError","enableHighAccuracy","location","protocol","hostname","getFormattedDateFromDate","getDBDateNow","getTodaysDate","returnObj","getCurrentTime","now","getRange","isObject","obj","iterationCopy","prop","parseXml","xmlString","parser","xmlDoc","hasError","DOMParser","parseFromString","nodeName","removeDecimals","removeQuotes","string","removeNonIntegerCharactersFromString","inputString","validateTime","splitTime","validateDateFromInput","dateArray","inputDate","removeUnsavableNoteText","note","romanize","digits","roman","warningPopup","hideX","accept","reject","popup","POPUP","build","classNames","acceptBtn","button","btnWrap","rejectBtn","warningMessage","deromanize","validator","token","CM","CD","XC","XL","IX","IV","exec","LS","getStorage","user","UserId","state","localStorage","getItem","setStorage","setItem","checkValidDateRange","toggleMenuItemHighlight","appName","current","toggleHighlight","btn","form","formInputs","formElements","fi","tag","INPUT","SELECT","dropdown","tmpReports","label","reportForm","formStyle","attachment","absent","arrowBack","arrowNext","bell","calendar","camera","car","checkmark","clear","copy","edit","delete","deSelectAll","download","drag","eraser","ellipsis","help","info","keyArrowRight","keyArrowLeft","keyArrowUp","keyArrowDown","multiSelect","no","openNew","outcomeNew","passwordShow","passwordHide","people","save","search","stamp","warning","refresh","selectAll","send","thumbUp","thumbDown","thumbUpDown","medicineBottle","peopleGroup","PDFForm","attachmentSmall","phone","Empty","Email","Delete","Gear","PDFFormWhite","workflow","ACTION_NAV","setColumns","populate","elements","ele","handleNavEvents","dataset","actionNav","activeModule","activeSection","newNote","handleActionNavEvent","newNoteSSA","reviewNote","dayServices","outcomes","newIncident","rosterAbsent","rosterGroupIndividuals","roster","timeEntryCard","timeEntryReview","timeApproval","workshop","assessmentHistory","authorizations","plan","covidChecklist","TRANS_routeDocumentation","TRANS_manageEditRoute","TRANS_addRoute","forms","OOD","resetPassword","ConsumerFinances","CFEditAccount","Employment","miniRosterBtn","icon","iconPos","btnText","toggled","toggleText","att","tabindex","tabIndex","dropdownId","readonly","wrap","select","selectedOption","selectedIndex","notch","inlineBuild","span","hiddenDropdown","hidOpt","data","defaultVal","option","groupingPopulate","opt","nonGroupedData","group","groupLabel","groupId","dropdownValues","charLimit","tab","pointerEvents","callbackType","onBlurCallback","characterCount","initialLength","innerText","checkOverLimit","handleEvents","forceCharLimit","subString","sttBtn","azureSTTConnection","stt","eyeBtn","togglePasswordVisibility","buildCheckbox","checkbox","isChecked","isDisabled","buildNativeCheckbox","buildRadio","radio","checked","disableInputField","inputEle","parentElement","radios","enableInputField","passwordInput","passwordToggleBtn","isVisible","GOOGLE_MAP","markerCluster","insertLocation","mapElement","clearMap","initMap","Map","fullscreenControl","latLngObj","markerArray","infoWindow","InfoWindow","content","markerLabels","imagePath","panToBounds","calcCenter","pos1","pos2","geometry","spherical","interpolate","createBoundry","createLatLngObj","createMarkerArray","createMarkerLabel","displayText","MarkerLabel","multiDropdown","activeDropdownOptions","optionAddedFunction","optionRemovedFunction","optionAddedCallback","optionRemovedCallback","multiple","menu","noOptions","warn","multiOption","buildChip","chip","prepend","getActiveOptions","NAVIGATION","NAV_MOBILE","MODULE_MENU","UTIL_MENU","mobileNav","handleNavClick","moduleMenu","utilMenu","isNavItem","currentlyOpen","targetMenu","subMenu","gridContainer","elementsWithClass","handleMenuClick","loadModule","simpleMar","simpleMarLogin","loadApp","overlay","currToggleState","addAttr","removeAttr","utilMenuBtn","modalOverlay","getElementsByClassName","mainMenu","defaultsMenu","informationMenu","settings","widgetSettingsMenu","helpMenu","action","applicationName","win","defaults","buildPage","widgetSettings","information","MINI_MODULE_MENU","menuClone","cloneNode","menuHeader","menuInner","multiTabs","newTabOpen","isIE","parent","onChangeCallback","closePopBtn","closeCallback","modal","background","appendTo","removeFrom","successfulSave","noPopup","sspopup","asPopup","removeOverlay","successfulSavePopup","failSave","failSavePopup","pendingSave","spinnerWrap","spinnerMessage","spinnerBar","fulfill","PROGRESS","_show","progressBar","removeProperty","_hide","SPINNER","newSpinner","spinnerMessageElement","speed","PROGRESS__ANYWHERE","insertElement","containingElement","smallSpinnerWrap","smallSpinnerBar","PROGRESS__BTN","btnSpinnerWrap","buttonTextCache","cache","table","tableBody","tableId","sortable","Sortable","handle","draggable","onSort","evt","onSortCallback","oldIndex","newIndex","row","plain","headline","headerRow","td","columnHeadings","heading","endIcon","endIconHeading","secondendIcon","secondendIconHeading","allowCopy","isSortable","disabled","overlap","onClick","cell","endIconCallback","secondendIconCallback","onCopyClick","addRows","rowData","updateRows","rowId","oldRow","newRow","replaceChild","deleteRow","getRowCount","tableRows","sortTableByHeader","headers","directions","sortColumn","transform","direction","multiplier","rows","newRows","sort","rowA","rowB","cellA","cellB","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","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","DenyStaffClockUpdate","DenyClockUpdate","DemographicsView","DemographicsUpdate","DemographicsBasicDataView","DemographicsRelationshipsView","DemographicsPictureUpdate","DemographicsPictureDelete","DemographicsNotesView","DemographicsViewAttachments","viewLocationSchedulesKey","DemographicsViewDOB","DemographicsViewMedicaid","DemographicsViewMedicare","DemographicsViewResident","DemographicsViewSSN","DemographicsViewLocalId","DemographicsViewConsumerNumber","GoalsView","GoalsUpdate","InsertOutcomes","UpdateOutcomes","InsertServices","UpdateServices","CaseNotesView","CaseNotesTablePermissionView","CaseNotesViewEntered","CaseNotesUpdate","CaseNotesUpdateEntered","CaseNotesCaseloadRestriction","CaseNotesSSANotes","SingleEntryView","SingleEntryUpdate","anywhereMainPermission","WorkshopView","WorkshopUpdate","isCurrentlySingleEntry","groupNoteId","caseNoteEditSecond","caseNoteLocationCodePreference","caseNoteLocationNamePreference","caseNoteNeedCodePreference","caseNoteNeedNamePreference","caseNoteServiceCodePreference","caseNoteServiceNeedPreference","caseNoteBillingCodeCodePreference","caseNoteBillingCodeNamePreference","caseNoteBillingCodeServiceFundingPreference","caseNoteDisplayGroupNoteDivPreference","caseNoteDisplayGroupNoteCheckedPreference","locationRequiredCheck","serviceRequiredCheck","needRequiredCheck","contactRequiredCheck","vendorRequiredCheck","caseNoteListResponse","vendorFlag","groupConsumerCount","consumersForGroupCounter","timeOverlapConsumers","overlapNoteIds","consumerIdArray","caseNoteConsumerId","caseNoteTimeCheck","groupNamesExist","existingGroupNoteIdForUpdate","startTimeForGroupNoteUpdateCompare","endTimeForGroupNoteUpdateCompare","serviceDateForGroupNoteUpdateCompare","serviceOrBillingCodeForGroupNoteUpdateCompare","caseNotePreferencesSet","consumerEditId","updateAllGroupDropDowns","isSingleEdit","changeFromSingleToGroupNote","editingConsumerId","dontLoadAppAfterDelete","consumerGroupCount","groupSaveCounter","editOnLoad","groupOverlapCheckCounter","overlapScreenLock","UpdateCaseNotesDocTime","batchedNoteEdit","groupNoteAttemptWithDocTime","sendToDODD","sendToPortal","dobString","defaultIncidentTrackingDaysBack","editNoteMileageOnLoadFlag","SEViewAdminWidget","ciBShow","singleEntry15minDoc","Roster","Name","LName","isAdmin","PeopleId","StaffLocId","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","anywhereEmploymentPermission","selectedConsumerIdForGoalsDateBack","caseNoteEdit","consumerIdToEdit","planPeopleId","showDynamic","singleEntryUseServiceLocations","editCaseNoteId","updateEmail","tempServiceFunding","usePersonalPrefernces","defaultSeviceId","defaultSeviceName","useSessionFilterVariables","filterServiceStart","filterServiceEnd","filterDateEnteredStart","filterDateEnteredEnd","filterBillerId","filterBillerName","groupAddOnNames","intellivueSessionID","singleEntryApproveEnabled","anAdmin","ViewAdminSingleEntry","communityIntegrityRequired","singleEntryAddConsumersOnBillable","workshopBatchId","infiniteLoopFlag","incidentTrackingPermission","singleEntryLocationRequired","SingleEntryEditTimeEntry","singleEntryGottenById","singleEntrycrossMidnight","incidentTrackingView","incidentTrackingViewPerm","incidentTrackingReviewedBy","incidentTrackingUpdate","incidentTrackingInsert","incidentTrackingDelete","incidentTrackingViewCaseLoad","defaultIncidentTrackingReviewDays","incidentTrackingPopulateIncidentDate","incidentTrackingPopulateIncidentTime","incidentTrackingPopulateReportedDate","incidentTrackingPopulateReportedTime","incidentTrackingEmailIncident","infalHasConnectionString","isPSI","anywhereMinutestotimeout","useAbsentFeature","useProgressNotes","singleEntryEditLocationHack","HideProgressNotes","firstLoad","portraitPath","isASupervisor","seAdminRemoveMap","removeGoalsWidget","createTimeEntries","changeEmailSent","evvDataCache","singleEntryShowConsumerSignature","singleEntryShowConsumerNote","schedulingUpdate","schedulingView","schedulingStartDayOfWeek","schedAllowCallOffRequests","schedRequestOpenShifts","hideAllScheduleButton","authorizationsView","authorizationsVendorInfoView","planUpdate","planDelete","planView","planInsertNewTeamMember","planAssignCaseload","downloadPlans","planSignatureUpdateDOB","planSignatureUpdateBuildingNumber","planClearSignature","transportationUpdate","transportationView","transportationManageRoute","transportationAddRoute","emarView","sttEnabled","formsDelete","formsInsert","formsUpdate","formsView","formsCaseload","formsFormtype","OODDelete","OODInsert","OODUpdate","OODView","CFDelete","CFInsert","CFUpdate","CFView","CFADDPayee","CFEditAccountEntries","CFInsertAccounts","CFUpdateEditAccounts","CFViewEditAccounts","CFViewChecking","CFViewCraditCard","CFViewFoodStamp","CFViewPettyCash","CFViewShaving","CFViewChristmasClub","CFViewSystem20183A","CFViewSystem20183","CFViewOhioEBT","CFViewViewFoodStampDebitCardEBT","ResetPasswordView","ResetPasswordUpdate","EmploymentView","EmploymentUpdate","EmploymentDelete","InsertEmployers","UpdateEmployers","consumerId","sendWaitingListEmail","stateAbbreviation","deviceGUID","isActiveUsers","billableTransportation","ohioEVVChangeDate","anyRequireEndTime","resize","setDefaultLoc","createCookie","saveDefaultLocationValueAjax","setTime","expires","toGMTString","escape","cookie","readCookie","nameEQ","ca","eraseCookie","setSessionVariables","cookieInnards","permissionString","tmpWindow","window_name","tmpPerm","permission","tmpSpec","special_data","removeClass","ProductName","informationMenuBtn","setSession","each","getUserPermissions","setInterval","tokenCheck","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","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","sendBtn","backgroundColor","Promise","resolve","generatedCodeSuccessfully","fetchData","tempUserId","generateAuthenticationCodeResult","updateHTMLAfterCodeSent","popupMessageText","params","URLSearchParams","loginMessageData","redactedName","getSignerLoginMessageDataResult","maskedFirstName","maskedLastName","signerEmail","tempUserEmail","messageDiv","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","caseNotesWarningStartTime","warningStartTime","caseNotesWarningEndTime","warningEndTime","defaultRosterLocationValue","defaultDayServiceLocationValue","defaultTimeClockLocationValue","defaultTimeClockLocationName","defaulttimeclocklocationname","defaultWorkshopLocationName","defaultRosterGroupName","defaultrostergroupname","userName","genKey","authenticatedLoginResult","require","Chart","moment","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","unshift","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","clone","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","bottom","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","hidden","pivot","_view","_model","_start","transition","tooltipPosition","hasValue","isNumber","chart","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","animation","duration","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","st","lt","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","ut","spanGaps","_children","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","dt","ht","ct","hitRadius","point","pointStyle","ft","inXRange","inYRange","padding","rotation","gt","pt","mt","base","vt","bt","borderSkipped","horizontal","xt","rectangle","yt","outer","inner","fillRect","kt","wt","Mt","St","Arc","Line","Point","Rectangle","Ct","Pt","At","barThickness","stackCount","pixels","_length","getTicks","getPixelForTick","scale","categoryPercentage","barPercentage","chunk","ratio","mode","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","title","xLabel","yLabel","Ft","getPixelForDecimal","_options","Lt","Ot","Rt","zt","animateRotate","animateScale","legendCallback","outerHTML","legend","generateLabels","controller","cutoutPercentage","Nt","getRingIndex","isDatasetVisible","_getRingWeight","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","offsetX","offsetY","total","calculateTotal","_getRingWeightOffset","calculateCircumference","axis","horizontalBar","Bt","Et","Wt","Vt","Ht","ticks","reverse","jt","qt","Ut","_showLine","showLine","lineTension","_scale","updateBezierControlPoints","calculatePointY","stepped","getRightValue","_getSortedVisibleDatasetMetas","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","previous","Yt","angleLines","circular","pointLabels","beginAtZero","Gt","_starts","_angles","_updateRadius","countVisibleElements","_computeAngle","getVisibleDatasetCount","xCenter","yCenter","getDistanceFromCenterForValue","doughnut","Xt","Kt","Zt","getPointPositionForValue","scatter","$t","bubble","polarArea","pie","radar","Jt","native","getRelativePosition","Qt","te","ee","POSITIVE_INFINITY","ie","intersect","ae","modes","single","nearest","re","oe","where","se","le","ue","box","maxPadding","getPadding","outerWidth","outerHeight","de","he","fullWidth","ce","layout","fe","ge","addBox","boxes","_layers","removeBox","configure","leftAndTop","rightAndBottom","vertical","availableWidth","vBoxMaxWidth","hBoxMaxHeight","pe","__proto__","me","ve","be","xe","ye","_e","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","ke","we","Me","Se","Ce","Pe","Ae","resizer","_reset","maintainAspectRatio","renderProxy","animationName","reflow","offsetParent","De","Te","disableCSSInjection","_enabled","_ensureLoaded","getRootNode","containsStyles","host","acquireContext","getContext","initial","aspectRatio","releaseContext","proxies","addEvent","removeEvent","Ie","Fe","plugins","Le","_plugins","_cacheId","register","unregister","getAll","notify","descriptors","plugin","$plugins","_invalidate","Oe","constructors","registerScaleType","getScaleConstructor","getScaleDefaults","updateScaleDefaults","addScalesToLayout","Re","ze","enabled","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","opacity","legendColorBackground","Ve","He","je","_lastActive","getTitle","getBeforeBody","getBody","before","lines","after","getAfterBody","getFooter","_active","caretX","caretY","_eventPosition","getLabelForIndex","itemSort","labelColors","labelTextColors","dataPoints","reduce","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","order","resetElements","lazy","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","meta","drawDatasets","_drawTooltip","_getSortedDatasetMetas","drawDataset","easingValue","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","tn","Controller","types","configMerge","scaleMerge","en","nn","formats","startOf","endOf","_create","override","an","_date","rn","formatters","toExponential","logarithmic","on","sn","ln","un","dn","hn","major","minor","gc","first","widest","highest","cn","drawTicks","tickMarkLength","fn","gn","color","fontColor","pn","mn","vn","drawBorder","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","bn","zeroLineIndex","paddingLeft","paddingTop","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","sampleSize","maxWidth","maxHeight","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","li","ui","di","adapters","displayFormats","unit","_table","_timestamps","getLabelCapacity","distribution","minUnit","unitStepSize","isoWeekday","_unit","_majorUnit","_offsets","factor","tooltipFormat","datetime","tickFormatFunction","getPixelForOffset","_getLabelSize","getLabelWidth","displayFormat","ci","category","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","SEARCH_WRAP","SEARCH_BTN","SEARCH_INPUT","INACTIVE_CHKBOX","userTableData","tempUserTableData","displayedUsers","userTable","changePasswordPopup","savePasswordBtn","cancelPasswordBtn","confirmPasswordInput","newPasswordInput","isCardDisabled","newPasswordValue","confirmPasswordValue","selectedUserID","topNav","buildRosterTopNav","buildTable","tableUserSearch","loadReviewPage","click","buildSearchBtn","changePasswordBtn","buildInactiveChkBox","setCheckForInactiveUser","buildActiveChkBox","tableOptions","buildChangePasswordPopup","userFirstName","UserLastName","popupClassNames","class","headerSpace","errortext","confirmMessage","setupChangePasswordEvents","messagetext","savePassword","checkPassword","confirmPW","resetPasswordAjax","changeUserPassword","UserID","results","populateTable","IsFirstLoad","userID","User_ID","LastName","Last_Name","FirstName","First_Name","Active","additionalInformation","activeCheckbox","setCheckUpdateUserStatus","wrap1","updateActiveInactiveUser","searchValue","consumer","firstName","lastName","fullName","fullNameReversed","matchesName","matchesNameReverse","consumerObj","getActiveInactiveUserlist","dataObj","getActiveInactiveUserDateJSONResult","getUserCredDateJSONResult","myObj","getPassword","CaseNotes","caseNoteId","caseNoteGroupId","caseNoteEditData","caseNoteAttachmentsEditData","attachmentsForDelete","caseManagerId","selectedConsumers","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","includes","isWarningEndTimeValid","warnStart","warnEnd","validStart","validEnd","isFutureTime","isToday","selectedDateClone","isStartTimeBeforeEndTime","timeOverlapCheck","fetchTimeOverlapData","noteId","serviceDate","getOverlapData","deleteNote","deleteExistingCaseNoteResults","saveAttachments","attachmentsForSave","saveAttachmentPromises","promise","description","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","serviceCode","mainbillingorservicecodeid","locationcode","serviceLocation","servicelocationid","need","serviceneedcode","vendorid","contact","contactcode","starttime","endtime","mileage","totalmiles","travelTime","traveltime","noteText","casenote","confidential","outcomeServiceMonitoring","cnFormToast","toggleFormButtonShowHide","toggleVisibility","toggleFormButtonsDisabled","updateVendorDropdownByConsumer","fetchVendorDropdownData","vendorData","getVendorDropdownData","inputs","setValue","updateServiceLocationDropdownByConsumer","fetchServiceLocationDropdownData","servLocData","getServiceLocationDropdownData","formData","onServiceCodeChange","setConsumerRelatedDropdowns","canConsumerHaveMileage","onFileDelete","detail","onTimeChange","inputKey","startTimeVal","getValue","endTimeVal","isTimeFuture","setValidtyError","showError","isStartTimeFuture","isEndTimeFuture","isStartBeforeEnd","showWarning","clearErrorOrWarning","documentationTime","mileageRequired","isMileageRequired","isTravelTimeRequired","isDocTimeRequired","showAutoStartPopup","isServiceFunding","locationRequired","isLocationRequired","needRequired","isNeedRequired","contactRequired","isContactRequired","serviceRequired","isServiceRequired","toggleRequired","getLocationDropdownData","getServicesDropdownData","getNeedsDropdownData","getContactsDropdownData","onChangeCallbacks","hasDecimal","onFormChange","onKeyupCallbacks","words","textareaInput","fullscreen","textareaClone","disableCloseButon","InsertPhrases","onPhraseSelect","phraseText","textValue","updateCloneValue","setFocus","onFormKeyup","processAttachmentsForSave","attachmentDetails","getAttachmentDetails","onFormReset","setSelectedConsumers","onFormDelete","continueSave","deleteConfirmationPopup","onFormSubmit","submitter","buttonName","overlaps","overlapPopup","reviewRequiredData","fetchCaseManagerReviewData","saveData","caseNote","casenotemileage","casenotetraveltime","contactCode","corrected","locationCode","needCode","reviewRequired","service","serviceLocationCode","vendorId","onConsumerSelect","onDateChange","newDate","onOverviewCardDelete","onOverviewCardEdit","scrollToTop","getCaseNoteEditJSONResult","groupid","casemanagerid","totaldoctime","toggleRosterDisabled","servicecode","fetchAttachmentsGK","getAttachmentsList","addAttachments","credit","disableFormInputs","attachEvents","onChange","onKeyup","onDelete","onSubmit","onReset","populatePage","fetchConsumers","loadPage","renderTo","loadPageSkeleton","setActiveModuleAttribute","initComponents","DateNavigation","allowFutureDate","RosterPicker","allowMultiSelect","consumerRequired","Form","fields","required","getServiceBillCodeDropdownData","defaultValue","includeBlankOption","speechToText","styleType","Toast","CaseNotesPhrases","CaseNotesTimer","AsyncRequestVisualizer","ConfirmationPopup","WarningPopup","fromDashboard","CN_CaseLoadWidget","getCurrentlyselectedConsumerId","CaseNotesData","fetchDropdownData","getDefaultServiceCode","fetchConsumersThatCanHaveMileage","dealWithDropdownDataHugeString","decipherXML","billingCodes","bc","tmpServiceCode","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","contactName","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","retrieveData","caseNoteOverlapCheckResult","fetchReviewData","restrictionsResponse","getCaseLoadRestrictionResult","caseNoteReviewData","caseNotesFilteredSearchJSONResult","fetchNoteData","vendorName","caption","getReviewData","numberInGroup","groupnoteid","lastname","firstname","casenoteid","enteredByUser","enteredby","onCaseload","cl","isReviewRequired","getMainServiceCodeNameById","consumername","attachmentId","CaseNotesOverview","buildMostRecentUpdateElement","mostRecentUpdate","Intl","DateTimeFormat","weekday","buildEnteredByElement","enteredBy","originalUserFullName","buildStartTimeElement","buildEndTimeElement","buildTimeDiffElement","timDiff","buildConsumerElement","consumerFullName","consumerNameEle","portrait","Portrait","buildServiceInfoElement","mainService","buildNoteElement","showAllNotes","caseLoadReviewData","overviewWrap","overviewSearch","showAllNotesToggle","overviewCardsWrap","overviewCards","_init","_build","_setupEvents","showAllNotesLS","localStorageHandler","overviewHeader","Input","placeholder","Checkbox","debounce","_filterOverviewOnSearch","rd","searchFields","isMatch","combo","isConfidential","attachmentCountGK","attachcount","overviewCardWrap","overviewCard","mostRecentUpdateEle","mostrecentupdate","enteredByEle","editButton","Button","deleteButton","customEvent","CustomEvent","cancelable","startTimeEle","endTimeEle","timeDurationEle","serviceInfoEle","noteTextEle","filteredSearchResponse","billerId","billingCode","billed","dateEnteredStart","dateEnteredEnd","reviewStatus","onCardEdit","cbFunc","onCardDelete","node","Node","CaseNotesAddPhrases","phrasesInstance","dialog","addPhraseForm","PhrasesInstance","Dialog","maxlength","setupEvents","shortcut","phrase","makePublic","public","insertCustomPhraseResult","CaseNotesInsertPhrases","phrasesData","showAllPhrases","showAllPhrasesToggle","addPhraseButton","phraseWrap","sortedKeys","localeCompare","phraseEle","handleClick","AddPhrases","showAll","getCustomPhrasesResult","phrase_id","phrase_shortcut","CaseNotesReports","detailReportForm","timeAnalysisReportForm","generateDetailReport","generateTimeAnalysisReport","debounceTime","doesReportExist","reportScheduleId","viewReport","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","filterRow","assessmentEntriesTable","filterPopup","selectedConsumersName","selectedConsumersId","filterValues","startDateFrom","startDateTo","endDateFrom","endDateTo","priorAuthApplFrom","priorAuthApplTo","priorAuthRecFrom","priorAuthRecTo","methodologyValuesBtnWrap","scoreValuesBtnWrap","startDateBtnWrap","endDateBtnWrap","priorAuthApplyBtnWrap","priorAuthRecBtnWrap","priorAuthAmtFromBtnWrap","priorAuthAmtToBtnWrap","HistoryData","groupedHistory","historyGroupCount","activeGroup","loadMoreHistory","chunkedArray","targetAction","roster2","getActiveConsumers","loadAssessmentHistoryLanding","authorizationLanding","miniRosterinit","landingPage","ConsumerFinancesAjax","getConsumerNameByID","getConsumerNameByIDResult","FullName","buildNewFilterBtn","filteredBy","buildFilteredBy","buildAssessmentEntriesTable","LOAD_MORE_BTN","buildLoadMoreBtn","loadAssessmentHistoryPage","assessmentEntries","authorizationsAjax","getAssessmentEntriesAsync","methodology","score","priorAuthAmtFrom","priorAuthAmtTo","getAssessmentEntriesResult","groupHistoryData","tableData","entry","behaviorMod","medicalMod","DCMod","CCMod","priorAuthApplied","priorAuthReceived","priorAuthAmount","numberWithCommas","ID","pouplateHistory","history","chunkBy","vendorKeys","methodologyValues","scoreValues","filterButtonSet","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","maxAmount","updateFilterData","newStartDateFrom","newStartDateTo","newEndDateFrom","newEndDateTo","newPriorAuthApplFrom","newPriorAuthApplTo","newPriorAuthRecFrom","newPriorAuthRecTo","newPriorAuthAmtFrom","newPriorAuthAmtTo","setBtnStatusOfFilter","hasErrors","methData","methodologyID","getScoreResult","Score","getScoreAsync","scoreData","scoreID","scoreDescription","setActiveModuleSectionAttribute","loadedApp","showMiniRoster","loadAuthorizationLanding","pasBtn","assessmentHistoryBtn","vendorInfoBtn","vendorInfo","authData","filterDropdownData","selectedConsumer","pageWrap","overviewTable","planTypeDropdown","vendorDropdown","matchSourceDropdown","completedDateStart","completedDateEnd","yearStartStart","yearStartEnd","yearEndStart","yearEndEnd","applyFilterBtn","plantypeBtnWrap","vendorBtnWrap","matchSourceBtnWrap","completedDateBtnWrap","yearStartBtnWrap","yearEndBtnWrap","newFilterValues","clearAllData","completedDateStartInput","completedDateEndInput","yearStartStartInput","yearStartEndInput","yearEndStartInput","yearEndEndInput","groupChildData","pageDataChild","groupedChildren","child","pas_id","convertToCurrency","numberValue","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","populateMatchSourceDropdown","matchSources","ms","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","service_code","BeginDate","EndDate","MaxUnits","frequency","authCostFY1","authCostFY2","consumerCard","getFilterDropdownData","getAuthorizationPageDataResult","responseText","getAuthorizationFilterDataResult","consumerIds","MethodologyID","getVendorInfoAsync","DDNumber","localNumber","goodStanding","homeServices","takingNewReferrals","fundingSource","getVendorInfoResult","getVendorAsync","getFundingSourceAsync","getServiceCodeAsync","getVendorEntriesByIdAsync","vendorID","getVenderServicesEntriesAsync","getVenderUCREntriesAsync","getProviderTypeEntriesAsync","getVenderCertificationEntriesAsync","getVenderLocationReviewEntriesAsync","newVendorInfo","ispDiv","ispNav","ispBody","LocalNumber","Phone","vendorGeneral","getMarkup","vendorServices","vendorUCR","vendorProviderType","vendorCertification","vendorLocationReview","refreshVendor","DDNum","localNum","headingWrap","headingName","localNumberheading","ispWrap","BACK_BTN","vendorInfoLoad","newIspMarkup","toggleActiveNavItem","selectedNavItem","activeNavItem","toggleActiveSection","sectionId","buildNavigation","buildBody","certificationEntries","vendorCertificationWrap","importantTables","buildNewCertificationForm","vendorCertificationDiv","certificationEntriesTable","buildCertificationEntriesTable","column1","addNewCard","addNewCardBody","getVenderCertificationEntriesResult","Certifiction","oTable","vendorEntriesById","workScheduleWrap","buildVendorGeneralForm","employeeInfoDiv","nameInput","getVendorEntriesByIdResult","contactNameInput","contactPhoneInput","contactPhone","contactEmailInput","contactEmail","address1Input","address1","address2Input","address2","cityInput","city","stateInput","zipInput","zipCode","phoneInput","primaryPhone","firstNameInput","providerFirstName","lastNameInput","providerLastName","birthDateInput","providerBirthDate","buildingNumberInput","providerBuildingNumber","salesforceIDInput","salesforceId","DDStateNumberInput","DDStateNumber","einInput","ein","submitterInput","submitterId","localNumberInput","SSNInput","ssn","senderInput","sender","MHStateNumberInput","MHStateNumber","TDDStateNumberInput","TDDStateNumber","NPIInput","NPI","MHNPIInput","MHNPI","inGoodStandingchkBox","takingNewReferralschkBox","FSSVendorchkBox","FSSVendor","sanctionsAdministeredchkBox","sanctionsAdministered","inHomeServiceschkBox","consumerNameDisplay","dropWrap","dropWrap1","dropWrap2","consumerNameDisplay1","dropWrap3","dropWrap4","consumerNameDisplay2","dropWrap5","dropWrap6","consumerNameDisplay3","chkDiv","chkDiv1","chkDiv2","chkDiv3","chkDiv4","DDNumberBtnWrap","localNumberBtnWrap","goodStandingBtnWrap","homeServicesBtnWrap","takingNewReferralsBtnWrap","fundingSourceBtnWrap","serviceCodeBtnWrap","vendorsData","groupedVendors","vendorGroupCount","loadMoreVendors","handleVendorInfoTableEvents","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","getVendorResult","Vendor","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","groupSize","CDBCategory","assessmentAcuityScore","UCR","caseNotes","loadCaseNotesLanding","newBtn","newSSABtn","noteSSA","overviewBtn","notesOverview","editPhrasesBtn","cnEditPhrases","tryNewCaseNotes","caseNotesAjax","getFilteredCaseNotesList","submitData","serviceDateStart","serviceDateEnd","enteredDateStart","enteredDateEnd","getCaseNoteEdit","getGroupNoteId","getDropdownData","getConsumersThatCanHaveMileage","getBillersListForDropDown","getBillersListForDropDownJSONResult","getReviewRequiredForCaseManager","getCaseNoteAttachmentsList","getCaseNoteAttachmentsListResult","getConsumerSpecificVendors","getServiceLocationsForCaseNoteDropDown","caseNoteOverlapCheck","saveSingleCaseNote","serviceMonitoring","saveGroupCaseNote","saveAdditionalGroupCaseNote","updateGroupNoteValues","deleteExistingCaseNote","deleteExistingCaseNoteResult","addCaseNoteAttachment","desc","buf","binary","bytes","Uint8Array","byteLength","fromCharCode","abString","deleteCaseNoteAttachmentResult","deleteCaseNoteAttachment","viewCaseNoteAttachment","successFunction","getCustomPhrases","insertCustomPhrases","getCustomPhraseResult","getConsumersForCNFilter","getConsumersForCNFilterResult","generateCNDetailReport","billCodeText","consumerName","originallyEnteredStart","originallyEnteredEnd","generateCNDetailReportResult","generateCNTimeAnalysisReport","generateCNTimeAnalysisReportResult","checkIfCNReportExists","checkIfCNReportExistsResult","viewCaseNoteReport","getCNPopulateFilterDropdowns","serviceCodeId","getSSAServiceOptionsDropdown","getSSAServiceOptionsDropdownResult","getCaseLoadRestriction","getSSABillCodesFromService","servicePersonApproved","getSSABillCodesFromServiceResult","caseNotesTimer","clearTimerOnSave","inactTime","inactivityTime","documentTimeSeconds","onload","onmousemove","onkeypress","pauseTimer","fromInactive","inactiveTimeForClear","attr","displayDocTime","resetTimer","dontResetInactTimerFlag","logout","answer","confirm","startCaseNoteTimer","timeInSeconds","minutesLabel","documentationTimer","runningTime","saveTime","timer","startBtn","timerRunning","clearTimer","inactiveAlert","resetInactivityTimer","deltaMS","deltaS","newMinutes","minArea","getTimeFromInactivity","stopTimer","startPercisionTimer","prevTime","docTimerMutationObserver","prevTimeMS","startTimer","cardBody","shortcutInput","phraseInput","pubCheckbox","saveBtn","buildCard","cardHeader","buildInputs","savePhrase","checkForError","clipboardData","getData","CFConsumerBtns","consumerRow","consumerElement","accountId","BtnName","page","IsDisabledAccount","accountPermission","tempAccountPer","account","loadCFEditLanding","LineBr","getaccountPermission","resultAccount","getEditAccountAsync","getEditAccountResult","accountName","topButton","buildHeaderButton","border","importantAccountForm","buildAccountForm","populateAccountDropdown","buildButtonBar","buttonBar","minWidth","dropdownButtonBar","entryButtonBar","accountDropdown","entryBtn","marginLeft","disabledEnabledAccounts","classofAccount","dateClosed","lastReconciled","openingBalance","balance","dateOpened","nameTemp","numberTemp","typeTemp","statusTemp","classofAccountTemp","dateOpenedTemp","dateClosedTemp","openingBalanceTemp","descriptionTemp","getEditAccountInfoByIdAsync","getEditAccountInfoByIdResult","inputNumber","typeDropdown","statusDropdown","classDropdown","opendDate","closeDate","lastReconciledDate","inputOpeningBal","inputBal","inputDesc","SAVE_BTN","saveUpdateAccount","cancleAccount","drWrap","drWrap1","drWrap2","drWrap3","populateDropdown","checkRequiredFieldsOfAccountInfo","accounts","dataAccount","totalBalance","getAccountClassResult","classAccount","getAccountClassAsync","dataClass","accountClass","SystemClass","typeData","statusData","getRequiredFieldsOfAccountInfo","openDateVal","closeDateVal","nameVal","typeVal","statusVal","setBtnStatusOfAccountInfo","clearSelectedConsumers","clearActiveConsumers","insertEditRegisterAccountAsync","insertEditRegisterAccountResult","defaultCFLocation","getLocation","setLocation","hideDate","consumerFinanceAttachment","ConsumerFinanceAttachment","regId","IsDisabled","attachID","attachmentsForQuestion","IsDisabledBtn","buildAttachmentButton","attachmentButton","attachmentPopup","attachmentsToDelete","attachmentsAdded","populateExistingAttachments","reviewAttachmentList","fileContainer","attachmentID","removeAttachmentBtn","addRemoveAttachmentToDeleteList","file","viewCFAttachment","attachmentElement","currentDeleteStatus","fileValidation","fileType","files","reFileTypeTest","addNewAttachment","addRemoveAttachmentEventListener","fileInput","lastAttachment","lastChild","newFileContainer","attachmentContainer","saveAction","saveAttachmentsToDB","attachmentSaveArray","attachmentArray","saveProm","arrayBuffer","addCFAttachment","attSaveRes","all","deleteCFAttachment","attachmentInputs","attachmentProms","inputElement","attPromise","attachmentObj","attachmentFile","attachmentName","registerID","Response","addAttachmentBtn","cleanAttachmentLists","newAttachmentList","newAttachmentsHeader","attachmentsToAdd","attachmentsToRemove","attId","attach","isAttacExist","attachmentBtn","NewEntryCF","buildNewEntryForm","getConsumerFinanceAttachments","regID","retData","getCFAttachmentsList","ConsumerFinanceEntriesTable","activityStartDateBtnWrap","activityEndDateBtnWrap","minamountBtnWrap","maxamountBtnWrap","transectionTypeBtnWrap","accountNameBtnWrap","payeeBtnWrap","categoryBtnWrap","enteredByBtnWrap","isattachmentBtnWrap","selectedConsumerIds","loadConsumerFinanceLanding","buildConsumerFinanceEntriesTable","ConsumerFinancesEntries","getAccountTransectionEntriesAsync","activityStartDate","activityEndDate","payee","minamount","maxamount","checkNo","Balance","isattachment","transectionType","getAccountTransectionEntriesResult","activityDate","theMonth","formatActivityDate","checkno","isExpance","handleAccountTableEvents","registerId","AttachmentsID","getActiveAccountResult","getActiveAccountAsync","activityStartDateBtn","activityEndDateBtn","minamountBtn","maxamountBtn","transectionTypeBtn","transectionTypeCloseBtn","accountNameBtn","accountNameCloseBtn","payeeBtn","payeeCloseBtn","categoryBtn","categoryCloseBtn","enteredByBtn","enteredByCloseBtn","isattachmentBtn","isattachmentCloseBtn","fromDateInput","toDateInput","minAmountInput","maxAmountInput","transectionTypeFilterDropdown","accountFilterDropdown","payeeDropdown","categoryDropdown","lastUpdateDropdown","isAttachedDropdown","amountWrap","checkValidationOfFilter","tmpactivityStartDate","tmpactivityEndDate","tmpminAmount","tmpmaxAmount","tmpaccountName","tmpenteredBy","tmppayee","tmpcategory","tmpisattachment","tmptransectionType","fromDate","accountData","getPayeesResult","Payees","getPayeesAsync","payeeData","payees","CategoryID","categoryID","getCategoriesSubCategoriesResult","Category","getCategoriesSubCategoriesAsync","categoryData","CategoryDescription","getActiveUsedByResult","employees","getActiveEmployeesAsync","employee","condfidentialDropdownData","TransectionTypeDropdownData","ConsumersId","getCategoriesAsync","getSubCategoriesAsync","getCategoriesSubCategoriesByPayeeAsync","insertPayeeAsync","payeeName","payeeaddress1","payeeaddress2","payeecity","payeestate","payeezipcode","zipcode","insertAccountAsync","amountType","AccountID","subCategory","attachmentDesc","receipt","splitAmount","eventType","getAccountEntriesByIDAsync","deleteConsumerFinanceAccountAsync","addCFAttachmentResult","deletePlanAttachmentResult","getCFAttachmentsListResult","sectionInput","getSplitRegisterAccountEntriesByIDAsync","getSplitCategoriesSubCategoriesAsync","newDateInput","newAmountInput","newAccountDropdown","newPayeeDropdown","ADD_NEW_PAYEE_BTN","newCategoryDropdown","newSubCategoryDropdown","newCheckNoInput","newDescriptionInput","newReceiptInput","NEW_SAVE_BTN","NEW_CANCEL_BTN","prevAttachmentArray","lastUpdateBy","IsReconciled","IsAddNewPayDisable","IsSaveDisable","IsDeleteDisable","splitAmountInputN","splitCategoryDropdownN","splitDescriptionInputN","categoryOldVal","totalAmount","regTotalAmount","numberOfRows","splitTransPopup","tempAmountval","tempSplit","tempAmouts","totalAmountSaved","pageName","IsNewRefresh","getAccountEntriesByIdResult","accountID","accountType","reconciled","SplitDataresult","getSplitRegisterAccountEntriesByIDResult","sum","tempdate","tempamount","tempaccount","tempaccountType","temppayee","tempcategory","tempsubCategory","tempcheckNo","tempdescription","tempattachment","tempreceipt","column2","SPLIT_BTN","NEW_DELETE_BTN","expenseRadio","depositRadio","radioDiv","space","DisabledAllInputs","enableDisabledInputs","radioWrap","addRightCard","addRightHeader","addRightBody","questionAttachment","populatePayeeDropdown","populateCategoryDropdown","populateSubCategoryDropdown","checkRequiredFieldsOfNewEntry","getSplitdata","buildSplitTransectionPopUp","EnabledAllInputs","setBtnStatusOfNewEntry","buildNewPayeePopUp","saveNewAccount","deleteAccountPOPUP","errorPopup","getCategorySubCategorybyPayee","insertAccountResult","confirmPopup","YES_BTN","deleteAccount","NO_BTN","popupbtnWrap","getCategoriesSubCategoriesByPayeeResult","CategoriesSubCategory","SubCategoryDescription","getCatogoriesResult","getSubCatogoriesResult","SubCategory","payeeId","addPayeePopup","payeeInput","zipcodeInput","addPayeePopupDoneBtn","popUpEventHandlers","finalVal","setBtnStatus","insertPayeeResult","RegionID","duplicatePayeErrorPopup","duplicatePayeErrorConfPOPUP","btnWrapInputsN","regAmountTotalInput","amountTotalInput","totalBtnWrapInputs","saveSplitBtn","splitTransPopupSaveBtn","cancelSplitBtn","popUpSplitTransectionEventHandlers","populateSplitCategoryDropdown","splitAmountTotal","checkRequiredFieldsSplitTransection","SplitCategory","splitAmt","setBtnStatusSplitTransection","getSplitCategoriesSubCategoriesResult","categoryId","splitTransSaveData","errorConfPOPUP","yesBtn","noBtn","widgets","setupFuncs","widgetIds","caseNotesProductivity","caseNotesCaseLoad","caseNotesRejected","planWorkflow","customLinks","unreadLocationNotes","consumerProgressNotes","timeClock","hoursWorked","goals","clockedIn","singleEntry","adminSingleEntry","schedule","incidentTracking","missingSignatures","moneyManagement","infal","systemMessages","appendFilterButton","widgetId","btnId","headerSelector","widgetHeader","filtersSelector","widgetFilters","appendPDFButton","pdfBtn","generateReports","passFilterValuesForReport","showWarningPopup","buildFilterPopup","initAbsentWidget","showHide","getWidgetSettings","loadAbsentWidget","div","absentWidget","initLinksAndMessagesWidget","showHideCustomLinks","loadSysMessagesAndCustomLinksWidget","div2","linksAndMessages","initSystemMessagesWidget","initSingleEntryWidget","loadAdminSingleEntryWidget","singleEntryCountWidget","initAdminSingleEntryWidget","loadSingleEntryWidget","adminSingleEntryWidget","initTimeClockWidget","loadEmployeeDayServicesWidget","initHoursWorkedWidget","loadHoursWorkedWidget","hoursWorkedWidget","initScheduleWidget","loadScheduleWidget","initDailyServicesWidget","loadDailyServicesWidget","widgetSetup","remainingDailyServicesWidget","initClockedInWidget","loadDayServicesWidget","clockedInWidget","initIncidentTrackingWidget","loadIncidentTrackingWidget","incidentTrackingWidget","initConsumerProgressNotesWidget","loadConsumerProgressNotesWidget","consumerProgresNotes","initLocationProgressNotesWidget","loadLocationProgressNotesWidget","initCaseNotesProductivityWidget","hasPerm","loadCaseNotesProdictivityWidget","CN_ProductivityWidget","initCaseNotesCaseLoadWidget","loadCaseNotesCaseLoadWidget","initCaseNotesRejectedWidget","CN_RejectedWidget","initPlanWorkflowWidget","loadPlanWorkflowWidget","planWorkflowWidget","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","append","displayChangeUser","HTMLresponse","replaceWith","rosterAjax","getPSIUserOptionList","err","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","PSmodal","incrementMessage","immediate","closeOnBlur","displayTimeBox","mobile","timeBox","marginTop","clearTimepadInputField","convertDaysBack","daysBackIn","dateOffset","daysBackDate","dateToPass","convertDaysBackGoals","popupCalendar","minDate","maxDate","currVal","dateFormat","theme","accent","preset","onSelect","inst","onShow","scroller","mobiscroll","openCaraSolva","enctype","scope","Anywhere","promptYesNo","yesCallback","noCallback","userPopup","userElemet","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","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","getRosterLocations","getLocationsJSONResult","multiDeleteRecordBtn","multiSelectAllBtn","multiSelectNoneBtn","multiOutRecordBtn","multiInRecordBtn","filterLocationDropdown","filterGroupDropdown","filterDateInput","fitlerApplyBtn","batchedMessageDisplay","mulitSelectBtn","multiSelectAllNoneArea","dsCardArea","groupDropdown","initRosterSelection","activeConsumers","rosterGroupResults","locationID","filterGroupID","filterGroupRetrieveID","temp__locationID","temp__groupID","temp__retrieveID","temp__serviceDate","locationBtnWrap","serviceDateBtnWrap","selectedGroupNameBtnWrap","displayedConsumers","enabledConsumers","noLocationSet","enabledConsumerString","currentLocationBatched","locationCache","activityCache","dsConsumers","dsGroupsCache","dsDropdownData","ciDropdownData","groupDropdownData","selectedDSType","selectedGroup","locationDropdownData","enableMultiEdit","IsSaveBtnDisable","dsTypes","dsType","dsText","formatConsumersForClockIn","consumerString","formatConsumersForClockOut","act","Stop_Time","Start_Time","checkIfBatched","dayServiceAjax","getDSIsLocationBatched","checkForNoLocation","getDayServiceActivity","tempDsConsumers","getConsumerDayServiceActivity","Acuity","AllowNonBillable","Day_Service_Type","Service_Date","ciStaffID","isBatched","dsGroupId","Day_service_group_id","dsConsumerMap","has","checkForCI","errorPopupText","searchDS","convertDSValueToText","newtext","updateCurrentFilterDisplay","selectedGroupName","dayServicesFilterPopup","locationBtn","serviceDateBtn","selectedGroupNameBtn","selectedGroupNameCloseBtn","filterApplyAction","clockInOutChoicePopup","setupActionNav","multiSelectBtn","highlightedRows","multiDeleteRecord","selectedElms","highlightedHeaders","multiInOutRecord","populateFilterGroupDropdown","groupCodeObj","GroupCode","groupCode","groupName","GroupName","members","Members","RetrieveID","updateSelectedLocationId","rememberLastLocation","getDayServiceGetEnabledConsumers","allowedConsumers","consumer_id","setAllowedConsumers","doStuff","buildCards","getDayServiceGroups","groupDescription","handleDayServiceCardEvents","isRow","isHeader","rowPopup","textA","textB","cardBodyHeader","dsGroup","dsGroupValue","displayStartTime","displayEndTime","cardRow","dayServiceDisplay","placeholder1","placeholder2","placeholder3","placeholder4","enableMultiEditRows","multiBtn","recordsToDelete","inTime","deleteDSRecord","clockInOutActionPopup","groupID","newInTime","newOutTime","outTime","childElementCount","inTimeField","outTimeField","dsTypeDropdown","saveTypeAndCi","consumerDeleteString","consumerExistingDayServicePopup","consumerList","continueBtn","textArea","selectedDSTypeId","setBtnStatusOfSave","clockInBtn","idString","sc","clockedInConsumers","getDayServiceClockedInConsumers","consumerIdString","clockOutBtn","choice","inPopup","outPopup","timeInField","timeOutField","clockIn","clockOut","inCancelBtn","outCancelBtn","clockInConsumerString","selectedConsumerCount","dayServiceClockIn","overlapConsumers","accuityDisplay","clockOutConsumerString","updateDayServiceActivity","deleteDayServiceActivity","orgPopup","confPopup","confirmBtn","orgInTime","orgEndTime","ciStaffId","updateDSTypePromise","updateCIPromise","updateCIStaff","deleteCIPromise","deleteCIStaffId","buildPageComponents","allRows","allHeaders","getFilterValues","dayServiceLocation","dayServiceServiceDate","createMainReportButton","buttonsData","buttonData","showReportsPopup","reportsBtn","filterSelectReportBtnWrap","toggleActionCenterChildrenVisiblity","initialPageBuild","ds","addEventListeners","customGroupsAjax","getConsumerGroupsJSONResult","retrieveid","initPageLoad","dsEnabledConsumers","checkCiPromise","getDateToCheckShowCI","ciDateToCompare","Setting_Value","getCiStaffPromise","getCiStaff","getEnabledConsumersPromise","actObj","getGroupsPrommise","locationCheck","getDayServiceLocations","defaultDayServiceType","applyBtn","checkConsumersForDate","massUserCheckByDateJSONResult","getDayServiceGetEnabledConsumersResult","errorId","errorConsumerIds","tmpErrorCode","setErrorBox","dayServiceClockOut","getDateToCheckShowCIResult","getExistingCIStaffId","resIn","ciButtonId","staffId","getExistingCIStaffIDFromResponse","createCIDropdown","getDayServiceLocationsJSONResult","optionsHtml","showSelect","tmpName","tmpId","tmpId2","tmpRes","serviceLocationCount","locationIds","currentlocationId","resizeHeaderText","changeTheDSLocation","peopleList","retrieveId","getConsumerDayServiceActivityJSONResult","getCIStaffDropdownJSONResult","inputType","dayServiceType","getDSIsLocationBatchedResult","getDayServiceGroupsResult","getDayServiceClockedInConsumersResult","addEditEmployers","addNewEmployerBtn","rtnOODMainPageBtn","employerId","employerName","employeraddress1","employeraddress2","employercity","employerstate","employerzipcode","employerInput","openedPage","redirectInformation","BtnEventType","buildEmployerPopUp","loadEmploymentLanding","OODEmployersTable","buildEmployersTable","getActiveEmployersResult","activeEmployers","OODAjax","getActiveEmployersAsync","filteredActiveEmployers","employer","getEmployer","employerdata","postType","openpageName","redirectInfo","headingEmployer","editEmployerPopup","editEmployerPopupDoneBtn","employrInput","insertEmployerAsync","insertEmployerResult","employerID","NewEmployment","refreshEmployment","positionId","empName","posName","consumersName","consumersId","tabPositionIndex","updateEmployerAsync","updateEmployerResult","tableRow","deletepopup","deleteEmployerAsync","deleteEmployerResult","OKBtn","newFilterBtn","EmploymentEntriesTable","PositionBtns","employerBtnWrap","positionBtnWrap","positionStartDateBtnWrap","positionEndDateBtnWrap","jobStandingBtnWrap","reportValues","buildEmploymentEntriesTable","EmploymentsEntries","EmploymentAjax","getEmploymentEntriesAsync","positionStartDate","positionEndDate","jobStanding","getEmploymentEntriesResult","PeopleName","positionName","newPositionBtn","editEmployerBtn","getReportValues","EmployerID","positionID","jobStandingID","consumerID","employerBtn","employerCloseBtn","positionBtn","positionCloseBtn","positionStartDateBtn","positionEndDateBtn","positionEndDateCloseBtn","jobStandingBtn","jobStandingCloseBtn","positionDropdown","jobStandingDropdown","EmployerDropdown","tmpEmployer","tmpPosition","tmpJobStanding","tmpStartDate","tmpEndDate","tmpEmployerID","tmppositionID","tmpjobStandingID","getPositionsResult","Positions","getPositionsAsync","positionsData","positions","getEmployersResult","Employer","getEmployersAsync","getJobStandingsResult","JobStanding","getJobStandingsAsync","jobStandingData","jobStandingId","jobStandingName","getEmployeeInfoByIDAsync","insertEmploymentPathAsync","employmentPath","newStartDate","newEndDate","currentEndDate","peopleID","existingPathID","insertEmploymentInfoAsync","startDatePosition","endDatePosition","transportation","typeOfWork","selfEmployed","email","PositionId","typeOfEmployment","getJobStandingsDropDownAsync","getEmployerDropDownAsync","getPositionDropDownAsync","getTransportationDropDownAsync","getTypeOfWorkDropDownAsync","getTypeOfEmploymentDropDownAsync","getWagesEntriesAsync","getWagesCheckboxEntriesAsync","insertWagesAsync","hoursWeek","hoursWages","wagesID","saveCheckboxWagesAsync","chkboxName","IsChacked","textboxValue","getPositionTaskEntriesAsync","getInitialPerformanceDropdownAsync","insertPositionTaskAsync","task","initialPerformance","initialPerformanceNotes","employeeStandard","jobTaskID","getWorkScheduleEntriesAsync","isNewPositionEnableAsync","getEmployeementPathAsync","insertWorkScheduleAsync","dayOfWeek","WorkScheduleID","getLastTaskNumberAsync","deleteWagesBenefits","deleteWagesBenefitsResult","deleteWorkSchedule","deleteWorkScheduleResult","deletePostionTask","PositionID","deletePostionTaskResult","getEmployeeStatusDropDownAsync","createNewEmploymentPathAsync","currentStatus","pathToEmployment","pathToStartDate","EmploymentInformation","getEmployeeInfoByID","tempstartDatePosition","tempendDatePosition","tempposition","tempjobStanding","tempemployer","temptransportation","temptypeOfWork","tempselfEmployed","tempname","tempphone","tempemail","consumersID","getEmployeepath","existingEndDate","isNewPositionEnable","temptypeOfEmployment","PositionName","SelectedConsumersName","isNewPositionEnableResult","IsEmployeeEnable","employeeInforWrap","buildNewEmploymentForm","createEmploymentPathPopupBtn","getEmployeeInfoByIDResult","getEmployeementPathResult","existingStartDate","employerDropdown","transportationDropdown","typeOfWorkDropdown","typeOfEmploymentDropdown","isSelfEmployed","emailInput","saveEmployeeInfo","CancleValidate","UPDATE_BTN","updatePathPopupBtn","addEmployerBtn","messageHeading","msgWrap","infoWrap","populateDropdowns","checkRequiredFieldsOfEmployeeInfo","getRequiredFieldsOfEmployeeInfo","setBtnStatusOfEmployeeInfo","selectedConsumerOption","getPositionDropDownResult","getEmployerDropDownResult","getJobStandingsDropDownResult","getTransportationDropDownResult","Transportation","transportationData","transportationId","transportationName","getTypeOfWorkDropDownResult","TypeOfWork","typeOfWorkData","typeOfWorks","typeOfWorkId","typeOfWorkName","getTypeOfEmploymentDropDownResult","TypeOfEmployment","typeOfEmploymentData","typeOfEmployments","updatePathPopup","currentPathEndDate","newPathEmploymentDropdown","newPathStartDate","newPathEndDate","saveNewPathPopup","PopupEventListeners","populateNewPathEmploymentDropdown","checkRequiredFieldsOfEmploymentPath","newPathEmployment","CurrentEndDate","setBtnStatusOfEmploymentPath","pathName","insertEmploymentPathResult","pathId","insertEmploymentInfoResult","CancleEmploymentInfoPopup","createPathPopup","currentStatusDropdown","pathToEmploymentDropdown","pathToEmploymentStartDate","CONTINUE_BTN","createNewPath","CREATE_PATH_CANCEL_BTN","createEmploymentPathPopupEventListeners","populateEmploymentStatusDropdowns","checkRequiredFieldsOfCreateEmploymentPath","currentSts","pathToEmp","pathStartDt","setBtnStatusOfCreateEmploymentPath","getEmployeeStatusDropDownResult","EmpStatus","empStatus","empStatusId","empStatusName","createNewEmploymentPathResult","WagesBenefits","PositionTask","WorkSchedule","TabPosition","PositionEntriesTable","PositionEntries","LastTaskNumber","actualTaskNumber","positionWrap","buildNewPositionForm","positionDiv","NEW_POSITION_BTN","addPositionPopupBtn","buildPositionEntriesTable","getPositionTaskEntriesResult","jobTaskId","deletePositionTaskPOPUP","deletePositionTask","getLastTaskNumberResult","lastTaskNumber","initialPerformanceID","positionValue","addPositionPopup","taskInput","descriptionInput","initialPerformanceDropdown","initialPerformanceNotesInput","employeeStandardInput","checkRequiredFieldsOfPopup","saveNewPositionPopup","setBtnStatusOfPopup","getInitialPerformanceDropdownResult","InitialPerformance","initialPerformanceData","initialPerformanceId","initialPerformanceName","insertPositionTaskResult","WagesEntriesTable","CheckBoxEntries","vacationSickChk","retirementChk","medicialChk","DiscountChk","otherChk","otherValue","isOverLapRecord","eligibleBenefits","eligibleBenefitschkBox","vacationSickchkBox","medicalVisionchkbox","retirementchkBox","empDiscountchkBox","otherchkBox","wagesInfoWrap","buildNewWagesBenefitsForm","wagesDiv","otherInputText","getWagesCheckboxEntriesResult","vacationSick","retirement","medical","empDiscount","otherText","saveWagesChecked","checkBoxValidation","disableCheckBox","otherChecked","NEW_WAGES_BTN","addWagesPopupBtn","buildWagesEntriesTable","chk1Div","getWagesEntriesResult","hoursPerWeek","wagesPerHour","wagesId","deleteWagesBenefitsPOPUP","empValue","addWagesPopup","weekHours","wagesHours","saveNewWagesPopup","weekPerHour","insertWagesResult","saveCheckboxWagesResult","medicalVision","eligibleForBenifitConfirmPOPUP","workScheduleEntriesTable","ScheduleEntries","weekDaysSelection","nameOfEvent","toRemoveWeekName","getWorkScheduleEntriesResult","WorkScheduleId","timeInHours","totalHours","toHoursAndMinutes","padToTwoDigits","padStart","buildNewWorkScheduleForm","workScheduleDiv","NEW_SHIFT_BTN","addWorkSchedulePopupBtn","buildworkScheduleEntriesTable","deleteWorkSchedulePOPUP","eventName","workScheduleValue","addWorkSchedulePopup","checkboxlable","sundaylable","sundaychkBox","mondaylable","mondaychkBox","tuesdaylable","tuesdaychkBox","wednesdaylable","wednesdaychkBox","thursdaylable","thursdaychkBox","fridaylable","fridaychkBox","saturdaylable","saturdaychkBox","dayOfWeekDropdown","NewStartTime","NewEndTime","dayChkWrap","timebtnWrap","populateWeekDaysDropdown","weekDay","timeEnd","timeStart","sundaychk","mondaychk","tuesdaychk","wednesdaychk","thursdaychk","fridaychk","saturdaychk","chklable","dayOfWeekDropdownData","insertWorkScheduleResult","questions","esignerData","generateReportDownload","esignaturesAjax","downloadReportAfterSigning","_buffer","byteArray","blob","msSaveOrOpenBlob","fileURL","reports","handledProcessedReport","displayFormPopup","testDiv","viewerContainer","margin","formContainer","buildDissentSection","dissentWrap","dissentTitle","dissentAreaDisagree","dissentHowToAddress","buildStandardQuestionSet","standardQuestions","ssaName","standardQuestionsWrap","question","questionContainer","questionText","questionRadioContainer","validateForm","buildConsentSection","consentWrap","consentHeader","signatureInput","allFilled","updateQuestions","downloadExitPopup","paragraph","downloadPlanBtn","formPopup","teamMemberType","dissentingSection","signatureDisplay","openESignaturesPDFEditor","eSignerDataResult","getESignerDataResult","planId","csChangeMind","csChangeMindSSAPeopleId","csContact","csContactProviderVendorId","csContactInput","csRightsReviewed","csAgreeToPlan","csFCOPExplained","csDueProcess","csResidentialOptions","csSupportsHealthNeeds","csTechnology","formId","documentEdited","isRefresh","isTemplate","planAttachmentIds","wfAttachmentIds","sigAttachmentIds","openESignaturesEditorResult","WebViewer","path","licenseKey","documentType","instance","FitMode","setFitMode","FitWidth","disableElements","docViewer","annotManager","setHeaderItems","img","binaryString","atob","loadDocument","filename","doc","getDocument","xfdfString","exportAnnotations","getFileData","tempUserIdInput","defaultval","displayfromBLOBBtn","documntId","newFormBtn","isFormLocked","templateId","templateDropdown","doneBtn","loadPDFFormsLanding","buildNewFormBtn","formsConsumer","hasAssignedFormTypes","getconsumerFormsResult","consumerForms","formsAjax","getconsumerFormsAsync","consumerForm","formCompleteDate","formatCompleteDate","formType","formDescription","formLastUpdated","formUserUpdated","formEditPopup","createTemplatePopUp","selectTemplatePopup","thisCompleteDate","completeDateInput","templatePopupDoneBtn","doneButton","templatePopupCancelBtn","templateDropdownValidation","templateDropdownOptions","completeDate","getUserFormTemplatesResult","templates","getUserFormTemplatesAsync","uniqueForms","template","exists","formTemplateId","viewer","viewerWrap","checkFormsLockValue","checkFormsLock","openFormEditor","displayStepFormPopup","stepId","docOrder","formName","openStepFormEditor","displayWFStepFormPopup","templateName","documntEdited","openEditor","openPDFEditor","deleteConsumerFormAsync","deleteConsumerFormResult","formeditpopup","updateConsumerFormCompletionDateAsync","openEditorResult","WorkflowViewerAjax","insertStepDocumentAsync","insertWorkflowStepDocumentResult","documentId","newDocObj","newStepDocComponent","WorkflowDocumentComponent","stepsContainer","documentsList","Tools","Annotations","openPDFEditorResult","updateStepDocumentAsync","updateWorkflowStepDocumentResult","updatedDocument","closeDocument","getPDFDocData","documentNotAllowedSaveAlert","openFormEditorResult","formID","updateConsumerFormAsync","updateConsumerFormResult","insertConsumerFormAsync","insertConsumerFormResult","closewarningPopup","removeFormsLock","getPDFFormData","resultStepDoc","formtemplateid","formdata","formCompletionDate","closewarningpopup","continueNoSaveBtn","mustSaveBtn","checkFormsLockResult","removeFormsLockResult","involvementTypes","incidentLocations","categories","employeeNames","getInvolvementTypes","getLocations","getCategories","getEmployeeNames","getInvolvementTypesPromise","incidentTrackingAjax","getInvolvementTypeData","getIncidentCategoriesPromise","getIncidentCategories","getIncidentLocationDetailPromise","getIncidentLocationDetail","getEmployeesInvolvedEmployeeDropdownPromise","getEmployeesInvolvedEmployeeDropdown","loadLandingPage","newIncidentBtn","incidentOverview","sendNotification","notificationType","employeeId","incidentTypeDesc","incidentDate","incidentTime","subcategoryId","getITInvolvementTypeDataResult","getITIncidentCategoriesResult","getITIncidentLocationDetailResult","getConsumerServiceLocations","getITConsumerServiceLocationsResult","updateIncidentTrackingDaysBack","updatedReviewDays","updateIncidentTrackingDaysBackResult","getITReviewTableData","getITReviewTableDataResult","getReviewPageLocations","getLocationsIncidentTrackingReviewPageResult","getEmployeesInvolvedEmployeeDropdownResult","getITReviewPageEmployeeListAndSubList","supervisorId","getIncidentEditReviewDataAllObjects","incidentId","getIncidentEditReviewDataAllObjectsResult","deleteITIncident","saveUpdateITIncident","incidentData","notifyArr","notifyEmployeeString","employeeIdArr","employeeIdString","saveUpdate","saveUpdateITIncidentResult","getReviewedByDropdown","getReviewedByDropdownResult","getInjuryLocationsDropdown","getInjuryLocationsDropdownResult","getInjuryTypesDropdown","getInjuryTypesDropdownResult","getitConsumerFollowUpTypes","getitConsumerFollowUpTypesResult","getitConsumerBehaviorTypes","getitConsumerBehaviorTypesResult","getitReportingCategories","getitReportingCategoriesResult","getInterventionTypesDropdown","getInterventionTypesDropdownResult","getitConsumerInterventions","getitConsumerInterventionsResult","getitConsumerInjuries","getitConsumerInjuriesResult","getitConsumerReviews","getitConsumerReviewsResult","getitConsumerFollowUps","getitConsumerFollowUpsResult","getitConsumerReporting","getitConsumerReportingResult","getitConsumerBehavior","getitConsumerBehaviorsResult","itDeleteConsumerFollowUp","itConsumerFollowUpId","itDeleteConsumerFollowUpResult","saveUpdateITConsumerFollowUp","saveUpdateITConsumerFollowUpResult","saveUpdateITConsumerInjuries","saveUpdateITConsumerInjuriesResult","itDeleteConsumerInjuries","itConsumerInjuryId","itDeleteConsumerInjuriesResult","itDeleteConsumerInterventions","itConsumerInterventionId","itDeleteConsumerInterventionsResult","saveUpdateITConsumerInterventions","saveUpdateITConsumerInterventionsResult","itDeleteConsumerReporting","itConsumerReportingId","itDeleteConsumerReportingResult","saveUpdateITConsumerReporting","saveUpdateITConsumerReportingResult","itDeleteConsumerReviews","itConsumerReviewId","itDeleteConsumerReviewsResult","saveUpdateITConsumerReviews","saveUpdateITConsumerReviewsResult","itDeleteConsumerBehavior","itConsumerBehaviorId","itDeleteConsumerBehaviorsResult","saveUpdateITConsumerBehaviors","saveUpdateITConsumerBehaviorsResult","updateIncidentViewByUser","generateIncidentTrackingReport","generateIncidentTrackingReportResult","checkIfITReportExists","checkIfITReportExistsResult","sendIncidentTrackingReport","incidentTrackingEmailReportData","toAddresses","ccAddresses","bccAddresses","emailSubject","emailBody","sendIncidentTrackingReportResult","buildInfal","holder","headerText","InfalGetJobsAjax","getInfalUsernameDataSetter","empId","infalAjax","getInfalUserNameAjax","setInfalUserNameToScreen","InfalGetJobsResult","InfalGetClockInsAndOutsAjax","InfalGetClockInsAndOutsResult","InfalClockInAjax","resObj","InfalClockOutAjax","notifyOtherTabs","userActivityChannel","postMessage","BroadcastChannel","isOriginalTab","autoLogout","isPopupVisible","idleTime","logoutInterval","timerIncrement","timeLimit","logoutPopup","logoutMessage","unloadApp","newTabsPopup","handleLogoutButtonClick","oneSpanDocumentStatus","oneSpanDocumentData","checkOneSpanData","oneSpanAjax","oneSpanCheckDocumentStatus","signedStatus","oneSpanRetrieveData","packageId","assessmentID","oneSpanGetSignedDocuments","fireDataUpdateEvent","dataUpdateEvent","shouldBeDisabled","signatureTypeToCheck","updatedMemberData","consentAndSignAjax","getConsentAndSignData","signatureType","signature","buildPopupMessage","sendToOneSpanProgress","oneSpanPopup","sentStatus","oneSpanBuildSigners","pendingSavePopup","savePopup","failPopup","showOneSpanPopup","buildSendDocumentToOneSpanBtn","teamMemberData","sendDocumentToOneSpanBtn","versionID","extraSpace","isp","oneSpanBuildSignersResult","oneSpanGetSignedDocumentsResult","oneSpanCheckDocumentStatusResult","OODEmployers","loadOODLanding","isEmployerIdReferenced","serviceDateInput","CLEAREDSERVICEDATE","editEmployersBtn","createFormsBtn","newEntryBtn","newSummaryBtn","OODEntriesTable","OODConsumerBtns","serviceDateStartInput","serviceDateEndInput","employeeDropdown","servicesDropdown","referenceNumbersDropdown","serviceDateStartBtnWrap","serviceDateEndBtnWrap","employeeBtnWrap","serviceBtnWrap","referenceNumberBtnWrap","OODENTRIESFILTER","FORM4MONTHLYSUMMARYSERVICES","consumerServicesDropdown","consumerServicesDoneBtn","selectConsumerServicePopup","selectedConsumerServiceId","selectedConsumerReferenceNumber","selectedConsumerServiceType","selectedConsumerFormNumber","selectedConsumerServiceName","summaryServicesDropdown","summaryServicesDoneBtn","selectSummaryServicePopup","buildOODEntriesTable","getOODEntriesResult","OODEntries","getOODEntriesAsync","referenceNumber","formatServiceDate","userUpdated","formNumber","rowConsumer","OODReportType","getForm4MonthlyPlacementEditData","Id","OODForm4MonthlyPlacement","getForm4MonthlySummary","OODForm4MonthlySummary","getForm6Tier1andJDPLan","Tier1andJDPlanForm","getForm8CommunityBasedAssessment","communityBasedAssessmentForm","getForm8MonthlySummary","communityBasedAssessmentSummaryForm","getForm10TransportationData","OODFormTransportation","getForm16SummerYouthWorkExperience","summerYouthWorkExperienceForm","getForm16MonthlySummary","summerYouthWorkExperienceSummaryForm","buildEntryServicePopUp","btnType","summaryBtn","buildSummaryServicePopUp","buildEditEmployersBtn","buildCreateFormsBtn","oodBtnsWrap","getConsumerServiceCodesResult","consumerServices","getConsumerServiceCodesAsync","buildNoServicesPopup","populateConsumerServiceCodeDropdown","servicePopupCancelBtn","serviceDateInputRequired","consumerServicesDropDownRequired","servicePopupDoneBtn","todayDate","thisServiceDate","noServicesPopup","populateMonthlySummaryServiceCodeDropdown","summaryServicesDropDownRequired","selectServicePopup","thisConsumer","thisselectedConsumerServiceId","thisselectedConsumerReferenceNumber","thisselectedConsumerServiceType","thisselectedConsumerFormNumber","thisselectedConsumerServiceName","generateAndTrackFormProgress","generateForm4","generateForm6","generateForm8","generateForm10","generateForm16","formsPopup","buildIndividualFormBtn","formText","showCreateFormsPopup","form4Btn","form6Btn","form8Btn","form10Btn","form16Btn","filteredDate","serviceDateStartBtn","serviceDateEndBtn","employeeBtn","employeeCloseBtn","serviceBtn","serviceCloseBtn","referenceNumberBtn","referenceNumberCloseBtn","filterPopupDoneBtn","populateEmployeeDropdown","populateServiceCodeDropdown","populateReferenceNumberDropdown","getActiveEmployeesResult","getActiveServiceCodesResult","getActiveServiceCodesAsync","serviceType","getConsumerReferenceNumbersResult","referencenumbers","getConsumerReferenceNumbersAsync","referencenumber","getConsumerEmployersAsync","getEmployerJSONResult","serviceCodeType","getContactTypesAsync","getOutcomesAsync","getContactMethodsAsync","getIndicatorsAsync","getForm4MonthlyPlacementEditDataJSONResult","updateForm4MonthlyPlacementEditData","SAMLevel","contactType","jobSeekerPresent","outcome","TSCNotified","bilingualSupplement","interview","updateForm4MonthlyPlacementEditDataResult","insertForm4MonthlyPlacementEditData","insertForm4MonthlyPlacementEditDataResult","deleteOODFormEntryAsync","emReviewId","getForm4MonthlySummaryJSONResult","updateForm4MonthlySummary","emReviewDate","emReferenceNumber","emNextScheduledReview","emEmploymentGoal","emReferralQuestions","emIndivInputonSearch","emPotentialIssueswithProgress","emPlanGoalsNextMonth","emNumberofConsumerContacts","emNumberEmployerContactsbyConsumer","emNumberEmployerContactsbyStaff","emNumberMonthsJobDevelopment","updateForm4MonthlySummaryResult","insertForm4MonthlySummary","insertForm4MonthlySummaryResult","deleteFormMonthlySummaryAsync","getForm6Tier1andJDPLanResult","updateForm6Tier1andJDPLan","contactMethod","narrative","updateForm6Tier1andJDPLanResult","insertForm6Tier1andJDPLan","insertForm6Tier1andJDPLanResult","getForm8CommunityBasedAssessmentResult","updateForm8CommunityBasedAssessment","behavioralIndicators","jobTaskQualityIndicators","jobTaskQuantityIndicators","interventions","updateForm8CommunityBasedAssessmentResult","insertForm8CommunityBasedAssessment","insertForm8CommunityBasedAssessmentResult","getForm8MonthlySummaryResult","updateForm8MonthlySummary","emSummaryIndivSelfAssessment","emSummaryIndivEmployerAssessment","emSummaryIndivProviderAssessment","emSupportandTransition","emReviewVTS","updateForm8MonthlySummaryResult","insertForm8MonthlySummary","insertForm8MonthlySummaryResult","OODTransportationId","getForm10TransportationDataResult","updateForm10TransportationData","numberInVehicle","startLocation","endLocation","updateForm10TransportationDataResult","insertForm10TransportationData","insertForm10TransportationDataResult","getForm16SummerYouthWorkExperienceResult","updateForm16SummerYouthWorkExperience","updateForm16SummerYouthWorkExperienceResult","insertForm16SummerYouthWorkExperience","insertForm16SummerYouthWorkExperienceResult","getForm16MonthlySummaryResult","updateForm16MonthlySummary","emOfferedHoursNotWorkNumber","updateForm16MonthlySummaryResult","insertForm16MonthlySummary","insertForm16MonthlySummaryResult","deleteOODForm10TransportationEntry","onsubmit","userIdInput","referenceNumberInput","peopleIdInput","serviceCodeIdInput","startDateInput","endDateInput","addEditOutcomeServices","outcomeServicesData","addOutCome","backBtn","outcomeTypeDropdown","effectiveDateStart","effectiveDateEnd","outcomeTypeBtnWrap","effectiveDateBtnWrap","selectedConsume","buildNewOutcomeServices","backbtnWrap","addOutcomesButton","backButton","outcomesAjax","getOutcomeServicsPageData","outcomeTypeName","addOutcomes","backToOutcomeLoad","outcomeTypeBtn","outcomeTypeCloseBtn","effectiveDateBtn","effectiveDateEndInput","btnFilterWrap","populateOutcomeTypeDropdown","getOutcomeTypeDropDownResult","OutcomeType","getOutcomeTypeDropDownAsync","outcomeTypeData","outcomeTypes","Goal_Type_ID","goal_type_description","goalID","goal_id","toggleIcon","outcomeStatement","serviceTyp","serviceStatement","addServicesForm","objective_Id","currentTarget","goalId","buildNewOutcomes","importantOutcomeForm","buildOutComeForm","getGoalEntriesByIdAsync","getGoalEntriesByIdResult","outcomeDropdown","outcomeStatementInput","dateStart","dateEnd","saveUpdateOutcomes","populateOutcomeTypesDropdown","requiredFieldsOfAddOutcome","getLocationDropDownResult","locationDrop","getLocationDropDownAsync","locationData","locationDrops","locationDescription","checkRequiredFieldsOfAddOutcome","startDateVal","endDateVal","outcomeStatementVal","outComeVal","setBtnStatusOfAddOutcome","insertOutcomeInfoAsync","insertOutcomeInfoResult","servicesStatement","ServiceType","ServiceTypeName","frequencyModifier","frequencyPeriod","objectiveId","outcomeGoalId","ObjectiveID","buildNewServicesForm","buildServicesForm","getObjectiveEntriesByIdAsync","getObjectiveEntriesByIdResult","objective_type","objective_method","success_determination","frequency_modifier","frequency_occurance","frequency_peroid","ServiceTypeDropdown","servicesStatementInput","methodInput","successInput","frequencyModifierDropdown","frequencyInput","frequencyPeriodDropdown","durationInput","saveUpdateOutcomesService","addNewServiceCard","addNewServiceCardBody","durationWrap","populateOutcomeDropdown","populatefrequencyModifierDropdown","RequiredFieldsOfAddServiceForm","getServiceFrequencyTypeDropDownResult","ServiceFrequency","getServiceFrequencyTypeDropDownAsync","ServiceFrequencyData","serviceFrequency","serviceFrequencyType_id","serviceFrequencyType_name","getOutcomeServiceDropDownResult","getOutcomeServiceDropDownAsync","goal_serviceStatement","ServiceFrequencyType","serviceFrequencyType","frequencyPeriodDropdownData","getRequiredFieldsOfAddServiceForm","servicesStatementVal","insertOutcomeServiceInfoAsync","insertOutcomeServiceInfoResult","OUTCOMES_SECTION","filterButton","serviceDropdown","applyButton","currDate","currService","currOutcome","currOutcomeId","selectedConsumerObj","outcomesDataObj","outcomesPrompts","outcomesLocations","detailsPopup","primaryLocationDropdown","secondaryLocationDropdown","resultsDropdown","promptsDropdown","attemptsDropdown","cIDropdown","timeInputs","noteInput","edit__lastEditedByDetails","ciData","successObj","successType","successDetails","currResult","currReason","currAttempts","currPrompt","currCI","currNote","currStartTime","currEndTime","defaultObjLocationId","defaultGoalLocationId","personId","activityId","objdate","goalnote","promptType","promptNumber","locationSecondaryId","goalStartTime","goalEndTime","goalCILevel","dateSpanMessage","daysBack","useConsumerLocation","defaultPrimaryLocation","currentSection","todaysDateToDisplay","firstDayOfWeek","lastDayOfWeek","firstDayOfMonth","yearOfCurrentDay","dailyAbsent","initLoad","tmpService","tmpOutcome","tmpOutcomeId","editOutcomeBtn","disableNewOutcomeFields","disableOutcomeFieldsOtherUser","clearBackCardValues","sortOutcomes","occurrence","Objective_Recurrance","nullHourDaySuccesses","weekSuccesses","monthSuccesses","yearSuccesses","sortOutcomeLocations","Secondary","sortSuccessTypes","unOrderedSuccessObj","Objective_Success_Description","getObjectiveActivities","objectiveRecurrance","activities","initSaveData","Objective_id","saveNewOutcome","getInputValues","newOutcomeData","saveGoals","resetOutcomeSaveData","getConsumersWithRemainingGoals","loadCardView","promptTypeInput","promptNumberInput","goalnoteInput","deleteObjectiveActivity","deleteGoal","applyOutComeFilter","showAttempts","Show_Attempts","showPrompts","Show_Prompts","showTime","Show_Time","showCI","Show_Community_Integration","attemptsRequired","Attempts_Required","promptsRequired","Prompt_Required","timeRequired","Times_Required","ciRequired","Community_Integration_Required","noteRequired","Notes_Required","errorFree","validateStartEndTimes","checkErrors","startInput","endInput","checkShowFields","selectedConsumersToEnabledList","outcomeModuleBtn","dashButton","afterSelectionRoster","resetFilter","getOutcomesPrompts","getGoalsCommunityIntegrationLevelDropdown","ciResults","getDaysBackForEditingGoalsAndUseConsumerLocation","outcomes_use_consumer_location","consumer_location","setUpOutcomesTabSpans","dateForCalculations","getOutcomeCompletion","recurrance","occurance","Frequency_Occurance","freqModifier","Frequency_Modifier","successArray","isComplete","filterOutcomes","filterByData","outcomeId","filteredOutcomesDataObj","filterObject","freqKeys","od","completion","tmpDate","getGoals","populateOutcomes","outcomeDd","outcomeTypeText","populateServiceDropdown","getOutcomeTypeForFilter","buildFuckingDateInput","dateinput","currDateCache","currDateCheck","daysBackDateCheck","loadOutcomesCards","buildPrimaryLocationDropdown","locId","Primary","pl","Location_ID","rePopSecondaryLocationDropdown","filteredOutcomesLocations","sl","primaryLocId","buildSecondaryLocationDropdown","buildResultsDropdown","Objective_Success","buildPromptsDropdown","op","Code","Caption","buildAttemptsDropdown","attempt","buildCommunityIntegrationDropdown","ciLevel","captionname","buildTimeInputs","buildNoteInput","buildSaveButton","isEdit","buildDeleteButton","deleteIncident","buildCardDetails","editData","Objective_ID","lastEditedTime","Last_Update","lastEditHH","lastEditMM","lastEditedDate","lastEdited","Locations_Secondary_ID","objective_success_description","Prompt_Type","Prompt_Number","community_integration_level","start_time","end_time","submitted_by_user_id","Objective_Activity_Note","buildCardEnteredByDetails","timeWrap","buildActivityTracker","activityCount","activityLimit","isAbsent","frequencySeparator","pathColor","percentComplete","dashOffset","path2Style","circle","buildSuccessPopup","successPopupText","successText","buildMethodPopup","methodPopupText","methodText","buildObjectiveActivities","objectiveActivities","outcomeRecurrance","activity","getObjectiveActivity","getOutcomesSuccessTypes","successTypes","getOutcomesPrimaryAndSecondaryLocations","buildCardOverview","Objective_Statement","hasPermission","typeDescription","goalStatement","Success_Determination","Objective_Method","lastUpdatedBy","editIconBtn","statement","lastUpdated","activityTracker","objLocationId","successBtn","methodBtn","successMethodWrap","wrapEdit","lastUpdatedDate","txtArea","buildCardContainer","populateNoFreqOutcomes","oc","populateHourlyOutcomes","populateDailyOutcomes","populateWeeklyOutcomes","populateMonthlyOutcomes","populateYearlyOutcomes","outcomesData","sortOutcomesAlpha","noFreqOutcomes","hourlyOutcomes","dailyOutcomes","weeklyOutcomes","monthlyOutcomes","yearlyOutcomes","defaultActiveSection","outcomeTabs","dashHandler","myconsumerId","myval","topFilterDateWrap","date_Input","outcomesService","outcomesType","outcomesConsumer","outcomesDate","editOutcomesServicesButton","documentingForDiv","dayBackDateSpanWrap","daysBackDiv","outcomesTabs","occur","buildAllowedConsumersObj","userIdsWithGoals","userIdsWithRemainingGoals","remainingGoalsIds","every","userReminingGoal","showAlert","showAlertIcon","getUserIdPromise","getUserIdsWithGoalsByDate","getRemainingDailyGoalsPromise","getRemainingDailyGoals","getViewableGoalIdsByPermission","goalDate","getGoalsByDateNewResult","getGoalSpecificLocationInfo","getGoalSpecificLocationInfoJSONResult","getIdsWithGoals","getUserIdsWithGoalsJSONResult","goalsCheckDate","getUserIdsWithGoalsByDateJSONResult","getDaysBackForEditingGoalsJSONResult","getViewableGoalIdsByPermissionJSONResult","ashLikesThisLoop","getRemainingDailyGoalsJSONResult","getGoalsCommunityIntegrationLevelJSONResult","getGoalsCommunityIntegrationRequired","getGoalsCommunityIntegrationRequiredJSONResult","getOutcomeTypeForFilterJSONResult","saveGoalResult","objectiveActivityId","getObjectiveActivityResult","getOutcomesPromptsResult","goalTypeId","getOutcomesSuccessTypesResult","getOutcomesPrimaryAndSecondaryLocationsResult","getSuccessSymbols","getSuccessSymbolLookupResult","getOutcomeServicsPageDataResult","Type","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","planAjax","getConsumerPlans","pd","consumerPlanId","assessmentData","assessment","getAssessmentData","effectiveStart","effectiveEnd","planDates","planYearStartDate","planYearStart","planYearEndDate","planYearEnd","effectiveStartDate","effectiveEndDate","planReviewDate","reviewDate","buildPlanPage","getConsumerPeopleId","getSelectedConsumer","getCurrentPlanId","getCurrentPlanType","getPlanStatus","getPlanActiveStatus","getPlanDropdownData","getHasPreviousPlans","getISPValidation","setSelectedConsumer","setPlanId","newPlanId","setPlanType","newPlanType","setPlanStatus","newPlanStatus","setRevisionNumber","revNum","setPlanActiveStatus","newActiveStatus","clearAllDataKeepConsumer","clearData","assessmentCard","clearPlanId","refreshMoreMenu","newMorePopupMenu","buildMorePopupMenu","menuInnerWrap","buildEditDatesScreen","screen","validDates","updateBtn","dateBoxDiv","buildDatesBox","updatePlanDates","successDiv","refreshGeneralInfo","refreshAssessmentCard","ISP","refreshISP","resetPlanDatesToOriginal","updateBoxDateValues","buildUpdateStatusScreen","newStatus","updateConsumerPlanSetStatus","finalizeBtn","buildDeleteScreen","getEffectiveStartDate","formatedDate","splitFormatedDate","esDate","getConsumerNameFromCard","deletePlan","isNew","newOutcome","planOutcomesAjax","deletePlanOutcome","buildReactivateScreen","updateConsumerPlanReactivate","buildAddWorkflowScreen","templateID","wf","populateAddWorkflowScreen","getProcessId","wfvData","getWorkflowList","list","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","sigAttachmentId","whereFrom","isSuccess","screenInner","checkboxArea","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","firstPart","secondPart","handleReportStream","report","mapResultsObj","rest","showFinalizePopup","currScreen","checkboxesSelected","finalizationResults","includeInAssessment","finalizePopup","screen1","screen2","screen3","heading1","heading2","selectedCheckboxes","selectAllCheck","finalizationActions","emailAddresses","selectedEmails","checkBoxes","toONET","signatureOnly","downloadReportCheck","resultsObj","actions","sendToDODDStatus","sendToOhioNetStatus","downloadReportStatus","emailReportStatus","DODD","sendToDODDStatusIcon","sendToOhioNetStatusIcon","ONET","downloadReportStatusIcon","REPORT","emailReportStatusIcon","EMAIL","sendToDODDCheck","sendToOhioNetCheck","emailReportCheck","emails","getDefaultEmailsForFinalization","checkboxWrap","addEmailBtn","autoIncrementId","deleteEmail","attachWraper","includeInAssessmentCheck","buildGeneralInfoBar","firstName2","lastName2","PlanStartDate","PlanEndDate","EffectiveStartDate","EffectiveEndDate","formatedDate2","splitFormatedDate2","edDate","formatedDate3","splitFormatedDate3","starDate","formatedDate4","splitFormatedDate4","dateSpan","dateSpanEff","typeAndNum","moreBtn","buildPlanHeader","getWorkflowMarkup","workflowMarkup","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","ssa","buildNewPlanBtn","isValidSalesforce","validateConsumerForSalesForceId","buildAssignCaseloadBtn","csAssignCaseload","showAssignCaseLoadPopup","buildDownloadPlanBtn","downloadPlanFromSalesforceProgress","downloadPlanFromSalesforce","downloadedDate","downloadDate","sentToDODD","dateSentDODD","userSentDODD","setReviewPlanDates","aDate","bDate","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","details","carryOverReason","whatNeedsToHappen","howItShouldHappen","whenHowOften","whenHowOftenOther","whatWillHappen","whenToCheckIn","servicesSupports","scopeOfService","fundingSourceOther","howOftenHowMuch","howOftenOther","whatSupportLooksLike","reasonForReferral","summary","aloneTime","importantTo","importantFor","skillsAndAbilities","whatIsRisk","getISPCharacterLimits","getAllISPcharacterLimts","getAssessmentCharacterLimits","removeDupRelationships","relationships","unique","flag","removeDups","flagN","setDropdownData","defaultDropdowns","serviceTypes","showWith","newOrExisting","howOftenHowMuchFrequency","whenHowOftenFrequency","howOFtenExperiences","communicationType","dailyLifeDropdownType","levelsOfSupervision","outcomeStatus","relationshipsWithDups","refreshDropdownData","planSummary","planOutcomes","contactInformation","getRelationshipNameById","contactId","endsWith","supportData","getSelectedVendors","filteredService","providerId","providerName","populateRelationshipDropdown","dropdownEle","includeSupports","teamMemberGroup","nonTeamMemberGroup","paidSupportsGroup","signatureId","ps","populateOutcomesReviewWhoDropdown","locationsGroup","theseVendors","member","theseLocations","effectiveStartDateInput","effectiveEndDateInput","reviewDateInput","dateErrorMessage","planYearInfo","dateChanged","reviewDateChanged","origPlanYearStartDate","origPlanYearEndDate","origEffectiveStartDate","origEffectiveEndDate","origPlanReviewDate","priorPlanYearEndDate","priorPlanYearStartDate","priorEffectiveStartDate","reviewDateOpts","showReviewDateWarningPopup","warningPop","cachedDates","cahce","previousPlans","startDay","startMonth","latestActivePlan","previousPlanStartDate","previousPlanCreatedOnDate","planStartDate","planEndDate","newReviewDate","activeConsumerPlans","createdOn","currentYear","newPlanReviewDate","newPlanYearStartDate","newPlanYearStart","newEffectiveStartDate","newEffectiveEndDate","newEffectiveStart","newEffectiveEnd","toggleDateInputDisable","forMoreMenu","effectiveStartInput","effectiveEndInput","validateAnnualDates","planStartTime","templateStartDate","validateRevisionDates","priorEffectiveStartTime","priorStartTime","planEndTime","effectiveStartTime","effectiveEndTime","startTimeError","endTimeError","handleDateBoxChange","isValidDate","isBeforeEnd","isAfterStart","reviewInput","fieldsValid","startDateOpts","endDateOpts","effectiveStartDateOpts","effectiveEndDateOpts","formatedSD","formatedESD","formatedED","formatedEED","formatedRD","endDateIinput","rosterGroups","rosterConsumers","groupedRosterConsumers","absentConsumers","consumersWithUnreadNotes","locationsWithUnreadNotes","ROSTER_LIST","ROSTER_WRAP","ROSTER_SPINNER","FILTER_BTN","SELECT_ALL_BTN","DESELECT_ALL_BTN","LOCATION_NOTES_BTN","MASS_ABSENT_BTN","FILTER_POPUP","loadingRosterWrap","loadRosterSpinner","MINI_ROSTER_BTN","MINI_ROSTER_POPUP","MINI_ROSTER_DONE","MINI_ROSTER_CANCEL","selectedLocationName","selectedLocationId","selectedGroupCode","hideDateFilter","selectedActive","filteredDateBtnWrap","selectedLocationNameBtnWrap","selectedActiveBtnWrap","totalConsumerCountBtnWrap","rosterListSelectable","selectedConsumerCache","allowedConsumerIds","consumersWithAlerts","totalConsumerCount","rosterGroupCount","islocationDisabled","MASS_SELECT_ALL_BTN","MASS_DESELECT_ALL_BTN","locationHasUnreadNote","selectedConsumersToActiveList","addConsumerToSelectedConsumers","removeConsumerFromSelectedConsumers","getSelectedConsumers","getSelectedConsumersCache","getSelectedConsumersMiniRoster","getAllRosterConsumers","getRosterData","getRosterConsumersData","addConsumerToActiveConsumers","clearHighlightedConsumers","consumers","selectNoneHighlightedConsumers","removeMiniRosterBtn","getSelectedLocationObj","getSelectedDate","getConsumersWithUnreadNotes","setRosterGroups","rosterData","setSelectedGroupData","defaultRosterGroup","defaultRosterGroupCode","defaultRosterGroupID","setSelectedLocationData","selectedLocationObj","setCustomDefaultLocationData","searchRoster","rc","middleName","MN","rosterlists","rl","groupRosterConsumers","populateRoster","updateTotalConsumerCount","filteredBy1","filteredDateBtn","selectedLocationNameBtn","selectedLocationNameCloseBtn","selectedActiveBtn","selectedActiveCloseBtn","totalConsumerCountBtn","groupResults","getConsumerGroupsData","toggleMassAbsentBtn","filterApply","buildDateInput","buildLocationDropdown","buildGroupDropdown","buildActiveDropdown","activeDropdown","DATE_INPUT","LOCATION_DROPDOWN","GROUP_DROPDOWN","ACTIVE_DROPDOWN","setupFilterEvent","populateGroupDropdown","populateActiveDropdown","defaultValName","Residence","hasUnreadLocationNote","loc_id","allOpt","activeDropdownData","oldDate","oldLocationName","oldLocationId","oldGroupCode","oldGroupId","oldGroupName","oldRosterGroups","locationDropdownEvent","toggleLocationNotesBtn","hasUnreadNote","hasunreadnote","filterUpdateDisplay","consumerInfo","toggleHideShowAbsentMenuSection","customGroups","customRosterApplyFilterEvent","useAbsent","buildFilterBtn","buildSelectAllBtn","buildDeSelectAllBtn","buildLocationNotesBtn","locationNotesBtnClassNames","buildMassAbsentSelectAllBtn","buildMassAbsentDeselectAllBtn","buildMassAbsentBtn","buildManageGroupsBtn","MANAGE_GROUPS_BTN","wrap2","wrap3","populateConsumerCardPortraits","consumerCards","consumerData","fName","lName","mName","serviceLocations","LId","primaryLocation","conL","ac","isSelected","hasAlert","cwa","dateOfBirth","dob","isInactive","IDa","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","currentlySelectedConsumer","currentlySelectedConsumerId","groupCount","nextGroup","initMassAbsent","loadManageGroupsPage","locationNotes","loadAllNotesPage","loadingMore","rosterGroupKeys","otherOpts","loadRosterInfo","showActionNavCancel","forMiniRoster","consumerInfoCard","getIndividualAbsentData","checkForIndividualAbsentJSONResult","getAllAttachments","getAllAttachmentsResult","getConsumerDemographics","getConsumerDemographicsJSONResult","getConsumerRelationships","getConsumerRelationshipsJSONResult","getDemographicsNotes","getDemographicsNotesJSONResult","getConsumerScheduleLocation","getConsumerScheduleLocationResult","getConsumerSchedule","scheduleData","populateConsumerScheduleResult","updatePortrait","imageFile","getPSIUserOptionListJSONResult","updateConsumerDemographics","updateDemographicsRecordResult","removeConsumerPhoto","removeConsumerPhotoResult","verifyDefaultEmailClient","rosterWorkflow","strWorkflowIds","convertedstrWorkFlowIds","getWFwithMissingResponsibleParties","constrWorkFlowIds","responsibleData","workflowNames","strWorkflowNames","missingResponsiblePartyAlert","showAddWorkflowPopup","wfPopup","getManualWorkflowList","workflowList","wfvItem","newScreen","buildWorkflowScreen","onResetViewer","getWorkflowScreen","onResetViewerFunc","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","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","promises","driversProm","getDrivers","categoryProm","TRANS_vehicleInspectionAjax","getInspectionCategories","vehicleProm","locationProm","altAddressProm","rosterLocationDropdown","rosterGroupDropdown","dayServicesLocationDropdown","timeClockLocationDropdown","WorkshopLocationDropdown","moneyManagementLocationDropdown","rosterRLLCheckBox","dayServicesRLLCheckBox","timeClockRLLCheckBox","WorkshopRLLCheckBox","moneyManagementRLLCheckBox","itDaysBackInput","caseNotesDaysBackInput","progressNotesDaysBackInput","rosterLocation","rosterGroup","rosterGroupName","dayServicesLocation","timeClockLocation","WorkshopLocation","moneyManagementLocation","rosterRLL","dayServicesRLL","timeClockRLL","workshopRLL","moneyManagementRLL","defaultRosterLocationFixed","dayServiceDropdownData","workshopDropdownData","moneyManagementDropdownData","timeClockDropdownData","rosterLocDropdownData","rosterGroupDropdownData","defaultsAjax","saveDefaultLocationValue","setRememberLastLocation","saveDefaultLocationName","getGroup","setGroup","dayServiceLocationPromise","workshopLocationPromise","workshopAjax","WorkshopLocations","timeClockLocationPromise","rosterLocPromise","rosterGroupPromise","moneyManagementLocationPromise","repopulateRosterGroupDropdown","defaultsPage","currMenu","rosterSection","rosterSectionHeader","dayServiceSection","dayServiceSectionHeader","timeClockSection","timeClockSectionHeader","WorkshopSection","WorkshopSectionHeader","incidentTrackingSection","incidentTrackingSectionHeader","moneyManagementSection","moneyManagementSectionHeader","caseNotesSection","caseNotesSectionHeader","rosterChecboxDiv","dayServicesChecboxDiv","timeClockChecboxDiv","workshopChecboxDiv","moneyManagementChecboxDiv","checkInitialRememberLastLocation","newVal","updateConsumerNotesDaysBack","groupDropdownOptions","updateCaseNotesDaysBack","invalidDefaults","getInvalidDefaults","invalidDefaultNotificationPopup","listHeader","def","listItem","moduleDefault","getInvalidDefaultsResult","updateConsumerNotesChecklistDaysBack","updatedChecklistDays","updatedDaysBack","updateCaseNotesReviewDaysResult","helpPage","linkButton","demographicInfo","updateData","mobileCarriersData","emailError","infoPage","carrierDropdown","getStaffDemographicInformation","GetDemographicInformationResult","updateStaffDemographicInformation","mergeUpdateWithDemo","UpdateDemographicInformationResult","getMobileCarrierDropdown","getMobileCarrierDropdownResult","updateInformationData","newDemoInfo","emailSectionBody","errorEle","updatedKeys","saveEle","addressOne","addressTwo","mobilePhone","getValidateEmailInformation","GetValidateEmailInformationResult","emailValidation","isEmailExist","emailDuplicationPopUp","emailDuplicationPOPUP","splitNumber","formatZipCode","zip","setCaretPosition","elem","caretPos","move","stringAdd","newSubStr","populateCarrierDropdown","carrier","carrierId","carrierName","buildAddressSection","addressSection","stateZipWrap","buildNumbersSection","validPhone","numberSection","saveValue","buildEmailSection","emailSection","updateButton","phoneNumberSection","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","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","WaitingList","unload","WaitingListAssessment","moduleWrapEle","moduleHeaderEle","moduleBodyEle","WaitingListOverview","moduleHeader","moduleBody","wlData","wlLinkID","wlCircID","wlNeedID","wlDocuments","wlParticipants","maxQueueSize","isFormComplete","isAssessmentComplete","contributingCircumstancesWrap","needsWrap","tocLinks","doucmentsList","updateQueue","wlForms","participantsTable","sendEmailButton","sendEmailPopup","sendEmailForm","documentsButton","documentsForm","documentsPopup","waitingListInfo","dbtable","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","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","convertCamelCaseToTitle","properties","showHideRiskMitigation","isNeedsActionRequired","showRM","showHidePagesRelatedToICF","icfAnyNo","showHideICFDischarge","isRisksActionRequired","showICF","showHideImmediateNeeds","isRMChecked","isAnyCheckboxCheckedRiskMitigation","isRMActionRequiredIn3oDays","isNeedsActionRequiredIn30Days","isPGActionRequiredIn30Days","showImmediateNeeds","showHideCurrentNeeds","showCurrentNeeds","isConditionInputsAllYes","isAnyCheckboxCheckedBehaviors","isAnyCheckboxCheckedBehaviorsDocs","isAnyCheckboxCheckedPhysical","isAnyCheckboxCheckedMedical","needsOtherCheck","hasCheckBehaviorOne","hasCheckBehaviorTwo","needsIsActionEnabled","intermittentSupportsDetermination","allHaveCheck","currentNeedsDetermination","icfDischargeDetermination","childProtectionAgencyDetermination","adultDayEmploymentDetermination","dischargePlanDetermination","updateTo","condition","setConclusion","conditionPageAllYes","waiverEnrollRequired","enableIsIndividualSkillsDeclined","risksIs","isNotAppChecked","hasCheck","hasCheckDocs","risksIsRiskToSelfInputId","risksHas","physicalNeeds","isPhysicalCareNeededInputId","medicalNeeds","isNeedsActionRequiredYes","rMIs","onChangeCallbacksFormWatch","formsToDelete","checkboxGroupId","closest","waitingListId","generateWaitingListAssessmentReportResult","intervalSeconds","intervalMilliseconds","reportExists","resp2","truncateFilename","participantsForm","participantName","participantRelationship","participantId","onRowClick","onRowDelete","primaryButtonWrap","isContributingCircumstancesSubSection","isNeedsSubSection","tocSection","tocSectionLink","statusIcon","sectionWrap","sectionHeader","hideAllButtons","initFormInfo","columnSortable","allowDelete","RosterCard","AsyncQueue","responses","docResp","getWLSupportingDocumentListResult","WaitingListData","insertWaitingListAssessment","getReviewDataByConsumer","getLandingPageForConsumerResult","interviewDate","conclusionDate","wlReviewTable","conclusionResults","alreadyHasAssessmentForToday","dateA","dateB","populateReviewTable","newAssessmentBtn","idkyet","waitingListAssessmentId","getWaitingListAssessmentResult","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","Notifications","DEFAULT_OPTIONS","mergeObjects","notifications","itemEle","Tutorial","mergOptionsWithDefaults","userOptions","TutorialState","initialState","totalSteps","observers","subscribe","observerFunction","unsubscribe","setState","newState","back","tutorialState","tutorial","VallidationController","items","validationWrap","errorsWrap","warningsWrap","addWarning","itemInstance","ValidationMessage","addError","toggleErrorStatus","isError","displayStatus","confirmButton","cancelButton","callbackFunction","DAYS","DatePicker","parentEle","labelEle","for","showPicker","weekStart","weekEnd","eachDayOfWeek","isCurrentWeek","navigationEle","weekWrapEle","prevWeekNavBtn","nextWeekNavBtn","customDatePicker","isDateCurrentlySelected","classArray","dateWrapEle","toDateString","dayOfWeekEle","dateEle","currentSelectedDate","newDateValue","messagePending","messageSuccess","messageError","iconWrap","clickOutToClose","Spinner","showPending","showSuccess","asyncSetTimeout","fragment","DocumentFragment","failedImageCache","Set","rosterWrapEle","rosterSearchInput","rosterCaseLoadInput","rosterInActiveInput","messageEleIcon","_buildMobileButton","mobileRosterBtn","_updateMessage","tagName","_filterConsumersOnSearch","nameCombinations","cardEle","_scrollToTop","newIcon","cv","gridAnimationWrapper","inActive","rosterCard","pinCardIcon","forceAll","isLocked","lockdown","cid","Attachments","File","separateHTMLAttribrutes","inputGroup","filenamelength","targetID","forbiddenTypes","isFileTypeValid","validateFileType","newInputId","newInputInstance","insertAdjacentElement","_viewAttachment","newAttachments","newAttachment","classes","textNode","isDisbled","isHidden","updateText","inputWrap","inputNote","isRequired","setCustomValidity","updateLableValue","stringContainsHTML","CheckboxGroup","groupLabelEle","field","inputInstance","Confirmation","Alert","isModal","dialogDimensions","onClose","showModal","RadioGroup","tmpFix","Select","Textarea","submitButton","newButton","FormData","fromEntries","toggleFormDisabled","svg","arrowRight","arrowLeft","chevron","densitySmall","densityMedium","exitFullScreen","openFullScreen","micOn","micOff","pin","play","getIconButton","showcount","countMarkup","inputCount","dateformat","imgSource","defaultImgSource","image","onerror","loading","Radio","DEFAULT_OPTIONS_2","checkedInputId","sortByProperty","optionEle","onOff","removeElement","getNodeIndex","checkDateFormat","rowSortable","selectedRows","tableNav","tBodies","_multiSelect","newCheckbox","checkboxInput","th","tHead","cells","_columnSort","colIndex","lastDirection","lastHeading","clonedTableBody","_rowSort","newSort","rowEle","initRowSort","SpeechToText","textareaInstance","isSpeechInitialized","isListening","initSpeechRecognizer","mutationObserver","speechRecognizer","currValue","startSpeechRecognizer","stopSpeechRecognizer","closeSpeechRecognizer","FullscreenTextarea","fullScreenDialog","fullScreenCloseBtn","dupShowModalBtn","fullScreenShowBtn","inputClone","speechToTextBtn","autoClose","waitDuration","closeToastButton","tempDiv","htmlFragment","byte","isReferenceFree","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","props","matching","leftover","sectionName","regExp","scrollTo","behavior","regex","timeoutId","apiEndpoint","onSendComplete","queue","queueLength","failedUpdates","isSending","sendUpdates","forceUpdate","updatesToSend","sendPromises","setSendCompleteCallback","camelCaseStr","spacedStr","connectionWatch","statusPopup","statusMessage","wait","executedFunction","args","context","later","URL_BASE","fetch","ok","json","getDeviceType","isTablet","storedValue","updatedValue","baseObject","mergeObject","sortProp","aValue","bValue","splitObjectByPropNames","dirtyObj","maxLength","fileExtension","maxMainLength","firstPartLength","secondPartLength","watchVariable","initialValue","forbiddenTypesPattern","cnFilters","billersDropdown","consumerDropdown","billingCodeDropdown","reviewStatusDropdown","correctedDropdown","enteredDateStartInput","enteredDateEndInput","additionalFilterContainer","locationFilterCbox","serviceFiltercCbox","needFiltercCbox","contactFiltercCbox","confidentialFiltercCbox","showOverlapscCbox","billedFiltercCbox","attachmentsFiltercCbox","noteTextFiltercCbox","selectAllFilterCbox","needDropdown","contactDropdown","confidentialDropdown","outcomeServiceMonitoringDropdown","billedDropdown","attachmentsDropdown","noteTextDropdown","noteTextInput","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","billers","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","attachmentsBtn","attachmentsCloseBtn","billedBtn","billedCloseBtn","showOverlapsBtn","noteTextBtn","noteTextCloseBtn","overviewFilterValues","consumerPromise","billerPromise","race","caseLoadRestriction","groups","tableConsumers","caseloadOnly","datesEnteredStart","datesEnteredEnd","reviewConsumerId","selectedRosterId","isSSANote","noteIds","overLapIds","btnWrapFilter","getServiceDateDefaultValues","buildMutationObserver","resetFilterValues","showCNReportsPopup","detailBtn","passFilterValuesForDetailReport","checkIfCNReportIsReadyInterval","passFilterValuesForTimeEntryReport","checkCNReportExists","callCNReport","initFilterDisplay","biller","buildTopBtns","newNoteBtn","cnReportBtn","cnADVReportBtn","handleTableEvents","isssanote","getTableData","filteredData","fd","cnId","permissions_Table","groupCounts","hasOverlap","originalupdateTrim","originalupdate","servicedate","originalUpdate","lastupdatedby","thisendIcon","GKendIcon","ADVendIcon","isParentRow","testNoteId","thiscolumnheadings","GKcolumnheadings","ADVcolumnheadings","tableConsumerSearch","newTable","tDi","cIdx","mainEventListeners","disableMiniRosterBtn","promArray","caseloadRestrictionPromise","getBillersListPromise","dashHandeler","viewEnteredWidgetSetting","setInitFilterValues","onchange","reviewAttachments","cnAttachment","reviewAttachmentArray","allowedFileTypes","deleteExistingAttachment","remAttachment","addAttachmentsToCN","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","mileageInput","serviceLocationDropdown","myPhrasesBtn","deleteNoteBtn","cancelNoteBtn","timerStartBtn","timerStopBtn","saveAndNewNoteBtn","confidentialCheckbox","serviceMonitoringCheckbox","docTimeMinutesField","travelTimeMinutesField","groupNoteDisplay","dropdownDataKeys","pageLoaded","groupData","groupConsumers","billerDropdownData","gkLocationRequired","gkNeedRequired","gkContactRequired","gkServiceRequired","gkAllowGroupNotes","gkMileageRequired","serviceLocationId","tempAttachmentArray","attachmentCount","reviewData","reviewResults","reviewRejectReason","correctedCheckbox","isGroupNote","convertToGroupNote","viewOnly","advLocationRequired","advServiceRequired","advNeedRequired","advContactRequired","continueFunc","cancelFunc","hide_X","validateTimesWhenDateChange","isTimeValid","checkIfSameDates","dateEntered","getMilliseconds","setNoteValues","noteid","reviewresults","rejectionreason","lastupdate","originaluserid","batched","originalUserName","originaluserfullname","checkIfCredit","isCaseNoteReadOnly","showTimeWarningPopup","timeWarningPop","noteSaveUpdate","vendorInput","locationInput","serviceInput","needInput","contactInput","singleNoteToGroupNote","updateOverlapData","updateNote","checkServiceFunding","populateBillerDropdown","populateBillerRelatedDropdowns","checkGKRequiredFields","populateLocationDrodown","dropDownDisplay","populateServicesDrodown","populateContactsDrodown","populateNeedsDrodown","dropDown","populateServiceLocations","serviceLocData","newSelectedConsumers","sConsumer","checkConsumerForMileage","aConsumer","filteredConsumers","nsc","isTrue","selectedConsumerName","buildDocTime","docTimeHeader","docTimeHeaderText","docTimeBody","docTime","minutesDisplay","docTimeMinVal","parseSessionTimes","isAMorPM","checkTimesAreWithinWorkHours","buildCardDetailsSection","saveBtnAction","preSave","listeningNodes","saveNoteBtn","hoursAreWithinWorkHours","cnPhrasesPopup","btnWrap2","grid_col_1","grid_col_2","lastUpdatedDisplay","lastUpdatedMessage","correctedCheckboxDiv","reviewText","reviewMessage","setupCardEvents","checkADVRequiredFields","cardDetails","docTimeRequiredPopup","docTimePopup","popupText","calledAction","serviceCodeDropdownOptions","docTimeDisplay","timerButtons","removeAllConsumersFromNote","tmpMileage","validObj","sameDate","tempServiceDate","mileageAllowed","cards","setGroupData","splitName","setInputstoReadOnly","checkConfidential","dashConsumer","advPromises","gkPromises","dropdownDataPromise","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","statuses","cachedResults","cachedResults_locations","selectedLocationDescription","entriesObj","consumerNames","widgetBody","applyFiltersBtn","widgetFilter","populateConsumerDropdown","populateLocationsDropDown","locationNames","eventSetup","oldSelectedConsumerId","oldSelectedConsumerName","oldSelectedLocationId","oldSelectedLocationDescription","selectedLocationOption","groupCountInfo","populateCountInfo","displayFilteredBy","pendingSection","approvalSection","rejectedSection","entryGroups","dateRanges","buildWidgetTabs","widgetTabs","tabOptions","Anywhere_Status","People_ID","adminSingleEntryWidgetAjax","getSingleEntryAdminLocations","getSingleEntryAdminApprovalNumbers","getSingleEntryAdminApprovalNumbersJSONResult","getSingleEntryAdminLocationsResult","absentWidgetDate","absentWidgetLocationId","absentWidgetLocationName","absentWidgetGroupId","absentWidgetGroupName","absentWidgetGroupCode","totalConsumers","oldAbsentDate","oldGoupCode","absentDate","absentWidgetAjax","getLocationsForDashboardAbsent","populateAbsentWidgetLocations","getConsumerGroupsForDashboardAbsent","populateAbsentWidgetGroups","getAbsentWidgetFilterDataAjax","absentLocationId","absentGroupCode","custGroupId","populateAbsentWidgetResults","allFiterData","absentObj","totalAbsentCount","totalAbsent","absentLocationsArray","getAbsentWidgetFilterDataResult","cnProductivityChart","groupNotes","timeObj","daysBackWidgetSetting","getDates","addChartData","CN_ProductivityWidgetAjax","getCaseNoteProductivity","getDashboardCaseNoteProductivityResult","preBuildDataObj","originalEnteredDate","Original_Update","Case_Note_Group_ID","calculateDocTime","noteTime","diffMinutes","Travel_Time","Total_Doc_Time","noteID","initChart","caseNoteData","orgDate","calculateBackgroundColor","productivityPercentage","productivityThreshold","colors","reconfigureDataForChart","workHoursPerDay","minForProductivity","noteTimeDataset","travelTimeDataset","docTimeDataset","totalTime","colorArr","stepSixe","setDefaultIfConfigNull","setWidgetSettingConfig","rejectedNotes","strgroupids","objgroups","groupids","getRejectedData","CN_RejectedWidgetAjax","getCaseNotesRejected","Case_Note_ID","cnGroupId","first_Name","Service_Code","End_Time","lastUpdate","getRejectedcnGroups","getGroupsIds","getGroupCaseNotes","objgroupids","grpconsumer","grpconsumerObj","populateRejectedWidget","rejectedTable","tmpstartTime","frmtStartTime","tmpendTime","frmtEndTime","updateDate","cleanSettings","getDashboardCaseNotesRejectedResult","groupNoteIds","getDashboardGroupCaseNoteConsumerNamesResult","caseLoad","consumerCountlbl","currentRowConsumerId","viewNotesDaysBack","lastNoteEnteredDaysBack","viewEnteredByOtherUsers","lastNoteEnteredDaysBackDate","showSendReportPopup","emailData","to","cc","bcc","subject","sendReportPopup","emailTo","emailCC","emailBCC","showReportPopup","showReportDownloadPopup","createReportPopup","quickPrintPopup","createReportBtn","sendReportBtn","displayConsumerCount","populateCaseLoadWidget","caseLoadTable","caseLoadTableBody","resNumber","residentNumber","lastNoteDate","dateDisp","addressBlock","addressone","addresstwo","mailcity","mailstate","mailzipcode","contactInfoBlock","tempPrimaryPhone","primaryphone","tempSecondaryPhone","secondaryphone","pPhoneNumber","sPhoneNumber","pPhoneType","sPhoneType","pPhone","sPhone","reviewNotesBtn","getCaseLoadData","last_note_datetime","getDaysBackDate","CN_CaseLoadWidgetAjax","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","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","linksWidget","messagesWidget","messages","loadCustomLinks","linksList","linkaddress","linkname","linktarget","linksAndMessagesWidgetAjax","loadCaraSolva","loadSystemMessages","messageList","separateLinksAndMessages","getSystemMessagesAndCustomLinks","linkError","getSystemMessagesAndCustomLinksJSONResult","CaraSolvaURLResult","defaultShow","tempShow","incidentTrackingWidgetObj","showDropdown","populateIncidentTrackingWidget","showValue","showDropdownData","itTable","incidents","dupName","viewedBy","o1","o2","removeArray","viewedOn","orginUser","originallyEnteredBy","userHasViewed","showBold","incidentCategory","reviewIncident","incidentTrackingWidgetAjax","getITDashboardWidgetDataAjax","getITDashboardWidgetDataResult","clockedInStaff","asOfTime","populateLocations","populateCurrentClockInTime","populateConsumersNames","clockedinconsumername","consumersSorted","populateStaffNames","totalEmployees","staffclockedinname","employeeCount","clockedInWidgetAjax","getClockedInConsumerNamesDayServicesAjax","getClockedInStaffNamesDayServicesAjax","staffNames","getLocationsForDashboardDayServices","getDashboardDayServicesLocationsJSONResult","getClockedInConsumerNamesDayServicesJSONResult","getClockedInStaffNamesDayServicesJSONResult","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","record","planEffectiveStart","planRevisionNumber","responsiblePartyId","workflowStepId","consumerPlanInfo","annualPlans","revisionPlans","filterConsumerBy","getFilteredConsumer","getPlanWorkflowWidgetDataResult","getPlanWorkflowWidgetData","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","OutTime","getCurrentRecord","Emp_Job_Description","InTime","Job_Description","selectedJob","selectedJobDescription","calcPosition","restOfStuff","inDate","startAMPM","empIdString","jobIdString","latInString","longInString","StartTime","StartAMPM","InfalClockInResult","updateTimeData","outDate","EndTime","EndTimeAMPM","recIdString","latOutString","longOutString","Memo","memoPopup","timeRecord","clearBtn","memoInput","Emp_Job_Id","buildComponents","infalTimeClockAjax","createJobButtonsHtml","infalClockInDataSetUp","EmpId","jobId","LatIn","LongIn","clockInData","checkClockInResult","infalClockOutDataSetUp","recId","LatOut","LongOut","memo","clockOutData","checkClockOutResult","checkAnticipo","locationNoteslocationDropdown","locationNoteList","locationNoteLocationObj","locationNoteLocationLookupObject","getLocationProgressNotesAndPermission","populateLocationProgressNoteWidgetResult","datecreated","Location","getLocationsWithUnreadNotesAndPermission","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","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","individual","bname","newId","activeStatus","sigTable","missingSignatureAjax","getMissingPlanSignatures","getMissingPlanSignaturesResult","getGroupsDropdownData","getEntryInfo","dateRange","populateSingleEntryCountInfo","groupSingleEntryCountInfo","singleEntryCountWidgetAjax","getSingleEntryCountInfo","getSingleEntryCountInfoJSONResult","widgetResults","clockInOutBtn","rowdataPopup","currentLocationId","currentStartTime","currentEndTime","giveInvalidTimeError","timeError","timeClockError","widgetError","punchClock","clockAction","timeClockAjax","clockInStaff","clockOutStaff","updateStaffTimeClock","updateKeys","newLocationData","newStartTimeData","newEndTimeData","newLocationId","newTime","updateStaffClockTime","getStaffActivity","processStaffActivity","populateLocationsDropdown","displayRowData","readOnly","locationsDropdown","applyChanges","showTimeClockDeleteWarning","timeClockDeleteWarningPop","orgTime","isStartTime","checkedAgainstTime","lastClockOutTime","Staff_ID","location_code","resultsRow","jqXHR","timeClockDate","getStaffActivityJSONResult","incident","incidentTypeId","reportedDate","reportedTime","locationDetailId","prevention","contributingFactor","includeInCount","involvementId","consumerIncidentLocationIdString","consumerInvolvedIdString","employeeInvolvementIdString","othersInvolvedNameString","othersInvolvedCompanyString","othersInvolvedAddress1String","othersInvolvedAddress2String","othersInvolvedCityString","othersInvolvedStateString","othersInvolvedZipCodeString","othersInvolvedPhoneString","othersInvolvedInvolvementTypeIdString","othersInvolvedInvolvementDescriptionString","updateIncidentId","isNewIncident","consumersInvolvedIds","newConsumersInvolvedIds","clearUpdateData","datakeys","getIncidentId","setNewConsumerInvolvedIds","involvementIds","ids","involvedId","setUpdateIncidentId","getConsumersInvolvedUpdateData","consumerInvolvementIds","itConsumerSection","getConsumersInvolvedIds","consumerInvolvement","consumerIdKeys","consumerInvolvementId","getEmployeesInvolvedUpdateData","employeeRows","employeeIds","toNotify","employeeNameDropdown","involvementDropdown","notifyCheckbox","notifyInput","employeeNameDropdownSelectedValue","employeeid","involvement","getPeopleInvolvedUpdateData","peopleRows","companies","addresses1","addresses2","cities","states","zips","phones","involevmentTypes","involevmentDescriptions","companyInput","company","getIncidentDetailsUpdateData","iDate","iTime","rDate","rTime","factors","updateIncidentSaveEditData","saveIncident","saveConsumerData","deleteConsumerData","deleteIncidentWarningPopup","cancelIncident","followUpData","consumerFollowUp","injuryData","consumerInjuries","interventionsData","consumerIntervention","consumerReview","consumerReporting","behaviorData","consumerBehavior","fupPromises","saveConsumerFollowUps","injPromises","saveConsumerInjuries","intPromises","saveConsumerInterventions","revPromises","saveConsumerReviews","repPromises","saveConsumerReports","behavPromises","saveConsumerBehaviors","consumerDataSavePromises","consumerInvolvedId","consumerFollowUpIdArray","followUpTypeIdArray","personResponsibleArray","dueDateArray","completedDateArray","notesArray","idKeys","idKey","fuData","updated","followUpTypeId","personResponsible","dateCompleted","savePromise","itConsumerInjuryIdArray","checkedByNurseArray","checkedDateArray","detailsArray","itInjuryLocationIdArray","itInjuryTypeIdArray","treatmentArray","iData","checkedByNurse","checkedDate","injuryDetails","injuryLocationId","injuryTypeId","injuryTreatment","itConsumerInterventionIdArray","aversiveArray","itConsumerInterventionTypeIdArray","startTimeArray","stopTimeArray","timeLengthArray","aversive","interventionType","interventionNotes","timeLength","itConsumerReviewIdArray","reviewedByArray","reviewedDateArray","noteArray","rData","reviewedBy","reviewedDate","consumerReportIdArray","reportDateArray","reportTimeArray","reportingCategoryIdArray","reportToArray","reportByArray","reportMethodArray","itConsumerReportId","dateReported","timeReported","reportingCategoryID","reportTo","reportBy","reportMethod","consumerBehaviorIdArray","behaviorTypeIdArray","endTimeArray","occurrencesArray","behaviorTypeId","occurrences","followUpDeletes","getDeleteData","injuryDeletes","interventionDeletes","reviewDeletes","reportDeletes","behaviorDeletes","fuKeys","fuKey","injKeys","injKey","intKeys","intKey","revKeys","revKey","repKeys","repKey","bhKeys","addConsumers","newIncidentCard","incidentCard","incidentPermissions","incidentDetails","nonEditableText","updatedText","popupElement","resetValue","permissions","originallyEnteredByUserId","incidentTrackingCard","itReviewData","consumersSection","detailsSection","employeeSection","peopleSection","nextBtn","prevBtn","cardActionBtns","itConsumerInvolved","itEmployeesInvolved","itOthersInvolved","currentSectionNumber","toggleSaveBtnStatus","disableBtn","toggleActionBtns","toggleNavBtns","showSection","currentlyVisibleSection","targetSectionSelector","nextSectionName","buildNav","buildActionBtns","buildSections","pageNumber","itDetailsSection","itEmployeeSection","itPeopleSection","cardNav","cardSections","consumerSectionHasError","checkforRequiredConsumer","selectedErroredConsumers","hasNoErrors","checkEntireIncidentCardforErrors","detailSectionHasErrors","peopleSectionHasErrors","consumerSectionHasErrors","toggleSave","incidentTrackingEmailData","alphaDropdown","betaDropdown","supervisorBtnWrap","fromDateBtnWrap","toDateBtnWrap","alphaName","beta","betaName","categoryName","changedSelectedAlphaBetas","alphaBetaData","selectedAlphaId","selectedBetaData","viewCaseLoad","populateSelectedFilterValues","selectedFilters","showBtnWrap","supervisorBtn","showCloseBtn","fromDateBtn","toDateBtn","populateOverviewTable","saveFilterData","alphaId","betaId","populateFilterDropdowns","populateCategoriesDropdown","populateUserAndEmployeeDropdowns","getFromDateValue","getToDateValue","filterDropdownEventSetup","setupFiltering","filterAndReportsBtnsWrap","ITLocation","ITConsumer","ITFromDate","ITToDate","tmpAlphaId","tmpAlphaName","tmpBetaId","tmpBetaName","tmpLocationId","tmpLocationName","tmpConsumerId","tmpConsumerName","tmpCategoryId","tmpCategoryName","tmpToDate","tmpFromDate","tmpShow","betas","populateBetas","toDateVal","populateAlphas","alphas","defaultOption","filteredBetas","allEmployees","getITReviewPageEmployeeListAndSubListResult","employeeobjectArray","employeeObject","alphaNode","betasNode","betaNode","alphaAndBeta","defaultAlpha","populateConsumersDropdown","showIncidentEmailPopup","incidentEmailPopup","toAddress","inputField","ccAddress","bccAddress","checkIfITReportIsReadyInterval","mainWrap","checkITReportExists","callITReport","supervisorName","consumersInvolved","incidentEmailBtn","dateOne","dateTwo","newDateOne","newDateTwo","timeOne","timeTwo","updateNoteBtn","formReadOnly","currentEntryUserId","OODTransportationData","currentConsumer","currentRecordUserId","selectedServiceDate","clickSource","numberInVehicleInput","startLocationInput","endLocationInput","insertFormData","updateFormData","myconsumer","inputContainer0","updatecontainer","updatemessage","btnRow","numInVehicleInput","startLocInput","endLocInput","checkServiceDateInput","checkStartInputTime","checkEndInputTime","myservicedate","isDateBefore","currentserviceDate","checkTimeForAfterNow","isEndAfterStartTime","isEndTimeValid","isStartTimeValid","enteredTime","tempNow","nowHour","nowMinuet","saveType","deleteOODForm10TransportationEntryResult","interventionsInput","groupSizeInput","inputContainer1","inputContainer2","populateStaticDropDowns","populatePositionDropdown","populateIndicatorsDropdown","getOODPositionsResult","defaultGroupSize","getIndicatorsResult","indicators","indicator","yesNoDropdownData","numgroupSizeInput","interventionInpt","deleteOODFormEntryResult","monthYearDropdown","referenceNumberDropdown","nextScheduledReviewInput","selfAssessmentInput","providerAssessmentInput","reviewVTSDropdown","wasOfferedHoursNotWorkedDropdown","offeredHoursNotWorkedInput","emReviewDateDBValue","offeredHoursNotWorked","saveAndNewBtn","reviewStartDate","reviewEndDate","FORMNUMBER","OODMonthlySummariesTable","emReviewData","selectedServiceId","todaysdate","thisMonthFirstDay","getShortDate","nextScheduledReviewInputDIV","selfAssessmentLabel","providerAssessmentLabel","reviewVTSDropdownLabel","wasOfferedHoursNotWorkedDropdownLabel","LineBr2","LineBr3","thisDate","thisShortDate","setReviewStartandEndDates","dateparts","thisMonth","daysinMonth","thisYear","displaynoReferenceNumberPopup","noReferenceNumberPopup","mydate","arrayDates","firstDay","partialdate","fulldate","selfAssessmentInpt","providerAssessmentInpt","numofferedHoursNotWorkedInput","visibility","checknextScheduledReviewDateInput","thisNextReviewDate","updatedFullDate","buildOODMonthlySummariesTable","getReviewDate","DBValue","deleteFormMonthlySummaryResult","SAMLevelDropdown","contactMethodDropdown","jobSeekerPresentDropdown","TSCNotifiedDropdown","applicationSubmittedDropdown","interviewDropdown","bilingualSupplementDropdown","narrativeOutcomeInput","populateConsumerEmployersDropdown","populateContactTypeDropdown","currentConsumerId","employers","employr","filtereddata","getContactTypesResult","contactTypes","contactCaption","getOutcomesResult","outcomeCode","outcomeCaption","SAMLevelDropdownData","employmentGoalInput","referralQuestionsInput","individualsInputInput","issuesConcernswithProgressInput","planGoalsNextMonthInput","numberConsumerContactsInput","numberEmployerContactsbyConsumerInput","numberEmployerContactsbyStaffInput","numberMonthsinJobDevelopmentInput","employmentGoalInpt","referralQuestionsInpt","individualsInputInpt","issuesConcernswithProgressInpt","planGoalsNextMonthInpt","numberConsumerContactsInpt","numberEmployerContactsbyConsumerInpt","numberEmployerContactsbyStaffInpt","numberMonthsinJobDevelopmentInpt","narrativeInput","populateContactMethodDropdown","getContactMethodsResult","contactMethods","behavioralIndicatorsDropdown","jobTaskQualityIndicatorsDropdown","jobTaskQuantityIndicatorsDropdown","employerAssessmentInput","supportAndTransitionInput","employerAssessmentLabel","supportAndTransitionLabel","employerAssessmentInpt","supportAndTransitionInpt","sectionData","subsectionData","questionSetData","questionData","conditionalQuestionData","applicableSections","getApplicableSections","showApplicableWarningMessage","toggleIsSectionApplicable","isApplicable","applicable","toggleApplicability","getConditionalQuestions","conditionalQuestionId","getQuestionDataById","sortAssessmentDetails","answerData","subsectionId","questionSetId","otherData","sectionOrder","isAssessment","subsectionOrder","subsectionName","questionSetOrder","setType","questionSetType","allowRowInsert","questionSetAllowMultirowInserts","defaultAnswer","questionDefaultAnswer","answerRow","questionOrder","answerId","answerText","answerStyle","questionAnswerStyle","answerOptions","questionAnswerOptions","prompt","questionPrompt","requiredAnswer","questionRequiresAnswer","questionTag","skipped","conditionalAnswerText","questionConditionalAnswerText","questionConditionalQuestionId","getConsumerAssessment","getConsumerAssessmentResult","getConsumerRelationshipsData","getConsumerRelationshipsResult","getConsumerNameInfoData","getConsumerNameInfo","getConsumerNameInfoResult","getServiceAndSupportsData","getPlanAssessmentReport","getPlanAssessmentReportResult","DODDFlag","toDODD","getPlanAssessmentReportWithAttachments","successMessage","insertPlanReportToBeTranferredToONET","insertPlanReportToBeTranferredToONETResult","insertAssessmentGridRowAnswers","assessmentQuestionSetId","newRowData","insertAssessmentGridRowAnswersResult","deleteGridRows","rowsToDelete","deleteAssessmentGridRowAnswers","deleteAssessmentGridRowAnswersResult","getSentToONETDate","getSentToONETDateResult","transeferPlanReportToONETResult","sendSelectedAttachmentsToDODDResult","getDefaultEmailsForFinalizationResult","finalizationActionsResult","assessmentIDInput","versionIDInput","extraSpaceInput","toONETInput","ispInput","oneSpanInput","signatureOnlyInput","includeInput","planAttachmentIdsInput","wfAttachmentIdsInput","sigAttachmentIdsInput","updateConsumerAssessmentAnswers","updateConsumerAssessmentAnswer","answerObject","answers","updateAssessmentAnswersResult","transferPlanReportToONET","updateAssessmentAnswerRowOrder","validationCheck","planRestrictiveMeasures","planConsentAndSign","getSectionMarkup","planIntroduction","servicesSupportsAjax","getServicesAndSupports","anywAssessmentId","ISPValidation","showDeleteWarning","deleteWarning","closeWarningBtn","summaryAlertDiv","returnSummaryRisksValidation","outcomesAlertDiv","missingExperiences","missingReviews","contactsAlertDiv","contactValidationCheck","getContactValidation","importantPeople","importantPlaces","bestWayToConnect","isPlanComplete","isPlanActive","hasUpdatePermission","workingSectionCase","workingNotWorking","sectionsApplicable","servicesAndSupports","servicesAndSupportsChecked","noSupport","paidSupport","naturalSupport","technology","communitResource","professionalReferral","potentialOutcome","hasASectionApplicable","workingSectionComplete","servicesAndSupportsError","IspValidationCheck","planProgressSummary","selectedProviders","paidSupportsProviders","invalidProviders","contactsValidation","servicesAndSupportsQuestionIds","noSupportQuestionIds","paidSupportQuestionIds","professionalReferralQuestionIds","potentialOutcomeQuestionIds","additionalSupportQuestionIds","naturalSupportQuestionIds","technologyQuestionIds","communityQuestionIds","attachedDiv","tooltipText","getAssessmentValidation","servicesAndSupportsData","planValidationAjax","getAssessmentValidationData","workingSectionCheck","additionalSupportCounts","countOccurrences","additionalSupport","paidSupportCounts","professionalReferralCounts","potentialOutcomeCounts","assessmentOutcomes","allAssessmentAreasComplete","updatedAssessmenteValidation","workingAlertDivCase1","workingAlertDivCase2","tocAlertDiv","tocMobileAlertDiv","tocAssessmentCheck","servicesAndSupportsAllVisibleSectionsCheck","updateTocSectionHeaders","groupedByRow","hasValue605Array","hasValue606Array","hasValue605","hasValue606","hasValue607","questionNumber","returnWorkingSectionCaseValue","updateAnswerWorkingSection","check","tocSectionHeader","paidSupportCount","additionalSupportCount","potentialOutcomeCount","communityResource","servicesAndSupportsBtnCheck","idsToCheck","paidSupportBtn","additionalSupportBtn","profRefBtn","outcomesBtn","paidSupportChecked","additionalSupportChecked","professionalReferralChecked","potentialOutcomeChecked","checkboxChecked","errorText","allSections","findQuestionIdCategory","counts","assessmentAreaId","updateSectionApplicability","sectionID","applied","matchingIndex","updateAssessmentValidationSection","updateAssessmentValidationProperty","questionIdCategory","getPlanSpecificOutcomes","planOutcomeExperiences","responsibility","planExperienceResponsibilities","responsibleProvider","paidSupportsIds","paidSupports","isSalesforceLocation","uniqueOutcomeIds","planOutcome","planReviews","outcomeExperienceOutcomeIds","outcomeReviewOutcomeIds","missingOutcomeExperiences","missingOutcomeReviews","progressSummary","checkAllOutcomesComplete","ispValidationContactCheck","summaryRisksValidationCheck","updatedIspOutcomesSetAlerts","ISPAlertDiv","outcomesNav","updateOutcomeDetails","emptyString","updateOutcome","reviewsValidationCheck","alertDiv","experiencesValidationCheck","checkResponsibleProvider","outcomeID","presetArray","planOutcomeExperience","experienceResponsibility","invalidProvidersCheck","contactsValidationCheck","contactData","getContactValidationData","importantPeopleData","importantPeopleType","typeOther","importantPeopleTypeOther","importantPlacesData","importantPlacesType","importantPlacesTypeOther","checkImportantPeople","checkImportantPlaces","checkBestWayToConnect","checkContactsValidation","place","bestWayToConnectAlertDiv","checkExperienceProviders","secondValues","checkExperiencesAfterAddingNewPaidSupport","divs","matches","summaryValidationData","getSummaryRiskValidationData","groupedByQuestionSetId","QuestionSetId","hasNullOrEmptyAnswer","Answer","hasNonEmptyAnswer","QuestionText","hasNullOrEmpty","setSummaryRiskValidation","alertCheckSummaryRisksValidation","isEverythingComplete","getAssessmentValidationDataResult","getContactValidationDataResult","getSummaryRiskValidationDataResult","selectedWorkflowForms","workflowListData","formListData","workflowFormList","formHeader","wfName","formItem","WFTemplateId","workflowID","WFTemplateID","workflowDiv","absentReasons","notificationTypes","MASS_ABSENT_POPUP","CONSUMERS_SELECTED_INPUT","DATE_OF_ABSENSE_INPUT","DATE_REPORTED_INPUT","LOCATION_INPUT","NOTIFICATION_DROPDOWN","REPORTED_BY_INPUT","REASON_DROPDOWN","TIME_REPORTED_INPUT","SAVE_ABSENT_BTN","DELETE_ABSENT_BTN","CANCEL_ABSENT_BTN","absentLocation","notificationId","reportedBy","resonId","absentRecordId","doPreSaveCheck","showPreSaveWarningPopup","preSaveWarningPopup","saveSingleAbsent","singleSaveData","absentReasonId","absentNotificationId","preSaveData","updateAbsents","checkAbsentPreSave","absentAjax","oneLocationAbsentSave","absentPreSaveCheck","saveMassAbsent","getConsumersByLocationAbsentResults","getConsumersByLocationAbsent","getConsumersByLocationAbsentResult","absentConsumerIds","createAbsentConsumersObj","getAbsentFormDropdownData","selectAbsentNotificationTypes","selectAbsentReasons","setSaveData","absentData","tempLocation","tempLocationName","tempLocationId","tempDateOfAbsense","dateOfAbsence","tempReportedBy","reportedby","tempDatereported","tempTimereported","timereported","tempReasonId","reasonId","tempNotifiId","recordid","populateAbsentFormDropdowns","defaultValues","notifValue","notif","reasonValue","notificationTypeData","notifid","notifdesc","reasonsData","reasonid","reasondesc","setupFormEvents","selectedOpt","deleteAbsent","buildAbsentForm","dateOfAbsent","absentForm","ABSENT_BTN_WRAP","showAbsentPopup","setConsumerIdString","toggleActionNavBtns","buildAbsentActionNav","selectData","absentPreSaveResult","allLocationSaveAbsent","allLocationSaveAbsentResult","absentId","oneLocationAbsentTableSaveResult","selectAbsentNotificationTypesResult","selectAbsentReasonsResult","selectAbsent","selectAbsentResult","selectedConsumerIDs","addConsumerToCustomGroup","newGroupID","GROUP_ADMIN_POPUP","GROUP_LIST","customGroupData","newGroupName","updateCustomGroupData","showGroupDeleteWarningPopup","groupDeleteWarningPop","removeCustomGroup","populateGroupList","groupCheckboxEvent","inputEl","checkboxEl","addConsumerToGroup","removeConsumerFromGroup","groupDeleteEvent","addToGroupEvent","cg","groupMembers","isConsumerGroupMember","gm","itemAction","manageConsumerAction","buildGroupList","showAddNewGroupPopup","newGroupPop","addNewGroupInput","addNewGroupBtn","addCustomGroup","CustomGroupID","manageGroupPopup","buildManageGroupsPage","groupsPage","topSection","backToRoster","locationLabel","groupsList","manageGroupsPage","addCustomGroupJSONResult","consumerIDs","menuNewList","currentScreen","previousScreen","nextScreen","getImageOrientation","reader","FileReader","view","DataView","getUint16","getUint32","little","tags","readAsArrayBuffer","formatPortraitPath","splitPath","newPath","sp","updatePhotoToDefault","targetConsumerId","consumerCardFromRosterList","rosterPic","infoCardPic","updateConsumerPhoto","pic2","pic1","imageObj","Image","srcData","orientation","imageObjSrcVal","orderScheduleData","Sun","Mon","Tues","Wed","Thur","Fri","Sat","menulist","absentMenuItem","downloadAttachment","attachmentid","menuItem","locationObj","setConsumerToCard","rosterList","closeCard","backwordBtn","forwardBtn","visibleSection","visibleSubSection","menuList","showCardSection","showCardSubSection","targetSubSection","currentlyVisibleSubSection","handleBackButtonClick","isMenuListHidden","sectionBackBtn","clearAllGlobalVariablesOnBack","isSubSection0Visible","subSec0","cardClone","populateAbsentSection","sectionInner","populatePhotoSection","removePhotoBtn","photoInput","populateGroupSection","groupList","populateNotesSection","noteDate","populateProgressNotesSection","viewAllNotesSection","buildViewAllNotesSection","addNoteSection","buildAddNoteSection","viewSingleNoteSection","buildViewSingleNoteSection","addMessageSection","buildAddMessageSection","populateAttachmentsSection","attachmentsList","showRelationshipDetails","companyName","detailWrap","donebtn","populateRelationshipsSection","relationshipTable","relationshipHeader","subDataRowPrimaryPhone","secondaryPhone","subDataRowSecondaryPhone","cellularPhone","subDataRowCellularPhone","subDataRowEmail","populateWorkflowSection","populateScheduleTable","showWeekOne","isWeekOneEmpty","showWeekTwo","isWeekTwoEmpty","tableWrap","scheduleTable1","scheduleTable2","table1Data","weekOne","table2Data","weekTwo","scheduleResults","scheduleResultsObj","scheduleResultsObjKeys","newkey","populateScheduleSection","al","populateIntellivueSection","applicationList","lineBR","appId","intellivue","getViewURL","cardInner","buildMenu","cardMenuList","menuItems","itemTitle","cardMenu","infoTask","setupCard","arraynumber","statusDate","getConsumerNotes","locationResults","demographics","getApplicationListHostedWithUser","navBtnWrap","cardHeading","demoData","unEditabled","gkOnly","sectionLoad","dataLoad","consumerIDLoad","clearCurrentEdit","currentEdit","saveIcons","formatName","middle","formatMaritalStatus","formatDOB","formatSSN","SSN","formatOrganizationAddress","add1","add2","setInputType","pattern","getAgeFromDOB","birthDate","age","monthDiff","formatLabelText","splitText","formatViewInnerHTML","checkAlphabets","char","formatDataForDisplay","formattedPrimaryPhone","formattedSecondaryPhone","cellPhone","cellphone","DOB","socialSecurityNumber","medicaidNumber","MedicaidNumber","medicareNumber","MedicareNumber","ResidentNumber","consumerNumber","localID","county","County","organization","orgName","organizationAddress","orgAdd1","orgAdd2","orgCity","orgState","orgZipCode","formattedOrganizationPhone","orgPrimaryPhone","organizationPhone","middlename","generation","maritalStatus","gender","primaryLanguage","language","educationLevel","additional","demographic","buildInputGroupWrap","buildInputGroup","viewElement","editElement","phoneNumberEndIndex","phoneNumberStartIndex","saveIcon","validateEmail","validSocial","social","populateDemographicsSection","viewEle","buildPathToEmployment","groupWrap","buildAddressInfo","propValue","buildContactInfo","buildAdditionalInfo","viewElements","showDetailsoBtn","buildOrganizationInfo","buildDemographicInfo","isGK","addressInfo","additionalInfo","organizationInfo","redirectPopup","getLoginCredentials","getIntellivueAppIdResult","getApplicationListHostedWithUserResult","applicationobjectArray","Applications","refId","getIntellivueViewURLResult","showIntellivueRedirectWarning","allNotesPage","allNotesList","singleNotePage","singleNotesList","allNotesData","singleNoteData","formatTime","datecreatedArray","sortDataByDate","dateArrayA","dateArrayB","Date_Entered","buildNoteImage","buildNoteAuthorName","buildNoteDateTime","buildNoteTitle","buildNoteText","buildNoteDetails","dateTime","buildNoteMessageg","notePreview","buildNote","buildTitleInput","buildTextInput","buildSendBtn","getSingleNoteData","selectLocationNote","handleReplyToNoteBtnClick","notePopup","sendNoteBtn","updateLocationNote","loadSingleNotePage","populateSingleNotePage","noteAuthor","notetitle","emp_id","backToNotesMain","buildSingleNotePage","getLocationNotesData","getLocationProgressNotes","handleNewNoteBtnClick","noteTitleInput","insertLocationNote","populateAllNotesPage","noteRead","is_read","MainAuthor","updateLocationNoteDateRead","buildAllNotesPage","deleteLocationNote","doesLocationHaveUnreadNotes","datum","checkIfLocationHasUnreadNotesResult","getLocationsWithUnreadNotesAndPermissionResult","selectNotesByLocationResult","selectNotesByLocationAndPermissionResult","selectLocationNoteResult","VIEW_ALL_NOTES_SECTION","VIEW_SINGLE_NOTE_SECTION","ADD_NOTE_SECTION","ADD_MESSAGE_SECTION","ADD_NOTE_BTN","ADD_MESSAGE_BTN","selectedNoteId","newNoteTitle","newNoteText","newMessageText","consumerNotes","addNewNote","hideNote","insertConsumerNote","populateViewNotesSection","addNewMessage","updateConsumerNote","populateViewSingleNoteSection","cacheNotes","selectNotesByConsumerAndLocation","cacheSingleNoteData","selectConsumerNote","markNoteAsRead","noteElement","updateConsumerNoteDateRead","noteMenuItem","shortenNotePreview","noteString","shortenedNote","c_id","titleInput","messageInput","singleNoteList","dateTimeArray","timeArray","hidenote","hasBeenRead","hideNoteCheckbox","hidenotedetail","clickableNoteAreas","tmpHideNote","updateHideNote","sendButton","addNoteBtn","notesList","deleteConsumerNote","getConsumersWithUnreadNotesByEmployeeAndLocationPermissionResult","selectNotesByConsumerAndLocationResult","selectConsumerNoteResult","getlocationsWithConsumersWithUnreadNotesResult","daysOffTable","callOffTable","openShiftTable","overlapWrap","overlapsExist","overlapApprovalData","overlapIds","daysOffOverlapConfirmed","areConsecutiveDates","date1","date2","buildApproveRequestPage","populateApprovalPage","selectedShiftCounter","requestData","daysOff","callOff","openShift","requestType","daysOffTableOpts","cycleApprovalStatus","openShiftTableOpts","callOffTableOpts","renderDaysOffSectionBody","dataForCallOffandOpenShifts","noRequestsMessage","approvalStatus","shifts","idA","idB","groupedShifts","lastSubArray","areDatesConsecutive","consecutiveReason","fromTime","toTime","shiftIds","dayOffId","reasonName","messageElement","submitApproveDenyRequest","displayApprovedOverlapPopup","overlapAlert","displayOverlapPopup","overlapApprovedShifts","openShiftRequests","openShiftRequestList","decision","selectedShifts","approvedShift","openShiftRequest","selectedStartTime","selectedEndTime","existingStartTime","existingEndTime","overlapIntro","overlapOKBtn","openShiftTableBody","callOffTableBody","callOffRequests","daysOffTableBody","daysOffRequests","getOverlapDataforSelectedShiftResult","overlapWithExistingShiftData","requestedShiftId","overlapShiftData","callOffShiftId","approveDenyResponse","daysOffIdString","requestDataText","parentDiv","nestedDivs","nestedDivsObject","nestedDiv1","nestedDiv2","nestedDiv3","paragraphs","_scheduleArray","_schedules","_appointments","_locationsArr","_reasonsArr","_startDay","_currentWeekHours","_scheduleView","_currentView","detailsLocationId","shiftDateForCall","appendModuleContainer","moduleName","actionCenter","moduleContainer","removeInnerHtml","elementId","addMilliseconds","timestamp","addMinutes","MILLISECONDS_IN_MINUTE","getServiceDate","dateScheduled","serviceDateObj","serviceYear","serviceMonth","serviceMonthName","serviceDay","setStartDay","dayObj","weekDays","Day_of_Week","eachDateOfInterval","dirtyInterval","isWithinInterval","getTotalHours","startTimeDate","endTimeDate","startTimeMilliseconds","endTimeMilliseconds","milliseconds","midnightNextDay","timeArr","dirtyHours","dirtyMinutes","renderLocationDropdown","calContainer","scheduleViewWrap","populateSchedules","renderDetailsPopup","shiftDetails","openShiftDetails","pendingOpenShiftDetails","pendingCallOffDetails","appointmentDetails","appointmentId","medTrackingId","renderShiftDetails","renderOpenShiftDetails","renderPendingOpenShiftDetails","renderPendingCallOffDetails","renderAppointmentDetails","timeScheduled","provider","shiftNotes","shiftType","workCode","workCodeDescription","callOffBtn","renderRequestOffPopup","requestShiftBtn","notifiedEmployeeId","getOverlapStatusforSelectedShiftResult","overlapWithExistingShift","renderSendShiftRequestPopup","existingShiftLocationName","overlapCancelBtn","sendRequestBtn","populateEmployeesDropdown","cancelRequestBtn","requestedById","populateReasonsDropdown","employeeName","employeeData","eventId","reasonDropdown","notesInput","toggleView","scheduleView","renderScheduleViewBtn","scheduleViewBtn","populateShiftTotalHours","getDateRangeFromCalTitle","calTitle","dateString1","dateString2","calcWeekTotalHours","dateRangeObj","myShifts","withinInterval","doesIdMatch","personID","hoursScheduled","wrapMarkup","populateAppointments","allDay","takenToApptBy","timeRegEx","groupPos","callOffStatus","requestShiftStatus","drawCalendar","ical","Web2Cal","loadEvents","onNewEvent","startOfWeek","removeStuffWeDontWant","renderCalFooter","setupCalendarEvents","allday","defaultPlugins","rzCloseAddEvent","closeAddEvent","setupDateHeadingEvent","dateHeadings","monthBtn","weekBtn","dayBtn","eventDetails","appointmenttDetails","appointment","navWrap","leftNav","inliner1","inliner2","calNav","agendaBtn","workshiftBtn","resourceBtn","groupsBtn","calicon","collapseWrap","submitRequest","dateInterval","areDatesValid","fromTimeVal","toTimeVal","areTimesValid","employeeNotifiedId","requestResult","requestDaysOffSchedulingResult","buildRequestTimeOff","fromTimeInput","toTimeInput","submitRequestBtn","fromDateField","toDateField","reasonDropdownField","employeeDropdownField","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","startVal","endVal","dif","loadData","cleanData","getTripInformationResult","getTripConsumersResult","routeInfo","getRouteInformation","getRouteConsumers","deleteRouteAccept","deleteProms","deleteVehicleInspection","TRANS_manageRoutesAjax","deleteTrip","odoStart","odoEnd","tripData","otherRiderId","updateManageTripDetails","IsSameInsertedConsumerFind","deleteConsumerFromTrip","routeId","addHocRoute","vehicleInspectionId","routesTable","selectedRoutes","filteredRoutes","filterOpts","tripsStatus","multiEditEnabled","multiSelRoutes","updateDriverBtn","updateVehicleBtn","filteredDateStart","filteredDateStop","selectedDriver","selectedRouteStatus","totalRouteCount","selectedVehicle","filteredDateStartBtnWrap","selectedDriverBtnWrap","selectedLocationBtnWrap","selectedRouteStatusBtnWrap","selectedVehicleBtnWrap","totalRouteCountBtnWrap","serviceDateStop","routeStatus","filteredByDisplay","batchNumber","tripId","odoStop","tripInspection","driverDisp","readDate","readStartTime","readEndTime","readOdoStart","readOdoStop","rowValues","batchWarnEl","TRANS_manageRoutesFilter","filteredDateStartBtn","selectedDriverBtn","selectedDriverCloseBtn","selectedLocationBtn","selectedLocationCloseBtn","selectedRouteStatusBtn","selectedRouteStatusCloseBtn","totalRouteCountBtn","selectedVehicleBtn","selectedVehicleCloseBtn","locationPermissions","tmpRoutes","getTrips","getTripsResult","routeMap","route","determineTripStatus","filterTripStatus","tripsWithFilteredStatus","tempFilteredRoutes","TRANS_updatePopup","updateType","massUpdateCallback","MouseEvent","tempStatusMap","tripType","totalConsumersOnRecord","consumerNoStatus","massUpdateDriverVehicle","routeStatusDropdown","routeStatusDropdownData","IsFilterShow","updateDropdown","currentDisplay","routes","createPopupElements","createCurrentDisplay","updateDescription","routeDisp","vehicleDisp","eventListener","routeIdConcat","newUpdateVal","routeIdString","updateVal","routeSection","warningDisp","trips","buildRouteBtn","routeBtn","inspIcon","inspColor","TRANS_selectedRoutePopup","tripsResp","TRANS_myRotueAjax","tempTrips","trip","tripInspectionEnteredBy","inspectionTime","inspectionNote","futureDate","warnDisp","vehicleInspBtn","batchedRoute","inspectionId","enteredById","inspectionDate","loadVehicleInspectionLanding","newInspectionBtn","reviewInspectionsBtn","TRANS_inspectionReview","TRANS_reviewInspectionFilter","enteredByDropdown","enteredByDropdownData","updateDates","inspectionTable","defaultFromDate","vehicleNumberBtnWrap","tmpInsp","getCompletedInspections","getCompletedInspectionsResult","inspMap","insp","inspections","readTime","vehicleNumberBtn","vehicleNumberCloseBtn","selectedRoute","selectedRouteDate","inspectionQuestionBody","questionResponses","enteredByOtherUser","inspectionEnterPath","routeInspection","currentlySelectedVehicle","allQuestionsAnswered","inspectionTIme","inspectionInfoCard","inspectionInfoBody","saveInspection","col1","col2","routeNameDisp","otherUserDisp","dtWrap","inspectionQuestionCard","inspectionQuestionHeader","buildInspectionQuestions","checkForAllRequiredFields","completedStatus","getInspectionDetailsForEdit","questionTitle","passCheck","failCheck","naCheck","passRadio","failRadio","checkAllQuestionsAnswered","allowNARadio","completedDetails","getVehicleInspectionDetails","getVehicleInspectionDetailsResult","completedDetailsMap","cat","inspectionCategory","categoryStatus","inspectionStatus","vddElement","mainData","updateVehicleInspection","insertVehicleInspection","insertVehicleInspectionResult","detailData","inspectionCatString","inspectionStatusString","insertUpdateVehicleInspectionDetails","acceptDelete","clearVar","widgetSettingsPage","sectionreorder","updatedListOrder","widgetsContainer","saveID","group1","group2","percentSymb","daysBackInput","productivityThresholdPercentage","newDaysBack","newProductivity","newWorkHours","configString","viewNotesByOtherUsersCheckBox","lastNoteDaysBackInput","reviewNotesDaysBackInput","newViewNotesDaysBack","newLastNoteEnteredDaysBack","newViewEnteredByOthers","dueDateDropdown","setWidgetSettings","buildWidgetBodyInnerHTML","settingHTML","buildTeamMemberTable","sectionBody","teamMemberTable","allElmnts","setWidgetSettingOrder","sortedProducts","IsBuild","tableOBJ","control","reportCurrentlyProcessing","reportPopup","showTimeEntryReport","reportsAjax","getEmpSingleEntryDetailReportAjax","showOverlapReport","getOverlapSingleEntryDetailReportAjax","overlapBtn","BasicSingleEntryReportResult","SingleEntryOverLapReportResult","payPeriodData","rejectionReasonText","supervisors","payPeriodText","statusBtnWrap","workCodeBtnWrap","tmpSupervisorId","tmpSupervisorName","tmpEmployeeId","tmpEmployeeName","tmpStatus","tmpStatusText","selectAllBtn","mapBtn","payPeriodsDropdown","approveNavBtn","rejectNavBtn","submitNavBtn","workCodeData","workCodeDropdown","workCodeId","workCodeName","tmpWorkCodeId","tmpWorkCodeName","statusLookup","workCodeLookup","enableSelectAll","sortedSelectedRows","rejectOrApprove","showMap","IsFilterDisable","sortSelectedRowsForUpdate","sr","updateSelectAllStatus","updatePromiseArray","selectedRowKeys","statusUpdateData","rejectionReason","updatePromise","getReviewTableData","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","emp","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","lastRow","lastRowHour","seData","seID","rejected","dateVal","timeVal","submittedUser","submit_date","approved_time","approvedUser","rejectedUser","rejected_time","buildTopNav","buildReviewPage","addMap","fitleredBy","startPeriod","endPeriod","dashStatus","markerLabelDate","markerLabelStartTime","markerLabelEndTime","markerLabelText","recordCnt","payperiod","emptySignatureDataURL","clearSavedSignaturesAndNotes","removeConsumerFromEVVCache","savedSignaturesAndNotes","currerntConsumer","_consumerID","_signatureDataUrl","_noteDataString","signatureImage","evvEntry","singleEntrySaveSignatureAndNote","validateEVV","signRequired","consumersArray","isValidEVV","hasSignature","hasNote","consumerEVV","EVV","_actionBtn","_evvContainer","_fromSave","fromSave","_signaturePad","signatureDataUrl","noteDataString","_consumerSECard","_consumerCard","_signatureImageMarkup","_signatureMarkup","_noteMarkup","_evvActionMarkup","_tempSigData","_renderEVVMarkup","_renderEVVActionMarkup","_initSignaturePad","_popupEvents","_signatureEvents","SignaturePad","_dataURLToBlob","dataURL","rawLength","uInt8Array","_saveSignatureData","isEmpty","dataUrl","_saveNoteData","_saveEVVInstance","_renderSignatureMarkup","_renderSignatureImageMarkup","_renderNoteMarkup","savebtn","evvDiv","_evvSave","_saveSignature","_saveNote","_evvCancel","fromData","saveButton","_undoSignature","toData","_clearSignature","clearButton","undoButton","editInit","populatePopup","showSignature","showNote","getConsumersSignaturesAndNotesResult","evvOptions","evv","getSpecificConsumerSignatureAndNote","signOrNote","signatureAndNoteData","crossMidnightTimeData","saveUserId","rejectedTime","payPeriodDropdown","locationTypeDropdown","totalHoursInput","rejectionReasonInput","transportationBtn","transportationPopup","licenseplateInput","odometerStartInput","odometerEndInput","odometerTotalInput","destinationInput","saveTransBtn","deleteTransBtn","cancelTransBtn","saveOrUpdate","nowMinutes","evvReasonCodeObj","evvReasonCode","locationTypeCode","wcServiceType","reasonRequired","eligibleConsumersObj","endTimeClicks","evvAttest","evvCommunity","defaultTimesChanged","timeOverlap","isBillable","startLatitude","startLongitude","endLatitude","endLongitude","transportationSaved","isTransportationValid","transportationType","tmpTransportationType","tmpTransportationReimbursable","tmpOdometerStart","tmpOdometerEnd","tmpTransportationUnits","tmpDestination","tmpReason","tmpLicenseplate","isEVVSingleEntry","reasonCodeValue","eVVChangeDate","isEndTimeChangePermission","moveConsumersToTimeCard","disableInput","enableInput","saveorupdate","consumer_Ids","deviceOS","updaterId","inComments","workCodeID","attest","attestCheckbox","community","communityCheckbox","evvLocationType","updateEVVReason","setStartTimeLocation","setEndTimeLocation","setTotalHours","hoursInput","totalHours1","totalHours2","day1StartTime","day1EndTime","day2StartTime","day2EndTime","updateDateValMinMax","resetDate","setEditDataValues","Work_Code_ID","Check_Hours","Comments","billable","keytimes","clearCard","reasonCodeDropdown","clearConsumerSection","checkPermissions","getAllowedConsumersBasedOffResidence","residence","getAllowedConsumersBasedOffServiceLocations","getSingleEntryUsersByLocationJSONResult","showConsumerExtras","consumercard","extras","extrasBtn","removeConsumerFromTimeCard","evvCheckConsumerEligibility","consumerWarningPopup","consumerWrap","evvCheckRemainingConsumers","saveTransportation","deleteTransportation","clearTransportationValues","calculateMileage","checkTransportationRequiredFields","checkOdometer","odoTotal","odoStartVal","odoEndVal","odoTotalVal","isStartValid","isEndValid","checkStartVal","checkEndVal","setToalMiles","totalMiles","startValue","endValue","totalValue","checkTotalMiles","totalMilesVal","checkReason","reasonVal","checkDestination","destinationVal","checkLicensePlate","licenseplateVal","setupTransportationEvents","oldTransportationType","oldlicenseplate","oldTransportationReimbursable","oldOdometerStart","oldOdometerEnd","oldTransportationUnits","oldDestination","oldReason","populateTransportationDropdown","buildTransportationPopup","buildTransportationBtn","checkDates","payPeriodStart","payPeriodEnd","newEntryDate","isDateAfter","isDateAfterToday","checkWorkcodes","workCodeSelect","currentValue","checkLocation","locationSelect","checkTimeAndHours","checkStartTimeInputsForAfterNow","convertedToday","splitServiceDate","entryDateObj","checkConsumers","consumerError","checkNote","checkEvv","reasonSelect","saveAndSumbitBtn","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","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","buildReportButton","fromEdit","EditResponsibleRelationshipsComponent","editResponsibleRelationshipsFinished","wfStepPopup","editResponsibleRelationshipsCancelled","enableButton","enable","containsErrors","getResponsibleParties","getWFResponsibleParties","dropDownList","responsiblePartyType","original","modified","originalvalues","modifiedvalue","clickedddl","ddl","ddlobjects","raiseError","errorMsg","clearError","isMaxLengthExceeded","maxChars","inputValue","EditWorkflowStepComponent","populateResponsiblePartyClassificationDropdown","editWorkflowStepFinished","editWorkflowStepCancelled","doneDate","descriptionCharLimit","descriptionTextInput","validateDescription","combinedText","allowStepEdit","dueDateInput","changed","wfeventid","isChanged","eventTypeId","doneDateInput","responsiblePartyClassificationDropdown","typeID","poplateResponsibleDropDownbyTypeID","responsibleDropdown","commentsTextInput","responsibleParty","getResponsiblePartyIdforThisEditStep","responsiblePartyClassification","getResponsiblePartyClassification","responsiblePartyClassificationData","getPeopleNamesResult","getPeopleNamesAsync","FormsWorkflowStepComponent","formsWorkflowStepFinished","activeConsumerId","formsWorkflowStepCancelled","templateddl","formddl","fullNameArray","userFormDropdown","getTemplates","usrForm","WorkflowComponent","responsiblePeople","processName","currentStatusId","setStatusAsync","statusId","getFirstAndLastName","workflowContainer","workflowSummaryContainer","workflowNameContainer","workflowDescriptionPopop","workFlowDescription","responsiblePartyContainer","ddlcache","workflowResponsibilityType","updateRelationshipResponsiblePartyID","workflowSteps","responsiblestep","statusContainer","setStatus","processEvent","processStepEventsAsync","wfActionsCompleted","processWorkflowStepEventResult","displaySteps","wfActionCompleted","StepId","ActionId","ActionDate","workflowProcessContainer","workflowDeleteContainer","appendWorkflowDeleteContainer","workflowName","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","mainCIData","bestWayToConnectData","uniqueFundingSources","allFundingSources","fundingSourceList","importantGroupsData","gkDemographicsData","gkRelationships","prefNameInput","addressInput","cityStateZipInput","countyInput","sexInput","maritalStatusInput","charLimits","newDropdownData","populateBestWayToConnectDropdown","buildContactInputs","inputSection","dateFundingSoureContainer","ispDatesSection","ispDatesHeader","effStartDate","effEndDate","ispFundingSuourcesSection","ispFundingSuourcesHeader","fsContainer","bestWayToConnectDropdown","otherTextInput","summaryAjax","updateBestWayToConnect","bestWayId","updateMoreDetail","bestWayToConnectBtnAlertDiv","bestWaytoConnectAlertDiv","cleanName","combinedName","cleanAddress","addNewLine","combinedAddress","cleanCityStateZip","cityStateZip","updateInputsWithDeomgraphicsData","nickName","sex","ph","formatPhone","disp","validatePhone","genTelRegEx","phNum","phoneDigits","rawNumber","pos3","pos4","updateFundingSources","contactInformationAjax","getPlanContactFundingSources","fsSort","getFundingSourceById","onlyUnique","contactSection","refreshWrap","refreshBtn","importExistingContactInfo","toTimeString","lastrefresh","importantPeopleSection","isp_ci_importantPeople","buildSection","importantGroupsSection","isp_ci_importantGroups","importantPlacesSection","isp_ci_importantPlaces","planStatusChange","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","popFromRelationships","mainPopup","importPopup","relationshipSection","relationshipDisp","applyGKRelationship","relationship","popFromSignatures","signaturesSection","signatureNames","getNames","sigDiv","joinedAddress","phoneDisp","tablePopup","popupData","typeDD","relationshipVal","addressVal","phoneVal","phoneVal2","extVal","extVal2","emailVal","typeOtherVal","thisPhone","thisPhone2","phone2","importantPersonId","typeValueUpdate","typeValValidated","importantId","typeDropdownValues","importFromRelationshipsBtn","importFromSignaturesBtn","phoneWrap","phoneWrap2","phnDisp","slicedValue","buildTableMarkup","peopleTable","newPos","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","assessmentContainer","assessmentNav","tocMarkup","tableOfContentsBtn","unansweredQuestionToggleBtn","assessmentGeneralInfo","newAssessmentMarkup","handleNavbarEvents","innerTextValue","toggleUnansweredQuestionFilter","buildTopNavBar","navBar","addSections","sectionIdKeys","addSection","addSubSections","subsectionIdKeys","addSubSection","addQuestions","questionSetIdKeys","qsKey","addQuestionSet","buildAssessment","assessmentNavMarkupWrap","generalInfo","customSectionIds","subSections","questionSectionSets","questionSubSectionSets","sectionQuestionCount","subSectionsWithAttachments","additionalSummaryData","assessmentDropdownData","colNameDropdownMap","AssessmentArea","ProviderName","ServiceName","NewOrExisting","deleteRowsActive","selectedRow","checkArrayConsistency","firstElement","updateRowOrderAfterDelete","grid","gridBody","answerIds","addAnswer","getSectionQuestionCount","relationshipDropdownData","toggleIntentionallyBlankCheckbox","setID","toggleConditionalQuestion","conditionalQuestions","questionSet","setId","answered","sectionKeys","sectionKey","questionSetKeys","tableQuestionSets","questionSetKey","questionKeys","questionKey","rowOrder","leaveblank","questionDiv","rowElement","atLeastOneColumnAnswered","tableQuestionSetsKeys","setKey","tableHasAtLeastOneRowAnsered","tableElement","rowOrderKeys","rowOrderKey","tables","handleAssessmentChangeEvents","isForRow","isforrow","answerid","questionid","setid","sectionid","textAreaInput","questionSetGridRows","questionSetActionButtons","rowCells","cellInput","questionRowId","sectionDiv","questionSetDiv","isCustomSection","radioLabelText","hideCheckbox","setGrid","buildSectionMarkup","sectionHeading","sectionHeadingInner","applicableCheckbox","sectionTitle","sectionPrompt","buildSectionFooter","showAddNewOutcomePopup","showAddPaidSupportPopup","fromAssessment","showAddAdditionalSupportPopup","showAddProfessionalReferralPopup","buildSubSectionMarkup","subSection","subSectionHeading","deleteSelectedRows","successfulDelete","buildGridHeaderRow","gridHeaderRow","buildGridHeaderCell","gridHeaderCell","buildGridRow","rok","gridRow","buildGridRowCell","colName","gridCell","questionInput","hasStaticText","textAreaCharLimit","colKey","dataKey","dID","dText","buildQuestionGridMarkup","addRowBtn","deleteRowsBtn","cancelDeleteRowsBtn","areAllGridAnswersEmpty","questionIds","COL_NAME_MAP","tableRowData","rowIndex","rowKey","rowQuestions","cellData","cellId","columnName","inputData","gridCells","cellIds","isLeftBlankCheckboxChecked","questionOrderKeys","qok","questionIndex","gridActionRow","currentRowOrder","gridRows","isSeleted","prevSelectedRow","nrd","hideOnAssessment","isAnswered","firstCol","colInput","qId","isGridEmptyNow","intentionallyBlankCheckbox","questionInputMarkup","parentQuestion","parentAnswerText","buildTextareaInput","buildCheckboxInput","buildRadioInput","btnOpts","radioInput","buildQuestionMarkup","subSectionId","addAttachmentButton","buildQuestionSetMarkup","setData","questionSetWrap","qoKey","questionWrap","questionGrid","placeOnPathDropdown","updatePlaceOnPath","placeId","placeOnPath","belongsToSection","addSectionQuestions","questionSectionSetsOrderKeys","qssoKey","questionSetMarkup","addSubSectionQuestions","subSectionOrderKeys","ssoKey","subSectionMarkup","questionSubSectionSetsOrderKeys","subSectionTitle","footerMarkup","sectionOrderKeys","soKey","aloneTimeAmount","providerBackUp","toc","tocInner","sectionGroup","validateTableHasAtLeastOneRowAnswered","tableQuestions","questionCountObj","sectionUnawnseredQuestions","numOfQuestionsUnawnseredWrapDiv","numOfQuestionsUnawnseredDiv","numOfQuestionsUnawnsered","isWorkingSectionComplete","sectionNumber","tocSectionAlertDiv","workingSectionCaseValue","tocHeader","tocMain","tocToggle","tocClose","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","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","deleteWarningPopup","followUpTypeSelect","setFormDataDefaults","tmpFollowUpTypeId","tmpPersonResponsible","tmpDueDate","tmpCompletedDate","tmpNote","buildFollowUpTypeDropdown","followUptypeDrop","fu","itFollowUpTypeId","followUpTypeName","buildPersonResponsibleInput","personInput","buildDueDateInput","inputOptions","buildCompletedDateInput","buildNotesInput","buildFormBtns","buildDeleteBtn","buildNewFollowUpForm","showForm","isedit","filterFollowUpTypes","followUpType","buildReviewTable","buildAddNewFollowUpBtn","dateTimeCompleted","dueDateTime","injuriesHome","newInjuryBtn","injuriesReviewTable","injuryLocationDropdown","injuryTypeDropdown","checkedByNurseCheckbox","detailsInput","treatmentInput","dateCheckedInput","injuryDeleteData","injuryLocations","injuryTypes","selectedInjuryId","treatment","dateChecked","newInjuryData","deleteConsumerInjuryData","deletedInjury","injuryLocationSelect","injuryTypeSelect","tmpInjuryLocation","tmpInjuryType","tmpCheckedBy","tmpDetails","tmpTreatment","tmpDateChecked","buildInjuryLocationDropdown","iLocDrop","injuryLocation","buildInjuryTypeDropdown","iTypeDrop","injuryType","buildCheckedByCheckbox","buildDetailsInput","dInput","buildTreatmentInput","tInput","buildDateCheckedInput","dcInput","buildNewInjuryForm","injuryForm","filteredLocations","iLoc","filteredTypes","iType","nurseChecked","buildAddNewInjuryBtn","interventionHome","newInterventionBtn","interventionReviewTable","interventionTypeDropdown","totalTimeInput","aversiveCheckbox","interventionData","interventionDeleteData","interventionTypes","selectedInterventionId","interventionTypeId","calculateTimeLength","stInput","etInput","ttInput","sTime","eTime","newInterventionData","deleteConsumerInterventionData","deletedIntervention","interventionTypeSelect","tTime","tmpInterventionType","tmpStartTime","tmpEndTime","tmpTimeLength","tmpAversive","buildInterventionTypeDropdown","buildTotalTimeInput","buildAversiveCheckbox","nInput","buildNewInterventionForm","interventionForm","filteredInterventionTypes","buildAddNewInterventionBtn","ppiCheckbox","actionBtns","involvementsData","consumerLocationData","removedConsumer","newInvolvementsData","setInvolvementsData","initConsumerInvolvementData","toggleSaveDisabled","allHaveLocation","oneHasPPI","doesAnotherConsumerHavePPIChecked","otherConsumerHasPPI","tmpInvolvementId","tmpPpi","setInvolvmentDropdownValue","involvmentSelect","setPPICheckboxValue","ppiCheckboxInput","buildInvolvementDropdown","iDropdown","lDropdown","buildBtns","saveText","reportingHome","newReportingBtn","reportingReviewTable","reportingCategoryDropdown","reportedByInput","reportedToInput","reportMethodInput","reportDateInput","reportTimeInput","reportNotesInput","reportingData","reportingDeleteData","reportingCategories","selectedReportId","reportTime","reportingCategoryId","reportNotes","newReportingData","deleteConsumerReportingData","deletedReport","reportCatSelect","tmpReportingCategoryId","tmpReportedBy","tmpReportedTo","tmpReportMethod","tmpReportDate","tmpReportTime","buildReportingCategoryDropdown","rCatDrop","itReportingCategoryId","itReportingCategoryName","buildReportedByInput","rbInput","buildReportedToInput","rtInput","buildReportMethodInput","rmInput","buildReportedDateInput","rdInput","buildReportedTimeInput","buildNewReportingForm","reportingForm","filteredCategories","rCat","reportedCategory","reviewsHome","newReviewBtn","reviewsReviewTable","reviewedByDropdown","reviewDeleteData","reviewedByDropdownData","selectedReviewId","reviewedById","reviewNotes","newReviewData","deleteConsumerReviewData","deletedReview","tmpReviewDate","tmpReviewedBy","currentReviewedBy","buildReviewDateInput","buildReviewedByDropdown","rbDrop","rb","buildNewReviewForm","reviewForm","dateReviewed","buildAddNewReviewBtn","summaryText","actionText","preventionText","factorsText","incidentDateInput","incidentTimeInput","reportedDateInput","reportedTimeInput","summaryTextarea","actionTextarea","preventionTextarea","causeTextarea","locationDetailDropdown","getSectionData","setSectionValues","defaultCategory","buildDateTimeInputs","incidentDateTimeWrap","reportedDateTimeWrap","incidentDateTime","reportedDateTime","buildDropdowns","dropdownWrap","itLocationId","defaultDropdownOption","buildTextAreas","cause","dateTimeInputs","textAreas","incidentDateInpt","detailshasErrors","employeesInvolved","addNewEmployeeRow","employeeCard","buildEmployeeCard","notifyEmployee","involvementType","involvementTypeId","employeeInvolvementTypeId","buildNameDropdown","nameDropdown","buildInvolvmentDropdown","involvmentTypeDropdown","checkedValue","employeeRow","delteBtn","addEmployeeBtn","othersInvolved","addNewPersonRow","peopleCard","buildOtherPersonCard","otherPeopleRow","involvementDropdownData","addPeopleBtn","consumerswithSaleforceIds","caseManagersfromOptionsTable","assignmentResults","currentCaseManagerSelected","currentconsumersSelected","assignCaseLoadPopup","assignBtn","toggleAssignButton","showConfirmationPopup","selectedConsumerObjs","confirmCaseLoadPopup","assignedConsumerList","assignStateCaseManagertoConsumers","processedStateConsumerObjs","filteredStateConsumers","assignresult","getCaseManagersfromOptionsTable","getConsumerswithSaleforceIds","popupMessage","innerWrap","caseManagersContainer","cmHeading","CM_SEARCH_BTN","CM_SEARCH_WRAP","CM_SEARCH_INPUT","CM_filterBtn","multiSelectBodyCM","caseManager","existing","CM_btnWrap","caseManagerSearch","consumersContainer","cHeading","C_SEARCH_BTN","C_SEARCH_WRAP","C_SEARCH_INPUT","C_filterBtn","multiSelectBodyC","cs","C_btnWrap","consumerSearch","displayedCaseManagers","thisCaseManager","paidSupportProviders","providerDropdownData","ssaDropdownData","csSSAPeopleIdGlobal","csrVendorIdGlobal","csContactInputGlobal","getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds","teamMember","isSigned","dateSigned","addMemberBtn","refreshTable","getConsentGlobalValues","SSA","VENDOR","CONTACT","isTeamMemberConsentable","isTeamMemberGuardian","getTeamMemberData","insertNewTeamMember","selectedMemberData","participated","parentOfMinor","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","nonPaidSupportData","paidSupportData","nonPaidSupportDropdownData","paidSupportDropdownData","nonPaidSupport","getSSADropdownData","populateDropdownSSA","ssaDropdown","csChangeMindQuestionDropdownData","populateDropdownVendor","contactQuestionDropdownData","nonGroupedDropdownData","paidSupportGroup","nonPaidSupportGroup","setSSADropdownInitialWidth","ssaWidth","setVendorDropdownInitialWidth","vendorContactDropdown","vendorWidth","updateSSADropdownWidth","hidden_opt","hidden_sel","updateVendorDropdownWidth","loadDropdownData","getPlanInformedConsentVendors","peopleid","getPlanInformedConsentSSAs","buildChangeMindRadios","radioContainer","buildChangeMindQuestion","changeMindQuestion","csChangeMindQuestionText","csChangeMindQuestionDropdown","changeMindRadios","buildContactRadios","buildContactQuestion","contactQuestion","contactQuestionText","csContactQuestionDropdown","contactInputValue","oldTable","updateTableRowOrder","inPersonSignature","relationshipType","csTeamMember","getSignatureTypeByID","showPopup","isNewMember","memberData","currentTeamMemberData","csSignature","dissentDate","addVendorBtn","showESignaturesPopup","ESignaturesPopup","webpageURL","origin","pathname","lastIndexOf","eSignatureTeamMemberData","checkboxCheck","requestESignaturesBtn","doesIdExistInVendors","mergedData","filteredValue","invalidContactProviderVendorIdCheck","checkOneSpan","getSelectedVendorIds","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","sigImage","clearSignatureBtn","dbVal","getChangeMindMarkup","getContactMarkup","prevDateSigned","dissentSection","consentSection","cancelText","saveCancelWrap","insertAllowed","importedFromRelationship","stateGuardiansObj","selectedStateGuardian","selectedStateGuardianSalesForceId","DBteamMemberswithStateSalesForceId","currentTeamMemberList","linkToRelationshipBtn","linkToSalesforceBtn","teamMemberDropdown","stateGuardianDropdown","lNameInput","dateOfBirthInput","relationshipTypeInput","signatureTypeDropdown","radioDiv2","participatedYesRadio","participatedNoRadio","parentOfMinorYesRadio","parentOfMinorNoRadio","saveTeamMemberBtn","checkTeamMemberPopupForErrors","isConsentable","populateTeamMemberDropdown","populateSignatureTypeDropdown","populateGuardiansDropDown","guarddata","calculateAge","dobStr","monthDifference","isDateBefore1900","relData","saveTeamMember","selectedSalesforceId","continueGuardianSave","continueSaveofGuardianTeamMember","existingPeopleId","usePerson","hasSalesForceIdBeenUsed","Scenario1ConfirmText","Scenario3ConfirmText","Scenario4ConfirmText","updatesuccess","selectedSalesForceID","isSaleForceIdUsed","buildParticipationRadios","radioContainerTitle","buildParentOfMinorRadios","isNoChecked","isYesChecked","buildDateSignedDisplay","dateSignedDisplay","dateSignedParsed","btnWrap3","orgId","selectedOptions","selectedTeamMember","isMinor","showStateGuardians","complaintQuestion","setStateofPopupFields","insertingConditionalFieldsintoPopup","checkIfDateBefore1900","isSelectedTeamMemberConsentable","insertingFieldsBasedonConsentable","isSelectedTeamMemberGuardian","insertingFieldsBasedonGuardian","globals","participationRadios","validEmail","parentOfMinorRadios","btns","csVendorPopup","checkcsVendorPopupForErrors","cleanedVendorName","selectedVendorData","selectedVendor","vendorAddress","removeV","populateVendorDropdownData","summaryVendors","outcomesVendors","servicesVendors","selectedVendors","facilitiesGroup","vendorGroup","nonVendorGroup","buildingNumberInputValue","usePlanImage","consumerIdForPhoto","consumerImage","consumerImageURL","updateIntroduction","planIntroductionAjax","updatePlanIntroduction","buildIntroduction","noPhotoRadio","fullpath","imgElement","displayNoPhoto","demoPhotoRadio","displayDemographicsPhoto","customPhotoRadio","planIntroductionData","getPlanIntroduction","displayPlanIntroductionPhoto","photoObj","photoFile","photoName","photoType","refreshPlanIntroductionPhoto","imageTitle","imageContainer","radioDiv1","radioDiv3","imageframe","photoSelectDiv","likeAdmireInput","thingsImportantToInput","thingsImportantForInput","howToSupportInput","customPhotoRadio2","myImage","noPhotoRadio1","urlCreator","webkitURL","myImage2","myImage3","getPlanIntroductionResult","updatePlanIntroductionResult","progressSummaryId","outcomesWrap","outcomesProgressSummary","addOutcomeBtn","addExpTableBtn","hasPreviousPlan","responseIdCache","mapOutcomesDetails","outcomeOrder","experiences","reviews","experienceId","experienceIds","experienceOrder","whatHappened","howHappened","responsibilities","responsibilityIds","responsibilityId","responsibleContact","whenHowOftenValue","whenValue","whenFrequency","whenHowOftenText","whenOther","outcomeReviewId","whoReview","who","reviewIds","whoResponsible","reviewOrder","sortOutcomesByOrder","outcomeData","objA","objB","checkIfSummaryRequired","populateAssessmentAreaDropdown","assessmentAreas","assessmentArea","populateStatusDropdown","populateExperiencesHowOftenDropdown","populateReviewsWhoDropdown","populateResponsibleProviderDropdown","serviceVendors","getPlanOutcomesPaidSupportProvidersResult","getPlanOutcomesPaidSupportProviders","selectedVendorIds","tempData","saveUpdateProvider","populateResponsibleContactDropdown","getWhenHowOFtenFrequencyById","filteredFrequency","getWhoTypeById","filteredWho","isSalesforceLocationTrue","insertOutcome","insertPlanOutcome","updatePlanOutcome","deleteOutcome","exp","respId","toggleAddNewOutcomePopupDoneBtn","inputsWithErrors","hasInitialErros","outcomeText","detailsText","historyText","newOutcomePopup","assessmentAreaDropdown","carryoverInput","outcomeTextInput","detailsTextInput","historyTextInput","insertOutcomeExperience","expTableWrap","newTableData","insertPlanOutcomesExperience","respData","respIds","insertPlanOutcomeExperienceResponsibility","getColTextForWhoResponsible","getColTextForWhenHowOften","showExperiencesPopup","experiencesTable","experiencesDummyTable","onEnd","updatePlanOutcomesExperienceOrder","newDraggableIndex","oldDraggableIndex","updateOutcomeExperience","respPartysToDelete","updatePlanOutcomesExperience","isRespPartyForDelete","deletePlanOutcomeExperienceResponsibility","updatePlanOutcomeExperienceResponsibility","newExperiencesTable","oldExperiencesTable","deleteOutcomeExperience","deletePlanOutcomeExperience","outcomeDiv","expTable","freq","filteredRelationship","toggleExperiencesPopupDoneBtn","saveUpdateData","experiencesPopup","whatHappenedInput","howHappenedInput","buildResponsiblePartyInputs","saveUpdateDataRef","dataRefKey","inputsWrap","whoReponsibleWrap","wrapHeading","responsiblePersonDropdown","responsibleProviderDropdown","respDropdown","whenHowOftenValueInput","whenHowOftenFrequencyDropdown","whenHowOftenTextInputField","whenHowOftenTextInput","textInput","respPartyWrap","respParty","addRespPartyBtn","respLength","expTables","mainBtns","whoReponsibleInput","addExperienceTable","buildExperiencesTables","experiencesDiv","respObj","experienceBtnAlertDiv","experienceAlertDiv","insertOutcomeReview","reviewId","insertPlanOutcomesReview","tableID","showReviewsPopup","updateOutcomeReview","updatePlanOutcomesReview","deleteOutcomeReview","deletePlanOutcomeReview","toggleReviewsPopupDoneBtn","reviewsPopup","whatWillHappenInput","whoReviewDropdown","isCaseManager","whenToCheckinDropdown","populatewhenToCheckinDropdown","addReviewRow","buildReviewsTable","reviewsDiv","reviewsTable","updateOutcomesReviewOrder","reviewsBtnAlertDiv","reviewAlertDiv","buildQuestion","awnser","buildOutcome","outcomesUpdateData","deleteOutcomeBtn","assessmentPlanValidation","orderDiv","outcomeInput","historyInput","topRow","outcomesDataValues","textForSave","updatePlanOutcomeProgressSummary","sortedOutcomes","pyid","planOutcomesData","summaryId","insertPlanOutcomeProgressSummary","ddData","targetAssessmentVersionId","getPlanSpecificOutcomesResult","insertPlanOutcomeProgressSummaryResult","insertPlanOutcomeResult","insertPlanOutcomesExperienceResult","insertPlanOutcomeExperienceResponsibilityResult","insertPlanOutcomesReviewResult","updatePlanOutcomeProgressSummaryResult","updatePlanOutcomeResult","updatePlanOutcomesExperienceResult","updatePlanOutcomeExperienceResponsibilityResult","updatePlanOutcomesReviewResult","deletePlanOutcomeProgressSummary","deletePlanOutcomeProgressSummaryResult","deletePlanOutcomeResult","deletePlanOutcomeExperienceResult","deletePlanOutcomeExperienceResponsibilityResult","deletePlanOutcomeReviewResult","updatePlanOutcomesOrder","updatePlanOutcomesReviewOrderResult","updatePlanOutcomesExperienceOrderResult","rmData","rmDataArray","rmMainWrap","addSectionBtn","updateRMResponse","restrictiveMeasuresAjax","updatePlanRestrictiveMeasures","deleteRMData","rmId","informedConsentId","deletePlanRestrictiveMeasures","toggleRestrictiveMeasureQuestionsVisiblity","restrictiveMeasuresSectionID","insertPlanRestrictiveMeasures","newSection","createNewSection","isFirstSection","rmSections","buildRestrictiveMeasureQuestions","rmQuestionSection","rmHrcApprovalDate","rmHRCDate","rmKeepSelfSafeQuestion","rmKeepSelfSafeQuestionText","rmKeepSelfSafeQuestionResp","rmFadeRestrictionQuestion","rmFadeRestrictionQuestionText","rmFadeRestrictionQuestionResp","rmWhatCouldHappenQuestion","rmWhatCouldHappenQuestionText","rmWhatCouldHappenQuestionContainer","rmWhatCouldHappenQuestionGoodResp","rmWhatCouldHappenQuestionBadResp","rmOtherWayHelpQuestion","rmOtherWayHelpQuestionText","rmOtherWayHelpQuestionContainer","rmOtherWayHelpQuestionGoodResp","rmOtherWayHelpQuestionBadResp","buildToggleQuestions","rmSection","rmRestrictionsIdentifiedQuestion","rmRestrictionsIdentifiedQuestionText","rmRestrictionsIdentifiedRadioContainer","rmRestrictionsIdentifiedYesRadio","rmIdentified","rmRestrictionsIdentifiedNoRadio","rmItem","insertedRMID","rmQuestions","createAddSectionButton","toggleQuestion","getPlanRestrictiveMeasures","getPlanRestrictiveMeasuresResult","insertPlanRestrictiveMeasuresResult","updatePlanRestrictiveMeasuresResult","deletePlanRestrictiveMeasuresResult","modificationsId","servicesSupportsData","selectedFundingSources","hasPaidSupports","paidSupportsTable","additionalSupportsTable","professionalReferralsTable","selectedPaidSupportIds","selectedPaidSupportRows","multiEditBtn","multiEditUpdateBtn","multiEditCancelBtn","fundingSourceDropdownSelectedText","servicesDropdownSelectedText","servicesOtherDropdownSelectedText","providerDropdownSelectedText","hcbsSelected","mapPaidSupportDataForTable","serviceNameId","serviceNameOther","scopeOfservice","howOftenValue","howOftenFrequency","howOftenText","fundingSourceText","paidSupportsId","beginDate","eDate","getAssessmentAreaById","getProviderNameById","getServiceNameById","serviceOtherName","getOtherServiceNameById","fundingSourceDesc","howOftenFrequencyText","getHowOftenHowMuchFrequencyById","howOften","funding","tableValues","psData","mapAdditionalSupportDataForTable","as","whoSupports","whoSupportsText","whatSupportsLookLike","additionalSupportsId","whenHowOftenDesc","getWhenHowOftenFrequencyById","asData","mapProfessionalReferralDataForTable","pr","professionalReferralId","newExisting","prData","getNumberOfPaidSupports","getNumberOfAdditionalSupports","additionalSupportsCount","getNumberOfProfessionalReferrals","professionalReferralsCount","getHasPaidSupports","setInitialSelectedVendorIds","setInitialFundingSourceNames","getSelectedFudningSourceNames","populateFundingSourceDropdown","populateServiceNameDropdown","fundingSourceVal","populateOtherServiceTypesDropdown","serviceTypesOther","serviceTypeDescription","populateMultiSelectServiceVendorsDropdown","thisSelectedArray","thisfundingSourceSelectedText","thisServiceNameSelectedText","completeVendorList","fundingSourceName","getPaidSupportsVendorsResult","vendorNumbers","getPaidSupportsVendors","test6","test7","test8","test9","duplicateVendors","minOccurancePaidSupports","removeDuplicatesBasedOnCount","minOccurancePaidSupportsFiltered","removeDuplicateObjects","vendorArray","thisVendorObject","populateServiceVendorsDropdown","ignoreGuardClauses","thisVendorDropDownData","populateHowOftenHowMuchFrequencyDropdown","populateWhenHowOftenFrequencyDropdown","populateNewOrExistingDropdown","filteredAssessment","filteredProvider","filteredFunding","insertPaidSupport","paidSupportId","insertPaidSupports","parsedId","isCopy","rowNode","copiedData","numPaidSupports","checkForPaidSupports","updatePaidSupport","updatePaidSupports","deletePaidSupport","deletePaidSupports","updatePaidSupportsRowFromMultiEdit","multiSaveUpdateData","checkForMatchingFundingSourceAndSeriviceNames","paidSupportRows","psRow","toggleMultiEditUpdateBtn","showMultiEditPopup","multiEditPopup","thisSelectedPaidSupportItems","thisfundingSource","thisserviceName","thisSelectedObject","matchingRows","providerNameDropdown","beginDateInput","updateMultiPaidSupports","buildMultiRowEdit","togglePaidSupportDoneBtn","availableServiceTypes","servicesDropdownSelected","paidSupportPopup","serviceNameDropdown","serviceNameOtherDropdown","fundingSourceInputField","fundingSourceInput","validateServicesDropdown","validateProviderDropdown","servicesDropdownSelect","servicesOtherDropdownSelect","providerDropdown","scopeOfserviceInput","howOftenHowMuchValueInput","howOftenHowMuchFrequencyDropdown","howOftenHowMuchTextInputField","howOftenHowMuchTextInput","vendorIds","addPaidSupportRow","getPaidSupportsMarkup","paidSupportsDiv","supportId","updatePaidSupportsRowOrder","mutliEditBtnWrap","insertAdditionalSupport","additionalSupportId","insertAdditionalSupports","updateAdditionalSupport","updateAdditionalSupports","deleteAdditionalSupport","additionalSupportData","deleteAdditionalSupports","toggleAdditionalSupportDoneBtn","additionalSupportPopup","whoSupportsDropdown","whatSupportLooksLikeInput","addAdditionalSupportRow","getAdditionalSupportsMarkup","additionalSupportsDiv","updateAdditionalSupportsRowOrder","addSupportId","insertProfessionalReferral","profRefId","updateProfessionalReferral","deleteProfessionalReferral","toggleProfessionalReferralDoneBtn","professionalReferralPopup","newOrExistingDropdown","reasonForReferralInput","addProfessionalReferralRow","getProfessionalReferralsMarkup","professionalReferralsDiv","updateServiceReferralRowOrder","referralId","insertSSModification","insertSSModifications","updateSSModification","updateSSModifications","deleteSSModification","ssId","getSSModificationsMarkup","supportModification","medicalRate","behaviorRate","icfRate","complexRate","developmentalRate","childIntensiveRate","modificationDiv","tagline","checkboxGroup","medicalRateCheckbox","behaviorRateCheckbox","icfRateCheckbox","complexRateCheckbox","developmentalRateCheckbox","childIntensiveRateCheckbox","checkboxes","cbi","uniqueIds","isDuplicate","servicesSupportsDiv","paidSec","additionalSec","profRefSec","modsSec","getServicesAndSupportsResult","insertSSModificationsResult","insertProfessionalReferralResult","insertAdditionalSupportsResult","insertPaidSupportsResult","updateSSModificationsResult","updateProfessionalReferralResult","updateAdditionalSupportsResult","updatePaidSupportsResult","updateMultiPaidSupportsResult","updatePaidSupportsRowOrderResult","updateAdditionalSupportsRowOrderResult","updateServiceReferralRowOrderResult","deleteSSModifications","deleteSSModificationsResult","deleteProfessionalReferralResult","deleteAdditionalSupportsResult","deletePaidSupportsResult","cnCaseLoadSettings","CN_CASELOAD_SETTINGS","showHideCheckBox","viewNotesEnteredByOtherUsersCheckBox","getSettings","buildCNCaseLoadSettings","setSettings","getInputFieldValues","styleSaveBtnOnSave","summaryData","sectionIdMap","sectionOrderMap","questionIdMap","questionSetIdMap","tablesToHide","amountOfTimeQuestion","backupPlanQuestion","mapSummaryData","dataName","questionCol","importantTableData","skillsTableData","risksTableData","deleteTableRow","dataSection","SummaryData","getAssessmentSummaryQuestions","rowToDelete","rowsLeftOver","rowIdText","updateRowOrder","questionsetid","answerids","populateDailyLifeDropdown","populateLevelsOfSupervisionDropdown","getLevelOfSupervisionById","getCommicationById","getDailyLifeById","addImportantTableRow","secTitle","rowOrderFromID","showImportantTablePopup","updateImportantTableRow","toggleImportantDoneBtn","importantToAnswerId","importantForAnswerId","importantPopup","importantToTextarea","importantForTextarea","upateSingleEmptyRowInsteadOfAddingNew","tableDataKeys","impToAnswer","impForAnswer","insertAssessmentSummaryAnswers","anywQuestionIds","updateAssessmentSummaryAnswers","anywAnswerIds","rowCount","buildImportTableBySection","importantTable","getImportantTablesMarkup","importantDiv","addSkillsTableRow","skillAbility","colText","showSkillsTablePopup","updateSkillsTableRow","toggleSkillsDoneBtn","skillAbilityId","communicationId","communication","dailyLifeId","dailyLife","skillsPopup","defaultTextInput","skillAbilityAnswer","buildSkillsTableBySection","skillsTable","getSkillsTablesMarkup","skillsDiv","questionsWrap","addRisksTableRow","riskSupervision","whoResponsibleText","levelOfSupervision","showRisksTablePopup","updateRisksTableRow","oldData","toggleRisksDoneBtn","dataCache","whatIsRiskId","whatSupportLooksLikeId","riskSupervisionId","whoResponsibleId","risksPopup","whatIsRiskTextarea","whatSupportLooksLikeTextarea","levelsOfSupervisionDropdown","whoResponsibleDropdown","riskAnswer","whatIsRiskAnswer","supportAnswer","whoResponsibleAnswer","buildRisksTableBySection","risksTable","isRowEmpty","sectionHasErrors","buildDropdownLegend","getRisksTablesMarkup","risksWrap","dropdownLegend","risksDiv","numOfPaidSupports","getAdditionalSummaryQuestionMarkup","additionalQuestionDiv","amountOfTimeWrap","amountOfTimePrompt","updateAdditionalAssessmentSummaryAnswers","backupPlanWrap","backupPlanPrompt","summaryWrap","skillsTables","risksTables","additionalSummaryMarkup","mappedSummaryData","getAssessmentSummaryQuestionsResult","getAdditionalAssessmentSummaryQuestionsResult","insertAssessmentSummaryAnswersResult","updateAssessmentSummaryAnswersResult","updateAdditionalAssessmentSummaryAnswerResult","updateBestWayToConnectResult","updatePlaceOnPathResult","updateMoreDetailResult","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","cnProductivitySettings","CN_PRODUCTIVITY_SETTINGS","buildCNProductivity","cnProductivitySettingsAjax","getCaseNoteProductivitySettings","cnRejectedSettings","CN_REJECTED_SETTINGS","buildCNRejectedSettings","wfPlanSettings","WF_PLAN_SETTINGS","buildWfPlanSettings","behaviorHome","newBehaviorBtn","behaviorReviewTable","behaviorTypeDropdown","occurrencesInput","behaviorDeleteData","behaviorTypes","selectedBehaviorId","behaviorType","newBehaviorData","deleteConsumerBehaviorData","deletedBehavior","getTimeLength","parseStartTime","splittime","tmpBehaviorTypeId","tmpOccurrences","buildBehaviorTypeDropdown","behaviortypeDrop","itBehaviorTypeId","behaviorTypeName","buildOccurrencesInput","buildNewBehaviorForm","behaviorForm","behaviorDATA","filterBehaviorTypes","occurrencesNum","buildAddNewBehaviorBtn"],"mappings":"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AIAq8W,eAAe,CAACn9W,gBAAhB,CAAiC,OAAjC,EAA2CrB,CAAD,IAAM;MAC9CA,CAAC,CAACqqB,eAAF,GAD8C,CACxB;IACxB,CAFA;EAGD;;EAED,OAAO;IACH+xa;EADG,CAAP;AAGD,CAzGsB,EAAvB;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AA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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACrlBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC3nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9YA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACpmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"bundle.js","sourcesContent":["!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)(\"object\"==typeof exports?exports:t)[r]=n[r]}}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p=\"\",e(0)}([function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}n(84);var o=n(41),i=r(o),a=function(){i[\"default\"].addPickerToOtherInputs(),i[\"default\"].supportsDateInput()||i[\"default\"].addPickerToDateInputs()};a(),document.addEventListener(\"DOMContentLoaded\",function(){a()}),document.querySelector(\"body\").addEventListener(\"mousedown\",function(){a()})},function(t,e,n){t.exports=!n(11)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,e){var n=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=n)},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(9),o=n(32),i=n(25),a=Object.defineProperty;e.f=n(1)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(u){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(59),o=n(16);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(4),o=n(14);t.exports=n(1)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(23)(\"wks\"),o=n(15),i=n(2).Symbol,a=\"function\"==typeof i,u=t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)(\"Symbol.\"+t))};u.store=r},function(t,e){var n=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=n)},function(t,e,n){var r=n(12);t.exports=function(t){if(!r(t))throw TypeError(t+\" is not an object!\");return t}},function(t,e,n){var r=n(2),o=n(8),i=n(56),a=n(6),u=\"prototype\",s=function(t,e,n){var c,l,f,d=t&s.F,p=t&s.G,h=t&s.S,y=t&s.P,m=t&s.B,v=t&s.W,b=p?o:o[e]||(o[e]={}),g=b[u],x=p?r:h?r[e]:(r[e]||{})[u];p&&(n=e);for(c in n)l=!d&&x&&void 0!==x[c],l&&c in b||(f=l?x[c]:n[c],b[c]=p&&\"function\"!=typeof x[c]?n[c]:m&&l?i(f,r):v&&x[c]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e[u]=t[u],e}(f):y&&\"function\"==typeof f?i(Function.call,f):f,y&&((b.virtual||(b.virtual={}))[c]=f,t&s.R&&g&&!g[c]&&a(g,c,f)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},function(t,e){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,e,n){var r=n(38),o=n(17);t.exports=Object.keys||function(t){return r(t,o)}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++n+r).toString(36))}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,e){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,e){t.exports={}},function(t,e){t.exports=!0},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(4).f,o=n(3),i=n(7)(\"toStringTag\");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},function(t,e,n){var r=n(23)(\"keys\"),o=n(15);t.exports=function(t){return r[t]||(r[t]=o(t))}},function(t,e,n){var r=n(2),o=\"__core-js_shared__\",i=r[o]||(r[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e,n){var r=n(12);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if(\"function\"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&\"function\"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,e,n){var r=n(2),o=n(8),i=n(19),a=n(27),u=n(4).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});\"_\"==t.charAt(0)||t in e||u(e,t,{value:a.f(t)})}},function(t,e,n){e.f=n(7)},function(t,e){\"use strict\";e.__esModule=!0,e[\"default\"]=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}e.__esModule=!0;var o=n(45),i=r(o);e[\"default\"]=function(){function t(t,e){for(var n=0;n\";for(e.style.display=\"none\",n(58).appendChild(e),e.src=\"javascript:\",t=e.contentWindow.document,t.open(),t.write(o+\"script\"+a+\"document.F=Object\"+o+\"/script\"+a),t.close(),c=t.F;r--;)delete c[s][i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(u[s]=r(t),n=new u,u[s]=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},function(t,e,n){var r=n(4),o=n(9),i=n(13);t.exports=n(1)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),u=a.length,s=0;u>s;)r.f(t,n=a[s++],e[n]);return t}},function(t,e,n){var r=n(38),o=n(17).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(3),o=n(5),i=n(55)(!1),a=n(22)(\"IE_PROTO\");t.exports=function(t,e){var n,u=o(t),s=0,c=[];for(n in u)n!=a&&r(u,n)&&c.push(n);for(;e.length>s;)r(u,n=e[s++])&&(~i(c,n)||c.push(n));return c}},function(t,e,n){t.exports=n(6)},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}function o(t,e){for(t=String(t),e=e||2;t.length0?\"-\":\"+\")+o(100*Math.floor(Math.abs(w)/60)+Math.abs(w)%60,4),S:[\"th\",\"st\",\"nd\",\"rd\"][h%10>3?0:(h%100-h%10!=10)*h%10],W:S,N:O};return s.replace(t,function(t){return t in D?D[t]:t.slice(1,t.length-1)})}}();l.masks={\"default\":\"ddd mmm dd yyyy HH:MM:ss\",shortDate:\"m/d/yy\",mediumDate:\"mmm d, yyyy\",longDate:\"mmmm d, yyyy\",fullDate:\"dddd, mmmm d, yyyy\",shortTime:\"h:MM TT\",mediumTime:\"h:MM:ss TT\",longTime:\"h:MM:ss TT Z\",isoDate:\"yyyy-mm-dd\",isoTime:\"HH:MM:ss\",isoDateTime:\"yyyy-mm-dd'T'HH:MM:sso\",isoUtcDateTime:\"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\",expiresHeaderFormat:\"ddd, dd mmm yyyy HH:MM:ss Z\"},l.i18n={dayNames:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\",\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],monthNames:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},e[\"default\"]=l},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}Object.defineProperty(e,\"__esModule\",{value:!0});var o=n(44),i=r(o),a=n(28),u=r(a),s=n(29),c=r(s),l=n(43),f=r(l),d=n(42),p=r(d),h=n(40),y=r(h),m=function(){function t(e){var n=this;(0,u[\"default\"])(this,t),this.element=e,this.element.setAttribute(\"data-has-picker\",\"\"),this.locale=this.element.getAttribute(\"lang\")||document.body.getAttribute(\"lang\")||\"en\",this.format=this.element.getAttribute(\"date-format\")||document.body.getAttribute(\"date-format\")||this.element.getAttribute(\"data-date-format\")||document.body.getAttribute(\"data-date-format\")||\"yyyy-mm-dd\",this.localeText=this.getLocaleText(),(0,i[\"default\"])(this.element,{valueAsDate:{get:function(){if(!n.element.value)return null;var t=n.format||\"yyyy-mm-dd\",e=n.element.value.match(/(\\d+)/g),r=0,o={};return t.replace(/(yyyy|dd|mm)/g,function(t){o[t]=r++}),new Date(e[o.yyyy],e[o.mm]-1,e[o.dd])},set:function(t){n.element.value=(0,y[\"default\"])(t,n.format)}},valueAsNumber:{get:function(){return n.element.value?n.element.valueAsDate.valueOf():NaN},set:function(t){n.element.valueAsDate=new Date(t)}}});var r=function(t){var e=n.element;e.locale=n.localeText,f[\"default\"].attachTo(e)};this.element.addEventListener(\"focus\",r),this.element.addEventListener(\"mouseup\",r),this.element.addEventListener(\"keydown\",function(t){var e=new Date;switch(t.keyCode){case 9:case 27:f[\"default\"].hide();break;case 38:n.element.valueAsDate&&(e.setDate(n.element.valueAsDate.getDate()+1),n.element.valueAsDate=e,f[\"default\"].pingInput());break;case 40:n.element.valueAsDate&&(e.setDate(n.element.valueAsDate.getDate()-1),n.element.valueAsDate=e,f[\"default\"].pingInput())}f[\"default\"].sync()}),this.element.addEventListener(\"keyup\",function(t){f[\"default\"].sync()})}return(0,c[\"default\"])(t,[{key:\"getLocaleText\",value:function(){var t=this.locale.toLowerCase();for(var e in p[\"default\"]){var n=e.split(\"_\");if(n.map(function(t){return t.toLowerCase()}),~n.indexOf(t)||~n.indexOf(t.substr(0,2)))return p[\"default\"][e]}}}],[{key:\"supportsDateInput\",value:function(){var t=document.createElement(\"input\");t.setAttribute(\"type\",\"date\");var e=\"not-a-date\";return t.setAttribute(\"value\",e),!(t.value===e)}},{key:\"addPickerToDateInputs\",value:function(){var e=document.querySelectorAll('input[type=\"date\"]:not([data-has-picker])'),n=e.length;if(!n)return!1;for(var r=0;r\"],n=0,r=this.locale.days.length;n'+this.locale.days[n]+\"\");this.daysHead.innerHTML=e.join(\"\"),t.createRangeSelect(this.month,0,11,this.locale.months)}},{key:\"refreshDaysMatrix\",value:function(){this.refreshLocale();for(var e=this.date.getFullYear(),n=this.date.getMonth(),r=new Date(e,n,1).getDay(),o=new Date(this.date.getFullYear(),n+1,0).getDate(),i=t.absoluteDate(this.input.valueAsDate)||!1,a=i&&e===i.getFullYear()&&n===i.getMonth(),u=[],s=0;s\":\"\")+\"\\n \\n \"),s+1<=r)u.push(\"\");else{var c=s+1-r,l=a&&i.getDate()===c;u.push(\"\\n \"+c+\"\\n \")}this.days.innerHTML=u.join(\"\")}},{key:\"pingInput\",value:function(){var t=void 0,e=void 0;try{t=new Event(\"input\"),e=new Event(\"change\")}catch(n){t=document.createEvent(\"KeyboardEvent\"),t.initEvent(\"input\",!0,!1),e=document.createEvent(\"KeyboardEvent\"),e.initEvent(\"change\",!0,!1)}this.input.dispatchEvent(t),this.input.dispatchEvent(e)}}],[{key:\"createRangeSelect\",value:function(t,e,n,r){t.innerHTML=\"\";for(var o=e;o<=n;++o){var i=document.createElement(\"option\");t.appendChild(i);var a=r?r[o-e]:o;i.text=a,i.value=o}return t}},{key:\"absoluteDate\",value:function(t){return t&&new Date(t.getTime()+60*t.getTimezoneOffset()*1e3)}}]),t}();window.thePicker=new s,e[\"default\"]=window.thePicker},function(t,e,n){t.exports={\"default\":n(49),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(50),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(51),__esModule:!0}},function(t,e,n){t.exports={\"default\":n(52),__esModule:!0}},function(t,e,n){\"use strict\";function r(t){return t&&t.__esModule?t:{\"default\":t}}e.__esModule=!0;var o=n(47),i=r(o),a=n(46),u=r(a),s=\"function\"==typeof u[\"default\"]&&\"symbol\"==typeof i[\"default\"]?function(t){return typeof t}:function(t){return t&&\"function\"==typeof u[\"default\"]&&t.constructor===u[\"default\"]?\"symbol\":typeof t};e[\"default\"]=\"function\"==typeof u[\"default\"]&&\"symbol\"===s(i[\"default\"])?function(t){return\"undefined\"==typeof t?\"undefined\":s(t)}:function(t){return t&&\"function\"==typeof u[\"default\"]&&t.constructor===u[\"default\"]?\"symbol\":\"undefined\"==typeof t?\"undefined\":s(t)}},function(t,e,n){n(73);var r=n(8).Object;t.exports=function(t,e){return r.defineProperties(t,e)}},function(t,e,n){n(74);var r=n(8).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},function(t,e,n){n(77),n(75),n(78),n(79),t.exports=n(8).Symbol},function(t,e,n){n(76),n(80),t.exports=n(27).f(\"iterator\")},function(t,e){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,e){t.exports=function(){}},function(t,e,n){var r=n(5),o=n(70),i=n(69);t.exports=function(t){return function(e,n,a){var u,s=r(e),c=o(s.length),l=i(a,c);if(t&&n!=n){for(;c>l;)if(u=s[l++],u!=u)return!0}else for(;c>l;l++)if((t||l in s)&&s[l]===n)return t||l||0;return!t&&-1}}},function(t,e,n){var r=n(53);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(13),o=n(37),i=n(20);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,u=n(t),s=i.f,c=0;u.length>c;)s.call(t,a=u[c++])&&e.push(a);return e}},function(t,e,n){t.exports=n(2).document&&document.documentElement},function(t,e,n){var r=n(30);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==r(t)?t.split(\"\"):Object(t)}},function(t,e,n){var r=n(30);t.exports=Array.isArray||function(t){return\"Array\"==r(t)}},function(t,e,n){\"use strict\";var r=n(34),o=n(14),i=n(21),a={};n(6)(a,n(7)(\"iterator\"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+\" Iterator\")}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){var r=n(13),o=n(5);t.exports=function(t,e){for(var n,i=o(t),a=r(i),u=a.length,s=0;u>s;)if(i[n=a[s++]]===e)return n}},function(t,e,n){var r=n(15)(\"meta\"),o=n(12),i=n(3),a=n(4).f,u=0,s=Object.isExtensible||function(){return!0},c=!n(11)(function(){return s(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:\"O\"+ ++u,w:{}}})},f=function(t,e){if(!o(t))return\"symbol\"==typeof t?t:(\"string\"==typeof t?\"S\":\"P\")+t;if(!i(t,r)){if(!s(t))return\"F\";if(!e)return\"E\";l(t)}return t[r].i},d=function(t,e){if(!i(t,r)){if(!s(t))return!0;if(!e)return!1;l(t)}return t[r].w},p=function(t){return c&&h.NEED&&s(t)&&!i(t,r)&&l(t),t},h=t.exports={KEY:r,NEED:!1,fastKey:f,getWeak:d,onFreeze:p}},function(t,e,n){var r=n(20),o=n(14),i=n(5),a=n(25),u=n(3),s=n(32),c=Object.getOwnPropertyDescriptor;e.f=n(1)?c:function(t,e){if(t=i(t),e=a(e,!0),s)try{return c(t,e)}catch(n){}if(u(t,e))return o(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(5),o=n(36).f,i={}.toString,a=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],u=function(t){try{return o(t)}catch(e){return a.slice()}};t.exports.f=function(t){return a&&\"[object Window]\"==i.call(t)?u(t):o(r(t))}},function(t,e,n){var r=n(3),o=n(71),i=n(22)(\"IE_PROTO\"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},function(t,e,n){var r=n(24),o=n(16);t.exports=function(t){return function(e,n){var i,a,u=String(o(e)),s=r(n),c=u.length;return s<0||s>=c?t?\"\":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===c||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):i:t?u.slice(s,s+2):(i-55296<<10)+(a-56320)+65536)}}},function(t,e,n){var r=n(24),o=Math.max,i=Math.min;t.exports=function(t,e){return t=r(t),t<0?o(t+e,0):i(t,e)}},function(t,e,n){var r=n(24),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(16);t.exports=function(t){return Object(r(t))}},function(t,e,n){\"use strict\";var r=n(54),o=n(62),i=n(18),a=n(5);t.exports=n(33)(Array,\"Array\",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):\"keys\"==e?o(0,n):\"values\"==e?o(0,t[n]):o(0,[n,t[n]])},\"values\"),i.Arguments=i.Array,r(\"keys\"),r(\"values\"),r(\"entries\")},function(t,e,n){var r=n(10);r(r.S+r.F*!n(1),\"Object\",{defineProperties:n(35)})},function(t,e,n){var r=n(10);r(r.S+r.F*!n(1),\"Object\",{defineProperty:n(4).f})},function(t,e){},function(t,e,n){\"use strict\";var r=n(68)(!0);n(33)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){\"use strict\";var r=n(2),o=n(3),i=n(1),a=n(10),u=n(39),s=n(64).KEY,c=n(11),l=n(23),f=n(21),d=n(15),p=n(7),h=n(27),y=n(26),m=n(63),v=n(57),b=n(60),g=n(9),x=n(5),M=n(25),w=n(14),S=n(34),O=n(66),D=n(65),T=n(4),_=n(13),A=D.f,k=T.f,E=O.f,j=r.Symbol,C=r.JSON,N=C&&C.stringify,L=\"prototype\",P=p(\"_hidden\"),F=p(\"toPrimitive\"),J={}.propertyIsEnumerable,H=l(\"symbol-registry\"),I=l(\"symbols\"),Y=l(\"op-symbols\"),R=Object[L],z=\"function\"==typeof j,U=r.QObject,B=!U||!U[L]||!U[L].findChild,W=i&&c(function(){return 7!=S(k({},\"a\",{get:function(){return k(this,\"a\",{value:7}).a}})).a})?function(t,e,n){var r=A(R,e);r&&delete R[e],k(t,e,n),r&&t!==R&&k(R,e,r)}:k,Z=function(t){var e=I[t]=S(j[L]);return e._k=t,e},G=z&&\"symbol\"==typeof j.iterator?function(t){return\"symbol\"==typeof t}:function(t){return t instanceof j},K=function(t,e,n){return t===R&&K(Y,e,n),g(t),e=M(e,!0),g(n),o(I,e)?(n.enumerable?(o(t,P)&&t[P][e]&&(t[P][e]=!1),n=S(n,{enumerable:w(0,!1)})):(o(t,P)||k(t,P,w(1,{})),t[P][e]=!0),W(t,e,n)):k(t,e,n)},V=function(t,e){g(t);for(var n,r=v(e=x(e)),o=0,i=r.length;i>o;)K(t,n=r[o++],e[n]);return t},q=function(t,e){return void 0===e?S(t):V(S(t),e)},Q=function(t){var e=J.call(this,t=M(t,!0));return!(this===R&&o(I,t)&&!o(Y,t))&&(!(e||!o(this,t)||!o(I,t)||o(this,P)&&this[P][t])||e)},X=function(t,e){if(t=x(t),e=M(e,!0),t!==R||!o(I,e)||o(Y,e)){var n=A(t,e);return!n||!o(I,e)||o(t,P)&&t[P][e]||(n.enumerable=!0),n}},$=function(t){for(var e,n=E(x(t)),r=[],i=0;n.length>i;)o(I,e=n[i++])||e==P||e==s||r.push(e);return r},tt=function(t){for(var e,n=t===R,r=E(n?Y:x(t)),i=[],a=0;r.length>a;)!o(I,e=r[a++])||n&&!o(R,e)||i.push(I[e]);return i};z||(j=function(){if(this instanceof j)throw TypeError(\"Symbol is not a constructor!\");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===R&&e.call(Y,n),o(this,P)&&o(this[P],t)&&(this[P][t]=!1),W(this,t,w(1,n))};return i&&B&&W(R,t,{configurable:!0,set:e}),Z(t)},u(j[L],\"toString\",function(){return this._k}),D.f=X,T.f=K,n(36).f=O.f=$,n(20).f=Q,n(37).f=tt,i&&!n(19)&&u(R,\"propertyIsEnumerable\",Q,!0),h.f=function(t){return Z(p(t))}),a(a.G+a.W+a.F*!z,{Symbol:j});for(var et=\"hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables\".split(\",\"),nt=0;et.length>nt;)p(et[nt++]);for(var et=_(p.store),nt=0;et.length>nt;)y(et[nt++]);a(a.S+a.F*!z,\"Symbol\",{\"for\":function(t){return o(H,t+=\"\")?H[t]:H[t]=j(t)},keyFor:function(t){if(G(t))return m(H,t);throw TypeError(t+\" is not a symbol!\")},useSetter:function(){B=!0},useSimple:function(){B=!1}}),a(a.S+a.F*!z,\"Object\",{create:q,defineProperty:K,defineProperties:V,getOwnPropertyDescriptor:X,getOwnPropertyNames:$,getOwnPropertySymbols:tt}),C&&a(a.S+a.F*(!z||c(function(){var t=j();return\"[null]\"!=N([t])||\"{}\"!=N({a:t})||\"{}\"!=N(Object(t))})),\"JSON\",{stringify:function(t){if(void 0!==t&&!G(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return e=r[1],\"function\"==typeof e&&(n=e),!n&&b(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!G(e))return e}),r[1]=e,N.apply(C,r)}}}),j[L][F]||n(6)(j[L],F,j[L].valueOf),f(j,\"Symbol\"),f(Math,\"Math\",!0),f(r.JSON,\"JSON\",!0)},function(t,e,n){n(26)(\"asyncIterator\")},function(t,e,n){n(26)(\"observable\")},function(t,e,n){n(72);for(var r=n(2),o=n(6),i=n(18),a=n(7)(\"toStringTag\"),u=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],s=0;s<5;s++){var c=u[s],l=r[c],f=l&&l.prototype;f&&!f[a]&&o(f,a,c),i[c]=i.Array}},function(t,e,n){e=t.exports=n(82)(),e.push([t.id,\"date-input-polyfill{background:#fff;color:#000;text-shadow:none;border:0;padding:0;height:auto;width:auto;line-height:normal;font-family:sans-serif;font-size:14px;position:absolute!important;text-align:center;box-shadow:0 3px 10px 1px rgba(0,0,0,.22);cursor:default;z-index:1;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden;display:block}date-input-polyfill[data-open=false]{visibility:hidden;z-index:-100!important;top:0}date-input-polyfill[data-open=true]{visibility:visible}date-input-polyfill select,date-input-polyfill table,date-input-polyfill td,date-input-polyfill th{background:#fff;color:#000;text-shadow:none;border:0;padding:0;height:auto;width:auto;line-height:normal;font-family:sans-serif;font-size:14px;box-shadow:none;font-family:Lato,Helvetica,Arial,sans-serif}date-input-polyfill button,date-input-polyfill select{border:0;border-radius:0;border-bottom:1px solid #dadfe1;height:24px;vertical-align:top;-webkit-appearance:none;-moz-appearance:none}date-input-polyfill .monthSelect-wrapper{width:55%;display:inline-block}date-input-polyfill .yearSelect-wrapper{width:25%;display:inline-block}date-input-polyfill select{width:100%}date-input-polyfill select:first-of-type{border-right:1px solid #dadfe1;border-radius:5px 0 0 0;-moz-border-radius:5px 0 0 0;-webkit-border-radius:5px 0 0 0}date-input-polyfill button{width:20%;background:#dadfe1;border-radius:0 5px 0 0;-moz-border-radius:0 5px 0 0;-webkit-border-radius:0 5px 0 0}date-input-polyfill button:hover{background:#eee}date-input-polyfill table{border-collapse:separate!important;border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;overflow:hidden;max-width:280px;width:280px}date-input-polyfill td,date-input-polyfill th{width:32px;padding:4px;text-align:center;box-sizing:content-box}date-input-polyfill td[data-day]{cursor:pointer}date-input-polyfill td[data-day]:hover{background:#dadfe1}date-input-polyfill [data-selected]{font-weight:700;background:#d8eaf6}\",\"\"]);\r\n},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;e=0&&g.splice(e,1)}function u(t){var e=document.createElement(\"style\");return e.type=\"text/css\",i(t,e),e}function s(t){var e=document.createElement(\"link\");return e.rel=\"stylesheet\",i(t,e),e}function c(t,e){var n,r,o;if(e.singleton){var i=b++;n=v||(v=u(e)),r=l.bind(null,n,i,!1),o=l.bind(null,n,i,!0)}else t.sourceMap&&\"function\"==typeof URL&&\"function\"==typeof URL.createObjectURL&&\"function\"==typeof URL.revokeObjectURL&&\"function\"==typeof Blob&&\"function\"==typeof btoa?(n=s(e),r=d.bind(null,n),o=function(){a(n),n.href&&URL.revokeObjectURL(n.href)}):(n=u(e),r=f.bind(null,n),o=function(){a(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else o()}}function l(t,e,n,r){var o=n?\"\":r.css;if(t.styleSheet)t.styleSheet.cssText=x(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function f(t,e){var n=e.css,r=e.media;if(r&&t.setAttribute(\"media\",r),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}function d(t,e){var n=e.css,r=e.sourceMap;r&&(n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+\" */\");var o=new Blob([n],{type:\"text/css\"}),i=t.href;t.href=URL.createObjectURL(o),i&&URL.revokeObjectURL(i)}var p={},h=function(t){var e;return function(){return\"undefined\"==typeof e&&(e=t.apply(this,arguments)),e}},y=h(function(){return/msie [6-9]\\b/.test(window.navigator.userAgent.toLowerCase())}),m=h(function(){return document.head||document.getElementsByTagName(\"head\")[0]}),v=null,b=0,g=[];t.exports=function(t,e){e=e||{},\"undefined\"==typeof e.singleton&&(e.singleton=y()),\"undefined\"==typeof e.insertAt&&(e.insertAt=\"bottom\");var n=o(t);return r(n,e),function(t){for(var i=[],a=0;a 1) return num;\r\n return `0${num}`;\r\n }\r\n\r\n // PUBLIC\r\n //------------------------------------\r\n // GET\r\n function getTodaysDateObj() {\r\n const todaysDate = new Date();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n return todaysDate;\r\n }\r\n function getTodaysDateISOString() {\r\n const todaysDate = new Date();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n const dd = todaysDate.getDate();\r\n const mm = todaysDate.getMonth() + 1;\r\n const yyyy = todaysDate.getFullYear();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n function getDaysInMonth(dirtyDate) {\r\n var date = cloneDate(dirtyDate);\r\n var year = date.getFullYear();\r\n var monthIndex = date.getMonth();\r\n var lastDayOfMonth = new Date(0);\r\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\r\n lastDayOfMonth.setHours(0, 0, 0, 0);\r\n return lastDayOfMonth.getDate();\r\n }\r\n // ADD\r\n function addDays(dirtyDate, dirtyAmount) {\r\n var date = cloneDate(dirtyDate);\r\n var amount = toInteger(dirtyAmount);\r\n date.setDate(date.getDate() + amount);\r\n return date;\r\n }\r\n function addWeeks(date, amount) {\r\n const days = amount * 7;\r\n return addDays(date, days);\r\n }\r\n function addMonths(dirtyDate, dirtyAmount) {\r\n var date = cloneDate(dirtyDate);\r\n var amount = toInteger(dirtyAmount);\r\n var desiredMonth = date.getMonth() + amount;\r\n var dateWithDesiredMonth = new Date(0);\r\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\r\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\r\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\r\n // Set the last day of the new month\r\n // if the original date was the last day of the longer month\r\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\r\n return date;\r\n }\r\n function addYears(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addMonths(dirtyDate, amount * 12);\r\n }\r\n // SUB\r\n function subDays(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addDays(dirtyDate, -amount);\r\n }\r\n function subWeeks(date, amount) {\r\n return addWeeks(date, -amount);\r\n }\r\n function subYears(dirtyDate, dirtyAmount) {\r\n var amount = toInteger(dirtyAmount);\r\n return addYears(dirtyDate, -amount);\r\n }\r\n // WEEKS\r\n function endOfWeek(dirtyDate, dirtyOptions) {\r\n //Get the end of the week for given date\r\n /**\r\n * @name endOfWeek\r\n * @param {Date|Number} dirtyDate\r\n * @param {Object} dirtyOptions\r\n * @param {0|1|2|3|4|5|6} [weekStartsOn=0]\r\n */\r\n\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n let options = dirtyOptions || {};\r\n\r\n const weekStartsOn =\r\n options.weekStartsOn === null || options.weekStartsOn === undefined ? 0 : UTIL.toInteger(options.weekStartsOn);\r\n\r\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\r\n throw new RangeError(`weekStartsOn must be between 0 and 6 inclusively`);\r\n }\r\n\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\r\n\r\n date.setDate(date.getDate() + diff);\r\n date.setHours(23, 59, 59, 999);\r\n return date;\r\n }\r\n function startDayOfWeek(dirtyDate, dirtyOptions) {\r\n //Get the start date of week\r\n /**\r\n * @name startOfWeek\r\n * @param {Date|Number} dirtyDate\r\n * @param {Object} dirtyOptions\r\n * @param {0|1|2|3|4|5|6} [weekStartsOn=0]\r\n */\r\n\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n let options = dirtyOptions || {};\r\n\r\n const weekStartsOn =\r\n options.weekStartsOn === null || options.weekStartsOn === undefined ? 0 : util.toInteger(options.weekStartsOn);\r\n\r\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\r\n throw new RangeError(`weekStartsOn must be between 0 and 6 inclusively`);\r\n }\r\n\r\n const date = cloneDate(dirtyDate);\r\n const day = date.getDay();\r\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\r\n date.setDate(date.getDate() - diff);\r\n date.setHours(0, 0, 0, 0);\r\n return date;\r\n }\r\n // COMPARE\r\n function isAfter(dirtyDate, dirtyDateToCompare) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var date = cloneDate(dirtyDate);\r\n var dateToCompare = cloneDate(dirtyDateToCompare);\r\n return date.getTime() > dateToCompare.getTime();\r\n }\r\n function isBefore(dirtyDate, dirtyDateToCompare) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var date = cloneDate(dirtyDate);\r\n var dateToCompare = cloneDate(dirtyDateToCompare);\r\n return date.getTime() < dateToCompare.getTime();\r\n }\r\n function isEqual(dirtyLeftDate, dirtyRightDate) {\r\n if (arguments.length < 2) {\r\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present');\r\n }\r\n\r\n var dateLeft = cloneDate(dirtyLeftDate);\r\n var dateRight = cloneDate(dirtyRightDate);\r\n return dateLeft.getTime() === dateRight.getTime();\r\n }\r\n function isDateInCurrentWeek(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n const curentWeekStart = startDayOfWeek(currentDate);\r\n const curentWeekEnd = endOfWeek(currentDate);\r\n\r\n if (isAfter(date, curentWeekStart) && isBefore(date, curentWeekEnd)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n function isDateInFuture(dirtyDate) {\r\n const date = cloneDate(dirtyDate);\r\n date.setHours(0, 0, 0, 0);\r\n const currentDate = new Date();\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n if (isAfter(date, currentDate)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n // FORMAT\r\n function checkFormat(dateString) {\r\n // Regex pattern for ISO date format (YYYY-MM-DD)\r\n const isoFormatPattern = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n // Adjusted Regex pattern for Standard format (M/D/YYYY or MM/DD/YYYY)\r\n const standardFormatPattern = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/;\r\n\r\n if (isoFormatPattern.test(dateString)) {\r\n return 'iso';\r\n } else if (standardFormatPattern.test(dateString)) {\r\n return 'standard';\r\n } else {\r\n return '';\r\n }\r\n }\r\n function formatISO(dirtyDate, dirtyOptions) {\r\n if (arguments.length < 1) {\r\n throw new TypeError(`1 argument required, but only ${arguments.length} present`);\r\n }\r\n\r\n const originalDate = cloneDate(dirtyDate);\r\n\r\n if (!isValid(originalDate)) {\r\n throw new RangeError('Invalid time value');\r\n }\r\n\r\n const options = dirtyOptions || {};\r\n const format = options.format == null ? 'extended' : String(options.format);\r\n const representation = options.representation == null ? 'complete' : String(options.representation);\r\n\r\n if (format !== 'extended' && format !== 'basic') {\r\n throw new RangeError(\"format must be 'extended' or 'basic'\");\r\n }\r\n\r\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\r\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\r\n }\r\n\r\n let result = '';\r\n let tzOffset = '';\r\n\r\n const dateDelimiter = format === 'extended' ? '-' : '';\r\n const timeDelimiter = format === 'extended' ? ':' : '';\r\n\r\n // Representation is either 'date' or 'complete'\r\n if (representation !== 'time') {\r\n const day = UTIL.leadingZero(originalDate.getDate(), 2);\r\n const month = UTIL.leadingZero(originalDate.getMonth() + 1, 2);\r\n const year = UTIL.leadingZero(originalDate.getFullYear(), 4);\r\n\r\n // yyyyMMdd or yyyy-MM-dd.\r\n result = `${year}${dateDelimiter}${month}${dateDelimiter}${day}`;\r\n }\r\n\r\n // Representation is either 'time' or 'complete'\r\n if (representation !== 'date') {\r\n // Add the timezone.\r\n const offset = originalDate.getTimezoneOffset();\r\n\r\n if (offset !== 0) {\r\n const absoluteOffset = Math.abs(offset);\r\n const hourOffset = UTIL.leadingZero(Math.floor(absoluteOffset / 60), 2);\r\n const minuteOffset = UTIL.leadingZero(absoluteOffset % 60, 2);\r\n // If less than 0, the sign is +, because it is ahead of time.\r\n const sign = offset < 0 ? '+' : '-';\r\n\r\n tzOffset = `${sign}${hourOffset}:${minuteOffset}`;\r\n } else {\r\n tzOffset = 'Z';\r\n }\r\n\r\n const hour = UTIL.leadingZero(originalDate.getHours(), 2);\r\n const minute = UTIL.leadingZero(originalDate.getMinutes(), 2);\r\n const second = UTIL.leadingZero(originalDate.getSeconds(), 2);\r\n\r\n // If there's also date, separate it with time with 'T'\r\n const separator = result === '' ? '' : 'T';\r\n\r\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\r\n const time = [hour, minute, second].join(timeDelimiter);\r\n\r\n // HHmmss or HH:mm:ss.\r\n result = `${result}${separator}${time}${tzOffset}`;\r\n }\r\n\r\n return result;\r\n }\r\n function formateToISO(dirtyDate) {\r\n if (!dirtyDate) return;\r\n\r\n let splitBy;\r\n\r\n if (dirtyDate.indexOf('/') !== -1) {\r\n splitBy = '/';\r\n } else if (dirtyDate.indexOf('-') !== -1) {\r\n splitBy = '-';\r\n } else {\r\n return 'Invalid Date String';\r\n }\r\n\r\n const date = dirtyDate.split(splitBy);\r\n\r\n if (date[0].length === 4) {\r\n return dirtyDate;\r\n }\r\n\r\n const YYYY = date[2];\r\n const MM = leadingZero(date[0]);\r\n const DD = leadingZero(date[1]);\r\n\r\n return `${YYYY}-${MM}-${DD}`;\r\n }\r\n function formateToStandard(dirtyDate, joinBy, opts) {\r\n var shorten = opts ? opts.shortenYear : false;\r\n var date = dirtyDate.split('-');\r\n var MM = leadingZero(date[1]);\r\n var DD = leadingZero(date[2]);\r\n var YYYY = shorten ? date[0].substring(0, 2) : date[0];\r\n\r\n if (joinBy) {\r\n return `${MM}${joinBy}${DD}${joinBy}${YYYY}`;\r\n }\r\n\r\n return `${MM}/${DD}/${YYYY}`;\r\n }\r\n // INTERVALS\r\n function eachDayOfInterval(interval, options) {\r\n const startDate = toDate(interval.start);\r\n const endDate = toDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\r\n if (!(startDate.getTime() <= endTime)) {\r\n throw new RangeError('Invalid interval');\r\n }\r\n\r\n const dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n const step = options?.step ?? 1;\r\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(toDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + step);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n\r\n // TIME\r\n //----------------------------------------------------------------\r\n /**\r\n * Converts a 24hr time to 12hr standard time.\r\n *\r\n * @function\r\n * @param {string} time Time you would like to convert\r\n * @returns {string} Converted time\r\n */\r\n function convertFromMilitary(time) {\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(':');\r\n var hh = parseInt(time[0]);\r\n var mm = parseInt(time[1]);\r\n var amPm = hh <= 11 ? 'AM' : 'PM';\r\n\r\n if (hh === 0) hh = 12;\r\n if (amPm === 'PM' && hh !== 12) hh -= 12;\r\n\r\n return `${hh}:${leadingZero(mm)} ${amPm}`;\r\n }\r\n /**\r\n * Converts a 12hr time to 24hr military time.\r\n *\r\n * @function\r\n * @param {string} time Time you would like to convert\r\n * @returns {string} Converted time\r\n */\r\n function convertToMilitary(time) {\r\n // time format must be hh:mm am/pm\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(' ');\r\n timeString = time[0].split(':');\r\n\r\n var amPM = time[1].toLowerCase();\r\n var hh = parseInt(timeString[0]);\r\n var mm = parseInt(timeString[1]);\r\n\r\n if (amPM === 'pm' && hh !== 12) hh += 12;\r\n if (amPM === 'am' && hh === 12) hh = 0;\r\n\r\n return `${leadingZero(hh)}:${leadingZero(mm)}:00`;\r\n }\r\n /**\r\n * Formats the time as HH:MM:SS from a given number of seconds.\r\n *\r\n * @param {number} totalSeconds - The total number of seconds to format.\r\n * @return {string} - The formatted time string.\r\n */\r\n function formatSecondsToFullTime(totalSeconds) {\r\n if (!totalSeconds) return '00:00:00';\r\n var hours = Math.floor(totalSeconds / 3600);\r\n var minutes = Math.floor((totalSeconds - hours * 3600) / 60);\r\n var seconds = totalSeconds % 60;\r\n\r\n return [_UTIL.padNumberWithZero(hours), _UTIL.padNumberWithZero(minutes), _UTIL.padNumberWithZero(seconds)].join(\r\n ':',\r\n );\r\n }\r\n /**\r\n * Calculates the time difference between two military time values.\r\n *\r\n * @param {string} startTime - The start time in military format (e.g., \"14:00\").\r\n * @param {string} endTime - The end time in military format (e.g., \"16:30\").\r\n * @param {boolean} [format=true] - If true, returns the time difference formatted as a string with hours and minutes.\r\n * If false, returns only the total minutes as a formatted string.\r\n * @returns {string} The time difference as a formatted string. If `format` is true, the difference is returned\r\n * in terms of hours and minutes (e.g., \"2 hrs 30 mins\"). If `format` is false, the difference\r\n * is returned as total minutes (e.g., \"150 mins\").\r\n *\r\n * @example\r\n * // Returns \"2 hrs 30 mins\"\r\n * getMilitaryTimeDifference(\"14:00\", \"16:30\", true);\r\n *\r\n * @example\r\n * // Returns \"150 mins\"\r\n * getMilitaryTimeDifference(\"14:00\", \"16:30\", false);\r\n */\r\n function getMilitaryTimeDifference(startTime, endTime, format = true) {\r\n const startDate = new Date(`1970-01-01T${startTime}`);\r\n const endDate = new Date(`1970-01-01T${endTime}`);\r\n\r\n const timeDifference = endDate - startDate;\r\n\r\n // Calculate total time in minutes\r\n const totalMinutes = Math.floor(timeDifference / 60000);\r\n\r\n if (format) {\r\n const hours = Math.floor(totalMinutes / 60);\r\n const minutes = totalMinutes % 60;\r\n\r\n const formattedTime = [];\r\n if (hours > 0) {\r\n formattedTime.push(`${hours} ${hours === 1 ? 'hr' : 'hrs'}`);\r\n }\r\n if (minutes > 0) {\r\n formattedTime.push(`${minutes} ${minutes === 1 ? 'min' : 'mins'}`);\r\n }\r\n\r\n return formattedTime.join(' ');\r\n } else {\r\n // Return total minutes in formatted string\r\n return `${totalMinutes} ${totalMinutes === 1 ? 'min' : 'mins'}`;\r\n }\r\n }\r\n /**\r\n *\r\n * @param {*} date\r\n * @returns\r\n */\r\n function removeTimestamp(date) {\r\n const splitDate = date.split(' ');\r\n return `${splitDate[0]}`;\r\n }\r\n\r\n return {\r\n getTodaysDateObj,\r\n getTodaysDateISOString,\r\n getDaysInMonth,\r\n addDays,\r\n addWeeks,\r\n addMonths,\r\n addYears,\r\n subDays,\r\n subWeeks,\r\n subYears,\r\n endOfWeek,\r\n startDayOfWeek,\r\n isAfter,\r\n isBefore,\r\n isEqual,\r\n isDateInCurrentWeek,\r\n isDateInFuture,\r\n checkFormat,\r\n formatISO,\r\n formateToISO,\r\n formateToStandard,\r\n eachDayOfInterval,\r\n // TIME\r\n convertFromMilitary,\r\n convertToMilitary,\r\n formatSecondsToFullTime,\r\n getMilitaryTimeDifference,\r\n removeTimestamp,\r\n };\r\n})();\r\n","// Layout API\r\n// Handles DOM Manipulation\r\nconst DOM = (function () {\r\n var BODY = document.body;\r\n var GRID_CONTAINER = document.querySelector('.grid-container');\r\n var ACTIONCENTER = document.getElementById('actioncenter');\r\n\r\n function autosizeTextarea(textarea) {\r\n // autosizeTextarea() takes a callback incase you need to call\r\n // a function after the textarea has been resized.\r\n // ---------------------------------------------------------------\r\n // if (textarea) {\r\n // textarea.style.height = textarea.scrollHeight + 'px';\r\n // textarea.addEventListener('input', () => {\r\n // textarea.style.height = 'auto';\r\n // textarea.style.height = textarea.scrollHeight + 'px';\r\n // });\r\n // return;\r\n // }\r\n\r\n var textareas = [].slice.call(document.querySelectorAll('textarea.autosize'));\r\n textareas.forEach(area => {\r\n area.style.height = area.scrollHeight + 'px';\r\n area.addEventListener('input', () => {\r\n area.style.height = 'auto';\r\n area.style.height = area.scrollHeight + 'px';\r\n });\r\n });\r\n }\r\n\r\n function clearActionCenter() {\r\n var actioncenter = document.getElementById('actioncenter');\r\n actioncenter.innerHTML = '';\r\n }\r\n\r\n function toggleHeaderOpacity() {\r\n var header = document.querySelector('.site-header');\r\n header.classList.toggle('fadeOut');\r\n }\r\n\r\n function toggleNavLayout() {\r\n if (isMobile) {\r\n // only for mobile navigation\r\n var actionBtn = document.querySelector('.floatingActionBtn');\r\n var nav = document.querySelector('.nav__mobile');\r\n if (actionBtn && !actionBtn.classList.contains('hidden')) {\r\n nav.classList.add('actionBtnActive');\r\n } else {\r\n nav.classList.remove('actionBtnActive');\r\n }\r\n }\r\n }\r\n\r\n function requestAnimFrame(cb) {\r\n return (\r\n window.requestAnimationFrame(cb) ||\r\n window.webkitRequestAnimationFrame(cb) ||\r\n window.mozRequestAnimationFrame(cb) ||\r\n window.msRequestAnimationFrame(cb) ||\r\n function (cb) {\r\n setTimeout(cb, 0);\r\n }\r\n );\r\n }\r\n\r\n function scrollToTopOfPage() {\r\n document.body.scrollTop = 0; // Safari\r\n document.documentElement.scrollTop = 0; // Chrome & IE\r\n }\r\n\r\n return {\r\n // dome elements\r\n BODY,\r\n GRID_CONTAINER,\r\n ACTIONCENTER,\r\n // functions\r\n autosizeTextarea,\r\n clearActionCenter,\r\n toggleHeaderOpacity,\r\n toggleNavLayout,\r\n requestAnimFrame,\r\n scrollToTopOfPage,\r\n };\r\n})();\r\n","/**\r\n * Copyright 2019 Google LLC. All Rights Reserved.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @name MarkerClusterer for Google Maps v3\r\n * @author Luke Mahe\r\n * @fileoverview\r\n * The library creates and manages per-zoom-level clusters for large amounts of\r\n * markers.\r\n */\r\n\r\n/**\r\n * A Marker Clusterer that clusters markers.\r\n *\r\n * @param {google.maps.Map} map The Google map to attach to.\r\n * @param {Array.=} opt_markers Optional markers to add to\r\n * the cluster.\r\n * @param {Object=} opt_options support the following options:\r\n * 'gridSize': (number) The grid size of a cluster in pixels.\r\n * 'maxZoom': (number) The maximum zoom level that a marker can be part of a\r\n * cluster.\r\n * 'zoomOnClick': (boolean) Whether the default behaviour of clicking on a\r\n * cluster is to zoom into it.\r\n * 'imagePath': (string) The base URL where the images representing\r\n * clusters will be found. The full URL will be:\r\n * {imagePath}[1-5].{imageExtension}\r\n * Default: '../images/m'.\r\n * 'imageExtension': (string) The suffix for images URL representing\r\n * clusters will be found. See _imagePath_ for details.\r\n * Default: 'png'.\r\n * 'averageCenter': (boolean) Whether the center of each cluster should be\r\n * the average of all markers in the cluster.\r\n * 'minimumClusterSize': (number) The minimum number of markers to be in a\r\n * cluster before the markers are hidden and a count\r\n * is shown.\r\n * 'zIndex': (number) the z-index of a cluster.\r\n * Default: google.maps.Marker.MAX_ZINDEX + 1\r\n * 'styles': (object) An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition': (string) The position of the backgound x, y.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n */\r\n\r\nclass MarkerClusterer {\r\n constructor(map, opt_markers, opt_options) {\r\n this.extend(MarkerClusterer, google.maps.OverlayView);\r\n this.map_ = map;\r\n \r\n /**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\n this.MARKER_CLUSTER_IMAGE_PATH_ = \"../images/m\";\r\n \r\n /**\r\n * The marker cluster image path.\r\n *\r\n * @type {string}\r\n * @private\r\n */\r\n this.MARKER_CLUSTER_IMAGE_EXTENSION_ = \"png\";\r\n /**\r\n * @type {Array.}\r\n * @private\r\n */\r\n this.markers_ = [];\r\n \r\n /**\r\n * @type {Array.}\r\n */\r\n this.clusters_ = [];\r\n \r\n this.sizes = [53, 56, 66, 78, 90];\r\n \r\n /**\r\n * @private\r\n */\r\n this.styles_ = [];\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.ready_ = false;\r\n \r\n var options = opt_options || {};\r\n \r\n /**\r\n * @type {number}\r\n */\r\n this.zIndex_ = options[\"zIndex\"] || google.maps.Marker.MAX_ZINDEX + 1;\r\n \r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.gridSize_ = options[\"gridSize\"] || 60;\r\n \r\n /**\r\n * @private\r\n */\r\n this.minClusterSize_ = options[\"minimumClusterSize\"] || 2;\r\n \r\n /**\r\n * @type {?number}\r\n * @private\r\n */\r\n this.maxZoom_ = options[\"maxZoom\"] || null;\r\n \r\n this.styles_ = options[\"styles\"] || [];\r\n \r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imagePath_ = options[\"imagePath\"] || this.MARKER_CLUSTER_IMAGE_PATH_;\r\n \r\n /**\r\n * @type {string}\r\n * @private\r\n */\r\n this.imageExtension_ =\r\n options[\"imageExtension\"] || this.MARKER_CLUSTER_IMAGE_EXTENSION_;\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.zoomOnClick_ = true;\r\n \r\n if (options[\"zoomOnClick\"] != undefined) {\r\n this.zoomOnClick_ = options[\"zoomOnClick\"];\r\n }\r\n \r\n /**\r\n * @type {boolean}\r\n * @private\r\n */\r\n this.averageCenter_ = false;\r\n \r\n if (options[\"averageCenter\"] != undefined) {\r\n this.averageCenter_ = options[\"averageCenter\"];\r\n }\r\n \r\n this.setupStyles_();\r\n \r\n this.setMap(map);\r\n \r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.prevZoom_ = this.map_.getZoom();\r\n \r\n // Add the map event listeners\r\n var that = this;\r\n google.maps.event.addListener(this.map_, \"zoom_changed\", function() {\r\n // Determines map type and prevent illegal zoom levels\r\n var zoom = that.map_.getZoom();\r\n var minZoom = that.map_.minZoom || 0;\r\n var maxZoom = Math.min(\r\n that.map_.maxZoom || 100,\r\n that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom\r\n );\r\n zoom = Math.min(Math.max(zoom, minZoom), maxZoom);\r\n \r\n if (that.prevZoom_ != zoom) {\r\n that.prevZoom_ = zoom;\r\n that.resetViewport();\r\n }\r\n });\r\n \r\n google.maps.event.addListener(this.map_, \"idle\", function() {\r\n that.redraw();\r\n });\r\n \r\n // Finally, add the markers\r\n if (\r\n opt_markers &&\r\n (opt_markers.length || Object.keys(opt_markers).length)\r\n ) {\r\n this.addMarkers(opt_markers, false);\r\n }\r\n }\r\n \r\n /**\r\n * Extends a objects prototype by anothers.\r\n *\r\n * @param {Object} obj1 The object to be extended.\r\n * @param {Object} obj2 The object to extend with.\r\n * @return {Object} The new extended object.\r\n * @ignore\r\n */\r\n extend(obj1, obj2) {\r\n return function(object) {\r\n for (var property in object.prototype) {\r\n this.prototype[property] = object.prototype[property];\r\n }\r\n return this;\r\n }.apply(obj1, [obj2]);\r\n }\r\n \r\n /**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\n onAdd() {\r\n this.setReady_(true);\r\n }\r\n \r\n /**\r\n * Implementaion of the interface method.\r\n * @ignore\r\n */\r\n draw() {}\r\n \r\n /**\r\n * Sets up the styles object.\r\n *\r\n * @private\r\n */\r\n setupStyles_() {\r\n if (this.styles_.length) {\r\n return;\r\n }\r\n \r\n for (var i = 0, size; (size = this.sizes[i]); i++) {\r\n this.styles_.push({\r\n url: this.imagePath_ + (i + 1) + \".\" + this.imageExtension_,\r\n height: size,\r\n width: size\r\n });\r\n }\r\n }\r\n \r\n /**\r\n * Fit the map to the bounds of the markers in the clusterer.\r\n */\r\n fitMapToMarkers() {\r\n var markers = this.getMarkers();\r\n var bounds = new google.maps.LatLngBounds();\r\n for (var i = 0, marker; (marker = markers[i]); i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n \r\n this.map_.fitBounds(bounds);\r\n }\r\n \r\n /**\r\n * @param {number} zIndex\r\n */\r\n setZIndex(zIndex) {\r\n this.zIndex_ = zIndex;\r\n }\r\n \r\n /**\r\n * @return {number}\r\n */\r\n getZIndex() {\r\n return this.zIndex_;\r\n }\r\n \r\n /**\r\n * Sets the styles.\r\n *\r\n * @param {Object} styles The style to set.\r\n */\r\n setStyles(styles) {\r\n this.styles_ = styles;\r\n }\r\n \r\n /**\r\n * Gets the styles.\r\n *\r\n * @return {Object} The styles object.\r\n */\r\n getStyles() {\r\n return this.styles_;\r\n }\r\n \r\n /**\r\n * Whether zoom on click is set.\r\n *\r\n * @return {boolean} True if zoomOnClick_ is set.\r\n */\r\n isZoomOnClick() {\r\n return this.zoomOnClick_;\r\n }\r\n \r\n /**\r\n * Whether average center is set.\r\n *\r\n * @return {boolean} True if averageCenter_ is set.\r\n */\r\n isAverageCenter() {\r\n return this.averageCenter_;\r\n }\r\n \r\n /**\r\n * Returns the array of markers in the clusterer.\r\n *\r\n * @return {Array.} The markers.\r\n */\r\n getMarkers() {\r\n return this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the number of markers in the clusterer\r\n *\r\n * @return {Number} The number of markers.\r\n */\r\n getTotalMarkers() {\r\n return this.markers_.length;\r\n }\r\n \r\n /**\r\n * Sets the max zoom for the clusterer.\r\n *\r\n * @param {number} maxZoom The max zoom level.\r\n */\r\n setMaxZoom(maxZoom) {\r\n this.maxZoom_ = maxZoom;\r\n }\r\n \r\n /**\r\n * Gets the max zoom for the clusterer.\r\n *\r\n * @return {number} The max zoom level.\r\n */\r\n getMaxZoom() {\r\n return this.maxZoom_;\r\n }\r\n \r\n /**\r\n * The function for calculating the cluster icon image.\r\n *\r\n * @param {Array.} markers The markers in the clusterer.\r\n * @param {number} numStyles The number of styles available.\r\n * @return {Object} A object properties: 'text' (string) and 'index' (number).\r\n * @private\r\n */\r\n calculator_(markers, numStyles) {\r\n var index = 0;\r\n var count = markers.length;\r\n var dv = count;\r\n while (dv !== 0) {\r\n dv = parseInt(dv / 10, 10);\r\n index++;\r\n }\r\n \r\n index = Math.min(index, numStyles);\r\n return {\r\n text: count,\r\n index: index\r\n };\r\n }\r\n \r\n /**\r\n * Set the calculator function.\r\n *\r\n * @param {function(Array, number)} calculator The function to set as the\r\n * calculator. The function should return a object properties:\r\n * 'text' (string) and 'index' (number).\r\n *\r\n */\r\n setCalculator(calculator) {\r\n this.calculator_ = calculator;\r\n }\r\n \r\n /**\r\n * Get the calculator function.\r\n *\r\n * @return {function(Array, number)} the calculator function.\r\n */\r\n getCalculator() {\r\n return this.calculator_;\r\n }\r\n \r\n /**\r\n * Add an array of markers to the clusterer.\r\n *\r\n * @param {Array.} markers The markers to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\n addMarkers(markers, opt_nodraw) {\r\n if (markers.length) {\r\n for (let i = 0, marker; (marker = markers[i]); i++) {\r\n this.pushMarkerTo_(marker);\r\n }\r\n } else if (Object.keys(markers).length) {\r\n for (let marker in markers) {\r\n this.pushMarkerTo_(markers[marker]);\r\n }\r\n }\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n }\r\n \r\n /**\r\n * Pushes a marker to the clusterer.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\n pushMarkerTo_(marker) {\r\n marker.isAdded = false;\r\n if (marker[\"draggable\"]) {\r\n // If the marker is draggable add a listener so we update the clusters on\r\n // the drag end.\r\n var that = this;\r\n google.maps.event.addListener(marker, \"dragend\", function() {\r\n marker.isAdded = false;\r\n that.repaint();\r\n });\r\n }\r\n this.markers_.push(marker);\r\n }\r\n \r\n /**\r\n * Adds a marker to the clusterer and redraws if needed.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @param {boolean=} opt_nodraw Whether to redraw the clusters.\r\n */\r\n addMarker(marker, opt_nodraw) {\r\n this.pushMarkerTo_(marker);\r\n if (!opt_nodraw) {\r\n this.redraw();\r\n }\r\n }\r\n \r\n /**\r\n * Removes a marker and returns true if removed, false if not\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove\r\n * @return {boolean} Whether the marker was removed or not\r\n * @private\r\n */\r\n removeMarker_(marker) {\r\n var index = -1;\r\n if (this.markers_.indexOf) {\r\n index = this.markers_.indexOf(marker);\r\n } else {\r\n for (var i = 0, m; (m = this.markers_[i]); i++) {\r\n if (m == marker) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n \r\n if (index == -1) {\r\n // Marker is not in our list of markers.\r\n return false;\r\n }\r\n \r\n marker.setMap(null);\r\n \r\n this.markers_.splice(index, 1);\r\n \r\n return true;\r\n }\r\n \r\n /**\r\n * Remove a marker from the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n * @return {boolean} True if the marker was removed.\r\n */\r\n removeMarker(marker, opt_nodraw) {\r\n var removed = this.removeMarker_(marker);\r\n \r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n \r\n /**\r\n * Removes an array of markers from the cluster.\r\n *\r\n * @param {Array.} markers The markers to remove.\r\n * @param {boolean=} opt_nodraw Optional boolean to force no redraw.\r\n */\r\n removeMarkers(markers, opt_nodraw) {\r\n // create a local copy of markers if required\r\n // (removeMarker_ modifies the getMarkers() array in place)\r\n var markersCopy = markers === this.getMarkers() ? markers.slice() : markers;\r\n var removed = false;\r\n \r\n for (var i = 0, marker; (marker = markersCopy[i]); i++) {\r\n var r = this.removeMarker_(marker);\r\n removed = removed || r;\r\n }\r\n \r\n if (!opt_nodraw && removed) {\r\n this.resetViewport();\r\n this.redraw();\r\n return true;\r\n }\r\n }\r\n \r\n /**\r\n * Sets the clusterer's ready state.\r\n *\r\n * @param {boolean} ready The state.\r\n * @private\r\n */\r\n setReady_(ready) {\r\n if (!this.ready_) {\r\n this.ready_ = ready;\r\n this.createClusters_();\r\n }\r\n }\r\n \r\n /**\r\n * Returns the number of clusters in the clusterer.\r\n *\r\n * @return {number} The number of clusters.\r\n */\r\n getTotalClusters() {\r\n return this.clusters_.length;\r\n }\r\n \r\n /**\r\n * Returns the google map that the clusterer is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\n getMap() {\r\n return this.map_;\r\n }\r\n \r\n /**\r\n * Sets the google map that the clusterer is associated with.\r\n *\r\n * @param {google.maps.Map} map The map.\r\n */\r\n setMap(map) {\r\n this.map_ = map;\r\n }\r\n \r\n /**\r\n * Returns the size of the grid.\r\n *\r\n * @return {number} The grid size.\r\n */\r\n getGridSize() {\r\n return this.gridSize_;\r\n }\r\n \r\n /**\r\n * Sets the size of the grid.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\n setGridSize(size) {\r\n this.gridSize_ = size;\r\n }\r\n \r\n /**\r\n * Returns the min cluster size.\r\n *\r\n * @return {number} The grid size.\r\n */\r\n getMinClusterSize() {\r\n return this.minClusterSize_;\r\n }\r\n \r\n /**\r\n * Sets the min cluster size.\r\n *\r\n * @param {number} size The grid size.\r\n */\r\n setMinClusterSize(size) {\r\n this.minClusterSize_ = size;\r\n }\r\n \r\n /**\r\n * Extends a bounds object by the grid size.\r\n *\r\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\r\n * @return {google.maps.LatLngBounds} The extended bounds.\r\n */\r\n getExtendedBounds(bounds) {\r\n var projection = this.getProjection();\r\n \r\n // Turn the bounds into latlng.\r\n var tr = new google.maps.LatLng(\r\n bounds.getNorthEast().lat(),\r\n bounds.getNorthEast().lng()\r\n );\r\n var bl = new google.maps.LatLng(\r\n bounds.getSouthWest().lat(),\r\n bounds.getSouthWest().lng()\r\n );\r\n \r\n // Convert the points to pixels and the extend out by the grid size.\r\n var trPix = projection.fromLatLngToDivPixel(tr);\r\n trPix.x += this.gridSize_;\r\n trPix.y -= this.gridSize_;\r\n \r\n var blPix = projection.fromLatLngToDivPixel(bl);\r\n blPix.x -= this.gridSize_;\r\n blPix.y += this.gridSize_;\r\n \r\n // Convert the pixel points back to LatLng\r\n var ne = projection.fromDivPixelToLatLng(trPix);\r\n var sw = projection.fromDivPixelToLatLng(blPix);\r\n \r\n // Extend the bounds to contain the new bounds.\r\n bounds.extend(ne);\r\n bounds.extend(sw);\r\n \r\n return bounds;\r\n }\r\n \r\n /**\r\n * Determins if a marker is contained in a bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\r\n * @return {boolean} True if the marker is in the bounds.\r\n * @private\r\n */\r\n isMarkerInBounds_(marker, bounds) {\r\n return bounds.contains(marker.getPosition());\r\n }\r\n \r\n /**\r\n * Clears all clusters and markers from the clusterer.\r\n */\r\n clearMarkers() {\r\n this.resetViewport(true);\r\n \r\n // Set the markers a empty array.\r\n this.markers_ = [];\r\n }\r\n \r\n /**\r\n * Clears all existing clusters and recreates them.\r\n * @param {boolean} opt_hide To also hide the marker.\r\n */\r\n resetViewport(opt_hide) {\r\n // Remove all the clusters\r\n for (let i = 0, cluster; (cluster = this.clusters_[i]); i++) {\r\n cluster.remove();\r\n }\r\n \r\n // Reset the markers to not be added and to be invisible.\r\n for (let i = 0, marker; (marker = this.markers_[i]); i++) {\r\n marker.isAdded = false;\r\n if (opt_hide) {\r\n marker.setMap(null);\r\n }\r\n }\r\n \r\n this.clusters_ = [];\r\n }\r\n \r\n /**\r\n *\r\n */\r\n repaint() {\r\n var oldClusters = this.clusters_.slice();\r\n this.clusters_.length = 0;\r\n this.resetViewport();\r\n this.redraw();\r\n \r\n // Remove the old clusters.\r\n // Do it in a timeout so the other clusters have been drawn first.\r\n setTimeout(function() {\r\n for (var i = 0, cluster; (cluster = oldClusters[i]); i++) {\r\n cluster.remove();\r\n }\r\n }, 0);\r\n }\r\n \r\n /**\r\n * Redraws the clusters.\r\n */\r\n redraw() {\r\n this.createClusters_();\r\n }\r\n \r\n /**\r\n * Calculates the distance between two latlng locations in km.\r\n * @see http://www.movable-type.co.uk/scripts/latlong.html\r\n *\r\n * @param {google.maps.LatLng} p1 The first lat lng point.\r\n * @param {google.maps.LatLng} p2 The second lat lng point.\r\n * @return {number} The distance between the two points in km.\r\n * @private\r\n */\r\n distanceBetweenPoints_(p1, p2) {\r\n if (!p1 || !p2) {\r\n return 0;\r\n }\r\n \r\n var R = 6371; // Radius of the Earth in km\r\n var dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\r\n var dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\r\n var a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos((p1.lat() * Math.PI) / 180) *\r\n Math.cos((p2.lat() * Math.PI) / 180) *\r\n Math.sin(dLon / 2) *\r\n Math.sin(dLon / 2);\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c;\r\n return d;\r\n }\r\n \r\n /**\r\n * Add a marker to a cluster, or creates a new cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @private\r\n */\r\n addToClosestCluster_(marker) {\r\n var distance = 40000; // Some large number\r\n var clusterToAddTo = null;\r\n for (var i = 0, cluster; (cluster = this.clusters_[i]); i++) {\r\n var center = cluster.getCenter();\r\n if (center) {\r\n var d = this.distanceBetweenPoints_(center, marker.getPosition());\r\n if (d < distance) {\r\n distance = d;\r\n clusterToAddTo = cluster;\r\n }\r\n }\r\n }\r\n \r\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\r\n clusterToAddTo.addMarker(marker);\r\n } else {\r\n var newCluster = new Cluster(this);\r\n newCluster.addMarker(marker);\r\n this.clusters_.push(newCluster);\r\n }\r\n }\r\n \r\n /**\r\n * Creates the clusters.\r\n *\r\n * @private\r\n */\r\n createClusters_() {\r\n if (!this.ready_) {\r\n return;\r\n }\r\n \r\n // Get our current map view bounds.\r\n // Create a new bounds object so we don't affect the map.\r\n var mapBounds = new google.maps.LatLngBounds(\r\n this.map_.getBounds().getSouthWest(),\r\n this.map_.getBounds().getNorthEast()\r\n );\r\n var bounds = this.getExtendedBounds(mapBounds);\r\n \r\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\r\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\r\n this.addToClosestCluster_(marker);\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * A cluster that contains markers.\r\n *\r\n * @param {MarkerClusterer} markerClusterer The markerclusterer that this\r\n * cluster is associated with.\r\n * @constructor\r\n * @ignore\r\n */\r\n class Cluster {\r\n constructor(markerClusterer) {\r\n this.markerClusterer_ = markerClusterer;\r\n this.map_ = markerClusterer.getMap();\r\n this.gridSize_ = markerClusterer.getGridSize();\r\n this.minClusterSize_ = markerClusterer.getMinClusterSize();\r\n this.averageCenter_ = markerClusterer.isAverageCenter();\r\n this.center_ = null;\r\n this.markers_ = [];\r\n this.bounds_ = null;\r\n this.clusterIcon_ = new ClusterIcon(\r\n this,\r\n markerClusterer.getStyles(),\r\n markerClusterer.getGridSize()\r\n );\r\n }\r\n \r\n /**\r\n * Determins if a marker is already added to the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker is already added.\r\n */\r\n isMarkerAlreadyAdded(marker) {\r\n if (this.markers_.indexOf) {\r\n return this.markers_.indexOf(marker) != -1;\r\n } else {\r\n for (var i = 0, m; (m = this.markers_[i]); i++) {\r\n if (m == marker) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n \r\n /**\r\n * Add a marker the cluster.\r\n *\r\n * @param {google.maps.Marker} marker The marker to add.\r\n * @return {boolean} True if the marker was added.\r\n */\r\n addMarker(marker) {\r\n if (this.isMarkerAlreadyAdded(marker)) {\r\n return false;\r\n }\r\n \r\n if (!this.center_) {\r\n this.center_ = marker.getPosition();\r\n this.calculateBounds_();\r\n } else {\r\n if (this.averageCenter_) {\r\n var l = this.markers_.length + 1;\r\n var lat =\r\n (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\r\n var lng =\r\n (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\r\n this.center_ = new google.maps.LatLng(lat, lng);\r\n this.calculateBounds_();\r\n }\r\n }\r\n \r\n marker.isAdded = true;\r\n this.markers_.push(marker);\r\n \r\n var len = this.markers_.length;\r\n if (len < this.minClusterSize_ && marker.getMap() != this.map_) {\r\n // Min cluster size not reached so show the marker.\r\n marker.setMap(this.map_);\r\n }\r\n \r\n if (len == this.minClusterSize_) {\r\n // Hide the markers that were showing.\r\n for (var i = 0; i < len; i++) {\r\n this.markers_[i].setMap(null);\r\n }\r\n }\r\n \r\n if (len >= this.minClusterSize_) {\r\n marker.setMap(null);\r\n }\r\n \r\n this.updateIcon();\r\n return true;\r\n }\r\n \r\n /**\r\n * Returns the marker clusterer that the cluster is associated with.\r\n *\r\n * @return {MarkerClusterer} The associated marker clusterer.\r\n */\r\n getMarkerClusterer() {\r\n return this.markerClusterer_;\r\n }\r\n \r\n /**\r\n * Returns the bounds of the cluster.\r\n *\r\n * @return {google.maps.LatLngBounds} the cluster bounds.\r\n */\r\n getBounds() {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n var markers = this.getMarkers();\r\n for (var i = 0, marker; (marker = markers[i]); i++) {\r\n bounds.extend(marker.getPosition());\r\n }\r\n return bounds;\r\n }\r\n \r\n /**\r\n * Removes the cluster\r\n */\r\n remove() {\r\n this.clusterIcon_.remove();\r\n this.markers_.length = 0;\r\n delete this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the number of markers in the cluster.\r\n *\r\n * @return {number} The number of markers in the cluster.\r\n */\r\n getSize() {\r\n return this.markers_.length;\r\n }\r\n \r\n /**\r\n * Returns a list of the markers in the cluster.\r\n *\r\n * @return {Array.} The markers in the cluster.\r\n */\r\n getMarkers() {\r\n return this.markers_;\r\n }\r\n \r\n /**\r\n * Returns the center of the cluster.\r\n *\r\n * @return {google.maps.LatLng} The cluster center.\r\n */\r\n getCenter() {\r\n return this.center_;\r\n }\r\n \r\n /**\r\n * Calculated the extended bounds of the cluster with the grid.\r\n *\r\n * @private\r\n */\r\n calculateBounds_() {\r\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\r\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\r\n }\r\n \r\n /**\r\n * Determines if a marker lies in the clusters bounds.\r\n *\r\n * @param {google.maps.Marker} marker The marker to check.\r\n * @return {boolean} True if the marker lies in the bounds.\r\n */\r\n isMarkerInClusterBounds(marker) {\r\n return this.bounds_.contains(marker.getPosition());\r\n }\r\n \r\n /**\r\n * Returns the map that the cluster is associated with.\r\n *\r\n * @return {google.maps.Map} The map.\r\n */\r\n getMap() {\r\n return this.map_;\r\n }\r\n \r\n /**\r\n * Updates the cluster icon\r\n */\r\n updateIcon() {\r\n var zoom = this.map_.getZoom();\r\n var mz = this.markerClusterer_.getMaxZoom();\r\n \r\n if (mz && zoom > mz) {\r\n // The zoom is greater than our max zoom so show all the markers in cluster.\r\n for (var i = 0, marker; (marker = this.markers_[i]); i++) {\r\n marker.setMap(this.map_);\r\n }\r\n return;\r\n }\r\n \r\n if (this.markers_.length < this.minClusterSize_) {\r\n // Min cluster size not yet reached.\r\n this.clusterIcon_.hide();\r\n return;\r\n }\r\n \r\n var numStyles = this.markerClusterer_.getStyles().length;\r\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\r\n this.clusterIcon_.setCenter(this.center_);\r\n this.clusterIcon_.setSums(sums);\r\n this.clusterIcon_.show();\r\n }\r\n }\r\n \r\n /**\r\n * A cluster icon\r\n *\r\n * @param {Cluster} cluster The cluster to be associated with.\r\n * @param {Object} styles An object that has style properties:\r\n * 'url': (string) The image url.\r\n * 'height': (number) The image height.\r\n * 'width': (number) The image width.\r\n * 'anchor': (Array) The anchor position of the label text.\r\n * 'textColor': (string) The text color.\r\n * 'textSize': (number) The text size.\r\n * 'backgroundPosition: (string) The background postition x, y.\r\n * @param {number=} opt_padding Optional padding to apply to the cluster icon.\r\n * @constructor\r\n * @extends google.maps.OverlayView\r\n * @ignore\r\n */\r\n class ClusterIcon {\r\n constructor(cluster, styles, opt_padding) {\r\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\r\n \r\n this.styles_ = styles;\r\n this.padding_ = opt_padding || 0;\r\n this.cluster_ = cluster;\r\n this.center_ = null;\r\n this.map_ = cluster.getMap();\r\n this.div_ = null;\r\n this.sums_ = null;\r\n this.visible_ = false;\r\n \r\n this.setMap(this.map_);\r\n }\r\n \r\n /**\r\n * Triggers the clusterclick event and zoom's if the option is set.\r\n */\r\n triggerClusterClick() {\r\n var clusterBounds = this.cluster_.getBounds();\r\n var markerClusterer = this.cluster_.getMarkerClusterer();\r\n \r\n // Trigger the clusterclick event.\r\n google.maps.event.trigger(\r\n markerClusterer.map_,\r\n \"clusterclick\",\r\n this.cluster_\r\n );\r\n \r\n if (markerClusterer.isZoomOnClick()) {\r\n // Zoom into the cluster.\r\n this.map_.fitBounds(clusterBounds);\r\n this.map_.setCenter(clusterBounds.getCenter());\r\n }\r\n }\r\n \r\n /**\r\n * Adding the cluster icon to the dom.\r\n * @ignore\r\n */\r\n onAdd() {\r\n this.div_ = document.createElement(\"DIV\");\r\n if (this.visible_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.cssText = this.createCss(pos);\r\n this.div_.innerHTML = this.sums_.text;\r\n }\r\n \r\n var panes = this.getPanes();\r\n panes.overlayMouseTarget.appendChild(this.div_);\r\n \r\n var that = this;\r\n google.maps.event.addDomListener(this.div_, \"click\", function() {\r\n that.triggerClusterClick();\r\n });\r\n }\r\n \r\n /**\r\n * Returns the position to place the div dending on the latlng.\r\n *\r\n * @param {google.maps.LatLng} latlng The position in latlng.\r\n * @return {google.maps.Point} The position in pixels.\r\n * @private\r\n */\r\n getPosFromLatLng_(latlng) {\r\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\r\n pos.x -= parseInt(this.width_ / 2, 10);\r\n pos.y -= parseInt(this.height_ / 2, 10);\r\n return pos;\r\n }\r\n \r\n /**\r\n * Draw the icon.\r\n * @ignore\r\n */\r\n draw() {\r\n if (this.visible_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.top = pos.y + \"px\";\r\n this.div_.style.left = pos.x + \"px\";\r\n }\r\n }\r\n \r\n /**\r\n * Hide the icon.\r\n */\r\n hide() {\r\n if (this.div_) {\r\n this.div_.style.display = \"none\";\r\n }\r\n this.visible_ = false;\r\n }\r\n \r\n /**\r\n * Position and show the icon.\r\n */\r\n show() {\r\n if (this.div_) {\r\n var pos = this.getPosFromLatLng_(this.center_);\r\n this.div_.style.cssText = this.createCss(pos);\r\n this.div_.style.display = \"\";\r\n }\r\n this.visible_ = true;\r\n }\r\n \r\n /**\r\n * Remove the icon from the map\r\n */\r\n remove() {\r\n this.setMap(null);\r\n }\r\n \r\n /**\r\n * Implementation of the onRemove interface.\r\n * @ignore\r\n */\r\n onRemove() {\r\n if (this.div_ && this.div_.parentNode) {\r\n this.hide();\r\n this.div_.parentNode.removeChild(this.div_);\r\n this.div_ = null;\r\n }\r\n }\r\n \r\n /**\r\n * Set the sums of the icon.\r\n *\r\n * @param {Object} sums The sums containing:\r\n * 'text': (string) The text to display in the icon.\r\n * 'index': (number) The style index of the icon.\r\n */\r\n setSums(sums) {\r\n this.sums_ = sums;\r\n this.text_ = sums.text;\r\n this.index_ = sums.index;\r\n if (this.div_) {\r\n this.div_.innerHTML = sums.text;\r\n }\r\n \r\n this.useStyle();\r\n }\r\n \r\n /**\r\n * Sets the icon to the the styles.\r\n */\r\n useStyle() {\r\n var index = Math.max(0, this.sums_.index - 1);\r\n index = Math.min(this.styles_.length - 1, index);\r\n var style = this.styles_[index];\r\n this.url_ = style[\"url\"];\r\n this.height_ = style[\"height\"];\r\n this.width_ = style[\"width\"];\r\n this.textColor_ = style[\"textColor\"];\r\n this.anchor_ = style[\"anchor\"];\r\n this.textSize_ = style[\"textSize\"];\r\n this.backgroundPosition_ = style[\"backgroundPosition\"];\r\n }\r\n \r\n /**\r\n * Sets the center of the icon.\r\n *\r\n * @param {google.maps.LatLng} center The latlng to set as the center.\r\n */\r\n setCenter(center) {\r\n this.center_ = center;\r\n }\r\n \r\n /**\r\n * Create the css text based on the position of the icon.\r\n *\r\n * @param {google.maps.Point} pos The position.\r\n * @return {string} The css style text.\r\n */\r\n createCss(pos) {\r\n var style = [];\r\n style.push(\"z-index:\" + this.cluster_.markerClusterer_.getZIndex() + \";\");\r\n style.push(\"background-image:url(\" + this.url_ + \");\");\r\n var backgroundPosition = this.backgroundPosition_\r\n ? this.backgroundPosition_\r\n : \"0 0\";\r\n style.push(\"background-position:\" + backgroundPosition + \";\");\r\n \r\n if (typeof this.anchor_ === \"object\") {\r\n if (\r\n typeof this.anchor_[0] === \"number\" &&\r\n this.anchor_[0] > 0 &&\r\n this.anchor_[0] < this.height_\r\n ) {\r\n style.push(\r\n \"height:\" +\r\n (this.height_ - this.anchor_[0]) +\r\n \"px; padding-top:\" +\r\n this.anchor_[0] +\r\n \"px;\"\r\n );\r\n } else {\r\n style.push(\r\n \"height:\" + this.height_ + \"px; line-height:\" + this.height_ + \"px;\"\r\n );\r\n }\r\n if (\r\n typeof this.anchor_[1] === \"number\" &&\r\n this.anchor_[1] > 0 &&\r\n this.anchor_[1] < this.width_\r\n ) {\r\n style.push(\r\n \"width:\" +\r\n (this.width_ - this.anchor_[1]) +\r\n \"px; padding-left:\" +\r\n this.anchor_[1] +\r\n \"px;\"\r\n );\r\n } else {\r\n style.push(\"width:\" + this.width_ + \"px; text-align:center;\");\r\n }\r\n } else {\r\n style.push(\r\n \"height:\" +\r\n this.height_ +\r\n \"px; line-height:\" +\r\n this.height_ +\r\n \"px; width:\" +\r\n this.width_ +\r\n \"px; text-align:center;\"\r\n );\r\n }\r\n \r\n var txtColor = this.textColor_ ? this.textColor_ : \"black\";\r\n var txtSize = this.textSize_ ? this.textSize_ : 11;\r\n \r\n style.push(\r\n \"cursor:pointer; top:\" +\r\n pos.y +\r\n \"px; left:\" +\r\n pos.x +\r\n \"px; color:\" +\r\n txtColor +\r\n \"; position:absolute; font-size:\" +\r\n txtSize +\r\n \"px; font-family:Arial,sans-serif; font-weight:bold\"\r\n );\r\n return style.join(\"\");\r\n }\r\n }\r\n \r\n// export default MarkerClusterer;","(function (global, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(['exports'], factory);\r\n } else if (typeof exports !== \"undefined\") {\r\n factory(exports);\r\n } else {\r\n var mod = {\r\n exports: {}\r\n };\r\n factory(mod.exports);\r\n global.bodyScrollLock = mod.exports;\r\n }\r\n})(this, function (exports) {\r\n 'use strict';\r\n\r\n Object.defineProperty(exports, \"__esModule\", {\r\n value: true\r\n });\r\n\r\n function _toConsumableArray(arr) {\r\n if (Array.isArray(arr)) {\r\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\r\n arr2[i] = arr[i];\r\n }\r\n\r\n return arr2;\r\n } else {\r\n return Array.from(arr);\r\n }\r\n }\r\n\r\n // Older browsers don't support event options, feature detect it.\r\n\r\n // Adopted and modified solution from Bohdan Didukh (2017)\r\n // https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\r\n\r\n var hasPassiveEvents = false;\r\n if (typeof window !== 'undefined') {\r\n var passiveTestOptions = {\r\n get passive() {\r\n hasPassiveEvents = true;\r\n return undefined;\r\n }\r\n };\r\n window.addEventListener('testPassive', null, passiveTestOptions);\r\n window.removeEventListener('testPassive', null, passiveTestOptions);\r\n }\r\n\r\n var isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && /iP(ad|hone|od)/.test(window.navigator.platform);\r\n\r\n\r\n var locks = [];\r\n var documentListenerAdded = false;\r\n var initialClientY = -1;\r\n var previousBodyOverflowSetting = void 0;\r\n var previousBodyPaddingRight = void 0;\r\n\r\n // returns true if `el` should be allowed to receive touchmove events\r\n var allowTouchMove = function allowTouchMove(el) {\r\n return locks.some(function (lock) {\r\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n };\r\n\r\n var preventDefault = function preventDefault(rawEvent) {\r\n var e = rawEvent || window.event;\r\n\r\n // For the case whereby consumers adds a touchmove event listener to document.\r\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\r\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\r\n // the touchmove event on document will break.\r\n if (allowTouchMove(e.target)) {\r\n return true;\r\n }\r\n\r\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom)\r\n if (e.touches.length > 1) return true;\r\n\r\n if (e.preventDefault) e.preventDefault();\r\n\r\n return false;\r\n };\r\n\r\n var setOverflowHidden = function setOverflowHidden(options) {\r\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\r\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\r\n setTimeout(function () {\r\n // If previousBodyPaddingRight is already set, don't set it again.\r\n if (previousBodyPaddingRight === undefined) {\r\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\r\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\r\n\r\n if (_reserveScrollBarGap && scrollBarGap > 0) {\r\n previousBodyPaddingRight = document.body.style.paddingRight;\r\n document.body.style.paddingRight = scrollBarGap + 'px';\r\n }\r\n }\r\n\r\n // If previousBodyOverflowSetting is already set, don't set it again.\r\n if (previousBodyOverflowSetting === undefined) {\r\n previousBodyOverflowSetting = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n }\r\n });\r\n };\r\n\r\n var restoreOverflowSetting = function restoreOverflowSetting() {\r\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\r\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\r\n setTimeout(function () {\r\n if (previousBodyPaddingRight !== undefined) {\r\n document.body.style.paddingRight = previousBodyPaddingRight;\r\n\r\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\r\n // can be set again.\r\n previousBodyPaddingRight = undefined;\r\n }\r\n\r\n if (previousBodyOverflowSetting !== undefined) {\r\n document.body.style.overflow = previousBodyOverflowSetting;\r\n\r\n // Restore previousBodyOverflowSetting to undefined\r\n // so setOverflowHidden knows it can be set again.\r\n previousBodyOverflowSetting = undefined;\r\n }\r\n });\r\n };\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\r\n var isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\r\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\r\n };\r\n\r\n var handleScroll = function handleScroll(event, targetElement) {\r\n var clientY = event.targetTouches[0].clientY - initialClientY;\r\n\r\n if (allowTouchMove(event.target)) {\r\n return false;\r\n }\r\n\r\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\r\n // element is at the top of its scroll\r\n return preventDefault(event);\r\n }\r\n\r\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\r\n // element is at the top of its scroll\r\n return preventDefault(event);\r\n }\r\n\r\n event.stopPropagation();\r\n return true;\r\n };\r\n\r\n var disableBodyScroll = exports.disableBodyScroll = function disableBodyScroll(targetElement, options) {\r\n if (isIosDevice) {\r\n // targetElement must be provided, and disableBodyScroll must not have been\r\n // called on this targetElement before.\r\n if (!targetElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\r\n return;\r\n }\r\n\r\n if (targetElement && !locks.some(function (lock) {\r\n return lock.targetElement === targetElement;\r\n })) {\r\n var lock = {\r\n targetElement: targetElement,\r\n options: options || {}\r\n };\r\n\r\n locks = [].concat(_toConsumableArray(locks), [lock]);\r\n\r\n targetElement.ontouchstart = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n // detect single touch\r\n initialClientY = event.targetTouches[0].clientY;\r\n }\r\n };\r\n targetElement.ontouchmove = function (event) {\r\n if (event.targetTouches.length === 1) {\r\n // detect single touch\r\n handleScroll(event, targetElement);\r\n }\r\n };\r\n\r\n if (!documentListenerAdded) {\r\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n documentListenerAdded = true;\r\n }\r\n }\r\n } else {\r\n setOverflowHidden(options);\r\n var _lock = {\r\n targetElement: targetElement,\r\n options: options || {}\r\n };\r\n\r\n locks = [].concat(_toConsumableArray(locks), [_lock]);\r\n }\r\n };\r\n\r\n var clearAllBodyScrollLocks = exports.clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\r\n if (isIosDevice) {\r\n // Clear all locks ontouchstart/ontouchmove handlers, and the references\r\n locks.forEach(function (lock) {\r\n lock.targetElement.ontouchstart = null;\r\n lock.targetElement.ontouchmove = null;\r\n });\r\n\r\n if (documentListenerAdded) {\r\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n documentListenerAdded = false;\r\n }\r\n\r\n locks = [];\r\n\r\n // Reset initial clientY\r\n initialClientY = -1;\r\n } else {\r\n restoreOverflowSetting();\r\n locks = [];\r\n }\r\n };\r\n\r\n var enableBodyScroll = exports.enableBodyScroll = function enableBodyScroll(targetElement) {\r\n if (isIosDevice) {\r\n if (!targetElement) {\r\n // eslint-disable-next-line no-console\r\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\r\n return;\r\n }\r\n\r\n targetElement.ontouchstart = null;\r\n targetElement.ontouchmove = null;\r\n\r\n locks = locks.filter(function (lock) {\r\n return lock.targetElement !== targetElement;\r\n });\r\n\r\n if (documentListenerAdded && locks.length === 0) {\r\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\r\n\r\n documentListenerAdded = false;\r\n }\r\n } else {\r\n locks = locks.filter(function (lock) {\r\n return lock.targetElement !== targetElement;\r\n });\r\n if (!locks.length) {\r\n restoreOverflowSetting();\r\n }\r\n }\r\n };\r\n});\r\n","const SPEECH = (function () {\r\n let speechConfig;\r\n let audioConfig;\r\n\r\n // function addSTTSingleShotEvent(btnElement, textField) {\r\n // function eventFunction() {\r\n // const recognizer = new SpeechSDK.SpeechRecognizer(\r\n // speechConfig,\r\n // audioConfig,\r\n // );\r\n // recognizer.recognizeOnceAsync(result => {\r\n // btnElement.classList.remove('disabled');\r\n // switch (result.reason) {\r\n // case SpeechSDK.ResultReason.RecognizedSpeech:\r\n // textField.firstElementChild.value += `${result.text} `;\r\n // break;\r\n // case SpeechSDK.ResultReason.NoMatch:\r\n // console.log('NOMATCH: Speech could not be recognized.');\r\n // break;\r\n // case SpeechSDK.ResultReason.Canceled:\r\n // const cancellation = CancellationDetails.fromResult(result);\r\n // console.log(`CANCELED: Reason=${cancellation.reason}`);\r\n\r\n // if (cancellation.reason == CancellationReason.Error) {\r\n // console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);\r\n // console.log(\r\n // `CANCELED: ErrorDetails=${cancellation.errorDetails}`,\r\n // );\r\n // console.log('CANCELED: Did you update the subscription info?');\r\n // }\r\n // break;\r\n // }\r\n // recognizer.close();\r\n // recognizer = undefined;\r\n // });\r\n // }\r\n // btnElement.addEventListener('click', event => {\r\n // btnElement.classList.add('disabled');\r\n // eventFunction();\r\n // });\r\n // }\r\n\r\n function addSTTContinuousRecEvent(btnElement, textField) {\r\n let listening = false;\r\n\r\n const continuousListening = (function () {\r\n const recognizer = new SpeechSDK.SpeechRecognizer(speechConfig, audioConfig);\r\n\r\n recognizer.recognizing = (s, e) => {};\r\n\r\n recognizer.recognized = (s, e) => {\r\n if (e.result.reason == SpeechSDK.ResultReason.RecognizedSpeech) {\r\n textField.firstElementChild.value += `${e.result.text} `;\r\n textField.firstChild.dispatchEvent(new Event('keyup', { bubbles: true }));\r\n // input event for autosize\r\n textField.firstChild.dispatchEvent(new Event('input', { bubbles: true }));\r\n } else if (e.result.reason == SpeechSDK.ResultReason.NoMatch) {\r\n console.log('NOMATCH: Speech could not be recognized.');\r\n }\r\n };\r\n\r\n recognizer.canceled = (s, e) => {\r\n console.log(`CANCELED: Reason=${e.reason}`);\r\n\r\n if (e.reason == CancellationReason.Error) {\r\n console.log(`\"CANCELED: ErrorCode=${e.errorCode}`);\r\n console.log(`\"CANCELED: ErrorDetails=${e.errorDetails}`);\r\n console.log('CANCELED: Did you update the subscription info?');\r\n }\r\n };\r\n\r\n function start(callback, errorCB) {\r\n recognizer.startContinuousRecognitionAsync(callback, errorCB);\r\n }\r\n function stop(callback, errorCB) {\r\n recognizer.stopContinuousRecognitionAsync(callback, errorCB);\r\n }\r\n function close() {\r\n recognizer.close();\r\n }\r\n return {\r\n start,\r\n stop,\r\n close,\r\n };\r\n })();\r\n\r\n btnElement.addEventListener('click', () => {\r\n listening = !listening;\r\n if (listening) {\r\n continuousListening.start(\r\n () => {\r\n btnElement.classList.add('stt_listening');\r\n btnElement.innerHTML = icons.microphoneFilled;\r\n },\r\n error => console.log(error),\r\n );\r\n } else {\r\n continuousListening.stop(\r\n () => {\r\n btnElement.classList.remove('stt_listening');\r\n btnElement.innerHTML = icons.microphone;\r\n },\r\n error => console.log(error),\r\n );\r\n }\r\n });\r\n\r\n //--------------\r\n // Mutation Observer for leaving section to disconnect STT API Call\r\n const observNode = document.getElementById('actioncenter');\r\n const config = { attributes: true };\r\n let observer;\r\n const callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n continuousListening.close();\r\n }\r\n }\r\n }\r\n };\r\n observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n //-------------------\r\n }\r\n\r\n function init() {\r\n try {\r\n speechConfig = SpeechSDK.SpeechConfig.fromSubscription($.session.azureSTTApi, 'eastus');\r\n speechConfig.speechRecognitionLanguage = 'en-US';\r\n speechConfig.enableDictation();\r\n speechConfig.setServiceProperty('punctuation', 'explicit', SpeechSDK.ServicePropertyChannel.UriQueryParameter);\r\n audioConfig = SpeechSDK.AudioConfig.fromDefaultMicrophoneInput();\r\n return true;\r\n } catch (error) {\r\n switch (error.message) {\r\n case 'throwIfNullOrWhitespace:subscriptionKey':\r\n alert(\r\n 'Error initalizing Speech to Text. No API Key found, or API Key has been entered incorrectly. Please contact system administrator to add Azure Speech API Key.',\r\n );\r\n break;\r\n default:\r\n alert(\r\n 'Error initalizing Speech to Text. Please contact system administrator to make sure you have a valid Speech to Text connection.',\r\n );\r\n break;\r\n }\r\n console.error(error);\r\n return false;\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n //addSTTSingleShotEvent,\r\n addSTTContinuousRecEvent,\r\n };\r\n})();\r\n","const UTIL = (function () {\r\n function abbreviateDateYear(dateString) {\r\n // shortens year\r\n var dateArr = dateString.split('/');\r\n var month = dateArr[0];\r\n var day = dateArr[1];\r\n var year = dateArr[2].split('');\r\n year = `${year[2]}${year[3]}`;\r\n\r\n return `${leadingZero(month)}/${leadingZero(day)}/${year}`;\r\n }\r\n\r\n function camelize(str) {\r\n if (!str) return;\r\n return str.replace(/\\W+(.)/g, (match, chr) => {\r\n return chr.toUpperCase();\r\n });\r\n }\r\n\r\n function capitalize(str) {\r\n if (typeof str !== 'string') return '';\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n }\r\n\r\n function convertFromMilitary(time) {\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(':');\r\n var hh = parseInt(time[0]);\r\n var mm = parseInt(time[1]);\r\n var amPm = hh <= 11 ? 'AM' : 'PM';\r\n\r\n if (hh === 0) hh = 12;\r\n if (amPm === 'PM' && hh !== 12) hh -= 12;\r\n\r\n return `${hh}:${leadingZero(mm)} ${amPm}`;\r\n }\r\n\r\n /**\r\n * Converts a 12hr time to 24hr military time.\r\n * @param {string} time - Time you would like to convert. Must be in this format: 'HH:MM am|pm'\r\n * @returns {string} Converted time\r\n */\r\n function convertToMilitary(time) {\r\n // time format must be hh:mm am/pm\r\n if (!time || time === '') return '';\r\n\r\n time = time.split(' ');\r\n timeString = time[0].split(':');\r\n\r\n var amPM = time[1].toLowerCase();\r\n var hh = parseInt(timeString[0]);\r\n var mm = parseInt(timeString[1]);\r\n\r\n if (amPM === 'pm' && hh !== 12) hh += 12;\r\n if (amPM === 'am' && hh === 12) hh = 0;\r\n\r\n return `${leadingZero(hh)}:${leadingZero(mm)}:00`;\r\n }\r\n\r\n /**\r\n * Calculates the total number of hours between the start and end\r\n * @param {string} dirtyStart Start Time (24hr military time)\r\n * @param {string} dirtyEnd End Time (24hr military time)\r\n * @returns {string} Total number of hours\r\n */\r\n function calculateTotalHours(dirtyStart, dirtyEnd, format) {\r\n // must be military time\r\n if (dirtyStart === '' || dirtyEnd === '' || !dirtyStart || !dirtyEnd) {\r\n return;\r\n }\r\n\r\n var startTime = dirtyStart.split(':');\r\n var endTime = dirtyEnd.split(':');\r\n\r\n var tempDate = new Date();\r\n var year = tempDate.getFullYear();\r\n var month = tempDate.getMonth();\r\n var day = tempDate.getDate();\r\n\r\n var startDate = new Date(year, month, day, startTime[0], startTime[1]);\r\n var endDate;\r\n if (dirtyEnd === '00:00') {\r\n endDate = new Date(year, month, day + 1, endTime[0], endTime[1]);\r\n } else {\r\n endDate = new Date(year, month, day, endTime[0], endTime[1]);\r\n }\r\n\r\n var timeDiff = endDate - startDate;\r\n var hoursDiff = Math.floor((timeDiff % 86400000) / 3600000);\r\n var minutesDiff = Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n\r\n if (format === 'hh:mm') {\r\n return `${hoursDiff}:${minutesDiff}`;\r\n }\r\n\r\n return (parseInt(hoursDiff, 10) + parseFloat((minutesDiff / 60).toFixed(2))).toFixed(2);\r\n }\r\n /**\r\n * Splits the given array into a new array of the array broken into multiple chunks.\r\n * @example\r\n * // returns [[a,b,c],[d,e,f],[g,h,i]]\r\n * UTIL.chunkArray([a,b,c,d,e,f,g,h,i], 3)\r\n * @param {array} arr Array you would like to split into smaller arrays\r\n * @param {number} chunkSize Number value you would like the size of the array chunks to be split into\r\n * @returns {array[]} Returns an array of the split up array.\r\n */\r\n function chunkArray(arr, chunkSize) {\r\n var R = [];\r\n for (var i = 0, len = arr.length; i < len; i += chunkSize) R.push(arr.slice(i, i + chunkSize));\r\n return R;\r\n }\r\n\r\n function detectBrowser() {\r\n var ua = window.navigator.userAgent;\r\n\r\n var msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n var ver = parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n return true;\r\n }\r\n\r\n var trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf('rv:');\r\n var versionNumber = parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n return true;\r\n }\r\n\r\n var edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n var versionNumber = parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n return true;\r\n }\r\n\r\n // other browser\r\n return false;\r\n }\r\n\r\n /**\r\n * Converts the given date to ISO format\r\n * @example\r\n * // returns 2020-01-01\r\n * UTIL.formatDateToIso('01/01/2020')\r\n * @param {string} dirtyDate Date you would like to be converted to ISO format. Acceptable formats are:\r\n * - MM/DD/YYYY\r\n * - MM-DD-YYYY\r\n * @returns {string} Returns the string of the date in ISO Format\r\n */\r\n function formatDateToIso(dirtyDate) {\r\n if (!dirtyDate) return;\r\n\r\n let splitBy;\r\n\r\n if (dirtyDate.indexOf('/') !== -1) {\r\n splitBy = '/';\r\n } else if (dirtyDate.indexOf('-') !== -1) {\r\n splitBy = '-';\r\n } else {\r\n return 'Invalid Date String';\r\n }\r\n\r\n const date = dirtyDate.split(splitBy);\r\n\r\n if (date[0].length === 4) {\r\n return dirtyDate;\r\n }\r\n\r\n const YYYY = date[2];\r\n const MM = leadingZero(date[0]);\r\n const DD = leadingZero(date[1]);\r\n\r\n return `${YYYY}-${MM}-${DD}`;\r\n }\r\n /**\r\n * Converts the given ISO date to a more readable format\r\n * @example\r\n * // returns 01-01-2020\r\n * UTIL.formatDateFromIso('2020-01-01', '-')\r\n * @example\r\n * // returns 01/01/2020\r\n * UTIL.formatDateFromIso('2020-01-01')\r\n * @param {string} dirtyDate - Date you would like to be converted from ISO format\r\n * - Must be YYYY-MM-DD\r\n * @param {string} [joinBy='/'] - Character you would like to seperate the MM DD and YYYY\r\n * @returns {string} Returns the cleaned date\r\n */\r\n function formatDateFromIso(dirtyDate, joinBy, opts) {\r\n var shorten = opts ? opts.shortenYear : false;\r\n var date = dirtyDate.split('-');\r\n var MM = leadingZero(date[1]);\r\n var DD = leadingZero(date[2]);\r\n var YYYY = shorten ? date[0].substring(0, 2) : date[0];\r\n\r\n if (joinBy) {\r\n return `${MM}${joinBy}${DD}${joinBy}${YYYY}`;\r\n }\r\n\r\n return `${MM}/${DD}/${YYYY}`;\r\n }\r\n\r\n /**\r\n * Converts a date object created from Date() into ISO format (YYYY-MM-DD).\r\n * @deprecated Use getFormattedDateFromDate() instead. It allows you to specify how you would like the\r\n * date to be outputted.\r\n * @param {object} dirtyDateObj - date object created from Date()\r\n * @returns {string} Returns the ISO format of the given date object\r\n */\r\n function formatDateFromDateObj(dirtyDateObj) {\r\n var dateObj = new Date(dirtyDateObj);\r\n var year = dateObj.getFullYear();\r\n var month = dateObj.getMonth();\r\n var day = dateObj.getDate();\r\n month = month + 1;\r\n\r\n return `${year}-${leadingZero(month)}-${leadingZero(day)}`;\r\n }\r\n\r\n /**\r\n * Converts a time with Hour Min and Seconds to 12hr time\r\n * @example\r\n * // returns 2:30 PM\r\n * UTIL.formatTimeString('14:30:29')\r\n * @param {string} timeString - Time you would like converted to AM PM time.\r\n * - HH:MM:SS\r\n * @returns {string} Returns the time into an Am Pm time, and strips the seconds.\r\n */\r\n function formatTimeString(timeString) {\r\n if (timeString === '') return timeString;\r\n // removes seconds and strips leading zeros then converts to standard\r\n var time = timeString.split(':');\r\n var hh = time[0].split('')[0] === '0' ? time[0].split('')[1] : time[0];\r\n var mm = time[1];\r\n\r\n return UTIL.convertFromMilitary(`${hh}:${mm}`);\r\n }\r\n\r\n /**\r\n * Converts a phone number string into a more readable format of the phone number\r\n * @example\r\n * returns 614-222-3322\r\n * UTIL.formatPhoneNumber('6142223322')\r\n * @param {string} phoneNumberString - Phone Number\r\n * @returns {string} Returs a more readable format of the phone number\r\n */\r\n function formatPhoneNumber(phoneNumberString) {\r\n var cleaned = ('' + phoneNumberString).replace(/\\D/g, '');\r\n var match = cleaned.match(/^(\\d{3})(\\d{3})(\\d{4})$/);\r\n if (match) {\r\n return `${match[1]}-${match[2]}-${match[3]}`;\r\n }\r\n return phoneNumberString;\r\n }\r\n\r\n function findAndSlice(array, value, property) {\r\n function itemFind(item) {\r\n // Check for array of objects\r\n if (typeof array[0] === 'object' && property) {\r\n return item[property] === value;\r\n } else {\r\n return item === value;\r\n }\r\n }\r\n array.splice(array.findIndex(itemFind), 1);\r\n }\r\n\r\n /**\r\n * Gets lat and long from browsers Location API\r\n * @param {function} callback Action to perform once location is found\r\n * @returns {object} Returs the position latitude and longitude\r\n */\r\n function getGeoLocation(callback) {\r\n function handleSuccess(position) {\r\n var pos = {\r\n lat: position.coords.latitude,\r\n long: position.coords.longitude,\r\n };\r\n\r\n $.session.geoLocationPosition = pos;\r\n\r\n if (callback) callback(pos);\r\n }\r\n function handleFirstRunError(error) {\r\n navigator.geolocation.getCurrentPosition(handleSuccess, handleSecondRunError, {\r\n enableHighAccuracy: false,\r\n });\r\n }\r\n function handleSecondRunError(error) {\r\n alert('Location blocked by device or browser.');\r\n }\r\n\r\n if (location.protocol === 'https:' || location.hostname === 'localhost') {\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(handleSuccess, handleFirstRunError, {\r\n enableHighAccuracy: true,\r\n });\r\n } else {\r\n alert('Your browser does not support geolocation.');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Converts a date object from Date() into a date string for either display or to use in DB calls.\r\n * @param {object} date - Date object from Date()\r\n * @param {object} [options] - Options for formating the Date\r\n * @param {string} [options.separator='/'] - Seperation character for between month day and year\r\n * @param {string} [options.format] - Choose how you would like the date output to be formated:\r\n * - pass 'iso' for an ISO format (YYYY-MM-DD)\r\n * - pass 'nonIso' to have a display formated output (MM/DD/YYYY or options.separator)\r\n * @returns {string} Returns a string date with the given formating options\r\n */\r\n function getFormattedDateFromDate(date, options) {\r\n var separator = options && options.separator ? options.separator : '/';\r\n var year = date.getFullYear();\r\n\r\n var month = (1 + date.getMonth()).toString();\r\n month = month.length > 1 ? month : '0' + month;\r\n\r\n var day = date.getDate().toString();\r\n day = day.length > 1 ? day : '0' + day;\r\n\r\n var date = `${month}${separator}${day}${separator}${year}`;\r\n\r\n if (options) {\r\n if (!options.format || options.format === 'nonIso') {\r\n return date;\r\n }\r\n\r\n if (options.format === 'iso') {\r\n return formatDateToIso(date);\r\n }\r\n } else {\r\n return date;\r\n }\r\n }\r\n\r\n /** @deprecated Use getTodaysDate()\t */\r\n function getDBDateNow() {\r\n var d = new Date();\r\n return [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');\r\n }\r\n\r\n /**\r\n * Gets todays date\r\n * @param {boolean} [returnObj] - If True, function will return a Date() object rather than an ISO formated date\r\n * @returns {string|object} Returns either a date object or ISO formated string\r\n */\r\n function getTodaysDate(returnObj) {\r\n // returns iso format date\r\n var today = new Date();\r\n if (returnObj) return today;\r\n var dd = leadingZero(today.getDate());\r\n var mm = leadingZero(today.getMonth() + 1);\r\n var yyyy = today.getFullYear();\r\n return `${yyyy}-${mm}-${dd}`;\r\n }\r\n\r\n /**\r\n * Gets the current time 24hr military time (HH:MM).\r\n * @returns {string} Returns a time string in 24hr military time.\r\n */\r\n function getCurrentTime() {\r\n var today = new Date();\r\n var hours = today.getHours();\r\n var minutes = today.getMinutes();\r\n hours = hours < 10 ? '0' + hours : hours;\r\n minutes = minutes < 10 ? '0' + minutes : minutes;\r\n var now = `${hours}:${minutes}`;\r\n return now;\r\n }\r\n\r\n function getRange(start, stop) {\r\n if (stop === undefined) {\r\n stop = start || 1;\r\n start = 0;\r\n }\r\n let arr = [];\r\n for (let i = start; i < stop; i++) {\r\n arr.push(i);\r\n }\r\n return arr;\r\n }\r\n\r\n function isObject(obj) {\r\n var type = typeof obj;\r\n return type === 'function' || (type === 'object' && !!obj);\r\n }\r\n /**\r\n * Creates a deep copy of the passed object\r\n * @param {object} src Object to copy\r\n * @returns {object} Returns the coppied object\r\n */\r\n function iterationCopy(src) {\r\n // copys an object\r\n let target = {};\r\n for (let prop in src) {\r\n if (src.hasOwnProperty(prop)) {\r\n // if the value is a nested object, recursively copy all it's properties\r\n if (isObject(src[prop])) {\r\n target[prop] = iterationCopy(src[prop]);\r\n } else {\r\n target[prop] = src[prop];\r\n }\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n /**\r\n * Adds a leading 0 to the passed number.\r\n * - ONLY adds a 0 if the number is 1 character long.\r\n * - Primarly used to make numbers saveable to the DB.\r\n * @example\r\n * // returns '03'\r\n * UTIL.leadingZero(3)\r\n * // returns '11'\r\n * UTIL.leadingZero(11)\r\n * @param {number} number Number to add leading 0 to\r\n * @returns {string} Returns a string version of the number with\r\n * the number plus a 0 before it (if number is more than 1 character)\r\n */\r\n function leadingZero(number) {\r\n var num = String(number);\r\n if (num.length > 1) return num;\r\n return `0${num}`;\r\n }\r\n /**\r\n * Converts an XML string into an XMLDocument that can be accessed more easly using standard JS DOM selectors.\r\n * @param {string} xmlString An XML string\r\n * @returns {XMLDocument} Returns XMLDocument\r\n */\r\n function parseXml(xmlString) {\r\n var parser, xmlDoc, hasError;\r\n parser = new DOMParser();\r\n xmlString = xmlString.replace(/@/g, '');\r\n //xmlDoc = parser.parseFromString(xmlString, 'text/xml');\r\n try {\r\n xmlDoc = parser.parseFromString(xmlString, 'text/xml');\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n // Parse Error Check\r\n hasError = xmlDoc.documentElement.nodeName === 'parsererror' ? true : false;\r\n if (hasError) {\r\n console.error('error while parsing');\r\n } else {\r\n return xmlDoc;\r\n }\r\n }\r\n\r\n function removeDecimals(num) {\r\n if (typeof num === 'number') {\r\n return Math.floor(num);\r\n } else {\r\n return Math.floor(parseInt(num));\r\n }\r\n }\r\n\r\n function removeQuotes(string) {\r\n return string.replace(/\\\\['\\\\]|'/g, function (s) {\r\n return s === \"'\" ? '' : s;\r\n });\r\n }\r\n\r\n function toInteger(dirtyNumber) {\r\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\r\n return NaN;\r\n }\r\n\r\n var number = Number(dirtyNumber);\r\n\r\n if (isNaN(number)) {\r\n return number;\r\n }\r\n\r\n return number < 0 ? Math.ceil(number) : Math.floor(number);\r\n }\r\n\r\n function removeNonIntegerCharactersFromString(inputString) {\r\n // Use a regular expression to remove non-integer characters from string\r\n return inputString.replace(/[^\\d]/g, '');\r\n}\r\n\r\n function validateTime(time) {\r\n const splitTime = time.split('.'); //Edge Chromium adds milliseconds to end of time when using time picker\r\n return /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(splitTime[0]);\r\n }\r\n\r\n function validateDateFromInput(dateString) {\r\n const dateArray = dateString.split('-');\r\n let inputDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2], 0);\r\n inputDate = formatDateFromDateObj(inputDate);\r\n\r\n return dateString == inputDate ? true : false;\r\n }\r\n\r\n /**\r\n * Removes and replaces certain characters that can't be saved into the DB.\r\n * @param {string} note Text that needs to be converted to a format that will save in the DB.\r\n * @returns {string} Returns the note that can now be saved into the DB.\r\n */\r\n function removeUnsavableNoteText(note) {\r\n if (note === null || note === undefined) return;\r\n if (note === '') return '';\r\n\r\n //if (note.indexOf(\"\\\"\") != -1) {\r\n // note = note.replace(/\\\"/g, \"\");\r\n //}\r\n if (note.indexOf('\\\\') != -1) {\r\n note = note.replace(/\\\\/g, '');\r\n }\r\n\r\n if (note.indexOf('\"') != -1) {\r\n //note = note.replace(/\\\"/g, \"\");\r\n note = note.replace(/\\\"/g, '\"');\r\n }\r\n if (note.indexOf(\"'\") != -1) {\r\n note = note.replace(/'/g, \"''\");\r\n }\r\n\r\n if (note.indexOf('\\n') != -1) {\r\n //note = note.replace(/\\n/g, \"\\\\\\\\x0a\");\r\n // note = note.replace(/\\n/g, \"\\\\r\\\\n\");\r\n }\r\n\r\n note = note.replace(' ', '');\r\n note = note.replace('\\t', '');\r\n note = note.replace(/\\t/g, '');\r\n note = note;\r\n return note;\r\n }\r\n\r\n function romanize(num) {\r\n if (!+num) return false;\r\n var digits = String(+num).split(''),\r\n key = [\r\n '',\r\n 'C',\r\n 'CC',\r\n 'CCC',\r\n 'CD',\r\n 'D',\r\n 'DC',\r\n 'DCC',\r\n 'DCCC',\r\n 'CM',\r\n '',\r\n 'X',\r\n 'XX',\r\n 'XXX',\r\n 'XL',\r\n 'L',\r\n 'LX',\r\n 'LXX',\r\n 'LXXX',\r\n 'XC',\r\n '',\r\n 'I',\r\n 'II',\r\n 'III',\r\n 'IV',\r\n 'V',\r\n 'VI',\r\n 'VII',\r\n 'VIII',\r\n 'IX',\r\n ],\r\n roman = '',\r\n i = 3;\r\n while (i--) roman = (key[+digits.pop() + i * 10] || '') + roman;\r\n return Array(+digits.join('') + 1).join('M') + roman;\r\n }\r\n /**\r\n * Builds and appends a warning popup\r\n * @param {object} opts Options For the Popup\r\n * @param {string} opts.message What do you want the warning to say\r\n * @param {boolean} [opts.hideX=false] True: X button is hidden\r\n * @param {object} opts.accept Accept options\r\n * @param {string} opts.accept.text Accept option button text\r\n * @param {function} opts.accept.callback Accept option button callback\r\n * @param {object} [opts.reject] Reject options (optional)\r\n * @param {string} [opts.reject.text] Reject option button text\r\n * @param {function} [opts.reject.callback] Reject option button callback\r\n */\r\n function warningPopup(opts) {\r\n const { message, hideX = false, accept, reject } = opts;\r\n const popup = POPUP.build({\r\n id: 'warningPopup',\r\n hideX: hideX,\r\n classNames: 'warning',\r\n });\r\n const acceptBtn = button.build({\r\n text: accept.text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (accept.callback) accept.callback();\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(acceptBtn);\r\n\r\n if (reject) {\r\n const rejectBtn = button.build({\r\n text: reject.text,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (reject.callback) reject.callback();\r\n },\r\n });\r\n btnWrap.appendChild(rejectBtn);\r\n }\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = message;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function deromanize(str) {\r\n var str = str.toUpperCase(),\r\n validator = /^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/,\r\n token = /[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,\r\n key = {\r\n M: 1000,\r\n CM: 900,\r\n D: 500,\r\n CD: 400,\r\n C: 100,\r\n XC: 90,\r\n L: 50,\r\n XL: 40,\r\n X: 10,\r\n IX: 9,\r\n V: 5,\r\n IV: 4,\r\n I: 1,\r\n },\r\n num = 0,\r\n m;\r\n if (!(str && validator.test(str))) return false;\r\n while ((m = token.exec(str))) num += key[m[0]];\r\n return num;\r\n }\r\n /**\r\n * LS Stored as object like:\r\n * - anywstata_userid = {storage_key1:storage_value,storage_key2:value}\r\n * @function LS\r\n */\r\n const LS = (function () {\r\n /**\r\n * Returns the value of local storage for key that is passed.\r\n * @param {string} key - Local Storage Key.\r\n * @param {string} [user=$.session.UserId] - User for the key. Defaults to session user.\r\n * @returns {string} Value for key that is passed. Returns nothing if key does not exist.\r\n */\r\n function getStorage(key, user = $.session.UserId) {\r\n //\r\n const state = JSON.parse(localStorage.getItem(`anywstate_${user}`));\r\n if (state) {\r\n return state[key];\r\n } else return;\r\n }\r\n /**\r\n * Set LocalStorage key/value pair for user.\r\n * @param {string} key - Descriptive name of key. Use this same key in getStorage to get the LS value.\r\n * @param {string} value - Value you would like to set\r\n * @param {string} [user=$.session.UserId] - User for the key. Defaults to session user.\r\n */\r\n function setStorage(key, value, user = $.session.UserId) {\r\n let state = JSON.parse(localStorage.getItem(`anywstate_${user}`));\r\n if (!state) state = {};\r\n state[key] = value;\r\n return localStorage.setItem(`anywstate_${user}`, JSON.stringify(state));\r\n }\r\n return {\r\n getStorage: getStorage,\r\n setStorage: setStorage,\r\n };\r\n })();\r\n\r\n /**\r\n * Checks if the dates passed are valid and do not overlap each other\r\n * @param {string} start ISO formated date\r\n * @param {string} end ISO formated date\r\n * @returns {boolean} True = valid date range | False = date range invalid or error parsing date\r\n */\r\n function checkValidDateRange(start, end) {\r\n const startDate = Date.parse(start);\r\n const endDate = Date.parse(end);\r\n if (isNaN(startDate)) {\r\n console.error('Start date is not formatted correctly');\r\n return false;\r\n }\r\n if (isNaN(endDate)) {\r\n console.error('End date is not formatted correctly');\r\n return false;\r\n }\r\n return endDate.getTime() >= startDate.getTime();\r\n }\r\n\r\n /**\r\n * Highlights the module in the hamburger menu or side menu, signifying the module is active.\r\n * @param {string} appName Proper module name\r\n */\r\n function toggleMenuItemHighlight(appName) {\r\n var current = document.querySelector('.menu__button.active');\r\n var target;\r\n\r\n function toggleHighlight() {\r\n if (target === current) return;\r\n if (current) current.classList.remove('active');\r\n var btn = target.querySelector('.menu__button');\r\n btn.classList.add('active');\r\n }\r\n\r\n switch (appName) {\r\n case 'home': {\r\n target = document.getElementById('singlebuttondiv');\r\n break;\r\n }\r\n case 'casenotes': {\r\n target = document.getElementById('casenotessettingsdiv');\r\n break;\r\n }\r\n case 'dayservices': {\r\n target = document.getElementById('dayservicesettingsdiv');\r\n break;\r\n }\r\n case 'outcomes': {\r\n target = document.getElementById('goalssettingsdiv');\r\n break;\r\n }\r\n case 'incidenttracking': {\r\n target = document.getElementById('incidenttrackingsettingsdiv');\r\n break;\r\n }\r\n case 'roster': {\r\n target = document.getElementById('rostersettingsdiv');\r\n break;\r\n }\r\n case 'schedule': {\r\n target = document.getElementById('schedulersettingsdiv');\r\n break;\r\n }\r\n case 'timeEntry': {\r\n target = document.getElementById('singleentrysettingsdiv');\r\n break;\r\n }\r\n case 'workshop': {\r\n target = document.getElementById('workshopsettingsdiv');\r\n break;\r\n }\r\n case 'reportForms': {\r\n break;\r\n }\r\n case 'authorizations': {\r\n target = document.getElementById('authorizationsdiv');\r\n break;\r\n }\r\n case 'plan': {\r\n target = document.getElementById('plansettingsdiv');\r\n break;\r\n }\r\n case 'workflow': {\r\n target = document.getElementById('workflowsettingsdiv');\r\n break;\r\n }\r\n case 'covid': {\r\n target = document.getElementById('covidchecklistsettingsdiv');\r\n break;\r\n }\r\n case 'transportation': {\r\n target = document.getElementById('transportationsettingsdiv');\r\n break;\r\n }\r\n case 'forms': {\r\n target = document.getElementById('PDFFormssettingsdiv');\r\n break;\r\n }\r\n case 'employment': {\r\n target = document.getElementById('Employmentsettingsdiv');\r\n break;\r\n }\r\n case 'OOD': {\r\n target = document.getElementById('OODsettingsdiv');\r\n break;\r\n }\r\n case 'resetPassword': {\r\n target = document.getElementById('resetPw');\r\n break;\r\n }\r\n case 'ConsumerFinances': {\r\n target = document.getElementById('cfAccountDiv');\r\n break;\r\n }\r\n case 'CFEditAccount': {\r\n target = document.getElementById('cfEditAccountDiv');\r\n break;\r\n }\r\n case 'waitingList': {\r\n target = document.getElementById('waitingListdiv');\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n toggleHighlight();\r\n }\r\n\r\n return {\r\n abbreviateDateYear,\r\n camelize,\r\n capitalize,\r\n convertFromMilitary,\r\n convertToMilitary,\r\n calculateTotalHours,\r\n chunkArray,\r\n checkValidDateRange,\r\n detectBrowser,\r\n formatDateToIso,\r\n formatDateFromIso,\r\n formatDateFromDateObj,\r\n formatTimeString,\r\n formatPhoneNumber,\r\n findAndSlice,\r\n getGeoLocation,\r\n getFormattedDateFromDate,\r\n getDBDateNow,\r\n getTodaysDate,\r\n getCurrentTime,\r\n getRange,\r\n iterationCopy,\r\n leadingZero,\r\n parseXml,\r\n removeDecimals,\r\n removeQuotes,\r\n toInteger,\r\n removeNonIntegerCharactersFromString,\r\n validateTime,\r\n validateDateFromInput,\r\n warningPopup,\r\n removeUnsavableNoteText,\r\n romanize,\r\n deromanize,\r\n LS,\r\n toggleMenuItemHighlight,\r\n };\r\n})();\r\n","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 outcomes.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'incidenttracking': {\r\n if (activeSection === 'incidentTracking-new') {\r\n newIncident.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'roster': {\r\n if (activeSection === 'roster-absent') {\r\n rosterAbsent.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n else if (activeSection === 'roster-GroupIndividuals') {\r\n rosterGroupIndividuals.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n } else {\r\n roster.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'schedule': {\r\n break;\r\n }\r\n case 'timeEntry': {\r\n if (activeSection === 'timeEntry-new') {\r\n timeEntryCard.handleActionNavEvent(target, true);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'timeEntry-edit') {\r\n timeEntryCard.handleActionNavEvent(target, false);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'timeEntry-review') {\r\n timeEntryReview.handleActionNavEvent(target);\r\n }\r\n if (activeSection === 'timeEntry-approval') {\r\n timeApproval.handleActionNavEvent(target);\r\n }\r\n break;\r\n }\r\n case 'workshop': {\r\n if (activeSection === 'workshop') {\r\n workshop.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'authorizations': {\r\n if (activeSection === 'assessmentHistory') {\r\n await assessmentHistory.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'authorizations') {\r\n await authorizations.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'plan': {\r\n await plan.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'covid': {\r\n covidChecklist.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'transportation': {\r\n if (activeSection === 'routeDocumentation') {\r\n TRANS_routeDocumentation.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'editRoute') {\r\n TRANS_manageEditRoute.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n if (activeSection === 'addroute') {\r\n TRANS_addRoute.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n }\r\n break;\r\n }\r\n case 'forms': {\r\n forms.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'OOD': {\r\n OOD.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'resetPassword': {\r\n resetPassword.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'ConsumerFinances': {\r\n ConsumerFinances.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n } \r\n case 'CFEditAccount': {\r\n CFEditAccount.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n case 'Employment': {\r\n Employment.handleActionNavEvent(target);\r\n clear();\r\n hide();\r\n break;\r\n }\r\n }\r\n\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn && activeSection !== 'caseNotes-new') {\r\n miniRosterBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function init() {\r\n nav = document.querySelector('.action__nav');\r\n\r\n nav.addEventListener('click', handleNavEvents);\r\n }\r\n\r\n return {\r\n clear,\r\n hide,\r\n show,\r\n populate,\r\n init,\r\n };\r\n})();\r\n","var button = (function() {\r\n /**\r\n * See {@link https://git.primarysolutions.net/anywhere/anywhere-4/-/wikis/Anywhere/Elements/Buttons GitLab Wiki}\r\n * for button examples\r\n * @function build\r\n * @param {object} options \r\n * @param {string} [options.id] - sets button elemnet id\r\n * @param {(string|string[])} [options.classNames] - Single string or array of strings that set the class names for the button element.\r\n * @param {object[]} [options.attributes] - sets key value pair of data attributes to the button.\r\n * @param {string} options.attributes.key - data attribute name\r\n * @param {string} options.attributes.value - data attribute value\r\n * @param {string} [options.text] - Text to display in the button. Can be left blank when creating an 'icon' button.\r\n * @param {string} options.style - secondary - button main color is blue \r\n * - primary - button main color is white\r\n * - danger - button is red with white text\r\n * @param {string} options.type - contained - button is filled in with its style color\r\n * - outlined - button is not filled in and is outlined with is style color\r\n * - text - no fill no outline. Text is style color\r\n * @param {string} [options.icon] - icon svg from global\\icons.js\r\n * @param {string} [options.iconPos=left] - icon position of text (left, right, top bottom).\r\n * @param {boolean} [options.toggle] - true - button is a toggable button when clicked it will now become highlighted once clicked again.\r\n * @param {string} [options.toggleText] - If it is a toggle button you can specify text here to change the button text to once it is toggled.\r\n * @param {string} [options.tabindex] - Customize the tab order of elements. set to -1 to remove button from tab order. Useful for buttons that are hidden off screen.\r\n * @param {function} options.callback - action to perform when clicked\r\n * @returns {HTMLButtonElement} Returns the button element with the given options.\r\n */\r\n function build(options) {\r\n var button = document.createElement('button');\r\n if (options.id) button.id = options.id;\r\n // Button Icons\r\n if (options.icon) {\r\n button.classList.add('btn-icon');\r\n if (options.iconPos) {\r\n var iconPos = `icon-${options.iconPos}`;\r\n button.classList.add(iconPos);\r\n }\r\n if (options.text) {\r\n button.innerHTML = `\r\n ${icons[options.icon]}\r\n ${options.text.toLowerCase()}\r\n `;\r\n } else {\r\n button.innerHTML = icons[options.icon];\r\n }\r\n } else {\r\n button.classList.add('btn');\r\n if (options.text) {\r\n button.innerHTML = options.text.toLowerCase();\r\n }\r\n }\r\n // Button Coloring\r\n if (options.style) {\r\n if (options.style === 'primary') {\r\n button.classList.add('btn--primary');\r\n }\r\n if (options.style === 'secondary') {\r\n button.classList.add('btn--secondary');\r\n }\r\n if (options.style === 'danger') {\r\n button.classList.add('btn--danger');\r\n }\r\n } else {\r\n button.classList.add('btn--primary');\r\n }\r\n \r\n // Button Styling\r\n if (options.type) {\r\n if (options.type === 'text') {\r\n button.classList.add('btn--text');\r\n }\r\n if (options.type === 'contained') {\r\n button.classList.add('btn--contained');\r\n }\r\n if (options.type === 'outlined') {\r\n button.classList.add('btn--outlined');\r\n }\r\n } else {\r\n button.classList.add('btn--contained');\r\n }\r\n \r\n // toggle button?\r\n if (options.toggle) {\r\n button.classList.add('btn--toggle');\r\n button.setAttribute('data-toggled', false);\r\n // Toggle Event\r\n button.addEventListener('click', event => {\r\n if (options.icon) {\r\n var btnText = button.querySelector('span');\r\n } else {\r\n var btnText = button;\r\n }\r\n \r\n if (event.target.dataset.toggled === 'true') {\r\n button.setAttribute('data-toggled', false);\r\n btnText.innerHTML = options.text;\r\n } else {\r\n button.setAttribute('data-toggled', true);\r\n if (options.toggleText) {\r\n btnText.innerHTML = options.toggleText;\r\n }\r\n }\r\n });\r\n }\r\n // Button additional class names\r\n if (options.classNames) {\r\n if (Array.isArray(options.classNames)) {\r\n options.classNames.forEach(c => {\r\n button.classList.add(c);\r\n });\r\n } else {\r\n button.classList.add(options.classNames)\r\n }\r\n }\r\n // Button additional attributes\r\n if (options.attributes) {\r\n options.attributes.forEach(att => {\r\n button.setAttribute(att.key, att.value);\r\n });\r\n }\r\n // Button Callback\r\n if (options.callback) {\r\n button.addEventListener('click', options.callback);\r\n }\r\n // Button TabIndex\r\n if (options.tabindex) {\r\n button.tabIndex = options.tabindex;\r\n };\r\n\r\n return button;\r\n }\r\n\r\n return {\r\n build\r\n }\r\n})();","var dropdown = (function () {\r\n /**\r\n * Anywhere dropdown element\r\n * @typedef {HTMLDivElement} DropdownElement\r\n * @param {object} options options to define the dropdown\r\n * @param {string} [options.dropdownId] - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {string} options.label - Text to label the dropdown\r\n * @param {string} options.style - primary - blue background for the dropdown. White text and outline.\r\n * - secondary - will be used the most. black outline white backbround\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @param {function} options.callback - callback to be called on change\r\n * @returns {HTMLDivElement} Returns a dropdown element with the given options.\r\n */\r\n // asdfasdf\r\n function build(options) {\r\n var dropdownId = options.dropdownId;\r\n var className = options.className;\r\n var label = options.label;\r\n var style = options.style;\r\n var readonly = options.readonly;\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('dropdown');\r\n\r\n // Dropdown Coloring\r\n if (style === 'primary') {\r\n wrap.classList.add('dropdown--primary');\r\n }\r\n if (style === 'secondary') {\r\n wrap.classList.add('dropdown--secondary');\r\n }\r\n\r\n // build select\r\n var select = document.createElement('select');\r\n select.classList.add('dropdown__select');\r\n if (dropdownId) select.id = dropdownId;\r\n if (className) select.classList.add(className);\r\n if (readonly) select.setAttribute('disabled', 'true');\r\n\r\n if (options.callback) {\r\n wrap.addEventListener('change', e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n options.callback(e, selectedOption);\r\n });\r\n }\r\n\r\n // build notch\r\n var notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n if (label && label !== '') {\r\n notch.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n } else {\r\n notch.innerHTML = `\r\n
\r\n
\r\n `;\r\n }\r\n\r\n wrap.appendChild(select);\r\n wrap.appendChild(notch);\r\n\r\n wrap.innerHTML += `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n return wrap;\r\n }\r\n\r\n /**\r\n *\r\n * @param {object} options options to define the dropdown\r\n * @param {string} [options.dropdownId] - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @returns\r\n */\r\n function inlineBuild(options) {\r\n const dropdownId = options.dropdownId;\r\n const className = options.className;\r\n const readonly = options.readonly;\r\n\r\n const span = document.createElement('span');\r\n span.classList.add('inlineDropdown');\r\n\r\n const select = document.createElement('select');\r\n\r\n select.classList.add('inlineDropdown__select');\r\n select.id = dropdownId;\r\n if (className) select.classList.add(className);\r\n if (readonly) select.setAttribute('disabled', 'true');\r\n\r\n const hiddenDropdown = document.createElement('select');\r\n hiddenDropdown.id = `${dropdownId}__width_tmp_select`;\r\n const hidOpt = document.createElement('option');\r\n hidOpt.id = `${dropdownId}__width_tmp_option`;\r\n hiddenDropdown.appendChild(hidOpt);\r\n\r\n span.appendChild(select);\r\n span.appendChild(hiddenDropdown);\r\n span.innerHTML += `\r\n \r\n \r\n \r\n `;\r\n return span;\r\n }\r\n /**\r\n * Populates the given dropdown\r\n * @param {DropdownElement} dropdown - Dropdown element from dropdown.build\r\n * @param {Object[]} data - Data array to populate the dropdown\r\n * @param {string} [data.id] - Dropdown data element id\r\n * @param {string} data.text - Dropdown data element text that is displayed\r\n * @param {string} data.value - Dropdown data element value\r\n * @param {Object[]} [data.attributes] - Dropdown data element data attributes\r\n * @param {string} data.attributes.key - data attribute key\r\n * @param {string} data.attributes.value - data attribute value\r\n * @param {string} defaultVal - default to set the dropdown to. Use the 'Value' data option.\r\n */\r\n\r\n function populate(dropdown, data, defaultVal) {\r\n if (typeof dropdown === 'string') {\r\n var dropdown = document.getElementById(dropdown);\r\n } else {\r\n var dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n data.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n var option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n /**\r\n * Populates the given dropdown using option grouping\r\n * @param {Object} opt - Options\r\n * @param {DropdownElement} opt.dropdown - Dropdown element from dropdown.build\r\n * @param {Object[]} opt.data - Data array to populate the dropdown\r\n * @param {string} opt.data.groupLabel - Label for the option grouping\r\n * @param {string} [opt.data.groupId] - Label for the option grouping\r\n * @param {Object[]} opt.data.dropdownValues - Dropdown Options\r\n * @param {string} [opt.data.dropdownValues.id] - Dropdown data element id\r\n * @param {string} opt.data.dropdownValues.text - Dropdown data element text that is displayed\r\n * @param {string} opt.data.dropdownValues.value - Dropdown data element value\r\n * @param {Object[]} [opt.nonGroupedData] - Dropdown Data that doesn't get grouped\r\n * @param {string} [opt.nonGroupedData.id] - Dropdown data element id\r\n * @param {string} opt.nonGroupedData.text - Dropdown data element text that is displayed\r\n * @param {string} opt.nonGroupedData.value - Dropdown data element value\r\n * @param {Object[]} [opt.data.dropdownValues.attributes] - Dropdown data element data attributes\r\n * @param {string} opt.data.dropdownValues.attributes.key - data attribute key\r\n * @param {string} opt.data.dropdownValues.attributes.value - data attribute value\r\n * @param {string} opt.defaultVal - default to set the dropdown to. Use the 'Value' data option.\r\n */\r\n\r\n function groupingPopulate(opt) {\r\n let dropdown = opt.dropdown;\r\n const data = opt.data;\r\n const nonGroupedData = opt.nonGroupedData;\r\n const defaultVal = opt.defaultVal;\r\n\r\n if (typeof dropdown === 'string') {\r\n dropdown = document.getElementById(dropdown);\r\n } else {\r\n dropdown = dropdown.querySelector('select');\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n\r\n if (nonGroupedData) {\r\n nonGroupedData.forEach(d => {\r\n // value and text are required\r\n // data = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n const option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n // append to dropdown\r\n dropdown.appendChild(option);\r\n });\r\n }\r\n\r\n data.forEach(d => {\r\n const group = document.createElement('optgroup');\r\n group.label = d.groupLabel;\r\n if (d.groupId) group.id = d.groupId;\r\n dropdown.appendChild(group);\r\n\r\n d.dropdownValues.forEach(d => {\r\n // value and text are required\r\n // dropdownValues = {id=\"\", value=\"\", text=\"\", attributes=[{key, value}]}\r\n const option = document.createElement('option');\r\n if (d.id) option.id = d.id;\r\n option.value = d.value;\r\n option.innerHTML = d.text;\r\n // set custom attributes\r\n if (d.attributes && d.attributes.length > 0) {\r\n d.attributes.forEach(a => {\r\n option.setAttribute(a.key, a.value);\r\n });\r\n }\r\n group.appendChild(option);\r\n });\r\n });\r\n if (defaultVal && defaultVal !== '') dropdown.value = defaultVal;\r\n }\r\n\r\n return {\r\n build,\r\n inlineBuild,\r\n populate,\r\n groupingPopulate,\r\n };\r\n})();\r\n","","// const FORM = (() => {\r\n// // make a form component that takes care of everything\r\n// // create event listener on form no for handeling data\r\n// })();\r\n","const input = (function () {\r\n function build(opts) {\r\n // opts = {\r\n // id = \"\",\r\n // label = \"\",\r\n // type = \"\",\r\n // style = \"\",\r\n // value = \"\",\r\n // accept = \"\",\r\n // readonly = bool,\r\n // classNames = \"\" || [],\r\n // callback = () => {},\r\n // callbackType = \"\", ex: change, input, click\r\n // onBlurCallback = () => {},\r\n // attributes = [{key, value}]\r\n // charLimit = int > 0,\r\n // forceCharLimit = bool\r\n // initialLength = int >= 0,\r\n // tabindex = int,\r\n // stt = bool,\r\n // }\r\n // comment\r\n var id = opts.id;\r\n var label = opts.label;\r\n var type = opts.type;\r\n var value = opts.value;\r\n var charLimit = opts.charLimit;\r\n var tab = opts.tabindex;\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('input-field');\r\n // Button Coloring\r\n if (opts.style === 'primary') {\r\n wrap.classList.add('input-field--primary');\r\n }\r\n if (opts.style === 'secondary') {\r\n wrap.classList.add('input-field--secondary');\r\n }\r\n\r\n // build input\r\n if (type === 'textarea') {\r\n var input = document.createElement('textarea');\r\n wrap.classList.add('textarea');\r\n } else {\r\n var input = document.createElement('input');\r\n if (type) input.type = type;\r\n }\r\n\r\n input.classList.add('input-field__input');\r\n if (value && value !== '') input.value = value;\r\n if (id) input.id = id;\r\n\r\n if (type === 'file') {\r\n input.setAttribute('accept', opts.accept);\r\n }\r\n\r\n if (type === 'date') {\r\n input.setAttribute('max', '9999-12-31');\r\n }\r\n\r\n if (type === 'password') {\r\n input.setAttribute('autocomplete', 'new-password');\r\n }\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n if (opts.readonly) {\r\n input.setAttribute('readonly', true);\r\n input.style.pointerEvents = 'none';\r\n }\r\n\r\n if (opts.classNames) {\r\n if (Array.isArray(opts.classNames)) {\r\n opts.classNames.forEach(c => {\r\n input.classList.add(c);\r\n });\r\n } else {\r\n input.classList.add(opts.classNames);\r\n }\r\n }\r\n\r\n // input event callback\r\n if (opts.callback) {\r\n if (opts.callbackType) {\r\n input.addEventListener(opts.callbackType, e => {\r\n opts.callback(e);\r\n });\r\n } else {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n }\r\n if (opts.onBlurCallback) {\r\n input.addEventListener('blur', e => {\r\n opts.onBlurCallback(e);\r\n });\r\n }\r\n\r\n //Character Count. Updates on keyup. If the input value is changed programitically\r\n // you will need to dispatchEvent(new Event('keyup')) on the input field to update the count\r\n let characterCount = null;\r\n if (\r\n charLimit &&\r\n charLimit > 0 &&\r\n (type === 'textarea' || type === 'text' || type === undefined)\r\n ) {\r\n let initialLength = 0;\r\n\r\n if (opts.initialLength && opts.initialLength > 0) {\r\n initialLength = opts.initialLength;\r\n } else {\r\n initialLength = value ? value.length : 0;\r\n }\r\n\r\n characterCount = document.createElement('h5');\r\n characterCount.classList.add('inputCharCount');\r\n characterCount.innerText = `(${initialLength}/${charLimit})`;\r\n\r\n const checkOverLimit = length => {\r\n if (length > charLimit) {\r\n characterCount.classList.add('overLimit');\r\n } else {\r\n characterCount.classList.remove('overLimit');\r\n }\r\n };\r\n\r\n checkOverLimit(initialLength);\r\n\r\n // if (opts.forceCharLimit) {\r\n // input.setAttribute('maxlength', `${charLimit}`);\r\n // }\r\n\r\n const handleEvents = e => {\r\n const length = e.target.value.length;\r\n\r\n if (opts.forceCharLimit) {\r\n if (length > charLimit) {\r\n const subString = e.target.value.substring(0, charLimit);\r\n e.target.value = subString;\r\n characterCount.innerText = `(${subString.length}/${charLimit})`;\r\n }\r\n }\r\n\r\n if (!opts.forceCharLimit || length <= charLimit) {\r\n characterCount.innerText = `(${length}/${charLimit})`;\r\n checkOverLimit(length);\r\n return;\r\n }\r\n };\r\n // input.addEventListener('keyup', handleEvents);\r\n input.addEventListener('input', handleEvents);\r\n input.addEventListener('paste', handleEvents);\r\n }\r\n\r\n if (opts.tabindex) {\r\n input.tabIndex = tab;\r\n }\r\n\r\n // Add Speech to Text. Only add to text fields.\r\n let sttBtn = null;\r\n let azureSTTConnection = false;\r\n if (opts.stt && (type === 'textarea' || type === undefined)) {\r\n sttBtn = button.build({\r\n text: '',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'sttInputIcon',\r\n icon: 'microphone',\r\n });\r\n azureSTTConnection = SPEECH.init();\r\n if (azureSTTConnection) SPEECH.addSTTContinuousRecEvent(sttBtn, wrap); // Change wrap to input and change SPEECH file\r\n }\r\n\r\n if (type === 'password') {\r\n eyeBtn = button.build({\r\n text: '',\r\n id: 'toggle' + input.id,\r\n style: 'outlined',\r\n type: 'text',\r\n classNames: 'eyeInputIcon',\r\n icon: 'passwordShow',\r\n attributes: [{ key: 'data-visible-password', value: 'false' }],\r\n callback: () => {\r\n event.preventDefault();\r\n togglePasswordVisibility(input.id);\r\n },\r\n });\r\n }\r\n\r\n // build notch\r\n var notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n notch.innerHTML = `\r\n
\r\n
\r\n ${label ? `` : ``}\r\n
\r\n
\r\n `;\r\n\r\n wrap.appendChild(input);\r\n wrap.appendChild(notch);\r\n if (characterCount) wrap.appendChild(characterCount);\r\n if (sttBtn && azureSTTConnection) wrap.appendChild(sttBtn);\r\n if (type === 'password') wrap.appendChild(eyeBtn);\r\n return wrap;\r\n }\r\n\r\n function buildCheckbox(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // isChecked = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n var checkbox = document.createElement('label');\r\n checkbox.classList.add('checkbox', 'checkbox-mtd');\r\n\r\n var input = document.createElement('input');\r\n input.type = 'checkbox';\r\n if (opts.id) input.id = opts.id;\r\n if (opts.isChecked) input.setAttribute('checked', true);\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n checkbox.classList.add(c);\r\n });\r\n } else {\r\n checkbox.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n var text = document.createElement('span');\r\n if (opts.text) text.innerHTML = opts.text;\r\n\r\n checkbox.appendChild(input);\r\n checkbox.appendChild(text);\r\n\r\n return checkbox;\r\n }\r\n function buildNativeCheckbox(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // isChecked = boolean,\r\n // isDisabled = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('input-field');\r\n wrap.classList.add('checkbox');\r\n\r\n var input = document.createElement('input');\r\n input.classList.add('input-field__input');\r\n input.type = 'checkbox';\r\n\r\n if (opts.id) input.id = opts.id;\r\n if (opts.isChecked) input.setAttribute('checked', true);\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n wrap.classList.add(c);\r\n });\r\n } else {\r\n wrap.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n wrap.appendChild(input);\r\n\r\n return wrap;\r\n }\r\n function buildRadio(opts) {\r\n // opts = {\r\n // className = \"\" || [],\r\n // text = \"\",\r\n // id = \"\",\r\n // name = \"\",\r\n // isChecked = boolean,\r\n // isDisabled = boolean,\r\n // attributes = [{key, value}]\r\n // callback = () => {}\r\n // }\r\n var radio = document.createElement('label');\r\n radio.classList.add('radio');\r\n\r\n var input = document.createElement('input');\r\n input.type = 'radio';\r\n if (opts.isChecked) input.checked = true;\r\n if (opts.isDisabled) input.setAttribute('disabled', true);\r\n if (opts.id) input.id = opts.id;\r\n\r\n if (opts.name) input.setAttribute('name', opts.name);\r\n\r\n if (opts.className) {\r\n if (Array.isArray(opts.className)) {\r\n opts.className.forEach(c => {\r\n radio.classList.add(c);\r\n });\r\n } else {\r\n radio.classList.add(opts.className);\r\n }\r\n }\r\n\r\n if (opts.attributes && opts.attributes.length > 0) {\r\n opts.attributes.forEach(a => {\r\n input.setAttribute(a.key, a.value);\r\n });\r\n }\r\n\r\n if (opts.callback) {\r\n input.addEventListener('change', e => {\r\n opts.callback(e);\r\n });\r\n }\r\n\r\n var text = document.createElement('span');\r\n if (opts.text) text.innerHTML = opts.text;\r\n\r\n radio.appendChild(input);\r\n radio.appendChild(text);\r\n\r\n return radio;\r\n }\r\n\r\n function disableInputField(element) {\r\n let inputEle;\r\n\r\n switch (element.nodeName) {\r\n case 'INPUT':\r\n case 'TEXTAREA':\r\n case 'SELECT': {\r\n inputEle = element;\r\n element.parentElement.classList.add('disabled');\r\n break;\r\n }\r\n default: {\r\n element.classList.add('disabled');\r\n\r\n inputEle = element.querySelector('input');\r\n if (!inputEle) inputEle = element.querySelector('textarea');\r\n if (!inputEle) inputEle = element.querySelector('select');\r\n }\r\n }\r\n\r\n if (inputEle.type !== 'radio') {\r\n inputEle.setAttribute('tabindex', '-1');\r\n return;\r\n }\r\n\r\n const radios = [...element.querySelectorAll('input')];\r\n radios.forEach(radio => {\r\n radio.setAttribute('tabindex', '-1');\r\n });\r\n }\r\n function enableInputField(element) {\r\n let inputEle;\r\n\r\n switch (element.nodeName) {\r\n case 'INPUT':\r\n case 'TEXTAREA':\r\n case 'SELECT': {\r\n inputEle = element;\r\n element.parentElement.classList.remove('disabled');\r\n break;\r\n }\r\n default: {\r\n element.classList.remove('disabled');\r\n\r\n inputEle = element.querySelector('input');\r\n if (!inputEle) inputEle = element.querySelector('textarea');\r\n if (!inputEle) inputEle = element.querySelector('select');\r\n }\r\n }\r\n\r\n if (inputEle.type !== 'radio') {\r\n inputEle.removeAttribute('tabindex', '-1');\r\n return;\r\n }\r\n\r\n const radios = [...element.querySelectorAll('input')];\r\n radios.forEach(radio => {\r\n radio.removeAttribute('tabindex', '-1');\r\n });\r\n }\r\n\r\n function togglePasswordVisibility(id) {\r\n var passwordInput = '';\r\n var passwordToggleBtn = '';\r\n\r\n passwordInput = document.getElementById(id);\r\n passwordToggleBtn = document.getElementById('toggle' + id);\r\n\r\n var isVisible = passwordToggleBtn.getAttribute('data-visible-password');\r\n\r\n if (isVisible === 'false') {\r\n passwordToggleBtn.innerHTML = icons.passwordHide;\r\n passwordToggleBtn.setAttribute('data-visible-password', 'true');\r\n passwordInput.type = 'text';\r\n } else {\r\n passwordToggleBtn.innerHTML = icons.passwordShow;\r\n passwordToggleBtn.setAttribute('data-visible-password', 'false');\r\n passwordInput.type = 'password';\r\n }\r\n }\r\n\r\n return {\r\n build,\r\n buildCheckbox,\r\n buildNativeCheckbox,\r\n buildRadio,\r\n disableInputField,\r\n enableInputField,\r\n };\r\n})();\r\n","const GOOGLE_MAP = (function() {\r\n \r\n let map = null;\r\n let bounds = null;\r\n let markerCluster = null;\r\n\r\n function createElement(insertLocation) {\r\n let mapElement = document.createElement(\"div\");\r\n mapElement.setAttribute(\"id\", \"map\");\r\n mapElement.classList.add(\"googleMap\");\r\n insertLocation.appendChild(mapElement);\r\n }\r\n\r\n function clearMap() {\r\n // document.getElementById(\"map\").innerHTML = \"\";\r\n let mapElement = document.getElementById(\"map\");\r\n if (mapElement) mapElement.remove();\r\n map = null;\r\n }\r\n\r\n\r\n function initMap(zoom = 10, center, markers) {\r\n map = new google.maps.Map(document.getElementById(\"map\"), {\r\n zoom: zoom,\r\n center: center,\r\n maxZoom: 18,\r\n fullscreenControl: false,\r\n // mapTypeControl: false,\r\n });\r\n\r\n if (markers.latLngObj.length > 0) {\r\n markerArray = markers.latLngObj.map((location, i) => {\r\n return new google.maps.Marker({\r\n position: location\r\n })\r\n })\r\n\r\n markerArray.forEach((marker, i) => {\r\n let infoWindow = new google.maps.InfoWindow({\r\n content: markers.markerLabels[i]\r\n })\r\n marker.addListener('click', function() {\r\n infoWindow.open(marker.get('map'), marker)\r\n })\r\n })\r\n \r\n markerCluster = new MarkerClusterer(map, markerArray,\r\n {\r\n imagePath: '/webroot/dist/assets/icons/google_maps/m',\r\n });\r\n }\r\n map.fitBounds(bounds)\r\n map.panToBounds(bounds)\r\n }\r\n\r\n //Calculates the center of the map for two given points\r\n function calcCenter(pos1, pos2) {\r\n return google.maps.geometry.spherical.interpolate(pos1, pos2, 0.5);\r\n }\r\n \r\n function createBoundry(array) {\r\n bounds = new google.maps.LatLngBounds();\r\n array.forEach(pos => {\r\n bounds.extend(pos)\r\n })\r\n }\r\n\r\n function createLatLngObj(pos) {\r\n return new google.maps.LatLng(pos);\r\n }\r\n\r\n function createMarkerArray(array, markerLabels) {\r\n latLngObj = array.map(el => {\r\n return createLatLngObj(el);\r\n });\r\n\r\n return {\r\n latLngObj,\r\n markerLabels\r\n };\r\n }\r\n\r\n function createMarkerLabel(text) {\r\n let displayText = \"\"\r\n text.forEach(el => {\r\n displayText += el + \"
\"\r\n })\r\n return new google.maps.MarkerLabel({text: displayText})\r\n }\r\n\r\n return {\r\n initMap,\r\n clearMap,\r\n createElement,\r\n createMarkerArray,\r\n createMarkerLabel,\r\n createBoundry,\r\n calcCenter\r\n };\r\n})();\r\n","const multiDropdown = (function() {\r\n let activeDropdownOptions = {};\r\n let optionAddedFunction = {};\r\n let optionRemovedFunction = {};\r\n\r\n /**\r\n * Anywhere multi select dropdown element\r\n * @typedef {HTMLDivElement} MultiSelectDropdownElement\r\n * @param {object} options options to define the dropdown\r\n * @param {string} options.dropdownId - element id for the dropdown\r\n * @param {string} [options.className] - CSS class name to give the dropdown\r\n * @param {string} options.label - Text to label the dropdown\r\n * @param {string} [options.optionAddedCallback] - Called when a option is selected for the dropdown\r\n * @param {string} [options.optionRemovedCallback] - Called when an option is removed from the dropdown\r\n * @param {string} options.style - primary - blue background for the dropdown. White text and outline.\r\n * - secondary - will be used the most. black outline white backbround\r\n * @param {boolean} options.readonly - true - dropdown can't be clicked and 'dropped down'\r\n * @returns {HTMLDivElement} Returns a dropdown element with the given options.\r\n */\r\n function build(opts) {\r\n const dropdownId = opts.dropdownId;\r\n const label = opts.label; \r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('multi', 'dropdown');\r\n wrap.id = dropdownId\r\n\r\n // Dropdown Coloring\r\n if (opts.style === 'primary') {\r\n wrap.classList.add('dropdown--primary');\r\n }\r\n if (opts.style === 'secondary') {\r\n wrap.classList.add('dropdown--secondary');\r\n }\r\n activeDropdownOptions[dropdownId] = []\r\n optionAddedFunction[dropdownId] = opts.optionAddedCallback\r\n optionRemovedFunction[dropdownId] = opts.optionRemovedCallback\r\n\r\n // build select\r\n const select = document.createElement('select');\r\n select.classList.add('dropdown__select');\r\n select.multiple = true;\r\n select.name = dropdownId;\r\n \r\n if (opts.className) select.classList.add(opts.className);\r\n if (opts.readonly) select.setAttribute('disabled', 'true');\r\n\r\n // build notch\r\n const notch = document.createElement('div');\r\n notch.classList.add('notched-outline');\r\n notch.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n\r\n const menu = document.createElement('div');\r\n menu.classList.add('multiMenu', 'hidden');\r\n menu.tabIndex = '-1';\r\n\r\n wrap.appendChild(select);\r\n wrap.appendChild(menu);\r\n wrap.appendChild(notch);\r\n\r\n wrap.innerHTML += `\r\n \r\n \r\n \r\n \r\n `;\r\n\r\n wrap.addEventListener('click', () => {\r\n \tif (wrap.querySelector('.multiMenu').classList.contains('hidden')) {\r\n \twrap.querySelector('.multiMenu').classList.replace('hidden', 'visible')\r\n } else {\r\n \twrap.querySelector('.multiMenu').classList.replace('visible', 'hidden')\r\n }\r\n })\r\n menu.addEventListener('blur', () => {\r\n \tif (wrap.querySelector('.multiMenu').classList.contains('hidden')) {\r\n \twrap.querySelector('.multiMenu').classList.replace('hidden', 'visible')\r\n } else {\r\n \twrap.querySelector('.multiMenu').classList.replace('visible', 'hidden')\r\n }\r\n })\r\n\r\n return wrap;\r\n\r\n }\r\n\r\n function populate(dd, data) {\r\n //data.value\r\n //data.text\r\n let multiDropdown;\r\n let dropdown\r\n if (typeof dd === 'string') {\r\n let wrap = document.getElementById(dd);\r\n dd = wrap;\r\n dropdown = wrap.querySelector('.dropdown__select')\r\n multiDropdown = wrap.querySelector('.multiMenu')\r\n } else {\r\n dropdown = dd.querySelector('select');\r\n multiDropdown = dd.querySelector('.multiMenu')\r\n }\r\n\r\n if (!dropdown) return;\r\n\r\n dropdown.innerHTML = '';\r\n multiDropdown.innerHTML = '';\r\n \r\n if (data.length === 0) {\r\n const noOptions = document.createElement('div');\r\n noOptions.innerHTML = `

There are no dropdown options.

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

${opts.header}

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

${message}

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

${message}

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

${message}

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

${opts.headline}

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

${navText}

`;\r\n\r\n // create alert div\r\n const navAlertDiv = document.createElement('div');\r\n navAlertDiv.classList.add('tocAlertDiv');\r\n navAlertDiv.id = `navAlert${navText}`;\r\n navAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(navAlertDiv);\r\n\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n navAlertDiv,\r\n );\r\n\r\n navAlertDiv.style.display = 'none';\r\n\r\n if (isActive) navItem.classList.add('active');\r\n\r\n // Display Assessment Nav Validation if their are validation errors\r\n if (navText === 'Assessment' && assessmentValidationCheck.complete === false) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n\r\n // DIsplay ISP Nav Validation if their are validation errors in the ISP or ISP contact section\r\n if (navText === 'ISP' && (ISPValidationCheck.complete === false || ISPValidationCheck.contactSectionComplete === false || ISPValidationCheck.summaryRisksValidation === false)) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n\r\n return navItem;\r\n };\r\n const buildTabSection = (sectionMarkup, isActive, index) => {\r\n const tabSection = document.createElement('div');\r\n tabSection.classList.add('tabsBody__sec');\r\n tabSection.id = `tab${index}`;\r\n tabSection.appendChild(sectionMarkup);\r\n if (isActive) tabSection.classList.add('active');\r\n\r\n return tabSection;\r\n };\r\n\r\n // PUBLIC\r\n //============================================\r\n const build = (options, tabsData) => {\r\n // options = {\r\n // navOnClick: function()\r\n // }\r\n // tabsData = [\r\n // {\r\n // heading: 'Tab 1',\r\n // markup: 'tab 1 markup',\r\n // },\r\n // ];\r\n const active = options.active ? options.active : 0;\r\n\r\n const tabs = buildTabs();\r\n const tabsNav = buildTabsNav();\r\n const tabsBody = buildTabsBody();\r\n\r\n tabsData.forEach((td, index) => {\r\n const isActive = index === active;\r\n const navItem = buildNavItem(td.heading, isActive, index);\r\n const tabSection = buildTabSection(td.markup, isActive, index);\r\n\r\n tabsNav.appendChild(navItem);\r\n tabsBody.appendChild(tabSection);\r\n });\r\n\r\n tabsNav.addEventListener('click', e => {\r\n if (!e.target.classList.contains('tabsNav__item') || tabsNav.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n const targetTab = e.target;\r\n const targetTabIndex = targetTab.id.replace('tabNav', '');\r\n const targetSectionId = `#tab${targetTabIndex}`;\r\n const targetSection = document.querySelector(targetSectionId);\r\n const activeTab = tabsNav.querySelector('.active');\r\n const activeSection = tabsBody.querySelector('.tabsBody > .active');\r\n\r\n activeTab.classList.remove('active');\r\n activeSection.classList.remove('active');\r\n\r\n targetTab.classList.add('active');\r\n targetSection.classList.add('active');\r\n\r\n options.navOnClick(targetTabIndex);\r\n });\r\n\r\n tabsNav.classList.add('disabled');\r\n\r\n tabs.appendChild(tabsNav);\r\n tabs.appendChild(tabsBody);\r\n\r\n return tabs;\r\n };\r\n const toggleNavStatus = (tabs, status) => {\r\n const tabsNav = tabs.querySelector('.tabsNav');\r\n\r\n if (status === 'enable') {\r\n tabsNav.classList.remove('disabled');\r\n } else {\r\n tabsNav.classList.add('disabled');\r\n }\r\n };\r\n\r\n return {\r\n build,\r\n toggleNavStatus,\r\n };\r\n})();\r\n","const mfa = (function() {\r\n let mfaPopup, submitBtn, codeInput, messageArea;\r\n\r\n function buildPopup() {\r\n const mainElement = document.getElementsByTagName(\"main\")[0];\r\n mfaPopup = POPUP.build({\r\n header: \"Please enter your verification code below\",\r\n id: \"mfaPopup\",\r\n hideX: true\r\n });\r\n codeInput = input.build({\r\n id: \"codeInput\",\r\n label: \"Code\"\r\n });\r\n submitBtn = button.build({\r\n id: \"submitBtn\",\r\n text: \"Submit\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: () => submitCode()\r\n });\r\n const cancelBtn = button.build({\r\n id: \"cancleBtn\",\r\n text: \"Cancel\",\r\n callback: () => {\r\n mainElement.removeChild(mfaPopup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(mfaPopup);\r\n document.body.style.overflow = \"visible\";\r\n }\r\n });\r\n messageArea = document.createElement('div')\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n mfaPopup.appendChild(codeInput);\r\n btnWrap.appendChild(submitBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n mfaPopup.appendChild(btnWrap);\r\n mfaPopup.appendChild(messageArea)\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(mfaPopup);\r\n // show overlay\r\n const overlayElement = document.querySelector(\".overlay\");\r\n overlayElement.style.zIndex = \"2\";\r\n mfaPopup.style.zIndex = \"3\";\r\n mfaPopup.style.top = \"40%\";\r\n overlay.show();\r\n eventListeners()\r\n mainElement.appendChild(mfaPopup);\r\n setTimeout(() => {codeInput.firstChild.focus();}, 500)\r\n }\r\n\r\n function submitCode() {\r\n messageArea.innerHTML = ''\r\n submitBtn.classList.add('disabled')\r\n const pleaseWait = document.createElement('p')\r\n pleaseWait.style.textAlign = 'center'\r\n pleaseWait.innerText = 'Please Wait'\r\n messageArea.appendChild(pleaseWait)\r\n const code = codeInput\r\n .querySelector(\".input-field__input\")\r\n .value.trim();\r\n authenticatedLogin(code);\r\n }\r\n\r\n function eventListeners() {\r\n codeInput.addEventListener('keyup', event => {\r\n if (event.key === 'Enter') {\r\n submitCode()\r\n }\r\n })\r\n }\r\n\r\n function mfaReject(errorReason) {\r\n\r\n let clearUNPW = false; \r\n let errorMessage;\r\n switch (errorReason) {\r\n case \"Too many failed attempts\":\r\n clearUNPW = true;\r\n errorMessage = \"Too many failed attempts. Your account has been disabled. Please contact a system administrator.\"\r\n break;\r\n case \"Expired key\":\r\n clearUNPW = true;\r\n errorMessage = \"The verification code entered has expired. Please go back to the login screen and enter your credentials to generate a new code.\"\r\n break;\r\n default:\r\n errorMessage = \"Invalid Code. Please try again.\";\r\n submitBtn.classList.remove('disabled');\r\n break;\r\n }\r\n\r\n messageArea.innerHTML = ''\r\n const errorBox = document.createElement(\"div\");\r\n errorBox.classList.add(\"error\");\r\n errorBox.style.display = \"block\";\r\n errorBox.setAttribute(\"id\", \"mfaErrorBox\");\r\n errorBox.innerHTML = `

${errorMessage}

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

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

\r\n

\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n // Get the verifyCodeBtnWrap div\r\n const verifyCodeBtnWrap = document.querySelector('.verifyCodeBtnWrap');\r\n\r\n // Create and append the buttons\r\n const sendCodeAgainBtn = document.createElement('button');\r\n sendCodeAgainBtn.textContent = 'Send Code Again';\r\n sendCodeAgainBtn.className = 'sendCodeAgainBtn';\r\n sendCodeAgainBtn.addEventListener('click', function() {\r\n sendCode();\r\n });\r\n verifyCodeBtnWrap.appendChild(sendCodeAgainBtn);\r\n\r\n const verifyBtn = button.build({\r\n id: 'sendCodeBtn',\r\n text: 'Verify',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['btn-login'],\r\n callback: () => {\r\n checkVerificationCode(tempUserId);\r\n },\r\n });\r\n\r\n verifyCodeBtnWrap.appendChild(verifyBtn);\r\n }\r\n\r\n}\r\n\r\nasync function checkVerificationCode(tempUserId) {\r\n const passwordInput = document.getElementById('verificationCode').value;\r\n\r\n // Hash the value using MD5\r\n const hashedPassword = $().crypt({\r\n method: 'md5',\r\n source: passwordInput\r\n });\r\n const codeVerification = await _UTIL.fetchData('verifyESignLogin', { tempUserId, hashedPassword });\r\n \r\n if (codeVerification.verifyESignLoginResult === 'Success') {\r\n document.querySelector('main').innerHTML = '';\r\n // open the E-Signature form \r\n esignatures.init(tempUserId); \r\n } else {\r\n // Display the error or reason for failure\r\n const errorMessageDiv = document.getElementById('eSignErrorMessage');\r\n errorMessageDiv.innerText = codeVerification.verifyESignLoginResult;\r\n }\r\n}\r\n\r\nfunction getCustomLoginTextAndVersion(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCustomTextAndAnywhereVersion/',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomTextAndAnywhereVersionResult.replace(/\\r/g, '').replace(/\\n/g, '
');\r\n //var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n $('#customLoginText').text(\r\n 'Primary Solutions, in conjunction with amazing people like you, has built a new product from the ground up that ' +\r\n \"focuses on ease of use so that you can focus on what's really important.\",\r\n );\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\nfunction changeIt() {\r\n const changeBtn = document.getElementById('changebutton');\r\n changeBtn.classList.add('disabled');\r\n if (checkPass() == 0) return;\r\n //changeBtn.classList.add('disabled');\r\n let newPW = $('#newpassword1').val();\r\n newPW = newPW.replaceAll(`\\\\`, `\\\\\\\\`);\r\n newPW = newPW.replaceAll(`\"`, `\\\\\"`);\r\n newPW = newPW.replaceAll(`'`, `''`);\r\n var success = false;\r\n let passwordChangeError = false;\r\n let inactiveUser = false;\r\n let passwordReuseError = false;\r\n // blur focus to prevent messages from getting removed too quickly\r\n document.activeElement.blur();\r\n //alert('patchIt');\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/changeLogIn/',\r\n data: '{\"userId\":\"' + $('#username2').val() + '\", \"hash\":\"' + $().crypt({\r\n method: 'md5',\r\n source: $('#password2').val()\r\n }) + '\", \"newPassword\":\"' + newPW + '\", \"changingToHashPassword\":\"' + $().crypt({\r\n method: 'md5',\r\n source: $('#newpassword1').val()\r\n }) + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n passwordChangeError = true;\r\n return;\r\n }\r\n //alert('success: ' + res);\r\n if (res.indexOf('Not active') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n inactiveUser = true;\r\n return;\r\n }\r\n if (res.indexOf('Error:611') > -1) {\r\n passwordReuseError = true;\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour new password does not meet your organizations password reuse rules. Please use a different password.\r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n } else if (res.indexOf('Error:610') > -1) {\r\n passwordChangeError = true;\r\n $('#error').addClass('userInputError');\r\n $('#error').removeClass('hippaRestriction');\r\n } else {\r\n $('#error').removeClass('hippaRestriction');\r\n $('#error').removeClass('userInputError');\r\n }\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n complete: function () {\r\n changeBtn.classList.remove('disabled');\r\n if (inactiveUser || passwordReuseError) {\r\n return;\r\n }\r\n if (passwordChangeError) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tInvalid user name or password. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n overlay.init();\r\n $('#password1').val($('#newpassword1').val());\r\n const mainElement = document.getElementsByTagName('main')[0];\r\n const passwordChangeConfPOPUP = POPUP.build({\r\n hideX: true\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n mainElement.removeChild(passwordChangeConfPOPUP);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(passwordChangeConfPOPUP);\r\n document.body.style.overflow = 'visible';\r\n backToLoginPage();\r\n }\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'Password has been changed. You may now log in with your new password.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n passwordChangeConfPOPUP.appendChild(message);\r\n passwordChangeConfPOPUP.appendChild(okBtn);\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(passwordChangeConfPOPUP);\r\n // show overlay\r\n const overlayElement = document.querySelector('.overlay');\r\n overlayElement.style.zIndex = '2';\r\n passwordChangeConfPOPUP.style.zIndex = '3';\r\n passwordChangeConfPOPUP.style.top = '40%';\r\n overlay.show();\r\n mainElement.appendChild(passwordChangeConfPOPUP);\r\n // focus on ok button\r\n okBtn.focus();\r\n }\r\n });\r\n}\r\n\r\nfunction resetIt() {\r\n if ($.session.changeEmailSent) {\r\n return;\r\n }\r\n $('#resetButton').prop('disabled', true);\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/setupPasswordResetEmail/',\r\n data: '{\"userName\":\"' + $('#username3').val() + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n if (res.indexOf(null) != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tPlease enter a valid username. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n if (res.indexOf('Inactive user') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tYour account is inactive. Please contact your System Administrator to enable your account. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n if (res.indexOf('No recipient') != -1) {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n const message = `\r\n\t\t\t\tThere was no valid email address found for your account.\r\n\t\t\t\tPlease contact your system administrator to login to Anywhere. \r\n\t\t\t\t`;\r\n $('#errortext').text(message);\r\n return;\r\n }\r\n setUpPasswordResetMessages(res);\r\n $('#resetButton').prop('disabled', false);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n' + xhr.responseText);\r\n }\r\n });\r\n}\r\n\r\nfunction tokenCheck() {\r\n var success = false;\r\n //alert('checking token');\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/tokenCheck/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //alert('success: ' + res);\r\n if (res.indexOf('607') > -1 || res.indexOf('606') > -1) {\r\n document.location.href = 'login.html';\r\n } else {\r\n success = true;\r\n }\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction postError(errNum, errMsg, errLvl) {\r\n var d = new Date();\r\n var curr_month = d.getMonth() + 1; //Months are zero based\r\n var strDate = d.getDate() + '-' + curr_month + '-' + d.getFullYear() + ' ' + d.getHours() + ':' + d.getMinutes();\r\n var dataString =\r\n 't=' +\r\n strDate +\r\n '&l=' +\r\n 'client' +\r\n '&u=' +\r\n $.session.Name +\r\n ' ' +\r\n $.session.LName +\r\n '&en=' +\r\n errNum +\r\n '&em=' +\r\n errMsg +\r\n '&s=' +\r\n errLvl;\r\n //$.ajax({\r\n // type: \"POST\",\r\n // url: http://anyerr.primarysolutions.net/Default.aspx, //$.webServer.anyerr,\r\n // data: dataString,\r\n // success: function() {\r\n // }\r\n //});\r\n}\r\n\r\nfunction saveDefaultLocationValueAjax(switchCase, locationId) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveDefaultLocationValue/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction saveDefaultLocationNameAjax(switchCase, locationName) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveDefaultLocationName/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationName\":\"' + locationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\nfunction updateVersionAjax() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateVersion/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"version\":\"' + $.session.version + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n}\r\n\r\n//Infal login. Will look differently and possibly be moved. Putting here for functionality tests.\r\nfunction checkLogin() {\r\n $.ajax({\r\n type: 'POST',\r\n //url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n // \"/\" + $.webServer.serviceName + \"/getURL/\",\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/ValidateLogin/',\r\n data: '{\"id\":\"' + $('#userIDInfal').val() + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n allowAccess(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\n//Going to call on login to see if a connection for Infal exists in the webconfig\r\nfunction checkInfalConnectionAjax(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/CheckInfalConnection/',\r\n data: '{}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (response.CheckInfalConnectionResult == 'Connection') {\r\n $.session.infalHasConnectionString = true;\r\n }\r\n if ($.session.infalOnly) {\r\n dashboard.load();\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n}\r\n\r\n//Gets user permissions pertaining to what modules they can see.\r\nfunction getUserPermissions(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserPermissions/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n\r\n $.session.permissionString = response.getUserPermissionsResult;\r\n\r\n const caseNotesPerm = $.session.permissionString.find(obj => obj.window_name === 'EnableCaseNotes');\r\n const supervisorPerm = $.session.permissionString.find(obj => obj.window_name === 'Supervisor');\r\n const docTimePerm = $.session.permissionString.find(obj => obj.window_name === 'UpdateDocTime');\r\n const caseNoteDocTimePerm = $.session.permissionString.find(obj => obj.window_name === 'Anywhere Case Notes');\r\n const adminSEPerm = $.session.permissionString.find(obj => obj.window_name === 'SESupervisorApprove');\r\n\r\n $.session.CaseNotesTablePermissionView = caseNotesPerm && caseNotesPerm.permission === 'Y' ? true : false;\r\n $.session.ViewAdminSingleEntry = supervisorPerm && supervisorPerm.permission === 'Y' ? true : false;\r\n $.session.UpdateCaseNotesDocTime =\r\n docTimePerm &&\r\n caseNoteDocTimePerm &&\r\n docTimePerm.permission === 'Update Doc Time' &&\r\n caseNoteDocTimePerm.permission === 'Update Doc Time'\r\n ? true\r\n : false;\r\n $.session.SEViewAdminWidget = adminSEPerm && adminSEPerm.permission === 'Y' ? true : false;\r\n\r\n setSessionVariables();\r\n\r\n //check to see which modules should be disabled\r\n checkModulePermissions();\r\n\r\n if (callback) callback();\r\n\r\n $('#userName').text($.session.Name);\r\n $('#firstName').text($.session.Name);\r\n $('#lastName').text($.session.LName);\r\n },\r\n });\r\n}\r\n\r\nfunction featureLogging(appName) {\r\n if (appName != 'roster') {\r\n var featureDescription = 'Anywhere ' + appName;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/featureLogging/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"featureDescription\":\"' + featureDescription + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction getDefaultAnywhereSettings() {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDefaultAnywhereSettingsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n res = response.getDefaultAnywhereSettingsJSONResult;\r\n res = res[0];\r\n\r\n $.session.anAdmin = res.admistrator;\r\n $.session.defaultCaseNoteReviewDays = res.setting_value === '' ? '7' : res.setting_value;\r\n $.session.defaultProgressNoteReviewDays = res.notes_days_back === '' ? '99' : res.notes_days_back;\r\n $.session.defaultIncidentTrackingDaysBack =\r\n res.incidentTracking_days_back === '' ? '7' : res.incidentTracking_days_back;\r\n $.session.defaultProgressNoteChecklistReviewDays = res.checklist_days_back === '' ? '7' : res.checklist_days_back;\r\n $.session.anywhereMinutestotimeout = res.minutesToTimeout === '' ? '15' : res.minutesToTimeout;\r\n $.session.removeGoalsWidget = res.removeGoalsWidget === 'Y' ? true : false;\r\n $.session.seAdminRemoveMap = res.removeSEAdminMap === 'Y' ? true : false;\r\n $.session.isASupervisor = res.isASupervisor === '' ? false : true;\r\n $.session.sttEnabled = res.sttEnabled === 'Y' ? true : false;\r\n $.session.watchingConnection = '';\r\n $.session.azureSTTApi = res.azureSttApi;\r\n $.session.reportSeconds = res.reportSeconds;\r\n $.session.incidentTrackingPopulateIncidentDate = res.incidentTrackingPopulateIncidentDate;\r\n $.session.incidentTrackingPopulateIncidentTime = res.incidentTrackingPopulateIncidentTime;\r\n $.session.incidentTrackingPopulateReportedDate = res.incidentTrackingPopulateReportedDate;\r\n $.session.incidentTrackingPopulateReportedTime = res.incidentTrackingPopulateReportedTime;\r\n\r\n $.session.incidentTrackingShowCauseAndContributingFactors =\r\n res.incidentTrackingShowCauseAndContributingFactors === 'Y' ? true : false;\r\n $.session.incidentTrackingShowPreventionPlan = res.incidentTrackingShowPreventionPlan === 'Y' ? true : false;\r\n\r\n $.session.updateIncidentSummaryText = res.appendITSummary === 'Y' ? true : false;\r\n $.session.updateIncidentActionText = res.appendITImmediateAction === 'Y' ? true : false;\r\n $.session.updateIncidentPreventionText = res.appendITPreventionPlan === 'Y' ? true : false;\r\n $.session.updateIncidentCauseText = res.appendITCause === 'Y' ? true : false;\r\n $.session.planFormCarryover = res.planFormCarryover === 'Y' ? true : false;\r\n //Waiting List\r\n $.session.sendWaitingListEmail = true;// res.sendWaitingListEmail === 'Y' ? true : false;\r\n //Hide stuff\r\n $.session.useAbsentFeature = res.useAbsentFeature;\r\n $.session.billableTransportation = res.billableTransportation;\r\n $.session.ohioEVVChangeDate = res.ohioEVVChangeDate; \r\n $.session.anyRequireEndTime = res.anyRequireEndTime;\r\n $.session.useProgressNotes = res.useProgressNotes;\r\n $.session.applicationName = res.application;\r\n $.session.portraitPath = res.portraitPath;\r\n $.session.anywhereMainPermission = res.anywhereMainPermission;\r\n $.session.outcomesPermission = res.outcomesPermission;\r\n $.session.dayServicesPermission = res.dayServicesPermission;\r\n $.session.caseNotesPermission = res.caseNotesPermission;\r\n $.session.incidentTrackingPermission = res.incidentTrackingPermission;\r\n $.session.singleEntryPermission = res.singleEntryPermission;\r\n $.session.workshopPermission = res.workshopPermission;\r\n $.session.intellivuePermission = res.intellivuePermission;\r\n $.session.schedulingPermission = res.schedulingPermission;\r\n $.session.anywhereSchedulingPermission = res.anywhereSchedulingPermission;\r\n $.session.covidPermission = res.covidPermission;\r\n $.session.webPermission = res.webPermission; //Should be set equal to Web when true\r\n $.session.transportationPermission = res.transportationPermission;\r\n $.session.emarPermission = res.emarPermission;\r\n $.session.formsPermission = res.formsPermission;\r\n $.session.OODPermission = res.OODPermission;\r\n // TODO: ASH\r\n //$.session.anywhereAuthorizationsPermission = res.anywhereAuthorizationsPermission;\r\n $.session.anywherePlanPermission = res.anywherePlanPermission;\r\n $.session.singleEntryApproveEnabled = res.singleEntryApproveEnabled;\r\n $.session.singleEntryLocationRequired = res.singleEntryLocationRequired;\r\n $.session.singleEntryShowConsumerSignature = res.seShowConsumerSignature;\r\n $.session.singleEntryShowConsumerNote = res.seShowConsumerNote;\r\n $.session.singleEntryShowTransportation = res.seShowTransportation;\r\n $.session.schedAllowCallOffRequests = res.allowCallOffRequests;\r\n $.session.schedRequestOpenShifts = res.requestOpenShifts;\r\n $.session.oneSpan = res.oneSpan;\r\n\r\n $.session.anywhereResetPasswordPermission = res.anywhereResetPasswordPermission;\r\n $.session.anywhereConsumerFinancesPermission = res.anywhereConsumerFinancesPermission;\r\n $.session.anywhereEmploymentPermission = res.anywhereEmploymentPermission;\r\n //Default Work\r\n //.session.\r\n $.session.defaultRosterLocation = res.defaultrosterlocation;\r\n $.session.defaultRosterLocationName = res.defaultrosterlocationname;\r\n $.session.defaultRosterGroupValue = res.defaultrostergroup;\r\n $.session.defaultDayServiceLocation =\r\n res.defaultdayservicelocation === 'notDSCertified' ? '' : res.defaultdayservicelocation;\r\n $.session.defaultDayServiceLocationName = res.defaultdayservicelocationname;\r\n $.session.dsCertified = res.defaulttimeclocklocation === 'notDSCertified' ? false : true;\r\n $.session.defaultDSTimeClockValue = res.defaulttimeclocklocation;\r\n $.session.defaultDSTimeClockName = res.defaulttimeclocklocationName;\r\n $.session.defaultWorkshopLocationValue = res.defaultworkshoplocation;\r\n $.session.defaultWorkshopLocation = res.defaultworkshoplocationname;\r\n $.session.defaultMoneyManagementLocationValue = res.defaultMoneyManagementLocation;\r\n $.session.defaultMoneyManagementLocation = res.defaultMoneyManagementLocationName; \r\n //$.session.defaultDSTimeClockName = res.defaulttimeclocklocationname;\r\n //database state - Indiana or Ohio\r\n $.session.stateAbbreviation = res.stateAbbreviation;\r\n //Set session peopleId for use in ADV Plan\r\n $.session.planPeopleId = res.planPeopleId;\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n $.session.caseNotesWarningStartTime = res.warningStartTime;\r\n $.session.caseNotesWarningEndTime = res.warningEndTime;\r\n }\r\n\r\n /////////\r\n defaultRosterLocationValue = res.defaultrosterlocation;\r\n defaultRosterLocationName = res.defaultrosterlocationname;\r\n defaultDayServiceLocationValue = res.defaultdayservicelocation;\r\n defaultDayServiceLocationName = res.defaultdayservicelocationname;\r\n defaultTimeClockLocationValue = res.defaulttimeclocklocation;\r\n defaultTimeClockLocationName = res.defaulttimeclocklocationname;\r\n defaultWorkshopLocationValue = res.defaultworkshoplocation;\r\n defaultWorkshopLocationName = res.defaultworkshoplocationname;\r\n defaultRosterGroupValue = res.defaultrostergroup;\r\n defaultRosterGroupName = res.defaultrostergroupname;\r\n $.session.defaultWorkshopLocation = defaultWorkshopLocationName;\r\n\r\n //setDefaultCookies(\r\n //\tdefaultRosterLocationValue,\r\n //\tdefaultRosterLocationName,\r\n //\tdefaultDayServiceLocationValue,\r\n //\tdefaultDayServiceLocationName,\r\n //\tdefaultTimeClockLocationValue,\r\n //\tdefaultTimeClockLocationName,\r\n //\tdefaultWorkshopLocationValue,\r\n //\tdefaultWorkshopLocationName,\r\n //\tdefaultRosterGroupValue,\r\n //\tdefaultRosterGroupName\r\n //);\r\n\r\n $('#casenotesdaysback').val($.session.defaultCaseNoteReviewDays);\r\n $('#progressnotesdaysback').val($.session.defaultProgressNoteReviewDays);\r\n $('#progressnoteschecklistdaysback').val($.session.defaultProgressNoteChecklistReviewDays);\r\n $('#incidenttrackingdaysback').val($.session.defaultIncidentTrackingDaysBack);\r\n\r\n disableModules();\r\n loadApp('home');\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n\r\n//function setDefaultCookies(\r\n//\tdefaultRosterLocationValue,\r\n//\tdefaultRosterLocationName,\r\n//\tdefaultDayServiceLocationValue,\r\n//\tdefaultDayServiceLocationName,\r\n//\tdefaultTimeClockLocationValue,\r\n//\tdefaultTimeClockLocationName,\r\n//\tdefaultWorkshopLocationValue,\r\n//\tdefaultWorkshopLocationName,\r\n//\tdefaultRosterGroupValue,\r\n//\tdefaultRosterGroupName\r\n//) {\r\n//\tcreateCookie('defaultDayServiceLocation', defaultDayServiceLocationValue, 7);\r\n//\tcreateCookie('defaultDayServiceLocationName', defaultDayServiceLocationName, 7);\r\n//\tcreateCookie('defaultDayServiceLocationNameValue', defaultDayServiceLocationValue, 7);\r\n\r\n//\tif (defaultDayServiceLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultDayServiceLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultDayServiceLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tcreateCookie('defaultRosterLocation', defaultRosterLocationValue, 7);\r\n//\tcreateCookie('defaultRosterLocationName', defaultRosterLocationName, 7);\r\n\r\n//\tif (defaultRosterLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultRosterLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultRosterLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tif (defaultWorkshopLocationName == 'Remember Last Location') {\r\n//\t\tcreateCookie('defaultWorkshopLocationFlag', true, 7);\r\n//\t} else {\r\n//\t\tcreateCookie('defaultWorkshopLocationFlag', false, 7);\r\n//\t}\r\n\r\n//\tcreateCookie('defaultTimeClockLocationName', defaultTimeClockLocationName, 7);\r\n//\tcreateCookie('defaultTimeClockLocationValue', defaultTimeClockLocationValue, 7);\r\n//\tcreateCookie('defaultWorkshopLocationName', defaultWorkshopLocationName, 7);\r\n//\tcreateCookie('defaultWorkshopLocationValue', defaultWorkshopLocationValue, 7);\r\n//\tcreateCookie('defaultRosterGroupName', defaultRosterGroupName, 7);\r\n//\tcreateCookie('defaultRosterGroupValue', defaultRosterGroupValue, 7);\r\n//}\r\n\r\nfunction authenticatedLogin(key) {\r\n //insertData must userName and genKey\r\n const insertData = {\r\n userName: $('#username').val().trim(),\r\n genKey: key,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/authenticatedLogin/',\r\n data: JSON.stringify(insertData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n if (\r\n response.authenticatedLoginResult === 'Invalid key' ||\r\n response.authenticatedLoginResult === 'Too many failed attempts' ||\r\n response.authenticatedLoginResult === 'Expired key'\r\n ) {\r\n mfa.mfaReject(response.authenticatedLoginResult);\r\n return;\r\n }\r\n var res = JSON.stringify(response);\r\n eraseCookie('psiuser');\r\n if ($('permissions', res).is('*') && $('#username').val().toUpperCase() == 'PSI') {\r\n $.session.isPSI = true;\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n createCookie('psiuser', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n UTIL.LS.setStorage('device', $.session.deviceGUID, $('#username').val());\r\n $.session.deviceGUID = '';\r\n eraseCookie('psi');\r\n createCookie('psi', res, 1);\r\n success = true;\r\n document.location.href = 'anywhere.html';\r\n } else if (res.indexOf('609') > -1) {\r\n customPasswordChange();\r\n } else {\r\n $('#error').css('opacity', '1');\r\n $('#error').css('display', 'block');\r\n if ($('#error').hasClass('hippaRestriction')) {\r\n $('#errortext').text('Password cannot match a recently used password');\r\n } else if ($('#error').hasClass('userInputError')) {\r\n $('#errortext').text('Invalid username or password');\r\n } else if (res.indexOf('608') > -1) {\r\n $('#errortext').text('This user name does not exist in demographics.');\r\n } else {\r\n $('#errortext').text('Login unsuccessful');\r\n }\r\n }\r\n },\r\n error: function (xhr, status, error) {},\r\n complete: function () {\r\n // hide gif here, eg:\r\n $('body').css('cursor', 'auto');\r\n },\r\n });\r\n}\r\n","/*!\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","const resetPassword = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let INACTIVE_CHKBOX;\r\n let userTableData = [];\r\n let tempUserTableData = [];\r\n let displayedUsers = [];\r\n\r\n var userTable;\r\n var changePasswordPopup;\r\n var savePasswordBtn;\r\n var cancelPasswordBtn;\r\n var confirmPasswordInput;\r\n var newPasswordInput;\r\n var isCardDisabled = false;\r\n var newPasswordValue = null;\r\n var confirmPasswordValue = null;\r\n var selectedUserID;\r\n var isChecked;\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n \r\n DOM.ACTIONCENTER.appendChild(topNav); \r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n \r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n isChecked = $.session.isActiveUsers;\r\n loadReviewPage(isChecked);\r\n document.getElementById('searchBtn').click(); \r\n }\r\n\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n\r\n function changePasswordBtn() {\r\n return button.build({\r\n text: 'Change Password',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n }\r\n\r\n function buildInactiveChkBox() {\r\n return input.buildCheckbox({\r\n text: 'Show Inactives',\r\n id: 'chkInacive',\r\n callback: () => setCheckForInactiveUser(event.target),\r\n isChecked: $.session.isActiveUsers,\r\n });\r\n }\r\n\r\n function buildActiveChkBox(checked) {\r\n return input.buildCheckbox({\r\n isChecked: checked === 'Y' ? true : false,\r\n callback: () => setCheckForInactiveUser(event.target),\r\n });\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n columnHeadings: ['User Name', 'Last Name', 'First Name'],\r\n endIcon: true,\r\n secondendIconHeading: 'Active',\r\n secondendIcon: true,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n function buildChangePasswordPopup(userId, userFirstName, UserLastName) {\r\n selectedUserID = userId;\r\n var popupClassNames = isCardDisabled\r\n ? ['resetPasswordPopup', 'popup--filter', 'disabled']\r\n : ['resetPasswordPopup', 'popup--filter'];\r\n\r\n changePasswordPopup = POPUP.build({\r\n classNames: popupClassNames,\r\n hideX: true,\r\n });\r\n\r\n newPasswordInput = input.build({\r\n id: 'newPasswordInput',\r\n label: 'New Password',\r\n type: 'password',\r\n style: 'secondary',\r\n value: newPasswordValue,\r\n });\r\n\r\n confirmPasswordInput = input.build({\r\n id: 'confirmPasswordInput',\r\n label: 'Confirm Password',\r\n type: 'password',\r\n style: 'secondary',\r\n class: 'input-field__input',\r\n value: confirmPasswordValue,\r\n });\r\n\r\n savePasswordBtn = button.build({\r\n id: 'savePasswordBtn',\r\n text: 'Change',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n });\r\n\r\n cancelPasswordBtn = button.build({\r\n text: 'Cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n classNames: 'cancelTransBtn',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(savePasswordBtn);\r\n btnWrap.appendChild(cancelPasswordBtn);\r\n\r\n var header = document.createElement('h3');\r\n header.innerHTML = userId + ` - ` + userFirstName + ' ' + UserLastName;\r\n var headerSpace = document.createElement('h3');\r\n headerSpace.innerHTML = '';\r\n\r\n var errortext = document.createElement('div');\r\n errortext.innerHTML = `

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

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

${Name} ${Phone}

`;\r\n headingName.innerHTML = `

DD Number: ${DDNumber}

`;\r\n localNumberheading.innerHTML = `

Local Number: ${LocalNumber}

`;\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n head.appendChild(heading);\r\n head.appendChild(headingName);\r\n head.appendChild(localNumberheading);\r\n headingWrap.appendChild(head);\r\n headingWrap.appendChild(BACK_BTN);\r\n\r\n DOM.ACTIONCENTER.appendChild(headingWrap);\r\n DOM.ACTIONCENTER.appendChild(ispWrap);\r\n DOM.autosizeTextarea(); \r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n targetSection.classList.add('active');\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (index === 0) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n await vendorGeneral.init(vendorID);\r\n await vendorServices.init(vendorID);\r\n await vendorUCR.init(vendorID);\r\n await vendorProviderType.init(vendorID);\r\n await vendorCertification.init(vendorID);\r\n await vendorLocationReview.init(vendorID);\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (index === 0) { \r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshVendor,\r\n getMarkup,\r\n };\r\n})();\r\n","const vendorCertification = (() => {\r\n let vendorID;\r\n let certificationEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n certificationEntries = await authorizationsAjax.getVenderCertificationEntriesAsync(vendorID);\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const vendorCertificationWrap = document.createElement('div');\r\n vendorCertificationWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewCertificationForm();\r\n vendorCertificationWrap.appendChild(importantTables);\r\n\r\n return vendorCertificationWrap;\r\n }\r\n\r\n function buildNewCertificationForm() {\r\n const vendorCertificationDiv = document.createElement('div');\r\n vendorCertificationDiv.classList.add('additionalQuestionWrap');\r\n\r\n certificationEntriesTable = buildCertificationEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Certification
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(certificationEntriesTable);\r\n vendorCertificationDiv.appendChild(column1);\r\n return vendorCertificationDiv;\r\n }\r\n\r\n function buildCertificationEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable', \r\n columnHeadings: ['Certification', 'Start Date', 'End Date'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = certificationEntries.getVenderCertificationEntriesResult.map((entry) => ({\r\n values: [entry.Certifiction, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY')],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewCertificationForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorGeneral = (() => {\r\n let vendorID;\r\n let vendorEntriesById;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n vendorEntriesById = await authorizationsAjax.getVendorEntriesByIdAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const workScheduleWrap = document.createElement('div');\r\n workScheduleWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildVendorGeneralForm();\r\n workScheduleWrap.appendChild(importantTables);\r\n\r\n return workScheduleWrap;\r\n }\r\n\r\n function buildVendorGeneralForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n\r\n nameInput = input.build({\r\n id: 'nameInput',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].name,\r\n });\r\n contactNameInput = input.build({\r\n id: 'contactNameInput',\r\n type: 'text',\r\n label: 'Contact Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactName,\r\n });\r\n contactPhoneInput = input.build({\r\n id: 'contactPhoneInput',\r\n type: 'text',\r\n label: 'Contact Phone',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactPhone,\r\n });\r\n contactEmailInput = input.build({\r\n id: 'contactEmailInput',\r\n type: 'text',\r\n label: 'Contact Email',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].contactEmail,\r\n });\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n type: 'text',\r\n label: 'Address 1',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].address1,\r\n });\r\n address2Input = input.build({\r\n id: 'address2Input',\r\n type: 'text',\r\n label: 'Address 2',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].address2,\r\n });\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n type: 'text',\r\n label: 'City',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].city,\r\n });\r\n stateInput = input.build({\r\n id: 'ststeInput',\r\n type: 'text',\r\n label: 'State',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].state,\r\n });\r\n zipInput = input.build({\r\n id: 'zipInput',\r\n type: 'text',\r\n label: 'Zip Code',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].zipCode,\r\n });\r\n phoneInput = input.build({\r\n id: 'phoneInput',\r\n type: 'text',\r\n label: 'Phone',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].primaryPhone,\r\n });\r\n firstNameInput = input.build({\r\n id: 'Input',\r\n type: 'text',\r\n label: 'First Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerFirstName,\r\n });\r\n lastNameInput = input.build({\r\n id: 'lastNameInput',\r\n type: 'text',\r\n label: 'Last Name',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerLastName,\r\n });\r\n birthDateInput = input.build({\r\n id: 'birthDateInput',\r\n type: 'text',\r\n label: 'Birth Date',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerBirthDate == '' ? '' : moment(vendorEntriesById.getVendorEntriesByIdResult[0].providerBirthDate).format('MM/DD/YYYY'),\r\n });\r\n buildingNumberInput = input.build({\r\n id: 'buildingNumberInput',\r\n type: 'text',\r\n label: 'Building Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].providerBuildingNumber,\r\n });\r\n salesforceIDInput = input.build({\r\n id: 'salesforceIDInput',\r\n type: 'text',\r\n label: 'Salesforce ID',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].salesforceId,\r\n });\r\n DDStateNumberInput = input.build({\r\n id: 'DDStateNumberInput',\r\n type: 'text',\r\n label: 'DD State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].DDStateNumber,\r\n });\r\n einInput = input.build({\r\n id: 'einInput',\r\n type: 'text',\r\n label: 'EIN',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].ein,\r\n });\r\n submitterInput = input.build({\r\n id: 'submitterInput',\r\n type: 'text',\r\n label: 'Submitter',\r\n readonly: true,\r\n style: 'secondary',\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].submitterId,\r\n });\r\n localNumberInput = input.build({\r\n id: 'localNumberInput',\r\n type: 'text',\r\n label: 'Local Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].LocalNumber,\r\n });\r\n SSNInput = input.build({\r\n id: 'SSNInput',\r\n type: 'text',\r\n label: 'SSN',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].ssn,\r\n });\r\n senderInput = input.build({\r\n id: 'senderInput',\r\n type: 'text',\r\n label: 'Sender ',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].sender,\r\n });\r\n MHStateNumberInput = input.build({\r\n id: 'MHStateNumberInput',\r\n type: 'text',\r\n label: 'MH State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].MHStateNumber,\r\n });\r\n TDDStateNumberInput = input.build({\r\n id: 'TDDStateNumberInput',\r\n type: 'text',\r\n label: 'TDD State Number',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].TDDStateNumber,\r\n });\r\n NPIInput = input.build({\r\n id: 'NPIInput',\r\n type: 'text',\r\n label: 'NPI',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].NPI,\r\n });\r\n MHNPIInput = input.build({\r\n id: 'MHNPIInput',\r\n type: 'text',\r\n label: 'MH NPI',\r\n style: 'secondary',\r\n readonly: true,\r\n value: vendorEntriesById.getVendorEntriesByIdResult[0].MHNPI,\r\n });\r\n\r\n inGoodStandingchkBox = input.buildCheckbox({\r\n text: 'In Good Standing',\r\n id: 'chkinGoodStanding',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].goodStanding == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n takingNewReferralschkBox = input.buildCheckbox({\r\n text: 'Taking New Referrals',\r\n id: 'chktakingNewReferrals',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].takingNewReferrals == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n FSSVendorchkBox = input.buildCheckbox({\r\n text: 'FSS Vendor',\r\n id: 'chkFSSVendor',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].FSSVendor == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n sanctionsAdministeredchkBox = input.buildCheckbox({\r\n text: 'Sanctions Administered',\r\n id: 'chkSanctionsAdministered',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].sanctionsAdministered == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n inHomeServiceschkBox = input.buildCheckbox({\r\n text: 'In Home Services',\r\n id: 'chkInHomeServices',\r\n isChecked: vendorEntriesById.getVendorEntriesByIdResult[0].homeServices == 'Y' ? true : false,\r\n isDisabled: true,\r\n style: 'secondary',\r\n });\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
General
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Contact Information'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n\r\n nameInput.classList.add('marginTop2Per');\r\n addNewCardBody.appendChild(nameInput);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('vendorDTWrap');\r\n contactNameInput.classList.add('width35Per');\r\n dropWrap.appendChild(contactNameInput);\r\n contactPhoneInput.classList.add('width30Per');\r\n dropWrap.appendChild(contactPhoneInput);\r\n contactEmailInput.classList.add('width30Per'); \r\n dropWrap.appendChild(contactEmailInput);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var dropWrap1 = document.createElement('div');\r\n dropWrap1.classList.add('vendorDTWrap');\r\n address1Input.classList.add('width50Per');\r\n dropWrap1.appendChild(address1Input);\r\n address2Input.classList.add('width50Per');\r\n dropWrap1.appendChild(address2Input);\r\n addNewCardBody.appendChild(dropWrap1);\r\n\r\n var dropWrap2 = document.createElement('div');\r\n dropWrap2.classList.add('vendorDTWrap');\r\n cityInput.classList.add('width30Per');\r\n dropWrap2.appendChild(cityInput);\r\n stateInput.classList.add('width10Per');\r\n dropWrap2.appendChild(stateInput);\r\n zipInput.classList.add('width20Per');\r\n dropWrap2.appendChild(zipInput);\r\n phoneInput.classList.add('width32Per');\r\n dropWrap2.appendChild(phoneInput);\r\n addNewCardBody.appendChild(dropWrap2);\r\n\r\n const consumerNameDisplay1 = document.createElement(\"p\");\r\n consumerNameDisplay1.classList.add(\"heading\");\r\n consumerNameDisplay1.innerHTML = `${'Ohio ISP Information'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay1);\r\n\r\n var dropWrap3 = document.createElement('div');\r\n dropWrap3.classList.add('marginTop2Per');\r\n dropWrap3.classList.add('vendorDTWrap');\r\n firstNameInput.classList.add('width25Per');\r\n dropWrap3.appendChild(firstNameInput);\r\n lastNameInput.classList.add('width23Per');\r\n dropWrap3.appendChild(lastNameInput);\r\n birthDateInput.classList.add('width23Per');\r\n dropWrap3.appendChild(birthDateInput);\r\n buildingNumberInput.classList.add('width23Per');\r\n dropWrap3.appendChild(buildingNumberInput);\r\n addNewCardBody.appendChild(dropWrap3);\r\n\r\n var dropWrap4 = document.createElement('div');\r\n dropWrap4.classList.add('vendorDTWrap');\r\n salesforceIDInput.classList.add('width40Per');\r\n dropWrap4.appendChild(salesforceIDInput);\r\n addNewCardBody.appendChild(dropWrap4);\r\n\r\n const consumerNameDisplay2 = document.createElement(\"p\");\r\n consumerNameDisplay2.classList.add(\"heading\");\r\n consumerNameDisplay2.innerHTML = `${'Billing/Authorization'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay2);\r\n\r\n var dropWrap5 = document.createElement('div');\r\n dropWrap5.classList.add('marginTop2Per');\r\n dropWrap5.classList.add('vendorDTWrap');\r\n DDStateNumberInput.classList.add('width19Per');\r\n dropWrap5.appendChild(DDStateNumberInput);\r\n einInput.classList.add('width18Per');\r\n dropWrap5.appendChild(einInput);\r\n submitterInput.classList.add('width18Per');\r\n dropWrap5.appendChild(submitterInput);\r\n localNumberInput.classList.add('width18Per');\r\n dropWrap5.appendChild(localNumberInput);\r\n SSNInput.classList.add('width18Per');\r\n dropWrap5.appendChild(SSNInput);\r\n addNewCardBody.appendChild(dropWrap5);\r\n\r\n var dropWrap6 = document.createElement('div');\r\n dropWrap6.classList.add('vendorDTWrap');\r\n senderInput.classList.add('width19Per');\r\n dropWrap6.appendChild(senderInput);\r\n MHStateNumberInput.classList.add('width18Per');\r\n dropWrap6.appendChild(MHStateNumberInput);\r\n TDDStateNumberInput.classList.add('width18Per');\r\n dropWrap6.appendChild(TDDStateNumberInput);\r\n NPIInput.classList.add('width18Per');\r\n dropWrap6.appendChild(NPIInput);\r\n MHNPIInput.classList.add('width18Per');\r\n dropWrap6.appendChild(MHNPIInput);\r\n addNewCardBody.appendChild(dropWrap6);\r\n\r\n const consumerNameDisplay3 = document.createElement(\"p\");\r\n consumerNameDisplay3.classList.add(\"heading\");\r\n consumerNameDisplay3.innerHTML = `${'Miscellaneous'}`;\r\n addNewCardBody.appendChild(consumerNameDisplay3);\r\n\r\n var chkDiv = document.createElement('div');\r\n chkDiv.classList.add('marginTop2Per');\r\n chkDiv.appendChild(inGoodStandingchkBox);\r\n addNewCardBody.appendChild(chkDiv);\r\n\r\n var chkDiv1 = document.createElement('div');\r\n chkDiv1.appendChild(takingNewReferralschkBox);\r\n addNewCardBody.appendChild(chkDiv1);\r\n\r\n var chkDiv2 = document.createElement('div');\r\n chkDiv2.appendChild(FSSVendorchkBox);\r\n addNewCardBody.appendChild(chkDiv2);\r\n\r\n var chkDiv3 = document.createElement('div');\r\n chkDiv3.appendChild(sanctionsAdministeredchkBox);\r\n addNewCardBody.appendChild(chkDiv3);\r\n\r\n var chkDiv4 = document.createElement('div');\r\n chkDiv4.appendChild(inHomeServiceschkBox);\r\n addNewCardBody.appendChild(chkDiv4);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n return employeeInfoDiv;\r\n }\r\n\r\n return {\r\n init,\r\n buildVendorGeneralForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorInfo = (function () {\r\n let SEARCH_WRAP;\r\n let SEARCH_BTN;\r\n let SEARCH_INPUT;\r\n let userTableData = [];\r\n let tempUserTableData = [];\r\n let displayedUsers = [];\r\n var userTable;\r\n\r\n let btnWrap;\r\n let vendorBtnWrap;\r\n let DDNumberBtnWrap;\r\n let localNumberBtnWrap;\r\n let goodStandingBtnWrap;\r\n let homeServicesBtnWrap;\r\n let takingNewReferralsBtnWrap;\r\n let fundingSourceBtnWrap;\r\n let serviceCodeBtnWrap;\r\n\r\n let vendorsData;\r\n let groupedVendors;\r\n let vendorGroupCount;\r\n let activeGroup;\r\n let loadMoreVendors = [];\r\n let chunkedArray;\r\n //filter\r\n let filterValues;\r\n function init() {\r\n filterValues = undefined;\r\n vendorInfoLoad();\r\n }\r\n\r\n async function vendorInfoLoad() {\r\n DOM.clearActionCenter();\r\n const topNav = buildRosterTopNav();\r\n userTable = buildTable();\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n topNav.classList.add('marginBottomFilter');\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n\r\n DOM.ACTIONCENTER.appendChild(topNav); \r\n DOM.ACTIONCENTER.appendChild(filterRow);\r\n DOM.ACTIONCENTER.appendChild(userTable);\r\n DOM.ACTIONCENTER.appendChild(LOAD_MORE_BTN);\r\n document.getElementById('loadMoreBtn').style.display = 'none'; \r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n tableUserSearch(event.target.value);\r\n });\r\n await loadReviewPage();\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) filterValues = {\r\n token: $.session.Token,\r\n vendor: '%',\r\n DDNumber: '',\r\n localNumber: '',\r\n goodStanding: '%',\r\n homeServices: '%',\r\n takingNewReferrals: '%',\r\n fundingSource: '%',\r\n serviceCode: '%',\r\n }\r\n }\r\n\r\n function buildTable() {\r\n var tableOptions = {\r\n plain: false,\r\n headline: 'Vendor Info',\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Name', 'DD Number', 'Local Number', 'Contact', 'Phone'],\r\n callback: handleVendorInfoTableEvents,\r\n endIcon: false,\r\n secondendIcon: false,\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n\r\n function populateTable(results) {\r\n userTableData = results.map(td => {\r\n var vendorID = td.vendorID;\r\n var name = td.name;\r\n var DDNumber = td.DDNumber;\r\n var localNumber = td.localNumber;\r\n var contact = td.contact;\r\n var phone = td.phone;\r\n\r\n return {\r\n vendorID: vendorID,\r\n name: name,\r\n DDNumber: DDNumber,\r\n localNumber: localNumber,\r\n contact: contact,\r\n phone: phone,\r\n values: [name, DDNumber, localNumber, contact, formatPhoneNumber(phone)],\r\n attributes: [\r\n { key: 'vendorId', value: vendorID },\r\n ],\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 }\r\n else {\r\n document.getElementById('loadMoreBtn').style.display = 'block';\r\n } \r\n }\r\n\r\n function handleVendorInfoTableEvents(event) {\r\n var name = event.target.childNodes[0].innerText;\r\n var DDNum = event.target.childNodes[1].innerText;\r\n var localNum = event.target.childNodes[2].innerText;\r\n var phone = event.target.childNodes[4].innerText;\r\n var vendorId = event.target.attributes.vendorId.value;\r\n newVendorInfo.refreshVendor(vendorId, DDNum, localNum, phone, name);\r\n }\r\n\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n SEARCH_BTN = buildSearchBtn();\r\n buildNewFilterBtn();\r\n\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search vendors');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n var wrap1 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n btnWrap.appendChild(wrap1);\r\n return btnWrap;\r\n }\r\n\r\n function tableUserSearch(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n displayedUsers = [];\r\n\r\n tempUserTableData.forEach(consumer => {\r\n var Name = consumer.name.toLowerCase();\r\n var fullName = `${Name}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n\r\n if (matchesName !== -1) {\r\n consumerObj = {\r\n vendorID: consumer.vendorID,\r\n name: consumer.name,\r\n DDNumber: consumer.DDNumber,\r\n localNumber: consumer.localNumber,\r\n contact: consumer.contact,\r\n phone: consumer.phone,\r\n };\r\n displayedUsers.push(consumerObj);\r\n }\r\n });\r\n\r\n groupVendorData(displayedUsers); \r\n }\r\n\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.vendor === '%' || filterValues.vendor === 'ALL') {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n btnWrap.removeChild(vendorBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vendorBtnWrap);\r\n }\r\n\r\n if (filterValues.DDNumber === '') {\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n btnWrap.removeChild(DDNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(DDNumberBtnWrap);\r\n }\r\n\r\n if (filterValues.localNumber === '') {\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n btnWrap.removeChild(localNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(localNumberBtnWrap);\r\n }\r\n\r\n if (filterValues.goodStanding === '%' || filterValues.goodStanding === 'ALL') {\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n btnWrap.removeChild(goodStandingBtnWrap);\r\n } else {\r\n btnWrap.appendChild(goodStandingBtnWrap);\r\n }\r\n\r\n if (filterValues.homeServices === '%' || filterValues.homeServices === 'ALL') {\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n btnWrap.removeChild(homeServicesBtnWrap);\r\n } else {\r\n btnWrap.appendChild(homeServicesBtnWrap);\r\n }\r\n\r\n if (filterValues.takingNewReferrals === '%' || filterValues.takingNewReferrals === 'ALL') {\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n btnWrap.removeChild(takingNewReferralsBtnWrap);\r\n } else {\r\n btnWrap.appendChild(takingNewReferralsBtnWrap);\r\n }\r\n\r\n if (filterValues.fundingSource === '%' || filterValues.fundingSource === 'ALL') {\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n btnWrap.removeChild(fundingSourceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(fundingSourceBtnWrap);\r\n }\r\n if (filterValues.serviceCode === '%' || filterValues.serviceCode === 'ALL') {\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n btnWrap.removeChild(serviceCodeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceCodeBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\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: () => { buildFilterPopUp('DDNumberBtn') },\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: () => { buildFilterPopUp('DDNumberBtn') },\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: () => { closeFilter('DDNumberBtn') },\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: () => { buildFilterPopUp('localNumberBtn') },\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: () => { closeFilter('localNumberBtn') },\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: () => { buildFilterPopUp('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 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: () => { buildFilterPopUp('goodStandingBtn') },\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: () => { closeFilter('goodStandingBtn') },\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: () => { buildFilterPopUp('homeServicesBtn') },\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: () => { closeFilter('homeServicesBtn') },\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: () => { buildFilterPopUp('takingNewReferralsBtn') },\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: () => { closeFilter('takingNewReferralsBtn') },\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: () => { buildFilterPopUp('fundingSourceBtn') },\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: () => { closeFilter('fundingSourceBtn') },\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: () => { buildFilterPopUp('serviceCodeBtn') },\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: () => { closeFilter('serviceCodeBtn') },\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();\r\n }\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')\r\n filterPopup.appendChild(vendorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'DDNumberBtn')\r\n filterPopup.appendChild(DDNumberInput);\r\n if (IsShow == 'ALL' || IsShow == 'localNumberBtn')\r\n filterPopup.appendChild(localNumberInput);\r\n if (IsShow == 'ALL' || IsShow == 'goodStandingBtn')\r\n filterPopup.appendChild(goodStandingDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'homeServicesBtn')\r\n filterPopup.appendChild(homeServicesDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'takingNewReferralsBtn')\r\n filterPopup.appendChild(takingNewReferralsDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'fundingSourceBtn')\r\n filterPopup.appendChild(fundingSourceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceCodeBtn')\r\n 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();\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\r\n const {\r\n getVendorResult: Vendor,\r\n } = 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 {\r\n getFundingSourceResult: FundingSource,\r\n } = 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 {\r\n getServiceCodeResult: ServiceCode,\r\n } = 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() {\r\n var DDNum = filterValues.DDNumber == '' ? '%' : filterValues.DDNumber;\r\n var localNum = filterValues.localNumber == '' ? '%' : filterValues.localNumber;\r\n await authorizationsAjax.getVendorInfoAsync({\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 }\r\n\r\n function pouplateVendors() { \r\n if (!groupedVendors[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 loadMoreVendors = loadMoreVendors.concat(groupedVendors[activeGroup]);\r\n populateTable(loadMoreVendors);\r\n }\r\n\r\n async function groupVendorData(vendors) { \r\n const chunkBy = 50;\r\n chunkedArray = vendors ? UTIL.chunkArray(vendors, chunkBy) : UTIL.chunkArray(vendorsData, chunkBy);\r\n groupedVendors = {};\r\n chunkedArray.forEach((a, index) => (groupedVendors[index] = a));\r\n const vendorKeys = Object.keys(groupedVendors);\r\n vendorGroupCount = vendorKeys && vendorKeys.length;\r\n activeGroup = 0;\r\n loadMoreVendors = groupedVendors[activeGroup]; \r\n populateTable(loadMoreVendors); \r\n }\r\n\r\n function buildLoadMoreBtn() { \r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreVendorBtn');\r\n\r\n const btn = button.build({\r\n id: 'loadMoreBtn',\r\n text: 'Load More...', \r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n pouplateVendors();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(btn);\r\n\r\n return btnWrap;\r\n }\r\n\r\n function formatPhoneNumber(number) {\r\n if (number == '' || number == ' ') return '';\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(number.substr(0, 10));\r\n const phoneExt = number.substr(10);\r\n\r\n const phonebracket = phoneNumber.substr(0, 3);\r\n const phonenum = phoneNumber.substr(4, 11);\r\n\r\n const phone = `(${phonebracket})` + ` ` + ` ${phonenum}` + ` ` + `${phoneExt}`;\r\n\r\n return phone;\r\n }\r\n\r\n return {\r\n init,\r\n vendorInfoLoad,\r\n };\r\n})();\r\n","const vendorLocationReview = (() => {\r\n let vendorID;\r\n let locationReviewEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n locationReviewEntries = await authorizationsAjax.getVenderLocationReviewEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const locatationReviewWrap = document.createElement('div');\r\n locatationReviewWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorLocationReviewForm();\r\n locatationReviewWrap.appendChild(importantTables);\r\n\r\n return locatationReviewWrap;\r\n }\r\n\r\n function buildNewVendorLocationReviewForm() {\r\n const locatationReviewDiv = document.createElement('div');\r\n locatationReviewDiv.classList.add('additionalQuestionWrap');\r\n\r\n locationReviewEntriesTable = buildLocationReviewEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Location Review
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(locationReviewEntriesTable);\r\n locatationReviewDiv.appendChild(column1);\r\n return locatationReviewDiv;\r\n }\r\n\r\n function buildLocationReviewEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable', \r\n columnHeadings: ['Location ', 'Review Type', 'Due Date', 'Completed Date', 'Responsible Staff'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = locationReviewEntries.getVenderLocationReviewEntriesResult.map((entry) => ({\r\n values: [entry.location, entry.reviewType, entry.dueDate == '' ? '' : moment(entry.dueDate).format('MM/DD/YYYY'), entry.completedDate == '' ? '' : moment(entry.completedDate).format('MM/DD/YYYY'), entry.responsibleStaff],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewVendorLocationReviewForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorProviderType = (() => {\r\n let vendorID;\r\n let providerTypeEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n providerTypeEntries = await authorizationsAjax.getProviderTypeEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const vendorProviderWrap = document.createElement('div');\r\n vendorProviderWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorProviderTypeForm();\r\n vendorProviderWrap.appendChild(importantTables);\r\n\r\n return vendorProviderWrap;\r\n }\r\n\r\n function buildNewVendorProviderTypeForm() {\r\n const vendorProviderDiv = document.createElement('div');\r\n vendorProviderDiv.classList.add('additionalQuestionWrap');\r\n\r\n providerTypeEntriesTable = buildProviderTypeEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Provider Type
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(providerTypeEntriesTable);\r\n vendorProviderDiv.appendChild(column1);\r\n return vendorProviderDiv;\r\n }\r\n\r\n function buildProviderTypeEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Provider Type', 'Start Date', 'End Date', 'Notes'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = providerTypeEntries.getProviderTypeEntriesResult.map((entry) => ({\r\n values: [entry.ProviderType, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY'), entry.Notes],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewVendorProviderTypeForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorServices = (() => {\r\n let vendorID;\r\n let ServicesEntries;\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n ServicesEntries = await authorizationsAjax.getVenderServicesEntriesAsync(vendorID);\r\n }\r\n\r\n function getMarkup() {\r\n const vendorServicesWrap = document.createElement('div');\r\n vendorServicesWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorServicesForm();\r\n vendorServicesWrap.appendChild(importantTables);\r\n\r\n return vendorServicesWrap;\r\n }\r\n\r\n function buildNewVendorServicesForm() {\r\n const vendorServicesDiv = document.createElement('div');\r\n vendorServicesDiv.classList.add('additionalQuestionWrap');\r\n\r\n serviceEntriesTable = buildServicesEntriesTable();\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
Services
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(serviceEntriesTable);\r\n vendorServicesDiv.appendChild(column1);\r\n return vendorServicesDiv;\r\n }\r\n\r\n function buildServicesEntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoTable',\r\n columnHeadings: ['Funding Source', 'Service Code', 'Service Description'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = ServicesEntries.getVenderServicesEntriesResult.map((entry) => ({\r\n values: [entry.fundingSource, entry.serviceCode, entry.serviceDescription], \r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n return {\r\n init,\r\n buildNewVendorServicesForm,\r\n getMarkup,\r\n };\r\n})(); ","const vendorUCR = (() => {\r\n\r\n let vendorID;\r\n let UCREntries;\r\n\r\n\r\n async function init(vendorId) {\r\n vendorID = vendorId;\r\n UCREntries = await authorizationsAjax.getVenderUCREntriesAsync(vendorID);\r\n }\r\n\r\n\r\n function getMarkup() {\r\n const vendorUCRWrap = document.createElement('div');\r\n vendorUCRWrap.classList.add('planSummary');\r\n\r\n const importantTables = buildNewVendorUCRForm();\r\n vendorUCRWrap.appendChild(importantTables);\r\n\r\n return vendorUCRWrap;\r\n }\r\n\r\n function buildNewVendorUCRForm() {\r\n const vendorUCRDiv = document.createElement('div');\r\n vendorUCRDiv.classList.add('additionalQuestionWrap');\r\n\r\n UCREntriesTable = buildUCREntriesTable();\r\n\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
UCR
`;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(UCREntriesTable);\r\n vendorUCRDiv.appendChild(column1);\r\n return vendorUCRDiv;\r\n }\r\n\r\n function buildUCREntriesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'vendorInfoUCRTable',\r\n columnHeadings: ['Service ', 'Group Size', 'Service Location', 'CDB Category', 'Assessment/ Acuity Score', 'Start Date', 'End Date', 'UCR'],\r\n endIcon: false,\r\n };\r\n\r\n let tableData = UCREntries.getVenderUCREntriesResult.map((entry) => ({\r\n values: [entry.service, entry.groupSize, entry.serviceLocation, entry.CDBCategory, entry.assessmentAcuityScore, entry.startDate == '' ? '' : moment(entry.startDate).format('MM/DD/YYYY'), entry.endDate == '' ? '' : moment(entry.endDate).format('MM/DD/YYYY'), entry.UCR == '' ? entry.UCR : '$' + entry.UCR],\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewVendorUCRForm,\r\n getMarkup,\r\n };\r\n})(); ","//test df\r\nvar caseNotes = (function () {\r\n function loadCaseNotesLanding() {\r\n let newBtn = button.build({\r\n text: 'New Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n note.init('new');\r\n },\r\n });\r\n let newSSABtn = button.build({\r\n text: 'New SSA Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n noteSSA.init('new');\r\n },\r\n });\r\n\r\n let overviewBtn = button.build({\r\n text: 'Review Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: notesOverview.init,\r\n });\r\n let editPhrasesBtn = button.build({\r\n text: 'Edit My Phrases',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: cnEditPhrases.init,\r\n });\r\n let tryNewCaseNotes = button.build({\r\n text: 'NEW! Case Note Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: CaseNotes.init,\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n btnWrap.appendChild(tryNewCaseNotes);\r\n if ($.session.CaseNotesUpdate && $.session.CaseNotesSSANotes) btnWrap.appendChild(newSSABtn);\r\n if ($.session.CaseNotesUpdate) btnWrap.appendChild(newBtn);\r\n btnWrap.appendChild(overviewBtn);\r\n btnWrap.appendChild(editPhrasesBtn);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n //PERMISSION// caseNotesUpdate === false means they have view only permisison\r\n //Can't create new notes or update/delete notes. -- Skip the landing, and just load the overview page\r\n if (!$.session.CaseNotesUpdate) {\r\n notesOverview.init();\r\n return;\r\n }\r\n loadCaseNotesLanding();\r\n }\r\n\r\n return {\r\n load: init,\r\n };\r\n})();\r\n","var caseNotesAjax = (function () {\r\n // GET\r\n function getFilteredCaseNotesList(data, callback) {\r\n const spinner = PROGRESS.SPINNER.get('Loading Overlaps...');\r\n const reviewTable = document.querySelector('#caseNotesReviewTable .table__body');\r\n const submitData = {\r\n token: $.session.Token,\r\n billerId: data.billerId,\r\n consumerId: data.consumer,\r\n serviceStartDate: data.serviceDateStart,\r\n serviceEndDate: data.serviceDateEnd,\r\n dateEnteredStart: data.enteredDateStart,\r\n dateEnteredEnd: data.enteredDateEnd,\r\n billingCode: data.billingCode,\r\n reviewStatus: data.reviewStatus,\r\n location: data.location,\r\n service: data.service,\r\n need: data.need,\r\n contact: data.contact,\r\n confidential: data.confidential,\r\n corrected: data.corrected,\r\n billed: data.billed,\r\n attachments: data.attachments,\r\n overlaps: data.overlaps,\r\n noteText: data.noteText !== '' ? `%${data.noteText}%` : '',\r\n applicationName: $.session.applicationName,\r\n outcomeServiceMonitoring: data.outcomeServiceMonitoring\r\n };\r\n if (data.overlaps === 'Y') {\r\n reviewTable.innerHTML = '';\r\n reviewTable.appendChild(spinner);\r\n spinner.style.top = 0;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/caseNotesFilteredSearchJSON/',\r\n // data:\r\n // '{\"token\":\"' +\r\n // $.session.Token +\r\n // '\", \"billerId\":\"' +\r\n // data.billerId +\r\n // '\", \"consumerId\":\"' +\r\n // data.consumer +\r\n // '\", \"serviceStartDate\":\"' +\r\n // data.serviceDateStart +\r\n // '\", \"serviceEndDate\":\"' +\r\n // data.serviceDateEnd +\r\n // '\", \"dateEnteredStart\":\"' +\r\n // data.enteredDateStart +\r\n // '\", \"dateEnteredEnd\":\"' +\r\n // data.enteredDateEnd +\r\n // '\", \"billingCode\":\"' +\r\n // data.billingCode +\r\n // '\", \"reviewStatus\":\"' +\r\n // data.reviewStatus +\r\n // '\", \"location\":\"' +\r\n // data.location +\r\n // '\", \"service\":\"' +\r\n // data.service +\r\n // '\", \"need\":\"' +\r\n // data.need +\r\n // '\", \"contact\":\"' +\r\n // data.contact +\r\n // '\", \"confidential\":\"' +\r\n // data.confidential +\r\n // '\", \"billed\":\"' +\r\n // data.billed +\r\n // '\", \"attachments\":\"' +\r\n // data.attachments +\r\n // '\", \"overlaps\":\"' +\r\n // data.overlaps +\r\n // '\", \"noteText\":\"' +\r\n // data.noteText +\r\n // '\"}',\r\n data: JSON.stringify(submitData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.caseNotesFilteredSearchJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCaseNoteEdit(noteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseNoteEditJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"noteId\":\"' + noteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCaseNoteEditJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getGroupNoteId(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGroupNoteId/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getGroupNoteIdResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDropdownData(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateDropdownData/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumersThatCanHaveMileage(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersThatCanHaveMileageJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumersThatCanHaveMileageJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getBillersListForDropDown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getBillersListForDropDownJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getBillersListForDropDownJSONResult;\r\n // var allString = '000All';\r\n // res = res.slice(0, 45) + allString + res.slice(45);\r\n // createBillerDropdown(res);\r\n callback(res);\r\n // if ($.session.CaseNotesCaseloadRestriction == false) {\r\n // \tconvertDaysBackForCaseNoteLoadFilter($.session.defaultCaseNoteReviewDays);\r\n // }\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getReviewRequiredForCaseManager(caseManagerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getReviewRequiredForCaseManager/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseManagerId\":\"' + caseManagerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getReviewRequiredForCaseManagerResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCaseNoteAttachmentsList(caseNoteId, cb) {\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseNoteAttachmentsList/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCaseNoteAttachmentsListResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function getConsumerSpecificVendors(consumerId, serviceDate, callback) {\r\n if (consumerId == '' || consumerId == undefined) {\r\n consumerId = $.session.caseNoteConsumerId;\r\n }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerSpecificVendorsJSON/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\", \"serviceDate\":\"' + serviceDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerSpecificVendorsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getServiceLocationsForCaseNoteDropDown(data, callback) {\r\n //** OBJ **\r\n // data = { serviceDate, consumerId }\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceLocationsForCaseNoteDropDown/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getServiceLocationsForCaseNoteDropDownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function caseNoteOverlapCheck(data, callback) {\r\n // data = {consumerId, startTime, endTime, serviceDate, caseManagerId, noteId, groupNoteId}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/caseNoteOverlapCheck/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\", \"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.caseNoteOverlapCheckResult);\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n // SAVE, UPDATE, DELETE\r\n function saveSingleCaseNote(data, callback) {\r\n // saveCaseNote\r\n data = {\r\n token: $.session.Token,\r\n noteId: data.noteId,\r\n caseManagerId: data.caseManagerId,\r\n consumerId: data.consumerId,\r\n serviceOrBillingCodeId: data.serviceOrBillingCodeId,\r\n locationCode: data.locationCode,\r\n serviceCode: data.serviceCode,\r\n needCode: data.needCode,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n vendorId: data.vendorId,\r\n contactCode: data.contactCode,\r\n serviceLocationCode: data.serviceLocationCode,\r\n caseNote: data.caseNote,\r\n reviewRequired: data.reviewRequired,\r\n confidential: data.confidential,\r\n corrected: data.corrected,\r\n casenotemileage: data.casenotemileage,\r\n casenotetraveltime: data.casenotetraveltime,\r\n documentationTime: data.documentationTime,\r\n outcomeServiceMonitoring: data.serviceMonitoring\r\n };\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveCaseNote/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n callback(response.saveCaseNoteResult);\r\n },\r\n });\r\n }\r\n function saveGroupCaseNote(data, callback) {\r\n // saveGroupCaseNote\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveGroupCaseNote/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\",\"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\",\"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\", \"locationCode\":\"' +\r\n data.locationCode +\r\n '\", \"serviceCode\":\"' +\r\n data.serviceCode +\r\n '\", \"needCode\":\"' +\r\n data.needCode +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"vendorId\":\"' +\r\n data.vendorId +\r\n '\", \"contactCode\":\"' +\r\n data.contactCode +\r\n '\", \"serviceLocationCode\":\"' +\r\n data.serviceLocationCode +\r\n '\", \"caseNote\":\"' +\r\n data.caseNote +\r\n '\", \"reviewRequired\":\"' +\r\n data.reviewRequired +\r\n '\", \"confidential\":\"' +\r\n data.confidential +\r\n '\", \"consumerGroupCount\":\"' +\r\n data.consumerGroupCount +\r\n '\", \"casenotemileage\":\"' +\r\n data.casenotemileage +\r\n '\", \"casenotetraveltime\":\"' +\r\n data.casenotetraveltime +\r\n '\", \"documentationTime\":\"' +\r\n data.documentationTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function saveAdditionalGroupCaseNote(data, callback) {\r\n // saveAdditionalGroupCaseNote\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveAdditionalGroupCaseNote/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\",\"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\",\"caseManagerId\":\"' +\r\n data.caseManagerId +\r\n '\", \"consumerId\":\"' +\r\n data.consumerId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\", \"locationCode\":\"' +\r\n data.locationCode +\r\n '\", \"serviceCode\":\"' +\r\n data.serviceCode +\r\n '\", \"needCode\":\"' +\r\n data.needCode +\r\n '\", \"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\", \"vendorId\":\"' +\r\n data.vendorId +\r\n '\", \"contactCode\":\"' +\r\n data.contactCode +\r\n '\", \"serviceLocationCode\":\"' +\r\n data.serviceLocationCode +\r\n '\", \"reviewRequired\":\"' +\r\n data.reviewRequired +\r\n '\", \"confidential\":\"' +\r\n data.confidential +\r\n '\", \"caseNote\":\"' +\r\n data.caseNote +\r\n '\", \"casenotemileage\":\"' +\r\n data.casenotemileage +\r\n '\", \"casenotetraveltime\":\"' +\r\n data.casenotetraveltime +\r\n '\", \"documentationTime\":\"' +\r\n data.documentationTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n }\r\n function updateGroupNoteValues(data, callback) {\r\n // updateGroupNoteValues\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateGroupNoteValues/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"groupNoteId\":\"' +\r\n data.groupNoteId +\r\n '\", \"noteId\":\"' +\r\n data.noteId +\r\n '\", \"serviceOrBillingCodeId\":\"' +\r\n data.serviceOrBillingCodeId +\r\n '\",\"serviceDate\":\"' +\r\n data.serviceDate +\r\n '\", \"startTime\":\"' +\r\n data.startTime +\r\n '\", \"endTime\":\"' +\r\n data.endTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n });\r\n }\r\n async function deleteExistingCaseNote(noteId) {\r\n try {\r\n const data = {\r\n token: $.session.Token,\r\n noteId: noteId,\r\n };\r\n const res = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteExistingCaseNote/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n // success: function (response, status, xhr) {\r\n // \tvar res = JSON.stringify(response);\r\n // },\r\n // error: function (xhr, status, error) {\r\n // \t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n // },\r\n });\r\n return res.deleteExistingCaseNoteResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // ATTACHMENTS\r\n function addCaseNoteAttachment(caseNoteId, desc, attachmentType, buf, cb) {\r\n // let abString = btoa(String.fromCharCode.apply(null, new Uint8Array(buf)))\r\n var binary = '';\r\n var bytes = new Uint8Array(buf);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n description: desc,\r\n attachmentType: attachmentType,\r\n attachment: abString,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addCaseNoteAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deleteCaseNoteAttachmentResult;\r\n if (cb) cb(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function deleteCaseNoteAttachment(caseNoteId, attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n caseNoteId: caseNoteId,\r\n attachmentId: attachmentId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCaseNoteAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deleteCaseNoteAttachmentResult;\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n function viewCaseNoteAttachment(attachmentId) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n // PHRASES\r\n function getCustomPhrases(showAll, cb) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCustomPhrases/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"showAll\":\"' + showAll + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomPhrasesResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function insertCustomPhrases(shortcut, phrase, makePublic, cb) {\r\n data = {\r\n token: $.session.Token,\r\n shortcut: shortcut,\r\n phrase: phrase,\r\n makePublic: makePublic,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertCustomPhrase/',\r\n //data: '{\"token\":\"' + $.session.Token + '\", \"shortcut\":\"' + shortcut + '\", \"phrase\":\"' + phrase + '\", \"makePublic\":\"' + makePublic + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getCustomPhraseResult;\r\n cb(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getConsumersForCNFilter(callback) {\r\n data = {\r\n token: $.session.Token,\r\n caseLoadOnly: $.session.CaseNotesCaseloadRestriction ? 'Y' : 'N',\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersForCNFilter/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumersForCNFilterResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n\r\n // REPORTS\r\n function generateCNDetailReport(filterValues, callback) {\r\n //data = {\r\n // token: $.session.Token,\r\n // userId: $.session.UserId,\r\n // billerId: filterValues.billerId,\r\n // consumerId: filterValues.consumer,\r\n // consumerName: filterValues.consumerName,\r\n // serviceStartDate: filterValues.serviceDateStart,\r\n // serviceEndDate: filterValues.serviceDateEnd,\r\n // enteredDateStart: filterValues.enteredDateStart,\r\n // enteredDateEnd: filterValues.enteredDateEnd,\r\n // billingCode: filterValues.billingCode,\r\n // location: filterValues.location,\r\n // service: filterValues.service,\r\n // need: filterValues.need,\r\n // contact: filterValues.contact,\r\n // applicationName: $.session.applicationName\r\n //}\r\n if (filterValues.billCodeText == null || filterValues.billCodeText == undefined) {\r\n filterValues.billCodeText = 'All';\r\n }\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n billerId: filterValues.billerId,\r\n consumerId: filterValues.consumer,\r\n consumerName: filterValues.consumerName,\r\n serviceStartDate: filterValues.serviceDateStart,\r\n serviceEndDate: filterValues.serviceDateEnd,\r\n location: filterValues.location,\r\n originallyEnteredStart: filterValues.enteredDateStart,\r\n originallyEnteredEnd: filterValues.enteredDateEnd,\r\n billingCode: filterValues.billCodeText,\r\n service: filterValues.service,\r\n need: filterValues.need,\r\n contact: filterValues.contact,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateCNDetailReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateCNDetailReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function generateCNTimeAnalysisReport(filterValues, callback) {\r\n //string token, string userId, string billerId, string consumerId, string billingCode, string applicationName\r\n if (filterValues.billCodeText == null || filterValues.billCodeText == undefined) {\r\n filterValues.billCodeText = 'All';\r\n }\r\n data = {\r\n token: $.session.Token,\r\n userId: $.session.UserId,\r\n billerId: filterValues.billerId,\r\n consumerId: filterValues.consumer,\r\n consumerName: filterValues.consumerName,\r\n billingCode: filterValues.billCodeText,\r\n serviceStartDate: filterValues.serviceDateStart,\r\n serviceEndDate: filterValues.serviceDateEnd,\r\n applicationName: $.session.applicationName,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateCNTimeAnalysisReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateCNTimeAnalysisReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function checkIfCNReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfCNReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfCNReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function viewCaseNoteReport(reportScheduleId) {\r\n data = {\r\n reportScheduleId: reportScheduleId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCaseNoteReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'reportScheduleId');\r\n attachmentInput.setAttribute('value', reportScheduleId);\r\n attachmentInput.id = 'reportScheduleId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n // OTHER\r\n function getCNPopulateFilterDropdowns(serviceCodeId) {\r\n // Pass % service code on initial load and when service code/bill code == ALL\r\n data = {\r\n token: $.session.Token,\r\n serviceCodeId: serviceCodeId,\r\n };\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCNPopulateFilterDropdowns/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getSSAServiceOptionsDropdown(consumerId, serviceDate, callback) {\r\n if (consumerId == '' || consumerId == undefined) {\r\n consumerId = $.session.caseNoteConsumerId;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSSAServiceOptionsDropdown/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + serviceDate + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSSAServiceOptionsDropdownResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getCaseLoadRestriction(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseLoadRestriction/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getCaseLoadRestrictionResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getSSABillCodesFromService(serviceName, servicePersonApproved, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSSABillCodesFromService/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceName\":\"' +\r\n serviceName +\r\n '\", \"personApproved\":\"' +\r\n servicePersonApproved +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSSABillCodesFromServiceResult;\r\n callback(res, servicePersonApproved);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n getConsumersThatCanHaveMileage,\r\n getBillersListForDropDown,\r\n getFilteredCaseNotesList,\r\n getConsumerSpecificVendors,\r\n getCaseNoteEdit,\r\n getReviewRequiredForCaseManager,\r\n getDropdownData,\r\n getGroupNoteId,\r\n getServiceLocationsForCaseNoteDropDown,\r\n getCaseLoadRestriction,\r\n // saving & updating\r\n caseNoteOverlapCheck,\r\n saveSingleCaseNote,\r\n saveGroupCaseNote,\r\n saveAdditionalGroupCaseNote,\r\n updateGroupNoteValues,\r\n deleteExistingCaseNote,\r\n getCustomPhrases,\r\n insertCustomPhrases,\r\n deleteCaseNoteAttachment,\r\n addCaseNoteAttachment,\r\n viewCaseNoteAttachment,\r\n getCaseNoteAttachmentsList,\r\n getConsumersForCNFilter,\r\n getCNPopulateFilterDropdowns,\r\n getSSAServiceOptionsDropdown,\r\n getSSABillCodesFromService,\r\n generateCNDetailReport,\r\n generateCNTimeAnalysisReport,\r\n checkIfCNReportExists,\r\n viewCaseNoteReport,\r\n };\r\n})();\r\n","var caseNotesTimer = (function() {\r\n function clearTimerOnSave() {\r\n clearInterval($.caseNotes.interval);\r\n clearTimeout($.caseNotes.inactTime);\r\n clearInterval(inactivityTime);\r\n clearTimeout(inactivityTime);\r\n //$.caseNotes.inactTime = 0;\r\n $.caseNotes.documentTimeSeconds = 0;\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n }\r\n function pauseTimer(fromInactive) {\r\n clearInterval($.caseNotes.interval);\r\n clearTimeout($.caseNotes.inactTime);\r\n clearTimeout($.caseNotes.inactiveTimeForClear);\r\n clearInterval(inactivityTime);\r\n clearTimeout(inactivityTime);\r\n $.caseNotes.inactTime = 0;\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n $('#cnTimerStart').css('background', '#eee');\r\n $('#minutes').attr('contenteditable', 'true');\r\n $('#minutes').removeClass('unclickableElement');\r\n $('#editcasenotetimer').removeClass('unclickableElement');\r\n if (fromInactive) {\r\n } else {\r\n displayDocTime(); //\r\n }\r\n }\r\n function resetTimer() {\r\n if ($.caseNotes.dontResetInactTimerFlag == false) {\r\n clearTimeout($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactiveTimeForClear);\r\n clearTimeout($.caseNotes.inactiveTimeForClear);\r\n clearTimeout(inactivityTime);\r\n $.caseNotes.inactTime = setTimeout(logout, 120000);\r\n }\r\n }\r\n function logout() {\r\n //alert(\"Your documentation time has been paused.\");\r\n clearInterval(inactivityTime);\r\n clearInterval($.caseNotes.inactTime);\r\n clearInterval($.caseNotes.inactiveTimeForClear);\r\n clearTimeout(inactivityTime);\r\n var answer = confirm('Your documentation time has been paused. Continue timing');\r\n if (answer) {\r\n resetTimer();\r\n } else {\r\n pauseTimer(true);\r\n }\r\n }\r\n var inactivityTime = function() {\r\n $.caseNotes.inactTime = setTimeout(logout, 120000);\r\n $.caseNotes.inactiveTimeForClear = $.caseNotes.inactTime;\r\n var t;\r\n window.onload = resetTimer;\r\n document.onmousemove = resetTimer;\r\n document.onkeypress = resetTimer;\r\n };\r\n function startCaseNoteTimer(state, timeInSeconds) {\r\n $('#minutes').attr('contenteditable', 'false');\r\n $('#editcasenotetimer').addClass('unclickableElement');\r\n $('#minutes').addClass('unclickableElement');\r\n inactivityTime();\r\n var minutesLabel = document.getElementById('minutes');\r\n var totalSeconds = 0;\r\n totalSeconds = $.caseNotes.documentTimeSeconds;\r\n $.caseNotes.interval = setInterval(setTime, 1000);\r\n $('#cnTimerStart').css('background', 'green');\r\n function setTime() {\r\n ++totalSeconds;\r\n $.caseNotes.documentTimeSeconds = totalSeconds;\r\n }\r\n }\r\n\r\n\r\n return {\r\n clearTimerOnSave,\r\n startCaseNoteTimer\r\n }\r\n\r\n\r\n})();","var documentationTimer = (function () {\r\n var runningTime = 0;\r\n var saveTime;\r\n var inactTime;\r\n var timer;\r\n var minutes;\r\n var startBtn;\r\n let timerRunning = false;\r\n\r\n function clearTimer() {\r\n clearTimeout(inactTime);\r\n clearInterval(timer);\r\n window.onload = null;\r\n document.onmousemove = null;\r\n document.onkeypress = null;\r\n runningTime = 0;\r\n minutes = 0;\r\n inactTime = null;\r\n timer = null;\r\n }\r\n\r\n var inactivityTime = function () {\r\n inactTime = setTimeout(inactiveAlert, 120000);\r\n };\r\n\r\n function inactiveAlert() {\r\n //Speech to text, check if speech to text is listening, and reset inactivity if it is\r\n if (document.querySelector('.stt_listening')) {\r\n resetInactivityTimer();\r\n return;\r\n }\r\n clearTimeout(inactTime);\r\n clearInterval(timer);\r\n var answer = confirm('Your documentation time has been paused. Continue timing?');\r\n if (answer) {\r\n resetInactivityTimer();\r\n const start = Date.now() - runningTime * 1000;\r\n timer = setInterval(function () {\r\n const deltaMS = Date.now() - start; // milliseconds elapsed since start\r\n const deltaS = Math.floor(deltaMS / 1000);\r\n runningTime = deltaS;\r\n const newMinutes = Math.round(Math.floor(runningTime / 30) / 2);\r\n if (newMinutes !== minutes) {\r\n minutes = newMinutes;\r\n const minArea = document.getElementById('docTimeMinutesDisplay');\r\n minArea.value = minutes;\r\n }\r\n }, 1000);\r\n } else {\r\n // pauseTimer\r\n note.getTimeFromInactivity(stopTimer());\r\n }\r\n }\r\n\r\n function resetInactivityTimer() {\r\n clearTimeout(inactTime);\r\n inactTime = setTimeout(inactiveAlert, 120000);\r\n }\r\n\r\n function startPercisionTimer(prevTime) {\r\n if (timerRunning) {\r\n clearTimer();\r\n } else {\r\n docTimerMutationObserver();\r\n }\r\n\r\n let start;\r\n timerRunning = true;\r\n startBtn = document.getElementById('cnTimerStart');\r\n startBtn.dataset.toggled = 'true';\r\n\r\n if (prevTime) {\r\n const prevTimeMS = parseInt(prevTime) * 1000; // convert to ms\r\n start = Date.now() - prevTimeMS;\r\n } else {\r\n start = Date.now();\r\n }\r\n\r\n inactivityTime();\r\n\r\n timer = setInterval(function () {\r\n const deltaMS = Date.now() - start; // milliseconds elapsed since startm\r\n const deltaS = Math.floor(deltaMS / 1000);\r\n runningTime = deltaS;\r\n const newMinutes = Math.round(Math.floor(runningTime / 30) / 2);\r\n if (newMinutes !== minutes) {\r\n minutes = newMinutes;\r\n const minArea = document.getElementById('docTimeMinutesDisplay');\r\n minArea.value = minutes;\r\n }\r\n }, 1000);\r\n\r\n window.onload = resetInactivityTimer;\r\n document.onmousemove = resetInactivityTimer;\r\n document.onkeypress = resetInactivityTimer;\r\n }\r\n\r\n function stopTimer() {\r\n if (docTimerMutationObserver.disconnect) docTimerMutationObserver.disconnect();\r\n timerRunning = false;\r\n startBtn = document.getElementById('cnTimerStart');\r\n startBtn.dataset.toggled = 'false';\r\n saveTime = runningTime;\r\n clearTimer();\r\n return saveTime;\r\n }\r\n\r\n function docTimerMutationObserver() {\r\n const observNode = document.getElementById('actioncenter');\r\n const config = { attributes: true };\r\n const callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-section') {\r\n observer.disconnect();\r\n clearTimer();\r\n timerRunning = false;\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n\r\n function disconnect() {\r\n observer.disconnect();\r\n }\r\n\r\n observer.observe(observNode, config);\r\n docTimerMutationObserver.disconnect = disconnect;\r\n }\r\n\r\n return {\r\n startTimer: startPercisionTimer,\r\n stopTimer,\r\n };\r\n})();\r\n","const cnEditPhrases = (function() {\r\n //DOM\r\n let cardBody;\r\n let shortcutInput;\r\n let phraseInput;\r\n let pubCheckbox;\r\n let saveBtn;\r\n\r\n function buildCard() {\r\n let cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"card__header\");\r\n cardHeader.innerHTML = \"Edit My Phrases\";\r\n\r\n cardBody = document.createElement(\"div\");\r\n cardBody.classList.add(\"card__body\");\r\n\r\n let card = document.createElement(\"div\");\r\n card.classList.add(\"card\", \"editPhrases\");\r\n\r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n DOM.ACTIONCENTER.appendChild(card);\r\n }\r\n\r\n function buildInputs() {\r\n shortcutInput = input.build({\r\n label: \"Shortcut\",\r\n style: \"secondary\",\r\n charLimit: 10\r\n });\r\n phraseInput = input.build({\r\n label: \"Phrase\",\r\n type: \"textarea\",\r\n style: \"secondary\"\r\n });\r\n pubCheckbox = input.buildCheckbox({\r\n text: \"Publicly Available\"\r\n });\r\n saveBtn = button.build({\r\n id: \"phraseEditSaveBtn\",\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n callback: savePhrase\r\n });\r\n saveBtn.classList.add(\"disabled\")\r\n\r\n let cancelBtn = button.build({\r\n id: \"phraseEditCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: caseNotes.load\r\n });\r\n\r\n shortcutInput.classList.add(\"error\")\r\n phraseInput.classList.add(\"error\")\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n\r\n cardBody.appendChild(shortcutInput);\r\n cardBody.appendChild(phraseInput);\r\n cardBody.appendChild(pubCheckbox);\r\n cardBody.appendChild(btnWrap);\r\n eventListeners()\r\n }\r\n\r\n function eventListeners() {\r\n shortcutInput.addEventListener(\"keyup\", event => {\r\n if (event.target.value.length > 10 || event.target.value.length === 0) {\r\n shortcutInput.classList.add(\"error\")\r\n } else shortcutInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n shortcutInput.addEventListener(\"paste\", event => {\r\n if ((event.target.value.length + event.clipboardData.getData(\"text/plain\").length) > 10){\r\n shortcutInput.classList.add(\"error\")\r\n } else shortcutInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n phraseInput.addEventListener(\"keyup\", event => {\r\n if (event.target.value.length === 0) {\r\n phraseInput.classList.add(\"error\")\r\n } else phraseInput.classList.remove(\"error\")\r\n checkForError()\r\n })\r\n }\r\n\r\n function checkForError() {\r\n errors = document.querySelectorAll(\".error\");\r\n if (errors.length !== 0) {\r\n saveBtn.classList.add(\"disabled\")\r\n } else saveBtn.classList.remove(\"disabled\")\r\n }\r\n\r\n function savePhrase() {\r\n pendingSave.show(\"Saving Phrase...\")\r\n \r\n shortcut = UTIL.removeUnsavableNoteText(shortcutInput.querySelector(\".input-field__input\").value)\r\n phrase = UTIL.removeUnsavableNoteText(phraseInput.querySelector(\".input-field__input\").value)\r\n makePublic = pubCheckbox.getElementsByTagName(\"input\")[0].checked ? \"Y\" : \"N\";\r\n\r\n caseNotesAjax.insertCustomPhrases(shortcut, phrase, makePublic, res => {\r\n pendingSave.fulfill();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n caseNotes.load() \r\n }, 1000);\r\n })\r\n }\r\n\r\n function init() {\r\n DOM.clearActionCenter();\r\n buildCard();\r\n buildInputs();\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const CFEditAccount = (() => {\r\n //Inputs\r\n let CFConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n\r\n //filter\r\n let accountId = '0';\r\n let BtnName;\r\n let page;\r\n let load;\r\n let IsDisabledAccount = false;\r\n let accountPermission;\r\n let tempAccountPer;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n page = 'Update';\r\n load = 1;\r\n account = '';\r\n accountId = '0';\r\n await loadCFEditLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build OOD Module Landing Page \r\n async function loadCFEditLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n getaccountPermission();\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[selectedConsumers.length - 1].FullName;\r\n\r\n const resultAccount = await ConsumerFinancesAjax.getEditAccountAsync(selectedConsumersId, accountPermission);\r\n const { getEditAccountResult } = resultAccount;\r\n if (getEditAccountResult.length > 0 && load == 1) {\r\n account = getEditAccountResult[0].accountName;\r\n accountId = getEditAccountResult[0].accountId;\r\n }\r\n\r\n if (page == 'Update') {\r\n const topButton = buildHeaderButton();\r\n landingPage.appendChild(topButton);\r\n border = document.createElement('div');\r\n border.classList.add('borderLine');\r\n landingPage.appendChild(LineBr);\r\n landingPage.appendChild(LineBr);\r\n landingPage.appendChild(border);\r\n landingPage.appendChild(LineBr);\r\n }\r\n\r\n const importantAccountForm = await buildAccountForm();\r\n landingPage.appendChild(importantAccountForm);\r\n populateAccountDropdown();\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton() {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n CFConsumerBtns = buildButtonBar();\r\n consumerRow.appendChild(CFConsumerBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n // build display of \"New Account\" \r\n function buildButtonBar() {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const dropdownButtonBar = document.createElement('div');\r\n const entryButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '40%';\r\n entryButtonBar.style.width = '32%';\r\n\r\n accountDropdown = dropdown.build({\r\n label: \"Accounts:\",\r\n dropdownId: \"accountDropdown\",\r\n });\r\n\r\n accountDropdown.addEventListener('change', event => {\r\n accountId = event.target.value;\r\n account = event.target.options[event.target.selectedIndex].id;\r\n page = 'Update';\r\n load = 2;\r\n loadCFEditLanding();\r\n });\r\n\r\n const entryBtn = button.build({\r\n text: 'ADD ACCOUNT',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newEntryBtn',\r\n readonly: $.session.CFInsertAccounts,\r\n callback: async () => {\r\n if (!entryBtn.classList.contains('disabled')) {\r\n page = 'Add';\r\n loadCFEditLanding();\r\n }\r\n },\r\n });\r\n if ($.session.CFInsertAccounts) {\r\n entryBtn.classList.remove('disabled');\r\n }\r\n else {\r\n entryBtn.classList.add('disabled');\r\n }\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%';\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '10%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(entryButtonBar);\r\n return buttonBar;\r\n }\r\n\r\n async function buildAccountForm() {\r\n disabledEnabledAccounts();\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n name = '';\r\n number = '';\r\n type = '';\r\n status = '';\r\n classofAccount = null;\r\n dateClosed = null;\r\n lastReconciled = '';\r\n openingBalance = '';\r\n balance = '';\r\n description = '';\r\n dateOpened = null;\r\n\r\n nameTemp = '';\r\n numberTemp = '';\r\n typeTemp = '';\r\n statusTemp = '';\r\n classofAccountTemp = '';\r\n dateOpenedTemp = '';\r\n dateClosedTemp = '';\r\n openingBalanceTemp = '';\r\n descriptionTemp = '';\r\n\r\n if (page == 'Update') {\r\n if (accountId != '' && accountId != '0') {\r\n const result = await ConsumerFinancesAjax.getEditAccountInfoByIdAsync(accountId);\r\n const { getEditAccountInfoByIdResult } = result;\r\n name = getEditAccountInfoByIdResult[0].name;\r\n number = getEditAccountInfoByIdResult[0].number;\r\n type = getEditAccountInfoByIdResult[0].type;\r\n status = getEditAccountInfoByIdResult[0].status;\r\n classofAccount = getEditAccountInfoByIdResult[0].classofAccount;\r\n dateOpened = getEditAccountInfoByIdResult[0].dateOpened == '' ? null : moment(getEditAccountInfoByIdResult[0].dateOpened).format('YYYY-MM-DD');\r\n dateClosed = getEditAccountInfoByIdResult[0].dateClosed == '' ? null : moment(getEditAccountInfoByIdResult[0].dateClosed).format('YYYY-MM-DD');\r\n lastReconciled = getEditAccountInfoByIdResult[0].lastReconciled == '' ? null : moment(getEditAccountInfoByIdResult[0].lastReconciled).format('YYYY-MM-DD');\r\n openingBalance = getEditAccountInfoByIdResult[0].openingBalance;\r\n balance = getEditAccountInfoByIdResult[0].balance;\r\n description = getEditAccountInfoByIdResult[0].description;\r\n }\r\n else {\r\n account = '';\r\n }\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n BtnName = 'SAVE';\r\n dateOpened = UTIL.getTodaysDate();\r\n accountId = '0';\r\n account = '';\r\n }\r\n\r\n inputName = input.build({\r\n id: 'inputName',\r\n type: 'text',\r\n label: 'Name',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (name) ? name : '',\r\n });\r\n inputNumber = input.build({\r\n id: 'inputNumber',\r\n type: 'number',\r\n label: 'Number',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (number) ? number : '',\r\n });\r\n typeDropdown = dropdown.build({\r\n id: 'typeDropdown',\r\n label: \"Type\",\r\n dropdownId: \"typeDropdown\",\r\n readonly: IsDisabledAccount,\r\n value: (type) ? type : '',\r\n });\r\n statusDropdown = dropdown.build({\r\n id: 'statusDropdown',\r\n label: \"Status\",\r\n dropdownId: \"statusDropdown\",\r\n readonly: IsDisabledAccount,\r\n value: (status) ? status : '',\r\n });\r\n classDropdown = dropdown.build({\r\n id: 'classDropdown',\r\n label: \"Class\",\r\n dropdownId: \"classDropdown\",\r\n readonly: IsDisabledAccount,\r\n value: (classofAccount) ? classofAccount : '',\r\n });\r\n opendDate = input.build({\r\n id: 'opendDate',\r\n type: 'date',\r\n label: 'Date Opened',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (dateOpened) ? dateOpened : '',\r\n });\r\n closeDate = input.build({\r\n id: 'closeDate',\r\n type: 'date',\r\n label: 'Date Closed',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (dateClosed) ? dateClosed : '',\r\n });\r\n lastReconciledDate = input.build({\r\n id: 'lastReconciledDate',\r\n type: 'date',\r\n label: 'Last Reconciled',\r\n style: 'secondary',\r\n readonly: true,\r\n value: (lastReconciled) ? lastReconciled : '',\r\n });\r\n inputOpeningBal = input.build({\r\n id: 'inputOpeningBal',\r\n type: 'text',\r\n label: 'Opening Balance',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (openingBalance) ? '$' + openingBalance : '',\r\n });\r\n inputBal = input.build({\r\n id: 'inputBal',\r\n type: 'text',\r\n label: 'Balance',\r\n style: 'secondary',\r\n readonly: true,\r\n value: (balance) ? '$' + balance : '',\r\n });\r\n\r\n inputDesc = input.build({\r\n id: 'inputDesc',\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n readonly: IsDisabledAccount,\r\n value: (description) ? description : '',\r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n readonly: IsDisabledAccount,\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateAccount();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { cancleAccount() },\r\n });\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n if (page == 'Add') {\r\n addNewCard.innerHTML = `
${selectedConsumersName}
`;\r\n }\r\n else {\r\n addNewCard.innerHTML = `
${selectedConsumersName}
Account : ${account}
`;\r\n }\r\n\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('editAccountDTWrap');\r\n inputName.classList.add('width23Per');\r\n drWrap.appendChild(inputName);\r\n inputNumber.classList.add('width23Per');\r\n drWrap.appendChild(inputNumber);\r\n typeDropdown.classList.add('width16Per');\r\n drWrap.appendChild(typeDropdown);\r\n statusDropdown.classList.add('width16Per');\r\n drWrap.appendChild(statusDropdown);\r\n classDropdown.classList.add('width16Per');\r\n drWrap.appendChild(classDropdown);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n var drWrap1 = document.createElement('div');\r\n drWrap1.classList.add('editAccountDTWrap');\r\n drWrap1.classList.add('width50Per');\r\n opendDate.classList.add('width32Per');\r\n drWrap1.appendChild(opendDate);\r\n inputOpeningBal.classList.add('width32Per');\r\n drWrap1.appendChild(inputOpeningBal);\r\n closeDate.classList.add('width32Per');\r\n drWrap1.appendChild(closeDate);\r\n addNewCardBody.appendChild(drWrap1);\r\n\r\n var drWrap2 = document.createElement('div');\r\n drWrap2.classList.add('editAccountDTWrap');\r\n drWrap2.classList.add('width33Per');\r\n\r\n lastReconciledDate.classList.add('width50Per');\r\n drWrap2.appendChild(lastReconciledDate);\r\n inputBal.classList.add('width50Per');\r\n drWrap2.appendChild(inputBal);\r\n //addNewCardBody.appendChild(drWrap2); //Due to new requirenment hide reconciled and opening balance \r\n\r\n var drWrap3 = document.createElement('div');\r\n drWrap3.classList.add('editAccountDTWrap');\r\n inputDesc.classList.add('width50Per');\r\n drWrap3.appendChild(inputDesc);\r\n addNewCardBody.appendChild(drWrap3);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('editAccountBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateDropdown();\r\n eventListeners();\r\n\r\n checkRequiredFieldsOfAccountInfo(name, type, status, dateOpened, dateClosed);\r\n return employeeInfoDiv;\r\n }\r\n\r\n\r\n function disabledEnabledAccounts() {\r\n if ($.session.CFUpdateEditAccounts && page == 'Update') {\r\n IsDisabledAccount = false;\r\n }\r\n else if ($.session.CFInsertAccounts && page == 'Add') {\r\n IsDisabledAccount = false;\r\n }\r\n else {\r\n IsDisabledAccount = true;\r\n }\r\n }\r\n // Populate the Account DDL\r\n async function populateAccountDropdown() {\r\n const {\r\n getEditAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getEditAccountAsync(selectedConsumersId, accountPermission);\r\n\r\n let dataAccount = accounts.map((account) => ({\r\n id: account.accountName,\r\n value: account.accountId,\r\n text: account.accountName + ' - $' + (account.totalBalance == '' ? '0.00' : account.totalBalance)\r\n }));\r\n dropdown.populate(\"accountDropdown\", dataAccount, accountId);\r\n }\r\n\r\n async function populateDropdown() {\r\n const {\r\n getAccountClassResult: classAccount,\r\n } = await ConsumerFinancesAjax.getAccountClassAsync();\r\n let dataClass = classAccount.map((accountClass) => ({\r\n id: accountClass.SystemClass,\r\n value: accountClass.accountClass,\r\n text: accountClass.accountClass\r\n }));\r\n dataClass.unshift({ id: null, value: '', text: '' }); //ADD Blank value \r\n dropdown.populate(\"classDropdown\", dataClass, classofAccount);\r\n\r\n const typeData = ([\r\n { id: 1, value: 'A', text: 'Asset ' },\r\n { id: 2, value: 'L', text: 'Liability' },\r\n ]);\r\n typeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeDropdown\", typeData, type);\r\n\r\n const statusData = ([\r\n { id: 1, value: 'O', text: 'Open' },\r\n { id: 2, value: 'I', text: 'Inactive' },\r\n { id: 3, value: 'C', text: 'Closed' },\r\n ]);\r\n statusData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"statusDropdown\", statusData, status);\r\n }\r\n\r\n function eventListeners() {\r\n inputName.addEventListener('input', event => {\r\n nameTemp = 'Changed';\r\n name = event.target.value.trim();\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputNumber.addEventListener('input', event => {\r\n numberTemp = 'Changed';\r\n number = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n opendDate.addEventListener('input', event => {\r\n dateOpenedTemp = 'Changed';\r\n dateOpened = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n closeDate.addEventListener('input', event => {\r\n dateClosedTemp = 'Changed';\r\n dateClosed = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputDesc.addEventListener('input', event => {\r\n descriptionTemp = 'Changed';\r\n description = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n inputOpeningBal.addEventListener('input', event => {\r\n let minAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount) && minAmount != '') {\r\n document.getElementById('inputOpeningBal').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n else if (minAmount.includes('.') && (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('inputOpeningBal').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n openingBalance = minAmount.replace('$', '');\r\n openingBalanceTemp = 'Changed';\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n typeTemp = 'Changed';\r\n type = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n statusTemp = 'Changed';\r\n status = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n classDropdown.addEventListener('change', event => {\r\n classofAccountTemp = 'Changed';\r\n classofAccount = event.target.value;\r\n getRequiredFieldsOfAccountInfo();\r\n });\r\n }\r\n\r\n\r\n function getRequiredFieldsOfAccountInfo() {\r\n var openDateVal = opendDate.querySelector('#opendDate');\r\n var closeDateVal = closeDate.querySelector('#closeDate');\r\n var nameVal = inputName.querySelector('#inputName');\r\n var typeVal = typeDropdown.querySelector('#typeDropdown');\r\n var statusVal = statusDropdown.querySelector('#statusDropdown');\r\n checkRequiredFieldsOfAccountInfo(nameVal.value, typeVal.value, statusVal.value, openDateVal.value, closeDateVal.value)\r\n }\r\n\r\n function checkRequiredFieldsOfAccountInfo(nameVal, typeVal, statusVal, openDateVal, closeDateVal) {\r\n if (nameVal.trim() === '') {\r\n inputName.classList.add('error');\r\n } else {\r\n inputName.classList.remove('error');\r\n }\r\n\r\n if (typeVal === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (statusVal === '') {\r\n statusDropdown.classList.add('error');\r\n } else {\r\n statusDropdown.classList.remove('error');\r\n }\r\n\r\n if (openDateVal === '') {\r\n opendDate.classList.add('error');\r\n } else {\r\n opendDate.classList.remove('error');\r\n }\r\n\r\n if (closeDateVal != null && closeDateVal != '' && openDateVal > closeDateVal) {\r\n closeDate.classList.add('error');\r\n }\r\n else {\r\n closeDate.classList.remove('error');\r\n }\r\n setBtnStatusOfAccountInfo();\r\n }\r\n\r\n function setBtnStatusOfAccountInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (nameTemp != '' || numberTemp != '' || typeTemp != '' || statusTemp != '' || classofAccountTemp != '' || dateOpenedTemp != '' || dateClosedTemp != '' || openingBalanceTemp != '' || descriptionTemp != '') {\r\n if (accountId == '0' && page == 'Update') {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function cancleAccount() {\r\n if (page == 'Add') {\r\n page = 'Update';\r\n load = 1;\r\n loadCFEditLanding();\r\n } else {\r\n roster2.clearSelectedConsumers();\r\n roster2.clearActiveConsumers();\r\n CFEditAccount.init();\r\n }\r\n }\r\n\r\n async function saveUpdateAccount() {\r\n if (page == 'Add') {\r\n accountId = '0';\r\n }\r\n\r\n if (dateClosed == '')\r\n dateClosed = null;\r\n const result = await ConsumerFinancesAjax.insertEditRegisterAccountAsync(selectedConsumersId, accountId, name, number == '' ? null : number, type, status, classofAccount == '' ? null : classofAccount, dateOpened, dateClosed, openingBalance, description == '' ? null : description);\r\n const { insertEditRegisterAccountResult } = result;\r\n if (insertEditRegisterAccountResult.accountId != null) {\r\n page = 'Update';\r\n loadCFEditLanding();\r\n }\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('CFEditAccount');\r\n DOM.clearActionCenter();\r\n let defaultCFLocation = defaults.getLocation('moneyManagement');\r\n if (defaultCFLocation === '') {\r\n defaults.setLocation('moneyManagement', 0);\r\n defaultCFLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultCFLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n roster2.showMiniRoster();\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT');\r\n }\r\n\r\n if (tempAccountPer.length > 0) {\r\n accountPermission = tempAccountPer.toString();\r\n }\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadCFEditLanding,\r\n };\r\n})(); \r\n","const consumerFinanceAttachment = (() => {\r\n let attachments = [];\r\n class ConsumerFinanceAttachment {\r\n\r\n constructor(header, regId, IsDisabled, attachID) {\r\n this.attachmentsForQuestion = header;\r\n this.regId = regId;\r\n this.IsDisabledBtn = IsDisabled;\r\n this.attachID = attachID;\r\n }\r\n\r\n buildAttachmentButton() {\r\n const attachmentButton = button.build({\r\n id: `attachConsumer`,\r\n text: `ATTACHMENTS (${this.attachmentsForQuestion.length})`,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n this.attachmentPopup();\r\n },\r\n });\r\n\r\n attachmentButton.classList.add('attachmentBtn');\r\n if (this.attachmentsForQuestion.length > 0)\r\n attachmentButton.classList.add('hasAttachments');\r\n\r\n return attachmentButton;\r\n }\r\n\r\n attachmentPopup() {\r\n const regId = this.regId;\r\n const attachmentsForQuestion = this.attachmentsForQuestion;\r\n const attachmentsToDelete = [];\r\n const attachmentsAdded = [];\r\n\r\n // Adds attachments to the existing attachments section in popup\r\n function populateExistingAttachments() {\r\n\r\n const header = document.createElement('h5');\r\n header.innerText = 'Existing Attachments:';\r\n reviewAttachmentList.appendChild(header);\r\n\r\n attachmentsForQuestion.forEach(attachment => {\r\n const fileContainer = document.createElement('div');\r\n fileContainer.classList.add('reviewAttachmentContainer');\r\n fileContainer.setAttribute('id', attachment.attachmentID);\r\n fileContainer.setAttribute('delete', false);\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n callback: event => addRemoveAttachmentToDeleteList(event.target.parentElement),\r\n });\r\n const file = document.createElement('p');\r\n file.innerText = attachment.description;\r\n fileContainer.appendChild(removeAttachmentBtn);\r\n fileContainer.appendChild(file);\r\n file.addEventListener('click', event => {\r\n const attachmentId = event.target.parentElement.id;\r\n ConsumerFinancesAjax.viewCFAttachment(attachmentId, '');\r\n });\r\n reviewAttachmentList.appendChild(fileContainer);\r\n });\r\n }\r\n // CB for clicking the delete button on attachments in existing attachment section\r\n function addRemoveAttachmentToDeleteList(attachmentElement) {\r\n\r\n const currentDeleteStatus = attachmentElement.getAttribute('delete');\r\n const attachmentId = attachmentElement.getAttribute('id');\r\n switch (currentDeleteStatus) {\r\n case 'false':\r\n attachmentElement.classList.add('deleteAttachment');\r\n attachmentsToDelete.push(attachmentId);\r\n attachmentElement.setAttribute('delete', true);\r\n break;\r\n case 'true':\r\n attachmentElement.classList.remove('deleteAttachment');\r\n attachmentsToDelete = attachmentsToDelete.filter(\r\n attachment => attachment !== attachmentId,\r\n );\r\n attachmentElement.setAttribute('delete', false);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n // checks file is a valid type\r\n function fileValidation(target) {\r\n const fileType = target.files[0].type;\r\n const reFileTypeTest = new RegExp('(audio/)|(video/)');\r\n if (reFileTypeTest.test(fileType)) {\r\n alert('Anywhere currently does not accept audio or video files');\r\n target.value = '';\r\n return false;\r\n }\r\n }\r\n // CB for clicking the add attachment button. doesn't do anything if they haven't yet chosen an\r\n // attachment for existing add attachment input.\r\n function addNewAttachment() {\r\n\r\n function addRemoveAttachmentEventListener(btn) {\r\n btn.addEventListener('click', event => {\r\n const fileInput = event.target.parentElement.getElementsByTagName('input')[0];\r\n if (fileInput !== '') {\r\n event.target.parentElement.remove();\r\n }\r\n });\r\n }\r\n // Don't add new attachment input if the last attachment is empty\r\n const form = document.getElementById('attachmentForm');\r\n const lastAttachment = form.lastChild;\r\n if (lastAttachment && lastAttachment.querySelector('.attachmentInput').value === '') {\r\n return;\r\n }\r\n const newFileContainer = attachmentContainer.cloneNode(true);\r\n newFileContainer.getElementsByTagName('input')[0].value = ''; //remove file for new container\r\n newFileContainer\r\n .getElementsByTagName('input')[0]\r\n .addEventListener('change', evt => fileValidation(evt.target));\r\n attachmentList.appendChild(newFileContainer);\r\n addRemoveAttachmentEventListener(newFileContainer.firstElementChild);\r\n attachmentContainer = newFileContainer;\r\n }\r\n\r\n // CB for Done Button\r\n async function saveAction() {\r\n async function saveAttachmentsToDB() {\r\n const attachmentSaveArray = [];\r\n if (attachmentArray.length === 0) return;\r\n\r\n attachmentArray.forEach(attachment => {\r\n const saveProm = new Promise(resolve => {\r\n const saveData = {\r\n token: $.session.Token,\r\n attachmentType: attachment.type,\r\n attachment: attachment.arrayBuffer,\r\n regId: regId,\r\n };\r\n\r\n ConsumerFinancesAjax.addCFAttachment(saveData).then(res => resolve(res));\r\n });\r\n attachmentSaveArray.push(saveProm);\r\n });\r\n\r\n const attSaveRes = await Promise.all(attachmentSaveArray);\r\n let count = 0;\r\n attSaveRes.forEach(att => {\r\n attachmentsAdded.push(att);\r\n });\r\n attachmentArray.forEach(att => {\r\n att.attachmentID = attSaveRes[count];\r\n attachments.push(att);\r\n count++;\r\n });\r\n\r\n }\r\n // DELETE ATTACHMENTS\r\n attachmentsToDelete.forEach(attachment => {\r\n ConsumerFinancesAjax.deleteCFAttachment(attachment);\r\n });\r\n\r\n // ADD ATTACHMENTS\r\n const attachmentInputs = document.querySelectorAll('.attachmentInput');\r\n if (attachmentInputs.length === 0) {\r\n console.log('no attachments to add');\r\n return;\r\n }\r\n\r\n let attachmentProms = [];\r\n let attachmentArray = [];\r\n attachmentInputs.forEach(inputElement => {\r\n if (inputElement.value === '') {\r\n return;\r\n }\r\n const attPromise = new Promise(resolve => {\r\n const attachmentObj = {};\r\n const attachmentFile = inputElement.files.item(0);\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n attachmentObj.attachmentID = 0;\r\n attachmentObj.registerID = 0;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(attachmentFile).arrayBuffer().then(res => {\r\n attachmentObj.arrayBuffer = res;\r\n attachmentArray.push(attachmentObj);\r\n resolve();\r\n });\r\n });\r\n\r\n attachmentProms.push(attPromise);\r\n });\r\n\r\n await Promise.all(attachmentProms);\r\n await saveAttachmentsToDB();\r\n\r\n POPUP.hide(popup);\r\n //NewEntryCF.buildNewEntryForm(regId, attachmentsForQuestion, attachmentsAdded) \r\n }\r\n //===========================================\r\n //===========================================\r\n\r\n const popup = POPUP.build({\r\n header: this.header,\r\n id: 'planAttachmentPopup',\r\n });\r\n\r\n const addAttachmentBtn = button.build({\r\n text: 'Add Attachment',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'add',\r\n callback: () => {\r\n if (!addAttachmentBtn.classList.contains('disabled')) {\r\n addNewAttachment(); \r\n }\r\n },\r\n });\r\n addAttachmentBtn.type = 'button';\r\n\r\n const removeAttachmentBtn = button.build({\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'delete',\r\n });\r\n removeAttachmentBtn.type = 'button';\r\n\r\n const saveBtn = button.build({\r\n id: 'attachmentSave',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n try {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n await saveAction();\r\n await this.cleanAttachmentLists(attachmentsAdded, attachmentsToDelete);\r\n } \r\n } catch (error) {\r\n pendingSave.reject('Error saving attachment changes');\r\n setTimeout(() => {\r\n failSave.hide(false);\r\n popup.style.removeProperty('display');\r\n }, 2000);\r\n console.error(error);\r\n }\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'attachmentCancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n if (this.IsDisabledBtn == true) {\r\n removeAttachmentBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n addAttachmentBtn.classList.add('disabled');\r\n }\r\n else {\r\n removeAttachmentBtn.classList.remove('disabled');\r\n saveBtn.classList.remove('disabled');\r\n addAttachmentBtn.classList.remove('disabled');\r\n }\r\n\r\n const reviewAttachmentList = document.createElement('div');\r\n reviewAttachmentList.classList.add('reviewAttachmentList');\r\n const newAttachmentList = document.createElement('div');\r\n newAttachmentList.classList.add('newAttachmentList');\r\n const newAttachmentsHeader = document.createElement('h5');\r\n newAttachmentsHeader.innerText = 'Attachments to be added:';\r\n newAttachmentList.appendChild(newAttachmentsHeader);\r\n\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', evt => fileValidation(evt.target));\r\n\r\n let attachmentContainer = document.createElement('div');\r\n attachmentContainer.classList.add('attachmentContainer');\r\n const attachmentList = document.createElement('form');\r\n attachmentList.setAttribute('id', 'attachmentForm');\r\n attachmentList.appendChild(attachmentContainer);\r\n attachmentContainer.appendChild(removeAttachmentBtn);\r\n attachmentContainer.appendChild(attachmentInput);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(reviewAttachmentList);\r\n\r\n popup.appendChild(newAttachmentList);\r\n popup.appendChild(attachmentList);\r\n popup.appendChild(addAttachmentBtn);\r\n btnWrap.appendChild(saveBtn);\r\n\r\n\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n if (attachmentsForQuestion.length > 0) populateExistingAttachments();\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n /**\r\n * Gets the attachment button element\r\n * @return {HTMLButtonElement} Attachment Button Element\r\n */\r\n get attachmentButton() {\r\n return this.buildAttachmentButton();\r\n }\r\n\r\n cleanAttachmentLists(attachmentsToAdd, attachmentsToRemove) {\r\n if (attachmentsToRemove.length > 0) {\r\n attachments = this.attachmentsForQuestion;\r\n }\r\n attachmentsToRemove.forEach(attId => {\r\n attachments.forEach(attach => {\r\n if (attach.attachmentID == attId) {\r\n const index = attachments.indexOf(attach);\r\n attachments.splice(index, 1)\r\n this.attachmentsForQuestion = attachments;\r\n }\r\n });\r\n });\r\n\r\n attachmentsToAdd.forEach(attId => {\r\n attachments.forEach(attach => {\r\n let isAttacExist = this.attachmentsForQuestion.filter(a => a.attachmentID === attId);\r\n if (attach.attachmentID == attId && isAttacExist.length == 0) {\r\n this.attachmentsForQuestion.push(attach);\r\n }\r\n });\r\n });\r\n\r\n\r\n const attachmentBtn = document.getElementById(`attachConsumer`);\r\n attachmentBtn.innerText = `ATTACHMENTS (${this.attachmentsForQuestion.length})`;\r\n\r\n if (this.attachmentsForQuestion.length > 0) {\r\n attachmentBtn.classList.add('hasAttachments');\r\n } else {\r\n attachmentBtn.classList.remove('hasAttachments');\r\n }\r\n\r\n NewEntryCF.buildNewEntryForm(this.regId, this.attachmentsForQuestion, attachmentsToAdd, false)\r\n }\r\n }\r\n\r\n async function getConsumerFinanceAttachments(regID) {\r\n attachments = [];\r\n const retData = {\r\n token: $.session.Token,\r\n regId: regID,\r\n };\r\n const res = await ConsumerFinancesAjax.getCFAttachmentsList(retData);\r\n res.forEach(attachment => {\r\n attachments.push(attachment);\r\n });\r\n return attachments;\r\n }\r\n\r\n return {\r\n ConsumerFinanceAttachment,\r\n getConsumerFinanceAttachments,\r\n };\r\n})();\r\n","const ConsumerFinances = (() => {\r\n //Inputs \r\n let ConsumerFinanceEntriesTable = [];\r\n let CFConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let accountDropdown;\r\n let filterValues;\r\n let btnWrap;\r\n let activityStartDateBtnWrap;\r\n let activityEndDateBtnWrap;\r\n let minamountBtnWrap;\r\n let maxamountBtnWrap;\r\n let transectionTypeBtnWrap;\r\n let accountNameBtnWrap;\r\n let payeeBtnWrap;\r\n let categoryBtnWrap;\r\n let enteredByBtnWrap;\r\n let isattachmentBtnWrap;\r\n let accountPermission;\r\n let tempAccountPer;\r\n\r\n //service filter options\r\n let selectedConsumerIds;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n filterValues = undefined;\r\n await loadConsumerFinanceLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build Consumer Finance Module Landing Page \r\n async function loadConsumerFinanceLanding(value) {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (value) {\r\n filterValues.accountName = value;\r\n }\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n landingPage = document.createElement('div'); \r\n if (selectedConsumers != undefined) {\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n $.session.consumerId = selectedConsumersId;\r\n } else {\r\n dashboard.load();\r\n return; \r\n }\r\n \r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n getaccountPermission();\r\n\r\n selectedConsumersName = name[0].FullName;\r\n const topButton = buildHeaderButton(selectedConsumers[0]);\r\n landingPage.appendChild(topButton);\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n landingPage.appendChild(filterRow);\r\n ConsumerFinanceEntriesTable = await buildConsumerFinanceEntriesTable(filterValues);\r\n landingPage.appendChild(ConsumerFinanceEntriesTable);\r\n populateAccountDropdown();\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT');\r\n }\r\n\r\n if (tempAccountPer.length > 0) {\r\n accountPermission = tempAccountPer.toString();\r\n }\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildConsumerFinanceEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: selectedConsumersName,\r\n columnHeadings: ['Date', 'Account', 'Payee', 'Category', 'Amount', 'Check No.', 'Balance', 'Entered By'],\r\n endIcon: true,\r\n };\r\n\r\n selectedConsumerIds = selectedConsumers.map(function (x) { return x.id });\r\n let ConsumerFinancesEntries = await ConsumerFinancesAjax.getAccountTransectionEntriesAsync(\r\n selectedConsumerIds.join(\", \"),\r\n filterValues.activityStartDate,\r\n filterValues.activityEndDate,\r\n filterValues.accountName,\r\n filterValues.payee,\r\n filterValues.category,\r\n filterValues.minamount,\r\n filterValues.maxamount,\r\n filterValues.checkNo,\r\n filterValues.Balance,\r\n filterValues.enteredBy,\r\n filterValues.isattachment,\r\n filterValues.transectionType,\r\n accountPermission,\r\n );\r\n\r\n ConsumerFinancesEntries.getAccountTransectionEntriesResult.forEach(function (entry) {\r\n let newDate = new Date(entry.activityDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatActivityDate = UTIL.leadingZero(theMonth) + '/' + UTIL.leadingZero(newDate.getDate()) + '/' + newDate.getFullYear();\r\n entry.activityDate = formatActivityDate;\r\n });\r\n\r\n let tableData = ConsumerFinancesEntries.getAccountTransectionEntriesResult.map((entry) => ({\r\n values: [entry.activityDate, entry.account, entry.payee, entry.category, '$' + entry.amount, entry.checkno, '$' + entry.balance, entry.enteredby],\r\n attributes: [{ key: 'registerId', value: entry.ID }, { key: 'data-plan-active', value: entry.isExpance }],\r\n onClick: (e) => {\r\n handleAccountTableEvents(e.target.attributes.registerId.value)\r\n },\r\n endIcon: entry.AttachmentsID == 0 ? `${icons['Empty']}` : `${icons['attachmentSmall']}`,\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(registerId) {\r\n NewEntryCF.buildNewEntryForm(registerId);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n CFConsumerBtns = buildButtonBar(consumer);\r\n consumerRow.appendChild(CFConsumerBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const dropdownButtonBar = document.createElement('div');\r\n const entryButtonBar = document.createElement('div');\r\n dropdownButtonBar.style.width = '49%';\r\n entryButtonBar.style.width = '49%';\r\n\r\n accountDropdown = dropdown.build({\r\n label: \"Accounts:\",\r\n dropdownId: \"accountDropdown\",\r\n });\r\n\r\n accountDropdown.addEventListener('change', event => {\r\n filterValues.accountName = event.target.value;\r\n loadConsumerFinanceLanding(filterValues.accountName);\r\n });\r\n\r\n const entryBtn = button.build({\r\n text: '+ New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'newEntryBtn',\r\n callback: async () => { NewEntryCF.init() },\r\n });\r\n if ($.session.CFInsert) {\r\n entryBtn.classList.remove('disabled');\r\n }\r\n else {\r\n entryBtn.classList.add('disabled');\r\n }\r\n entryBtn.style.height = '50px';\r\n entryBtn.style.minWidth = '100%';\r\n\r\n buildNewFilterBtn();\r\n accountDropdown.style.minWidth = '100%';\r\n dropdownButtonBar.appendChild(accountDropdown);\r\n entryButtonBar.appendChild(entryBtn);\r\n entryButtonBar.style.marginLeft = '2%';\r\n buttonBar.appendChild(dropdownButtonBar);\r\n buttonBar.appendChild(entryButtonBar);\r\n return buttonBar;\r\n }\r\n\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n activityStartDate: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n activityEndDate: UTIL.getTodaysDate(),\r\n accountName: '%',\r\n payee: '%',\r\n category: '%',\r\n minamount: '-10000.00',\r\n maxamount: '10000.00',\r\n checkNo: '',\r\n Balance: '',\r\n enteredBy: '%',\r\n isattachment: '%',\r\n transectionType: '%',\r\n }\r\n }\r\n\r\n // Populate the Account DDL \r\n async function populateAccountDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync(selectedConsumersId, accountPermission);\r\n let data = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName + ' - $' + (account.totalBalance == '' ? '0.00' : account.totalBalance)\r\n }));\r\n if (data.length > 0)\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate(\"accountDropdown\", data, filterValues.accountName);\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n\r\n if (filterValues.transectionType === '%' || filterValues.transectionType === 'ALL') {\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n btnWrap.removeChild(transectionTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n }\r\n\r\n if (filterValues.accountName === '%' || filterValues.accountName === 'ALL') {\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n btnWrap.removeChild(accountNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n }\r\n\r\n if (filterValues.payee === '%' || filterValues.payee === 'ALL') {\r\n btnWrap.appendChild(payeeBtnWrap);\r\n btnWrap.removeChild(payeeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(payeeBtnWrap);\r\n }\r\n\r\n if (filterValues.category === '%' || filterValues.category === 'ALL') {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n btnWrap.removeChild(categoryBtnWrap);\r\n } else {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n }\r\n\r\n if (filterValues.enteredBy === '%' || filterValues.enteredBy === 'ALL') {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n btnWrap.removeChild(enteredByBtnWrap);\r\n } else {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n }\r\n if (filterValues.isattachment === '%' || filterValues.isattachment === 'ALL') {\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n btnWrap.removeChild(isattachmentBtnWrap);\r\n } else {\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n }\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n activityStartDateBtn = button.build({\r\n id: 'activityStartDateBtn',\r\n text: 'From Date: ' + moment(filterValues.activityStartDate, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('activityStartDateBtn') },\r\n });\r\n activityEndDateBtn = button.build({\r\n id: 'activityEndDateBtn',\r\n text: 'To date: ' + moment(filterValues.activityEndDate, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('activityEndDateBtn') },\r\n });\r\n minamountBtn = button.build({\r\n id: 'minamountBtn',\r\n text: 'Min Amount: $' + filterValues.minamount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('minamountBtn') },\r\n });\r\n maxamountBtn = button.build({\r\n id: 'maxamountBtn',\r\n text: 'Max Amount: $' + filterValues.maxamount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('maxamountBtn') },\r\n });\r\n transectionTypeBtn = button.build({\r\n id: 'transectionTypeBtn',\r\n text: filterValues.transectionType == 'false' ? 'Transaction Type: Deposit' : 'Transaction Type: Expense',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('transectionTypeBtn') },\r\n });\r\n transectionTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('transectionTypeBtn') },\r\n });\r\n accountNameBtn = button.build({\r\n id: 'accountNameBtn',\r\n text: 'Account: ' + filterValues.accountName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('accountNameBtn') },\r\n });\r\n accountNameCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('accountNameBtn') },\r\n });\r\n payeeBtn = button.build({\r\n id: 'payeeBtn',\r\n text: 'Payee: ' + filterValues.payee,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('payeeBtn') },\r\n });\r\n payeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('payeeBtn') },\r\n });\r\n categoryBtn = button.build({\r\n id: 'categoryBtn',\r\n text: 'Category: ' + filterValues.category,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('categoryBtn') },\r\n });\r\n categoryCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('categoryBtn') },\r\n });\r\n enteredByBtn = button.build({\r\n id: 'enteredByBtn',\r\n text: 'Last Updated By: ' + filterValues.userName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('enteredByBtn') },\r\n });\r\n enteredByCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('enteredByBtn') },\r\n });\r\n isattachmentBtn = button.build({\r\n id: 'isattachmentBtn',\r\n text: 'Has Attachment: ' + filterValues.isattachment,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('isattachmentBtn') },\r\n });\r\n isattachmentCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('isattachmentBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n activityStartDateBtnWrap = document.createElement('div');\r\n activityStartDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n activityStartDateBtnWrap.appendChild(activityStartDateBtn);\r\n btnWrap.appendChild(activityStartDateBtnWrap);\r\n\r\n activityEndDateBtnWrap = document.createElement('div');\r\n activityEndDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n activityEndDateBtnWrap.appendChild(activityEndDateBtn);\r\n btnWrap.appendChild(activityEndDateBtnWrap);\r\n\r\n minamountBtnWrap = document.createElement('div');\r\n minamountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n minamountBtnWrap.appendChild(minamountBtn);\r\n btnWrap.appendChild(minamountBtnWrap);\r\n\r\n maxamountBtnWrap = document.createElement('div');\r\n maxamountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n maxamountBtnWrap.appendChild(maxamountBtn);\r\n btnWrap.appendChild(maxamountBtnWrap);\r\n\r\n transectionTypeBtnWrap = document.createElement('div');\r\n transectionTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n transectionTypeBtnWrap.appendChild(transectionTypeBtn);\r\n transectionTypeBtnWrap.appendChild(transectionTypeCloseBtn);\r\n btnWrap.appendChild(transectionTypeBtnWrap);\r\n\r\n accountNameBtnWrap = document.createElement('div');\r\n accountNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n accountNameBtnWrap.appendChild(accountNameBtn);\r\n accountNameBtnWrap.appendChild(accountNameCloseBtn);\r\n btnWrap.appendChild(accountNameBtnWrap);\r\n\r\n payeeBtnWrap = document.createElement('div');\r\n payeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n payeeBtnWrap.appendChild(payeeBtn);\r\n payeeBtnWrap.appendChild(payeeCloseBtn);\r\n btnWrap.appendChild(payeeBtnWrap);\r\n\r\n categoryBtnWrap = document.createElement('div');\r\n categoryBtnWrap.classList.add('filterSelectionBtnWrap');\r\n categoryBtnWrap.appendChild(categoryBtn);\r\n categoryBtnWrap.appendChild(categoryCloseBtn)\r\n btnWrap.appendChild(categoryBtnWrap);\r\n\r\n enteredByBtnWrap = document.createElement('div');\r\n enteredByBtnWrap.classList.add('filterSelectionBtnWrap');\r\n enteredByBtnWrap.appendChild(enteredByBtn);\r\n enteredByBtnWrap.appendChild(enteredByCloseBtn);\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n\r\n isattachmentBtnWrap = document.createElement('div');\r\n isattachmentBtnWrap.classList.add('filterSelectionBtnWrap');\r\n isattachmentBtnWrap.appendChild(isattachmentBtn);\r\n isattachmentBtnWrap.appendChild(isattachmentCloseBtn);\r\n btnWrap.appendChild(isattachmentBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'transectionTypeBtn') {\r\n filterValues.transectionType = '%';\r\n }\r\n if (closeFilter == 'accountNameBtn') {\r\n filterValues.accountName = '%';\r\n }\r\n if (closeFilter == 'payeeBtn') {\r\n filterValues.payee = '%';\r\n }\r\n if (closeFilter == 'enteredByBtn') {\r\n filterValues.enteredBy = '%';\r\n }\r\n if (closeFilter == 'isattachmentBtn') {\r\n filterValues.isattachment = '%';\r\n }\r\n if (closeFilter == 'categoryBtn') {\r\n filterValues.category = '%';\r\n }\r\n loadConsumerFinanceLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs\r\n fromDateInput = input.build({\r\n id: 'fromDateInput',\r\n type: 'date',\r\n label: 'From Date',\r\n style: 'secondary',\r\n value: filterValues.activityStartDate,\r\n });\r\n\r\n toDateInput = input.build({\r\n id: 'toDateInput',\r\n type: 'date',\r\n label: 'To Date',\r\n style: 'secondary',\r\n value: filterValues.activityEndDate,\r\n });\r\n\r\n minAmountInput = input.build({\r\n id: 'minAmountInput',\r\n type: 'text',\r\n label: 'Min Amount',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.minamount) ? filterValues.minamount : ''),\r\n });\r\n\r\n maxAmountInput = input.build({\r\n id: 'maxAmountInput',\r\n type: 'text',\r\n label: 'Max Amount',\r\n style: 'secondary',\r\n value: '$' + ((filterValues.maxamount) ? filterValues.maxamount : ''),\r\n });\r\n\r\n transectionTypeFilterDropdown = dropdown.build({\r\n label: \"Transaction Type\",\r\n dropdownId: \"transectionTypeFilterDropdown\",\r\n });\r\n\r\n accountFilterDropdown = dropdown.build({\r\n label: \"Account\",\r\n dropdownId: \"accountFilterDropdown\",\r\n });\r\n\r\n payeeDropdown = dropdown.build({\r\n id: 'payeeDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"payeeDropdown\",\r\n });\r\n\r\n categoryDropdown = dropdown.build({\r\n id: 'categoryDropdown',\r\n label: \"Category\",\r\n dropdownId: \"categoryDropdown\",\r\n });\r\n\r\n lastUpdateDropdown = dropdown.build({\r\n id: 'lastUpdateDropdown',\r\n label: \"Last Updated By\",\r\n dropdownId: \"lastUpdateDropdown\",\r\n });\r\n\r\n isAttachedDropdown = dropdown.build({\r\n id: 'isAttachedDropdown',\r\n label: \"Has Attachment?\",\r\n dropdownId: \"isAttachedDropdown\",\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'activityStartDateBtn')\r\n dateWrap.appendChild(fromDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'activityEndDateBtn')\r\n dateWrap.appendChild(toDateInput);\r\n\r\n var amountWrap = document.createElement('div');\r\n amountWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'minamountBtn')\r\n amountWrap.appendChild(minAmountInput);\r\n if (IsShow == 'ALL' || IsShow == 'maxamountBtn')\r\n amountWrap.appendChild(maxAmountInput);\r\n\r\n // build popup\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(amountWrap);\r\n if (IsShow == 'ALL' || IsShow == 'transectionTypeBtn')\r\n filterPopup.appendChild(transectionTypeFilterDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'accountNameBtn')\r\n filterPopup.appendChild(accountFilterDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'payeeBtn')\r\n filterPopup.appendChild(payeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'categoryBtn')\r\n filterPopup.appendChild(categoryDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'enteredByBtn')\r\n filterPopup.appendChild(lastUpdateDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'isattachmentBtn')\r\n filterPopup.appendChild(isAttachedDropdown);\r\n\r\n filterPopup.appendChild(btnWrap);\r\n eventListeners();\r\n populateFilterDropdown();\r\n POPUP.show(filterPopup);\r\n checkValidationOfFilter();\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n var tmpactivityStartDate;\r\n var tmpactivityEndDate;\r\n var tmpminAmount;\r\n var tmpmaxAmount;\r\n var tmpaccountName;\r\n var tmpenteredBy;\r\n var tmppayee;\r\n var tmpcategory;\r\n var tmpisattachment;\r\n var tmptransectionType;\r\n\r\n fromDateInput.addEventListener('change', event => {\r\n tmpactivityStartDate = event.target.value;\r\n checkValidationOfFilter();\r\n });\r\n toDateInput.addEventListener('change', event => {\r\n tmpactivityEndDate = event.target.value;\r\n checkValidationOfFilter();\r\n });\r\n\r\n minAmountInput.addEventListener('keyup', event => {\r\n minAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(minAmount)) {\r\n document.getElementById('minAmountInput').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n else if (minAmount.includes('.') && (minAmount.match(/\\./g).length > 1 || minAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('minAmountInput').value = minAmount.substring(0, minAmount.length - 1);\r\n return;\r\n }\r\n\r\n tmpminAmount = minAmount.trim().replace('$', '');\r\n tmpminAmount = parseFloat(tmpminAmount).toFixed(2);\r\n });\r\n\r\n maxAmountInput.addEventListener('keyup', event => {\r\n maxAmount = event.target.value;\r\n var reg = new RegExp('^[0-9 . $ -]+$');\r\n if (!reg.test(maxAmount)) {\r\n document.getElementById('maxAmountInput').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n else if (maxAmount.includes('.') && (maxAmount.match(/\\./g).length > 1 || maxAmount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('maxAmountInput').value = maxAmount.substring(0, maxAmount.length - 1);\r\n return;\r\n }\r\n tmpmaxAmount = maxAmount.trim().replace('$', ''); \r\n tmpmaxAmount = parseFloat(tmpmaxAmount).toFixed(2); \r\n });\r\n\r\n transectionTypeFilterDropdown.addEventListener('change', event => {\r\n tmptransectionType = event.target.value;\r\n });\r\n accountFilterDropdown.addEventListener('change', event => {\r\n tmpaccountName = event.target.value;\r\n });\r\n lastUpdateDropdown.addEventListener('change', event => {\r\n tmpenteredBy = event.target.options[event.target.selectedIndex].innerHTML == 'ALL' ? '%' : event.target.options[event.target.selectedIndex].id; //event.target.options[event.target.selectedIndex].innerHTML;\r\n filterValues.userName = event.target.options[event.target.selectedIndex].innerHTML;\r\n });\r\n payeeDropdown.addEventListener('change', event => {\r\n tmppayee = event.target.value;\r\n });\r\n categoryDropdown.addEventListener('change', event => {\r\n tmpcategory = event.target.value;\r\n });\r\n isAttachedDropdown.addEventListener('change', event => {\r\n tmpisattachment = event.target.value;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n updateFilterData({\r\n tmpactivityStartDate,\r\n tmpactivityEndDate,\r\n tmpminAmount,\r\n tmpmaxAmount,\r\n tmpaccountName,\r\n tmpenteredBy,\r\n tmppayee,\r\n tmpcategory,\r\n tmpisattachment,\r\n tmptransectionType\r\n });\r\n POPUP.hide(filterPopup);\r\n loadConsumerFinanceLanding();\r\n }\r\n });\r\n\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpactivityStartDate) filterValues.activityStartDate = data.tmpactivityStartDate;\r\n if (data.tmpactivityEndDate) filterValues.activityEndDate = data.tmpactivityEndDate;\r\n if (data.tmpminAmount) filterValues.minamount = data.tmpminAmount;\r\n if (data.tmpmaxAmount) filterValues.maxamount = data.tmpmaxAmount;\r\n if (data.tmpaccountName) filterValues.accountName = data.tmpaccountName;\r\n if (data.tmpenteredBy) filterValues.enteredBy = data.tmpenteredBy;\r\n if (data.tmppayee) filterValues.payee = data.tmppayee;\r\n if (data.tmpcategory) filterValues.category = data.tmpcategory;\r\n if (data.tmpisattachment) filterValues.isattachment = data.tmpisattachment;\r\n if (data.tmptransectionType) filterValues.transectionType = data.tmptransectionType;\r\n }\r\n\r\n function checkValidationOfFilter() {\r\n var fromDate = fromDateInput.querySelector('#fromDateInput');\r\n var toDate = toDateInput.querySelector('#toDateInput');\r\n\r\n if (fromDate.value > toDate.value) {\r\n toDateInput.classList.add('errorPopup');\r\n } else {\r\n toDateInput.classList.remove('errorPopup');\r\n }\r\n setBtnStatusOfFilter();\r\n }\r\n\r\n function setBtnStatusOfFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync(selectedConsumersId, accountPermission);\r\n let accountData = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName\r\n }));\r\n accountData.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate(\"accountFilterDropdown\", accountData, filterValues.accountName);\r\n\r\n const {\r\n getPayeesResult: Payees,\r\n } = await ConsumerFinancesAjax.getPayeesAsync($.session.consumerId);\r\n let payeeData = Payees.map((payees) => ({\r\n id: payees.CategoryID,\r\n value: payees.Description,\r\n text: payees.Description\r\n }));\r\n payeeData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"payeeDropdown\", payeeData, filterValues.payee);\r\n let categoryID;\r\n const {\r\n getCategoriesSubCategoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getCategoriesSubCategoriesAsync(categoryID);\r\n let categoryData = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryDescription,\r\n text: category.CategoryDescription\r\n }));\r\n categoryData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"categoryDropdown\", categoryData, filterValues.category);\r\n\r\n const {\r\n getActiveUsedByResult: employees,\r\n } = await ConsumerFinancesAjax.getActiveEmployeesAsync();\r\n let data = employees.map((employee) => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"lastUpdateDropdown\", data, filterValues.enteredBy);\r\n\r\n const condfidentialDropdownData = ([\r\n { text: 'Yes', value: 'Yes' },\r\n { text: 'No', value: 'No' },\r\n ]);\r\n condfidentialDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"isAttachedDropdown\", condfidentialDropdownData, filterValues.isattachment);\r\n\r\n const TransectionTypeDropdownData = ([\r\n { text: 'Deposit', value: 'false' },\r\n { text: 'Expense', value: 'true' },\r\n ]);\r\n TransectionTypeDropdownData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"transectionTypeFilterDropdown\", TransectionTypeDropdownData, filterValues.transectionType);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('ConsumerFinances');\r\n DOM.clearActionCenter();\r\n\r\n let defaultCFLocation = defaults.getLocation('moneyManagement');\r\n if (defaultCFLocation === '') {\r\n defaults.setLocation('moneyManagement', 0);\r\n defaultCFLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultCFLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadConsumerFinanceLanding,\r\n getaccountPermission,\r\n };\r\n})(); \r\n","var ConsumerFinancesAjax = (function () {\r\n // OOD Main/Landing Page\r\n async function getAccountTransectionEntriesAsync(consumerIds, activityStartDate, activityEndDate, accountName, payee, category, minamount, maxamount, checkNo, balance, enteredBy, isattachment, transectionType, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountTransectionEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"activityStartDate\":\"' +\r\n activityStartDate +\r\n '\", \"activityEndDate\":\"' +\r\n activityEndDate +\r\n '\", \"accountName\":\"' +\r\n accountName +\r\n '\", \"payee\":\"' +\r\n payee +\r\n '\", \"category\":\"' +\r\n category +\r\n '\", \"minamount\":\"' +\r\n minamount +\r\n '\", \"maxamount\":\"' +\r\n maxamount +\r\n '\", \"checkNo\":\"' +\r\n checkNo +\r\n '\", \"balance\":\"' +\r\n balance +\r\n '\", \"enteredBy\":\"' +\r\n enteredBy +\r\n '\", \"isattachment\":\"' +\r\n isattachment +\r\n '\", \"transectionType\":\"' +\r\n transectionType +\r\n '\", \"accountPermission\":\"' +\r\n accountPermission +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getActiveAccountAsync(ConsumersId, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n accountPermission: accountPermission,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPayeesAsync(ConsumersId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPayees/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCatogories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSubCategoriesAsync(Category) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSubCatogories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n category: Category,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getCategoriesSubCategoriesByPayeeAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCategoriesSubCategoriesByPayee/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertPayeeAsync(\r\n payeeName,\r\n payeeaddress1,\r\n payeeaddress2,\r\n payeecity,\r\n payeestate,\r\n payeezipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPayee/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n payeeName: payeeName,\r\n address1: payeeaddress1,\r\n address2: payeeaddress2,\r\n city: payeecity,\r\n state: payeestate,\r\n zipcode: payeezipcode,\r\n userId: $.session.UserId,\r\n consumerId: $.session.consumerId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertAccountAsync(\r\n date, amount, amountType, AccountID, payee, CategoryID, subCategory, checkNo, description, attachmentID, attachmentDesc, receipt, BtnName, regId, splitAmount, categoryID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n date: date,\r\n amount: amount,\r\n amountType: amountType,\r\n account: AccountID,\r\n payee: payee,\r\n category: CategoryID,\r\n subCategory: subCategory,\r\n checkNo: checkNo,\r\n description: description,\r\n attachmentId: attachmentID,\r\n attachmentDesc: attachmentDesc,\r\n receipt: receipt,\r\n userId: $.session.UserId,\r\n eventType: BtnName,\r\n regId: regId,\r\n splitAmount: splitAmount,\r\n categoryID: categoryID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getAccountEntriesByIDAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountEntriesById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"registerId\":\"' +\r\n registerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteConsumerFinanceAccountAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerFinanceAccount/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"registerId\":\"' +\r\n registerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getActiveEmployeesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveUsedBy/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function addCFAttachment(retrieveData) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addCFAttachment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addCFAttachmentResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function deleteCFAttachment(attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n attachmentId: attachmentId,\r\n };\r\n try {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCFAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deletePlanAttachmentResult;\r\n },\r\n });\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getCFAttachmentsList(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCFAttachmentsList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getCFAttachmentsListResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getConsumerNameByID(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerNameByID/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function viewCFAttachment(attachmentId, section) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewCFAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', section);\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function getCategoriesSubCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCategoriesSubCategories/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEditAccountInfoByIdAsync(accountId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditAccountInfoById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"accountId\":\"' +\r\n accountId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getAccountClassAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAccountClass/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEditRegisterAccountAsync(\r\n selectedConsumersId, accountId, name, number, type, status, classofAccount, dateOpened, dateClosed, openingBalance, description\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEditRegisterAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n selectedConsumersId: selectedConsumersId,\r\n accountId: accountId,\r\n name: name,\r\n number: number,\r\n type: type,\r\n status: status,\r\n classofAccount: classofAccount,\r\n dateOpened: dateOpened,\r\n dateClosed: dateClosed,\r\n openingBalance: openingBalance,\r\n description: description,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEditAccountAsync(ConsumersId, accountPermission) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEditAccount/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: ConsumersId,\r\n accountPermission: accountPermission,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSplitRegisterAccountEntriesByIDAsync(registerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSplitRegisterAccountEntriesByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"registerId\":\"' +\r\n registerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getSplitCategoriesSubCategoriesAsync(CategoryID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSplitCategoriesSubCategories/', \r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n categoryID: CategoryID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getAccountTransectionEntriesAsync,\r\n getActiveAccountAsync,\r\n getPayeesAsync,\r\n getCategoriesAsync,\r\n getSubCategoriesAsync,\r\n getCategoriesSubCategoriesByPayeeAsync,\r\n insertPayeeAsync,\r\n insertAccountAsync,\r\n getAccountEntriesByIDAsync,\r\n deleteConsumerFinanceAccountAsync,\r\n getActiveEmployeesAsync,\r\n addCFAttachment,\r\n deleteCFAttachment,\r\n getCFAttachmentsList,\r\n getConsumerNameByID,\r\n viewCFAttachment,\r\n getCategoriesSubCategoriesAsync,\r\n getEditAccountInfoByIdAsync,\r\n getAccountClassAsync,\r\n insertEditRegisterAccountAsync,\r\n getEditAccountAsync,\r\n getSplitRegisterAccountEntriesByIDAsync,\r\n getSplitCategoriesSubCategoriesAsync\r\n };\r\n})();\r\n","const NewEntryCF = (() => {\r\n // dropdown and inputs declaration\r\n let newDateInput;\r\n let newAmountInput;\r\n let newAccountDropdown;\r\n let newPayeeDropdown;\r\n let ADD_NEW_PAYEE_BTN;\r\n let newCategoryDropdown;\r\n let newSubCategoryDropdown;\r\n let newCheckNoInput;\r\n let newDescriptionInput;\r\n let newReceiptInput;\r\n let NEW_SAVE_BTN;\r\n let NEW_CANCEL_BTN;\r\n\r\n let attachmentArray = [];\r\n let prevAttachmentArray = [];\r\n let attachmentId = [];\r\n let attachmentDesc = [];\r\n let categoryID;\r\n let Description;\r\n let BtnName;\r\n let regId;\r\n let IsDisabledBtn = false;\r\n let lastUpdateBy;\r\n let IsReconciled = 'N';\r\n let IsAddNewPayDisable = true;\r\n let IsSaveDisable = true;\r\n let IsDeleteDisable = true;\r\n let splitAmountInputN = [];\r\n let splitCategoryDropdownN = [];\r\n let splitDescriptionInputN = [];\r\n let categoryOldVal;\r\n let totalAmount;\r\n let regTotalAmount;\r\n let numberOfRows;\r\n let splitAmount = [];\r\n let splitTransPopup;\r\n let tempAmountval;\r\n let tempSplit;\r\n let tempAmouts;\r\n let totalAmountSaved;\r\n let accountPermission;\r\n let tempAccountPer;\r\n let pageName;\r\n\r\n async function init() {\r\n buildNewEntryForm(registerId = undefined, attachment = undefined, attachmentID = undefined, IsNewRefresh = true);\r\n }\r\n\r\n async function buildNewEntryForm(registerId, attachment, attachmentID, IsNewRefresh = true) {\r\n prevAttachmentArray = [];\r\n numberOfRows = 5;\r\n if (registerId && IsNewRefresh) {\r\n splitAmount = [];\r\n totalAmountSaved = 0;\r\n prevAttachmentArray = await consumerFinanceAttachment.getConsumerFinanceAttachments(registerId);\r\n BtnName = 'UPDATE'\r\n pageName = 'Update';\r\n regId = registerId;\r\n const result = await ConsumerFinancesAjax.getAccountEntriesByIDAsync(registerId);\r\n const { getAccountEntriesByIdResult } = result;\r\n date = moment(getAccountEntriesByIdResult[0].activityDate).format('YYYY-MM-DD');\r\n amount = getAccountEntriesByIdResult[0].amount != '' ? parseFloat(getAccountEntriesByIdResult[0].amount).toFixed(2) : '';\r\n tempAmountval = getAccountEntriesByIdResult[0].amount;\r\n account = getAccountEntriesByIdResult[0].account;\r\n payee = getAccountEntriesByIdResult[0].payee;\r\n category = getAccountEntriesByIdResult[0].category;\r\n subCategory = getAccountEntriesByIdResult[0].subCategory;\r\n checkNo = getAccountEntriesByIdResult[0].checkno;\r\n description = getAccountEntriesByIdResult[0].description;\r\n receipt = getAccountEntriesByIdResult[0].receipt;\r\n accountID = getAccountEntriesByIdResult[0].accountID;\r\n accountType = getAccountEntriesByIdResult[0].accountType;\r\n IsReconciled = getAccountEntriesByIdResult[0].reconciled;\r\n lastUpdateBy = getAccountEntriesByIdResult[0].lastUpdateBy;\r\n categoryOldVal = category;\r\n const SplitDataresult = await ConsumerFinancesAjax.getSplitRegisterAccountEntriesByIDAsync(registerId);\r\n const { getSplitRegisterAccountEntriesByIDResult } = SplitDataresult;\r\n splitAmount = getSplitRegisterAccountEntriesByIDResult;\r\n var sum = 0;\r\n for (var i = 0; i < splitAmount.length; i++) {\r\n if (splitAmount[i].amount != '')\r\n sum += parseFloat(splitAmount[i].amount);\r\n }\r\n totalAmount = sum.toFixed(2);\r\n totalAmountSaved = totalAmount;\r\n }\r\n else if (registerId && !IsNewRefresh) {\r\n BtnName = 'UPDATE';\r\n pageName = 'Update';\r\n }\r\n else if (registerId == 0 && attachmentID) {\r\n regId = 0;\r\n BtnName = 'SAVE';\r\n pageName = 'New';\r\n }\r\n else {\r\n regId = 0;\r\n BtnName = 'SAVE';\r\n pageName = 'New';\r\n date = UTIL.getTodaysDate();\r\n amount = '';\r\n account = '';\r\n payee = '';\r\n category = '';\r\n subCategory = '';\r\n checkNo = '';\r\n description = '';\r\n attachment = '';\r\n receipt = '';\r\n accountID = '';\r\n accountType = 'E';\r\n IsReconciled = 'N';\r\n IsDisabledBtn = false;\r\n categoryOldVal = '';\r\n totalAmount = 0;\r\n tempAmountval = 0;\r\n splitAmount = [];\r\n totalAmountSaved = 0;\r\n }\r\n\r\n tempdate = '';\r\n tempamount = '';\r\n tempaccount = '';\r\n tempaccountType = '';\r\n temppayee = '';\r\n tempcategory = '';\r\n tempsubCategory = '';\r\n tempcheckNo = '';\r\n tempdescription = '';\r\n tempattachment = '';\r\n tempreceipt = '';\r\n tempSplit = '';\r\n if (attachment) {\r\n attachmentArray = attachment;\r\n attachmentId = attachmentID;\r\n attachment.forEach(att => {\r\n if (att.registerID == 0) {\r\n attachmentDesc.push(att.description);\r\n tempattachment = attachmentID;\r\n }\r\n });\r\n\r\n }\r\n else {\r\n attachmentArray = [];\r\n attachmentId = [];\r\n attachmentDesc = [];\r\n prevAttachmentArray.forEach(att => {\r\n attachmentArray.push(att);\r\n });\r\n }\r\n getaccountPermission();\r\n DOM.clearActionCenter();\r\n\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n\r\n newDateInput = input.build({\r\n id: 'newDateInput',\r\n type: 'date',\r\n label: 'Date',\r\n style: 'secondary',\r\n value: (date) ? date : '',\r\n });\r\n\r\n newAmountInput = input.build({\r\n id: 'newAmountInput',\r\n type: 'number',\r\n label: 'Amount',\r\n style: 'secondary',\r\n value: (amount) ? amount : '',\r\n });\r\n\r\n newAccountDropdown = dropdown.build({\r\n id: 'newAccountDropdown',\r\n label: \"Account\",\r\n dropdownId: \"newAccountDropdown\",\r\n value: (account) ? account : '',\r\n });\r\n\r\n newPayeeDropdown = dropdown.build({\r\n id: 'newPayeeDropdown',\r\n label: \"Payee\",\r\n dropdownId: \"newPayeeDropdown\",\r\n value: (payee) ? payee : '',\r\n });\r\n\r\n ADD_NEW_PAYEE_BTN = button.build({\r\n text: 'ADD NEW PAYEE',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n newCategoryDropdown = dropdown.build({\r\n id: 'newCategoryDropdown',\r\n label: \"Category\",\r\n dropdownId: \"newCategoryDropdown\",\r\n value: (category) ? category : '',\r\n });\r\n\r\n SPLIT_BTN = button.build({\r\n id: 'SPLIT_BTN',\r\n text: 'Split',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n newSubCategoryDropdown = dropdown.build({\r\n id: 'newSubCategoryDropdown',\r\n label: \"Sub Category\",\r\n dropdownId: \"newSubCategoryDropdown\",\r\n value: (subCategory) ? subCategory : '',\r\n });\r\n\r\n newCheckNoInput = input.build({\r\n type: 'text',\r\n label: 'Check No.',\r\n style: 'secondary',\r\n value: (checkNo) ? checkNo : '',\r\n });\r\n\r\n newDescriptionInput = input.build({\r\n type: 'textarea',\r\n label: 'Description',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: (description) ? description : '',\r\n });\r\n\r\n newReceiptInput = input.build({\r\n type: 'text',\r\n label: 'Receipt',\r\n style: 'secondary',\r\n value: (receipt) ? receipt : '',\r\n });\r\n\r\n NEW_SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n NEW_CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { ConsumerFinances.loadConsumerFinanceLanding() },\r\n });\r\n\r\n NEW_DELETE_BTN = button.build({\r\n text: 'DELETE ENTRY',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n // Billing Radios //\r\n expenseRadio = input.buildRadio({\r\n id: `expenseRadio`,\r\n text: \"Expense\",\r\n name: \"amountType\",\r\n isChecked: accountType == 'D' ? false : true,\r\n });\r\n depositRadio = input.buildRadio({\r\n id: `depositRadio`,\r\n text: \"Deposit\",\r\n name: \"amountType\",\r\n isChecked: accountType == 'D' ? true : false,\r\n });\r\n\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addCFRadioDiv\");\r\n radioDiv.appendChild(expenseRadio);\r\n radioDiv.appendChild(depositRadio);\r\n /////////////////\r\n\r\n var space = document.createElement('h3');\r\n space.innerHTML = '';\r\n var LineBr = document.createElement('br');\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n\r\n if (registerId) {\r\n btnWrap.appendChild(NEW_SAVE_BTN);\r\n btnWrap.appendChild(NEW_DELETE_BTN);\r\n\r\n if (payee == 'Opening Balance') {\r\n DisabledAllInputs();\r\n }\r\n else {\r\n enableDisabledInputs();\r\n }\r\n }\r\n else {\r\n btnWrap.appendChild(NEW_SAVE_BTN);\r\n btnWrap.appendChild(NEW_CANCEL_BTN);\r\n if ($.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n }\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('vehicleInspectionDTWrap');\r\n dropWrap.appendChild(newDateInput);\r\n dropWrap.appendChild(newAmountInput);\r\n\r\n var radioWrap = document.createElement('div');\r\n radioWrap.classList.add('vehicleInspectionDTWrap');\r\n radioWrap.appendChild(space);\r\n radioWrap.appendChild(radioDiv);\r\n\r\n // New Entry Card//\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
${pageName} Entry
`; \r\n addNewCard.appendChild(addNewCardBody)\r\n\r\n column1.appendChild(addNewCard)\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(dropWrap);\r\n addNewCardBody.appendChild(radioWrap);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(newAccountDropdown);\r\n addNewCardBody.appendChild(newPayeeDropdown);\r\n addNewCardBody.appendChild(ADD_NEW_PAYEE_BTN);\r\n addNewCardBody.appendChild(newCategoryDropdown);\r\n addNewCardBody.appendChild(SPLIT_BTN);\r\n addNewCardBody.appendChild(newSubCategoryDropdown);\r\n addNewCardBody.appendChild(newCheckNoInput);\r\n\r\n const addRightCard = document.createElement(\"div\");\r\n const addRightHeader = document.createElement(\"div\");\r\n const addRightBody = document.createElement(\"div\");\r\n addRightCard.classList.add(\"card\");\r\n addRightHeader.classList.add(\"card__header\");\r\n addRightBody.classList.add(\"card__body\");\r\n addRightBody.id = 'consumerOnRouteSection';\r\n addRightCard.appendChild(addRightBody);\r\n\r\n addRightBody.appendChild(newDescriptionInput);\r\n const questionAttachment = new consumerFinanceAttachment.ConsumerFinanceAttachment(attachmentArray, regId, IsDisabledBtn, attachmentId);\r\n addRightBody.appendChild(questionAttachment.attachmentButton);\r\n\r\n addRightBody.appendChild(newReceiptInput);\r\n if (registerId) {\r\n addRightBody.appendChild(btnWrap);\r\n NEW_CANCEL_BTN.style.width = '100%';\r\n addRightBody.appendChild(NEW_CANCEL_BTN);\r\n }\r\n else {\r\n addRightBody.appendChild(btnWrap);\r\n }\r\n\r\n column2.appendChild(addRightCard);\r\n\r\n DOM.ACTIONCENTER.appendChild(column1);\r\n DOM.ACTIONCENTER.appendChild(column2);\r\n eventListeners();\r\n\r\n populateAccountDropdown();\r\n populatePayeeDropdown();\r\n populateCategoryDropdown(categoryID);\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n\r\n if (category == '--Split--') {\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n }\r\n else {\r\n document.getElementById('SPLIT_BTN').style.display = 'none';\r\n }\r\n }\r\n\r\n async function getSplitdata() {\r\n const SplitDataresult = await ConsumerFinancesAjax.getSplitRegisterAccountEntriesByIDAsync(regId);\r\n const { getSplitRegisterAccountEntriesByIDResult } = SplitDataresult;\r\n splitAmount = getSplitRegisterAccountEntriesByIDResult;\r\n\r\n buildSplitTransectionPopUp();\r\n if (splitAmount.length > 0) {\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n }\r\n }\r\n\r\n function enableDisabledInputs() {\r\n if (IsReconciled == 'Y') {\r\n DisabledAllInputs();\r\n } else if (IsReconciled == 'N') {\r\n if (!$.session.CFUpdate) {\r\n DisabledAllInputs();\r\n }\r\n else if (!$.session.CFEditAccountEntries && lastUpdateBy != $.session.UserId) {\r\n DisabledAllInputs();\r\n }\r\n else if (($.session.CFDelete || $.session.CFUpdate || $.session.CFView) && lastUpdateBy == $.session.UserId) {\r\n EnabledAllInputs();\r\n if (!$.session.CFDelete) {\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFUpdate) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n else if ($.session.CFDelete || $.session.CFUpdate || $.session.CFView || $.session.CFEditAccountEntries) {\r\n EnabledAllInputs();\r\n if (!$.session.CFDelete) {\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFADDPayee) {\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n }\r\n if (!$.session.CFUpdate) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n else {\r\n DisabledAllInputs();\r\n }\r\n }\r\n else {\r\n DisabledAllInputs();\r\n }\r\n }\r\n\r\n function DisabledAllInputs() {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n newDateInput.classList.add('disabled');\r\n newAmountInput.classList.add('disabled');\r\n newAccountDropdown.classList.add('disabled');\r\n newPayeeDropdown.classList.add('disabled');\r\n ADD_NEW_PAYEE_BTN.classList.add('disabled');\r\n newCategoryDropdown.classList.add('disabled');\r\n newSubCategoryDropdown.classList.add('disabled');\r\n newCheckNoInput.classList.add('disabled');\r\n newDescriptionInput.classList.add('disabled');\r\n newReceiptInput.classList.add('disabled');\r\n NEW_DELETE_BTN.classList.add('disabled');\r\n expenseRadio.classList.add('disabled');\r\n depositRadio.classList.add('disabled');\r\n IsDisabledBtn = true;\r\n }\r\n\r\n function EnabledAllInputs() {\r\n NEW_SAVE_BTN.classList.remove('disabled');\r\n newDateInput.classList.remove('disabled');\r\n newAmountInput.classList.remove('disabled');\r\n newAccountDropdown.classList.remove('disabled');\r\n newPayeeDropdown.classList.remove('disabled');\r\n newCategoryDropdown.classList.remove('disabled');\r\n newSubCategoryDropdown.classList.remove('disabled');\r\n newCheckNoInput.classList.remove('disabled');\r\n newDescriptionInput.classList.remove('disabled');\r\n newReceiptInput.classList.remove('disabled');\r\n NEW_DELETE_BTN.classList.remove('disabled');\r\n expenseRadio.classList.remove('disabled');\r\n depositRadio.classList.remove('disabled');\r\n IsDisabledBtn = false;\r\n }\r\n\r\n function checkRequiredFieldsOfNewEntry() {\r\n var date = newDateInput.querySelector('#newDateInput');\r\n var amount = newAmountInput.querySelector('#newAmountInput');\r\n var account = newAccountDropdown.querySelector('#newAccountDropdown');\r\n var payee = newPayeeDropdown.querySelector('#newPayeeDropdown');\r\n var category = newCategoryDropdown.querySelector('#newCategoryDropdown');\r\n var subCategory = newSubCategoryDropdown.querySelector('#newSubCategoryDropdown');\r\n\r\n if (date.value === '') {\r\n newDateInput.classList.add('error');\r\n } else {\r\n newDateInput.classList.remove('error');\r\n }\r\n\r\n if (amount.value === '') {\r\n newAmountInput.classList.add('error');\r\n } else {\r\n newAmountInput.classList.remove('error');\r\n }\r\n\r\n if (account.value === '') {\r\n newAccountDropdown.classList.add('error');\r\n } else {\r\n newAccountDropdown.classList.remove('error');\r\n }\r\n\r\n if (payee.value === '' || payee.value === 'Opening Balance') {\r\n newPayeeDropdown.classList.add('error');\r\n } else {\r\n newPayeeDropdown.classList.remove('error');\r\n }\r\n\r\n if (category.value === '') {\r\n newCategoryDropdown.classList.add('error');\r\n } else {\r\n newCategoryDropdown.classList.remove('error');\r\n }\r\n\r\n if (IsReconciled == 'N') {\r\n setBtnStatusOfNewEntry();\r\n }\r\n }\r\n\r\n function setBtnStatusOfNewEntry() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n if (tempdate != '' || tempamount != '' || tempaccount != '' || tempaccountType != '' || temppayee != '' || tempcategory != '' || tempsubCategory != '' || tempcheckNo != '' || tempdescription != '' || tempattachment != '' || tempreceipt != '' || tempSplit != '') {\r\n NEW_SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n ADD_NEW_PAYEE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && ADD_NEW_PAYEE_BTN.classList.contains('disabled')) {\r\n IsAddNewPayDisable = false;\r\n }\r\n });\r\n ADD_NEW_PAYEE_BTN.addEventListener('click', event => {\r\n if (IsAddNewPayDisable) {\r\n buildNewPayeePopUp();\r\n }\r\n IsAddNewPayDisable = true;\r\n });\r\n SPLIT_BTN.addEventListener('click', event => {\r\n buildSplitTransectionPopUp();\r\n });\r\n NEW_SAVE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && NEW_SAVE_BTN.classList.contains('disabled')) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n IsSaveDisable = false;\r\n }\r\n });\r\n NEW_SAVE_BTN.addEventListener('click', event => {\r\n if (IsSaveDisable) {\r\n NEW_SAVE_BTN.classList.add('disabled');\r\n saveNewAccount();\r\n }\r\n IsSaveDisable = true;\r\n });\r\n NEW_DELETE_BTN.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && NEW_DELETE_BTN.classList.contains('disabled')) {\r\n IsDeleteDisable = false;\r\n }\r\n });\r\n NEW_DELETE_BTN.addEventListener('click', event => {\r\n if (IsDeleteDisable) {\r\n deleteAccountPOPUP();\r\n }\r\n IsDeleteDisable = true;\r\n });\r\n\r\n newDateInput.addEventListener('input', event => {\r\n if (!newDateInput.classList.contains('disabled')) {\r\n date = event.target.value;\r\n tempdate = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newAmountInput.addEventListener('input', event => {\r\n if (!newAmountInput.classList.contains('disabled')) {\r\n amount = event.target.value;\r\n if (amount.includes('.') && (amount.match(/\\./g).length > 1 || amount.toString().split('.')[1].length > 2)) {\r\n document.getElementById('newAmountInput').value = amount.substring(0, amount.length - 1);\r\n return;\r\n }\r\n tempamount = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n\r\n newAmountInput.addEventListener('focusout', event => {\r\n if (totalAmountSaved > 0 && totalAmountSaved != event.target.value && category == '--Split--') {\r\n errorPopup(2);\r\n }\r\n if (document.getElementById('newAmountInput').value != '')\r\n document.getElementById('newAmountInput').value = parseFloat(document.getElementById('newAmountInput').value).toFixed(2);\r\n });\r\n\r\n newPayeeDropdown.addEventListener('change', event => {\r\n if (!newPayeeDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n if (categoryID != '') {\r\n getCategorySubCategorybyPayee(categoryID);\r\n }\r\n payee = event.target.options[event.target.selectedIndex].text;\r\n temppayee = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newAccountDropdown.addEventListener('change', event => {\r\n if (!newAccountDropdown.classList.contains('disabled')) {\r\n accountID = event.target.options[event.target.selectedIndex].id;\r\n account = event.target.options[event.target.selectedIndex].text;\r\n tempaccount = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newCategoryDropdown.addEventListener('change', event => {\r\n if (!newCategoryDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n category = event.target.options[event.target.selectedIndex].text;\r\n if (category == '--Split--') {\r\n getSplitdata();\r\n }\r\n else {\r\n document.getElementById('SPLIT_BTN').style.display = 'none';\r\n totalAmountSaved = '';\r\n splitAmount = [];\r\n }\r\n tempcategory = 'ChangedValue';\r\n subCategory = '';\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newSubCategoryDropdown.addEventListener('change', event => {\r\n if (!newSubCategoryDropdown.classList.contains('disabled')) {\r\n categoryID = event.target.options[event.target.selectedIndex].id;\r\n subCategory = event.target.options[event.target.selectedIndex].text;\r\n tempsubCategory = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newCheckNoInput.addEventListener('input', event => {\r\n if (!newCheckNoInput.classList.contains('disabled')) {\r\n checkNo = event.target.value;\r\n tempcheckNo = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newDescriptionInput.addEventListener('input', event => {\r\n if (!newDescriptionInput.classList.contains('disabled')) {\r\n description = event.target.value;\r\n tempdescription = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n newReceiptInput.addEventListener('input', event => {\r\n if (!newReceiptInput.classList.contains('disabled')) {\r\n receipt = event.target.value;\r\n tempreceipt = 'ChangedValue';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n expenseRadio.addEventListener('change', event => {\r\n if (!expenseRadio.classList.contains('disabled')) {\r\n accountType = 'E';\r\n tempaccountType = 'E';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n depositRadio.addEventListener('change', event => {\r\n if (!depositRadio.classList.contains('disabled')) {\r\n accountType = 'D';\r\n tempaccountType = 'D';\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n });\r\n }\r\n\r\n async function saveNewAccount() {\r\n if (document.getElementById('newCategoryDropdown').value != '--Split--') {\r\n splitAmount = [];\r\n }\r\n const amountType = document.getElementById(\"expenseRadio\").checked ? \"E\" : \"D\";\r\n if (attachmentArray == undefined || attachmentArray.length == 0) {\r\n const result = await ConsumerFinancesAjax.insertAccountAsync(date, amount, amountType, accountID, payee, category, subCategory, checkNo, description, null, null, receipt, BtnName, regId, splitAmount, categoryID);\r\n const { insertAccountResult } = result;\r\n if (insertAccountResult.registerId != null) {\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n }\r\n else {\r\n const result = await ConsumerFinancesAjax.insertAccountAsync(date, amount, amountType, accountID, payee, category, subCategory, checkNo, description, attachmentId, attachmentDesc, receipt, BtnName, regId, splitAmount, categoryID);\r\n const { insertAccountResult } = result;\r\n\r\n if (insertAccountResult.registerId != null) {\r\n splitAmount = [];\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n }\r\n }\r\n\r\n function deleteAccountPOPUP() {\r\n const confirmPopup = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning'],\r\n });\r\n\r\n YES_BTN = button.build({\r\n text: 'YES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n deleteAccount(confirmPopup);\r\n },\r\n });\r\n\r\n NO_BTN = button.build({\r\n text: 'NO',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(confirmPopup);\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n\r\n message.innerText = 'Are you sure you would like to delete this record?';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n confirmPopup.appendChild(message);\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n popupbtnWrap.appendChild(YES_BTN);\r\n popupbtnWrap.appendChild(NO_BTN);\r\n confirmPopup.appendChild(popupbtnWrap);\r\n YES_BTN.focus();\r\n POPUP.show(confirmPopup);\r\n }\r\n\r\n async function deleteAccount(confirmPopup) {\r\n await ConsumerFinancesAjax.deleteConsumerFinanceAccountAsync(regId);\r\n POPUP.hide(confirmPopup);\r\n ConsumerFinances.loadConsumerFinanceLanding();\r\n }\r\n\r\n async function getCategorySubCategorybyPayee(categoryID) {\r\n const {\r\n getCategoriesSubCategoriesByPayeeResult: CategoriesSubCategory,\r\n } = await ConsumerFinancesAjax.getCategoriesSubCategoriesByPayeeAsync(categoryID);\r\n\r\n if (payee == 'Opening Balance') {\r\n category = '';\r\n } else {\r\n category = CategoriesSubCategory[0].CategoryDescription;\r\n }\r\n subCategory = CategoriesSubCategory[0].SubCategoryDescription;\r\n populateCategoryDropdown(categoryID);\r\n populateSubCategoryDropdown(category);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n // Populate the Account DDL \r\n async function populateAccountDropdown() {\r\n const {\r\n getActiveAccountResult: accounts,\r\n } = await ConsumerFinancesAjax.getActiveAccountAsync($.session.consumerId, accountPermission);\r\n let data = accounts.map((account) => ({\r\n id: account.accountId,\r\n value: account.accountName,\r\n text: account.accountName\r\n }));\r\n if (data.length == 1) {\r\n account = data[0].value;\r\n accountID = data[0].id;\r\n }\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newAccountDropdown\", data, account);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populatePayeeDropdown() {\r\n const {\r\n getPayeesResult: Payees,\r\n } = await ConsumerFinancesAjax.getPayeesAsync($.session.consumerId);\r\n let data = Payees.map((payees) => ({\r\n id: payees.CategoryID,\r\n value: payees.Description,\r\n text: payees.Description\r\n }));\r\n data.unshift({ id: null, value: 'Opening Balance', text: 'Opening Balance' });\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newPayeeDropdown\", data, payee);\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populateCategoryDropdown(categoryID) {\r\n const {\r\n getCatogoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getCategoriesAsync(categoryID);\r\n let data = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryDescription,\r\n text: category.CategoryDescription\r\n }));\r\n\r\n data.unshift({ id: null, value: '--Split--', text: '--Split--' });\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newCategoryDropdown\", data, category);\r\n if (category == '--Split--' && document.getElementById('SPLIT_BTN').style.display == 'none' && payee != 'Opening Balance') {\r\n buildSplitTransectionPopUp();\r\n }\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n async function populateSubCategoryDropdown(category) {\r\n const {\r\n getSubCatogoriesResult: SubCategory,\r\n } = await ConsumerFinancesAjax.getSubCategoriesAsync(category);\r\n let data = SubCategory.map((subCategory) => ({\r\n id: subCategory.CategoryID,\r\n value: subCategory.SubCategoryDescription,\r\n text: subCategory.SubCategoryDescription\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"newSubCategoryDropdown\", data, subCategory);\r\n checkRequiredFieldsOfNewEntry();\r\n\r\n }\r\n\r\n // build payee pop-up used for adding payee information\r\n async function buildNewPayeePopUp() {\r\n payeeId = '';\r\n payeeName = '';\r\n payeeaddress1 = '';\r\n payeeaddress2 = '';\r\n payeecity = '';\r\n payeestate = 'OH';\r\n payeezipcode = '';\r\n\r\n\r\n let addPayeePopup = POPUP.build({\r\n header: \"Add payee\",\r\n hideX: true,\r\n id: \"addPayeePopup\"\r\n });\r\n\r\n payeeInput = input.build({\r\n id: 'payeeInput',\r\n label: 'Name',\r\n value: (payeeName) ? payeeName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n id: 'address1Input',\r\n label: 'Address 1',\r\n value: (payeeaddress1) ? payeeaddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (payeeaddress2) ? payeeaddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n id: 'cityInput',\r\n label: 'City',\r\n value: (payeecity) ? payeecity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n id: 'stateInput',\r\n label: 'State',\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: (payeestate) ? payeestate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n id: 'zipcodeInput',\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '10' }],\r\n value: (payeezipcode) ? payeezipcode : '',\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addpayeeSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => addPayeePopupDoneBtn()\r\n });\r\n\r\n cancelBtn = button.build({\r\n id: \"addpayeeCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(addPayeePopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n addPayeePopup.appendChild(payeeInput);\r\n addPayeePopup.appendChild(address1Input);\r\n addPayeePopup.appendChild(address2Input);\r\n addPayeePopup.appendChild(cityInput);\r\n addPayeePopup.appendChild(stateInput);\r\n addPayeePopup.appendChild(zipcodeInput);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

`;\r\n addPayeePopup.appendChild(confirmMessage);\r\n\r\n addPayeePopup.appendChild(btnWrap);\r\n popUpEventHandlers();\r\n POPUP.show(addPayeePopup);\r\n checkRequiredFields();\r\n\r\n }\r\n\r\n function popUpEventHandlers() {\r\n\r\n payeeInput.addEventListener('input', event => {\r\n payeeName = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n payeeaddress1 = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n payeeaddress2 = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n payeecity = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n payeestate = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n payeezipcode = event.target.value;\r\n var reg = new RegExp('^[0-9 -]+$');\r\n if (payeezipcode) {\r\n if (!reg.test(payeezipcode)) {\r\n document.getElementById('zipcodeInput').value = payeezipcode.substring(0, payeezipcode.length - 1);\r\n return;\r\n }\r\n payeezipcode = payeezipcode.split('-').join('');\r\n let finalVal = payeezipcode.match(/.{1,5}/g).join('-');\r\n document.getElementById('zipcodeInput').value = finalVal;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n }\r\n\r\n function checkRequiredFields() {\r\n var payee = payeeInput.querySelector('#payeeInput');\r\n var address1 = address1Input.querySelector('#address1Input');\r\n var city = cityInput.querySelector('#cityInput');\r\n var state = stateInput.querySelector('#stateInput');\r\n var zipcode = zipcodeInput.querySelector('#zipcodeInput');\r\n\r\n if (payee.value === '') {\r\n payeeInput.classList.add('errorPopup');\r\n } else {\r\n payeeInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (address1.value === '') {\r\n address1Input.classList.add('errorPopup');\r\n } else {\r\n address1Input.classList.remove('errorPopup');\r\n }\r\n\r\n if (city.value === '') {\r\n cityInput.classList.add('errorPopup');\r\n } else {\r\n cityInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (state.value === '') {\r\n stateInput.classList.add('errorPopup');\r\n } else {\r\n stateInput.classList.remove('errorPopup');\r\n }\r\n\r\n if (zipcode.value === '') {\r\n zipcodeInput.classList.add('errorPopup');\r\n } else {\r\n zipcodeInput.classList.remove('errorPopup');\r\n }\r\n setBtnStatus();\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function addPayeePopupDoneBtn() {\r\n const result = await ConsumerFinancesAjax.insertPayeeAsync(payeeName, payeeaddress1, payeeaddress2, payeecity, payeestate, payeezipcode);\r\n const { insertPayeeResult } = result;\r\n\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertPayeeResult.RegionID == '-1') {\r\n duplicatePayeErrorPopup();\r\n\r\n }\r\n else {\r\n POPUP.hide(addPayeePopup);\r\n payee = payeeName;\r\n document.getElementById('newCategoryDropdown').value = '';\r\n document.getElementById('newSubCategoryDropdown').value = '';\r\n temppayee = 'ChangedValue';\r\n populatePayeeDropdown();\r\n }\r\n\r\n }\r\n\r\n function duplicatePayeErrorPopup() {\r\n const duplicatePayeErrorConfPOPUP = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning'],\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(duplicatePayeErrorConfPOPUP);\r\n POPUP.show(addPayeePopup);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const message = document.createElement('p');\r\n message.innerText = 'You are trying to add a payee that already exists, please select the existing payee or enter a new payee with a different name.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n duplicatePayeErrorConfPOPUP.appendChild(message);\r\n duplicatePayeErrorConfPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(duplicatePayeErrorConfPOPUP);\r\n }\r\n\r\n async function buildSplitTransectionPopUp() {\r\n if (splitAmount.length > 3) {\r\n numberOfRows = splitAmount.length + 2;\r\n }\r\n\r\n regTotalAmount = document.getElementById('newAmountInput').value != '' ? parseFloat(document.getElementById('newAmountInput').value).toFixed(2) : 0;\r\n splitTransPopup = POPUP.build({\r\n header: \"Split Transaction\",\r\n hideX: true,\r\n id: \"splitTransPopup\"\r\n });\r\n\r\n splitTransPopup.style.maxWidth = '900px';\r\n\r\n for (let i = 0; i < numberOfRows; i++) {\r\n splitCategoryDropdownN[i] = dropdown.build({\r\n id: 'splitCategoryDropdownN' + i,\r\n label: \"Category\",\r\n dropdownId: \"splitCategoryDropdownN\" + i,\r\n });\r\n\r\n splitDescriptionInputN[i] = input.build({\r\n id: 'splitDescriptionInputN' + i,\r\n type: 'text',\r\n label: 'Description',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: splitAmount[i] != undefined ? splitAmount[i].description : '',\r\n });\r\n\r\n splitAmountInputN[i] = input.build({\r\n id: 'splitAmountInputN' + i,\r\n type: 'number',\r\n label: 'Amount',\r\n style: 'secondary',\r\n value: splitAmount[i] != undefined ? splitAmount[i].amount : '',\r\n });\r\n\r\n btnWrapInputsN = document.createElement(\"div\");\r\n btnWrapInputsN.classList.add(\"cFInputWrap\");\r\n splitCategoryDropdownN[i].classList.add('width37Per');\r\n btnWrapInputsN.appendChild(splitCategoryDropdownN[i]);\r\n splitDescriptionInputN[i].classList.add('width37Per');\r\n btnWrapInputsN.appendChild(splitDescriptionInputN[i]);\r\n splitAmountInputN[i].classList.add('width21Per');\r\n btnWrapInputsN.appendChild(splitAmountInputN[i]);\r\n splitTransPopup.appendChild(btnWrapInputsN);\r\n }\r\n\r\n\r\n regAmountTotalInput = input.build({\r\n id: 'regAmountTotalInput',\r\n type: 'number',\r\n label: 'Register Total',\r\n style: 'secondary',\r\n readonly: true,\r\n value: regTotalAmount,\r\n });\r\n\r\n amountTotalInput = input.build({\r\n id: 'amountTotalInput',\r\n type: 'number',\r\n label: 'Total',\r\n style: 'secondary',\r\n readonly: true,\r\n value: totalAmount,\r\n });\r\n\r\n let totalBtnWrapInputs = document.createElement(\"div\");\r\n totalBtnWrapInputs.classList.add(\"cFInputWrap\");\r\n regAmountTotalInput.classList.add('width21Per');\r\n regAmountTotalInput.classList.add('marginLeft50Per');\r\n totalBtnWrapInputs.appendChild(regAmountTotalInput);\r\n amountTotalInput.classList.add('width21Per');\r\n totalBtnWrapInputs.appendChild(amountTotalInput);\r\n splitTransPopup.appendChild(totalBtnWrapInputs);\r\n\r\n saveSplitBtn = button.build({\r\n id: \"saveSplitBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => splitTransPopupSaveBtn()\r\n });\r\n\r\n cancelSplitBtn = button.build({\r\n id: \"cancelSplitBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => {\r\n document.getElementById('newCategoryDropdown').value = categoryOldVal;\r\n\r\n if (tempAmountval) {\r\n document.getElementById('newAmountInput').value = tempAmountval;\r\n amount = tempAmountval;\r\n }\r\n\r\n POPUP.hide(splitTransPopup);\r\n checkRequiredFieldsOfNewEntry();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveSplitBtn);\r\n btnWrap.appendChild(cancelSplitBtn);\r\n splitTransPopup.appendChild(btnWrap);\r\n popUpSplitTransectionEventHandlers();\r\n POPUP.show(splitTransPopup);\r\n populateSplitCategoryDropdown('');\r\n splitAmountTotal();\r\n }\r\n\r\n function popUpSplitTransectionEventHandlers() {\r\n for (let i = 0; i < numberOfRows; i++) {\r\n splitAmountInputN[i].addEventListener('input', event => {\r\n tempAmouts = event.target.value;\r\n if (tempAmouts.includes('.') && (tempAmouts.match(/\\./g).length > 1 || tempAmouts.toString().split('.')[1].length > 2)) {\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = tempAmouts.substring(0, tempAmouts.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n splitAmountTotal();\r\n });\r\n splitAmountInputN[i].addEventListener('focusout', event => {\r\n tempAmouts = event.target.value;\r\n if (tempAmouts.includes('.') && (tempAmouts.match(/\\./g).length > 1 || tempAmouts.toString().split('.')[1].length > 2)) {\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = tempAmouts.substring(0, tempAmouts.length - 1);\r\n return;\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n splitAmountTotal();\r\n if (splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value != '')\r\n splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value = parseFloat(splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value).toFixed(2);\r\n });\r\n\r\n splitDescriptionInputN[i].addEventListener('input', event => {\r\n checkRequiredFieldsSplitTransection();\r\n });\r\n\r\n splitCategoryDropdownN[i].addEventListener('change', event => {\r\n checkRequiredFieldsSplitTransection();\r\n });\r\n }\r\n }\r\n\r\n function checkRequiredFieldsSplitTransection() {\r\n for (let i = 0; i < 2; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value === '') {\r\n splitCategoryDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n splitCategoryDropdownN[i].classList.remove('errorPopup');\r\n }\r\n\r\n if (splitAmt.value === '') {\r\n splitAmountInputN[i].classList.add('errorPopup');\r\n } else {\r\n splitAmountInputN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n\r\n for (let i = 2; i < numberOfRows; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value !== '' && splitAmt.value === '') {\r\n splitAmountInputN[i].classList.add('errorPopup');\r\n } else {\r\n splitAmountInputN[i].classList.remove('errorPopup');\r\n }\r\n if (SplitCategory.value === '' && splitAmt.value !== '') {\r\n splitCategoryDropdownN[i].classList.add('errorPopup');\r\n } else {\r\n splitCategoryDropdownN[i].classList.remove('errorPopup');\r\n }\r\n }\r\n\r\n setBtnStatusSplitTransection();\r\n }\r\n\r\n function setBtnStatusSplitTransection() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n saveSplitBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveSplitBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function populateSplitCategoryDropdown(categoryID) { \r\n const {\r\n getSplitCategoriesSubCategoriesResult: Category,\r\n } = await ConsumerFinancesAjax.getSplitCategoriesSubCategoriesAsync(categoryID);\r\n let data = Category.map((category) => ({\r\n id: category.CategoryID,\r\n value: category.CategoryID,\r\n text: category.CategoryDescription\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n for (let i = 0; i < numberOfRows; i++) {\r\n dropdown.populate(\"splitCategoryDropdownN\" + i, data, splitAmount[i] != undefined ? splitAmount[i].categoryId : '');\r\n }\r\n checkRequiredFieldsSplitTransection();\r\n }\r\n\r\n function splitAmountTotal() {\r\n var sum = 0;\r\n for (var i = 0; i < numberOfRows; i++) {\r\n if (splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value != '')\r\n sum += parseFloat(splitAmountInputN[i].querySelector('#splitAmountInputN' + i).value);\r\n }\r\n totalAmount = parseFloat(sum).toFixed(2); \r\n document.getElementById('amountTotalInput').value = sum.toFixed(2);\r\n if (document.getElementById('newAmountInput').value == '') {\r\n document.getElementById('newAmountInput').value = sum.toFixed(2);\r\n document.getElementById('regAmountTotalInput').value = sum.toFixed(2);\r\n amount = sum.toFixed(2);\r\n }\r\n }\r\n\r\n async function splitTransPopupSaveBtn() {\r\n if (regTotalAmount != totalAmount) {\r\n errorPopup(1);\r\n }\r\n else {\r\n splitTransSaveData();\r\n POPUP.hide(splitTransPopup);\r\n }\r\n }\r\n\r\n function errorPopup(errorCode) {\r\n const errorConfPOPUP = POPUP.build({\r\n hideX: true,\r\n classNames: ['warning', 'popupSize'],\r\n });\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (errorCode == 1) {\r\n cancelSplitBtn.classList.remove('disabled');\r\n POPUP.hide(errorConfPOPUP);\r\n POPUP.hide(splitTransPopup);\r\n document.getElementById('newAmountInput').value = parseFloat(totalAmount).toFixed(2);\r\n amount = parseFloat(totalAmount).toFixed(2);\r\n splitTransSaveData();\r\n }\r\n else {\r\n POPUP.hide(errorConfPOPUP);\r\n buildSplitTransectionPopUp();\r\n }\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n if (errorCode == 1) {\r\n cancelSplitBtn.classList.remove('disabled');\r\n POPUP.hide(errorConfPOPUP);\r\n POPUP.show(splitTransPopup);\r\n } else {\r\n document.getElementById('newAmountInput').value = parseFloat(totalAmount).toFixed(2);\r\n amount = parseFloat(totalAmount).toFixed(2);\r\n POPUP.hide(errorConfPOPUP);\r\n }\r\n },\r\n });\r\n\r\n const message = document.createElement('p');\r\n if (errorCode == 1)\r\n message.innerText = 'The total of this split transaction dose not match the total entered on the New Entry form. Would you like to change the total on the New Entry form.';\r\n else\r\n message.innerText = 'The Amount entered does not equal the total amount for this split transaction. Would you like to edit the split transaction?';\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n errorConfPOPUP.appendChild(message);\r\n errorConfPOPUP.appendChild(btnWrap);\r\n POPUP.show(errorConfPOPUP);\r\n if (errorCode == 1)\r\n cancelSplitBtn.classList.add('disabled');\r\n }\r\n\r\n async function splitTransSaveData() {\r\n splitAmount = [];\r\n for (let i = 0; i < numberOfRows; i++) {\r\n var SplitCategory = splitCategoryDropdownN[i].querySelector('#splitCategoryDropdownN' + i);\r\n var desc = splitDescriptionInputN[i].querySelector('#splitDescriptionInputN' + i);\r\n var splitAmt = splitAmountInputN[i].querySelector('#splitAmountInputN' + i);\r\n if (SplitCategory.value !== '') {\r\n splitAmount.push({\r\n \"itemNumber\": i + 1,\r\n \"categoryId\": SplitCategory.options[SplitCategory.selectedIndex].id,\r\n \"category\": SplitCategory.options[SplitCategory.selectedIndex].value,\r\n \"description\": desc.value,\r\n \"amount\": splitAmt.value\r\n });\r\n }\r\n }\r\n document.getElementById('SPLIT_BTN').style.display = 'block';\r\n tempSplit = 'ChangedValue';\r\n tempAmountval = totalAmount;\r\n totalAmountSaved = totalAmount;\r\n categoryOldVal = document.getElementById('newCategoryDropdown').value;\r\n checkRequiredFieldsOfNewEntry();\r\n }\r\n\r\n function getaccountPermission() {\r\n accountPermission = '';\r\n tempAccountPer = [];\r\n if ($.session.CFViewChecking)\r\n tempAccountPer.push('Checking');\r\n\r\n if ($.session.CFViewCraditCard) {\r\n tempAccountPer.push('Credit Card');\r\n }\r\n\r\n if ($.session.CFViewFoodStamp) {\r\n tempAccountPer.push('Food Stamps');\r\n }\r\n\r\n if ($.session.CFViewPettyCash) {\r\n tempAccountPer.push('Petty Cash');\r\n }\r\n\r\n if ($.session.CFViewShaving) {\r\n tempAccountPer.push('Savings');\r\n }\r\n\r\n if ($.session.CFViewChristmasClub) {\r\n tempAccountPer.push('Christmas Club');\r\n }\r\n if ($.session.CFViewSystem20183A) {\r\n tempAccountPer.push('System 2018.3A');\r\n }\r\n if ($.session.CFViewSystem20183) {\r\n tempAccountPer.push('System 2018.3');\r\n }\r\n if ($.session.CFViewOhioEBT) {\r\n tempAccountPer.push('Ohio EBT');\r\n }\r\n if ($.session.CFViewViewFoodStampDebitCardEBT) {\r\n tempAccountPer.push('Food Stamp Debit Card EBT'); \r\n }\r\n\r\n if (tempAccountPer.length > 0)\r\n accountPermission = tempAccountPer.toString();\r\n else\r\n accountPermission = '';\r\n }\r\n\r\n return {\r\n init,\r\n buildNewEntryForm,\r\n populatePayeeDropdown,\r\n populateCategoryDropdown,\r\n populateAccountDropdown,\r\n };\r\n})(); ","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 };\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 };\r\n\r\n // Global Dash Functions\r\n function appendFilterButton(widgetId, btnId) {\r\n var filterBtn = document.getElementById(btnId);\r\n if (!filterBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n filterBtn = button.build({\r\n id: btnId,\r\n text: 'Filter',\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'filter',\r\n iconPos: 'right',\r\n callback: function () {\r\n var filtersSelector = `#${widgetId} .widget__filters`;\r\n var widgetFilters = document.querySelector(filtersSelector);\r\n overlay.show();\r\n bodyScrollLock.disableBodyScroll(widgetFilters);\r\n widgetFilters.classList.add('visible');\r\n },\r\n });\r\n widgetHeader.appendChild(filterBtn);\r\n }\r\n }\r\n\r\n function appendPDFButton(widgetId, btnId) {\r\n var pdfBtn = document.getElementById(btnId);\r\n if (!pdfBtn) {\r\n var headerSelector = `#${widgetId} .widget__header`;\r\n var widgetHeader = document.querySelector(headerSelector);\r\n pdfBtn = button.build({\r\n id: btnId,\r\n style: 'primary',\r\n type: 'text',\r\n icon: 'PDFFormWhite', \r\n iconPos: 'right', \r\n callback: function () {\r\n generateReports.passFilterValuesForReport('My Case Load Roster List', null);\r\n generateReports.showWarningPopup('My Case Load Roster List')\r\n },\r\n });\r\n widgetHeader.appendChild(pdfBtn);\r\n }\r\n }\r\n\r\n function buildFilterPopup() {\r\n var filterPopup = document.createElement('div');\r\n filterPopup.classList.add('widget__filters', 'popup', 'popup--static', 'popup--filter');\r\n filterPopup.setAttribute('data-popup', 'true');\r\n\r\n return filterPopup;\r\n }\r\n\r\n // Widget Init Functions\r\n function initAbsentWidget() {\r\n const showHide = getWidgetSettings(widgetIds.absent).showHide;\r\n if (!infalOnly) {\r\n (function loadAbsentWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.absent);\r\n div.id = 'dashabsentconsumers';\r\n div.classList.add('widget');\r\n div.classList.add('absentWidget');\r\n div.innerHTML = html.absent;\r\n widgets.push(div);\r\n setupFuncs.push(absentWidget.init);\r\n })();\r\n }\r\n }\r\n function initLinksAndMessagesWidget() { \r\n const showHideCustomLinks = getWidgetSettings(widgetIds.customLinks).showHide;\r\n (function loadSysMessagesAndCustomLinksWidget() {\r\n var div2 = document.createElement('div');\r\n div2.setAttribute('data-show', showHideCustomLinks);\r\n div2.setAttribute('data-widgetId', widgetIds.customLinks);\r\n div2.id = 'dashcustomlinks';\r\n div2.classList.add('widget');\r\n div2.classList.add('customLinksWidget');\r\n div2.innerHTML = html.customLinks;\r\n widgets.push(div2);\r\n // Check if setupFuncs already contains linksAndMessages.init (stops duplicate messages and links)\r\n if (!setupFuncs.includes(linksAndMessages.init)) { \r\n setupFuncs.push(linksAndMessages.init);\r\n }\r\n })();\r\n }\r\n\r\n function initSystemMessagesWidget() { \r\n (function loadSysMessagesAndCustomLinksWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', 'Y');\r\n div.setAttribute('data-widgetId', widgetIds.systemMessages);\r\n div.id = 'dashsystemmessagewidget';\r\n div.classList.add('widget');\r\n div.classList.add('systemMessagesWidget');\r\n div.innerHTML = html.systemMessages;\r\n widgets.push(div);\r\n\r\n // Check if setupFuncs already contains linksAndMessages.init (stops duplicate messages and links)\r\n if (!setupFuncs.includes(linksAndMessages.init)) {\r\n setupFuncs.push(linksAndMessages.init);\r\n }\r\n })();\r\n }\r\n\r\n function initSingleEntryWidget() {\r\n const showHide = getWidgetSettings(widgetIds.singleEntry).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.SingleEntryView &&\r\n $.session.singleEntryPermission === 'Anywhere_SingleEntry'\r\n ) {\r\n // Single Entry\r\n (function loadAdminSingleEntryWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.singleEntry);\r\n div.id = 'dashsingleentrywidget';\r\n div.classList.add('widget');\r\n div.classList.add('singleEntryWidget');\r\n div.innerHTML = html.singleEntry;\r\n widgets.push(div);\r\n setupFuncs.push(singleEntryCountWidget.init);\r\n })();\r\n }\r\n }\r\n function initAdminSingleEntryWidget() {\r\n const showHide = getWidgetSettings(widgetIds.adminSingleEntry).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.ViewAdminSingleEntry &&\r\n $.session.SEViewAdminWidget\r\n ) {\r\n //TODO needs added to if $.session.singleEntryPermission == \"Anywhere_SingleEntry\"\r\n (function loadSingleEntryWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.adminSingleEntry);\r\n div.id = 'admindashsingleentrywidget';\r\n div.classList.add('widget');\r\n div.classList.add('adminSingleEntryWidget');\r\n div.innerHTML = html.adminSingleEntry;\r\n widgets.push(div);\r\n setupFuncs.push(adminSingleEntryWidget.init);\r\n })();\r\n }\r\n }\r\n function initTimeClockWidget() {\r\n const showHide = getWidgetSettings(widgetIds.timeClock).showHide;\r\n if (\r\n $.session.isPSI == false &&\r\n $.session.DayServiceUpdate &&\r\n $.session.dayServicesPermission === 'Anywhere_DayServices'\r\n ) {\r\n (function loadEmployeeDayServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.timeClock);\r\n div.id = 'dashtimeclockwidget';\r\n div.classList.add('widget');\r\n div.classList.add('timeClockWidget');\r\n div.innerHTML = html.timeClock;\r\n widgets.push(div);\r\n setupFuncs.push(timeClock.init);\r\n })();\r\n }\r\n }\r\n function initHoursWorkedWidget() {\r\n const showHide = getWidgetSettings(widgetIds.hoursWorked).showHide;\r\n if (\r\n $.session.SEViewAdminWidget === true ||\r\n ($.session.DayServiceUpdate && $.session.dayServicesPermission === 'Anywhere_DayServices')\r\n ) {\r\n (function loadHoursWorkedWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.hoursWorked);\r\n div.id = 'dashhoursworkedwidget';\r\n div.classList.add('widget');\r\n div.classList.add('hoursWorkedWidget');\r\n div.innerHTML = html.hoursWorked;\r\n widgets.push(div);\r\n setupFuncs.push(hoursWorkedWidget.init);\r\n })();\r\n }\r\n }\r\n function initScheduleWidget() {\r\n const showHide = getWidgetSettings(widgetIds.schedule).showHide;\r\n if (\r\n $.session.applicationName !== 'Gatekeeper' &&\r\n $.session.schedulingPermission === 'Scheduling'\r\n ) {\r\n (function loadScheduleWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.schedule);\r\n div.id = 'dashschedulewidget';\r\n div.classList.add('widget');\r\n div.classList.add('scheduleWidget');\r\n div.innerHTML = html.schedule;\r\n widgets.push(div);\r\n setupFuncs.push(schedule.init);\r\n })();\r\n }\r\n }\r\n function initDailyServicesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.goals).showHide;\r\n if (\r\n $.session.GoalsView &&\r\n $.session.outcomesPermission === 'Anywhere_Outcomes' &&\r\n !$.session.removeGoalsWidget\r\n ) {\r\n (function loadDailyServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.goals);\r\n div.id = 'dashgoalswidget';\r\n div.classList.add('widget');\r\n div.classList.add('goalsWidget');\r\n div.innerHTML = html.goals;\r\n widgets.push(div);\r\n\r\n function widgetSetup() {\r\n //remainingDailyServicesWidgetAjax.populateFilteredList('%', '%', '%');\r\n remainingDailyServicesWidget.init();\r\n }\r\n\r\n setupFuncs.push(widgetSetup);\r\n })();\r\n }\r\n }\r\n function initClockedInWidget() {\r\n const showHide = getWidgetSettings(widgetIds.clockedIn).showHide;\r\n if ($.session.DayServiceView && $.session.dayServicesPermission === 'Anywhere_DayServices') {\r\n (function loadDayServicesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.clockedIn);\r\n div.id = 'dashdsclockedin';\r\n div.classList.add('widget');\r\n div.classList.add('clockedInWidget');\r\n div.innerHTML = html.clockedIn;\r\n widgets.push(div);\r\n setupFuncs.push(clockedInWidget.init);\r\n })();\r\n }\r\n }\r\n function initIncidentTrackingWidget() {\r\n const showHide = getWidgetSettings(widgetIds.incidentTracking).showHide;\r\n if (\r\n ($.session.isASupervisor || $.session.isPSI == true) && $.session.incidentTrackingView == true && \r\n $.session.incidentTrackingPermission === 'Anywhere_Incident_Tracking'\r\n ) {\r\n (function loadIncidentTrackingWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.incidentTracking);\r\n div.id = 'incidenttrackingwidget';\r\n div.classList.add('widget');\r\n div.classList.add('incidentWidget');\r\n div.innerHTML = html.incidentTracking;\r\n widgets.push(div);\r\n setupFuncs.push(incidentTrackingWidget.init);\r\n })();\r\n }\r\n }\r\n function initConsumerProgressNotesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.consumerProgressNotes).showHide;\r\n if ($.session.isPSI == true || $.session.useProgressNotes === 'Y') {\r\n (function loadConsumerProgressNotesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.consumerProgressNotes);\r\n div.id = 'consumerprogressnoteswidget';\r\n div.classList.add('widget');\r\n div.classList.add('consumerProgressNoteWidget');\r\n div.innerHTML = html.consumerProgressNotes;\r\n widgets.push(div);\r\n setupFuncs.push(consumerProgresNotes.init);\r\n })();\r\n }\r\n }\r\n function initLocationProgressNotesWidget() {\r\n const showHide = getWidgetSettings(widgetIds.unreadLocationNotes).showHide;\r\n if ($.session.isPSI == true || $.session.useProgressNotes === 'Y') {\r\n (function loadLocationProgressNotesWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.unreadLocationNotes);\r\n div.id = 'locationprogressnoteswidget';\r\n div.classList.add('widget');\r\n div.classList.add('locationProgressNoteWidget');\r\n div.innerHTML = html.unreadLocationNotes;\r\n widgets.push(div);\r\n setupFuncs.push(unreadLocationNotes.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesProductivityWidget() {\r\n const isPSI =\r\n $.session.isPSI == true && $.session.applicationName === 'Gatekeeper' ? true : false;\r\n const hasPerm =\r\n $.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper'\r\n ? true\r\n : false;\r\n const showHide = getWidgetSettings(widgetIds.caseNotesProductivity).showHide;\r\n\r\n if (isPSI || hasPerm) {\r\n (function loadCaseNotesProdictivityWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesProductivity);\r\n div.id = 'casenotesprodictivitywidget';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesProductivityWidget');\r\n div.innerHTML = html.caseNotesProductivity;\r\n widgets.push(div);\r\n setupFuncs.push(CN_ProductivityWidget.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesCaseLoadWidget() {\r\n const showHide = getWidgetSettings(widgetIds.caseNotesCaseLoad).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadCaseNotesCaseLoadWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesCaseLoad);\r\n div.id = 'casenotescaseload';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesCaseLoadWidget');\r\n div.innerHTML = html.caseNotesCaseLoad;\r\n widgets.push(div);\r\n setupFuncs.push(CN_CaseLoadWidget.init);\r\n })();\r\n }\r\n }\r\n function initCaseNotesRejectedWidget() {\r\n const showHide = getWidgetSettings(widgetIds.caseNotesRejected).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.caseNotesPermission === 'Anywhere_CaseNotes' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadCaseNotesCaseLoadWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.caseNotesRejected);\r\n div.id = 'casenotesrejected';\r\n div.classList.add('widget');\r\n div.classList.add('caseNotesRejectedWidget');\r\n div.innerHTML = html.caseNotesRejected;\r\n widgets.push(div);\r\n setupFuncs.push(CN_RejectedWidget.init);\r\n })();\r\n }\r\n }\r\n function initPlanWorkflowWidget() {\r\n const showHide = getWidgetSettings(widgetIds.planWorkflow).showHide;\r\n if (\r\n ($.session.isPSI == true && $.session.applicationName === 'Gatekeeper') ||\r\n ($.session.anywherePlanPermission == 'Anywhere_Plan' &&\r\n $.session.applicationName === 'Gatekeeper')\r\n ) {\r\n (function loadPlanWorkflowWidget() {\r\n var div = document.createElement('div');\r\n div.setAttribute('data-show', showHide);\r\n div.setAttribute('data-widgetId', widgetIds.planWorkflow);\r\n div.id = 'planworkflow';\r\n div.classList.add('widget');\r\n div.classList.add('planWorkflowWidget');\r\n div.innerHTML = html.planWorkflow;\r\n widgets.push(div);\r\n setupFuncs.push(planWorkflowWidget.init);\r\n })();\r\n }\r\n }\r\n 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\r\n /*17*/ initInfalWidget(); // InfalTimeClock Widget\r\n });\r\n\r\n let IsSystemMessageAvailable = widgetSettings.find(x => x.widgetName == 'System Messages') == undefined ? true : false; \r\n if (IsSystemMessageAvailable) {\r\n /*19*/ initSystemMessagesWidget(); // System Message Widget\r\n } \r\n\r\n var actioncenter = document.getElementById('actioncenter');\r\n widgets.forEach(widget => {\r\n actioncenter.appendChild(widget);\r\n });\r\n\r\n setupFuncs.forEach(func => func());\r\n }\r\n\r\n function getWidgetSettings(widgetId) {\r\n if (!widgetId) {\r\n // if no widget id means no settings so go ahead and set showHide to Y\r\n return {\r\n showHide: 'Y',\r\n };\r\n }\r\n\r\n const settingForWidget = widgetSettings.filter(\r\n widget => parseInt(widget.widgetId) === parseInt(widgetId),\r\n )[0];\r\n if (settingForWidget) {\r\n return {\r\n widgetId: settingForWidget.widgetId,\r\n showHide: settingForWidget.showHide,\r\n widgetConfig:\r\n settingForWidget.widgetConfig === '' ? null : JSON.parse(settingForWidget.widgetConfig),\r\n widgetName: settingForWidget.widgetName,\r\n widgetOrder: settingForWidget.widgetOrder,\r\n };\r\n } else {\r\n return {\r\n widgetId: widgetId,\r\n showHide: 'Y',\r\n widgetConfig: null,\r\n widgetName: null,\r\n widgetOrder: null,\r\n };\r\n }\r\n }\r\n\r\n async function refreshWidgetSettings() {\r\n widgetSettings = (await widgetSettingsAjax.getWidgetSettings()).getUserWidgetSettingsResult;\r\n }\r\n\r\n async function preLoadWidget() {\r\n widgetSettings = (await widgetSettingsAjax.getWidgetSettings()).getUserWidgetSettingsResult;\r\n\r\n function getSetting(widgetId) {\r\n return widgetSettings.filter(widget => {\r\n if (widget.widgetId === widgetId) return widget;\r\n })[0];\r\n }\r\n\r\n loadDashboardWidgets();\r\n\r\n return {\r\n getSetting: getSetting,\r\n };\r\n }\r\n\r\n function init() {\r\n remainingDailyServicesWidget.filter.outcomeType = '%';\r\n remainingDailyServicesWidget.filter.location = '%';\r\n remainingDailyServicesWidget.filter.group = '%'; \r\n widgets = [];\r\n setupFuncs = [];\r\n preLoadWidget();\r\n }\r\n\r\n return {\r\n appendFilterButton,\r\n appendPDFButton,\r\n buildFilterPopup,\r\n getWidgetSettings,\r\n refreshWidgetSettings,\r\n load: init,\r\n };\r\n})();\r\n","var displayTimeSelect = 'Y';\r\nvar validateError = '';\r\nvar numberOfCards = 4;\r\n\r\nfunction pad(x) {\r\n\treturn x < 10 ? '0' + x : x;\r\n}\r\n\r\nfunction ticktock() {\r\n\tvar d = new Date();\r\n\tvar h = pad(d.getHours());\r\n\tvar m = pad(d.getMinutes());\r\n\tvar s = pad(d.getSeconds());\r\n\tvar current_time = [h, m].join(':');\r\n}\r\n\r\nfunction anywhere() {\r\n\twindow.location = 'anywhere.html';\r\n}\r\n\r\nfunction popCalendar(event) {\r\n\tif ($('#calendardropdown').css('opacity') == '0') {\r\n\t\t$('#calendardropdown')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t} else {\r\n\t\t$('#calendardropdown')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t}\r\n}\r\n\r\nfunction startMessage() {\r\n\tif ($('#messageinput').val() == 'Add a new message...') {\r\n\t\t$('#messageinput').val('');\r\n\t}\r\n}\r\n\r\nfunction swapMessageBoxes() {\r\n\tif ($('#messageboxsmall').css('opacity') == '0') {\r\n\t\t$('#messageboxsmall')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#messageinput')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#messagetypebox')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#closemessageinput')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t} else {\r\n\t\t$('#messageboxsmall')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t\t$('#messageinput')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#messagetypebox')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t\t$('#closemessageinput')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t}\r\n}\r\n\r\nfunction showDownArrow() {\r\n\tif ($('clockrow').length == 0) {\r\n\t\t$('#downarrow')\r\n\t\t\t.css('opacity', '0')\r\n\t\t\t.css('display', 'none');\r\n\t} else {\r\n\t\t$('#downarrow')\r\n\t\t\t.css('opacity', '1')\r\n\t\t\t.css('display', 'block');\r\n\t}\r\n}\r\n\r\nfunction validateTime(startTime, stopTime) {\r\n\tvar validTime = 1;\r\n\tif (startTime > stopTime && stopTime != '00:00:00') {\r\n\t\tvalidTime = 0;\r\n\t}\r\n\treturn validTime;\r\n}\r\n/////////////////// Pop the display boxes ///////////////////////////////////\r\n// Get time in and time out values for day service consumer rows:\r\nfunction popDayStaffTimeBox(tagname, event) {\r\n\tvar obj = $('#' + tagname);\r\n\tobj.blur();\r\n\t$('.timein').blur();\r\n\t$('.timeout').blur();\r\n\tif ($.session.DenyStaffClockUpdate == true) {\r\n\t\treturn;\r\n\t}\r\n\tvar now = new Date();\r\n\tvar nonFormattedTime = '';\r\n\toriginalText = $('#' + tagname).val();\r\n\tnonFormattedTime = originalText;\r\n\tif (tagname.indexOf('out') != -1) {\r\n\t\tif (originalText != '') {\r\n\t\t\toriginalText = convertTimeToMilitary(originalText);\r\n\t\t\t$.session.initialTimeOut = originalText;\r\n\t\t\t$.session.initialTimeIn = '';\r\n\t\t}\r\n\t}\r\n\tif (tagname.indexOf('in') != -1) {\r\n\t\toriginalText = convertTimeToMilitary(originalText);\r\n\t\t$.session.initialTimeIn = originalText;\r\n\t\t$.session.initialTimeOut = '';\r\n\t}\r\n\tsetupTimeInputBox(obj, event);\r\n\treturn false;\r\n}\r\n\r\nfunction validateStaffTime(tagname, valueText) {\r\n\tif (valueText.length > 8) {\r\n\t\treturn false;\r\n\t}\r\n\tvar rowid = '';\r\n\tvar timein = '';\r\n\tvar timeout = '';\r\n\r\n\tif (tagname.indexOf('out') > -1) {\r\n\t\trowid = tagname.substring(7);\r\n\t\ttimein = $('#timein' + rowid)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimein = convertTimeToMilitary(timein);\r\n\t\ttimeout = $('#' + tagname)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimeout = convertTimeToMilitary(timeout);\r\n\t}\r\n\r\n\tif (tagname.indexOf('in') > -1) {\r\n\t\trowid = tagname.substring(6);\r\n\t\ttimeout = $('#timeout' + rowid)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimeout = convertTimeToMilitary(timeout);\r\n\t\ttimein = $('#' + tagname)\r\n\t\t\t.val()\r\n\t\t\t.replace(' ', '');\r\n\t\ttimein = convertTimeToMilitary(timein);\r\n\t}\r\n\ttimein = timein.replace(':', '');\r\n\ttimeout = timeout.replace(':', '');\r\n\tif (timeout.length < 2) return true;\r\n\tif (timeout < timein && timeout != '00:00:00' && timeout != '0000:00' && timeout != '00:00') {\r\n\t\tvalidateError = 'In time can not be greater than out time.';\r\n\t\twindow.timeOverlapError = false; //ensures error message above takes priority over time overlap error\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction getTimeClockInput(objId, rowId) {\r\n\tvar obj = $('#' + objId),\r\n\t\ttext = obj.text();\r\n\tobj.text('');\r\n\tvar pushStr = \"';\r\n\t$(pushStr)\r\n\t\t.appendTo(obj)\r\n\t\t.val(text)\r\n\t\t.focus()\r\n\t\t.change(function() {\r\n\t\t\tvar newText = $('#tempLocation option:selected').text();\r\n\t\t\tvar newValue = $('#tempLocation option:selected').val();\r\n\t\t\tobj.text(newText).attr('locid', newValue);\r\n\t\t});\r\n}\r\n\r\nfunction textFieldEdit(objId) {\r\n\tvar text = $('#' + objId).text();\r\n\t$('#' + objId).text('');\r\n\t$('')\r\n\t\t.appendTo($('#' + objId))\r\n\t\t.val(text)\r\n\t\t.select()\r\n\t\t.blur(function() {\r\n\t\t\tvar newText = $('#temptxt').attr('value');\r\n\t\t\t$('#' + objId).text(newText); //, find('input:text').remove();\r\n\t\t});\r\n}\r\n\r\nfunction showRemainingGoals(res, $goalsCount, $listTarget, $goalsConsumerCount) {\r\n\tvar people = {},\r\n\t\tcount = 0,\r\n\t\tconsumerCount = 0;\r\n\t$('result', res).each(function() {\r\n\t\tcount++;\r\n\t\tvar ID = $('ID', this).text(),\r\n\t\t\toid = $('oid', this).text(),\r\n\t\t\tfirst_name = $('first_name', this).text(),\r\n\t\t\tlast_name = $('last_name', this).text(),\r\n\t\t\tfullName = [first_name, last_name].join(' ');\r\n\t\tif (!people[fullName]) people[fullName] = 0;\r\n\t\tpeople[fullName]++;\r\n\t});\r\n\t$goalsCount.text(count);\r\n\tvar names = Object.keys(people);\r\n\t//names.sort();\r\n\tnames.forEach(function(name) {\r\n\t\tconsumerCount++;\r\n\t\tvar li = $('
  • ').text(name + ' - ' + people[name]);\r\n\t\t$listTarget.append(li);\r\n\t});\r\n\t$goalsConsumerCount.text(consumerCount);\r\n}\r\n\r\nfunction displayChangeUser() {\r\n\tvar overlay = $('
    ')\r\n\t\t.addClass('modaloverlay')\r\n\t\t.css({\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.15)',\r\n\t\t})\r\n\t\t.appendTo($('body'));\r\n\r\n\t$.ajax({\r\n\t\ttype: 'GET',\r\n\t\turl: 'dist/templates/autologin.html?RNG=' + +new Date(),\r\n\t\tsuccess: function(HTMLresponse, status, xhr) {\r\n\t\t\t//buildAbsentCard({ card: $(\"
    \").replaceWith(HTMLresponse), overlay: overlay, values: values, multi: true });\r\n\t\t\tvar card = $('
    ').replaceWith(HTMLresponse);\r\n\t\t\trosterAjax.getPSIUserOptionList(function(err, data) {\r\n\t\t\t\toverlay\r\n\t\t\t\t\t.click(function() {\r\n\t\t\t\t\t\t$(this).remove();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.append(card);\r\n\r\n\t\t\t\tcard\r\n\t\t\t\t\t.click(function(e) {\r\n\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.bind('remove', function() {\r\n\t\t\t\t\t\toverlay.remove();\r\n\t\t\t\t\t});\r\n\t\t\t\tdata.forEach(function(user) {\r\n var li = $('
  • ').text([user.last_name, user.first_name +' ('+user.user_id+')'].join(', '));\r\n\t\t\t\t\tli.click(function() {\r\n\t\t\t\t\t\t$.session.UserId = user.user_id;\r\n\t\t\t\t\t\t//homeServiceLoad(false);\r\n\t\t\t\t\t\tchangeFromPSIAjax(user.user_id);\r\n\t\t\t\t\t\tcard.trigger('remove');\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$('#autologinlist').append(li);\r\n\t\t\t\t});\r\n\r\n\t\t\t});\r\n\t\t\tpsiLogin.buildPopup(overlay[0]);\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t});\r\n\treturn;\r\n}\r\n\r\nfunction isNumberKey(evt) {\r\n\tvar charCode = evt.which ? evt.which : event.keyCode;\r\n\tif (charCode > 31 && (charCode < 48 || charCode > 57)) return false;\r\n\r\n\treturn true;\r\n}\r\n\r\nfunction formatDateGFromDB(date) {\r\n\tdate = new Date(date);\r\n\tdate = ('0' + (date.getMonth() + 1)).slice(-2) + '/' + ('0' + date.getDate()).slice(-2) + '/' + date.getFullYear();\r\n\treturn date;\r\n}\r\n\r\nfunction formatTimeFromDB(time) {\r\n\tvar test = time.substr(0, 2);\r\n\tif (time.substr(0, 2) > 12 && time.substr(0, 2) < 22) {\r\n\t\ttest2 = time.substr(0, 2) - 12;\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, '0' + test2)\r\n\t\ttime = time.replace(time.substring(0, 2), '0' + test2);\r\n\t} else if (time.substr(0, 2) >= 22) {\r\n\t\ttest2 = time.substr(0, 2) - 12;\r\n\t\ttime = time.replace(time.substring(0, 2), test2);\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, test2)\r\n\t} else if (time.substr(0, 2) == 0) {\r\n\t\ttime = time.replace(time.substring(0, 2), 12);\r\n\t\t//tmpStartTime = tmpStartTime.replace(test, test2)\r\n\t}\r\n\t//\r\n\ttime = time.slice(0, 5);\r\n\t//\r\n\tif (test >= 12) {\r\n\t\ttime = time + ' PM';\r\n\t} else {\r\n\t\ttime = time + ' AM';\r\n\t}\r\n\treturn time;\r\n}\r\n\r\nfunction convertTimeFromMilitary(value) {\r\n\tif (value !== null && value !== undefined) {\r\n\t\t//If value is passed in\r\n\t\tif (value.indexOf('AM') > -1 || value.indexOf('PM') > -1) {\r\n\t\t\t//If time is already in standard time then don't format.\r\n\t\t\treturn value;\r\n\t\t} else {\r\n\t\t\tif (value.length == 8) {\r\n\t\t\t\t//If value is the expected length for military time then process to standard time.\r\n\t\t\t\tvar hour = value.substring(0, 2); //Extract hour\r\n\t\t\t\tvar minutes = value.substring(3, 5); //Extract minutes\r\n\t\t\t\tvar identifier = 'AM'; //Initialize AM PM identifier\r\n\r\n\t\t\t\tif (hour == 12) {\r\n\t\t\t\t\t//If hour is 12 then should set AM PM identifier to PM\r\n\t\t\t\t\tidentifier = 'PM';\r\n\t\t\t\t}\r\n\t\t\t\tif (hour == 0) {\r\n\t\t\t\t\t//If hour is 0 then set to 12 for standard time 12 AM\r\n\t\t\t\t\thour = 12;\r\n\t\t\t\t}\r\n\t\t\t\tif (hour > 12) {\r\n\t\t\t\t\t//If hour is greater than 12 then convert to standard 12 hour format and set the AM PM identifier to PM\r\n\t\t\t\t\thour = hour - 12;\r\n\t\t\t\t\tif (hour < 10) {\r\n\t\t\t\t\t\thour = '0' + hour;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tidentifier = 'PM';\r\n\t\t\t\t}\r\n\t\t\t\treturn hour + ':' + minutes + ' ' + identifier; //Return the constructed standard time\r\n\t\t\t} else {\r\n\t\t\t\t//If value is not the expected length than just return the value as is\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction removeBadNoteTextToDisplay(note) {\r\n\tvar test = note.indexOf('\\\\r');\r\n\tnote = note.replace(/[\\n\\r]/g, '');\r\n\tif (note.indexOf('\\\\n') != -1) {\r\n\t\tnote = note.replace(/\\\\n/g, '\\n');\r\n\t}\r\n\tif (note.indexOf('\\\\r') != -1) {\r\n\t\tnote = note.replace(/\\\\r/g, ' ');\r\n\t}\r\n\tif (note.indexOf('\"') != -1) {\r\n\t\tnote = note.replace(/\\\"/g, '');\r\n\t}\r\n\tif (note.indexOf(\"'\") != -1) {\r\n\t\tnote = note.replace(/'/g, '');\r\n\t}\r\n\tif (note.indexOf('\\\\') != -1) {\r\n\t\tnote = note.replace(/\\\\/g, '');\r\n\t}\r\n\tnote = note.replace(' ', '');\r\n\tnote = note.replace('\\t', '');\r\n\tnote = note.replace(/\\t/g, '');\r\n\r\n\tnote = note;\r\n\treturn note;\r\n}\r\n\r\n//Gets days between passed in date and current date\r\nfunction daysBetweenDates(checkDate) {\r\n\tvar oneDay = 24 * 60 * 60 * 1000;\r\n\tvar todaysDate = new Date();\r\n\tif (checkDate == undefined) {\r\n\t\tvar checkDate = new Date();\r\n\t}\r\n\tvar changeDate = new Date(checkDate);\r\n\r\n\treturn Math.floor((todaysDate.getTime() - changeDate.getTime()) / oneDay);\r\n}\r\n\r\nfunction formatDateForDatabaseSave(date) {\r\n\tvar newDate = new Date(date);\r\n\tdate = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();\r\n\treturn date;\r\n}\r\n\r\nfunction convertTimeToMilitaryNew(inputTime) {\r\n\tif (inputTime == '') {\r\n\t\treturn '::00';\r\n\t}\r\n\tvar time = inputTime;\r\n\tvar hours = parseInt(time.match(/^(\\d+)/)[1], 10);\r\n\tvar minutes = parseInt(time.match(/:(\\d+)/)[1], 10);\r\n\tvar AMPM = time.match(/\\s(.*)$/)[1];\r\n\tif (AMPM == 'PM' && hours < 12) hours = hours + 12;\r\n\tif (AMPM == 'AM' && hours == 12) hours = hours - 12;\r\n\tvar sHours = hours.toString();\r\n\tvar sMinutes = minutes.toString();\r\n\tif (hours < 10) sHours = '0' + sHours;\r\n\tif (minutes < 10) sMinutes = '0' + sMinutes;\r\n\t//alert(sHours + \":\" + sMinutes);\r\n\treturn [sHours, sMinutes, '00'].join(':');\r\n}\r\n\r\n// Convert the input AM/PM time to a 24-hour military time:\r\nfunction convertTimeToMilitary(inputTime) {\r\n\tvar amPM = '';\r\n\tvar hour = '';\r\n\tvar minute = '';\r\n\tvar militaryTime = '';\r\n\tif (inputTime.length < 5 && inputTime != '') {\r\n\t\tinputTime = '0' + inputTime;\r\n\t}\r\n\t// Parse the input time into hours, minutes and AM/PM values:\r\n\tfor (var i = 0; i < inputTime.length; i++) {\r\n\t\tif (isNaN(inputTime.charAt(i)) == false && inputTime.charAt(i) != ' ') {\r\n\t\t\tif (i < 2) {\r\n\t\t\t\thour = hour + inputTime.charAt(i);\r\n\t\t\t}\r\n\r\n\t\t\tif (i == 3 || i == 4) {\r\n\t\t\t\tminute = minute + inputTime.charAt(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inputTime.charAt(i) == 'A' || inputTime.charAt(i) == 'P' || inputTime.charAt(i) == 'M') {\r\n\t\t\tamPM = amPM + inputTime.charAt(i);\r\n\t\t}\r\n\t}\r\n\r\n\t// If a AM value, add 12 to the input hour:\r\n\tif (amPM == 'AM' && hour == '12') {\r\n\t\thour = '00';\r\n\t}\r\n\r\n\t// If a PM value, add 12 to the input hour:\r\n\tif (amPM == 'PM') {\r\n\t\tif (hour != '00') {\r\n\t\t\tif (hour != '12') {\r\n\t\t\t\tvar x = +hour;\r\n\t\t\t\tx = x + 12;\r\n\t\t\t\thour = String(x);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Create a military time from the input time format:\r\n\tmilitaryTime = hour + ':' + minute + ':00';\r\n\r\n\treturn militaryTime;\r\n}\r\n\r\n//http://stackoverflow.com/questions/499126/jquery-set-cursor-position-in-text-area\r\nfunction setSelectionRange(input, selectionStart, selectionEnd) {\r\n\tif (input.setSelectionRange) {\r\n\t\tinput.focus();\r\n\t\tinput.setSelectionRange(selectionStart, selectionEnd);\r\n\t} else if (input.createTextRange) {\r\n\t\tvar range = input.createTextRange();\r\n\t\trange.collapse(true);\r\n\t\trange.moveEnd('character', selectionEnd);\r\n\t\trange.moveStart('character', selectionStart);\r\n\t\trange.select();\r\n\t}\r\n}\r\n\r\nfunction setCaretToPos(input, pos) {\r\n\tsetSelectionRange(input, pos, pos);\r\n}\r\n\r\nfunction getDeviceLocation(callback) {\r\n\tif (location.protocol === 'https:' || location.hostname === 'localhost') {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(callback, callback, { timeout: 3000 });\r\n\t\t} else {\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//New time enter code below\r\nfunction setTimeToScreen(amOrPm) {\r\n\tvar pmAM = amOrPm;\r\n\tvar timeDigitsEntered = $('#timedisplayfield').val();\r\n\tvar originId = '#' + $('.timebox').attr('fromid');\r\n\tif (timeDigitsEntered.length < 3) {\r\n\t\ttimeDigitsEntered = timeDigitsEntered + ':00';\r\n\t} else {\r\n\t\ttimeDigitsEntered = timeDigitsEntered.substring(0, timeDigitsEntered.length - 2) + ':' + timeDigitsEntered.slice(-2);\r\n\t}\r\n\tif (timeDigitsEntered.length < 5) {\r\n\t\ttimeDigitsEntered = '0' + timeDigitsEntered;\r\n\t}\r\n\ttimeDigitsEntered = timeDigitsEntered + ' ' + pmAM;\r\n\tvar opts = $('.timebox').data('opts');\r\n\tvar increment = opts.increment;\r\n\tvar minutes = timeDigitsEntered.split(':')[1].split(' ')[0];\r\n\tvar hours = timeDigitsEntered.split(':')[0];\r\n\tif (increment != 0 && increment != undefined) {\r\n\t\tif (parseInt(minutes, 10) % increment != 0) {\r\n\t\t\treturn $.fn.PSmodal({\r\n\t\t\t\tbody: opts.incrementMessage,\r\n\t\t\t\timmediate: true,\r\n\t\t\t\tcloseOnBlur: false,\r\n\t\t\t\tbuttons: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tif (parseInt(hours, 10) > 12) {\r\n\t\treturn $.fn.PSmodal({\r\n\t\t\tbody: 'You have entered invalid hours. Please correct this.',\r\n\t\t\timmediate: true,\r\n\t\t\tcloseOnBlur: false,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t}\r\n\tif (parseInt(minutes, 10) > 59) {\r\n\t\treturn $.fn.PSmodal({\r\n\t\t\tbody: 'You have entered invalid minutes. Please correct this.',\r\n\t\t\timmediate: true,\r\n\t\t\tcloseOnBlur: false,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'OK',\r\n\t\t\t\t\tcallback: function() {},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t}\r\n\tif (opts.callback) {\r\n\t\topts.callback(timeDigitsEntered);\r\n\t} else {\r\n\t\t$(originId).val(timeDigitsEntered);\r\n\t\t$(originId).html(timeDigitsEntered);\r\n\t\t$(originId).text(timeDigitsEntered);\r\n\t\t$(originId).change();\r\n\t}\r\n\r\n\t$('#timeoverlay').remove();\r\n}\r\n\r\nfunction setupTimeInputBox(obj, event, opts) {\r\n\tURL = '/webroot/dist/templates/timeinputpad.html'; // adjust path\r\n\t$.ajax({\r\n\t\ttype: 'GET',\r\n\t\turl: URL + '?RNG=' + +new Date(),\r\n\t\tsuccess: function(response) {\r\n\t\t\thtml = response;\r\n\t\t\tdisplayTimeBox(\r\n\t\t\t\thtml,\r\n\t\t\t\tobj,\r\n\t\t\t\tevent,\r\n\t\t\t\topts || {\r\n\t\t\t\t\tincrement: 0,\r\n\t\t\t\t\tincrementMessage: '',\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t},\r\n\t});\r\n}\r\n\r\nfunction displayTimeBox(html, obj, event, opts) {\r\n\tvar x, y;\r\n\tif ($.mobile) {\r\n\t\tx = 20;\r\n\t\ty = 20;\r\n\t} else {\r\n\t\tx = event.x - 50;\r\n\t\ty = event.y - 16;\r\n\t\t$('#timeinputkeypad').css('zoom', '125%');\r\n\t}\r\n\tvar overlay = $(\"
    \")\r\n\t\t.css({\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.15)',\r\n\t\t\tposition: 'absolute',\r\n\t\t\ttop: '0',\r\n\t\t\tbottom: '0',\r\n\t\t\tleft: '0',\r\n\t\t\tright: '0',\r\n\t\t\tzIndex: '99999',\r\n\t\t})\r\n\t\t.click(function() {\r\n\t\t\t$(this).remove();\r\n\t\t\treturn false;\r\n\t\t});\r\n\tvar timeBox = $('
    ' + html + '
    ')\r\n\t\t.click(function(e) {\r\n\t\t\treturn false;\r\n\t\t})\r\n\t\t.data('opts', opts);\r\n\r\n\ttimeBox.css({\r\n\t\topacity: '1.0 !important',\r\n\t\tmarginLeft: x,\r\n\t\tmarginTop: y,\r\n\t});\r\n\r\n\toverlay.append(timeBox);\r\n\t$('body').append(overlay);\r\n}\r\n\r\nfunction clearTimepadInputField() {\r\n\t$('#timedisplayfield').val('');\r\n}\r\n\r\nfunction convertDaysBack(daysBackIn) {\r\n\tvar dateOffset = 24 * 60 * 60 * 1000 * daysBackIn;\r\n\tvar daysBackDate = new Date();\r\n\tdaysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n\tvar dateToPass = daysBackDate.getFullYear() + '-' + UTIL.leadingZero(daysBackDate.getMonth() + 1) + '-' + UTIL.leadingZero(daysBackDate.getDate());\r\n\treturn dateToPass;\r\n}\r\n\r\nfunction convertDaysBackGoals(daysBackIn) {\r\n\tvar dateOffset = 24 * 60 * 60 * 1000 * daysBackIn;\r\n\tvar daysBackDate = new Date();\r\n\tdaysBackDate.setTime(daysBackDate.getTime() - dateOffset);\r\n\tif (daysBackIn < 31) {\r\n\t\treturn new Date(daysBackDate.getFullYear(), daysBackDate.getMonth(), daysBackDate.getDate());\r\n\t} else {\r\n\t\treturn new Date(daysBackDate.getFullYear(), daysBackDate.getMonth() + 1, daysBackDate.getDate());\r\n\t}\r\n}\r\n\r\nfunction popupCalendar(opts) {\r\n\tvar minDate = opts.minDate || null,\r\n\t\tmaxDate = opts.maxDate || null,\r\n\t\tcurrVal = opts.currVal || null,\r\n\t\tcallback = opts.callback || function() {},\r\n\t\ttarget = opts.target;\r\n\r\n\tvar obj = {\r\n\t\tdateFormat: 'mm/dd/yy',\r\n\t\ttheme: 'wp',\r\n\t\taccent: 'steel',\r\n\t\tdisplay: 'bubble',\r\n\t\tmode: 'scroller',\r\n\t\tpreset: 'date',\r\n\t\tonSelect: function(valueText, inst) {\r\n\t\t\ttarget.text(valueText);\r\n\t\t\tcallback();\r\n\t\t},\r\n\t\tonShow: function() {\r\n\t\t\tif (currVal != null) {\r\n\t\t\t\t$(this).scroller('setDate', new Date(currVal.getFullYear(), currVal.getMonth(), currVal.getDate()), false);\r\n\t\t\t}\r\n\r\n\t\t\t$('.dw-arr').css('display', 'none');\r\n\t\t},\r\n\t};\r\n\r\n\tif (minDate != null) {\r\n\t\tobj.minDate = minDate;\r\n\t}\r\n\r\n\tif (maxDate != null) {\r\n\t\tobj.maxDate = maxDate;\r\n\t}\r\n\r\n\ttarget\r\n\t\t.mobiscroll()\r\n\t\t.date(obj)\r\n\t\t.mobiscroll('show');\r\n}\r\n\r\nfunction openCaraSolva() {\r\n\tvar form = $('
    ', {\r\n\t\taction: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/CaraSolvaSignIn/',\r\n\t\tmethod: 'POST',\r\n\t\ttarget: '_blank',\r\n\t\tenctype: 'application/json',\r\n\t});\r\n\tform.hide().append(\"\");\r\n\tform.appendTo($('body'));\r\n\tform.submit();\r\n}\r\n\r\n(function(scope) {\r\n\tif (!scope.Anywhere) {\r\n\t\tscope.Anywhere = {};\r\n\t}\r\n\tscope.Anywhere.promptYesNo = function(message, yesCallback, noCallback) {\r\n\t\t$.fn.PSmodal({\r\n\t\t\tbody: message,\r\n\t\t\timmediate: true,\r\n\t\t\tbuttons: [\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'Yes',\r\n\t\t\t\t\tcallback: function() {\r\n\t\t\t\t\t\tif (yesCallback) yesCallback();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\ttext: 'No',\r\n\t\t\t\t\tcallback: function() {\r\n\t\t\t\t\t\tif (noCallback) noCallback();\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t});\r\n\t};\r\n})(window);\r\n","// function getLocationNameFromId(id) {\r\n// \tfor (var i in $.session.locations) {\r\n// \t\tif ($.session.locationids[i] == id) return $.session.locations[i];\r\n// \t}\r\n// }\r\n\r\n//ANYW_Dashboard_GetRemainingGoalsCount\r\n// Not Being Called\r\n// function getRemainingGoalsCountForDashboard(callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getRemainingGoalsCountForDashboard/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.stringify(response);\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n// \t\t\tcallback(error, null);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\n// function getLocationsForDashboardAbsent\r\n// function getConsumerGroupsForDashboardAbsent\r\n\r\n// Not Being Called\r\n// function getClockedInDayServicesAtLocationCountsAjax(locationId, callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getClockedInDayServicesAtLocationCounts/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.stringify(response);\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\tcallback(error, null);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\n// function getInfalLoginCredentialsAjax(callback) {\r\n// \t$.ajax({\r\n// \t\ttype: 'POST',\r\n// \t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getInfalLoginCredentials/',\r\n// \t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n// \t\tcontentType: 'application/json; charset=utf-8',\r\n// \t\tdataType: 'json',\r\n// \t\tsuccess: function(response, status, xhr) {\r\n// \t\t\tvar res = JSON.parse(response.getInfalLoginCredentialsResult);\r\n// \t\t\tif (res[0] && res[0].App_Password) ID = res[0].App_Password;\r\n// \t\t\tif ((ID = 0)) {\r\n// \t\t\t\t//go get ssn and use it to get emp id from infal, pass it along and then update user application cred table\r\n// \t\t\t}\r\n// \t\t\tcallback(null, res);\r\n// \t\t},\r\n// \t\terror: function(xhr, status, error) {\r\n// \t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n// \t\t},\r\n// \t});\r\n// }\r\n\r\nfunction changeFromPSIAjax(userId, callback) {\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/changeFromPSI/',\r\n\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"userID\":\"' + userId + '\"}',\r\n\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\tdataType: 'json',\r\n\t\tsuccess: function(response, status, xhr) {\r\n\t\t\tvar res = JSON.stringify(response);\r\n\t\t\teraseCookie('psiuser');\r\n\t\t\tvar overlay = document.createElement('div');\r\n\t\t\tif ($('permissions', res).is('*') && checkforErrors(res) == 0) {\r\n\t\t\t\teraseCookie('psi');\r\n\t\t\t\tcreateCookie('psi', res, 1);\r\n\t\t\t\tsuccess = true;\r\n\t\t\t\tdocument.location.href = 'anywhere.html';\r\n\t\t\t} else if (res.indexOf('609') > -1) {\r\n\t\t\t\t//checkForErrors();\r\n\t\t\t\tcustomPasswordChange();\r\n\t\t\t} else {\r\n\t\t\t\t$('#error').css('opacity', '1');\r\n\t\t\t\t$('#error').css('display', 'block');\r\n\t\t\t\tif ($('#error').hasClass('hippaRestriction')) {\r\n\t\t\t\t\t$('#errortext').text('Password cannot match a recently used password');\r\n\t\t\t\t} else if ($('#error').hasClass('userInputError')) {\r\n\t\t\t\t\t$('#errortext').text('Invalid username or password');\r\n\t\t\t\t} else if (res.indexOf('608') > -1) {\r\n\t\t\t\t\t$('#errortext').text('This user name does not exist in demographics.');\r\n\t\t\t\t} else {\r\n $('#errortext').text('Invalid user name or password.');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\r\n\t\t\t// \"There was a problem connecting to the database. Please click OK to continue. If the problem persists, please contact Primary Solutions.\" +\r\n\t\t\t// xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t\tcomplete: function() {\r\n\t\t\t// hide gif here, eg:\r\n\t\t\t$('body').css('cursor', 'auto');\r\n\t\t},\r\n\t});\r\n}\r\n","const psiLogin = (function() {\r\n let userPopup\r\n \r\n function buildPopup(userElemet) {\r\n\r\n userPopup = POPUP.build({\r\n header: \"Select a User\",\r\n id: \"psiUserSelectPopup\"\r\n })\r\n userPopup.appendChild(userElemet)\r\n \r\n POPUP.show(userPopup)\r\n}\r\n\r\n return {\r\n buildPopup\r\n }\r\n})()","const covidChecklist = (function () {\r\n let inputs, checklistTable, tableContainer;\r\n let completedChecklistData, activeChecklistId, rosterLocations;\r\n let checklistMode; //'update' || 'insert'\r\n let typeOfChecklist; // 'employee' || 'consumer'\r\n let initialLoad;\r\n let consumer;\r\n\r\n function buildEmployeePage() {\r\n ////////////////////\r\n // Main Checklist Card Element\r\n const checklistCard = document.createElement(\"div\");\r\n checklistCard.classList.add(\"card\", \"checklistCard\");\r\n ////////////////////\r\n // Heading for checklist card\r\n const mainHeading = document.createElement(\"div\");\r\n mainHeading.classList.add(\"card__header\");\r\n mainHeading.innerHTML =\r\n typeOfChecklist === \"employee\"\r\n ? \"

    My Covid-19 Checklist

    \"\r\n : \"

    Consumer Covid-19 Checklist

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

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

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

    ${message}

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

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

    \r\n

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

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

    \r\n `;\r\n popup.appendChild(textArea);\r\n });\r\n\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n\r\n function checkRequiredFieldsOfNewEntry() {\r\n\r\n var selectedGroupId = '';\r\n var selectedDSTypeId = '';\r\n var group = document.getElementById('groupDropdown');\r\n var dsType = document.getElementById('dsTypeDropdown');\r\n if (group)\r\n selectedGroupId = group.options[group.selectedIndex].value;\r\n if (dsType)\r\n selectedDSTypeId = dsType.options[dsType.selectedIndex].value;\r\n\r\n if (selectedGroupId === '' && (selectedDSTypeId == 'X' || selectedDSTypeId == 'S')) {\r\n groupDropdown.classList.add('error');\r\n } else {\r\n groupDropdown.classList.remove('error');\r\n }\r\n setBtnStatusOfSave();\r\n }\r\n\r\n function setBtnStatusOfSave() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n //====== POPUP DISPLAYING OPTION TO CLOCKIN OR CLOCK OUT =========================\r\n function clockInOutChoicePopup() {\r\n let popup = POPUP.build({\r\n header: 'Please Choose an Option',\r\n id: 'clockInOutChoicePopup',\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n\r\n const idString = selectedConsumers.map(function (sc) {\r\n return sc.id\r\n }).join(\",\");\r\n\r\n //Get a list of any existing day service activity for this consumer, on today's date, on other locations\r\n const clockedInConsumers = await dayServiceAjax.getDayServiceClockedInConsumers({\r\n token: $.session.Token,\r\n consumerIdString: idString,\r\n serviceDate: serviceDate,\r\n locationId: locationID,\r\n });\r\n\r\n //If the consumer has no existing day service activity, behave normally...\r\n if (clockedInConsumers.length === 0) {\r\n clockInOutActionPopup('in');\r\n } else {\r\n consumerExistingDayServicePopup(clockedInConsumers);\r\n }\r\n },\r\n });\r\n let clockOutBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup('out');\r\n },\r\n });\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('choiceBtnWrap');\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(clockOutBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n //====== ACTION FOR CLOCKING IN OR OUT =========================\r\n // in / clock out popup\r\n function clockInOutActionPopup(choice) {\r\n let inPopup = POPUP.build({\r\n header: 'Clock In',\r\n id: 'clockInOutPopup',\r\n });\r\n\r\n let outPopup = POPUP.build({\r\n header: 'Clock Out',\r\n id: 'clockInOutPopup',\r\n });\r\n\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n let timeInField = input.build({\r\n id: 'inTime',\r\n label: 'In Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: currentTime,\r\n });\r\n\r\n let timeOutField = input.build({\r\n id: 'outTime',\r\n label: 'Out Time',\r\n type: 'time',\r\n style: 'secondary',\r\n value: currentTime,\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: 'Clock In',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'clockInBtn',\r\n callback: function () {\r\n clockIn(timeInField);\r\n POPUP.hide(inPopup);\r\n roster2.clearActiveConsumers();\r\n //Clock in function\r\n },\r\n });\r\n\r\n let clockOutBtn = button.build({\r\n text: 'Clock Out',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n clockOut();\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n //clock out function\r\n },\r\n });\r\n\r\n let inCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(inPopup);\r\n },\r\n });\r\n\r\n let outCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n timeInField.addEventListener('change', function () {\r\n let inTimeField = document.getElementById('inTime');\r\n if (inTimeField.value === '') {\r\n clockInBtn.classList.add('disabled');\r\n timeInField.classList.add('error');\r\n } else {\r\n clockInBtn.classList.remove('disabled');\r\n timeInField.classList.remove('error');\r\n }\r\n });\r\n\r\n timeOutField.addEventListener('change', function () {\r\n let outTimeField = document.getElementById('outTime');\r\n if (outTimeField.value === '') {\r\n clockOutBtn.classList.add('disabled');\r\n timeOutField.classList.add('error');\r\n } else {\r\n clockOutBtn.classList.remove('disabled');\r\n timeOutField.classList.remove('error');\r\n }\r\n });\r\n\r\n switch (choice) {\r\n case 'in': {\r\n inPopup.appendChild(timeInField);\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(inCancelBtn);\r\n inPopup.appendChild(btnWrap);\r\n POPUP.show(inPopup);\r\n break;\r\n }\r\n case 'out': {\r\n outPopup.appendChild(timeOutField);\r\n btnWrap.appendChild(clockOutBtn);\r\n btnWrap.appendChild(outCancelBtn);\r\n outPopup.appendChild(btnWrap);\r\n POPUP.show(outPopup);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function clockIn() {\r\n let inTime = document.getElementById('inTime').value;\r\n inTime += ':00';\r\n let clockInConsumerString = formatConsumersForClockIn(selectedConsumers);\r\n let selectedConsumerCount = selectedConsumers.length;\r\n //get consuemrs with existing clockins TODO. call new ajax. $.session.Token\r\n dayServiceAjax.dayServiceClockIn(\r\n clockInConsumerString,\r\n serviceDate,\r\n locationID,\r\n inTime,\r\n res => {\r\n //Overlap error occured\r\n if (res.indexOf('615') !== -1) {\r\n let start = res.search('');\r\n let end = res.search('');\r\n var overlapConsumers = res.substring(start + 11, end - 1).split('|');\r\n }\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n if (overlapConsumers) {\r\n overlapConsumers.forEach(consumer => {\r\n let card = document.getElementById('consumer-' + consumer);\r\n cardHeader = card.querySelector('.card__header');\r\n cardHeader.classList.add('overlapError');\r\n accuityDisplay = cardHeader.querySelector('.accuityDisplay');\r\n accuityDisplay.innerHTML = 'TIME OVERLAP';\r\n });\r\n }\r\n });\r\n },\r\n );\r\n selectedConsumers = null;\r\n }\r\n\r\n function clockOut() {\r\n let outTime = document.getElementById('outTime').value;\r\n outTime += ':00';\r\n let clockOutConsumerString = formatConsumersForClockOut(selectedConsumers);\r\n dayServiceAjax.updateDayServiceActivity(\r\n clockOutConsumerString,\r\n 'Stop Time',\r\n outTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n //Overlap error occured\r\n if (res.indexOf('615') !== -1) {\r\n let start = res.search('');\r\n let end = res.search('');\r\n var overlapConsumers = res.substring(start + 11, end - 1).split('|');\r\n }\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n if (overlapConsumers) {\r\n overlapConsumers.forEach(consumer => {\r\n let card = document.getElementById('consumer-' + consumer);\r\n cardHeader = card.querySelector('.card__header');\r\n cardHeader.classList.add('overlapError');\r\n accuityDisplay = cardHeader.querySelector('.accuityDisplay');\r\n accuityDisplay.innerHTML = 'TIME OVERLAP';\r\n });\r\n }\r\n });\r\n },\r\n );\r\n selectedConsumers = null;\r\n }\r\n\r\n function deleteDSRecord(consumerDeleteString) {\r\n // let consumerString = `${consumerId},${inTime}|`;\r\n dayServiceAjax.deleteDayServiceActivity(consumerDeleteString, serviceDate, locationID, res => {\r\n getDayServiceActivity(cb => {\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n });\r\n }\r\n //POPUP for confirming the delete action\r\n function deleteConfirmation(orgPopup, callback) {\r\n if (orgPopup) POPUP.hide(orgPopup);\r\n\r\n var confPopup = POPUP.build({\r\n classNames: 'warning',\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'no',\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n if (orgPopup) POPUP.show(orgPopup);\r\n callback((res = false));\r\n },\r\n });\r\n var confirmBtn = button.build({\r\n text: 'Delete Entry',\r\n style: 'secondary',\r\n type: 'outlined',\r\n id: 'confDeleteBtn',\r\n icon: 'delete',\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n callback((res = true));\r\n },\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(confirmBtn);\r\n\r\n var textArea = document.createElement('p');\r\n textArea.classList.add('warningTextArea');\r\n textArea.innerHTML = 'Are you sure you want to delete this record?';\r\n confPopup.appendChild(textArea);\r\n confPopup.appendChild(btnWrap);\r\n POPUP.show(confPopup);\r\n }\r\n\r\n //Update single DS record from the row popup. Curently updates everything even if it wasn't changed.\r\n function saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n ) {\r\n let consumerString = `${consumerId},${orgInTime}|`;\r\n\r\n //Update Start Time && Stop Times\r\n if (newInTime && newOutTime) {\r\n newInTime += ':00';\r\n newOutTime += ':00';\r\n try {\r\n if (newInTime > newOutTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Start Time',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Start Time Overlaps with existing Activity');\r\n },\r\n );\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Stop Time',\r\n newOutTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Stop Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newInTime = null;\r\n newOutTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Times Overlap');\r\n }\r\n }\r\n }\r\n //Only New In Time\r\n else if (newInTime && !newOutTime) {\r\n newInTime += ':00';\r\n try {\r\n if (newInTime > orgEndTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Start Time',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Start Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newInTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Start Time Overlaps with End Time');\r\n }\r\n }\r\n }\r\n //Only New Out Time\r\n else if (newOutTime && !newInTime) {\r\n newOutTime += ':00';\r\n try {\r\n if (newOutTime < orgInTime) {\r\n throw 'overlap';\r\n }\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Stop Time',\r\n newOutTime,\r\n serviceDate,\r\n locationID,\r\n '',\r\n selectedGroupId,\r\n res => {\r\n if (res.indexOf('615') !== -1) errorPopup('Stop Time Overlaps with existing Activity');\r\n //Finally - Reload DS Card Area\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n },\r\n );\r\n newOutTime = null;\r\n } catch (e) {\r\n if (e === 'overlap') {\r\n errorPopup('Stop Time Overlaps with Start Time');\r\n }\r\n }\r\n } else\r\n getDayServiceActivity(() => {\r\n //1) get activity from DB, 2(cb) rebuild the cards.\r\n dsCardArea.innerHTML = '';\r\n buildCards();\r\n });\r\n }\r\n\r\n function saveTypeAndCi(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n selectedGroupId,\r\n ) {\r\n let consumerString = `${consumerId},${orgInTime}|`;\r\n //Update Ds Type\r\n var updateDSTypePromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.updateDayServiceActivity(\r\n consumerString,\r\n 'Service Type',\r\n newInTime,\r\n serviceDate,\r\n locationID,\r\n selectedDSType,\r\n selectedGroupId,\r\n () => {\r\n resolve('success');\r\n },\r\n );\r\n });\r\n\r\n //Update CI\r\n if (checkForCI() && ciStaffId !== '') {\r\n var updateCIPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.updateCIStaff(\r\n consumerId,\r\n ciStaffId,\r\n orgInTime,\r\n serviceDate,\r\n locationID,\r\n () => {\r\n resolve('success');\r\n },\r\n );\r\n });\r\n } else {\r\n var deleteCIPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.deleteCIStaffId(consumerId, orgInTime, serviceDate, locationID, () => {\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n if (updateCIPromise) {\r\n Promise.all([updateDSTypePromise, updateCIPromise]).then(function () {\r\n saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n );\r\n });\r\n } else if (deleteCIPromise) {\r\n Promise.all([updateDSTypePromise, deleteCIPromise]).then(function () {\r\n saveTime(\r\n consumerId,\r\n orgInTime,\r\n newInTime,\r\n orgEndTime,\r\n newOutTime,\r\n selectedDSType,\r\n ciStaffId,\r\n );\r\n });\r\n }\r\n }\r\n\r\n function buildPageComponents() {\r\n // custom search stuff\r\n SEARCH_BTN = button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n SEARCH_WRAP = document.createElement('div');\r\n SEARCH_WRAP.classList.add('consumerSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n id: 'multiSelectBtn',\r\n callback: function () {\r\n enableMultiEditRows(mulitSelectBtn);\r\n filterBtn.classList.toggle('disabled');\r\n },\r\n });\r\n\r\n multiSelectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'selectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectAllBtn',\r\n callback: function () {\r\n if (Object.keys(activityCache).length === displayedConsumers.length) {\r\n var allRows = [].slice.call(document.querySelectorAll('.table__row'));\r\n var allHeaders = [].slice.call(document.querySelectorAll('.card__header'));\r\n allRows.forEach(row => row.classList.add('selected'));\r\n allHeaders.forEach(header => header.classList.add('selected'));\r\n if (allRows.length !== 0) {\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n }\r\n } else if (displayedConsumers.length !== 0) {\r\n displayedConsumers.forEach(consumer => {\r\n var card = document.getElementById(`consumer-${consumer}`);\r\n card.querySelector('.card__header').classList.add('selected');\r\n var rows = card.querySelectorAll('.table__row');\r\n rows.forEach(row => row.classList.add('selected'));\r\n multiOutRecordBtn.classList.remove('disabled');\r\n multiInRecordBtn.classList.remove('disabled');\r\n multiDeleteRecordBtn.classList.remove('disabled');\r\n });\r\n }\r\n },\r\n });\r\n\r\n multiSelectNoneBtn = button.build({\r\n text: 'Select None',\r\n icon: 'deSelectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectNoneBtn',\r\n callback: function () {\r\n multiOutRecordBtn.classList.add('disabled');\r\n multiInRecordBtn.classList.add('disabled');\r\n multiDeleteRecordBtn.classList.add('disabled');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n var highlightedHeaders = [].slice.call(document.querySelectorAll('.card__header.selected'));\r\n highlightedHeaders.forEach(header => header.classList.remove('selected'));\r\n },\r\n });\r\n\r\n filterLocationDropdown = dropdown.build({\r\n dropdownId: 'dsLocationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n\r\n filterGroupDropdown = dropdown.build({\r\n dropdownId: 'dsGroupDropdown',\r\n label: 'Group',\r\n style: 'secondary',\r\n });\r\n\r\n filterDateInput = input.build({\r\n id: 'dsFilterDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: serviceDate,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n fitlerApplyBtn = button.build({\r\n id: 'filterApply',\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n disabled: false,\r\n callback: function () {\r\n fitlerApplyBtn.disabled = true;\r\n filterApplyAction(filterPopup);\r\n POPUP.hide(filterPopup); \r\n },\r\n });\r\n\r\n updateCurrentFilterDisplay();\r\n\r\n //Disable multi-select button where there are 0 consumers displayed:\r\n // if (displayedConsumers.length === 0) multiSelectBtn.classList.add('disabled');\r\n\r\n multiSelectAllNoneArea = document.createElement('div');\r\n multiSelectAllNoneArea.classList.add('btnWrap');\r\n multiSelectAllNoneArea.setAttribute('id', 'selectAllSelectNoneWrap');\r\n multiSelectAllNoneArea.appendChild(multiSelectAllBtn);\r\n multiSelectAllNoneArea.appendChild(multiSelectNoneBtn);\r\n multiSelectAllNoneArea.classList.add('hidden');\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n dayServiceLocation: locationID,\r\n dayServiceServiceDate: serviceDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n reportsBtn = createMainReportButton([{ text: 'Individual Day Service Activity Report' }]);\r\n\r\n batchedMessageDisplay.innerHTML = 'The selected location is batched for this date.';\r\n batchedMessageDisplay.classList.add('batchedMessageDisplay');\r\n batchedMessageDisplay.classList.add('hidden');\r\n\r\n let filterSelectReportBtnWrap = document.createElement('div');\r\n filterSelectReportBtnWrap.classList.add('btnWrap', 'filterSelectReportBtnWrap'); \r\n if ($.session.DayServiceUpdate) filterSelectReportBtnWrap.appendChild(mulitSelectBtn); //No need to multi select for view only\r\n filterSelectReportBtnWrap.appendChild(reportsBtn);\r\n DOM.ACTIONCENTER.appendChild(filterSelectReportBtnWrap);\r\n if ($.session.DayServiceUpdate) DOM.ACTIONCENTER.appendChild(multiSelectAllNoneArea); //no need to multi select for view only\r\n DOM.ACTIONCENTER.appendChild(SEARCH_WRAP);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n\r\n DOM.ACTIONCENTER.appendChild(batchedMessageDisplay);\r\n //if (dsCardArea.outerHTML.indexOf('style=\\\"display: none;\\\"') != -1) {\r\n // dsCardArea.outerHTML = dsCardArea.outerHTML.replace('\"style=\\\"display: none;\\\"', '');\r\n //}\r\n\r\n DOM.ACTIONCENTER.appendChild(dsCardArea);\r\n roster2.toggleActionCenterChildrenVisiblity('show');\r\n buildCards();\r\n }\r\n\r\n async function initialPageBuild() {\r\n dsDropdownData = dsTypes.map(ds => {\r\n var id = `ds-${ds.dsType}`;\r\n var value = ds.dsType;\r\n var text = ds.dsText;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n if ($.session.applicationName.toLowerCase() === 'gatekeeper') {\r\n dsDropdownData.push({ id: '', value: '0', text: '' });\r\n }\r\n buildPageComponents();\r\n addEventListeners();\r\n //checkIfBatched();\r\n document.getElementById('searchBtn').click();\r\n rosterGroupResults = (await customGroupsAjax.getConsumerGroups(locationID))\r\n .getConsumerGroupsJSONResult;\r\n }\r\n\r\n function addEventListeners() {\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n searchDS(event.target.value);\r\n });\r\n\r\n filterLocationDropdown.addEventListener('change', async event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n temp__locationID = selectedOption.value;\r\n\r\n rosterGroupResults = (await customGroupsAjax.getConsumerGroups(temp__locationID))\r\n .getConsumerGroupsJSONResult;\r\n populateFilterGroupDropdown();\r\n });\r\n\r\n filterGroupDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n temp__groupID = selectedOption.value;\r\n temp__retrieveID = selectedOption.dataset.retrieveid;\r\n selectedGroupName = selectedOption.innerHTML;\r\n });\r\n\r\n filterDateInput.addEventListener('change', event => {\r\n temp__serviceDate = event.target.value;\r\n });\r\n\r\n //MutationObserver to detect when leaving the module, reset values\r\n var observNode = document.getElementById('actioncenter');\r\n var config = { attributes: true };\r\n var callback = function (mutationList, observer) {\r\n for (let mutation of mutationList) {\r\n if (mutation.type === 'attributes') {\r\n if (mutation.attributeName === 'data-active-module') {\r\n observer.disconnect();\r\n miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) miniRosterBtn.classList.remove('disabled');\r\n enableMultiEdit = false;\r\n }\r\n }\r\n }\r\n };\r\n const observer = new MutationObserver(callback);\r\n observer.observe(observNode, config);\r\n }\r\n\r\n function initPageLoad() {\r\n let tempDsConsumers = [];\r\n let dsEnabledConsumers;\r\n serviceDate = UTIL.getTodaysDate();\r\n\r\n //Check to see if CI should be enabled\r\n const checkCiPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDateToCheckShowCI(res => {\r\n var today = new Date();\r\n ciDateToCompare = new Date(res[0].Setting_Value);\r\n if (ciDateToCompare <= today) {\r\n $.session.ciBShow = true;\r\n }\r\n resolve('success');\r\n });\r\n });\r\n\r\n //Get CI Staff for CI Dropdown\r\n const getCiStaffPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getCiStaff(serviceDate, locationID, res => {\r\n ciDropdownData = res.map(ci => {\r\n var id = `ci-${ci.id}`;\r\n var value = ci.id;\r\n var text = ci.fullName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n ciDropdownData.unshift({ id: 'ci-0', value: '', text: '' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n //Get consumer activities\r\n const getEnabledConsumersPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceGetEnabledConsumers(serviceDate, locationID, res => {\r\n dsEnabledConsumers = res.map(r => r.consumerId);\r\n dayServiceAjax.getConsumerDayServiceActivity(\r\n dsEnabledConsumers,\r\n serviceDate,\r\n locationID,\r\n filterGroupID,\r\n filterGroupRetrieveID,\r\n res => {\r\n dsConsumers = [];\r\n res.forEach(res => {\r\n actObj = {\r\n Acuity: res.Acuity,\r\n AllowNonBillable: res.AllowNonBillable,\r\n Day_Service_Type: res.Day_Service_Type,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n Service_Date: res.Service_Date,\r\n Start_Time: res.Start_Time,\r\n Stop_Time: res.Stop_Time,\r\n ciStaffID: res.ciStaffID,\r\n isBatched: res.isBatched,\r\n dsGroupId: res.Day_service_group_id,\r\n };\r\n consumerObj = {\r\n id: res.ID,\r\n FirstName: res.FirstName,\r\n LastName: res.LastName,\r\n };\r\n if (activityCache[res.ID]) {\r\n arr = activityCache[res.ID];\r\n arr.push(actObj);\r\n activityCache[res.ID] = arr;\r\n } else {\r\n activityCache[res.ID] = [actObj];\r\n }\r\n // if (!dsConsumers[res.ID]) {\r\n // dsConsumers[res.ID] = consumerObj;\r\n // }\r\n tempDsConsumers.push(consumerObj);\r\n selectedGroupId = res.Day_service_group_id;\r\n });\r\n //filter out array to only get distinct consumers:\r\n var dsConsumerMap = new Map();\r\n for (const item of tempDsConsumers) {\r\n if (!dsConsumerMap.has(item.id)) {\r\n dsConsumerMap.set(item.id, true);\r\n dsConsumers.push({\r\n id: item.id,\r\n FirstName: item.FirstName,\r\n LastName: item.LastName,\r\n });\r\n }\r\n }\r\n //Add all consumers to the displayed consumers array\r\n dsConsumers.forEach(consumer => {\r\n displayedConsumers.push(consumer.id);\r\n });\r\n\r\n resolve('success');\r\n },\r\n );\r\n });\r\n });\r\n\r\n //Get Groups\r\n const getGroupsPrommise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceGroups($.session.Token, locationID, res => {\r\n dsGroupsCache = {};\r\n groupDropdownData = res.map((group, index) => {\r\n var { groupId, groupDescription } = group;\r\n\r\n if (!dsGroupsCache[groupId]) {\r\n dsGroupsCache[groupId] = {\r\n id: groupId,\r\n value: groupDescription,\r\n };\r\n }\r\n\r\n return {\r\n id: groupId,\r\n value: groupId,\r\n text: groupDescription,\r\n };\r\n });\r\n groupDropdownData.unshift({ id: '%', value: '', text: '' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([\r\n checkCiPromise,\r\n getCiStaffPromise,\r\n getEnabledConsumersPromise,\r\n getGroupsPrommise,\r\n ]).then(function () {\r\n initialPageBuild();\r\n enabledConsumers = dsEnabledConsumers;\r\n roster2.setAllowedConsumers(dsEnabledConsumers);\r\n let locationName = locationCache[locationID].locationName;\r\n roster2.miniRosterinit(\r\n { locationId: locationID, locationName: locationName },\r\n {\r\n hideDate: true,\r\n },\r\n );\r\n checkIfBatched();\r\n });\r\n }\r\n\r\n function locationCheck() {\r\n locationID = defaults.getLocation('dayServices');\r\n noLocationSet = locationID === '' ? true : false;\r\n serviceDate = UTIL.getTodaysDate();\r\n selectedGroupName = 'Everyone';\r\n\r\n //get locations and cache them\r\n dayServiceAjax.getDayServiceLocations(serviceDate, loc => {\r\n loc.forEach(loc => {\r\n if (!locationCache[loc.locationId]) {\r\n obj = {\r\n locationName: loc.Name,\r\n defaultDayServiceType: loc.defaultDayServiceType,\r\n };\r\n locationCache[loc.locationId] = obj;\r\n }\r\n });\r\n\r\n locationDropdownData = loc.map(loc => {\r\n var id = `loc${loc.locationId}`;\r\n var value = loc.locationId;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n //Add \"\" location for users that don't have a default location set\r\n locationCache[''] = {\r\n locationName: 'Select a location from the filter',\r\n defaultDayServiceType: '',\r\n };\r\n\r\n //When done, if they don't have a default location set, or the default loaction is set that they don't have permisison to (Advisor bug)\r\n //display a popup that has a location selection\r\n if (noLocationSet || !Object.keys(locationCache).includes(locationID)) {\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visable', 'locationPicker');\r\n let header = document.createElement('h2');\r\n header.classList.add('popupHeader');\r\n popup.appendChild(header);\r\n\r\n header.innerHTML = 'No Default Location Set. Please Choose a Location:';\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'location',\r\n style: 'secondary',\r\n });\r\n\r\n var applyBtn = button.build({\r\n id: 'apply',\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: function () {\r\n locationID =\r\n locationDropdown.firstElementChild.options[\r\n locationDropdown.firstElementChild.selectedIndex\r\n ].value;\r\n let locationName =\r\n locationDropdown.firstElementChild.options[\r\n locationDropdown.firstElementChild.selectedIndex\r\n ].innerText;\r\n if (defaults.rememberLastLocation('dayServices'))\r\n defaults.setLocation('dayServices', locationID);\r\n DOM.ACTIONCENTER.removeChild(popup);\r\n noLocationSet = false;\r\n overlay.hide();\r\n\r\n initPageLoad();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.classList.add('btnWrap');\r\n\r\n popup.appendChild(locationDropdown);\r\n popup.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(popup);\r\n overlay.show();\r\n\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n } else {\r\n initPageLoad();\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n initRosterSelection = true;\r\n setActiveModuleSectionAttribute('dayServices');\r\n\r\n //clear cache\r\n locationCache = {};\r\n activityCache = {};\r\n\r\n dsCardArea.innerHTML = '';\r\n\r\n DOM.clearActionCenter();\r\n locationCheck();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","const dayServiceAjax = (function () {\r\n function checkConsumersForDate(locationId, consumerList, serviceDate, callback) {\r\n //CONSUMER LIST = \"id|id|id|id\" or \"id|\"\r\n //massUserCheckByDate\r\n // var consumerIds = '';\r\n\r\n // // For every consumer that is \"active\":\r\n // $('#consumerlist')\r\n // \t.children()\r\n // \t.each(function() {\r\n // \t\t// Add the consumer day service record for update:\r\n // \t\tconsumerId = $(this).attr('id');\r\n // \t\tconsumerIds = consumerIds + consumerId + '|';\r\n // \t});\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/massUserCheckByDateJSON/',\r\n data:\r\n '{\"consumerIds\":\"' +\r\n consumerList +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.massUserCheckByDateJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDayServiceGetEnabledConsumers(serviceDate, locationId, callback) {\r\n //* serviceDate, locationId & groupId are set by filter\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceGetEnabledConsumers/',\r\n data: '{\"serviceDate\":\"' + serviceDate + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getDayServiceGetEnabledConsumersResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function dayServiceClockIn(consumerIds, serviceDate, locationId, startTime, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addDayServiceActivityMassClockInConsumer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n return;\r\n errorMessage = '';\r\n var errorId;\r\n var errorConsumerIds;\r\n\r\n $('dayrow', res).each(function () {\r\n // Look for errors:\r\n $('errors', res).each(function () {\r\n // Get the error code:\r\n tmpErrorCode = $('error_code', this).text();\r\n // If time overlaps:\r\n if (tmpErrorCode == '615') {\r\n // Set the error message:\r\n errorMessage = ' Time overlaps found, with people exsiting in the database';\r\n setErrorBox(errorMessage);\r\n // Get the consumer IDs:\r\n errorConsumerIds = $('consumers', this).text();\r\n }\r\n });\r\n });\r\n\r\n //alert('success: ' + res);\r\n\r\n // After clockin, refresh data\r\n if (errorConsumerIds != null) {\r\n getConsumerDayServiceActivity(errorConsumerIds);\r\n } else {\r\n getConsumerDayServiceActivity();\r\n }\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n function dayServiceClockOut(consumerIds, stopTime) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addDayServiceActivityMassClockOutConsumer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n $('#dsdatebox').val() +\r\n '\", \"locationId\":\"' +\r\n $('#dslocationbox').attr('locid') +\r\n '\", \"stopTime\":\"' +\r\n stopTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //alert('success: ' + res);\r\n\r\n //615156|156|\r\n errorMessage = '';\r\n\r\n $('dayrow', res).each(function () {\r\n // Look for errors:\r\n $('errors', res).each(function () {\r\n // Get the error code:\r\n tmpErrorCode = $('error_code', this).text();\r\n // If time overlaps:\r\n if (tmpErrorCode == '615') {\r\n // Set the error message:\r\n errorMessage = ' Time overlaps found, with people exsiting in the database';\r\n setErrorBox(errorMessage);\r\n // Get the consumer IDs:\r\n errorConsumerIds = $('consumers', this).text();\r\n }\r\n });\r\n });\r\n\r\n // After clockout, refresh data\r\n getConsumerDayServiceActivity();\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n function deleteDayServiceActivity(consumerIds, serviceDate, locationID, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteDayServiceMassDeleteConsumerActivity/',\r\n data:\r\n '{\"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n\r\n // After delete, refresh data\r\n // getConsumerDayServiceActivity();\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); }\r\n });\r\n }\r\n function deleteCIStaffId(consumerId, startTime, serviceDate, locationID, callback) {\r\n // startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteCIStaffId/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationID +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDateToCheckShowCI(callback) {\r\n //Done\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDateToCheckShowCI/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.getDateToCheckShowCIResult);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getExistingCIStaffId(consumerId, startTime, resIn, ciButtonId, isBatched) {\r\n startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getExistingCIStaffId/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n $('#dsdatebox').val() +\r\n '\", \"locationID\":\"' +\r\n $('#dslocationbox').attr('locid') +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n staffId = getExistingCIStaffIDFromResponse(res);\r\n createCIDropdown(resIn, staffId, consumerId, startTime, ciButtonId, isBatched);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDayServiceLocations(serviceDate, callback) {\r\n //Done\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + serviceDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n //var res = JSON.stringify(response);\r\n var res = response.getDayServiceLocationsJSONResult;\r\n //always check for errors before processing\r\n //if (checkforErrors(res) == -1){\r\n // return;\r\n //};\r\n callback(res);\r\n return;\r\n var optionsHtml = [];\r\n var locations = $('#dslocationpop');\r\n var first = 0;\r\n var showSelect = 'Y';\r\n\r\n $('location', res).each(function () {\r\n tmpName = $('name', this).text();\r\n tmpId = $('locationId', this).text();\r\n tmpId2 = $('ID', this).text();\r\n tmpRes = $('Residence', this).text();\r\n\r\n if (tmpRes == 'Y') {\r\n icon = \"\";\r\n } else {\r\n icon = \"\";\r\n }\r\n\r\n if (tmpId == '') {\r\n tmpId = tmpId2;\r\n }\r\n\r\n // If more than 1 location for the selected consumers:\r\n if (serviceLocationCount > 1) {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n } else {\r\n // If only 1 location for the selected consumers and the location id is the same as the selected location:\r\n if (serviceLocationCount == 1 && locationIds[0] == currentlocationId) {\r\n // If the location id = the selected location:\r\n if (tmpId == currentlocationId) {\r\n currentlocationId = tmpId;\r\n\r\n // Display the location name:\r\n $('#dslocationbox').html(\r\n tmpName +\r\n \"\",\r\n );\r\n $('#dslocationbox').attr('locid', tmpId);\r\n resizeHeaderText('#dslocationbox', tmpName.length);\r\n showSelect = 'N';\r\n } else {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n }\r\n } else {\r\n // Populate the day services location box with all the locations and a link to the changeTheDSLocation function in dayservices.js:\r\n optionsHtml.push(\r\n \"\" +\r\n icon +\r\n ' ' +\r\n tmpName +\r\n '',\r\n );\r\n }\r\n }\r\n });\r\n\r\n // If more than 1 location for the selected consumers:\r\n if (showSelect == 'Y') {\r\n // Display \"Select a Location\":\r\n $('#dslocationbox').html(\r\n 'Select a Location' +\r\n \"\",\r\n );\r\n $('#dslocationbox').attr('locid', 0);\r\n resizeHeaderText('#dslocationbox', 15);\r\n currentlocationId = 0;\r\n }\r\n\r\n optionsHtml = optionsHtml.join('');\r\n locations.html(optionsHtml);\r\n\r\n //if true gets history value for switching between modules but not reloading page\r\n if ($.session.dsLocationHistoryFlag == true && $.session.dsLocationHistoryValue != null) {\r\n changeTheDSLocation($.session.dsLocationHistoryValue);\r\n } else {\r\n if (readCookie('defaultDayServiceLocationName') == 'Remember Last Location') {\r\n changeTheDSLocation(readCookie('defaultDayServiceLocation'));\r\n } else {\r\n changeTheDSLocation(readCookie('defaultDayServiceLocationNameValue'));\r\n }\r\n }\r\n\r\n if (currentlocationId != 0) {\r\n getConsumerDayServiceActivity();\r\n } else {\r\n $('#locationhelp').css('display', 'block');\r\n $('#appbuttonbox').html('');\r\n }\r\n },\r\n\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n-----\\n' + error + '\\n-----\\n'+ xhr.responseText); }\r\n });\r\n }\r\n function getConsumerDayServiceActivity(\r\n peopleList,\r\n serviceDate,\r\n locationId,\r\n groupCode,\r\n retrieveId,\r\n callback,\r\n ) {\r\n //Done\r\n // removeErrorMessage();\r\n // var dsDate = $('#dsdatebox').val();\r\n // if (dsDate == undefined) {\r\n // \tvar newDate = new Date();\r\n // \tdsDate = newDate.getFullYear() + '-' + (newDate.getMonth() + 1) + '-' + newDate.getDate();\r\n // }\r\n groupCode = !groupCode ? 'ALL' : groupCode;\r\n\r\n if (groupCode !== 'CST') {\r\n if (!retrieveId) retrieveId = locationId;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerDayServiceActivityJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"peopleList\":\"' +\r\n peopleList +\r\n '\", \"groupCode\":\"' +\r\n groupCode +\r\n '\",\"retrieveId\":\"' +\r\n retrieveId +\r\n '\",\"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerDayServiceActivityJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getCiStaff(serviceDate, locationId, callback) {\r\n // startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCIStaffDropdownJSON/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n //var res = JSON.stringify(response);\r\n var res = response.getCIStaffDropdownJSONResult;\r\n callback(res);\r\n //ASH below will need tweaked to fit new response\r\n // getExistingCIStaffIdAjax(consumerId, startTime, res, ciButtonId, isBatched);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function updateCIStaff(consumerId, staffId, startTime, serviceDate, locationId, callback) {\r\n startTime = convertTimeToMilitary(startTime);\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateCIStaff/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationID\":\"' +\r\n locationId +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"startTime\":\"' +\r\n startTime +\r\n '\", \"staffId\":\"' +\r\n staffId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function updateDayServiceActivity(\r\n consumerIds,\r\n inputType,\r\n inputTime,\r\n serviceDate,\r\n locationID,\r\n dayServiceType,\r\n selectedGroupId,\r\n callback,\r\n ) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateDayServiceActivity/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\", \"locationId\":\"' +\r\n locationID +\r\n '\", \"inputType\":\"' +\r\n inputType +\r\n '\", \"inputTime\":\"' +\r\n inputTime +\r\n '\", \"dayServiceType\":\"' +\r\n dayServiceType +\r\n '\", \"selectedGroupId\":\"' +\r\n selectedGroupId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // return res;\r\n // var errorId;\r\n // errorMessage = '';\r\n // var errorConsumerIds;\r\n\r\n // $('dayrow', res).each(function() {\r\n // \t// Look for errors:\r\n // \t$('errors', res).each(function() {\r\n // \t\t// Get the error code:\r\n // \t\ttmpErrorCode = $('error_code', this).text();\r\n // \t\t// If time overlaps:\r\n\r\n // \t\tif (tmpErrorCode == '615' && inputTime != '00:00:00') {\r\n // \t\t\t// Get the consumer IDs:\r\n // \t\t\terrorConsumerIds = $('consumers', this).text();\r\n // \t\t}\r\n // \t});\r\n // });\r\n\r\n // // After update, refresh data\r\n // if (errorConsumerIds != null) {\r\n // \tgetConsumerDayServiceActivity(errorConsumerIds);\r\n // } else {\r\n // \tgetConsumerDayServiceActivity();\r\n // }\r\n },\r\n\r\n error: function (xhr, status, error) {\r\n alert('Error\\n-----\\n' + error + ' \\n' + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDSIsLocationBatched(locationId, serviceDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDSIsLocationBatched/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\", \"serviceDate\":\"' +\r\n serviceDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getDSIsLocationBatchedResult;\r\n callback(data);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function getDayServiceGroups(token, locationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceGroups/',\r\n data: '{\"token\":\"' + token + '\", \"locationId\":\"' + locationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n\r\n success: function (response, status, xhr) {\r\n // var res = JSON.stringify(response);\r\n var res = response.getDayServiceGroupsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n // comment\r\n async function getDayServiceClockedInConsumers(retrieveData) {\r\n //string token, string consumerIdString, string serviceDate, string locationId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDayServiceClockedInConsumers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getDayServiceClockedInConsumersResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n checkConsumersForDate,\r\n getDayServiceGetEnabledConsumers,\r\n dayServiceClockIn,\r\n dayServiceClockOut,\r\n deleteDayServiceActivity,\r\n deleteCIStaffId,\r\n getDateToCheckShowCI,\r\n getExistingCIStaffId,\r\n getDayServiceLocations,\r\n getConsumerDayServiceActivity,\r\n getCiStaff,\r\n updateCIStaff,\r\n updateDayServiceActivity,\r\n getDSIsLocationBatched,\r\n getDayServiceGroups,\r\n getDayServiceClockedInConsumers\r\n };\r\n})();\r\n","const addEditEmployers = (() => {\r\n let addNewEmployerBtn;\r\n let rtnOODMainPageBtn;\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n let saveBtn;\r\n let cancelBtn;\r\n let openedPage;\r\n let redirectInformation = {};\r\n let BtnEventType;\r\n\r\n async function init() {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n let container = document.createElement(\"div\");\r\n var LineBr = document.createElement('br');\r\n\r\n addNewEmployerBtn = button.build({\r\n text: 'Add New Employer',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!addNewEmployerBtn.classList.contains('disabled')) {\r\n buildEmployerPopUp({}, 'insert', 'employer', null)\r\n }\r\n },\r\n });\r\n\r\n rtnOODMainPageBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { Employment.loadEmploymentLanding() },\r\n });\r\n\r\n OODEmployersTable = await buildEmployersTable();\r\n\r\n var headingWrap = document.createElement('div');\r\n headingWrap.classList.add('employmentBtnWrap');\r\n if (!$.session.InsertEmployers) {\r\n addNewEmployerBtn.classList.add('disabled');\r\n }\r\n headingWrap.appendChild(addNewEmployerBtn);\r\n headingWrap.appendChild(rtnOODMainPageBtn);\r\n container.appendChild(headingWrap);\r\n container.appendChild(LineBr);\r\n container.appendChild(OODEmployersTable);\r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildEmployersTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEmployersTable',\r\n columnHeadings: ['Employer', 'Address', 'City', 'State', 'Zip Code'],\r\n endIcon: false,\r\n };\r\n const { getActiveEmployersResult: activeEmployers } = await OODAjax.getActiveEmployersAsync();\r\n var filteredActiveEmployers = activeEmployers.filter((x) => x.employerId != 0);\r\n\r\n let tableData = filteredActiveEmployers.map((employer) => ({\r\n values: [employer.employerName, employer.address1 + ' ' + employer.address2, employer.city, employer.state, employer.zipcode],\r\n attributes: [{ key: 'employerId', value: employer.employerId }],\r\n id: employer.employerId,\r\n onClick: (e) => {\r\n OODAjax.getEmployer(employer.employerId, function (results) {\r\n buildEmployerPopUp(results, 'update', 'employer', null);\r\n });\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n return oTable;\r\n }\r\n\r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType, openpageName, redirectInfo) {\r\n if (openpageName == 'employmentInfo') {\r\n openedPage = 'employmentInfo';\r\n redirectInformation = redirectInfo\r\n }\r\n else\r\n openedPage = 'employer';\r\n\r\n var headingEmployer;\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n headingEmployer = 'Edit this Employer';\r\n BtnEventType = 'Update';\r\n } else {\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n headingEmployer = 'Add Employer';\r\n BtnEventType = 'Add';\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: headingEmployer,\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n value: (employerstate) ? employerstate : '',\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n callback: () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n editEmployerPopupDoneBtn(postType)\r\n }\r\n }\r\n });\r\n\r\n cancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n POPUP.show(editEmployerPopup);\r\n checkRequiredFields();\r\n }\r\n\r\n function popUpEventHandlers() {\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim();\r\n checkRequiredFields();\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n });\r\n }\r\n\r\n function checkRequiredFields() {\r\n var employrInput = employerInput.querySelector('#employerInput');\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n saveBtn.classList.add('disabled'); \r\n return;\r\n } else {\r\n employerInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if (($.session.UpdateEmployers && BtnEventType == 'Update') || ($.session.InsertEmployers && BtnEventType == 'Add')) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n let employerID = insertEmployerResult.employerId;\r\n\r\n if (employerID == '0') {\r\n warningPopup();\r\n } else {\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n if (openedPage == 'employmentInfo')\r\n NewEmployment.refreshEmployment(redirectInformation.positionId, redirectInformation.empName, redirectInformation.posName, redirectInformation.consumersName, redirectInformation.consumersId, tabPositionIndex = 0);\r\n else\r\n addEditEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n addEditEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function deleteConfirmation(employerId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteEmployerAsync(employerId);\r\n if (result.deleteEmployerResult === \"1\") {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this employer?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n buildEmployerPopUp,\r\n };\r\n})(); ","const Employment = (() => {\r\n //Inputs\r\n let newFilterBtn;\r\n let filterRow;\r\n let EmploymentEntriesTable = [];\r\n let PositionBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n var selectedConsumers;\r\n var selectedConsumersName;\r\n var selectedConsumersId;\r\n //filter\r\n let filterValues;\r\n let btnWrap;\r\n let employerBtnWrap;\r\n let positionBtnWrap;\r\n let positionStartDateBtnWrap;\r\n let positionEndDateBtnWrap;\r\n let jobStandingBtnWrap;\r\n let reportValues;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n await loadEmploymentLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build Employment Module Landing Page \r\n async function loadEmploymentLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n\r\n selectedConsumersId = selectedConsumers[selectedConsumers.length - 1].id;\r\n $.session.consumerId = selectedConsumersId;\r\n const name = (\r\n await ConsumerFinancesAjax.getConsumerNameByID({\r\n token: $.session.Token,\r\n consumerId: selectedConsumersId,\r\n })\r\n ).getConsumerNameByIDResult;\r\n\r\n selectedConsumersName = name[0].FullName;\r\n const topButton = buildHeaderButton(selectedConsumers[0]);\r\n landingPage.appendChild(topButton);\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n filterRow.appendChild(filteredBy);\r\n\r\n landingPage.appendChild(filterRow);\r\n EmploymentEntriesTable = await buildEmploymentEntriesTable(filterValues);\r\n landingPage.appendChild(EmploymentEntriesTable);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build the listing of Employment Entries (based off of filter settings)\r\n async function buildEmploymentEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: selectedConsumersName,\r\n columnHeadings: ['Employer', 'Position', 'Position Start Date', 'Position End Date', 'Job Standing'],\r\n endIcon: false,\r\n };\r\n\r\n let EmploymentsEntries = await EmploymentAjax.getEmploymentEntriesAsync(\r\n selectedConsumersId,\r\n filterValues.employer,\r\n filterValues.position,\r\n filterValues.positionStartDate,\r\n filterValues.positionEndDate == null ? UTIL.getTodaysDate() : filterValues.positionEndDate,\r\n filterValues.jobStanding,\r\n );\r\n\r\n let tableData = EmploymentsEntries.getEmploymentEntriesResult.map((entry) => ({\r\n values: [entry.employer, entry.position, entry.positionStartDate == '' ? '' : moment(entry.positionStartDate).format('M/D/YYYY'), entry.positionEndDate == '' ? '' : moment(entry.positionEndDate).format('M/D/YYYY'), entry.jobStanding],\r\n attributes: [{ key: 'positionId', value: entry.positionId }, { key: 'PeopleName', value: entry.PeopleName }],\r\n onClick: (e) => {\r\n handleAccountTableEvents(e)\r\n },\r\n }));\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function handleAccountTableEvents(event) {\r\n var name = event.target.childNodes[0].innerText;\r\n var positionName = event.target.childNodes[1].innerText;\r\n var positionId = event.target.attributes.positionId.value;\r\n NewEmployment.refreshEmployment(positionId, name, positionName, selectedConsumersName, selectedConsumersId);\r\n }\r\n\r\n // build display of Account and button\r\n function buildHeaderButton(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n PositionBtns = buildButtonBar(consumer);\r\n consumerRow.appendChild(PositionBtns);\r\n consumerElement.appendChild(consumerRow);\r\n return consumerElement;\r\n }\r\n\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n buttonBar.style.maxHeight = '50px';\r\n buttonBar.style.minWidth = '100%';\r\n\r\n const newPositionBtn = button.build({\r\n text: '+ New Position',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: async () => {\r\n if (!newPositionBtn.classList.contains('disabled')) {\r\n NewEmployment.refreshEmployment(positionId = undefined, '', '', selectedConsumersName, selectedConsumersId)\r\n }\r\n },\r\n });\r\n\r\n const editEmployerBtn = button.build({\r\n text: 'Edit Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: async () => {\r\n if (!editEmployerBtn.classList.contains('disabled')) {\r\n addEditEmployers.init();\r\n }\r\n },\r\n });\r\n\r\n\r\n\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'entryBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getReportValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n reportsBtn = createMainReportButton([{ text: 'Employee Reporting Information' }])\r\n\r\n if ($.session.EmploymentUpdate) {\r\n newPositionBtn.classList.remove('disabled');\r\n }\r\n else {\r\n newPositionBtn.classList.add('disabled');\r\n }\r\n newPositionBtn.style.height = '50px';\r\n\r\n newFilterBtn = buildNewFilterBtn();\r\n\r\n const entryButtonBar = document.createElement('div');\r\n entryButtonBar.classList.add('employmentBtnWrap');\r\n entryButtonBar.style.width = '100%';\r\n entryButtonBar.appendChild(newPositionBtn);\r\n\r\n if (!$.session.InsertEmployers && !$.session.UpdateEmployers) {\r\n editEmployerBtn.classList.add('disabled');\r\n }\r\n entryButtonBar.appendChild(editEmployerBtn);\r\n if ($.session.EmploymentView) {\r\n entryButtonBar.appendChild(reportsBtn);\r\n }\r\n buttonBar.appendChild(entryButtonBar);\r\n\r\n return buttonBar;\r\n }\r\n\r\n // build Filter button, which filters the data displayed on the OOD Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues) filterValues = {\r\n token: $.session.Token,\r\n employer: '%',\r\n position: '%',\r\n positionStartDate: '1900-01-01',\r\n positionEndDate: null,\r\n jobStanding: '%',\r\n EmployerID: '%',\r\n positionID: '%',\r\n jobStandingID: '%'\r\n }\r\n }\r\n\r\n function getReportValues() {\r\n return (reportValues = {\r\n consumerID: selectedConsumersId,\r\n employer: filterValues.EmployerID == undefined ? '%' : filterValues.EmployerID,\r\n position: filterValues.positionID == undefined ? '%' : filterValues.positionID,\r\n positionStartDate: filterValues.positionStartDate,\r\n positionEndDate: filterValues.positionEndDate == null ? UTIL.getTodaysDate() : filterValues.positionEndDate,\r\n jobStanding: filterValues.jobStandingID == undefined ? '%' : filterValues.jobStandingID,\r\n });\r\n }\r\n\r\n\r\n // build the display of the current Filter Settings (next to the Filter button) \r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n filteredBy.style.maxWidth = '100%';\r\n if (filterValues.employer === '%' || filterValues.employer === 'ALL') {\r\n btnWrap.appendChild(employerBtnWrap);\r\n btnWrap.removeChild(employerBtnWrap);\r\n } else {\r\n btnWrap.appendChild(employerBtnWrap);\r\n }\r\n\r\n if (filterValues.position === '%' || filterValues.position === 'ALL') {\r\n btnWrap.appendChild(positionBtnWrap);\r\n btnWrap.removeChild(positionBtnWrap);\r\n } else {\r\n btnWrap.appendChild(positionBtnWrap);\r\n }\r\n\r\n if (filterValues.positionEndDate === null) {\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n btnWrap.removeChild(positionEndDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n }\r\n if (filterValues.jobStanding === '%' || filterValues.jobStanding === 'ALL') {\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n btnWrap.removeChild(jobStandingBtnWrap);\r\n } else {\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n employerBtn = button.build({\r\n id: 'employerBtn',\r\n text: 'Employer: ' + filterValues.employer,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('employerBtn') },\r\n });\r\n employerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employerBtn') },\r\n });\r\n\r\n positionBtn = button.build({\r\n id: 'positionBtn',\r\n text: 'Position: ' + filterValues.position,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionBtn') },\r\n });\r\n positionCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('positionBtn') },\r\n });\r\n\r\n positionStartDateBtn = button.build({\r\n id: 'positionStartDateBtn',\r\n text: 'Position Start Date: ' + moment(filterValues.positionStartDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionStartDateBtn') },\r\n });\r\n\r\n positionEndDateBtn = button.build({\r\n id: 'positionEndDateBtn',\r\n text: 'Position End Date: ' + moment(filterValues.positionEndDate, 'YYYY-MM-DD').format('MM/DD/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('positionEndDateBtn') },\r\n });\r\n positionEndDateCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('positionEndDateBtn') },\r\n });\r\n\r\n jobStandingBtn = button.build({\r\n id: 'jobStandingBtn',\r\n text: 'Job Standing: ' + filterValues.jobStanding,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('jobStandingBtn') },\r\n });\r\n jobStandingCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('jobStandingBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n employerBtnWrap = document.createElement('div');\r\n employerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employerBtnWrap.appendChild(employerBtn);\r\n employerBtnWrap.appendChild(employerCloseBtn);\r\n btnWrap.appendChild(employerBtnWrap);\r\n\r\n positionBtnWrap = document.createElement('div');\r\n positionBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionBtnWrap.appendChild(positionBtn);\r\n positionBtnWrap.appendChild(positionCloseBtn);\r\n btnWrap.appendChild(positionBtnWrap);\r\n\r\n positionStartDateBtnWrap = document.createElement('div');\r\n positionStartDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionStartDateBtnWrap.appendChild(positionStartDateBtn);\r\n btnWrap.appendChild(positionStartDateBtnWrap);\r\n\r\n positionEndDateBtnWrap = document.createElement('div');\r\n positionEndDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n positionEndDateBtnWrap.appendChild(positionEndDateBtn);\r\n positionEndDateBtnWrap.appendChild(positionEndDateCloseBtn);\r\n btnWrap.appendChild(positionEndDateBtnWrap);\r\n\r\n jobStandingBtnWrap = document.createElement('div');\r\n jobStandingBtnWrap.classList.add('filterSelectionBtnWrap');\r\n jobStandingBtnWrap.appendChild(jobStandingBtn);\r\n jobStandingBtnWrap.appendChild(jobStandingCloseBtn);\r\n btnWrap.appendChild(jobStandingBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'employerBtn') {\r\n filterValues.employer = '%';\r\n }\r\n if (closeFilter == 'positionBtn') {\r\n filterValues.position = '%';\r\n }\r\n if (closeFilter == 'positionEndDateBtn') {\r\n filterValues.positionEndDate = null;\r\n }\r\n if (closeFilter == 'jobStandingBtn') {\r\n filterValues.jobStanding = '%';\r\n }\r\n loadEmploymentLanding();\r\n }\r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n // dropdowns & inputs \r\n positionStartDate = input.build({\r\n id: 'positionStartDate',\r\n type: 'date',\r\n label: 'Position Start Date',\r\n style: 'secondary',\r\n value: filterValues.positionStartDate,\r\n });\r\n\r\n positionEndDate = input.build({\r\n id: 'positionEndDate',\r\n type: 'date',\r\n label: 'Position End Date',\r\n style: 'secondary',\r\n value: filterValues.positionEndDate,\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: \"Position\",\r\n dropdownId: \"positionDropdown\",\r\n });\r\n\r\n jobStandingDropdown = dropdown.build({\r\n id: 'jobStandingDropdown',\r\n label: \"Job Standing\",\r\n dropdownId: \"jobStandingDropdown\",\r\n });\r\n\r\n EmployerDropdown = dropdown.build({\r\n id: 'employerDropdown',\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn()\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'employerBtn')\r\n filterPopup.appendChild(EmployerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'positionBtn')\r\n filterPopup.appendChild(positionDropdown);\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap');\r\n if (IsShow == 'ALL' || IsShow == 'positionStartDateBtn')\r\n dateWrap.appendChild(positionStartDate);\r\n if (IsShow == 'ALL' || IsShow == 'positionEndDateBtn')\r\n dateWrap.appendChild(positionEndDate);\r\n\r\n // build popup\r\n filterPopup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'jobStandingBtn')\r\n filterPopup.appendChild(jobStandingDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n populateFilterDropdown();\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // binding filter events \r\n function eventListeners() {\r\n\r\n var tmpEmployer;\r\n var tmpPosition;\r\n var tmpJobStanding;\r\n var tmpStartDate;\r\n var tmpEndDate;\r\n var tmpEmployerID;\r\n var tmppositionID;\r\n var tmpjobStandingID;\r\n\r\n positionStartDate.addEventListener('change', event => {\r\n tmpStartDate = event.target.value;\r\n });\r\n positionEndDate.addEventListener('change', event => {\r\n tmpEndDate = event.target.value;\r\n });\r\n EmployerDropdown.addEventListener('change', event => {\r\n tmpEmployer = event.target.value;\r\n tmpEmployerID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n positionDropdown.addEventListener('change', event => {\r\n tmpPosition = event.target.value;\r\n tmppositionID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n jobStandingDropdown.addEventListener('change', event => {\r\n tmpJobStanding = event.target.value;\r\n tmpjobStandingID = event.target.options[event.target.selectedIndex].id;\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n updateFilterData({\r\n tmpEmployer,\r\n tmpPosition,\r\n tmpJobStanding,\r\n tmpStartDate,\r\n tmpEndDate,\r\n tmpEmployerID,\r\n tmppositionID,\r\n tmpjobStandingID\r\n });\r\n\r\n POPUP.hide(filterPopup);\r\n eventListeners();\r\n loadEmploymentLanding();\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpEmployer) filterValues.employer = data.tmpEmployer;\r\n if (data.tmpPosition) filterValues.position = data.tmpPosition;\r\n if (data.tmpJobStanding) filterValues.jobStanding = data.tmpJobStanding;\r\n if (data.tmpStartDate) filterValues.positionStartDate = data.tmpStartDate;\r\n if (data.tmpEndDate) filterValues.positionEndDate = data.tmpEndDate;\r\n if (data.tmpEndDate == '') filterValues.positionEndDate = null;\r\n if (data.tmpStartDate == '') filterValues.positionStartDate = '1900-01-01';\r\n\r\n if (data.tmpEmployerID) filterValues.EmployerID = data.tmpEmployerID;\r\n if (data.tmppositionID) filterValues.positionID = data.tmppositionID;\r\n if (data.tmpjobStandingID) filterValues.jobStandingID = data.tmpjobStandingID;\r\n }\r\n\r\n async function populateFilterDropdown() {\r\n const {\r\n getPositionsResult: Positions,\r\n } = await EmploymentAjax.getPositionsAsync();\r\n let positionsData = Positions.map((positions) => ({\r\n id: positions.positionId,\r\n value: positions.positionName,\r\n text: positions.positionName\r\n }));\r\n positionsData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"positionDropdown\", positionsData, filterValues.position);\r\n\r\n const {\r\n getEmployersResult: Employer,\r\n } = await EmploymentAjax.getEmployersAsync();\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerName,\r\n text: employer.employerName\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"employerDropdown\", data, filterValues.employer);\r\n\r\n const {\r\n getJobStandingsResult: JobStanding,\r\n } = await EmploymentAjax.getJobStandingsAsync();\r\n let jobStandingData = JobStanding.map((jobStanding) => ({\r\n id: jobStanding.jobStandingId,\r\n value: jobStanding.jobStandingName,\r\n text: jobStanding.jobStandingName\r\n }));\r\n jobStandingData.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate(\"jobStandingDropdown\", jobStandingData, filterValues.jobStanding);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n }\r\n\r\n function init() {\r\n setActiveModuleAttribute('Employment');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadEmploymentLanding,\r\n };\r\n})(); \r\n","var EmploymentAjax = (function () {\r\n // Employment Main/Landing Page\r\n async function getEmploymentEntriesAsync(consumerIds, employer, position, positionStartDate, positionEndDate, jobStanding) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmploymentEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"employer\":\"' +\r\n employer +\r\n '\", \"position\":\"' +\r\n position +\r\n '\", \"positionStartDate\":\"' +\r\n positionStartDate +\r\n '\", \"positionEndDate\":\"' +\r\n positionEndDate +\r\n '\", \"jobStanding\":\"' +\r\n jobStanding +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositions/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getJobStandingsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getJobStandings/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployeeInfoByIDAsync(positionId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeInfoByID/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionId\":\"' +\r\n positionId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEmploymentPathAsync(\r\n employmentPath, newStartDate, newEndDate, currentEndDate, peopleID, userID, existingPathID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmploymentPath/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employmentPath: employmentPath,\r\n newStartDate: newStartDate,\r\n newEndDate: newEndDate,\r\n currentEndDate: currentEndDate,\r\n peopleID: peopleID,\r\n userID: userID,\r\n existingPathID: existingPathID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertEmploymentInfoAsync(\r\n startDatePosition, endDatePosition, position, jobStanding, employer, transportation, typeOfWork, selfEmployed, name, phone, email, peopleID, userID, PositionId, typeOfEmployment\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmploymentInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDatePosition: startDatePosition,\r\n endDatePosition: endDatePosition,\r\n position: position,\r\n jobStanding: jobStanding,\r\n employer: employer,\r\n transportation: transportation,\r\n typeOfWork: typeOfWork,\r\n selfEmployed: selfEmployed,\r\n name: name,\r\n phone: phone,\r\n email: email,\r\n peopleID: peopleID,\r\n userID: userID,\r\n PositionId: PositionId,\r\n typeOfEmployment: typeOfEmployment,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getJobStandingsDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getJobStandingsDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployerDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployerDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositionDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTransportationDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTransportationDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTypeOfWorkDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTypeOfWorkDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getTypeOfEmploymentDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTypeOfEmploymentDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWagesEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWagesEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWagesCheckboxEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWagesCheckboxEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertWagesAsync(\r\n hoursWeek, hoursWages, startDate, endDate, PositionId, wagesID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWages/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n hoursWeek: hoursWeek,\r\n hoursWages: hoursWages,\r\n startDate: startDate,\r\n endDate: endDate,\r\n PositionId: PositionId,\r\n wagesID: wagesID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n async function saveCheckboxWagesAsync(\r\n chkboxName, IsChacked, PositionId, textboxValue, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveCheckboxWages/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n chkboxName: chkboxName,\r\n IsChacked: IsChacked,\r\n PositionId: PositionId,\r\n textboxValue: textboxValue,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPositionTaskEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPositionTaskEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getInitialPerformanceDropdownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInitialPerformanceDropdown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertPositionTaskAsync(\r\n task, description, startDate, endDate, initialPerformance, initialPerformanceNotes, employeeStandard, PositionId, jobTaskID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPositionTask/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n task: task,\r\n description: description,\r\n startDate: startDate,\r\n endDate: endDate,\r\n initialPerformance: initialPerformance,\r\n initialPerformanceNotes: initialPerformanceNotes,\r\n employeeStandard: employeeStandard,\r\n PositionId: PositionId,\r\n jobTaskID: jobTaskID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkScheduleEntriesAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkScheduleEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isNewPositionEnableAsync(consumerIds) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isNewPositionEnable/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getEmployeementPathAsync(consumersId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeementPath/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumersId\":\"' +\r\n consumersId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertWorkScheduleAsync(\r\n dayOfWeek, startTime, endTime, PositionId, WorkScheduleID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkSchedule/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n dayOfWeek: dayOfWeek,\r\n startTime: startTime,\r\n endTime: endTime,\r\n PositionId: PositionId,\r\n WorkScheduleID: WorkScheduleID,\r\n userID: userID,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getLastTaskNumberAsync(positionID) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLastTaskNumber/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"positionID\":\"' +\r\n positionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n function deleteWagesBenefits(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteWagesBenefits/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"wagesID\":\"' +\r\n dataObj.wagesID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deleteWagesBenefitsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function deleteWorkSchedule(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteWorkSchedule/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"WorkScheduleID\":\"' +\r\n dataObj.WorkScheduleID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deleteWorkScheduleResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n function deletePostionTask(dataObj, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deletePostionTask/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"jobTaskID\":\"' +\r\n dataObj.jobTaskID +\r\n '\",\"PositionID\":\"' +\r\n dataObj.PositionID +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response) {\r\n var res = response.deletePostionTaskResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n\r\n async function getEmployeeStatusDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeeStatusDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function createNewEmploymentPathAsync(\r\n currentStatus, pathToEmployment, pathToStartDate, peopleID, userID\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/createNewEmploymentPath/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n currentStatus: currentStatus,\r\n pathToEmployment: pathToEmployment,\r\n pathToStartDate: pathToStartDate,\r\n peopleID: peopleID,\r\n userID: userID\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n getEmploymentEntriesAsync,\r\n getEmployersAsync,\r\n getPositionsAsync,\r\n getJobStandingsAsync,\r\n getEmployeeInfoByIDAsync,\r\n insertEmploymentPathAsync,\r\n insertEmploymentInfoAsync,\r\n getJobStandingsDropDownAsync,\r\n getEmployerDropDownAsync,\r\n getPositionDropDownAsync,\r\n getTransportationDropDownAsync,\r\n getTypeOfWorkDropDownAsync,\r\n getWagesEntriesAsync,\r\n getWagesCheckboxEntriesAsync,\r\n insertWagesAsync,\r\n saveCheckboxWagesAsync,\r\n getPositionTaskEntriesAsync,\r\n getInitialPerformanceDropdownAsync,\r\n insertPositionTaskAsync,\r\n getWorkScheduleEntriesAsync,\r\n isNewPositionEnableAsync,\r\n getEmployeementPathAsync,\r\n insertWorkScheduleAsync,\r\n getLastTaskNumberAsync,\r\n deleteWagesBenefits,\r\n deleteWorkSchedule,\r\n deletePostionTask,\r\n getEmployeeStatusDropDownAsync,\r\n createNewEmploymentPathAsync,\r\n getTypeOfEmploymentDropDownAsync,\r\n };\r\n})();\r\n","const EmploymentInformation = (() => {\r\n var employmentPath;\r\n let PositionId;\r\n let getEmployeeInfoByID = [];\r\n let peopleID;\r\n let BtnName;\r\n let tempstartDatePosition = '';\r\n let tempendDatePosition = '';\r\n let tempposition = '';\r\n let tempjobStanding = '';\r\n let tempemployer = '';\r\n let temptransportation = '';\r\n let temptypeOfWork = '';\r\n let tempselfEmployed = '';\r\n let tempname = '';\r\n let tempphone = '';\r\n let tempemail = '';\r\n let consumersID;\r\n let employerName;\r\n let positionName;\r\n let selectedConsumersName;\r\n let getEmployeepath = [];\r\n let existingEndDate;\r\n let isNewPositionEnable;\r\n let currentStatus;\r\n let pathToEmployment;\r\n let pathToStartDate;\r\n let temptypeOfEmployment = '';\r\n\r\n async function init(positionId, Name, PositionName, SelectedConsumersName, ConsumersId) {\r\n PositionId = positionId;\r\n consumersID = ConsumersId;\r\n employerName = Name;\r\n positionName = PositionName;\r\n selectedConsumersName = SelectedConsumersName;\r\n getEmployeepath = await EmploymentAjax.getEmployeementPathAsync(ConsumersId);\r\n if (PositionId != undefined) {\r\n getEmployeeInfoByID = await EmploymentAjax.getEmployeeInfoByIDAsync(PositionId);\r\n }\r\n\r\n const result = await EmploymentAjax.isNewPositionEnableAsync(ConsumersId);\r\n const { isNewPositionEnableResult } = result;\r\n if (isNewPositionEnableResult[0].IsEmployeeEnable == '0') {\r\n isNewPositionEnable = true;\r\n }\r\n else {\r\n isNewPositionEnable = false;\r\n }\r\n }\r\n\r\n function getMarkup() {\r\n const employeeInforWrap = document.createElement('div');\r\n employeeInforWrap.classList.add('planSummary');\r\n const importantTables = buildNewEmploymentForm();\r\n employeeInforWrap.appendChild(importantTables);\r\n return employeeInforWrap;\r\n }\r\n\r\n function buildNewEmploymentForm() {\r\n if (isNewPositionEnable)\r\n createEmploymentPathPopupBtn();\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n if (PositionId != undefined) {\r\n BtnName = 'SAVE';\r\n startDatePosition = moment(getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionStartDate).format('YYYY-MM-DD');\r\n endDatePosition = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionEndDate == '' ? '' : moment(getEmployeeInfoByID.getEmployeeInfoByIDResult[0].positionEndDate).format('YYYY-MM-DD');\r\n position = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].position;\r\n jobStanding = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].jobStanding;\r\n employer = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].employer;\r\n transportation = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].transportation;\r\n typeOfWork = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].typeOfWork;\r\n selfEmployed = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].selfEmployed;\r\n name = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].name;\r\n phone = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].phone;\r\n email = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].email;\r\n peopleID = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].peopleId;\r\n typeOfEmployment = getEmployeeInfoByID.getEmployeeInfoByIDResult[0].typeOfEmployment;\r\n }\r\n else {\r\n BtnName = 'SAVE';\r\n // PositionId = 0; \r\n startDatePosition = '';\r\n endDatePosition = '';\r\n position = '';\r\n jobStanding = '';\r\n employer = '';\r\n transportation = '';\r\n typeOfWork = '';\r\n selfEmployed = '';\r\n name = '';\r\n phone = '';\r\n email = '';\r\n peopleID = consumersID;\r\n typeOfEmployment = '';\r\n }\r\n\r\n employmentPath = getEmployeepath.getEmployeementPathResult.length > 0 ? getEmployeepath.getEmployeementPathResult[0].employmentPath : '';\r\n existingPathID = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingPathID == '' ? '' : getEmployeepath.getEmployeementPathResult[0].existingPathID;\r\n existingStartDate = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingStartDate == '' ? '' : moment(getEmployeepath.getEmployeementPathResult[0].existingStartDate).format('YYYY-MM-DD');\r\n existingEndDate = getEmployeepath.getEmployeementPathResult[0] == undefined || getEmployeepath.getEmployeementPathResult[0].existingEndDate == '' ? '' : moment(getEmployeepath.getEmployeementPathResult[0].existingEndDate).format('YYYY-MM-DD');\r\n tempstartDatePosition = '';\r\n tempendDatePosition = '';\r\n tempposition = '';\r\n tempjobStanding = '';\r\n tempemployer = '';\r\n temptransportation = '';\r\n temptypeOfWork = '';\r\n tempselfEmployed = '';\r\n tempname = '';\r\n tempphone = '';\r\n tempemail = '';\r\n temptypeOfEmployment = '';\r\n\r\n positionStartDate = input.build({\r\n id: 'positionStartDate',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: (startDatePosition) ? startDatePosition : '',\r\n });\r\n\r\n positionEndDate = input.build({\r\n id: 'positionEndDate',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: (endDatePosition) ? endDatePosition : '',\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n id: 'positionDropdown',\r\n label: \"Position\",\r\n dropdownId: \"positionDropdown\",\r\n value: (position) ? position : '',\r\n });\r\n\r\n jobStandingDropdown = dropdown.build({\r\n id: 'jobStandingDropdown',\r\n label: \"Job Standing\",\r\n dropdownId: \"jobStandingDropdown\",\r\n value: (jobStanding) ? jobStanding : '',\r\n });\r\n\r\n employerDropdown = dropdown.build({\r\n id: 'employerDropdown',\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n value: (employer) ? employer : '',\r\n });\r\n\r\n transportationDropdown = dropdown.build({\r\n id: 'transportationDropdown',\r\n label: \"Transportation\",\r\n dropdownId: \"transportationDropdown\",\r\n value: (transportation) ? transportation : '',\r\n });\r\n\r\n typeOfWorkDropdown = dropdown.build({\r\n id: 'typeOfWorkDropdown',\r\n label: \"Type Of Work\",\r\n dropdownId: \"typeOfWorkDropdown\",\r\n value: (typeOfWork) ? typeOfWork : '',\r\n });\r\n\r\n typeOfEmploymentDropdown = dropdown.build({\r\n id: 'typeOfEmploymentDropdown',\r\n label: \"Employment Type\",\r\n dropdownId: \"typeOfEmploymentDropdown\",\r\n value: (typeOfEmployment) ? typeOfEmployment : '',\r\n });\r\n\r\n isSelfEmployed = input.buildCheckbox({\r\n text: 'Self-Employed?',\r\n id: 'chkisSelfEmployed',\r\n isChecked: selfEmployed == 'Y' ? true : false,\r\n });\r\n\r\n nameInput = input.build({\r\n id: 'nameInput',\r\n label: 'Name',\r\n type: 'text',\r\n style: 'secondary',\r\n value: (name) ? name : '',\r\n });\r\n\r\n phoneInput = input.build({\r\n id: 'phoneInput',\r\n label: 'Phone',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [{ key: 'maxlength', value: '12' }],\r\n value: (phone) ? phone : '',\r\n });\r\n\r\n emailInput = input.build({\r\n id: 'emailInput',\r\n label: 'Email',\r\n type: 'text',\r\n style: 'secondary',\r\n value: (email) ? email : '',\r\n });\r\n\r\n // Save button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n saveEmployeeInfo()\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { CancleValidate() },\r\n });\r\n UPDATE_BTN = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n updatePathPopupBtn()\r\n },\r\n });\r\n\r\n const addEmployerBtn = button.build({\r\n text: '+ Add Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n const redirectInfo = {\r\n positionId: PositionId,\r\n empName: employerName,\r\n posName: positionName,\r\n consumersName: selectedConsumersName,\r\n consumersId: consumersID\r\n };\r\n if (!addEmployerBtn.classList.contains('disabled')) {\r\n addEditEmployers.buildEmployerPopUp({}, 'insert', 'employmentInfo', redirectInfo);\r\n }\r\n },\r\n });\r\n\r\n var LineBr = document.createElement('br');\r\n\r\n\r\n const messageHeading = document.createElement('b');\r\n messageHeading.classList.add('boldfont');\r\n messageHeading.style.marginTop = '1%';\r\n messageHeading.innerText = 'Path to Employment: '\r\n\r\n const message = document.createElement('p');\r\n if (employmentPath == '1')\r\n message.innerText = ' 1 - I have a job but would like a better one or to move up.';\r\n else if (employmentPath == '2')\r\n message.innerText = ' 2 - I want a job! I need help to find one.';\r\n else if (employmentPath == '3')\r\n message.innerText = \" 3 - I'm not sure about work. I need help to learn more.\";\r\n else if (employmentPath == '4')\r\n message.innerText = \" 4 - I don't think I want to work, but I may not know enough.\";\r\n else\r\n message.innerText = '';\r\n message.style.marginTop = '1%';\r\n message.style.marginLeft = '1%';\r\n var msgWrap = document.createElement('div');\r\n msgWrap.classList.add('employmentMsgWrap');\r\n\r\n msgWrap.appendChild(messageHeading);\r\n msgWrap.appendChild(message);\r\n\r\n if ($.session.EmploymentUpdate) {\r\n UPDATE_BTN.style.marginLeft = '1%';\r\n msgWrap.appendChild(UPDATE_BTN);\r\n }\r\n\r\n employeeInfoDiv.appendChild(msgWrap);\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Employment Information
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n const employerBtnWrap = document.createElement('div');\r\n employerBtnWrap.classList.add('employmentBtnWrap');\r\n employerDropdown.style.width = '80%';\r\n addEmployerBtn.style.width = '19%';\r\n if (!$.session.InsertEmployers) {\r\n addEmployerBtn.classList.add('disabled');\r\n }\r\n employerBtnWrap.appendChild(employerDropdown);\r\n employerBtnWrap.appendChild(addEmployerBtn);\r\n\r\n addNewCardBody.appendChild(employerBtnWrap);\r\n addNewCardBody.appendChild(positionDropdown);\r\n\r\n var dropWrap = document.createElement('div');\r\n dropWrap.classList.add('employmentDTWrap');\r\n jobStandingDropdown.classList.add('width27Per');\r\n dropWrap.appendChild(jobStandingDropdown);\r\n transportationDropdown.classList.add('width27Per');\r\n dropWrap.appendChild(transportationDropdown);\r\n positionStartDate.classList.add('width20Per');\r\n dropWrap.appendChild(positionStartDate);\r\n positionEndDate.classList.add('width20Per');\r\n dropWrap.appendChild(positionEndDate);\r\n addNewCardBody.appendChild(dropWrap);\r\n\r\n var drWrap = document.createElement('div');\r\n drWrap.classList.add('employmentDTWrap');\r\n typeOfWorkDropdown.classList.add('width39Per');\r\n drWrap.appendChild(typeOfWorkDropdown);\r\n isSelfEmployed.classList.add('width22Per');\r\n drWrap.appendChild(isSelfEmployed);\r\n typeOfEmploymentDropdown.classList.add('width38Per');\r\n drWrap.appendChild(typeOfEmploymentDropdown);\r\n addNewCardBody.appendChild(drWrap);\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Supervisor Information'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n addNewCardBody.appendChild(consumerNameDisplay);\r\n addNewCardBody.appendChild(LineBr);\r\n addNewCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('employmentDTWrap');\r\n nameInput.classList.add('width30Per');\r\n infoWrap.appendChild(nameInput);\r\n phoneInput.classList.add('width32Per');\r\n infoWrap.appendChild(phoneInput);\r\n emailInput.classList.add('width32Per');\r\n infoWrap.appendChild(emailInput);\r\n addNewCardBody.appendChild(infoWrap);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('employmentBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n if ($.session.EmploymentUpdate) {\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n }\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n eventListeners();\r\n populateDropdowns();\r\n enableDisabledInputs();\r\n employeeInfoDiv.appendChild(column1);\r\n checkRequiredFieldsOfEmployeeInfo(startDatePosition, position, employer, jobStanding, endDatePosition);\r\n\r\n return employeeInfoDiv;\r\n }\r\n\r\n function enableDisabledInputs() {\r\n if ($.session.EmploymentUpdate) {\r\n positionStartDate.classList.remove('disabled');\r\n positionEndDate.classList.remove('disabled');\r\n positionDropdown.classList.remove('disabled');\r\n jobStandingDropdown.classList.remove('disabled');\r\n employerDropdown.classList.remove('disabled');\r\n transportationDropdown.classList.remove('disabled');\r\n typeOfWorkDropdown.classList.remove('disabled');\r\n typeOfEmploymentDropdown.classList.remove('disabled');\r\n isSelfEmployed.classList.remove('disabled');\r\n nameInput.classList.remove('disabled');\r\n phoneInput.classList.remove('disabled');\r\n emailInput.classList.remove('disabled');\r\n UPDATE_BTN.classList.remove('disabled');\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n else {\r\n positionStartDate.classList.add('disabled');\r\n positionEndDate.classList.add('disabled');\r\n positionDropdown.classList.add('disabled');\r\n jobStandingDropdown.classList.add('disabled');\r\n employerDropdown.classList.add('disabled');\r\n transportationDropdown.classList.add('disabled');\r\n typeOfWorkDropdown.classList.add('disabled');\r\n typeOfEmploymentDropdown.classList.add('disabled');\r\n isSelfEmployed.classList.add('disabled');\r\n nameInput.classList.add('disabled');\r\n phoneInput.classList.add('disabled');\r\n emailInput.classList.add('disabled');\r\n UPDATE_BTN.classList.add('disabled');\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n\r\n }\r\n\r\n function getRequiredFieldsOfEmployeeInfo() {\r\n var startDate = positionStartDate.querySelector('#positionStartDate');\r\n var endDate = positionEndDate.querySelector('#positionEndDate');\r\n var position = positionDropdown.querySelector('#positionDropdown');\r\n var employer = employerDropdown.querySelector('#employerDropdown');\r\n var jobStanding = jobStandingDropdown.querySelector('#jobStandingDropdown');\r\n checkRequiredFieldsOfEmployeeInfo(startDate.value, position.value, employer.value, jobStanding.value, endDate.value)\r\n }\r\n\r\n function checkRequiredFieldsOfEmployeeInfo(startDate, position, employer, jobStanding, endDate) {\r\n if (startDate === '' || (endDate != '' && startDate > endDate)) {\r\n positionStartDate.classList.add('error');\r\n } else {\r\n positionStartDate.classList.remove('error');\r\n }\r\n\r\n if (position === '') {\r\n positionDropdown.classList.add('error');\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n }\r\n\r\n if (employer === '') {\r\n employerDropdown.classList.add('error');\r\n } else {\r\n employerDropdown.classList.remove('error');\r\n }\r\n\r\n if (jobStanding === '') {\r\n jobStandingDropdown.classList.add('error');\r\n } else {\r\n jobStandingDropdown.classList.remove('error');\r\n }\r\n setBtnStatusOfEmployeeInfo();\r\n }\r\n\r\n function setBtnStatusOfEmployeeInfo() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n BACK_BTN.classList.remove('disabled');\r\n return;\r\n } else {\r\n if (tempstartDatePosition != '' || tempendDatePosition != '' || tempposition != '' || tempjobStanding != '' || tempemployer != '' || temptransportation != '' || temptypeOfWork != '' || tempselfEmployed != '' || tempname != '' || tempphone != '' || tempemail != '' || temptypeOfEmployment != '') {\r\n SAVE_BTN.classList.remove('disabled');\r\n BACK_BTN.classList.add('disabled');\r\n }\r\n else {\r\n SAVE_BTN.classList.add('disabled');\r\n BACK_BTN.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n function eventListeners() {\r\n positionStartDate.addEventListener('input', event => {\r\n startDatePosition = event.target.value;\r\n tempstartDatePosition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n positionEndDate.addEventListener('input', event => {\r\n endDatePosition = event.target.value;\r\n tempendDatePosition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n position = selectedConsumerOption.id;\r\n positionName = selectedConsumerOption.text;\r\n tempposition = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n jobStandingDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n jobStanding = selectedConsumerOption.id;\r\n tempjobStanding = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n employerDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n employer = selectedConsumerOption.id;\r\n employerName = selectedConsumerOption.text;\r\n tempemployer = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n transportationDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n transportation = selectedConsumerOption.id;\r\n temptransportation = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n typeOfWorkDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n typeOfWork = selectedConsumerOption.id;\r\n temptypeOfWork = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n typeOfEmploymentDropdown.addEventListener('change', event => {\r\n var selectedConsumerOption = event.target.options[event.target.selectedIndex];\r\n typeOfEmployment = selectedConsumerOption.id;\r\n temptypeOfEmployment = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n isSelfEmployed.addEventListener('change', event => {\r\n selfEmployed = event.target.checked == true ? 'Y' : 'N';\r\n tempselfEmployed = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n name = event.target.value;\r\n tempname = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n phoneInput.addEventListener('input', event => {\r\n phone = event.target.value;\r\n tempphone = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n emailInput.addEventListener('input', event => {\r\n email = event.target.value;\r\n tempemail = 'ChangeValue';\r\n getRequiredFieldsOfEmployeeInfo();\r\n });\r\n }\r\n\r\n async function populateDropdowns() {\r\n const {\r\n getPositionDropDownResult: Positions,\r\n } = await EmploymentAjax.getPositionDropDownAsync();\r\n let positionsData = Positions.map((positions) => ({\r\n id: positions.positionId,\r\n value: positions.positionId,\r\n text: positions.positionName\r\n }));\r\n positionsData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"positionDropdown\", positionsData, position);\r\n\r\n const {\r\n getEmployerDropDownResult: Employer,\r\n } = await EmploymentAjax.getEmployerDropDownAsync();\r\n let data = Employer.map((employer) => ({\r\n id: employer.employerId,\r\n value: employer.employerId,\r\n text: employer.employerName\r\n }));\r\n data.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"employerDropdown\", data, employer);\r\n\r\n const {\r\n getJobStandingsDropDownResult: JobStanding,\r\n } = await EmploymentAjax.getJobStandingsDropDownAsync();\r\n let jobStandingData = JobStanding.map((jobStanding) => ({\r\n id: jobStanding.jobStandingId,\r\n value: jobStanding.jobStandingId,\r\n text: jobStanding.jobStandingName\r\n }));\r\n jobStandingData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"jobStandingDropdown\", jobStandingData, jobStanding);\r\n\r\n const {\r\n getTransportationDropDownResult: Transportation,\r\n } = await EmploymentAjax.getTransportationDropDownAsync();\r\n let transportationData = Transportation.map((transportation) => ({\r\n id: transportation.transportationId,\r\n value: transportation.transportationId,\r\n text: transportation.transportationName\r\n }));\r\n transportationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"transportationDropdown\", transportationData, transportation);\r\n\r\n const {\r\n getTypeOfWorkDropDownResult: TypeOfWork,\r\n } = await EmploymentAjax.getTypeOfWorkDropDownAsync();\r\n let typeOfWorkData = TypeOfWork.map((typeOfWorks) => ({\r\n id: typeOfWorks.typeOfWorkId,\r\n value: typeOfWorks.typeOfWorkId,\r\n text: typeOfWorks.typeOfWorkName\r\n }));\r\n typeOfWorkData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeOfWorkDropdown\", typeOfWorkData, typeOfWork);\r\n\r\n const {\r\n getTypeOfEmploymentDropDownResult: TypeOfEmployment,\r\n } = await EmploymentAjax.getTypeOfEmploymentDropDownAsync();\r\n let typeOfEmploymentData = TypeOfEmployment.map((typeOfEmployments) => ({\r\n id: typeOfEmployments.typeOfWorkId,\r\n value: typeOfEmployments.typeOfWorkId,\r\n text: typeOfEmployments.typeOfWorkName\r\n }));\r\n typeOfEmploymentData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"typeOfEmploymentDropdown\", typeOfEmploymentData, typeOfEmployment);\r\n\r\n\r\n }\r\n\r\n\r\n function updatePathPopupBtn() {\r\n employmentPath = '';\r\n currentEndDate = existingEndDate;\r\n newStartDate = '';\r\n newEndDate = '';\r\n\r\n updatePathPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n\r\n const heading = document.createElement('h2');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n heading.innerText = 'Update Path to Employment';\r\n\r\n // dropdowns & inputs\r\n currentPathEndDate = input.build({\r\n id: 'currentPathEndDate',\r\n type: 'date',\r\n label: 'Current Path End Date',\r\n style: 'secondary',\r\n value: currentEndDate,\r\n });\r\n\r\n newPathEmploymentDropdown = dropdown.build({\r\n id: 'newPathEmploymentDropdown',\r\n label: \"New Path to Employment\",\r\n dropdownId: \"newPathEmploymentDropdown\",\r\n });\r\n\r\n newPathStartDate = input.build({\r\n id: 'newPathStartDate',\r\n type: 'date',\r\n label: 'New Path Start Date',\r\n style: 'secondary',\r\n value: newStartDate,\r\n });\r\n\r\n newPathEndDate = input.build({\r\n id: 'newPathEndDate',\r\n type: 'date',\r\n label: 'New Path End Date',\r\n style: 'secondary',\r\n value: newEndDate,\r\n });\r\n\r\n APPLY_BTN = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n APPLY_BTN.classList.add('disabled');\r\n saveNewPathPopup();\r\n }\r\n }\r\n });\r\n\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n updatePathPopup.appendChild(heading);\r\n updatePathPopup.appendChild(currentPathEndDate);\r\n\r\n updatePathPopup.appendChild(newPathEmploymentDropdown);\r\n updatePathPopup.appendChild(newPathStartDate);\r\n updatePathPopup.appendChild(newPathEndDate);\r\n\r\n var confirmMessage = document.createElement('div');\r\n confirmMessage.innerHTML = `

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

    ${selectedConsumersName}

    `;\r\n headingName.innerHTML = `

    ${Name} - ${PositionName}

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

    ${'Benefits'}

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

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

    Day(s) Of Week

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

    `;\r\n addWorkSchedulePopup.appendChild(confirmMessage);\r\n\r\n var popupbtnWrap = document.createElement('div');\r\n popupbtnWrap.classList.add('btnWrap');\r\n if ($.session.EmploymentUpdate) {\r\n popupbtnWrap.appendChild(APPLY_BTN);\r\n }\r\n popupbtnWrap.appendChild(CANCEL_BTN);\r\n addWorkSchedulePopup.appendChild(popupbtnWrap);\r\n\r\n POPUP.show(addWorkSchedulePopup);\r\n PopupEventListeners();\r\n populateWeekDaysDropdown();\r\n checkRequiredFieldsOfPopup();\r\n }\r\n\r\n function PopupEventListeners() {\r\n dayOfWeekDropdown.addEventListener('change', event => {\r\n dayOfWeek = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n NewStartTime.addEventListener('change', event => {\r\n startTime = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n NewEndTime.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkRequiredFieldsOfPopup();\r\n });\r\n\r\n APPLY_BTN.addEventListener('click', () => {\r\n if (!APPLY_BTN.classList.contains('disabled')) {\r\n saveNewWagesPopup();\r\n }\r\n });\r\n\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(addWorkSchedulePopup);\r\n });\r\n }\r\n\r\n function checkRequiredFieldsOfPopup() {\r\n var weekDay = dayOfWeekDropdown.querySelector('#dayOfWeekDropdown');\r\n var timeEnd = NewEndTime.querySelector('#NewEndTime');\r\n var timeStart = NewStartTime.querySelector('#NewStartTime');\r\n\r\n if (nameOfEvent == 'Add') {\r\n var sundaychk = sundaychkBox.querySelector('#sundaychkBox');\r\n var mondaychk = mondaychkBox.querySelector('#mondaychkBox');\r\n var tuesdaychk = tuesdaychkBox.querySelector('#tuesdaychkBox');\r\n var wednesdaychk = wednesdaychkBox.querySelector('#wednesdaychkBox');\r\n var thursdaychk = thursdaychkBox.querySelector('#thursdaychkBox');\r\n var fridaychk = fridaychkBox.querySelector('#fridaychkBox');\r\n var saturdaychk = saturdaychkBox.querySelector('#saturdaychkBox');\r\n\r\n var chklable = document.getElementById('checkboxlable');\r\n\r\n if (!sundaychk.checked && !mondaychk.checked && !tuesdaychk.checked && !wednesdaychk.checked && !thursdaychk.checked && !fridaychk.checked && !saturdaychk.checked) {\r\n chklable.classList.add('errorPopup');\r\n chklable.classList.add('password-error');\r\n }\r\n else {\r\n chklable.classList.remove('errorPopup');\r\n chklable.classList.remove('password-error');\r\n }\r\n } else if (nameOfEvent == 'Edit') {\r\n if (dayOfWeek === '') {\r\n dayOfWeekDropdown.classList.add('errorPopup');\r\n } else {\r\n dayOfWeekDropdown.classList.remove('errorPopup');\r\n }\r\n }\r\n else {\r\n if (weekDay.value === '') {\r\n dayOfWeekDropdown.classList.add('errorPopup');\r\n } else {\r\n dayOfWeekDropdown.classList.remove('errorPopup');\r\n }\r\n\r\n }\r\n\r\n if (timeEnd.value === '' || timeStart.value > timeEnd.value) {\r\n NewEndTime.classList.add('errorPopup');\r\n } else {\r\n NewEndTime.classList.remove('errorPopup');\r\n }\r\n\r\n if (timeStart.value === '') {\r\n NewStartTime.classList.add('errorPopup');\r\n } else {\r\n NewStartTime.classList.remove('errorPopup');\r\n }\r\n\r\n setBtnStatusOfPopup();\r\n }\r\n\r\n function setBtnStatusOfPopup() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.errorPopup'));\r\n if (hasErrors.length !== 0) {\r\n APPLY_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n APPLY_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n function populateWeekDaysDropdown() {\r\n const dayOfWeekDropdownData = ([\r\n { id: 1, value: 1, text: 'Sunday' },\r\n { id: 2, value: 2, text: 'Monday' },\r\n { id: 3, value: 3, text: 'Tuesday' },\r\n { id: 4, value: 4, text: 'Wednesday' },\r\n { id: 5, value: 5, text: 'Thursday' },\r\n { id: 6, value: 6, text: 'Friday' },\r\n { id: 7, value: 7, text: 'Saturday' },\r\n\r\n ]);\r\n dayOfWeekDropdownData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"dayOfWeekDropdown\", dayOfWeekDropdownData, dayOfWeek);\r\n }\r\n\r\n\r\n async function saveNewWagesPopup() {\r\n weekDaysSelection = [];\r\n if (nameOfEvent == 'Add') {\r\n if (sundaychkBox.querySelector('#sundaychkBox').checked) weekDaysSelection.push(1)\r\n if (mondaychkBox.querySelector('#mondaychkBox').checked) weekDaysSelection.push(2)\r\n if (tuesdaychkBox.querySelector('#tuesdaychkBox').checked) weekDaysSelection.push(3)\r\n if (wednesdaychkBox.querySelector('#wednesdaychkBox').checked) weekDaysSelection.push(4)\r\n if (thursdaychkBox.querySelector('#thursdaychkBox').checked) weekDaysSelection.push(5)\r\n if (fridaychkBox.querySelector('#fridaychkBox').checked) weekDaysSelection.push(6)\r\n if (saturdaychkBox.querySelector('#saturdaychkBox').checked) weekDaysSelection.push(7)\r\n } else if (nameOfEvent == 'Edit') {\r\n weekDaysSelection.push(dayOfWeek)\r\n } else {\r\n weekDaysSelection.push(dayOfWeek)\r\n WorkScheduleID = 0;\r\n }\r\n\r\n const result = await EmploymentAjax.insertWorkScheduleAsync(weekDaysSelection, startTime, endTime, PositionId, WorkScheduleID, $.session.UserId);\r\n const { insertWorkScheduleResult } = result;\r\n\r\n var messagetext = document.getElementById('confirmMessage');\r\n messagetext.innerHTML = ``;\r\n if (insertWorkScheduleResult.WorkScheduleId == '-1') {\r\n messagetext.innerHTML = 'This record overlaps with an existing record. Changes cannot be saved.';\r\n messagetext.classList.add('password-error');\r\n }\r\n else {\r\n NewEmployment.refreshEmployment(PositionId, name, positionName, selectedConsumersName, consumersID, tabPositionIndex = 3);\r\n POPUP.hide(addWorkSchedulePopup);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n buildNewWorkScheduleForm,\r\n getMarkup,\r\n };\r\n})(); ","const esignatures = (function () {\r\n let questions;\r\n let submitBtn;\r\n let esignerData = {};\r\n let formData = {};\r\n\r\n function generateReportDownload(tempUserId) {\r\n esignaturesAjax.downloadReportAfterSigning({ tempUserId },\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\r\n async function displayFormPopup(tempUserId) {\r\n const testDiv = document.createElement('div');\r\n testDiv.classList.add('test');\r\n testDiv.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 const 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 const 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 buildStandardQuestionSet() {\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: '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 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 \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 (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 = '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 (esignerData.teamMemberType === 'Parent/Guardian' || esignerData.teamMemberType === 'Parent' || esignerData.teamMemberType === 'Guardian' || esignerData.teamMemberType === 'Person Supported') {\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.addEventListener('input', function (event) {\r\n validateForm();\r\n signatureDisplay.textContent = event.target.value;\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 testDiv.appendChild(popup);\r\n document.body.appendChild(testDiv);\r\n //document.body.appendChild(popup);\r\n\r\n popup.style.display = 'block';\r\n\r\n esignaturesAjax.openESignaturesPDFEditor(tempUserId);\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 displayFormPopup(tempUserId);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var esignaturesAjax = (function () { \r\n \r\n function openESignaturesPDFEditor(tempUserId, formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName) {\r\n const token = $.session.token;\r\n const planAttachmentIds = [];\r\n const wfAttachmentIds = [];\r\n const sigAttachmentIds = [];\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openESignaturesEditor/',\r\n data: '{\"tempUserId\":\"' + tempUserId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n \r\n\r\n var arr = response.openESignaturesEditorResult;\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: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.FitMode;\r\n instance.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.disableElements(['ribbons']);\r\n \r\n const { docViewer, annotManager } = instance;\r\n \r\n instance.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 \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.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.disableElements(['toolsHeader']);\r\n \r\n docViewer.on('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 }\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 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 }) ();","const forms = (function () {\r\n var defaultval;\r\n let displayfromBLOBBtn;\r\n let documntId;\r\n let landingPage;\r\n let overviewTable;\r\n let newFormBtn;\r\n let selectedConsumer;\r\n let isFormLocked;\r\n\r\n // values for selectTemplatePopup\r\n let templateId;\r\n let templateDropdown;\r\n let doneBtn;\r\n\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n selectedConsumer = roster2.getActiveConsumers()[0];\r\n await loadPDFFormsLanding();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n // Build Forms Module Landing Page\r\n async function loadPDFFormsLanding() {\r\n DOM.clearActionCenter();\r\n\r\n landingPage = document.createElement('div');\r\n landingPage.classList.add('planLandingPage');\r\n\r\n const consumerCard = buildConsumerCard();\r\n newFormBtn = buildNewFormBtn();\r\n\r\n let filterValues = { formsConsumer: selectedConsumer.id };\r\n reportsBtn = generateReports.createMainReportButton([\r\n { text: 'Form Listing - By Consumer', filterValues },\r\n ]);\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('newFormAndReportBtns');\r\n\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(btnWrap);\r\n btnWrap.appendChild(newFormBtn);\r\n btnWrap.appendChild(reportsBtn);\r\n\r\n overviewTable = await buildOverviewTable();\r\n landingPage.appendChild(overviewTable);\r\n\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // Build User's table of Forms on the Landing Page\r\n async function buildOverviewTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'consumerFormsTable',\r\n columnHeadings: ['', 'Type', 'Completion', 'Last Updated', 'User Updated'],\r\n endIcon: true,\r\n };\r\n\r\n // FAKE DATA : build table data\r\n // const tableData = [{ values : ['Test', '03/01/2021'], endIcon : `${icons['delete']}`}, {values : ['Test2', '04/01/2021'], endIcon : `${icons['delete']}` }];\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n const { getconsumerFormsResult: consumerForms } = await formsAjax.getconsumerFormsAsync(\r\n $.session.UserId,\r\n selectedConsumer.id,\r\n hasAssignedFormTypes,\r\n );\r\n // format the Completion Dates\r\n consumerForms.forEach(function (consumerForm) {\r\n let newDate = new Date(consumerForm.formCompleteDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatCompleteDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n consumerForm.formCompleteDate = formatCompleteDate;\r\n });\r\n\r\n let tableData = consumerForms.map(consumerForm => ({\r\n values: [\r\n `${icons['PDFForm']}`,\r\n consumerForm.formType + ' -- ' + consumerForm.formDescription,\r\n consumerForm.formCompleteDate,\r\n consumerForm.formLastUpdated,\r\n consumerForm.formUserUpdated,\r\n ],\r\n endIcon: $.session.formsDelete || $.session.formsUpdate ? `${icons['edit']}` : null,\r\n id: consumerForm.formId,\r\n attributes: [{ key: 'data-form-id', value: consumerForm.formId }],\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n try {\r\n let tableRow = document.getElementById(consumerForm.formId);\r\n formEditPopup(consumerForm.formId, consumerForm.formCompleteDate, tableRow);\r\n // deleteConfirmation(consumerForm.formId, tableRow);\r\n return;\r\n } catch (err) {\r\n console.error('error: ', err);\r\n }\r\n },\r\n onClick: () => {\r\n let isTemplate = '0';\r\n let documentEdited = '1'; // document previously edited\r\n let consumerId = selectedConsumer.id;\r\n let isRefresh = false;\r\n let formId = consumerForm.formId;\r\n let formCompleteDate = consumerForm.formCompleteDate;\r\n\r\n displayFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n );\r\n },\r\n }));\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildNewFormBtn() {\r\n return button.build({\r\n text: 'Add New Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.formsInsert ? ['disabled'] : ['newPlanBtn'],\r\n callback: () => createTemplatePopUp(),\r\n });\r\n }\r\n\r\n // Build/Display Popup Window for selecting a Form template from a DDL\r\n function createTemplatePopUp() {\r\n let selectTemplatePopup = POPUP.build({\r\n header: 'Template Select',\r\n hideX: true,\r\n id: 'selectTemplatePopup',\r\n });\r\n\r\n templateDropdown = dropdown.build({\r\n label: 'Form Templates',\r\n dropdownId: 'templateDropdown',\r\n });\r\n\r\n let newDate = new Date();\r\n let theMonth = newDate.getMonth() + 1;\r\n let formCompleteDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n\r\n let thisCompleteDate = newDate;\r\n\r\n let completeDateInput = input.build({\r\n type: 'date',\r\n label: 'Completion Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(formCompleteDate.split(' ')[0]),\r\n // readonly: true,\r\n });\r\n\r\n completeDateInput.addEventListener('change', event => {\r\n thisCompleteDate = event.target.value;\r\n // validation of completeDateInput\r\n if (thisCompleteDate === '') {\r\n completeDateInput.classList.add('error');\r\n } else {\r\n completeDateInput.classList.remove('error');\r\n }\r\n setBtnStatus();\r\n });\r\n\r\n doneBtn = button.build({\r\n id: 'wfStepDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => templatePopupDoneBtn(thisCompleteDate),\r\n });\r\n this.doneButton = doneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'wfStepCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => templatePopupCancelBtn(),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectTemplatePopup.appendChild(templateDropdown);\r\n selectTemplatePopup.appendChild(completeDateInput);\r\n selectTemplatePopup.appendChild(btnWrap);\r\n\r\n populateDropdown();\r\n\r\n // validation of templateDropdown\r\n templateId = templateDropdown.value;\r\n if (templateId === '' || templateId === undefined) {\r\n templateDropdown.classList.add('error');\r\n } else templateDropdown.classList.remove('error');\r\n\r\n templateDropdown.addEventListener('change', e => {\r\n templateId = e.target.value;\r\n templateDropdownValidation();\r\n setBtnStatus();\r\n });\r\n\r\n POPUP.show(selectTemplatePopup);\r\n setBtnStatus();\r\n }\r\n\r\n function templateDropdownValidation() {\r\n var templateDropdownOptions = document.getElementById('templateDropdown');\r\n templateId = templateDropdownOptions.options[templateDropdownOptions.selectedIndex].value;\r\n if (templateId === '') {\r\n templateDropdown.classList.add('error');\r\n return;\r\n } else {\r\n templateDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n\r\n if (hasErrors.length !== 0) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Template Form Popup Window\r\n function templatePopupDoneBtn(completeDate) {\r\n POPUP.hide(selectTemplatePopup);\r\n let isTemplate = '1';\r\n let documentEdited = '0'; // document not previously edited\r\n let consumerId = selectedConsumer.id;\r\n let isRefresh = false;\r\n let formId = templateId;\r\n\r\n forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate, completeDate);\r\n }\r\n\r\n // Event for Cancel BTN on the Template Form Popup Window\r\n function templatePopupCancelBtn() {\r\n POPUP.hide(selectTemplatePopup);\r\n }\r\n\r\n // Populate the DDL on the Template Form Popup Window\r\n async function populateDropdown() {\r\n let hasAssignedFormTypes = $.session.formsFormtype ? '1' : '0';\r\n const { getUserFormTemplatesResult: templates } = await formsAjax.getUserFormTemplatesAsync(\r\n $.session.UserId,\r\n hasAssignedFormTypes,\r\n );\r\n\r\n // Array to store unique template objects\r\n const uniqueForms = [];\r\n\r\n // Iterate over the templates array\r\n templates.forEach(template => {\r\n // Check if the formTemplateId already exists in uniqueForms\r\n const exists = uniqueForms.some(form => form.formTemplateId === template.formTemplateId);\r\n // If not, add the template to uniqueForms\r\n if (!exists) {\r\n uniqueForms.push(template);\r\n }\r\n });\r\n\r\n // Prepare data for dropdown\r\n const data = uniqueForms.map(template => ({\r\n id: template.formTemplateId,\r\n value: template.formTemplateId,\r\n text: template.formType + ' -- ' + template.formDescription,\r\n }));\r\n\r\n data.unshift({ id: null, value: '', text: '' }); // Add blank value\r\n dropdown.populate('templateDropdown', data);\r\n}\r\n\r\n\r\n async function displayFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n ) {\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n POPUP.show(formPopup);\r\n\r\n // If the form is new, skip the forms lock check\r\n if (isTemplate !== '1') {\r\n const checkFormsLockValue = await formsAjax.checkFormsLock(formId, $.session.UserId);\r\n\r\n // if the forms lock value returns a non empty string, display the forms lock popup\r\n if (checkFormsLockValue !== '') {\r\n isFormLocked = true;\r\n\r\n const popup = POPUP.build({\r\n id: 'formLocksPopup',\r\n classNames: 'warning',\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `This form is currently locked by ${checkFormsLockValue}. Any changes you make to this form will not be saved.`;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n }\r\n\r\n formsAjax.openFormEditor(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n $.session.applicationName,\r\n formCompleteDate,\r\n isFormLocked,\r\n );\r\n isFormLocked = false;\r\n }\r\n\r\n async function displayStepFormPopup(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n formCompleteDate,\r\n stepId,\r\n docOrder,\r\n formName,\r\n ) {\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n POPUP.show(formPopup);\r\n\r\n // If the form is new, skip the forms lock check\r\n if (isTemplate !== '1') {\r\n const checkFormsLockValue = await formsAjax.checkFormsLock(formId, $.session.UserId);\r\n\r\n // if the forms lock value returns a non empty string, display the forms lock popup\r\n if (checkFormsLockValue !== '') {\r\n isFormLocked = true;\r\n\r\n const popup = POPUP.build({\r\n id: 'formLocksPopup',\r\n classNames: 'warning',\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(okBtn);\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `This form is currently locked by ${checkFormsLockValue}. Any changes you make to this form will not be saved.`;\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n }\r\n\r\n formsAjax.openStepFormEditor(\r\n formId,\r\n documentEdited,\r\n consumerId,\r\n isRefresh,\r\n isTemplate,\r\n $.session.applicationName,\r\n formCompleteDate,\r\n isFormLocked,\r\n stepId,\r\n docOrder,\r\n formName,\r\n );\r\n isFormLocked = false;\r\n }\r\n\r\n function displayWFStepFormPopup(\r\n templateId,\r\n templateName,\r\n stepId,\r\n docOrder,\r\n isTemplate,\r\n documntEdited,\r\n consumerId,\r\n ) {\r\n isTemplate ? (documntId = 0) : (documntId = templateId);\r\n\r\n var displayfromBLOBBtn = button.build({\r\n text: 'Display Selected Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n //formsAjax.openEditor(templateId, false);\r\n // alert(\"Hi there.\");\r\n },\r\n });\r\n\r\n let formPopup = POPUP.build({\r\n header: '',\r\n hideX: true,\r\n id: 'formPopup',\r\n });\r\n\r\n const viewer = document.createElement('div');\r\n\r\n var viewerWrap = document.createElement('div');\r\n viewerWrap.style = 'width: 1300px; height: 600px; margin: 0;';\r\n viewerWrap.id = 'viewer';\r\n\r\n viewer.appendChild(viewerWrap);\r\n\r\n formPopup.appendChild(viewer);\r\n\r\n // Display the window that the Form will populate using either openEditor/openPDFEditor\r\n POPUP.show(formPopup);\r\n\r\n if (isTemplate) {\r\n formsAjax.openEditor(templateId, templateName, consumerId, stepId, docOrder);\r\n } else {\r\n let isRefresh = false;\r\n formsAjax.openPDFEditor(documntId, documntEdited, consumerId, isRefresh);\r\n }\r\n // isTemplate ? formsAjax.openEditor(templateId, templateName) : formsAjax.openPDFEditor(documntId);\r\n }\r\n\r\n function deleteConfirmation(formId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n //\tPOPUP.hide(formeditpopup);\r\n let result = await formsAjax.deleteConsumerFormAsync(formId);\r\n if (result.deleteConsumerFormResult === '1') {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this form?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function formEditPopup(formId, formCompleteDate, tableRow) {\r\n const formeditpopup = POPUP.build({\r\n id: 'formeditpopup',\r\n classNames: 'miniform',\r\n hideX: true,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n let thisCompleteDate = formCompleteDate;\r\n\r\n let completeDateInput = input.build({\r\n type: 'date',\r\n label: 'Completion Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(formCompleteDate.split(' ')[0]),\r\n // readonly: true,\r\n });\r\n\r\n completeDateInput.addEventListener('change', event => {\r\n thisCompleteDate = event.target.value;\r\n // validation of completeDateInput\r\n if (thisCompleteDate === '') {\r\n completeDateInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n completeDateInput.classList.remove('error');\r\n if ($.session.formsUpdate) saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n var saveBtn = button.build({\r\n text: 'Save Completion Date',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function () {\r\n await formsAjax.updateConsumerFormCompletionDateAsync(formId, thisCompleteDate);\r\n POPUP.hide(formeditpopup);\r\n // POPUP.hide(formPopup);\r\n forms.loadPDFFormsLanding();\r\n // overlay.show();\r\n },\r\n });\r\n\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(formeditpopup);\r\n // overlay.show();\r\n },\r\n });\r\n\r\n var deleteBtn = button.build({\r\n text: 'Delete Form',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(formeditpopup);\r\n deleteConfirmation(formId, tableRow);\r\n // overlay.show();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Update Completion Date?';\r\n formeditpopup.appendChild(completeDateInput);\r\n formeditpopup.appendChild(warningMessage);\r\n formeditpopup.appendChild(btnWrap);\r\n // formeditpopup.appendChild(deleteBtn);\r\n\r\n if (!$.session.formsUpdate) {\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if (!$.session.formsDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n\r\n POPUP.show(formeditpopup);\r\n }\r\n\r\n function init() {\r\n //DOM.clearActionCenter();\r\n // PROGRESS.SPINNER.show('Loading PDF Forms...');\r\n //loadPDFFormsLanding();\r\n setActiveModuleAttribute('forms');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n loadPDFFormsLanding,\r\n displayWFStepFormPopup,\r\n displayFormPopup,\r\n displayStepFormPopup,\r\n handleActionNavEvent,\r\n };\r\n})();\r\n","var formsAjax = (function () {\r\n \r\n function openEditor(templateId, templateName, consumerId, stepId, docOrder) {\r\n \r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/openEditor/',\r\n data: '{\"templateId\":\"' + templateId + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var arr = response.openEditorResult;\r\n \r\n WebViewer({\r\n path: './WebViewer/lib', // path to the PDFTron 'lib' folder on your server\r\n // licenseKey: 'Marshall Information Services, LLC(primarysolutions.net):OEM:Advisor/Anywhere;Gatekeeper/Anywhere::B+:AMS(20220512):A8A5354D0437C60A7360B13AC9A2537860614FABB956CD3BD5343BC2C76C38C054C2BEF5C7',\r\n licenseKey: 'Marshall Information Services, LLC (primarysolutions.net):OEM:Gatekeeper/Anywhere, Advisor/Anywhere::B+:AMS(20240512):99A5375D0437C60A0360B13AC9A2537860613FAD9766CD3BD5343BC2C76C38C054C2BEF5C7',\r\n documentType: 'pdf',\r\n // initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',\r\n // initialDoc: 'test.pdf', // You can also use documents on your server\r\n }, document.getElementById('viewer'))\r\n .then(instance => {\r\n console.log('success with S3 file');\r\n var FitMode = instance.FitMode;\r\n instance.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.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, annotManager } = instance;\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.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-annotation-status-accepted',\r\n img: 'icon-tool-pen-fill',\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.loadDocument(blob, { filename: templateName + '.pdf'});\r\n instance.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.on('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.FitMode;\r\n instance.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n \r\n const { docViewer, annotManager } = instance;\r\n \r\n instance.setHeaderItems(header => {\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-annotation-status-accepted',\r\n img: 'icon-tool-pen-fill',\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: 'icon-tool-stamp-fill',\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.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.disableElements(['toolsHeader']);\r\n \r\n docViewer.on('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 },\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.FitMode;\r\n instance.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n \r\n const { docViewer, annotManager } = instance;\r\n \r\n instance.setHeaderItems(header => {\r\n if ($.session.formsUpdate) { \r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-annotation-status-accepted',\r\n img: 'icon-tool-pen-fill',\r\n title: 'Save Current Data',\r\n onClick: async () => {\r\n\r\n try{\r\n if (isFormLocked) {\r\n throw new Error();\r\n }\r\n \r\n let formID;\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n }); \r\n \r\n // let documentEdited = \"1\"; // documentEdited = T \r\n // insertConsumerFormAsync\r\n if (documentEdited === \"1\") {\r\n const result = await formsAjax.updateConsumerFormAsync(formId, data, documentEdited); \r\n const {updateConsumerFormResult: {formID}} = result;\r\n\r\n } else {\r\n const result = await formsAjax.insertConsumerFormAsync($.session.UserId, consumerId, formId, data, formCompleteDate); \r\n const {insertConsumerFormResult} = result;\r\n formID = insertConsumerFormResult.formId;\r\n\r\n overlay.hide();\r\n forms.loadPDFFormsLanding();\r\n }\r\n\r\n alert('Document has been saved.');\r\n\r\n } catch(e) { \r\n if(e) {\r\n alert('Cannot save while document is locked. Document NOT saved.')\r\n } else {\r\n //\r\n alert('This PDF document format does not allow saving. Document NOT saved.');\r\n // POPUP.hide(formPopup);\r\n } \r\n }\r\n\r\n }\r\n }); // push\r\n } //if\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n img: 'icon-close',\r\n title: 'Close Window',\r\n onClick: async () => {\r\n // let PDFForm = document.getElementById('formPopup');\r\n //POPUP.hide(formPopup);\r\n if ($.session.formsUpdate) { \r\n closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n removeFormsLock(formId, consumerId);\r\n } else {\r\n POPUP.hide(formPopup);\r\n removeFormsLock(formId, consumerId);\r\n }\r\n \r\n }\r\n }); \r\n \r\n if (isTemplate == \"0\" && $.session.formsUpdate == true) {\r\n\r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-chevron-down',\r\n img: 'icon-tool-stamp-fill',\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.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.disableElements(['toolsHeader']);\r\n \r\n docViewer.on('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.FitMode;\r\n instance.setFitMode(FitMode.FitWidth);\r\n // hide the ribbons\r\n instance.disableElements(['ribbons']);\r\n // instance.disableFeatures([instance.Feature.Download]);\r\n \r\n const { docViewer, annotManager } = instance;\r\n \r\n instance.setHeaderItems(header => {\r\n if ($.session.formsUpdate) { \r\n header.push({\r\n type: 'actionButton',\r\n // img: '../../../../images/new-icons/default.png',\r\n // img: 'icon-annotation-status-accepted',\r\n img: 'icon-tool-pen-fill',\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: 'icon-tool-stamp-fill',\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.loadDocument(blob, { filename: 'myfile.pdf'});\r\n instance.disableElements(['toolsHeader']);\r\n \r\n docViewer.on('documentLoaded', async () => {\r\n try {\r\n\r\n const doc = docViewer.getDocument();\r\n const xfdfString = await annotManager.exportAnnotations();\r\n \r\n const data = await doc.getFileData({\r\n // saves the document with annotations in it\r\n xfdfString\r\n });\r\n\r\n } catch {\r\n\r\n documentNotAllowedSaveAlert();\r\n // alert('This PDF document format does not allow saving. Any entered data can not be saved to the database.');\r\n }\r\n \r\n });\r\n });\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n}\r\n async function getUserFormTemplatesAsync(userId, hasAssignedFormTypes) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserFormTemplates/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId: userId,\r\n hasAssignedFormTypes: hasAssignedFormTypes,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function insertConsumerFormAsync(\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n formdata,\r\n formCompleteDate,\r\n ) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(formdata);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n userId,\r\n consumerId,\r\n formtemplateid,\r\n formdata: abString,\r\n formCompleteDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function updateConsumerFormAsync(\r\n formId,\r\n formdata,\r\n documentEdited,\r\n ) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(formdata);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerForm/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formId,\r\n formdata: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function updateConsumerFormCompletionDateAsync(\r\n formId,\r\n formCompletionDate,\r\n ) {\r\n try {\r\n \r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerFormCompletionDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n formId,\r\n formCompletionDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteConsumerFormAsync(formId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerForm/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"formId\":\"' +\r\n formId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getconsumerFormsAsync(userId, consumerId, hasAssignedFormTypes) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getconsumerForms/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"userId\":\"' +\r\n userId +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"hasAssignedFormTypes\":\"' +\r\n hasAssignedFormTypes +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n\r\n // for Plan module (Workflow Step Docs)\r\n async function getPDFDocData(documentId, documentEdited, consumerId, isRefresh) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/openPDFEditor/',\r\n data: '{\"documentId\":\"' + documentId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.openPDFEditorResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // for Forms module\r\n async function getPDFFormData(formId, documentEdited, consumerId, isRefresh, isTemplate, applicationName) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/openFormEditor/',\r\n data: '{\"formId\":\"' + formId + '\", \"documentEdited\":\"' + documentEdited + '\", \"consumerId\":\"' + consumerId + '\", \"isRefresh\":\"' + isRefresh + '\", \"isTemplate\":\"' + isTemplate + '\", \"applicationName\":\"' + applicationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.openFormEditorResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n } \r\n \r\n function documentNotAllowedSaveAlert() {\r\n\r\n var popup = POPUP.build({\r\n id: 'saveNotAllowedAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n \r\n btnWrap.appendChild(okBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'This PDF document format does not allow saving. Any entered data can not be saved to the database.';\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n\r\n }\r\n\r\n function closewarningPopup(formId, documentEdited, consumerId, isRefresh, isTemplate) {\r\n const closewarningpopup = POPUP.build({\r\n id: 'closewarningPopup',\r\n classNames: 'warning',\r\n hideX: true,\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add(\"btnWrap\");\r\n \r\n const continueNoSaveBtn = button.build({\r\n text: 'Continue Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async function() {\r\n \r\n POPUP.hide(closewarningpopup);\r\n POPUP.hide(formPopup);\r\n // if (documentEdited === \"0\") forms.loadPDFFormsLanding();\r\n //overlay.hide();\r\n // forms.loadPDFFormsLanding();\r\n // overlay.show();\r\n\r\n } //callback\r\n }) //continueBtn Build\r\n\r\n \r\n \r\n var mustSaveBtn = button.build({\r\n text: 'Do Not Close',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(closewarningpopup);\r\n overlay.show();\r\n \r\n }\r\n })\r\n btnWrap.appendChild(mustSaveBtn);\r\n btnWrap.appendChild(continueNoSaveBtn);\r\n \r\n var warningMessage = document.createElement(\"p\");\r\n warningMessage.innerHTML = \"You should not close this form until you have saved your work. Do you want to proceed with closing this form?\";\r\n closewarningpopup.appendChild(warningMessage);\r\n closewarningpopup.appendChild(btnWrap);\r\n POPUP.show(closewarningpopup);\r\n }\r\n\r\n async function checkFormsLock(formId, userId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkFormsLock/',\r\n data: '{\"formId\":\"' + formId + '\", \"userId\":\"' + userId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.checkFormsLockResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function removeFormsLock(formId) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/removeFormsLock/',\r\n data: '{\"formId\":\"' + formId + '\", \"userId\":\"' + $.session.UserId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.removeFormsLockResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n return { \r\n openEditor,\r\n openPDFEditor,\r\n openFormEditor,\r\n openStepFormEditor,\r\n getUserFormTemplatesAsync,\r\n insertConsumerFormAsync,\r\n updateConsumerFormAsync,\r\n updateConsumerFormCompletionDateAsync,\r\n deleteConsumerFormAsync,\r\n getconsumerFormsAsync,\r\n getPDFDocData,\r\n getPDFFormData,\r\n removeFormsLock,\r\n checkFormsLock\r\n };\r\n}) ();","var incidentTracking = (function() {\r\n // DATA\r\n\t//---------------------\r\n\tvar involvementTypes;\r\n var incidentLocations;\r\n\tvar categories;\r\n var employeeNames;\r\n\r\n function getInvolvementTypes() {\r\n if (involvementTypes) return [...involvementTypes];\r\n }\r\n function getLocations() {\r\n if (incidentLocations) return [...incidentLocations];\r\n }\r\n function getCategories() {\r\n if (categories) return [...categories];\r\n }\r\n function getEmployeeNames() {\r\n if (employeeNames) return [...employeeNames];\r\n }\r\n function getDropdownData(callback) {\r\n // gets all the data needed for dropdowns\r\n var getInvolvementTypesPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getInvolvementTypeData(results => {\r\n involvementTypes = results;\r\n fulfill();\r\n });\r\n });\r\n var getIncidentCategoriesPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getIncidentCategories(results => {\r\n categories = results;\r\n fulfill();\r\n });\r\n });\r\n var getIncidentLocationDetailPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getIncidentLocationDetail(results => {\r\n incidentLocations = results;\r\n fulfill();\r\n });\r\n });\r\n var getEmployeesInvolvedEmployeeDropdownPromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.getEmployeesInvolvedEmployeeDropdown(results => {\r\n employeeNames = results;\r\n fulfill();\r\n });\r\n });\r\n\r\n Promise.all([\r\n getInvolvementTypesPromise,\r\n getIncidentCategoriesPromise,\r\n getIncidentLocationDetailPromise,\r\n getEmployeesInvolvedEmployeeDropdownPromise\r\n ]).then(() => {\r\n callback();\r\n });\r\n }\r\n\r\n function loadLandingPage() {\r\n var newIncidentBtn = button.build({\r\n text: 'New Incident',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: newIncident.init\r\n });\r\n var overviewBtn = button.build({\r\n text: 'Review Incidents',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: incidentOverview.init\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(newIncidentBtn);\r\n btnWrap.appendChild(overviewBtn);\r\n\r\n PROGRESS.SPINNER.show('Loading Incident Tracking...');\r\n getDropdownData(() => {\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n });\r\n }\r\n\r\n return {\r\n getInvolvementTypes,\r\n getLocations,\r\n getCategories,\r\n getEmployeeNames,\r\n loadLandingPage,\r\n getDropdownData, //For Dashboard\r\n }\r\n})();","var incidentTrackingAjax = (function () {\r\n //'use-strict';\r\n //Incident Save\r\n //Send incident notification\r\n function sendNotification(notificationType, employeeId, data) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendITNotification/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"notificationType\":\"' +\r\n notificationType +\r\n '\",\"employeeId\":\"' +\r\n employeeId +\r\n '\",\"incidentTypeDesc\":\"' +\r\n data.incidentTypeDesc +\r\n '\",\"incidentDate\":\"' +\r\n data.incidentDate +\r\n '\",\"incidentTime\":\"' +\r\n data.incidentTime +\r\n '\",\"subcategoryId\":\"' +\r\n data.subcategoryId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Drop Downs Creation\r\n //Involvment Types\r\n function getInvolvementTypeData(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITInvolvementTypeData/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Incident Categories\r\n function getIncidentCategories(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITIncidentCategories/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITIncidentCategoriesResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Locations Detail\r\n function getIncidentLocationDetail(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITIncidentLocationDetail/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITIncidentLocationDetailResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Service Locations\r\n function getConsumerServiceLocations(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITConsumerServiceLocations/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITConsumerServiceLocationsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Days back\r\n function updateIncidentTrackingDaysBack() {\r\n updatedReviewDays = $('#incidenttrackingdaysback').val();\r\n if (parseInt(updatedReviewDays) > parseInt('365')) {\r\n updatedReviewDays = 365;\r\n $('#incidenttrackingdaysback').val('365');\r\n alert('Days back must be 365 or less.');\r\n }\r\n $.session.defaultIncidentTrackingReviewDays = updatedReviewDays;\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateIncidentTrackingDaysBack/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedReviewDays + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateIncidentTrackingDaysBackResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Get review table data\r\n function getITReviewTableData(retrieveData, callback) {\r\n //retrieveData is = token, userId, locationId, consumerId, employeeId, subcategoryId, fromDate, toDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITReviewTableData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITReviewTableDataResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n // callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n //Review page locations\r\n function getReviewPageLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsIncidentTrackingReviewPage/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsIncidentTrackingReviewPageResult;\r\n callback(res);\r\n //var allString = '000AllY';//this is to add the 'ALL' option\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Employees Involved Employee Dropdown\r\n function getEmployeesInvolvedEmployeeDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getEmployeesInvolvedEmployeeDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getEmployeesInvolvedEmployeeDropdownResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function getITReviewPageEmployeeListAndSubList(supervisorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getITReviewPageEmployeeListAndSubList/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"supervisorId\":\"' + supervisorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function getIncidentEditReviewDataAllObjects(incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getIncidentEditReviewDataAllObjects/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"incidentId\":\"' + incidentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getIncidentEditReviewDataAllObjectsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n function deleteITIncident(incidentId) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAnywhereITIncident/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"incidentId\":\"' + incidentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getITInvolvementTypeDataResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function saveUpdateITIncident(incidentData, callback) {\r\n var notifyArr = incidentData.notifyEmployeeString.split('|');\r\n var employeeIdArr = incidentData.employeeIdString.split('|');\r\n var notificationType = incidentData.saveUpdate === 'Save' ? 'Insert' : 'Update';\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITIncident/',\r\n data: JSON.stringify(incidentData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITIncidentResult;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n for (let i = 0; i < notifyArr.length; i++) {\r\n if (notifyArr[i] === 'Y') {\r\n sendNotification(notificationType, employeeIdArr[i], incidentData);\r\n }\r\n }\r\n //notifyArr.forEach((notify, index) => {\r\n // if (notify === 'Y') {\r\n // sendNotification(notificationType, employeeIdArr[index], incidentData);\r\n // }\r\n //});\r\n if (callback) callback(res);\r\n }, 1000);\r\n //for loop' if notify emp is y call procedure with person id of employee with checked box\r\n },\r\n error: function (xhr, status, error) {\r\n //callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n // consumer involved DROPDOWN data\r\n function getReviewedByDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getReviewedByDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getReviewedByDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInjuryLocationsDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInjuryLocationsDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInjuryLocationsDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInjuryTypesDropdown(callback) {\r\n // notificationType either Insert or Update\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInjuryTypesDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInjuryTypesDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerFollowUpTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerFollowUpTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerFollowUpTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerBehaviorTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerBehaviorTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerBehaviorTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitReportingCategories(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitReportingCategories/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitReportingCategoriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getInterventionTypesDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInterventionTypesDropdown/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getInterventionTypesDropdownResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n // consumer involved REVIEW data\r\n function getitConsumerInterventions(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerInterventions/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerInterventionsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerInjuries(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerInjuries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerInjuriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerReviews(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerReviews/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerReviewsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerFollowUps(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerFollowUps/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerFollowUpsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerReporting(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerReporting/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerReportingResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getitConsumerBehavior(consumerId, incidentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getitConsumerBehaviors/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"consumerId\":\"' +\r\n consumerId +\r\n '\",\"incidentId\":\"' +\r\n incidentId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getitConsumerBehaviorsResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Consumer Folow Ups Specific Alters\r\n function itDeleteConsumerFollowUp(itConsumerFollowUpId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerFollowUp/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\",\"itConsumerFollowUpId\":\"' + itConsumerFollowUpId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerFollowUpResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerFollowUp(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \tconsumerFollowUpIdArray: [],\r\n // \tfollowUpTypeIdArray: [],\r\n // \tpersonResponsibleArray: [],\r\n // \tdueDateArray: [],\r\n // \tcompletedDateArray: [],\r\n // \tnotesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerFollowUp/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerFollowUpResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Injury Alters\r\n function saveUpdateITConsumerInjuries(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // itConsumerInvolvedId: '',\r\n // itConsumerInjuryIdArray: [],\r\n // \tcheckedByNurseArray: [],\r\n // \tcheckedDateArray: [],\r\n // \tdetailsArray: [],\r\n // \titInjuryLocationIdArray: [],\r\n // \titInjuryTypeIdArray: [],\r\n // \ttreatmentArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerInjuries/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerInjuriesResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n function itDeleteConsumerInjuries(itConsumerInjuryId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerInjuries/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"itConsumerInjuryId\":\"' + itConsumerInjuryId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerInjuriesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Intervention Alters\r\n function itDeleteConsumerInterventions(itConsumerInterventionId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerInterventions/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"itConsumerInterventionId\":\"' +\r\n itConsumerInterventionId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerInterventionsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerInterventions(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \titConsumerInvolvedId: '',\r\n // \titConsumerInterventionIdArray: [],\r\n // \taversiveArray: [],\r\n // itConsumerInterventionTypeIdArray: [],\r\n // notesArray: [],\r\n // \tstartTimeArray: [],\r\n // \tstopTimeArray: [],\r\n // \ttimeLengthArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerInterventions/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerInterventionsResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Reporting Alters\r\n function itDeleteConsumerReporting(itConsumerReportingId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerReporting/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"itConsumerReportingId\":\"' +\r\n itConsumerReportingId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerReportingResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerReporting(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \tconsumerReportIdArray: [],\r\n // \treportDateArray: [],\r\n // reportTimeArray: [],\r\n // reportingCategoryIdArray: [],\r\n // reportToArray: [],\r\n // reportByArray: [],\r\n // reportMethodArray: [],\r\n // \tnotesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerReporting/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerReportingResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Review Alters\r\n function itDeleteConsumerReviews(itConsumerReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerReviews/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"itConsumerReviewId\":\"' + itConsumerReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerReviewsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerReviews(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \titConsumerReviewIdArray: [],\r\n // \treviewedByArray: [],\r\n // reviewedDateArray: [],\r\n // noteArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerReviews/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerReviewsResult;\r\n if (callback) callback(res);\r\n },\r\n });\r\n }\r\n //Consumer Behavior Alters\r\n function itDeleteConsumerBehavior(itConsumerBehaviorId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/itDeleteConsumerBehavior/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\",\"itConsumerBehaviorId\":\"' + itConsumerBehaviorId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.itDeleteConsumerBehaviorsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function saveUpdateITConsumerBehaviors(data, callback) {\r\n // data = {\r\n // \ttoken: $.session.Token,\r\n // \tconsumerInvolvedId: '',\r\n // \titConsumerBehaviorIdArray: [],\r\n // \tstartTimeArray: [],\r\n // endTimeArray: [],\r\n // occurrencesArray: [],\r\n // };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveUpdateITConsumerBehavior/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.saveUpdateITConsumerBehaviorsResult;\r\n if (callback) callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // User Incident View Tracking\r\n async function updateIncidentViewByUser(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateIncidentViewByUser/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // Generate Incident Tracking Report\r\n function generateIncidentTrackingReport(incidentId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n incidentId: incidentId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/generateIncidentTrackingReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.generateIncidentTrackingReportResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n function checkIfITReportExists(res, callback) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: res[0].reportScheduleId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkIfITReportExists/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.checkIfITReportExistsResult;\r\n callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // Send the report to designated emails\r\n function sendIncidentTrackingReport(reportScheduleId, incidentTrackingEmailReportData) {\r\n data = {\r\n token: $.session.Token,\r\n reportScheduleId: reportScheduleId,\r\n toAddresses: incidentTrackingEmailReportData.toAddresses,\r\n ccAddresses: incidentTrackingEmailReportData.ccAddresses,\r\n bccAddresses: incidentTrackingEmailReportData.bccAddresses,\r\n emailSubject: incidentTrackingEmailReportData.emailSubject,\r\n emailBody: incidentTrackingEmailReportData.emailBody,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendIncidentTrackingReport/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.sendIncidentTrackingReportResult;\r\n //callback(res, data.reportScheduleId);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n return {\r\n sendNotification,\r\n getInvolvementTypeData,\r\n getIncidentCategories,\r\n getIncidentLocationDetail,\r\n getConsumerServiceLocations,\r\n updateIncidentTrackingDaysBack,\r\n getITReviewTableData,\r\n getReviewPageLocations,\r\n getEmployeesInvolvedEmployeeDropdown,\r\n getITReviewPageEmployeeListAndSubList,\r\n getIncidentEditReviewDataAllObjects,\r\n deleteITIncident,\r\n saveUpdateITIncident,\r\n getReviewedByDropdown,\r\n getInjuryLocationsDropdown,\r\n getInjuryTypesDropdown,\r\n getitConsumerInterventions,\r\n getitConsumerInjuries,\r\n getitConsumerReviews,\r\n getitConsumerFollowUps,\r\n getitConsumerReporting,\r\n getitConsumerBehavior,\r\n getitConsumerFollowUpTypes,\r\n getitConsumerBehaviorTypes,\r\n getitReportingCategories,\r\n getInterventionTypesDropdown,\r\n itDeleteConsumerFollowUp,\r\n saveUpdateITConsumerFollowUp,\r\n itDeleteConsumerReporting,\r\n saveUpdateITConsumerReporting,\r\n itDeleteConsumerReviews,\r\n saveUpdateITConsumerReviews,\r\n itDeleteConsumerInjuries,\r\n itDeleteConsumerInterventions,\r\n saveUpdateITConsumerInjuries,\r\n saveUpdateITConsumerInterventions,\r\n itDeleteConsumerBehavior,\r\n saveUpdateITConsumerBehaviors,\r\n updateIncidentViewByUser,\r\n generateIncidentTrackingReport,\r\n checkIfITReportExists,\r\n sendIncidentTrackingReport,\r\n };\r\n})();\r\n","function buildInfal() {\r\n var holder = $(\"
    \").addClass(\"infalHolder\"),\r\n header = $(\"
    \").addClass(\"infalHeader\").appendTo(holder),\r\n headerText = $(\"\").addClass(\"infalHeaderText\").html(\"Infal TimeClock\").appendTo(header),\r\n body = $(\"
    \").addClass(\"infalBody\").appendTo(holder),\r\n dropdown = $(\"\").appendTo(body),\r\n button = $(\"\").addClass(\"infalBodyButton\").html(\" \").appendTo(body);\r\n\r\n $(\"#actioncenter\").append(holder);\r\n\r\n InfalGetJobsAjax();\r\n}\r\n\r\nfunction getInfalUsernameDataSetter() {\r\n empId = readCookie(\"id\");\r\n infalAjax.getInfalUserNameAjax(empId, setInfalUserNameToScreen);//Still need to add and implement callback\r\n}\r\n\r\nfunction setInfalUserNameToScreen(res) {\r\n var name = '';\r\n $('result', res).each(function () {\r\n //$.session.Name = $('name', this).text();\r\n name = $('name', this).text();\r\n });\r\n var t = name.split(',');\r\n name = t[1] + ' ' + t[0];\r\n $(\"#firstName\").text(name);\r\n}","var infalAjax = (function() {\r\n\r\n function InfalGetJobsAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalGetJobs/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n //data: '{\"id\":\"' + 1308 + '\"}',\r\n data: JSON.stringify(empId),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.InfalGetJobsResult);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n } \r\n \r\n function InfalGetClockInsAndOutsAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalGetClockInsAndOuts/\",\r\n data: JSON.stringify(empId),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.parse(response.InfalGetClockInsAndOutsResult);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function InfalClockInAjax(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalClockIn/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n resObj = JSON.parse(res);\r\n callback(resObj);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function InfalClockOutAjax(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/InfalClockOut/\",\r\n //data: '{\"id\":\"' + $.session.PeopleId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n \r\n function getInfalUserNameAjax(empId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url: $.webServer.protocol + \"://\" + $.webServer.address + \":\" + $.webServer.port +\r\n \"/\" + $.webServer.serviceName + \"/getInfalUserName/\",\r\n data: '{\"empId\":\"' + empId + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n },\r\n });\r\n }\r\n\r\n\treturn {\r\n InfalGetJobsAjax,\r\n InfalGetClockInsAndOutsAjax,\r\n InfalClockInAjax,\r\n InfalClockOutAjax,\r\n getInfalUserNameAjax\r\n\t};\r\n})();","const multiTabs = (function () {\r\n function notifyOtherTabs(message) {\r\n userActivityChannel.postMessage({ type: 'update' });\r\n }\r\n\r\n function newTabOpen(message) {\r\n userActivityChannel.postMessage({ type: 'newTab' });\r\n }\r\n\r\n return {\r\n notifyOtherTabs,\r\n newTabOpen\r\n };\r\n})();\r\n\r\nconst userActivityChannel = new BroadcastChannel('userActivityChannel');\r\n\r\nlocalStorage.setItem('activeChannel', true);\r\n\r\nlet isOriginalTab = true;\r\n\r\nfunction autoLogout() {\r\n var isPopupVisible = false;\r\n var idleTime = 0;\r\n var logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n function timerIncrement() {\r\n var timeLimit = parseInt($.session.anywhereMinutestotimeout);\r\n idleTime++;\r\n if (idleTime === timeLimit - 1) {\r\n POPUP.show(logoutPopup);\r\n isPopupVisible = true;\r\n }\r\n if (idleTime === timeLimit) setCookieOnFail('');\r\n }\r\n\r\n var logoutMessage = `You've been inactive for a while. For security purposes, we will automatically sign you out in approximately 1 minute.`;\r\n var logoutPopup = POPUP.build({});\r\n logoutPopup.innerHTML += logoutMessage;\r\n\r\n // Broadcast mouse movement event to other tabs\r\n document.addEventListener('mousemove', () => {\r\n if (isPopupVisible) {\r\n POPUP.hide(logoutPopup);\r\n isPopupVisible = false;\r\n }\r\n idleTime = 0;\r\n clearInterval(logoutInterval);\r\n logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n // Broadcast mouse movement event to other tabs\r\n userActivityChannel.postMessage({ type: 'mouseMove' });\r\n });\r\n\r\n // Broadcast keyboard activity event to other tabs\r\n document.addEventListener('keydown', () => {\r\n if (isPopupVisible) {\r\n POPUP.hide(logoutPopup);\r\n isPopupVisible = false;\r\n }\r\n idleTime = 0;\r\n clearInterval(logoutInterval);\r\n logoutInterval = setInterval(timerIncrement, 60000);\r\n\r\n // Broadcast keyboard activity event to other tabs\r\n userActivityChannel.postMessage({ type: 'keyPress' });\r\n });\r\n\r\n userActivityChannel.addEventListener('message', function (event) {\r\n const message = event.data;\r\n\r\n if (message.type === 'mouseMove' || message.type === 'keyPress') {\r\n // Reset idleTime to zero when there's user activity in other tabs\r\n idleTime = 0;\r\n } else if (message.type === 'buttonClick') {\r\n unloadApp($.loadedApp);\r\n setCookieOnFail('');\r\n } else if (message.type === 'newTab') {\r\n const element = document.getElementById('newTabsPopup');\r\n\r\n if (!element) {\r\n const newTabsPopup = POPUP.build({\r\n id: 'newTabsPopup',\r\n header: 'Attention!',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Opening multiple tabs simultaneously may lead to potential data corruption. For optimal system performance and to avoid any issues, please refrain from making changes in multiple tabs simultaneously.';\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(newTabsPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(continueBtn);\r\n newTabsPopup.appendChild(message);\r\n newTabsPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(newTabsPopup);\r\n }\r\n }\r\n });\r\n}\r\n\r\nfunction handleLogoutButtonClick() {\r\n unloadApp($.loadedApp);\r\n setCookieOnFail('');\r\n\r\n // Broadcast the button click event to other tabs\r\n userActivityChannel.postMessage({ type: 'buttonClick' });\r\n}","const oneSpan = (() => {\r\n let oneSpanDocumentStatus;\r\n let oneSpanDocumentData;\r\n\r\n async function checkOneSpanData(planId) {\r\n // Checks if the document has been signed and values are in our database\r\n oneSpanDocumentStatus = await oneSpanAjax.oneSpanCheckDocumentStatus({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n \r\n if (oneSpanDocumentStatus[0].signedStatus !== \"\") {\r\n const oneSpanRetrieveData = {\r\n token: $.session.Token,\r\n packageId: oneSpanDocumentStatus[0].packageId,\r\n assessmentID: planId\r\n }\r\n \r\n await oneSpanAjax.oneSpanGetSignedDocuments(oneSpanRetrieveData);\r\n }\r\n }\r\n\r\n function fireDataUpdateEvent(planId) {\r\n // custom event for event listener used on button to run disabled check\r\n const dataUpdateEvent = new CustomEvent(\"data-update\", {\r\n detail: {\r\n data: planId\r\n }\r\n })\r\n\r\n document.dispatchEvent(dataUpdateEvent)\r\n }\r\n\r\n async function shouldBeDisabled(btn, planId, signatureTypeToCheck) {\r\n // gathers the new list of team members and their signature types\r\n const updatedMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // disables the btn if there are no team members\r\n if (updatedMemberData.length === 0) {\r\n btn.classList.add('disabled');\r\n }\r\n \r\n // if there is a digital signature type for any team member the button is no logner disabled\r\n for (let i = 0; i < updatedMemberData.length; i++) {\r\n if (updatedMemberData[i].signatureType.includes(signatureTypeToCheck) && updatedMemberData[i].signature === '') {\r\n btn.classList.remove('disabled');\r\n break;\r\n } else {\r\n btn.classList.add('disabled');\r\n }\r\n }\r\n }\r\n\r\n function buildPopupMessage() {\r\n const message = document.createElement('p');\r\n message.classList.add('message');\r\n message.innerText =\r\n 'Are you sure you want to send the Document via One Span?';\r\n return message;\r\n }\r\n\r\n async function sendToOneSpanProgress() {\r\n oneSpanPopup.style.display = 'none';\r\n pendingSave.show('Sending...');\r\n\r\n // Sends the document out via One Span\r\n const sentStatus = await oneSpanAjax.oneSpanBuildSigners(oneSpanDocumentData);\r\n\r\n if (sentStatus === 'success') {\r\n success = true;\r\n } else {\r\n success = false;\r\n }\r\n\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n // Handles popup actions based on whether the One Span delivery was successsful\r\n if (success) {\r\n pendingSave.fulfill('Sent!');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(oneSpanPopup);\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to send, please try again.');\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n oneSpanPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n\r\n function showOneSpanPopup() { \r\n oneSpanPopup = POPUP.build({\r\n id: 'sendToOneSpanPopup',\r\n header: 'Send To One Span'\r\n });\r\n \r\n const message = buildPopupMessage();\r\n\r\n //* ACTION BUTTONS\r\n //*----------------------------------\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const continueBtn = button.build({\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n // Shows spinner while the document is being sent via One Span\r\n sendToOneSpanProgress();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(oneSpanPopup);\r\n },\r\n });\r\n \r\n btnWrap.appendChild(continueBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n oneSpanPopup.appendChild(message);\r\n oneSpanPopup.appendChild(btnWrap);\r\n \r\n POPUP.show(oneSpanPopup);\r\n }\r\n\r\n function buildSendDocumentToOneSpanBtn(planId, teamMemberData) {\r\n const sendDocumentToOneSpanBtn =\r\n button.build({\r\n id: 'sig_addMember',\r\n text: 'REQUEST E-SIGNATURES',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n oneSpanDocumentData = {\r\n token: $.session.Token,\r\n assessmentID: planId,\r\n userID: $.session.PeopleId,\r\n versionID: 1,\r\n extraSpace: \"false\",\r\n isp: true,\r\n oneSpan: true\r\n },\r\n\r\n showOneSpanPopup(oneSpanDocumentData)\r\n }\r\n });\r\n\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n\r\n return sendDocumentToOneSpanBtn;\r\n } \r\n \r\n return {\r\n checkOneSpanData,//\r\n buildSendDocumentToOneSpanBtn,\r\n shouldBeDisabled,\r\n fireDataUpdateEvent,\r\n sendToOneSpanProgress//\r\n };\r\n })();","var oneSpanAjax = (function () {\r\n //'use-strict';\r\n\r\n async function oneSpanBuildSigners(retrieveData) {\r\n //token, assessmentID, userID, versionID, extraSpace, isp, oneSpan\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',//\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanBuildSigners/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return await data.oneSpanBuildSignersResult; //\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n //function oneSpanBuildSigners() {\r\n // $.ajax({\r\n // type: 'POST',\r\n // url:\r\n // $.webServer.protocol + '://' +\r\n // $.webServer.address + ':' +\r\n // $.webServer.port + '/' +\r\n // $.webServer.serviceName + '/oneSpanBuildSigners/',\r\n // data: '{\"token\":\"' + $.session.Token + '\"}',\r\n // contentType: 'application/json; charset=utf-8',\r\n // dataType: 'json',\r\n // success: function (response, status, xhr) {\r\n // var res;\r\n // try {\r\n // res = response.oneSpanBuildSignersResult;\r\n // //callback(res, null);\r\n // } catch (e) {\r\n // // callback(null, error);\r\n // }\r\n // },\r\n // error: function (xhr, status, error) {\r\n // callback(error, null);\r\n // },\r\n // });\r\n //}\r\n async function oneSpanGetSignedDocuments(retrieveData) {\r\n // token, packageId, planId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanGetSignedDocuments/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return await data.oneSpanGetSignedDocumentsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function oneSpanCheckDocumentStatus(retrieveData) {\r\n // token, assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/oneSpanCheckDocumentStatus/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.oneSpanCheckDocumentStatusResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n oneSpanBuildSigners,\r\n oneSpanGetSignedDocuments,\r\n oneSpanCheckDocumentStatus,\r\n };\r\n})();\r\n","const OODEmployers = (() => {\r\n\r\n let addNewEmployerBtn;\r\n let rtnOODMainPageBtn;\r\n\r\n // insert/update employer data\r\n let employerId;\r\n let employerName = '';\r\n let employeraddress1 = '';\r\n let employeraddress2 = '';\r\n let employercity = '';\r\n let employerstate = '';\r\n let employerzipcode = '';\r\n\r\n //employer inputs \r\n let employerInput;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipcodeInput;\r\n\r\n let saveBtn;\r\n let cancelBtn;\r\n\r\n async function init() {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n\r\n\r\n let container = document.createElement(\"div\");\r\n // container.classList.add(\"btnWrap\");\r\n var LineBr = document.createElement('br');\r\n\r\n addNewEmployerBtn = button.build({\r\n text: 'Add New Employer',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'save',\r\n classNames: !$.session.OODInsert ? ['caseNoteSave', 'disabled'] : ['caseNoteSave'],\r\n callback: async () => { buildEmployerPopUp({}, 'insert') },\r\n });\r\n\r\n rtnOODMainPageBtn = button.build({\r\n text: 'Return to OOD Main Page',\r\n style: 'secondary',\r\n type: 'contained',\r\n // icon: 'save',\r\n classNames: ['caseNoteSave'],\r\n callback: async () => { OOD.loadOODLanding() },\r\n });\r\n\r\n OODEmployersTable = await buildEmployersTable();\r\n\r\n container.appendChild(addNewEmployerBtn);\r\n container.appendChild(LineBr);\r\n container.appendChild(OODEmployersTable);\r\n container.appendChild(LineBr);\r\n container.appendChild(rtnOODMainPageBtn);\r\n\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildEmployersTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEmployersTable',\r\n columnHeadings: ['Employer', 'Address', 'City', 'State', 'Zip Code'],\r\n endIcon: true,\r\n // endIcon : ($.session.formsDelete) ? `${icons['delete']}` : null,\r\n\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n // const tableData = [{ values : ['My Employer', '123 State St', 'Kyzyl', 'OH'], endIcon : `${icons['delete']}`, onClick : async () => {buildEmployerPopUp()} }, \r\n // { values : ['Your Employer', '456 Main St', 'Santa Clause', 'IN'], endIcon : `${icons['delete']}`,onClick : async () => {buildEmployerPopUp()} } ];\r\n\r\n\r\n const { getActiveEmployersResult: activeEmployers } = await OODAjax.getActiveEmployersAsync();\r\n\r\n var filteredActiveEmployers = activeEmployers.filter((x) => x.employerId != 0);\r\n\r\n let tableData = filteredActiveEmployers.map((employer) => ({\r\n values: [employer.employerName, employer.address1 + ' ' + employer.address2, employer.city, employer.state, employer.zipcode],\r\n attributes: [{ key: 'employerId', value: employer.employerId }],\r\n endIcon: ((employer.isEmployerIdReferenced == '0') && $.session.OODDelete) ? `${icons['delete']}` : ' ',\r\n id: employer.employerId,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n // alert('Delete')\r\n try {\r\n let tableRow = document.getElementById(employer.employerId)\r\n deleteConfirmation(employer.employerId, tableRow);\r\n return;\r\n } catch (err) {\r\n console.error(\"error: \", err);\r\n }\r\n },\r\n onClick: (e) => {\r\n if ($.session.OODUpdate) {\r\n OODAjax.getEmployer(employer.employerId, function (results) {\r\n buildEmployerPopUp(results, 'update');\r\n });\r\n }\r\n },\r\n\r\n }));\r\n\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n\r\n // build Employer pop-up used for adding/editing Employer information\r\n async function buildEmployerPopUp(employerdata, postType) {\r\n\r\n if (employerdata && Object.keys(employerdata).length !== 0) {\r\n\r\n employerId = employerdata[0].employerId;\r\n employerName = employerdata[0].employerName;\r\n employeraddress1 = employerdata[0].address1;\r\n employeraddress2 = employerdata[0].address2;\r\n employercity = employerdata[0].city;\r\n employerstate = employerdata[0].state;\r\n employerzipcode = employerdata[0].zipcode;\r\n\r\n } else {\r\n\r\n employerId = '';\r\n employerName = '';\r\n employeraddress1 = '';\r\n employeraddress2 = '';\r\n employercity = '';\r\n employerstate = '';\r\n employerzipcode = '';\r\n\r\n }\r\n\r\n let editEmployerPopup = POPUP.build({\r\n header: \"Edit this Employer\",\r\n hideX: true,\r\n id: \"editEmployerPopup\"\r\n });\r\n\r\n employerInput = input.build({\r\n id: 'employerInput',\r\n label: 'Employer',\r\n // value: (employerdata) ? employerdata[0].employerName : '',\r\n value: (employerName) ? employerName : '',\r\n });\r\n\r\n address1Input = input.build({\r\n label: 'Address',\r\n // value: (employerdata) ? employerdata[0].address1 : '',\r\n value: (employeraddress1) ? employeraddress1 : '',\r\n\r\n });\r\n\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n //value: (employerdata) ? employerdata[0].address2 : '',\r\n value: (employeraddress2) ? employeraddress2 : '',\r\n\r\n });\r\n\r\n cityInput = input.build({\r\n label: 'City',\r\n // value: (employerdata) ? employerdata[0].city : '',\r\n value: (employercity) ? employercity : '',\r\n });\r\n\r\n stateInput = input.build({\r\n label: 'State',\r\n // value: (employerdata) ? employerdata[0].state : '',\r\n value: (employerstate) ? employerstate : '',\r\n\r\n });\r\n\r\n zipcodeInput = input.build({\r\n label: 'Zip Code',\r\n // value: (employerdata) ? employerdata[0].state : '',\r\n value: (employerzipcode) ? employerzipcode : '',\r\n\r\n });\r\n\r\n saveBtn = button.build({\r\n id: \"addEmployerSaveBtn\",\r\n text: \"save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: 'disabled',\r\n //callback: () => POPUP.hide(editEmployerPopup) \r\n callback: () => editEmployerPopupDoneBtn(postType)\r\n });\r\n // this.saveButton = saveBtn;\r\n\r\n cancelBtn = button.build({\r\n id: \"addEmployerCancelBtn\",\r\n text: \"cancel\",\r\n type: \"outlined\",\r\n style: \"secondary\",\r\n callback: () => POPUP.hide(editEmployerPopup)\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n // editEmployerPopup.appendChild(servicesDropdown);\r\n editEmployerPopup.appendChild(employerInput);\r\n editEmployerPopup.appendChild(address1Input);\r\n editEmployerPopup.appendChild(address2Input);\r\n editEmployerPopup.appendChild(cityInput);\r\n editEmployerPopup.appendChild(stateInput);\r\n editEmployerPopup.appendChild(zipcodeInput);\r\n editEmployerPopup.appendChild(btnWrap);\r\n\r\n popUpEventHandlers();\r\n\r\n POPUP.show(editEmployerPopup);\r\n\r\n checkRequiredFields();\r\n\r\n }\r\n\r\n function popUpEventHandlers() {\r\n\r\n employerInput.addEventListener('input', event => {\r\n employerName = event.target.value.trim(); \r\n checkRequiredFields();\r\n\r\n });\r\n\r\n address1Input.addEventListener('input', event => {\r\n employeraddress1 = event.target.value;\r\n\r\n });\r\n\r\n address2Input.addEventListener('input', event => {\r\n employeraddress2 = event.target.value;\r\n\r\n });\r\n\r\n cityInput.addEventListener('input', event => {\r\n employercity = event.target.value;\r\n\r\n });\r\n\r\n stateInput.addEventListener('input', event => {\r\n employerstate = event.target.value;\r\n\r\n });\r\n\r\n zipcodeInput.addEventListener('input', event => {\r\n employerzipcode = event.target.value;\r\n\r\n });\r\n\r\n }\r\n\r\n function checkRequiredFields() { \r\n var employrInput = employerInput.querySelector('#employerInput');\r\n\r\n if (employrInput.value.trim() === '') { \r\n employerInput.classList.add('error');\r\n } else {\r\n employerInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n\r\n if ($.session.OODInsert || $.session.OODUpdate) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Edit Employer Popup Window\r\n async function editEmployerPopupDoneBtn(postType) {\r\n\r\n if (postType == 'insert') {\r\n\r\n const result = await OODAjax.insertEmployerAsync(employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { insertEmployerResult } = result;\r\n let employerID = insertEmployerResult.employerId;\r\n\r\n if (employerID == '0') {\r\n warningPopup();\r\n } else {\r\n POPUP.hide(editEmployerPopup)\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OODEmployers.init();\r\n }, 2000);\r\n }\r\n\r\n } else { //'update'\r\n POPUP.hide(editEmployerPopup)\r\n const result = await OODAjax.updateEmployerAsync(employerId, employerName, employeraddress1, employeraddress2, employercity, employerstate, employerzipcode);\r\n const { updateEmployerResult: { employerID } } = result;\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OODEmployers.init();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function deleteConfirmation(employerId, tableRow) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteEmployerAsync(employerId);\r\n if (result.deleteEmployerResult === \"1\") {\r\n tableRow.remove();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this employer?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n function warningPopup() {\r\n var popup = POPUP.build({\r\n id: 'warningPopup',\r\n classNames: 'warning',\r\n });\r\n var OKBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n overlay.show();\r\n },\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = \"This employer already exists.\";\r\n popup.appendChild(warningMessage);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n return {\r\n init,\r\n\r\n };\r\n})(); ","const OOD = (() => {\r\n //Inputs\r\n let serviceDateInput;\r\n let serviceDate;\r\n const CLEAREDSERVICEDATE = '1970-01-01';\r\n\r\n let editEmployersBtn;\r\n let createFormsBtn;\r\n let filterRow;\r\n let newEntryBtn;\r\n let newSummaryBtn;\r\n let OODEntriesTable;\r\n let OODConsumerBtns;\r\n let consumerRow;\r\n let consumerElement;\r\n let filterPopup;\r\n\r\n // New Roster\r\n //let initRosterSelection;\r\n var enabledConsumers;\r\n var selectedConsumers;\r\n\r\n //filter\r\n let serviceDateStartInput;\r\n let serviceDateEndInput;\r\n let employeeDropdown;\r\n let servicesDropdown;\r\n let referenceNumbersDropdown;\r\n let filterValues;\r\n\r\n let btnWrap;\r\n let serviceDateStartBtnWrap;\r\n let serviceDateEndBtnWrap;\r\n let employeeBtnWrap;\r\n let serviceBtnWrap;\r\n let referenceNumberBtnWrap;\r\n\r\n //service filter options\r\n const OODENTRIESFILTER = 'OODEntriesFilter';\r\n const FORM4MONTHLYSUMMARYSERVICES = 'Form4MonthlySummary';\r\n\r\n let consumerServicesDropdown;\r\n let consumerServicesDoneBtn;\r\n let selectConsumerServicePopup;\r\n let selectedConsumerServiceId;\r\n let selectedConsumerReferenceNumber;\r\n let selectedConsumerServiceType;\r\n let selectedConsumerFormNumber;\r\n let selectedConsumerServiceName;\r\n let summaryServicesDropdown;\r\n let summaryServicesDoneBtn;\r\n let selectSummaryServicePopup;\r\n\r\n let selectedConsumerIds;\r\n //let consumerServices;\r\n\r\n // get the Consumers selected from the Roster\r\n async function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'miniRosterDone': {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n await loadOODLanding();\r\n DOM.toggleNavLayout();\r\n //\t\troster2.clearActiveConsumers();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n loadApp('home');\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Build OOD Module Landing Page\r\n async function loadOODLanding() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n if (!document.querySelector('.consumerListBtn')) roster2.miniRosterinit();\r\n\r\n landingPage = document.createElement('div');\r\n selectedConsumers.forEach(consumer => {\r\n const consumerCard = buildConsumerCard(consumer);\r\n landingPage.appendChild(consumerCard);\r\n });\r\n\r\n filterRow = document.createElement('div');\r\n filterRow.classList.add('filterElement');\r\n\r\n const filteredBy = buildFilteredBy();\r\n\r\n // editEmployersBtn = buildEditEmployersBtn();\r\n\r\n filterRow.appendChild(filteredBy);\r\n // filterRow.appendChild(editEmployersBtn);\r\n\r\n landingPage.appendChild(filterRow);\r\n OODEntriesTable = await buildOODEntriesTable(filterValues);\r\n landingPage.appendChild(OODEntriesTable);\r\n\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n // build the listing of OOD Entries (based off of filter settings)\r\n async function buildOODEntriesTable(filterValues) {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODEntriesTable',\r\n columnHeadings: [\r\n 'Service Date',\r\n 'Consumer',\r\n 'Service',\r\n 'Reference No',\r\n 'User Updated',\r\n 'Employer',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n //const tableData = [{ values : ['11/09/2021', 'Aaron, Aaron', 'LPA'], onClick : () => {OODForm4MonthlyPlacement.init(currentConsumer)}, attributes : [{ key: 'consumerId', value: '10000030' }, { key: 'contactsId', value: '686614946775283' } ]},\r\n //\t\t\t\t\t{ values : ['11/11/2021', 'Abrams, Jackie', 'IPA'], onClick : () => {OODForm4MonthlyPlacement.init(currentConsumer)}, attributes : [{ key: 'consumerId', value: '10000241' }, { key: 'reviewId', value: '686614946775290' } ]} ];\r\n\r\n selectedConsumerIds = selectedConsumers.map(function (x) {\r\n return x.id;\r\n });\r\n //TODO JOE: FORM 8 -- Need to include in OODEntries serviceType: T1 and T2 -- Need to UpdateSP _OODEntries with EM_Service_Names.Template_Num\r\n const { getOODEntriesResult: OODEntries } = await OODAjax.getOODEntriesAsync(\r\n selectedConsumerIds.join(', '),\r\n filterValues.serviceDateStart,\r\n filterValues.serviceDateEnd,\r\n filterValues.userId,\r\n filterValues.serviceId,\r\n filterValues.referenceNumber, //reference number\r\n );\r\n\r\n // format the Completion Dates\r\n OODEntries.forEach(function (entry) {\r\n let newDate = new Date(entry.serviceDate);\r\n let theMonth = newDate.getMonth() + 1;\r\n let formatServiceDate =\r\n UTIL.leadingZero(theMonth) +\r\n '/' +\r\n UTIL.leadingZero(newDate.getDate()) +\r\n '/' +\r\n newDate.getFullYear();\r\n entry.serviceDate = formatServiceDate;\r\n });\r\n\r\n let tableData = OODEntries.map(entry => ({\r\n values: [\r\n entry.serviceDate,\r\n entry.consumerName,\r\n entry.serviceCode,\r\n entry.referenceNumber,\r\n entry.userUpdated,\r\n entry.employerName,\r\n ],\r\n //TODO JOE: add key: ServiceType value: entry.serviceType (T1 and T2)\r\n attributes: [\r\n {\r\n key: 'OODReportType',\r\n value: entry.employerName == 'Monthly Review' ? 'monthlySummary' : 'newEntry',\r\n },\r\n { key: 'consumerId', value: entry.consumerId },\r\n { key: 'Id', value: entry.ID },\r\n { key: 'userId', value: entry.userUpdated },\r\n { key: 'formNumber', value: Math.round(entry.formNumber) },\r\n ],\r\n onClick: e => {\r\n var rowConsumer = selectedConsumers.filter(function (x) {\r\n return x.id == entry.consumerId;\r\n });\r\n //TODO JOE: add to the if clause below (Form4) and add two more ifs to cover the Form 8 ---\r\n //TODO JOE: if (rowConsumer[0] && e.target.attributes.OODReportType.value === 'newEntry' && e.target.attributes.serviceType.value === 'T1')\r\n // TODO JOE: Will also need two new SP to get the Form 8 data\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '4'\r\n ) {\r\n OODAjax.getForm4MonthlyPlacementEditData(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n OODForm4MonthlyPlacement.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '4'\r\n ) {\r\n OODAjax.getForm4MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n OODForm4MonthlySummary.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n\r\n if ( //NEED NEW AJAX TO GET Form 6 \r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '6'\r\n ) {\r\n OODAjax.getForm6Tier1andJDPLan(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n Tier1andJDPlanForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '8'\r\n ) {\r\n OODAjax.getForm8CommunityBasedAssessment(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n communityBasedAssessmentForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '8'\r\n ) {\r\n OODAjax.getForm8MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n communityBasedAssessmentSummaryForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n \r\n if (\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '10'\r\n ) {\r\n OODAjax.getForm10TransportationData(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n OODFormTransportation.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n\r\n if ( //NEED NEW AJAX TO GET Form 16 \r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'newEntry' &&\r\n e.target.attributes.formNumber.value === '16'\r\n ) {\r\n OODAjax.getForm16SummerYouthWorkExperience(\r\n e.target.attributes.Id.value,\r\n function (results) {\r\n summerYouthWorkExperienceForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n results[0].serviceName,\r\n undefined,\r\n e.target.attributes.userId.value,\r\n undefined,\r\n );\r\n },\r\n );\r\n }\r\n if ( //NEED NEW AJAX TO GET Form 16\r\n rowConsumer[0] &&\r\n e.target.attributes.OODReportType.value === 'monthlySummary' &&\r\n e.target.attributes.formNumber.value === '16'\r\n ) {\r\n OODAjax.getForm16MonthlySummary(e.target.attributes.Id.value, function (results) {\r\n summerYouthWorkExperienceSummaryForm.init(\r\n results,\r\n rowConsumer[0],\r\n undefined,\r\n e.target.attributes.userId.value,\r\n );\r\n });\r\n }\r\n },\r\n }));\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n consumerElement = document.createElement('div');\r\n consumerRow = document.createElement('div');\r\n consumerRow.classList.add('consumerHeader');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const consumerCard = document.createElement('div');\r\n consumerCard.classList.add('OODConsumerCard');\r\n\r\n consumerCard.appendChild(consumer.card);\r\n\r\n consumerCard.addEventListener('click', event => {\r\n var consumerId = event.target.dataset.consumerId;\r\n selectedConsumerIds = selectedConsumerIds.filter(id => id !== consumerId);\r\n selectedConsumers = selectedConsumers.filter(function (x) {\r\n return x.id !== consumerId;\r\n });\r\n roster2.removeConsumerFromActiveConsumers(consumerId);\r\n var activeConsumers = roster2.getActiveConsumers();\r\n activeConsumers.length === 0 ? roster2.showMiniRoster() : loadOODLanding();\r\n // event.target.parentElement.parentElement.remove();\r\n });\r\n\r\n consumerRow.appendChild(consumerCard);\r\n\r\n OODConsumerBtns = buildButtonBar(consumer);\r\n\r\n consumerRow.appendChild(OODConsumerBtns);\r\n var LineBr = document.createElement('br');\r\n\r\n consumerElement.appendChild(consumerRow);\r\n // consumerElement.appendChild(LineBr);\r\n\r\n return consumerElement;\r\n }\r\n\r\n // build display of \"Entry\" Buttons -- \"New Entry\" and \"New Monthly Summary\"\r\n function buildButtonBar(consumer) {\r\n const buttonBar = document.createElement('div');\r\n buttonBar.classList.add('OODbuttonBar');\r\n\r\n const entryBtn = button.build({\r\n text: 'New Entry',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [\r\n { key: 'consumerId', value: consumer.id },\r\n { key: 'btnType', value: 'newEntry' },\r\n ],\r\n classNames: !$.session.OODInsert ? ['newEntryBtn', 'disabled'] : ['newEntryBtn'],\r\n callback: () =>\r\n buildEntryServicePopUp(\r\n entryBtn.attributes.consumerid.value,\r\n entryBtn.attributes.btnType.value,\r\n ),\r\n });\r\n const summaryBtn = button.build({\r\n text: 'New Monthly Summary',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [\r\n { key: 'consumerId', value: consumer.id },\r\n { key: 'btnType', value: 'monthlySummary' },\r\n ],\r\n classNames: !$.session.OODInsert\r\n ? ['newMonthlySummaryBtn', 'disabled']\r\n : ['newMonthlySummaryBtn'],\r\n callback: () =>\r\n buildSummaryServicePopUp(\r\n summaryBtn.attributes.consumerid.value,\r\n summaryBtn.attributes.btnType.value,\r\n ),\r\n });\r\n editEmployersBtn = buildEditEmployersBtn();\r\n createFormsBtn = buildCreateFormsBtn();\r\n buildNewFilterBtn();\r\n\r\n const oodBtnsWrap = document.createElement('div');\r\n oodBtnsWrap.classList.add('OODbuttonBar__btnWrap');\r\n oodBtnsWrap.appendChild(entryBtn);\r\n oodBtnsWrap.appendChild(summaryBtn);\r\n oodBtnsWrap.appendChild(editEmployersBtn);\r\n oodBtnsWrap.appendChild(createFormsBtn);\r\n\r\n buttonBar.appendChild(oodBtnsWrap);\r\n\r\n return buttonBar;\r\n }\r\n\r\n // build Services pop-up that displays when an \"Entry\" button is clicked\r\n async function buildEntryServicePopUp(consumerId, btnType) {\r\n serviceDate = UTIL.getTodaysDate();\r\n //\tserviceDate = '2021-03-22';\r\n // TODO: the results of this AJAX call should be used in the call to function populateConsumerServiceCodeDropdown()\r\n const {\r\n //TODO JOE: Alter SP ANYW_OOD_getConsumerServiceCodes to include T1 (Form4) and T2 (Form8) services AND pass back T1 or T2 to include in the DDL items\r\n getConsumerServiceCodesResult: consumerServices,\r\n } = await OODAjax.getConsumerServiceCodesAsync(consumerId, serviceDate);\r\n\r\n if (consumerServices === undefined || consumerServices.length == 0) {\r\n buildNoServicesPopup(consumerId, btnType);\r\n } else {\r\n // services exist\r\n\r\n selectConsumerServicePopup = POPUP.build({\r\n header: 'Select a Service',\r\n hideX: true,\r\n id: 'selectServicePopup',\r\n });\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n serviceDateInput.addEventListener('focusout', async event => {\r\n serviceDate = event.target.value;\r\n if (serviceDate === '') {\r\n serviceDate = CLEAREDSERVICEDATE;\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n selectedConsumerReferenceNumber = '';\r\n await populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n } else {\r\n const { getConsumerServiceCodesResult: consumerServices } =\r\n await OODAjax.getConsumerServiceCodesAsync(consumerId, serviceDate);\r\n\r\n if (consumerServices === undefined || consumerServices.length == 0) {\r\n servicePopupCancelBtn(btnType);\r\n buildNoServicesPopup(consumerId, btnType);\r\n } else {\r\n populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n }\r\n }\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n });\r\n\r\n // serviceDateInput.addEventListener('keydown', event => {\r\n // \tevent.preventDefault();\r\n // \tevent.stopPropagation();\r\n // });\r\n\r\n consumerServicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'consumerServicesDropdown',\r\n });\r\n\r\n consumerServicesDoneBtn = button.build({\r\n id: 'consumerServicesDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: () => servicePopupDoneBtn(consumerId, btnType),\r\n });\r\n this.doneButton = consumerServicesDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'consumerServicesCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => servicePopupCancelBtn(btnType),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(consumerServicesDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectConsumerServicePopup.appendChild(LineBr);\r\n selectConsumerServicePopup.appendChild(serviceDateInput);\r\n selectConsumerServicePopup.appendChild(consumerServicesDropdown);\r\n selectConsumerServicePopup.appendChild(btnWrap);\r\n\r\n populateConsumerServiceCodeDropdown(consumerId, serviceDate);\r\n\r\n consumerServicesDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n selectedConsumerReferenceNumber = '';\r\n } else {\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n selectedConsumerServiceId = selectedOption.value;\r\n // selectedConsumerServiceType = selectedOption.id;\r\n selectedConsumerFormNumber = selectedOption.id;\r\n selectedConsumerServiceName = selectedOption.text;\r\n selectedConsumerReferenceNumber = selectedOption.text.split('# ')[1];\r\n }\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n });\r\n\r\n serviceDateInputRequired();\r\n consumerServicesDropDownRequired();\r\n\r\n POPUP.show(selectConsumerServicePopup);\r\n\r\n function consumerServicesDropDownRequired() {\r\n if (!selectedConsumerServiceId || selectedConsumerServiceId === '') {\r\n consumerServicesDropdown.classList.add('error');\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n consumerServicesDropdown.classList.remove('error');\r\n consumerServicesDoneBtn.classList.remove('disabled');\r\n serviceDateInputRequired();\r\n }\r\n }\r\n\r\n function serviceDateInputRequired() {\r\n var todayDate = new Date(UTIL.getTodaysDate().split('-').join('/'));\r\n var thisServiceDate = new Date(serviceDate.split('-').join('/'));\r\n if (\r\n !serviceDate ||\r\n serviceDate === CLEAREDSERVICEDATE ||\r\n dates.isAfter(thisServiceDate, todayDate)\r\n ) {\r\n serviceDateInput.classList.add('error');\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n consumerServicesDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n }\r\n\r\n function buildNoServicesPopup(consumerId, btnType) {\r\n // no services for Monthly Placemnet form (ie, after clicking a consumer \"Entry\" btn)\r\n let noServicesPopup = POPUP.build({\r\n header: 'No Services found',\r\n hideX: true,\r\n id: 'noServicePopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noServicesPopup);\r\n loadOODLanding();\r\n //buildEntryServicePopUp(consumerId, btnType)\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no authorized services for the selected consumer. Please contact your Advisor OOD Administrator to enter an authorization or select a different consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noServicesPopup.appendChild(warningMessage);\r\n noServicesPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noServicesPopup);\r\n }\r\n\r\n // build Services pop-up that displays when an \"Monthly Summary\" button is clicked\r\n async function buildSummaryServicePopUp(consumerId, btnType) {\r\n selectSummaryServicePopup = POPUP.build({\r\n header: 'Select a Service',\r\n hideX: true,\r\n id: 'selectSummaryServicePopup',\r\n });\r\n\r\n summaryServicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'summaryServicesDropdown',\r\n });\r\n\r\n summaryServicesDoneBtn = button.build({\r\n id: 'summaryServicesDoneBtn',\r\n text: 'done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'disabled',\r\n callback: () => servicePopupDoneBtn(consumerId, btnType),\r\n });\r\n this.doneButton = summaryServicesDoneBtn;\r\n\r\n let cancelBtn = button.build({\r\n id: 'summaryServiceCancelBtn',\r\n text: 'cancel',\r\n type: 'outlined',\r\n style: 'secondary',\r\n callback: () => servicePopupCancelBtn(btnType),\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(summaryServicesDoneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n selectSummaryServicePopup.appendChild(summaryServicesDropdown);\r\n selectSummaryServicePopup.appendChild(btnWrap);\r\n\r\n populateMonthlySummaryServiceCodeDropdown(consumerId);\r\n\r\n summaryServicesDropdown.addEventListener('change', event => {\r\n selectedConsumerServiceId = event.target.value;\r\n // selectedConsumerServiceType = event.target.id;\r\n selectedConsumerFormNumber = event.target.id;\r\n selectedConsumerServiceName = event.target.text;\r\n });\r\n\r\n summaryServicesDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n selectedConsumerServiceId = '';\r\n // selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n selectedConsumerServiceName = '';\r\n } else {\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n selectedConsumerServiceId = selectedOption.value;\r\n // selectedConsumerServiceType = selectedOption.id;\r\n selectedConsumerFormNumber = selectedOption.id;\r\n selectedConsumerServiceName = selectedOption.text;\r\n }\r\n summaryServicesDropDownRequired();\r\n });\r\n\r\n summaryServicesDropDownRequired();\r\n\r\n POPUP.show(selectSummaryServicePopup);\r\n\r\n function summaryServicesDropDownRequired() {\r\n if (!selectedConsumerServiceId || selectedConsumerServiceId === '') {\r\n summaryServicesDropdown.classList.add('error');\r\n summaryServicesDoneBtn.classList.add('disabled');\r\n } else {\r\n summaryServicesDropdown.classList.remove('error');\r\n summaryServicesDoneBtn.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n\r\n // Event for Done BTN on the Services Popup Window\r\n function servicePopupDoneBtn(consumerId, btnType) {\r\n if (btnType === 'newEntry') {\r\n POPUP.hide(selectServicePopup);\r\n } else {\r\n POPUP.hide(selectSummaryServicePopup);\r\n }\r\n\r\n // find the array element with consumerId\r\n var thisConsumer = selectedConsumers.filter(consumer => {\r\n return consumer.id === consumerId;\r\n });\r\n var thisselectedConsumerServiceId = selectedConsumerServiceId;\r\n var thisselectedConsumerReferenceNumber = selectedConsumerReferenceNumber;\r\n var thisselectedConsumerServiceType = selectedConsumerServiceType;\r\n var thisselectedConsumerFormNumber = selectedConsumerFormNumber;\r\n var thisselectedConsumerServiceName = selectedConsumerServiceName.substr(4).split('- Ref #')[0];\r\n selectedConsumerServiceId = '';\r\n //selectedConsumerServiceType = '';\r\n selectedConsumerFormNumber = '';\r\n // TODO JOE: selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n // TODO JOE: Need to add to the two ifs below to include selectedConsumerServiceType\r\n // TODO JOE: Need to add two more if statements to call init() for the two Form 8 Forms\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '4')\r\n OODForm4MonthlyPlacement.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '4')\r\n OODForm4MonthlySummary.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '6')\r\n Tier1andJDPlanForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '8')\r\n communityBasedAssessmentForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '8')\r\n communityBasedAssessmentSummaryForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '10')\r\n OODFormTransportation.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'newEntry' && thisselectedConsumerFormNumber === '16')\r\n summerYouthWorkExperienceForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n thisselectedConsumerServiceName,\r\n thisselectedConsumerReferenceNumber,\r\n $.session.UserId,\r\n serviceDate,\r\n btnType,\r\n );\r\n if (thisConsumer && btnType === 'monthlySummary' && thisselectedConsumerFormNumber === '16')\r\n summerYouthWorkExperienceSummaryForm.init(\r\n {},\r\n thisConsumer[0],\r\n thisselectedConsumerServiceId,\r\n $.session.UserId,\r\n btnType,\r\n );\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n // Event for Cancel BTN on the Services Popup Window\r\n function servicePopupCancelBtn(btnType) {\r\n selectedConsumerServiceId = '';\r\n selectedConsumerReferenceNumber = '';\r\n if (btnType === 'newEntry') {\r\n POPUP.hide(selectServicePopup);\r\n loadOODLanding();\r\n } else {\r\n POPUP.hide(selectSummaryServicePopup);\r\n loadOODLanding();\r\n }\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n async function generateAndTrackFormProgress(formNumber) {\r\n // Prepare data for form generation\r\n let data = {\r\n referenceNumber: filterValues.referenceNumber,\r\n peopleId: selectedConsumerIds[0],\r\n serviceCodeId: filterValues.serviceId,\r\n startDate: filterValues.serviceDateStart,\r\n endDate: filterValues.serviceDateEnd,\r\n userId: filterValues.userId\r\n };\r\n \r\n try {\r\n switch (formNumber) {\r\n case 4:\r\n sentStatus = await OODAjax.generateForm4(data);\r\n break;\r\n \r\n case 6:\r\n sentStatus = await OODAjax.generateForm6(data);\r\n break;\r\n\r\n case 8:\r\n sentStatus = await OODAjax.generateForm8(data);\r\n break;\r\n \r\n case 10:\r\n sentStatus = await OODAjax.generateForm10(data);\r\n success = true;\r\n break;\r\n\r\n case 16:\r\n sentStatus = await OODAjax.generateForm16(data);\r\n //alert('Form 16 under construction.');\r\n break;\r\n }\r\n } catch (error) {\r\n //console.error(error);\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n overlay.hide();\r\n }\r\n const formsPopup = document.getElementById('createOODFormsPopup');\r\n formsPopup.remove();\r\n overlay.hide();\r\n }\r\n \r\n\r\n // build Filter button, which filters the data displayed on the OOD Entries Table\r\n function buildNewFilterBtn() {\r\n if (!filterValues)\r\n filterValues = {\r\n token: $.session.Token,\r\n serviceDateStart: UTIL.formatDateFromDateObj(dates.subDays(new Date(), 30)),\r\n serviceDateEnd: UTIL.getTodaysDate(),\r\n userId: $.session.UserId,\r\n userName: $.session.LName + ', ' + $.session.Name,\r\n serviceId: '%',\r\n serviceName: '',\r\n referenceNumber: '%',\r\n };\r\n }\r\n\r\n // build Edit Employers button,\r\n function buildEditEmployersBtn() {\r\n return button.build({\r\n text: 'Edit Employers',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: editEmployersBtn,\r\n //classNames: !$.session.formsInsert ? ['disabled'] : ['newPlanBtn'],\r\n classNames:\r\n $.session.OODUpdate || $.session.OODInsert || $.session.OODView\r\n ? ['editEmployersBtn']\r\n : ['editEmployersBtn', 'disabled'],\r\n callback: async () => {\r\n OODEmployers.init();\r\n },\r\n });\r\n }\r\n\r\n // build Each Form Button button,\r\n function buildIndividualFormBtn(formText, formNumber) {\r\n return button.build({\r\n text: formText,\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `OODForm${formNumber}Btn`,\r\n classNames: `OODForm${formNumber}Btn`,\r\n callback: async () => {\r\n generateAndTrackFormProgress(formNumber);\r\n },\r\n });\r\n }\r\n\r\n // build Create Forms button,\r\n function buildCreateFormsBtn() {\r\n return button.build({\r\n text: 'Create OOD Forms',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: createFormsBtn,\r\n classNames: 'createFormsBtn',\r\n callback: () => {\r\n showCreateFormsPopup();\r\n },\r\n });\r\n }\r\n\r\n function showCreateFormsPopup() {\r\n // Popup\r\n const popup = POPUP.build({\r\n id: `createOODFormsPopup`,\r\n hideX: true,\r\n classNames: [\r\n 'popup',\r\n 'visible',\r\n 'popup--filter',\r\n 'createOODFormsPopup']\r\n });\r\n\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n const form4Btn = buildIndividualFormBtn('Form 4 - Monthly Job & Site Development', 4);\r\n const form6Btn = buildIndividualFormBtn('Form 6 - Tier1 and JD Plan', 6);\r\n const form8Btn = buildIndividualFormBtn('Form 8 - Work Activities and Assessment', 8);\r\n const form10Btn = buildIndividualFormBtn('Form 10 - Transportation', 10);\r\n const form16Btn = buildIndividualFormBtn('Form 16 - Summer Youth Experience', 16);\r\n\r\n popup.appendChild(form4Btn);\r\n popup.appendChild(form6Btn);\r\n popup.appendChild(form8Btn);\r\n popup.appendChild(form10Btn);\r\n popup.appendChild(form16Btn);\r\n\r\n // Append to DOM\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n // build the display of the current Filter Settings (next to the Filter button)\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n // var splitDate = selectedDate.split('-');\r\n var splitDate = '2021-12-28'.split('-');\r\n var filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(\r\n splitDate[2],\r\n )}/${splitDate[0].slice(2, 4)}`;\r\n\r\n\r\n if (filterValues.userId === '%' || filterValues.userId === 'ALL') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n }\r\n\r\n if (filterValues.serviceId === '%' || filterValues.serviceId === 'ALL') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n }\r\n if (filterValues.referenceNumber === '%' || filterValues.referenceNumber === 'ALL') {\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n btnWrap.removeChild(referenceNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { buildFilterPopUp('ALL') },\r\n });\r\n\r\n serviceDateStartBtn = button.build({\r\n id: 'serviceDateStartBtn',\r\n text: 'Service Start Date: ' + moment(filterValues.serviceDateStart, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceDateStartBtn') },\r\n });\r\n\r\n serviceDateEndBtn = button.build({\r\n id: 'serviceDateEndBtn',\r\n text: 'Service End Date: ' + moment(filterValues.serviceDateEnd, 'YYYY-MM-DD').format('M/D/YYYY'),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceDateEndBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + filterValues.userName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + filterValues.serviceName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('serviceBtn') },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('serviceBtn') },\r\n });\r\n\r\n referenceNumberBtn = button.build({\r\n id: 'referenceNumberBtn',\r\n text: 'Reference Number: ' + filterValues.referenceNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { buildFilterPopUp('referenceNumberBtn') },\r\n });\r\n referenceNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('referenceNumberBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n serviceDateStartBtnWrap = document.createElement('div');\r\n serviceDateStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateStartBtnWrap.appendChild(serviceDateStartBtn); \r\n btnWrap.appendChild(serviceDateStartBtnWrap);\r\n\r\n serviceDateEndBtnWrap = document.createElement('div');\r\n serviceDateEndBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateEndBtnWrap.appendChild(serviceDateEndBtn);\r\n btnWrap.appendChild(serviceDateEndBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn)\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n referenceNumberBtnWrap = document.createElement('div');\r\n referenceNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n referenceNumberBtnWrap.appendChild(referenceNumberBtn);\r\n referenceNumberBtnWrap.appendChild(referenceNumberCloseBtn);\r\n btnWrap.appendChild(referenceNumberBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) { \r\n if (closeFilter == 'employeeBtn') {\r\n filterValues.userId = '%';\r\n }\r\n if (closeFilter == 'serviceBtn') {\r\n filterValues.serviceId = '%';\r\n }\r\n if (closeFilter == 'referenceNumberBtn') {\r\n filterValues.referenceNumber = '%';\r\n }\r\n loadOODLanding();\r\n } \r\n\r\n // build Filter pop-up that displays when an \"Filter\" button is clicked\r\n function buildFilterPopUp(IsShow) {\r\n // popup\r\n filterPopup = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n employeeDropdown = dropdown.build({\r\n label: 'Employee',\r\n dropdownId: 'employeeDropdown',\r\n });\r\n\r\n serviceDateStartInput = input.build({\r\n type: 'date',\r\n label: 'Service Date Start',\r\n style: 'secondary',\r\n value: filterValues.serviceDateStart,\r\n });\r\n serviceDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Service Date End',\r\n style: 'secondary',\r\n value: filterValues.serviceDateEnd,\r\n });\r\n\r\n servicesDropdown = dropdown.build({\r\n label: 'Services',\r\n dropdownId: 'servicesDropdown',\r\n });\r\n\r\n referenceNumbersDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumbersDropdown',\r\n });\r\n\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => filterPopupDoneBtn(),\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => filterPopupCancelBtn(),\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(employeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateStartBtn')\r\n filterPopup.appendChild(serviceDateStartInput);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateEndBtn')\r\n filterPopup.appendChild(serviceDateEndInput);\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn')\r\n filterPopup.appendChild(servicesDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'referenceNumberBtn')\r\n filterPopup.appendChild(referenceNumbersDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n populateEmployeeDropdown();\r\n populateServiceCodeDropdown();\r\n populateReferenceNumberDropdown();\r\n eventListeners();\r\n // setupFilterEvent();\r\n\r\n //return filterPopup;\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n // Populate the employee DDL on the Filter Popup Window\r\n async function populateEmployeeDropdown() {\r\n const { getActiveEmployeesResult: employees } = await OODAjax.getActiveEmployeesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = employees.map(employee => ({\r\n id: employee.userId,\r\n value: employee.userId,\r\n text: employee.userName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('employeeDropdown', data, filterValues.userId);\r\n }\r\n\r\n // Populate the Service Code DDL on the Filter Popup Window\r\n async function populateServiceCodeDropdown() {\r\n const { getActiveServiceCodesResult: services } = await OODAjax.getActiveServiceCodesAsync(\r\n OODENTRIESFILTER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = services.map(service => ({\r\n id: service.serviceType,\r\n value: service.serviceId,\r\n text: service.serviceName,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('servicesDropdown', data, filterValues.serviceId);\r\n }\r\n\r\n // Populate the Reference Number DDL on the Filter Popup Window\r\n async function populateReferenceNumberDropdown() {\r\n var consumerIds = selectedConsumerIds.join(', ');\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(consumerIds);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: '%', text: 'ALL' }); //ADD Blank value\r\n dropdown.populate('referenceNumbersDropdown', data, filterValues.referenceNumber);\r\n }\r\n\r\n // Populate the Service Code DDL for the 'Entry' Service Popup Window\r\n async function populateConsumerServiceCodeDropdown(consumerId, serviceDate) {\r\n const { getConsumerServiceCodesResult: services } = await OODAjax.getConsumerServiceCodesAsync(\r\n consumerId,\r\n serviceDate,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n //TODO JOE: id: should use selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n let data = services.map(service => ({\r\n // id: (service.serviceType === '') ? 'T10' : service.serviceType, // replace with selectedConsumerServiceType to get T1 and T2 info\r\n id: service.formNumber,\r\n value: service.serviceId,\r\n text: service.serviceName + ' - Ref # ' + service.referenceNumber,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('consumerServicesDropdown', data);\r\n //selectedConsumerServiceId = '';\r\n // consumerServicesDropDownRequired();\r\n consumerServicesDoneBtn.classList.add('disabled');\r\n consumerServicesDropdown.classList.add('error');\r\n }\r\n\r\n // Populate the Service Code DDL for the 'Monthly Summary' Service Popup Window\r\n async function populateMonthlySummaryServiceCodeDropdown(consumerId) {\r\n const { getActiveServiceCodesResult: services } = await OODAjax.getActiveServiceCodesAsync(\r\n FORM4MONTHLYSUMMARYSERVICES,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n //TODO JOE: id: should use selectedConsumerServiceType -- T1 and T2 -- need this new variable to determine whether the Form 4 (T1) or Form 8 (T2) is opened\r\n let data = services.map(service => ({\r\n //id: service.serviceType, // replace with selectedConsumerServiceType to get T1 and T2 info\r\n id: service.formNumber,\r\n value: service.serviceId,\r\n text: service.serviceName,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('summaryServicesDropdown', data);\r\n }\r\n\r\n function eventListeners() {\r\n serviceDateStartInput.addEventListener('change', event => { \r\n if (event.target.value !== '') {\r\n filterValues.serviceDateStart = event.target.value;\r\n } else {\r\n event.target.value = filterValues.serviceDateStart;\r\n } \r\n });\r\n serviceDateEndInput.addEventListener('change', event => { \r\n if (event.target.value !== '') { \r\n filterValues.serviceDateEnd = event.target.value;\r\n } else {\r\n event.target.value = filterValues.serviceDateEnd;\r\n }\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n filterValues.userId = event.target.value;\r\n filterValues.userName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n servicesDropdown.addEventListener('change', event => {\r\n filterValues.serviceId = event.target.value;\r\n filterValues.serviceName = event.target.options[event.target.selectedIndex].text;\r\n });\r\n referenceNumbersDropdown.addEventListener('change', event => {\r\n filterValues.referenceNumber = event.target.value;\r\n });\r\n //routeStatusDropdown.addEventListener('change', event => {\r\n // filterOpts.routeStatus = event.target.value;\r\n // });\r\n }\r\n\r\n async function filterPopupDoneBtn() {\r\n POPUP.hide(filterPopup);\r\n eventListeners();\r\n loadOODLanding();\r\n\r\n //let OODtable = document.getElementById('OODEntriesTable')\r\n // OODEntriesTable = await buildOODEntriesTable(filterValues);\r\n //OODtable.remove();\r\n // DOM.ACTIONCENTER.appendChild(OODEntriesTable);\r\n }\r\n\r\n function filterPopupCancelBtn() {\r\n POPUP.hide(filterPopup);\r\n // OODForm4MonthlyPlacement.init();\r\n // forms.displayFormPopup(formId, documentEdited, consumerId, isRefresh, isTemplate);\r\n }\r\n\r\n function init() {\r\n //DOM.clearActionCenter();\r\n // PROGRESS.SPINNER.show('Loading PDF Forms...');\r\n //loadPDFFormsLanding();\r\n\r\n setActiveModuleAttribute('OOD');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n loadOODLanding,\r\n buildEntryServicePopUp,\r\n buildSummaryServicePopUp,\r\n };\r\n})();\r\n","var OODAjax = (function () {\r\n // OOD Main/Landing Page\r\n async function getOODEntriesAsync(consumerIds, serviceStartDate, serviceEndDate, userId, serviceCode, referenceNumber) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOODEntries/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerIds\":\"' +\r\n consumerIds +\r\n '\", \"serviceStartDate\":\"' +\r\n serviceStartDate +\r\n '\", \"serviceEndDate\":\"' +\r\n serviceEndDate +\r\n '\", \"userId\":\"' +\r\n userId +\r\n '\", \"serviceCode\":\"' +\r\n serviceCode +\r\n '\", \"referenceNumber\":\"' +\r\n referenceNumber +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // OOD Main/Landing Page\r\n async function getActiveEmployeesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveEmployees/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 4 -- Monthly Placement\r\n async function getConsumerEmployersAsync(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Employers Page\r\n async function getActiveEmployersAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveEmployers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function deleteEmployerAsync(employerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteEmployer/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"employerId\":\"' +\r\n employerId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function updateEmployerAsync(\r\n employerId, \r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateEmployer/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employerId, \r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n async function insertEmployerAsync(\r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertEmployer/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n employerName, \r\n address1, \r\n address2, \r\n city, \r\n state,\r\n zipcode,\r\n userId: $.session.UserId\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Employers Page\r\n function getEmployer(employerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getEmployerJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"employerId\":\"' + employerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getEmployerJSONResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n // OOD Main/Landing Page\r\n async function getActiveServiceCodesAsync(serviceCodeType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getActiveServiceCodes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n serviceCodeType: serviceCodeType,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n async function getConsumerReferenceNumbersAsync(consumerIds, startDate, endDate, formNumber) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerReferenceNumbers/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerIds: consumerIds,\r\n startDate: startDate,\r\n endDate: endDate,\r\n formNumber: formNumber,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // OOD Main/Landing Page\r\n async function getConsumerServiceCodesAsync(consumerId, serviceDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerServiceCodes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n serviceDate: serviceDate,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n async function getContactTypesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactTypes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n async function getOutcomesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomes/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n // Form 8 Community Based Assessment Form -- Contact Methods data for DDL\r\n async function getContactMethodsAsync() {\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 \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 8 Community Based Assessment Form -- Indicators data for DDLs\r\n async function getIndicatorsAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getIndicators/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 8 Community Based Assessment Form -- Positions data for DDLs\r\n async function getPositionsAsync(consumerId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOODPositions/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n\r\n // Form 4 -- Monthly Placement\r\n function getForm4MonthlyPlacementEditData(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm4MonthlyPlacementEditDataJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm4MonthlyPlacementEditDataJSONResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n function updateForm4MonthlyPlacementEditData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n employer: data.employer,\r\n contactType: data.contactType,\r\n jobSeekerPresent: data.jobSeekerPresent,\r\n outcome: data.outcome,\r\n TSCNotified: data.TSCNotified,\r\n bilingualSupplement: data.bilingualSupplement,\r\n notes: data.notes,\r\n userId: data.userId,\r\n application: data.application, \r\n interview: data.interview,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm4MonthlyPlacementEditData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm4MonthlyPlacementEditDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Placement\r\n function insertForm4MonthlyPlacementEditData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n employer: data.employer,\r\n contactType: data.contactType,\r\n jobSeekerPresent: data.jobSeekerPresent,\r\n outcome: data.outcome,\r\n TSCNotified: data.TSCNotified,\r\n bilingualSupplement: data.bilingualSupplement,\r\n notes: data.notes,\r\n caseManagerId: data.caseManagerId,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n application: data.application, \r\n interview: data.interview,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm4MonthlyPlacementEditData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm4MonthlyPlacementEditDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Both Forms (Form 4 and Form 8) -- OOD Form Entry\r\n // TODO JOE: LOOK into this for Form 10 \r\n async function deleteOODFormEntryAsync(caseNoteId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteOODFormEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"caseNoteId\":\"' +\r\n caseNoteId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n \r\n \r\n // Form 4 -- Monthly Summary\r\n function getForm4MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm4MonthlySummaryJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm4MonthlySummaryJSONResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Summary\r\n function updateForm4MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emEmploymentGoal: data.emEmploymentGoal,\r\n emReferralQuestions: data.emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch: data.emIndivInputonSearch,\r\n emPotentialIssueswithProgress: data.emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth: data.emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts: data.emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer: data.emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff: data.emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment: data.emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId: data.userId\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm4MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm4MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 4 -- Monthly Summary\r\n function insertForm4MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emEmploymentGoal: data.emEmploymentGoal,\r\n emReferralQuestions: data.emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch: data.emIndivInputonSearch,\r\n emPotentialIssueswithProgress: data.emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth: data.emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts: data.emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer: data.emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff: data.emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment: data.emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId: data.userId,\r\n serviceId: data.serviceId\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm4MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm4MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Both Forms (Form 4 and Form 8) -- Monthly Entry\r\n async function deleteFormMonthlySummaryAsync(emReviewId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteFormMonthlySummary/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"emReviewId\":\"' +\r\n emReviewId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 6 -- Form6Tier1andJDPLan\r\n function getForm6Tier1andJDPLan(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm6Tier1andJDPLan/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm6Tier1andJDPLanResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 6 -- Form6Tier1andJDPLan\r\n function updateForm6Tier1andJDPLan(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n SAMLevel: data.SAMLevel,\r\n contactMethod: data.contactMethod,\r\n narrative: data.narrative,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm6Tier1andJDPLan/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm6Tier1andJDPLanResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 6 -- Form6Tier1andJDPLan\r\n function insertForm6Tier1andJDPLan(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n SAMLevel: data.SAMLevel,\r\n contactMethod: data.contactMethod,\r\n narrative: data.narrative,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm6Tier1andJDPLan/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm6Tier1andJDPLanResult);\r\n },\r\n });\r\n }\r\n \r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function getForm8CommunityBasedAssessment(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm8CommunityBasedAssessment/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm8CommunityBasedAssessmentResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function updateForm8CommunityBasedAssessment(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n position: data.position,\r\n contactMethod: data.contactMethod,\r\n behavioralIndicators: data.behavioralIndicators,\r\n jobTaskQualityIndicators: data.jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators: data.jobTaskQuantityIndicators,\r\n narrative: data.narrative,\r\n interventions: data.interventions,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm8CommunityBasedAssessment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm8CommunityBasedAssessmentResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Form8CommunityBasedAssessment\r\n function insertForm8CommunityBasedAssessment(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n SAMLevel: data.SAMLevel,\r\n position: data.position,\r\n contactMethod: data.contactMethod,\r\n behavioralIndicators: data.behavioralIndicators,\r\n jobTaskQualityIndicators: data.jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators: data.jobTaskQuantityIndicators,\r\n narrative: data.narrative,\r\n interventions: data.interventions,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm8CommunityBasedAssessment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm8CommunityBasedAssessmentResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function getForm8MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm8MonthlySummary/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm8MonthlySummaryResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function updateForm8MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment: data.emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment, \r\n emSupportandTransition: data.emSupportandTransition,\r\n emReviewVTS: data.emReviewVTS,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm8MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm8MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 8 -- Monthly Summary\r\n function insertForm8MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment: data.emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment,\r\n emSupportandTransition: data.emSupportandTransition,\r\n emReviewVTS: data.emReviewVTS,\r\n userId: data.userId,\r\n serviceId: data.serviceId \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm8MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm8MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n\r\n // Form 10 -- Transportation\r\n function getForm10TransportationData(OODTransportationId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm10TransportationData/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"OODTransportationId\":\"' + OODTransportationId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm10TransportationDataResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 10 -- Transportation\r\n function updateForm10TransportationData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n OODTransportationId: data.OODTransportationId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime, \r\n numberInVehicle: data.numberInVehicle,\r\n startLocation: data.startLocation,\r\n endLocation: data.endLocation,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm10TransportationData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm10TransportationDataResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 10 -- Transportation\r\n function insertForm10TransportationData(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n numberInVehicle: data.numberInVehicle,\r\n startLocation: data.startLocation,\r\n endLocation: data.endLocation,\r\n userId: data.userId,\r\n referenceNumber: data.referenceNumber,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm10TransportationData/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm10TransportationDataResult);\r\n },\r\n });\r\n }\r\n\r\n // Form 16 -- Form16SummerYouthWorkExperience\r\n function getForm16SummerYouthWorkExperience(caseNoteId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm16SummerYouthWorkExperience/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"caseNoteId\":\"' + caseNoteId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm16SummerYouthWorkExperienceResult;\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- getForm16SummerYouthWorkExperience\r\n function updateForm16SummerYouthWorkExperience(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n position: data.position,\r\n groupSize: data.groupSize,\r\n interventions: data.interventions,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm16SummerYouthWorkExperience/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm16SummerYouthWorkExperienceResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- getForm16SummerYouthWorkExperience\r\n function insertForm16SummerYouthWorkExperience(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n caseNoteId: data.caseNoteId,\r\n serviceDate: data.serviceDate,\r\n startTime: data.startTime,\r\n endTime: data.endTime,\r\n position: data.position,\r\n groupSize: data.groupSize,\r\n interventions: data.interventions,\r\n userId: data.userId,\r\n serviceId: data.serviceId,\r\n referenceNumber: data.referenceNumber,\r\n caseManagerId: data.caseManagerId,\r\n \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm16SummerYouthWorkExperience/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm16SummerYouthWorkExperienceResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function getForm16MonthlySummary(emReviewId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getForm16MonthlySummary/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"emReviewId\":\"' + emReviewId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.getForm16MonthlySummaryResult[0];\r\n callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function updateForm16MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewId: data.emReviewId,\r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment, \r\n emReviewVTS: data.emReviewVTS,\r\n emOfferedHoursNotWorkNumber: data.emOfferedHoursNotWorkNumber,\r\n userId: data.userId, \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateForm16MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.updateForm16MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n \r\n // Form 16 -- Monthly Summary\r\n function insertForm16MonthlySummary(data, callback) {\r\n data = {\r\n token: $.session.Token, \r\n consumerId: data.consumerId, \r\n emReviewDate: data.emReviewDate,\r\n emReferenceNumber: data.emReferenceNumber,\r\n emNextScheduledReview: data.emNextScheduledReview,\r\n emSummaryIndivSelfAssessment: data.emSummaryIndivSelfAssessment,\r\n emSummaryIndivProviderAssessment: data.emSummaryIndivProviderAssessment,\r\n emReviewVTS: data.emReviewVTS,\r\n emOfferedHoursNotWorkNumber: data.emOfferedHoursNotWorkNumber,\r\n userId: data.userId,\r\n serviceId: data.serviceId \r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertForm16MonthlySummary/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n callback(response.insertForm16MonthlySummaryResult);\r\n },\r\n });\r\n }\r\n\r\n\r\n async function deleteOODForm10TransportationEntry(OODTransportationId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteOODForm10TransportationEntry/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"OODTransportationId\":\"' +\r\n OODTransportationId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // Form 4 -- Generate Form\r\n // async function generateForm4(data, callback) {\r\n // const generateForm4 = await _UTIL.fetchData('generateForm4', {\r\n // token: $.session.Token, \r\n // referenceNumber: data.referenceNumber,\r\n // vendorId: '',\r\n // peopleId: data.peopleId,\r\n // serviceCodeId: data.serviceCodeId,\r\n // startDate: data.startDate,\r\n // endDate: data.endDate,\r\n // });\r\n\r\n // return generateForm4;\r\n // }\r\n\r\n // Form 4 -- Generate Form\r\n function generateForm4(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm4/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm6(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm6/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); \r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n\r\n function generateForm8(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm8/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm10(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm10/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); \r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n function generateForm16(data) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/generateForm16/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n return res;\r\n //callback()\r\n };\r\n data = {\r\n token: $.session.Token, \r\n referenceNumber: data.referenceNumber,\r\n vendorId: '',\r\n peopleId: data.peopleId,\r\n serviceCodeId: data.serviceCodeId,\r\n startDate: data.startDate,\r\n endDate: data.endDate,\r\n userId: data.userId\r\n }\r\n\r\n // Create an HTML form element\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank'); // Open the response in a new tab\r\n\r\n // Create input elements for form data\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('type', 'hidden'); // Hidden input\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n form.setAttribute('success', successFunction);\r\n form.setAttribute('enctype', 'bare');\r\n //form.setAttribute('enctype', 'multipart/form-data');\r\n\r\n\r\n form.onsubmit = successFunction;\r\n\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', data.userId);\r\n userIdInput.id = 'userId';\r\n\r\n var referenceNumberInput = document.createElement('input');\r\n referenceNumberInput.setAttribute('name', 'referenceNumber');\r\n referenceNumberInput.setAttribute('value', data.referenceNumber);\r\n referenceNumberInput.id = 'referenceNumber';\r\n\r\n var peopleIdInput = document.createElement('input');\r\n peopleIdInput.setAttribute('name', 'peopleId');\r\n peopleIdInput.setAttribute('value', data.peopleId);\r\n peopleIdInput.id = 'peopleId';\r\n\r\n var serviceCodeIdInput = document.createElement('input');\r\n serviceCodeIdInput.setAttribute('name', 'serviceCodeId');\r\n serviceCodeIdInput.setAttribute('value', data.serviceCodeId);\r\n serviceCodeIdInput.id = 'serviceCodeId';\r\n\r\n var startDateInput = document.createElement('input');\r\n startDateInput.setAttribute('name', 'startDate');\r\n startDateInput.setAttribute('value', data.startDate);\r\n startDateInput.id = 'startDate';\r\n\r\n var endDateInput = document.createElement('input');\r\n endDateInput.setAttribute('name', 'endDate');\r\n endDateInput.setAttribute('value', data.endDate);\r\n endDateInput.id = 'endDate';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(referenceNumberInput);\r\n form.appendChild(peopleIdInput);\r\n form.appendChild(serviceCodeIdInput);\r\n form.appendChild(startDateInput);\r\n form.appendChild(endDateInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n\r\n return { \r\n \r\n getOODEntriesAsync,\r\n getActiveEmployeesAsync,\r\n getConsumerEmployersAsync,\r\n getActiveEmployersAsync,\r\n deleteEmployerAsync,\r\n updateEmployerAsync,\r\n insertEmployerAsync,\r\n getEmployer,\r\n getActiveServiceCodesAsync,\r\n getConsumerReferenceNumbersAsync,\r\n getConsumerServiceCodesAsync,\r\n getContactTypesAsync,\r\n getOutcomesAsync,\r\n getContactMethodsAsync,\r\n getIndicatorsAsync,\r\n getPositionsAsync,\r\n getForm4MonthlyPlacementEditData,\r\n updateForm4MonthlyPlacementEditData,\r\n insertForm4MonthlyPlacementEditData,\r\n deleteOODFormEntryAsync,\r\n getForm4MonthlySummary,\r\n updateForm4MonthlySummary,\r\n insertForm4MonthlySummary,\r\n deleteFormMonthlySummaryAsync,\r\n getForm6Tier1andJDPLan,\r\n updateForm6Tier1andJDPLan,\r\n insertForm6Tier1andJDPLan,\r\n getForm8CommunityBasedAssessment,\r\n updateForm8CommunityBasedAssessment,\r\n insertForm8CommunityBasedAssessment,\r\n getForm8MonthlySummary,\r\n updateForm8MonthlySummary,\r\n insertForm8MonthlySummary,\r\n getForm10TransportationData,\r\n insertForm10TransportationData,\r\n updateForm10TransportationData,\r\n deleteOODForm10TransportationEntry,\r\n getForm16SummerYouthWorkExperience,\r\n insertForm16SummerYouthWorkExperience,\r\n updateForm16SummerYouthWorkExperience,\r\n getForm16MonthlySummary,\r\n updateForm16MonthlySummary,\r\n insertForm16MonthlySummary,\r\n generateForm4,\r\n generateForm6,\r\n generateForm8,\r\n generateForm10,\r\n generateForm16\r\n };\r\n }) ();\r\n ","const addEditOutcomeServices = (() => {\r\n let outcomeServicesData;\r\n let selectedConsumer;\r\n let filterValues;\r\n let newFilterValues;\r\n let filterRow;\r\n let addOutCome;\r\n let backBtn;\r\n // DOM\r\n let pageWrap;\r\n let overviewTable;\r\n //--\r\n let filterPopup;\r\n let outcomeTypeDropdown;\r\n let effectiveDateStart;\r\n let effectiveDateEnd;\r\n let applyFilterBtn;\r\n let btnWrap;\r\n let outcomeTypeBtnWrap;\r\n let effectiveDateBtnWrap;\r\n\r\n async function init(selectedConsume) {\r\n selectedConsumer = selectedConsume;\r\n buildNewOutcomeServices();\r\n }\r\n\r\n async function buildNewOutcomeServices() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n initFilterValues();\r\n document.getElementById('mini_roster').style.display = 'none';\r\n pageWrap = document.createElement('div');\r\n const consumerCard = buildConsumerCard();\r\n const backbtnWrap = document.createElement('div');\r\n backbtnWrap.classList.add('addOutcomeBtnWrap');\r\n\r\n filteredByData = buildFilteredByData();\r\n addOutCome = addOutcomesButton();\r\n backBtn = backButton();\r\n backbtnWrap.appendChild(addOutCome);\r\n backbtnWrap.appendChild(backBtn);\r\n\r\n pageWrap.appendChild(consumerCard);\r\n pageWrap.appendChild(backbtnWrap);\r\n pageWrap.appendChild(filteredByData);\r\n DOM.ACTIONCENTER.appendChild(pageWrap);\r\n\r\n if ($.session.InsertOutcomes == true) {\r\n addOutCome.classList.remove('disabled');\r\n } else {\r\n addOutCome.classList.add('disabled');\r\n }\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.appendChild(spinner);\r\n\r\n outcomeServicesData = await outcomesAjax.getOutcomeServicsPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n outcomeType: filterValues.outcomeTypeName,\r\n effectiveDateStart: filterValues.effectiveDateStart,\r\n effectiveDateEnd: filterValues.effectiveDateEnd,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n buildOverviewTable();\r\n }\r\n\r\n function addOutcomesButton() {\r\n return button.build({\r\n text: 'ADD NEW OUTCOME',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: async () => {\r\n if (!addOutCome.classList.contains('disabled')) {\r\n addOutcomes.init(selectedConsumer, 0);\r\n }\r\n },\r\n });\r\n }\r\n\r\n function backButton() {\r\n return button.build({\r\n text: 'BACK',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => {\r\n document.getElementById('mini_roster').style.display = 'block';\r\n outcomes.backToOutcomeLoad(selectedConsumer);\r\n },\r\n });\r\n }\r\n\r\n function initFilterValues() {\r\n filterValues = {\r\n outcomeType: '%',\r\n effectiveDateStart: dates.formatISO(dates.subYears(new Date(new Date().setHours(0, 0, 0, 0)), 10)).slice(0, 10),\r\n effectiveDateEnd: dates.formatISO(new Date(new Date().setHours(0, 0, 0, 0))).slice(0, 10),\r\n outcomeTypeName: '%',\r\n };\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildFilteredByData() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n effectiveDateEnd = `${formatDate(filterValues.effectiveDateEnd)}`;\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n if (filterValues.outcomeType === '%') {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n btnWrap.removeChild(outcomeTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n if (document.getElementById('outcomeTypeBtn') != null)\r\n document.getElementById('outcomeTypeBtn').innerHTML = 'Outcome Type: ' + filterValues.outcomeTypeName;\r\n }\r\n\r\n if (effectiveDateEnd == '') {\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n btnWrap.removeChild(effectiveDateBtnWrap);\r\n } else {\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n if (document.getElementById('effectiveDateBtn') != null)\r\n document.getElementById('effectiveDateBtn').innerHTML =\r\n 'Effective As Of: ' + effectiveDateEnd;\r\n }\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type: ' + filterValues.outcomeType,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n effectiveDateBtn = button.build({\r\n id: 'effectiveDateBtn',\r\n text: 'Effective As Of: ' + effectiveDateEnd,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('effectiveDateBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n outcomeTypeBtnWrap = document.createElement('div');\r\n outcomeTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeBtn);\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n\r\n effectiveDateBtnWrap = document.createElement('div');\r\n effectiveDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n effectiveDateBtnWrap.appendChild(effectiveDateBtn);\r\n btnWrap.appendChild(effectiveDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'outcomeTypeBtn') {\r\n filterValues.outcomeType = '%';\r\n filterValues.outcomeTypeName = '%';\r\n newFilterValues.outcomeType = '%';\r\n newFilterValues.outcomeTypeName = '%';\r\n }\r\n applyFilter();\r\n }\r\n\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n // Dropdowns\r\n outcomeTypeDropdown = dropdown.build({\r\n dropdownId: 'outcomeTypeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n value: filterValues.outcomeType,\r\n });\r\n\r\n // Date Inputs\r\n const dateWrap = document.createElement('div');\r\n effectiveDateEndInput = input.build({\r\n type: 'date',\r\n label: 'Effective As Of',\r\n style: 'secondary',\r\n value: filterValues.effectiveDateEnd,\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'effectiveDateBtn') { \r\n dateWrap.appendChild(effectiveDateEndInput);\r\n }\r\n\r\n const btnFilterWrap = document.createElement('div');\r\n btnFilterWrap.classList.add('btnWrap');\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n const cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: function () {\r\n POPUP.hide(filterPopup);\r\n },\r\n });\r\n btnFilterWrap.appendChild(applyFilterBtn);\r\n btnFilterWrap.appendChild(cancelFilterBtn);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(outcomeTypeDropdown);\r\n\r\n filterPopup.appendChild(dateWrap);\r\n filterPopup.appendChild(btnFilterWrap);\r\n\r\n POPUP.show(filterPopup);\r\n populateOutcomeTypeDropdown();\r\n setupFilterEvents();\r\n }\r\n function setupFilterEvents() {\r\n newFilterValues = {};\r\n\r\n outcomeTypeDropdown.addEventListener('change', e => {\r\n var selectedOption = e.target.options[e.target.selectedIndex];\r\n newFilterValues.outcomeType = selectedOption.value;\r\n newFilterValues.outcomeTypeName = selectedOption.text;\r\n });\r\n\r\n effectiveDateEndInput.addEventListener('change', e => {\r\n if (e.target.value === '') {\r\n effectiveDateEndInput.classList.add('error');\r\n } else {\r\n effectiveDateEndInput.classList.remove('error');\r\n newFilterValues.effectiveDateEnd = e.target.value;\r\n }\r\n checkFilterPopForErrors();\r\n });\r\n applyFilterBtn.addEventListener('click', async e => {\r\n POPUP.hide(filterPopup);\r\n if (!applyFilterBtn.classList.contains('disabled')) {\r\n applyFilter();\r\n }\r\n });\r\n }\r\n\r\n async function populateOutcomeTypeDropdown() {\r\n const { getOutcomeTypeDropDownResult: OutcomeType } = await outcomesAjax.getOutcomeTypeDropDownAsync();\r\n let outcomeTypeData = OutcomeType.map(outcomeTypes => ({\r\n id: outcomeTypes.Goal_Type_ID,\r\n value: outcomeTypes.Goal_Type_ID,\r\n text: outcomeTypes.goal_type_description,\r\n }));\r\n outcomeTypeData.unshift({ id: '%', value: '%', text: 'ALL' });\r\n dropdown.populate('outcomeTypeDropdown', outcomeTypeData, filterValues.outcomeType);\r\n }\r\n\r\n function checkFilterPopForErrors() {\r\n const errors = [...filterPopup.querySelectorAll('.error')];\r\n const hasErrors = errors.length > 0 ? true : false;\r\n\r\n if (hasErrors) {\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function applyFilter() {\r\n filterValues = { ...filterValues, ...newFilterValues };\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Data...');\r\n pageWrap.removeChild(overviewTable);\r\n pageWrap.appendChild(spinner);\r\n\r\n outcomeServicesData = await outcomesAjax.getOutcomeServicsPageData({\r\n token: $.session.Token,\r\n selectedConsumerId: selectedConsumer.id,\r\n outcomeType: filterValues.outcomeTypeName == 'ALL' ? '%' : filterValues.outcomeTypeName,\r\n effectiveDateStart: filterValues.effectiveDateStart,\r\n effectiveDateEnd: filterValues.effectiveDateEnd,\r\n appName: $.session.applicationName,\r\n });\r\n\r\n pageWrap.removeChild(spinner);\r\n\r\n buildOverviewTable();\r\n const newfilteredByData = buildFilteredByData();\r\n pageWrap.replaceChild(newfilteredByData, filteredByData);\r\n filteredByData = newfilteredByData;\r\n }\r\n\r\n function buildOverviewTable() {\r\n groupChildData();\r\n\r\n overviewTable = document.createElement('div');\r\n overviewTable.classList.add('outcomeTable');\r\n\r\n const mainHeading = document.createElement('div');\r\n mainHeading.classList.add('outcomeTable__header');\r\n mainHeading.innerHTML = `\r\n
    \r\n
    Outcome Type
    \r\n
    Outcome Statement
    \r\n
    Start Date
    \r\n
    End Date
    \r\n
    \r\n `;\r\n overviewTable.appendChild(mainHeading);\r\n\r\n outcomeServicesData.pageDataParent.forEach(parent => {\r\n const goalID = parent.goal_id;\r\n var eventName;\r\n var startDate =\r\n parent.effectiveDateStart == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(parent.effectiveDateStart.split('T')[0]));\r\n var endDate =\r\n parent.effectiveDateEnd == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(parent.effectiveDateEnd.split('T')[0]));\r\n const rowWrap = document.createElement('div');\r\n rowWrap.classList.add('outcomeTable__subTableWrap');\r\n\r\n // TOP LEVEL ROW\r\n //---------------------------------\r\n const mainDataRow = document.createElement('div');\r\n mainDataRow.classList.add('outcomeTable__mainDataRow', 'outcomeTable__dataRow');\r\n mainDataRow.value = parent.goal_id;\r\n const endIcon = document.createElement('div');\r\n endIcon.classList.add('outcomeTable__endIcon');\r\n\r\n const toggleIcon = document.createElement('div');\r\n toggleIcon.id = 'authToggle';\r\n toggleIcon.classList.add('outcomeTable__endIcon');\r\n toggleIcon.innerHTML = icons['keyArrowRight'];\r\n mainDataRow.innerHTML = ` \r\n
    ${parent.outcomeType}
    \r\n
    ${parent.outcomeStatement}
    \r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n `;\r\n mainDataRow.prepend(toggleIcon);\r\n if ($.session.InsertServices == true) {\r\n endIcon.innerHTML = icons['add'];\r\n } else {\r\n endIcon.innerHTML = `
    `;\r\n }\r\n mainDataRow.appendChild(endIcon);\r\n rowWrap.appendChild(mainDataRow);\r\n\r\n // SUB ROWS\r\n //---------------------------------\r\n const subRowWrap = document.createElement('div');\r\n subRowWrap.classList.add('outcomeTable__subRowWrap');\r\n\r\n const subHeading = document.createElement('div');\r\n subHeading.classList.add('outcomeTable__subHeader');\r\n subHeading.innerHTML = `\r\n
    \r\n
    Service Type
    \r\n
    Service Statement
    \r\n
    Frequency
    \r\n
    Start Date
    \r\n
    End Date
    \r\n `;\r\n subRowWrap.appendChild(subHeading);\r\n\r\n if (outcomeServicesData.pageDataChild[goalID]) {\r\n outcomeServicesData.pageDataChild[goalID].sort((a, b) => {\r\n return parseInt(a.itemnum) - parseInt(b.itemnum);\r\n });\r\n\r\n outcomeServicesData.pageDataChild[goalID].forEach(child => {\r\n const subDataRow = document.createElement('div');\r\n var startDate =\r\n child.serviceStartDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.serviceStartDate.split('T')[0]));\r\n var endDate =\r\n child.serviceEndDate == null || ''\r\n ? ''\r\n : UTIL.abbreviateDateYear(UTIL.formatDateFromIso(child.serviceEndDate.split('T')[0]));\r\n var serviceTyp = child.serviceType == null ? '' : child.serviceType;\r\n subDataRow.classList.add('outcomeTable__subDataRow', 'outcomeTable__dataRow');\r\n subDataRow.innerHTML = `\r\n
    \r\n
    ${serviceTyp}
    \r\n
    ${child.serviceStatement}
    \r\n
    ${child.frequency}
    \r\n
    ${startDate}
    \r\n
    ${endDate}
    \r\n `;\r\n subRowWrap.appendChild(subDataRow);\r\n\r\n subDataRow.addEventListener('click', e => {\r\n if ($.session.UpdateServices == true) {\r\n addServicesForm.init(selectedConsumer, child.objective_Id, 0);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // EVENT\r\n //---------------------------------\r\n mainDataRow.addEventListener('click', e => {\r\n var goalID = e.currentTarget.value;\r\n if (eventName != 'toggle' && eventName != 'add') {\r\n if ($.session.UpdateOutcomes == true) {\r\n addOutcomes.init(selectedConsumer, goalID);\r\n }\r\n }\r\n eventName = '';\r\n });\r\n\r\n toggleIcon.addEventListener('click', e => {\r\n const toggle = document.querySelector('#authToggle');\r\n eventName = 'toggle';\r\n if (subRowWrap.classList.contains('active')) {\r\n // close it\r\n subRowWrap.classList.remove('active');\r\n toggleIcon.innerHTML = icons.keyArrowRight;\r\n } else {\r\n // open it\r\n subRowWrap.classList.add('active');\r\n toggleIcon.innerHTML = icons.keyArrowDown;\r\n }\r\n });\r\n\r\n endIcon.addEventListener('click', e => {\r\n eventName = 'add';\r\n addServicesForm.init(selectedConsumer, 0, goalID);\r\n });\r\n\r\n // ASSEMBLY\r\n //---------------------------------\r\n rowWrap.appendChild(subRowWrap);\r\n overviewTable.appendChild(rowWrap);\r\n });\r\n\r\n pageWrap.appendChild(overviewTable);\r\n }\r\n\r\n function groupChildData() {\r\n if (!outcomeServicesData.pageDataChild) {\r\n return;\r\n }\r\n\r\n const groupedChildren = outcomeServicesData.pageDataChild.reduce((obj, child) => {\r\n if (!obj[child.goal_id]) {\r\n obj[child.goal_id] = [];\r\n obj[child.goal_id].push(child);\r\n } else {\r\n obj[child.goal_id].push(child);\r\n }\r\n\r\n return obj;\r\n }, {});\r\n\r\n outcomeServicesData.pageDataChild = { ...groupedChildren };\r\n }\r\n\r\n function formatDate(date) {\r\n if (!date) return '';\r\n\r\n return UTIL.abbreviateDateYear(UTIL.formatDateFromIso(date.split('T')[0]));\r\n }\r\n\r\n return {\r\n init,\r\n buildNewOutcomeServices,\r\n };\r\n})();\r\n","const addOutcomes = (() => {\r\n //Inputs\r\n var selectedConsumers;\r\n var selectedConsumerId;\r\n let startDate;\r\n let endDate;\r\n let outcomeType;\r\n let outcomeTypeName;\r\n let outcomeStatement;\r\n let goalId;\r\n let BtnName;\r\n let location;\r\n\r\n async function init(selectedConsume, goalID) {\r\n selectedConsumers = selectedConsume;\r\n goalId = goalID;\r\n buildNewOutcomes();\r\n SAVE_BTN.classList.add('disabled');\r\n }\r\n\r\n // Build New Outcomes Page \r\n async function buildNewOutcomes() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n selectedConsumerId = selectedConsumers.id;\r\n const importantOutcomeForm = await buildOutComeForm();\r\n landingPage.appendChild(importantOutcomeForm);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n async function buildOutComeForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n\r\n if (goalId > 0) {\r\n const result = await outcomesAjax.getGoalEntriesByIdAsync(goalId);\r\n const { getGoalEntriesByIdResult } = result;\r\n\r\n startDate = getGoalEntriesByIdResult[0].effectiveDateStart == '' ? '' : moment(getGoalEntriesByIdResult[0].effectiveDateStart).format('YYYY-MM-DD');\r\n endDate = getGoalEntriesByIdResult[0].effectiveDateEnd == '' ? '' : moment(getGoalEntriesByIdResult[0].effectiveDateEnd).format('YYYY-MM-DD');\r\n outcomeType = getGoalEntriesByIdResult[0].outcomeType;\r\n outcomeStatement = getGoalEntriesByIdResult[0].outcomeStatement;\r\n location = getGoalEntriesByIdResult[0].location;\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n startDate = UTIL.getTodaysDate();\r\n endDate = '';\r\n outcomeType = '';\r\n outcomeStatement = '';\r\n location = '';\r\n BtnName = 'SAVE';\r\n }\r\n\r\n outcomeDropdown = dropdown.build({\r\n id: 'outcomeDropdown',\r\n label: \"Outcome Type\",\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcomeType,\r\n });\r\n outcomeStatementInput = input.build({\r\n id: 'outcomeStatementInput',\r\n type: 'textarea',\r\n label: 'Outcome Statement',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: outcomeStatement,\r\n });\r\n dateStart = input.build({\r\n id: 'dateStart',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n dateEnd = input.build({\r\n id: 'dateEnd',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n locationDropdown = dropdown.build({\r\n id: 'locationDropdown',\r\n label: \"Location\",\r\n dropdownId: \"locationDropdown\",\r\n value: location,\r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateOutcomes();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { addEditOutcomeServices.init(selectedConsumers) },\r\n });\r\n\r\n const column1 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Outcome
    `;\r\n addNewCard.appendChild(addNewCardBody)\r\n column1.appendChild(addNewCard)\r\n\r\n addNewCardBody.appendChild(outcomeDropdown);\r\n addNewCardBody.appendChild(outcomeStatementInput);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('addOutcomedateWrap');\r\n dateWrap.appendChild(dateStart);\r\n dateEnd.style.marginLeft = '2%';\r\n dateWrap.appendChild(dateEnd);\r\n locationDropdown.style.marginLeft = '2%';\r\n dateWrap.appendChild(locationDropdown);\r\n addNewCardBody.appendChild(dateWrap);\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('addOutcomeBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateOutcomeTypesDropdown();\r\n eventListeners();\r\n requiredFieldsOfAddOutcome(startDate, endDate, outcomeType, outcomeStatement);\r\n return employeeInfoDiv;\r\n }\r\n\r\n\r\n async function populateOutcomeTypesDropdown() {\r\n const {\r\n getOutcomeTypeDropDownResult: OutcomeType,\r\n } = await outcomesAjax.getOutcomeTypeDropDownAsync();\r\n let outcomeTypeData = OutcomeType.map((outcomeTypes) => ({\r\n id: outcomeTypes.Goal_Type_ID,\r\n value: outcomeTypes.Goal_Type_ID,\r\n text: outcomeTypes.goal_type_description\r\n }));\r\n outcomeTypeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"outcomeDropdown\", outcomeTypeData, outcomeType);\r\n\r\n const {\r\n getLocationDropDownResult: locationDrop,\r\n } = await outcomesAjax.getLocationDropDownAsync();\r\n let locationData = locationDrop.map((locationDrops) => ({\r\n id: locationDrops.locationID,\r\n value: locationDrops.locationID,\r\n text: locationDrops.locationDescription\r\n }));\r\n locationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"locationDropdown\", locationData, location);\r\n }\r\n\r\n function eventListeners() {\r\n outcomeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n outcomeType = selectedOption.value;\r\n outcomeTypeName = selectedOption.innerHTML;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n location = selectedOption.value;\r\n });\r\n\r\n outcomeStatementInput.addEventListener('input', event => {\r\n outcomeStatement = event.target.value.trim();\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n dateStart.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n dateEnd.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n checkRequiredFieldsOfAddOutcome();\r\n });\r\n }\r\n\r\n\r\n function checkRequiredFieldsOfAddOutcome() {\r\n var startDateVal = dateStart.querySelector('#dateStart');\r\n var endDateVal = dateEnd.querySelector('#dateEnd');\r\n var outcomeStatementVal = outcomeStatementInput.querySelector('#outcomeStatementInput');\r\n var outComeVal = outcomeDropdown.querySelector('#outcomeDropdown');\r\n\r\n requiredFieldsOfAddOutcome(startDateVal.value, endDateVal.value, outComeVal.value, outcomeStatementVal.value)\r\n }\r\n\r\n function requiredFieldsOfAddOutcome(startDateVal, endDateVal, outComeVal, outcomeStatementVal) {\r\n if (startDateVal === '') {\r\n dateStart.classList.add('error');\r\n } else {\r\n dateStart.classList.remove('error');\r\n }\r\n\r\n if (endDateVal != null && endDateVal != '' && startDateVal > endDateVal) {\r\n dateEnd.classList.add('error');\r\n }\r\n else {\r\n dateEnd.classList.remove('error');\r\n }\r\n\r\n if (outComeVal === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n\r\n if (outcomeStatementVal.trim() === '') {\r\n outcomeStatementInput.classList.add('error');\r\n } else {\r\n outcomeStatementInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatusOfAddOutcome();\r\n }\r\n\r\n function setBtnStatusOfAddOutcome() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length > 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUpdateOutcomes() {\r\n const result = await outcomesAjax.insertOutcomeInfoAsync(startDate, endDate, outcomeType, UTIL.removeUnsavableNoteText(outcomeStatement), $.session.UserId, goalId, selectedConsumerId, location);\r\n const { insertOutcomeInfoResult } = result;\r\n if (insertOutcomeInfoResult[0].goal_id != '0') {\r\n addEditOutcomeServices.init(selectedConsumers)\r\n }\r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewOutcomes,\r\n };\r\n})(); \r\n","const addServicesForm = (() => {\r\n //Inputs\r\n var selectedConsumers;\r\n var selectedConsumerId;\r\n let startDate;\r\n let endDate;\r\n let outcomeType;\r\n let outcomeTypeName;\r\n let servicesStatement;\r\n let ServiceType;\r\n let ServiceTypeName;\r\n let method;\r\n let success;\r\n let frequencyModifier;\r\n let frequency;\r\n let frequencyPeriod;\r\n let objectiveId;\r\n let BtnName;\r\n let outcomeGoalId;\r\n let duration;\r\n let location;\r\n let SAVE_BTN; \r\n\r\n async function init(selectedConsume, ObjectiveID , goalId) {\r\n selectedConsumers = selectedConsume;\r\n objectiveId = ObjectiveID;\r\n outcomeGoalId = goalId > 0 ? goalId : '';\r\n await buildNewServicesForm();\r\n SAVE_BTN.classList.add('disabled'); \r\n }\r\n\r\n // Build New Outcomes Page \r\n async function buildNewServicesForm() {\r\n DOM.clearActionCenter();\r\n DOM.scrollToTopOfPage();\r\n landingPage = document.createElement('div');\r\n selectedConsumerId = selectedConsumers.id;\r\n const importantOutcomeForm = await buildServicesForm();\r\n landingPage.appendChild(importantOutcomeForm);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n }\r\n\r\n async function buildServicesForm() {\r\n const employeeInfoDiv = document.createElement('div');\r\n employeeInfoDiv.classList.add('additionalQuestionWrap');\r\n if (objectiveId > 0) {\r\n const result = await outcomesAjax.getObjectiveEntriesByIdAsync(objectiveId);\r\n const { getObjectiveEntriesByIdResult } = result;\r\n\r\n startDate = getObjectiveEntriesByIdResult[0].serviceStartDate == '' ? '' : moment(getObjectiveEntriesByIdResult[0].serviceStartDate).format('YYYY-MM-DD');\r\n endDate = getObjectiveEntriesByIdResult[0].serviceEndDate == '' ? '' : moment(getObjectiveEntriesByIdResult[0].serviceEndDate).format('YYYY-MM-DD');\r\n outcomeType = getObjectiveEntriesByIdResult[0].goal_id;\r\n servicesStatement = getObjectiveEntriesByIdResult[0].serviceStatement;\r\n ServiceType = getObjectiveEntriesByIdResult[0].objective_type;\r\n method = getObjectiveEntriesByIdResult[0].objective_method;\r\n success = getObjectiveEntriesByIdResult[0].success_determination;\r\n frequencyModifier = getObjectiveEntriesByIdResult[0].frequency_modifier;\r\n frequency = getObjectiveEntriesByIdResult[0].frequency_occurance;\r\n frequencyPeriod = getObjectiveEntriesByIdResult[0].frequency_peroid;\r\n duration = getObjectiveEntriesByIdResult[0].duration;\r\n location = getObjectiveEntriesByIdResult[0].location;\r\n BtnName = 'UPDATE';\r\n }\r\n else {\r\n const result = await outcomesAjax.getGoalEntriesByIdAsync(outcomeGoalId);\r\n const { getGoalEntriesByIdResult } = result;\r\n\r\n startDate = UTIL.getTodaysDate();\r\n endDate = '';\r\n outcomeType = outcomeGoalId; \r\n servicesStatement = '';\r\n ServiceType = '';\r\n method = '';\r\n success = '';\r\n frequencyModifier = '';\r\n frequency = '';\r\n frequencyPeriod = '';\r\n duration = '';\r\n location = getGoalEntriesByIdResult[0].location;\r\n BtnName = 'SAVE';\r\n }\r\n\r\n outcomeDropdown = dropdown.build({\r\n id: 'outcomeDropdown',\r\n label: \"Outcome\",\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcomeType,\r\n });\r\n\r\n ServiceTypeDropdown = dropdown.build({\r\n id: 'ServiceTypeDropdown',\r\n label: \"Service Type\",\r\n dropdownId: \"ServiceTypeDropdown\",\r\n value: ServiceType,\r\n });\r\n\r\n servicesStatementInput = input.build({\r\n id: 'servicesStatementInput',\r\n type: 'textarea',\r\n label: 'Service Statement',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: servicesStatement,\r\n });\r\n\r\n methodInput = input.build({\r\n id: 'methodInput',\r\n type: 'textarea',\r\n label: 'Method',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: method,\r\n });\r\n\r\n successInput = input.build({\r\n id: 'successInput',\r\n type: 'textarea',\r\n label: 'Success',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: success,\r\n });\r\n\r\n dateStart = input.build({\r\n id: 'dateStart',\r\n type: 'date',\r\n label: 'Start Date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n dateEnd = input.build({\r\n id: 'dateEnd',\r\n type: 'date',\r\n label: 'End Date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n locationDropdown = dropdown.build({\r\n id: 'locationDropdown',\r\n label: \"Location\",\r\n dropdownId: \"locationDropdown\",\r\n value: location,\r\n });\r\n\r\n frequencyModifierDropdown = dropdown.build({\r\n id: 'frequencyModifierDropdown',\r\n label: \"Frequency Modifier\",\r\n dropdownId: \"frequencyModifierDropdown\",\r\n value: frequencyModifier,\r\n });\r\n\r\n frequencyInput = input.build({\r\n id: 'frequencyInput',\r\n type: 'number',\r\n label: 'Frequency',\r\n style: 'secondary',\r\n value: frequency,\r\n attributes: [ \r\n { key: 'min', value: '0' }, \r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n frequencyPeriodDropdown = dropdown.build({\r\n id: 'frequencyPeriodDropdown',\r\n label: \"Frequency Period\",\r\n dropdownId: \"frequencyPeriodDropdown\",\r\n value: frequencyPeriod,\r\n });\r\n\r\n durationInput = input.build({\r\n id: 'durationInput',\r\n type: 'text',\r\n label: 'Duration',\r\n style: 'secondary',\r\n value: duration, \r\n });\r\n\r\n // button\r\n SAVE_BTN = button.build({\r\n text: BtnName,\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (!SAVE_BTN.classList.contains('disabled')) {\r\n SAVE_BTN.classList.add('disabled');\r\n await saveUpdateOutcomesService();\r\n }\r\n },\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: async () => { addEditOutcomeServices.init(selectedConsumers) },\r\n });\r\n var LineBr = document.createElement('br');\r\n const column1 = document.createElement('div');\r\n column1.classList.add('col-1');\r\n const addNewCard = document.createElement(\"div\");\r\n addNewCard.classList.add(\"card\");\r\n const addNewCardBody = document.createElement(\"div\");\r\n addNewCardBody.classList.add(\"card__body\");\r\n addNewCard.innerHTML = `
    Outcome
    `;\r\n addNewCard.appendChild(addNewCardBody);\r\n column1.appendChild(addNewCard);\r\n\r\n const addNewServiceCard = document.createElement(\"div\");\r\n addNewServiceCard.classList.add(\"card\"); \r\n const addNewServiceCardBody = document.createElement(\"div\");\r\n addNewServiceCardBody.classList.add(\"card__body\");\r\n addNewServiceCard.innerHTML = `
    Service
    `;\r\n addNewServiceCard.appendChild(addNewServiceCardBody)\r\n column1.appendChild(addNewServiceCard)\r\n\r\n const consumerNameDisplay = document.createElement(\"p\");\r\n consumerNameDisplay.classList.add(\"heading\");\r\n consumerNameDisplay.innerHTML = `${'Frequency'}`;\r\n consumerNameDisplay.style.marginLeft = '10px';\r\n\r\n addNewCardBody.appendChild(outcomeDropdown);\r\n\r\n addNewServiceCardBody.appendChild(ServiceTypeDropdown);\r\n addNewServiceCardBody.appendChild(servicesStatementInput);\r\n addNewServiceCardBody.appendChild(methodInput);\r\n addNewServiceCardBody.appendChild(successInput);\r\n\r\n var dateWrap = document.createElement('div');\r\n dateWrap.classList.add('addOutcomedateWrap');\r\n dateWrap.appendChild(dateStart);\r\n dateEnd.style.marginLeft = '2%';\r\n dateWrap.appendChild(dateEnd);\r\n locationDropdown.style.marginLeft = '2%';\r\n dateWrap.appendChild(locationDropdown);\r\n addNewServiceCardBody.appendChild(dateWrap);\r\n\r\n addNewServiceCardBody.appendChild(consumerNameDisplay);\r\n addNewServiceCardBody.appendChild(LineBr);\r\n addNewServiceCardBody.appendChild(LineBr);\r\n\r\n var infoWrap = document.createElement('div');\r\n infoWrap.classList.add('frequencyDTWrap');\r\n frequencyModifierDropdown.classList.add('width30Per');\r\n infoWrap.appendChild(frequencyModifierDropdown);\r\n frequencyInput.classList.add('width32Per');\r\n infoWrap.appendChild(frequencyInput);\r\n frequencyPeriodDropdown.classList.add('width32Per');\r\n infoWrap.appendChild(frequencyPeriodDropdown);\r\n addNewServiceCardBody.appendChild(infoWrap);\r\n\r\n var durationWrap = document.createElement('div');\r\n durationWrap.classList.add('frequencyDTWrap');\r\n durationInput.classList.add('width32Per');\r\n durationWrap.appendChild(durationInput);\r\n addNewServiceCardBody.appendChild(durationWrap); \r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('addOutcomeBtnWrap');\r\n btnWrap.style.marginLeft = '25%';\r\n btnWrap.style.width = '50%';\r\n\r\n SAVE_BTN.style.width = '52%';\r\n btnWrap.appendChild(SAVE_BTN);\r\n\r\n CANCEL_BTN.style.width = '52%';\r\n CANCEL_BTN.style.marginLeft = '5%';\r\n btnWrap.appendChild(CANCEL_BTN);\r\n addNewServiceCardBody.appendChild(btnWrap);\r\n\r\n employeeInfoDiv.appendChild(column1);\r\n populateOutcomeDropdown();\r\n eventListeners();\r\n populatefrequencyModifierDropdown();\r\n RequiredFieldsOfAddServiceForm(outcomeType, servicesStatement, startDate, endDate);\r\n return employeeInfoDiv;\r\n } \r\n\r\n async function populatefrequencyModifierDropdown() {\r\n const {\r\n getServiceFrequencyTypeDropDownResult: ServiceFrequency,\r\n } = await outcomesAjax.getServiceFrequencyTypeDropDownAsync('frequency');\r\n let ServiceFrequencyData = ServiceFrequency.map((serviceFrequency) => ({\r\n id: serviceFrequency.serviceFrequencyType_id,\r\n value: serviceFrequency.serviceFrequencyType_id,\r\n text: serviceFrequency.serviceFrequencyType_name\r\n }));\r\n ServiceFrequencyData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"frequencyModifierDropdown\", ServiceFrequencyData, frequencyModifier);\r\n }\r\n\r\n async function populateOutcomeDropdown() {\r\n const {\r\n getOutcomeServiceDropDownResult: OutcomeType,\r\n } = await outcomesAjax.getOutcomeServiceDropDownAsync();\r\n\r\n let outcomeTypeData = OutcomeType.map(outcomeTypes => ({\r\n id: outcomeTypes.goal_id,\r\n value: outcomeTypes.goal_id,\r\n text: outcomeTypes.goal_serviceStatement,\r\n })).sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n\r\n outcomeTypeData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('outcomeDropdown', outcomeTypeData, outcomeType);\r\n\r\n const { getServiceFrequencyTypeDropDownResult: ServiceFrequencyType } =\r\n await outcomesAjax.getServiceFrequencyTypeDropDownAsync('service');\r\n\r\n let ServiceFrequencyData = ServiceFrequencyType.map(serviceFrequencyType => ({\r\n id: serviceFrequencyType.serviceFrequencyType_id,\r\n value: serviceFrequencyType.serviceFrequencyType_id,\r\n text: serviceFrequencyType.serviceFrequencyType_name,\r\n })).sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n ServiceFrequencyData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('ServiceTypeDropdown', ServiceFrequencyData, ServiceType);\r\n\r\n const frequencyPeriodDropdownData = [\r\n { id: 'H', value: 'H', text: 'per Hour' },\r\n { id: 'D', value: 'D', text: 'per Day' },\r\n { id: 'W', value: 'W', text: 'per Week' },\r\n { id: 'M', value: 'M', text: 'per Month' },\r\n { id: 'Y', value: 'Y', text: 'per Year' },\r\n ];\r\n frequencyPeriodDropdownData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate('frequencyPeriodDropdown', frequencyPeriodDropdownData, frequencyPeriod);\r\n\r\n const { getLocationDropDownResult: locationDrop } = await outcomesAjax.getLocationDropDownAsync();\r\n\r\n let locationData = locationDrop\r\n .map(locationDrops => ({\r\n id: locationDrops.locationID,\r\n value: locationDrops.locationID,\r\n text: locationDrops.locationDescription,\r\n }))\r\n .sort((a, b) => {\r\n if (a.text < b.text) return -1;\r\n if (a.text > b.text) return 1;\r\n return 0;\r\n });\r\n locationData.unshift({ id: null, value: '', text: '' });\r\n dropdown.populate(\"locationDropdown\", locationData, location); \r\n }\r\n\r\n function eventListeners() {\r\n outcomeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n outcomeType = selectedOption.value;\r\n outcomeTypeName = selectedOption.innerHTML;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n ServiceTypeDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n ServiceType = selectedOption.value;\r\n ServiceTypeName = selectedOption.innerHTML; \r\n getRequiredFieldsOfAddServiceForm(); \r\n });\r\n\r\n servicesStatementInput.addEventListener('input', event => {\r\n servicesStatement = event.target.value.trim(); \r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n methodInput.addEventListener('input', event => {\r\n method = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n successInput.addEventListener('input', event => {\r\n success = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyInput.addEventListener('input', event => {\r\n frequency = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n dateStart.addEventListener('input', event => {\r\n startDate = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n dateEnd.addEventListener('input', event => {\r\n endDate = event.target.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyModifierDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n frequencyModifier = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n frequencyPeriodDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n frequencyPeriod = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n durationInput.addEventListener('input', event => {\r\n duration = event.target.value.trim();\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n location = selectedOption.value;\r\n getRequiredFieldsOfAddServiceForm();\r\n });\r\n }\r\n\r\n\r\n function getRequiredFieldsOfAddServiceForm() {\r\n var startDateVal = dateStart.querySelector('#dateStart');\r\n var endDateVal = dateEnd.querySelector('#dateEnd');\r\n var servicesStatementVal = servicesStatementInput.querySelector('#servicesStatementInput');\r\n var outComeVal = outcomeDropdown.querySelector('#outcomeDropdown');\r\n RequiredFieldsOfAddServiceForm(outComeVal.value, servicesStatementVal.value, startDateVal.value, endDateVal.value);\r\n }\r\n\r\n function RequiredFieldsOfAddServiceForm(outComeVal, servicesStatementVal, startDateVal, endDateVal) {\r\n if (outComeVal === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n \r\n if (servicesStatementVal.trim() === '') { \r\n servicesStatementInput.classList.add('error');\r\n } else {\r\n servicesStatementInput.classList.remove('error');\r\n }\r\n\r\n if (endDateVal != null && endDateVal != '' && startDateVal > endDateVal) {\r\n dateEnd.classList.add('error');\r\n }\r\n else {\r\n dateEnd.classList.remove('error');\r\n }\r\n setBtnStatusOfAddOutcome();\r\n }\r\n\r\n function setBtnStatusOfAddOutcome() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length > 0) {\r\n SAVE_BTN.classList.add('disabled');\r\n return;\r\n } else {\r\n SAVE_BTN.classList.remove('disabled');\r\n }\r\n }\r\n\r\n async function saveUpdateOutcomesService() {\r\n const result = await outcomesAjax.insertOutcomeServiceInfoAsync(startDate, endDate, outcomeType, UTIL.removeUnsavableNoteText(servicesStatement), ServiceType, UTIL.removeUnsavableNoteText(method), UTIL.removeUnsavableNoteText(success), frequencyModifier, frequency, frequencyPeriod, $.session.UserId, objectiveId, selectedConsumerId, location, duration);\r\n const { insertOutcomeServiceInfoResult } = result;\r\n if (insertOutcomeServiceInfoResult[0].objective_Id != '0') {\r\n addEditOutcomeServices.init(selectedConsumers)\r\n } \r\n }\r\n\r\n\r\n return {\r\n init,\r\n buildNewServicesForm,\r\n };\r\n})(); \r\n","var outcomes = (function () {\r\n var OUTCOMES_SECTION;\r\n\r\n // Filter DOM\r\n var filterPopup;\r\n var filterButton;\r\n var dateInput;\r\n var serviceDropdown;\r\n var outcomeDropdown;\r\n var applyButton;\r\n //const currentFilterDisplay = document.createElement(\"div\");\r\n // Filter Values\r\n var currDate;\r\n var currService;\r\n var currOutcome;\r\n var currOutcomeId;\r\n // Data\r\n //----------------------------\r\n var selectedConsumerObj;\r\n var selectedConsumerId;\r\n let selectedConsume;\r\n // front card data\r\n var outcomesDataObj;\r\n var outcomesPrompts;\r\n var outcomesLocations;\r\n // back card dom (popup)\r\n var detailsPopup;\r\n var primaryLocationDropdown;\r\n var secondaryLocationDropdown;\r\n var resultsDropdown;\r\n var promptsDropdown;\r\n var attemptsDropdown;\r\n var cIDropdown;\r\n var timeInputs;\r\n var saveBtn;\r\n var deleteBtn;\r\n var noteInput;\r\n var enteredByUser;\r\n var edit__lastEditedByDetails;\r\n // back card data\r\n var ciData;\r\n var successObj;\r\n var successType;\r\n var successDetails;\r\n var currResult = '';\r\n var currReason = '';\r\n var currAttempts = '';\r\n var currPrompt = '';\r\n var currCI = '';\r\n var currNote = '';\r\n var currStartTime = '';\r\n var currEndTime = '';\r\n var defaultObjLocationId;\r\n var defaultGoalLocationId;\r\n // save/update data\r\n var personId;\r\n var objectiveId;\r\n var activityId;\r\n var objdate;\r\n var success;\r\n var goalnote;\r\n var promptType;\r\n var promptNumber;\r\n var locationId;\r\n var locationSecondaryId;\r\n var goalStartTime;\r\n var goalEndTime;\r\n var goalCILevel;\r\n // other\r\n var dateSpanMessage;\r\n var daysBack;\r\n var daysBackDate;\r\n var useConsumerLocation;\r\n var defaultPrimaryLocation;\r\n var currentSection;\r\n var todaysDateToDisplay;\r\n var firstDayOfWeek;\r\n var lastDayOfWeek;\r\n var firstDayOfMonth;\r\n var lastDayOfMonth;\r\n var yearOfCurrentDay;\r\n var dailyAbsent = false;\r\n var consumerName;\r\n const todaysDate = UTIL.getTodaysDate();\r\n let initLoad;\r\n\r\n let btnWrap;\r\n let serviceBtnWrap;\r\n let outcomeTypeBtnWrap;\r\n var tmpService;\r\n var tmpOutcome;\r\n var tmpOutcomeId;\r\n let editOutcomeBtn;\r\n\r\n // Workers\r\n //------------------------------------\r\n function disableNewOutcomeFields() {\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n //noteInput.classList.add('disabled');\r\n }\r\n function disableOutcomeFieldsOtherUser() {\r\n primaryLocationDropdown.classList.add('disabled');\r\n secondaryLocationDropdown.classList.add('disabled');\r\n resultsDropdown.classList.add('disabled');\r\n attemptsDropdown.classList.add('disabled');\r\n promptsDropdown.classList.add('disabled');\r\n cIDropdown.classList.add('disabled');\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n // noteInput.classList.add('disabled');\r\n noteInput.querySelector('.input-field__input').setAttribute('readonly', 'true');\r\n saveBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n }\r\n\r\n function clearBackCardValues() {\r\n //ciData = '';\r\n successObj = '';\r\n successType = '';\r\n successDetails = '';\r\n currReason = '';\r\n currAttempts = '';\r\n currPrompt = '';\r\n currCI = '';\r\n currNote = '';\r\n currStartTime = '';\r\n currEndTime = '';\r\n goalnote = '';\r\n promptType = null;\r\n promptNumber = null;\r\n locationId = null;\r\n locationSecondaryId = null;\r\n goalStartTime = null;\r\n goalEndTime = null;\r\n goalCILevel = null;\r\n }\r\n function sortOutcomes(results) {\r\n outcomesDataObj = {};\r\n\r\n results.forEach(res => {\r\n var occurrence = res.Objective_Recurrance ? res.Objective_Recurrance : 'NF';\r\n\r\n if (!outcomesDataObj[occurrence]) {\r\n outcomesDataObj[occurrence] = [];\r\n }\r\n\r\n res.nullHourDaySuccesses = res.nullHourDaySuccesses !== '' ? res.nullHourDaySuccesses.split(',') : [];\r\n res.weekSuccesses = res.weekSuccesses !== '' ? res.weekSuccesses.split(',') : [];\r\n res.monthSuccesses = res.monthSuccesses !== '' ? res.monthSuccesses.split(',') : [];\r\n res.yearSuccesses = res.yearSuccesses !== '' ? res.yearSuccesses.split(',') : [];\r\n\r\n outcomesDataObj[occurrence].push(res);\r\n });\r\n }\r\n function sortOutcomeLocations(results) {\r\n outcomesLocations = {};\r\n\r\n results.forEach(res => {\r\n if (!outcomesLocations[res.type]) {\r\n outcomesLocations[res.type] = [];\r\n }\r\n\r\n outcomesLocations[res.type].push(res);\r\n });\r\n outcomesLocations['Primary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n\r\n if (outcomesLocations.Secondary) {\r\n outcomesLocations['Secondary'].sort(function (a, b) {\r\n if (a.description < b.description) {\r\n return -1;\r\n }\r\n if (a.description > b.description) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n }\r\n function sortSuccessTypes(results) {\r\n unOrderedSuccessObj = {};\r\n successObj = {};\r\n\r\n results.forEach(st => {\r\n var label = st.Objective_Success_Description;\r\n if (!unOrderedSuccessObj[label]) {\r\n unOrderedSuccessObj[label] = st;\r\n }\r\n });\r\n\r\n Object.keys(unOrderedSuccessObj)\r\n .sort()\r\n .forEach(key => {\r\n successObj[key] = unOrderedSuccessObj[key];\r\n });\r\n }\r\n function getObjectiveActivities(outcome) {\r\n var objectiveRecurrance = outcome.Objective_Recurrance;\r\n if (objectiveRecurrance === '') objectiveRecurrance = 'NF';\r\n var activities;\r\n\r\n switch (objectiveRecurrance) {\r\n case 'NF': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'H': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'D': {\r\n activities = outcome.nullHourDaySuccesses;\r\n break;\r\n }\r\n case 'W': {\r\n activities = outcome.weekSuccesses;\r\n break;\r\n }\r\n case 'M': {\r\n activities = outcome.monthSuccesses;\r\n break;\r\n }\r\n case 'Y': {\r\n activities = outcome.yearSuccesses;\r\n break;\r\n }\r\n }\r\n\r\n return activities;\r\n }\r\n // Save/Update/Delete\r\n //------------------------------------\r\n function initSaveData(outcome) {\r\n personId = selectedConsumerId;\r\n activityId = 0;\r\n objectiveId = outcome.Objective_id;\r\n objdate = currDate;\r\n }\r\n function saveNewOutcome() {\r\n getInputValues();\r\n goalnote = UTIL.removeUnsavableNoteText(goalnote); //fix note with bad text\r\n var newOutcomeData = {\r\n personId,\r\n objectiveId,\r\n activityId,\r\n objdate,\r\n success,\r\n goalnote: !goalnote ? '' : goalnote,\r\n promptType: !promptType ? '0' : promptType,\r\n promptNumber: !promptNumber ? '0' : promptNumber,\r\n locationId,\r\n locationSecondaryId: !locationSecondaryId ? 0 : locationSecondaryId,\r\n goalStartTime: !goalStartTime ? '' : goalStartTime,\r\n goalEndTime: !goalEndTime ? '' : goalEndTime,\r\n goalCILevel: !goalCILevel ? '' : goalCILevel,\r\n };\r\n var section = document.querySelector('.tabs__nav--item.active');\r\n currentSection = section.innerHTML;\r\n POPUP.hide(detailsPopup);\r\n successfulSave.show();\r\n outcomesAjax.saveGoals(newOutcomeData, function () {\r\n resetOutcomeSaveData();\r\n getConsumersWithRemainingGoals();\r\n locationSecondaryId = 0;\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n loadCardView(selectedConsumerObj);\r\n }, 1000);\r\n });\r\n }\r\n function resetOutcomeSaveData() {\r\n success = '';\r\n promptType = '0';\r\n promptNumber = 0;\r\n goalnote = '';\r\n goalStartTime = '';\r\n goalEndTime = '';\r\n goalCILevel = '';\r\n locationSecondaryId = 0;\r\n }\r\n function getInputValues() {\r\n var promptTypeInput = promptsDropdown.querySelector('.dropdown__select');\r\n var promptNumberInput = attemptsDropdown.querySelector('.dropdown__select');\r\n var goalnoteInput = noteInput.querySelector('.input-field__input');\r\n promptType = promptTypeInput[promptTypeInput.selectedIndex].value;\r\n promptNumber = promptNumberInput[promptNumberInput.selectedIndex].value;\r\n goalnote = goalnoteInput.value;\r\n }\r\n function deleteObjectiveActivity() {\r\n outcomesAjax.deleteGoal(activityId, selectedConsumerId, currDate, function () {\r\n POPUP.hide(detailsPopup);\r\n loadCardView(selectedConsumerObj);\r\n });\r\n }\r\n\r\n function updateCurrentFilterDisplay(service = 'All', outcomeType = 'All') {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n\r\n if (!currentFilterDisplay) {\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet(service, outcomeType);\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (service === '%' || service === 'All') {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n btnWrap.removeChild(serviceBtnWrap);\r\n } else {\r\n btnWrap.appendChild(serviceBtnWrap);\r\n if (document.getElementById('serviceBtn') != null)\r\n document.getElementById('serviceBtn').innerHTML = 'Service: ' + service;\r\n }\r\n\r\n if (outcomeType === '%' || outcomeType === 'All') {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n btnWrap.removeChild(outcomeTypeBtnWrap);\r\n } else {\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n if (document.getElementById('outcomeTypeBtn') != null)\r\n document.getElementById('outcomeTypeBtn').innerHTML = 'Outcome Type: ' + outcomeType;\r\n }\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet(service = 'All', outcomeType = 'All') {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n showFilterPopup('ALL');\r\n },\r\n });\r\n\r\n serviceBtn = button.build({\r\n id: 'serviceBtn',\r\n text: 'Service: ' + service,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('serviceBtn');\r\n },\r\n });\r\n serviceCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('serviceBtn');\r\n },\r\n });\r\n\r\n outcomeTypeBtn = button.build({\r\n id: 'outcomeTypeBtn',\r\n text: 'Outcome Type: ' + outcomeType,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => {\r\n showFilterPopup('outcomeTypeBtn');\r\n },\r\n });\r\n outcomeTypeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('outcomeTypeBtn');\r\n },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n serviceBtnWrap = document.createElement('div');\r\n serviceBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceBtnWrap.appendChild(serviceBtn);\r\n serviceBtnWrap.appendChild(serviceCloseBtn);\r\n btnWrap.appendChild(serviceBtnWrap);\r\n\r\n outcomeTypeBtnWrap = document.createElement('div');\r\n outcomeTypeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeBtn);\r\n outcomeTypeBtnWrap.appendChild(outcomeTypeCloseBtn);\r\n btnWrap.appendChild(outcomeTypeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'serviceBtn') {\r\n tmpService = 'All';\r\n }\r\n if (closeFilter == 'outcomeTypeBtn') {\r\n tmpOutcome = 'All';\r\n tmpOutcomeId = '%';\r\n }\r\n applyOutComeFilter();\r\n }\r\n\r\n // Required Fields\r\n //------------------------------------\r\n function checkRequiredFields() {\r\n var showAttempts = successDetails.Show_Attempts;\r\n var showPrompts = successDetails.Show_Prompts;\r\n var showTime = successDetails.Show_Time;\r\n var showCI = successDetails.Show_Community_Integration;\r\n\r\n var attemptsRequired = successDetails.Attempts_Required;\r\n var promptsRequired = successDetails.Prompt_Required;\r\n var timeRequired = successDetails.Times_Required;\r\n var ciRequired = successDetails.Community_Integration_Required;\r\n var noteRequired = successDetails.Notes_Required;\r\n\r\n var errorFree = true;\r\n\r\n // attempts\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n attemptsDropdown.classList.remove('disabled');\r\n if (attemptsRequired === 'Y') {\r\n if (!currAttempts || currAttempts === '') {\r\n attemptsDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n attemptsDropdown.classList.add('disabled');\r\n }\r\n // prompts\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n promptsDropdown.classList.remove('disabled');\r\n if (promptsRequired === 'Y') {\r\n if (!currPrompt || currPrompt === '') {\r\n promptsDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.remove('error');\r\n }\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n promptsDropdown.classList.add('disabled');\r\n }\r\n // community integration\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n cIDropdown.classList.remove('disabled');\r\n if (ciRequired === 'Y') {\r\n if (!currCI || currCI === '') {\r\n cIDropdown.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.remove('error');\r\n }\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n cIDropdown.classList.add('disabled');\r\n }\r\n // start and end time\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('disabled');\r\n timeInputs.end.classList.remove('disabled');\r\n if (timeRequired === 'Y') {\r\n if (currStartTime === '') {\r\n timeInputs.start.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n }\r\n if (currEndTime === '') {\r\n timeInputs.end.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.remove('error');\r\n timeInputs.end.classList.remove('error');\r\n }\r\n } else {\r\n timeInputs.start.classList.add('disabled');\r\n timeInputs.end.classList.add('disabled');\r\n }\r\n // note\r\n if (noteRequired === 'Y') {\r\n if (!currNote || currNote === '') {\r\n noteInput.classList.add('error');\r\n errorFree = false;\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n } else {\r\n noteInput.classList.remove('error');\r\n }\r\n\r\n if (showTime === 'Y') validateStartEndTimes();\r\n\r\n checkErrors();\r\n // if (errorFree) {\r\n // \tsaveBtn.classList.remove('disabled');\r\n // } else {\r\n // \tsaveBtn.classList.add('disabled');\r\n // }\r\n }\r\n function validateStartEndTimes() {\r\n var timeRequired = successDetails.Times_Required;\r\n var startInput = timeInputs.start.querySelector('input');\r\n var endInput = timeInputs.end.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n\r\n if (timeRequired === 'N' && startTime === '' && endTime === '') return;\r\n\r\n if (endTime === '00:00') {\r\n timeInputs.end.classList.add('error'); //error on 12am end time\r\n }\r\n\r\n if (timeRequired === 'N') {\r\n if (startTime === '' && endTime !== '') {\r\n timeInputs.start.classList.add('error');\r\n }\r\n if (endTime === '' && startTime !== '') {\r\n timeInputs.end.classList.add('error');\r\n }\r\n }\r\n // if ((startTime === \"\" && timeRequired === \"N\") && endTime !== \"\") {\r\n // timeInputs.start.classList.add(\"error\")\r\n // } else timeInputs.start.classList.remove(\"error\")\r\n // if ((endTime === \"\" && timeRequired === \"N\") && startTime !== \"\") {\r\n // timeInputs.end.classList.add(\"error\")\r\n // }\r\n if (startTime >= endTime) {\r\n timeInputs.end.classList.add('error');\r\n } else {\r\n timeInputs.end.classList.remove('error');\r\n }\r\n if (startTime <= endTime && startTime !== '') {\r\n timeInputs.start.classList.remove('error');\r\n } else {\r\n timeInputs.start.classList.add('error');\r\n }\r\n }\r\n\r\n function checkShowFields() {\r\n var showAttempts = successObj[Object.keys(successObj)[0]].Show_Attempts;\r\n var showPrompts = successObj[Object.keys(successObj)[0]].Show_Prompts;\r\n var showTime = successObj[Object.keys(successObj)[0]].Show_Time;\r\n var showCI = successObj[Object.keys(successObj)[0]].Show_Community_Integration;\r\n\r\n if (showAttempts === 'Y') {\r\n attemptsDropdown.classList.remove('hidden');\r\n } else {\r\n attemptsDropdown.classList.add('hidden');\r\n }\r\n if (showPrompts === 'Y') {\r\n promptsDropdown.classList.remove('hidden');\r\n } else {\r\n promptsDropdown.classList.add('hidden');\r\n }\r\n if (showTime === 'Y') {\r\n timeInputs.start.classList.remove('hidden');\r\n timeInputs.end.classList.remove('hidden');\r\n } else {\r\n timeInputs.start.classList.add('hidden');\r\n timeInputs.end.classList.add('hidden');\r\n }\r\n if (showCI === 'Y') {\r\n cIDropdown.classList.remove('hidden');\r\n } else {\r\n cIDropdown.classList.add('hidden');\r\n }\r\n }\r\n\r\n function checkErrors() {\r\n var errors = document.querySelectorAll('.error');\r\n if (errors.length === 0) {\r\n saveBtn.classList.remove('disabled');\r\n } else {\r\n saveBtn.classList.add('disabled');\r\n }\r\n }\r\n // Action Nav\r\n //------------------------------------\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch (targetAction) {\r\n case 'rosterDone': {\r\n roster.selectedConsumersToEnabledList();\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n loadLandingPage();\r\n roster.clearActiveConsumers();\r\n break;\r\n }\r\n case 'rosterCancel': {\r\n var outcomeModuleBtn = document.getElementById('goalssettingsbutton');\r\n var dashButton = document.getElementById('singlebutton');\r\n outcomeModuleBtn.classList.remove('active');\r\n dashButton.classList.add('active');\r\n unloadApp($.loadedApp);\r\n setActiveModuleAttribute('home');\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.removeAttribute('data-active-section');\r\n dashboard.load();\r\n break;\r\n }\r\n case 'miniRosterDone': {\r\n initLoad = false;\r\n var activeConsumers = roster2.getActiveConsumers();\r\n if (activeConsumers.length > 0) {\r\n activeConsumers.forEach(consumer => {\r\n roster2.removeConsumerFromActiveConsumers(consumer.id);\r\n });\r\n }\r\n selectedConsumerObj = activeConsumers[activeConsumers.length - 1];\r\n consumerName = activeConsumers[activeConsumers.length - 1].card.innerText;\r\n selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n afterSelectionRoster();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n if (initLoad) {\r\n loadApp('home');\r\n } else DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function backToOutcomeLoad(consumerObj) {\r\n selectedConsumerObj = consumerObj;\r\n consumerName = consumerObj.card.innerText;\r\n selectedConsumerId = consumerObj.id;\r\n afterSelectionRoster();\r\n }\r\n\r\n function afterSelectionRoster() {\r\n DOM.toggleNavLayout();\r\n PROGRESS.SPINNER.show(`Loading Outcomes For ${consumerName}`);\r\n resetFilter();\r\n updateCurrentFilterDisplay();\r\n outcomesAjax.getOutcomesPrompts(function (results) {\r\n outcomesPrompts = results;\r\n outcomesAjax.getGoalsCommunityIntegrationLevelDropdown(function (ciResults) {\r\n ciData = ciResults;\r\n outcomesAjax.getDaysBackForEditingGoalsAndUseConsumerLocation(selectedConsumerId, function (results) {\r\n daysBack = results[0].setting_value;\r\n daysBackDate = convertDaysBack(daysBack);\r\n useConsumerLocation = results[0].outcomes_use_consumer_location;\r\n defaultPrimaryLocation = results[0].consumer_location;\r\n loadCardView(selectedConsumerObj);\r\n });\r\n });\r\n });\r\n }\r\n //Set up spans to display\r\n function setUpOutcomesTabSpans() {\r\n //Create date to use for calculations\r\n var dateForCalculations = new Date(UTIL.formatDateFromIso(currDate));\r\n var day = dateForCalculations.getDay() + 1;\r\n //Single date\r\n todaysDateToDisplay = UTIL.formatDateFromIso(currDate);\r\n //week the date is in\r\n //first day\r\n firstDayOfWeek = new Date(\r\n dateForCalculations.getFullYear(),\r\n dateForCalculations.getMonth(),\r\n dateForCalculations.getDate() + (day == 0 ? -7 : 1) - day,\r\n );\r\n firstDayOfWeek = UTIL.getFormattedDateFromDate(firstDayOfWeek);\r\n //lastDayOfWeek\r\n lastDayOfWeek = new Date(\r\n dateForCalculations.getFullYear(),\r\n dateForCalculations.getMonth(),\r\n dateForCalculations.getDate() + (day == 0 ? 0 : 7) - day,\r\n );\r\n lastDayOfWeek = UTIL.getFormattedDateFromDate(lastDayOfWeek);\r\n //first day of month\r\n firstDayOfMonth = new Date(dateForCalculations.getFullYear(), dateForCalculations.getMonth(), 1);\r\n firstDayOfMonth = UTIL.getFormattedDateFromDate(firstDayOfMonth);\r\n //last day of month\r\n lastDayOfMonth = new Date(dateForCalculations.getFullYear(), dateForCalculations.getMonth() + 1, 0);\r\n lastDayOfMonth = UTIL.getFormattedDateFromDate(lastDayOfMonth);\r\n //year of current day\r\n yearOfCurrentDay = dateForCalculations.getFullYear();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function getOutcomeCompletion(outcome) {\r\n var recurrance = outcome.Objective_Recurrance;\r\n var occurance = outcome.Frequency_Occurance;\r\n var freqModifier = outcome.Frequency_Modifier;\r\n var successArray;\r\n var isComplete;\r\n\r\n if (recurrance === 'NF' || recurrance === 'H' || recurrance === 'D') {\r\n successArray = outcome.nullHourDaySuccesses;\r\n }\r\n if (recurrance === 'W') successArray = outcome.weekSuccesses;\r\n if (recurrance === 'M') successArray = outcome.monthSuccesses;\r\n if (recurrance === 'Y') successArray = outcome.yearSuccesses;\r\n\r\n switch (freqModifier) {\r\n case 'OBJFMEX':\r\n if (successArray && successArray.length >= occurance) {\r\n isComplete = true;\r\n } else {\r\n isComplete = false;\r\n }\r\n break;\r\n case 'OBJFMAL':\r\n if (successArray && successArray.length >= occurance) {\r\n isComplete = true;\r\n } else {\r\n isComplete = false;\r\n }\r\n break;\r\n case 'OBJFMAN':\r\n isComplete = true;\r\n break;\r\n case 'OBJFMAR':\r\n isComplete = true;\r\n break;\r\n case 'OBJFMNM':\r\n isComplete = true;\r\n break;\r\n case '':\r\n isComplete = true;\r\n break;\r\n default:\r\n isComplete = false;\r\n break;\r\n }\r\n\r\n return isComplete ? 'Complete' : 'Incomplete';\r\n }\r\n function filterOutcomes(filterByData) {\r\n var service = filterByData.currService;\r\n var outcomeId = filterByData.currOutcomeId;\r\n var filteredOutcomesDataObj = {};\r\n\r\n function filterObject() {\r\n var freqKeys = Object.keys(outcomesDataObj);\r\n\r\n freqKeys.forEach(key => {\r\n var data = outcomesDataObj[key].filter(od => {\r\n var completion = getOutcomeCompletion(od);\r\n\r\n switch (service) {\r\n case 'All':\r\n if (currOutcomeId === '%') return true;\r\n return od.Goal_Type_ID === outcomeId;\r\n case 'Incomplete':\r\n case 'Complete':\r\n if (currOutcomeId !== '%') return od.Goal_Type_ID === outcomeId && completion === service;\r\n return completion === service;\r\n default:\r\n break;\r\n }\r\n\r\n // if (currService === 'All' && currOutcomeId === '%') return true;\r\n // if (service && outcomeId) return od.Goal_Type_ID === outcomeId && completion === service;\r\n // if (service && !outcomeId) return completion === service;\r\n // if (!service && outcomeId) return od.Goal_Type_ID === outcomeId;\r\n });\r\n filteredOutcomesDataObj[key] = data;\r\n });\r\n }\r\n\r\n if (filterByData.tmpDate) {\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, function (results) {\r\n sortOutcomes(results);\r\n filterObject();\r\n });\r\n } else {\r\n filterObject();\r\n }\r\n\r\n populateOutcomes(filteredOutcomesDataObj);\r\n }\r\n function setupFilterEvents() {\r\n serviceDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpService = selectedOption.value;\r\n });\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpOutcomeId = selectedOption.value;\r\n tmpOutcome = selectedOption.innerHTML;\r\n });\r\n applyButton.addEventListener('click', () => {\r\n //if (tmpDate) {\r\n //\tcurrDate = tmpDate;\r\n //} else {\r\n //\tcurrDate = currDate;\r\n //}\r\n applyOutComeFilter();\r\n POPUP.hide(filterPopup);\r\n });\r\n }\r\n\r\n function applyOutComeFilter() {\r\n if (tmpService) {\r\n currService = tmpService;\r\n } else {\r\n currService = currService ? currService : 'All';\r\n }\r\n if (tmpOutcome) {\r\n currOutcome = tmpOutcome;\r\n currOutcomeId = tmpOutcomeId;\r\n } else if (!currOutcomeId) {\r\n currOutcome = 'All';\r\n currOutcomeId = '%';\r\n }\r\n\r\n if (tmpService || tmpOutcome) {\r\n filterOutcomes({ currService, currOutcomeId });\r\n }\r\n\r\n let outcomeDd = document.getElementById('outcomeDropdown');\r\n let outcomeTypeText = outcomeDd == null ? currOutcome : outcomeDd.options[outcomeDd.selectedIndex].innerHTML;\r\n updateCurrentFilterDisplay(currService ? currService : 'All', outcomeTypeText);\r\n\r\n setUpOutcomesTabSpans();\r\n }\r\n function populateServiceDropdown() {\r\n var data = [\r\n { value: 'All', text: 'All' },\r\n { value: 'Complete', text: 'Complete' },\r\n { value: 'Incomplete', text: 'Incomplete' },\r\n ];\r\n if (currService === undefined) {\r\n currService = 'All';\r\n } else {\r\n currService = currService;\r\n }\r\n dropdown.populate(serviceDropdown, data, currService);\r\n }\r\n function populateOutcomeTypesDropdown(results) {\r\n // Goal_Type_ID: \"114\"\r\n // goal_type_description: \"Actions\"\r\n var data = results.map(res => {\r\n return {\r\n value: res.Goal_Type_ID,\r\n text: res.goal_type_description,\r\n };\r\n });\r\n if (currOutcomeId === undefined) {\r\n currOutcomeId = '%';\r\n currOutcome = 'All';\r\n } else {\r\n currOutcomeId = currOutcomeId;\r\n currOutcome = currOutcome;\r\n }\r\n data.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(outcomeDropdown, data, currOutcomeId);\r\n }\r\n function populateDropdowns() {\r\n populateServiceDropdown();\r\n outcomesAjax.getOutcomeTypeForFilter(\r\n {\r\n consumerId: selectedConsumerId,\r\n selectedDate: currDate,\r\n token: $.session.Token,\r\n },\r\n populateOutcomeTypesDropdown,\r\n );\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({});\r\n\r\n serviceDropdown = dropdown.build({\r\n label: 'Service',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n outcomeDropdown = dropdown.build({\r\n dropdownId: 'outcomeDropdown',\r\n label: 'Outcome Type',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n applyButton = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n applyButton.classList.add('singleBtn');\r\n if (IsShow == 'ALL' || IsShow == 'serviceBtn') filterPopup.appendChild(serviceDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'outcomeTypeBtn') filterPopup.appendChild(outcomeDropdown);\r\n filterPopup.appendChild(applyButton);\r\n\r\n populateDropdowns();\r\n setupFilterEvents();\r\n\r\n POPUP.show(filterPopup);\r\n }\r\n function resetFilter() {\r\n currService = null;\r\n currOutcomeId = null;\r\n }\r\n\r\n // DATE INPUT\r\n //------------------------------------\r\n function buildFuckingDateInput() {\r\n var dateinput = input.build({\r\n id: 'outcomeDatePicker',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: currDate,\r\n classNames: ['dateInput'],\r\n attributes: [\r\n { key: 'min', value: daysBackDate },\r\n { key: 'max', value: UTIL.getTodaysDate() },\r\n ],\r\n });\r\n\r\n dateinput.addEventListener('change', event => {\r\n var currDateCache = currDate;\r\n currDate = event.target.value;\r\n var currDateCheck = new Date(currDate.split('-')[0], currDate.split('-')[1] - 1, currDate.split('-')[2]);\r\n var daysBackDateCheck = new Date(\r\n daysBackDate.split('-')[0],\r\n daysBackDate.split('-')[1] - 1,\r\n daysBackDate.split('-')[2],\r\n );\r\n if (currDateCheck < daysBackDateCheck || currDate === '' || currDateCheck > new Date()) {\r\n dateinput.classList.add('error');\r\n currDate = currDateCache;\r\n return;\r\n } else dateinput.classList.remove('error');\r\n currService = 'All';\r\n currOutcomeId = '%';\r\n currOutcome = 'All';\r\n roster2.updateSelectedDate(currDate);\r\n setUpOutcomesTabSpans(currDate);\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, loadOutcomesCards);\r\n getConsumersWithRemainingGoals();\r\n });\r\n dateinput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n return dateinput;\r\n }\r\n\r\n // Build Outcome Cards\r\n //------------------------------------\r\n function buildConsumerCard(clone, consumerId) {\r\n var card = document.createElement('div');\r\n card.classList.add('outcomes__consumer');\r\n card.appendChild(clone);\r\n return card;\r\n }\r\n // card details (old back)\r\n function buildPrimaryLocationDropdown(locId) {\r\n var select = dropdown.build({\r\n label: 'Primary Location',\r\n style: 'secondary',\r\n });\r\n var data = outcomesLocations.Primary.map(pl => {\r\n return {\r\n value: pl.Location_ID,\r\n text: pl.description,\r\n };\r\n });\r\n\r\n if (locId) {\r\n dropdown.populate(select, data, locId);\r\n locationId = locId;\r\n } else {\r\n if (defaultObjLocationId !== '') {\r\n var defaultLocation = defaultObjLocationId;\r\n } else if (defaultGoalLocationId !== '') {\r\n var defaultLocation = defaultGoalLocationId;\r\n } else if (useConsumerLocation) {\r\n var defaultLocation = defaultPrimaryLocation;\r\n } else {\r\n var defaultLocation = '';\r\n }\r\n // var defaultLocation = useConsumerLocation ? defaultPrimaryLocation : '';\r\n dropdown.populate(select, data, defaultLocation);\r\n locationId = defaultLocation === '' ? data[0].value : defaultLocation;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationId = selectedOption.value;\r\n rePopSecondaryLocationDropdown(locationId);\r\n });\r\n\r\n return select;\r\n }\r\n function rePopSecondaryLocationDropdown(locId) {\r\n var filteredOutcomesLocations = { Primary: [], Secondary: [] };\r\n\r\n outcomesLocations.Secondary.forEach(sl => {\r\n if (sl.primaryLocId === locId) {\r\n let obj = {\r\n Location_ID: sl.Location_ID,\r\n description: sl.description,\r\n primaryLocId: sl.primaryLocId,\r\n };\r\n filteredOutcomesLocations['Secondary'].push(obj);\r\n }\r\n });\r\n\r\n var data = filteredOutcomesLocations.Secondary.map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n dropdown.populate(secondaryLocationDropdown, data);\r\n locationSecondaryId = data[0].value;\r\n }\r\n\r\n function buildSecondaryLocationDropdown(locId) {\r\n var select = dropdown.build({\r\n label: 'Secondary Location',\r\n style: 'secondary',\r\n });\r\n\r\n if (!outcomesLocations.Secondary || outcomesLocations.Secondary.legnth < 1) return select;\r\n\r\n var filteredOutcomesLocations = { Primary: [], Secondary: [] };\r\n\r\n outcomesLocations.Secondary.forEach(sl => {\r\n if (sl.primaryLocId === locationId) {\r\n let obj = {\r\n Location_ID: sl.Location_ID,\r\n description: sl.description,\r\n primaryLocId: sl.primaryLocId,\r\n };\r\n filteredOutcomesLocations['Secondary'].push(obj);\r\n }\r\n });\r\n\r\n var data = filteredOutcomesLocations.Secondary.map(sl => {\r\n return {\r\n value: sl.Location_ID,\r\n text: sl.description,\r\n attributes: [{ key: 'data-primary-loc-id', value: sl.primaryLocId }],\r\n };\r\n });\r\n\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n if (locId) {\r\n dropdown.populate(select, data, locId);\r\n locationSecondaryId = locId;\r\n } else {\r\n dropdown.populate(select, data);\r\n locationSecondaryId = data[0].value;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationSecondaryId = selectedOption.value;\r\n });\r\n\r\n return select;\r\n }\r\n function buildResultsDropdown(result) {\r\n var select = dropdown.build({\r\n label: 'Results',\r\n style: 'secondary',\r\n });\r\n\r\n var data = Object.values(successObj).map(r => {\r\n return {\r\n value: r.Objective_Success_Description,\r\n text: `${r.Objective_Success} ${r.Objective_Success_Description}`,\r\n attributes: [{ key: 'data-success', value: r.Objective_Success }],\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n currResult = data[0].value;\r\n\r\n if (result) {\r\n dropdown.populate(select, data, result);\r\n successType = result;\r\n successDetails = successObj[successType];\r\n success = successDetails.Objective_Success;\r\n } else {\r\n select.classList.add('error');\r\n dropdown.populate(select, data);\r\n successType = data[0].value;\r\n successDetails = successObj[successType];\r\n success = successType;\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n successType = selectedOption.value;\r\n if (successType === '') {\r\n resultsDropdown.classList.add('error');\r\n } else resultsDropdown.classList.remove('error');\r\n successDetails = successObj[successType];\r\n success = selectedOption.dataset.success;\r\n checkErrors();\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildPromptsDropdown(code) {\r\n var select = dropdown.build({\r\n label: 'Prompts',\r\n style: 'secondary',\r\n });\r\n var data = outcomesPrompts.map(op => {\r\n return {\r\n value: op.Code,\r\n text: `${op.Code} ${op.Caption}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n if (code) {\r\n dropdown.populate(select, data, code);\r\n currPrompt = code;\r\n } else {\r\n dropdown.populate(select, data);\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n currPrompt = selectedOption.value;\r\n promptType = currPrompt;\r\n //promptNumber;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildAttemptsDropdown(attempt) {\r\n var select = dropdown.build({\r\n label: 'Attempts',\r\n style: 'secondary',\r\n });\r\n var data = [\r\n { value: '', text: '' },\r\n // { value: '', text: 'Ø' },\r\n // { value: '0', text: '0' },\r\n { value: '1', text: '1' },\r\n { value: '2', text: '2' },\r\n { value: '3', text: '3' },\r\n { value: '4', text: '4' },\r\n { value: '5', text: '5' },\r\n { value: '6', text: '6' },\r\n { value: '7', text: '7' },\r\n { value: '8', text: '8' },\r\n { value: '9', text: '9' },\r\n ];\r\n dropdown.populate(select, data, attempt);\r\n if (attempt) currAttempts = attempt;\r\n\r\n select.addEventListener('change', event => {\r\n currAttempts = event.target.value;\r\n promptNumber = currAttempts;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildCommunityIntegrationDropdown(ciLevel) {\r\n var select = dropdown.build({\r\n label: 'Community Integration',\r\n style: 'secondary',\r\n });\r\n var data = ciData.map(ci => {\r\n return {\r\n value: ci.code,\r\n text: `${ci.code} ${ci.captionname}`,\r\n };\r\n });\r\n var defaultVal = {\r\n value: '',\r\n text: '',\r\n };\r\n data.unshift(defaultVal);\r\n\r\n if (ciLevel) {\r\n dropdown.populate(select, data, ciLevel);\r\n goalCILevel = ciLevel;\r\n currCI = ciLevel;\r\n } else {\r\n dropdown.populate(select, data);\r\n }\r\n\r\n select.addEventListener('change', event => {\r\n goalCILevel = event.target.value;\r\n currCI = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n return select;\r\n }\r\n function buildTimeInputs(startTime, endTime) {\r\n var start = input.build({\r\n label: 'Start Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: startTime,\r\n });\r\n var end = input.build({\r\n label: 'End Time',\r\n style: 'secondary',\r\n type: 'time',\r\n value: endTime,\r\n });\r\n\r\n if (startTime) {\r\n goalStartTime = startTime;\r\n currStartTime = startTime;\r\n }\r\n if (endTime) {\r\n goalEndTime = endTime;\r\n currEndTime = endTime;\r\n }\r\n\r\n start.addEventListener('change', event => {\r\n goalStartTime = event.target.value;\r\n currStartTime = startTime;\r\n checkRequiredFields();\r\n checkErrors();\r\n });\r\n end.addEventListener('change', event => {\r\n goalEndTime = event.target.value;\r\n currEndTime = endTime;\r\n checkRequiredFields();\r\n // if (validateStartEndTimes()) {\r\n // end.classList.remove('error')\r\n // } else end.classList.add('error')\r\n checkErrors();\r\n });\r\n\r\n return {\r\n start,\r\n end,\r\n };\r\n }\r\n function buildNoteInput(note) {\r\n var noteInput = input.build({\r\n label: 'Note',\r\n style: 'secondary',\r\n type: 'textarea',\r\n value: note,\r\n });\r\n\r\n if (note) {\r\n currNote = note;\r\n goalnote = note;\r\n }\r\n\r\n if (note !== undefined && enteredByUser && enteredByUser.toUpperCase() !== $.session.UserId.toUpperCase()) {\r\n return noteInput;\r\n }\r\n noteInput.addEventListener('keyup', () => {\r\n currNote = event.target.value;\r\n goalnote = currNote;\r\n checkRequiredFields();\r\n });\r\n\r\n return noteInput;\r\n }\r\n function buildSaveButton(isEdit) {\r\n var text = isEdit ? 'Update' : 'Save';\r\n var btn = button.build({\r\n text,\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: saveNewOutcome,\r\n });\r\n\r\n return btn;\r\n }\r\n function buildDeleteButton() {\r\n var btn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n //callback: deleteObjectiveActivity,\r\n callback: deleteIncident,\r\n });\r\n\r\n return btn;\r\n }\r\n function deleteIncident() {\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup');\r\n popup.classList.add('warning');\r\n popup.setAttribute('data-popup', 'true');\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete this activity?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n deleteObjectiveActivity();\r\n // hide popup\r\n actioncenter.removeChild(popup);\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n // clear active consumers\r\n // roster.clearActiveConsumers();\r\n // re-get Users with remaining goals\r\n getConsumersWithRemainingGoals();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n // hide popup\r\n actioncenter.removeChild(popup);\r\n // overlay.hide()\r\n // bodyScrollLock.enableBodyScroll(popup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n popup.appendChild(message);\r\n popup.appendChild(btnWrap);\r\n\r\n // show overlay\r\n overlay.show();\r\n // show popup\r\n actioncenter.appendChild(popup);\r\n // disable scrolling\r\n bodyScrollLock.disableBodyScroll(popup);\r\n }\r\n function buildCardDetails(editData) {\r\n detailsPopup = POPUP.build({\r\n classNames: ['card', 'objectiveDetails'],\r\n });\r\n\r\n if (editData) {\r\n editData = editData[0];\r\n personId = selectedConsumerId;\r\n objectiveId = editData.Objective_ID;\r\n objdate = currDate;\r\n let lastEditedTime = editData.Last_Update.split(' ')[1];\r\n let lastEditHH = lastEditedTime.split(':')[0];\r\n let lastEditMM = UTIL.leadingZero(lastEditedTime.split(':')[1]);\r\n lastEditedTime = `${lastEditHH}:${lastEditMM} ${editData.Last_Update.split(' ')[2]}`;\r\n\r\n var lastEditedDate = editData.Last_Update.split(' ')[0];\r\n var lastEdited = `${lastEditedDate} ${lastEditedTime}`;\r\n\r\n primaryLocationDropdown = buildPrimaryLocationDropdown(editData.Location_ID);\r\n secondaryLocationDropdown = buildSecondaryLocationDropdown(editData.Locations_Secondary_ID);\r\n resultsDropdown = buildResultsDropdown(editData.objective_success_description);\r\n promptsDropdown = buildPromptsDropdown(editData.Prompt_Type);\r\n attemptsDropdown = buildAttemptsDropdown(editData.Prompt_Number);\r\n cIDropdown = buildCommunityIntegrationDropdown(editData.community_integration_level);\r\n timeInputs = buildTimeInputs(editData.start_time, editData.end_time);\r\n enteredByUser = editData.submitted_by_user_id;\r\n noteInput = buildNoteInput(editData.Objective_Activity_Note);\r\n saveBtn = buildSaveButton(true);\r\n deleteBtn = buildDeleteButton();\r\n edit__lastEditedByDetails = buildCardEnteredByDetails(enteredByUser, lastEdited);\r\n } else {\r\n primaryLocationDropdown = buildPrimaryLocationDropdown();\r\n secondaryLocationDropdown = buildSecondaryLocationDropdown();\r\n resultsDropdown = buildResultsDropdown();\r\n promptsDropdown = buildPromptsDropdown();\r\n attemptsDropdown = buildAttemptsDropdown();\r\n cIDropdown = buildCommunityIntegrationDropdown();\r\n timeInputs = buildTimeInputs();\r\n noteInput = buildNoteInput();\r\n saveBtn = buildSaveButton(false);\r\n deleteBtn = undefined;\r\n }\r\n\r\n checkShowFields();\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n if (deleteBtn) btnWrap.appendChild(deleteBtn);\r\n\r\n var timeWrap = document.createElement('div');\r\n timeWrap.appendChild(timeInputs.start);\r\n timeWrap.appendChild(timeInputs.end);\r\n\r\n detailsPopup.appendChild(primaryLocationDropdown);\r\n if (outcomesLocations.Secondary) detailsPopup.appendChild(secondaryLocationDropdown);\r\n detailsPopup.appendChild(resultsDropdown);\r\n detailsPopup.appendChild(promptsDropdown);\r\n detailsPopup.appendChild(attemptsDropdown);\r\n if ($.session.applicationName !== 'Gatekeeper') {\r\n detailsPopup.appendChild(cIDropdown);\r\n detailsPopup.appendChild(timeWrap);\r\n }\r\n detailsPopup.appendChild(noteInput);\r\n detailsPopup.appendChild(btnWrap);\r\n\r\n if (editData) checkRequiredFields();\r\n if (editData) detailsPopup.appendChild(edit__lastEditedByDetails);\r\n if (editData && enteredByUser && enteredByUser.toUpperCase() !== $.session.UserId.toUpperCase()) {\r\n disableOutcomeFieldsOtherUser();\r\n btnWrap.classList.add('hidden');\r\n }\r\n if (dailyAbsent) {\r\n // disableOutcomeFieldsOtherUser();\r\n }\r\n\r\n POPUP.show(detailsPopup);\r\n }\r\n // card overview (old front)\r\n function buildActivityTracker(outcome) {\r\n var activities = getObjectiveActivities(outcome);\r\n var activityCount;\r\n var activityLimit = outcome.Frequency_Occurance !== '' ? parseInt(outcome.Frequency_Occurance, 10) : 0;\r\n\r\n activities = activities.filter(o => {\r\n // var type = o.split('|')[0];\r\n let isAbsent = o.split('|')[2];\r\n return isAbsent !== 'Y';\r\n });\r\n activityCount = activities.length;\r\n\r\n // set frequency modifier & path color\r\n var frequencyModifier = outcome.Frequency_Modifier.replace('OBJFM', '');\r\n var frequencySeparator;\r\n var pathColor;\r\n\r\n // color and modifier\r\n switch (frequencyModifier) {\r\n case 'AN':\r\n case 'AR':\r\n // As Needed & As Requested\r\n frequencySeparator = '>';\r\n if (activityLimit === 0 && activityCount > activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n break;\r\n } else if (activityLimit === 0 && activityCount === 0) {\r\n //no color\r\n break;\r\n }\r\n if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n break;\r\n }\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n break;\r\n case 'AL':\r\n // At Least\r\n frequencySeparator = '>';\r\n if (activityCount === 0 || activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount >= activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n case 'EX':\r\n // Exactly\r\n frequencySeparator = 'of';\r\n if (activityCount === 0 || activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount > activityLimit) {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n } else if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n case 'NM':\r\n // No More Than\r\n frequencySeparator = '<';\r\n if (activityCount <= activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n } else {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n }\r\n break;\r\n case '':\r\n frequencySeparator = '';\r\n if (activityLimit === 0) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n } else if (activityCount < activityLimit) {\r\n pathColor = 'rgb(219,22,47)'; //red\r\n } else if (activityCount > activityLimit) {\r\n pathColor = 'rgb(238,132,52)'; //orange\r\n } else if (activityCount === activityLimit) {\r\n pathColor = 'rgb(129,185,65)'; //green\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n // get percent complete\r\n\r\n // Dashoffset values vv\r\n // 301.635 = 0/ no circle\r\n // 0 = a full circle\r\n\r\n // var percentComplete = activityCount === 0 || activityLimit === 0 ? 0 : activityLimit / activityCount / 100;\r\n var percentComplete = activityCount === 0 || activityLimit === 0 ? 0 : activityCount / activityLimit;\r\n var dashOffset = 301.635 - percentComplete * 301.635;\r\n dashOffset = dashOffset === 0 ? 301.635 : dashOffset;\r\n // if (frequencySeparator === '') {\r\n // \tdashOffset = 0;\r\n // }\r\n if (percentComplete >= 1) {\r\n // dashOffset 0 = full circle. Anything 100% or over is a full circle\r\n dashOffset = 0;\r\n }\r\n if (activityCount > activityLimit) {\r\n dashOffset = 0;\r\n }\r\n var path2Style = `stroke-dashoffset: ${dashOffset};`;\r\n\r\n // cool circle thing\r\n var circle = document.createElement('div');\r\n circle.classList.add('progressCircle');\r\n circle.innerHTML = `\r\n \r\n \r\n \r\n \r\n ${\r\n frequencySeparator !== ''\r\n ? `

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

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

    ${activityCount}

    `\r\n : `

    ${activityCount}

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

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

    \r\n

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

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

    Documenting for: ${consumerName}

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

    You can document up to ${daysBack} days back

    `;\r\n dayBackDateSpanWrap.appendChild(daysBackDiv);\r\n\r\n DOM.ACTIONCENTER.appendChild(dayBackDateSpanWrap);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n\r\n //Main section & tabs\r\n var outcomesTabs = buildCardContainer(selectedConsumer);\r\n //Build and populate card overview\r\n outcomesAjax.getGoals(selectedConsumerId, currDate, res => loadOutcomesCards(res));\r\n\r\n DOM.ACTIONCENTER.appendChild(outcomesTabs);\r\n }\r\n function loadOutcomesCards(results) {\r\n sortOutcomes(results);\r\n populateOutcomes(outcomesDataObj);\r\n }\r\n\r\n function sortOutcomesAlpha(outcomesData) {\r\n Object.keys(outcomesData).forEach(occur => {\r\n outcomesData[occur].sort((a, b) =>\r\n a.goal_type_description.toUpperCase() > b.goal_type_description.toUpperCase()\r\n ? 1\r\n : a.goal_type_description.toUpperCase() === b.goal_type_description.toUpperCase()\r\n ? a.Objective_Statement.toUpperCase() > b.Objective_Statement.toUpperCase()\r\n ? 1\r\n : -1\r\n : -1,\r\n );\r\n });\r\n return outcomesData;\r\n }\r\n\r\n function buildAllowedConsumersObj(userIdsWithGoals, userIdsWithRemainingGoals) {\r\n var remainingGoalsIds = {};\r\n userIdsWithGoals.forEach(user => {\r\n userIdsWithRemainingGoals.every(userReminingGoal => {\r\n if (user.id === userReminingGoal.ID) {\r\n remainingGoalsIds[user.id] = true;\r\n return false;\r\n } else {\r\n remainingGoalsIds[user.id] = false;\r\n return true;\r\n }\r\n });\r\n });\r\n\r\n var consumerIds = userIdsWithGoals.map(userId => {\r\n var showAlert = remainingGoalsIds[parseInt(userId.id)];\r\n return {\r\n consumer_id: userId.id,\r\n showAlertIcon: showAlert,\r\n };\r\n });\r\n\r\n roster2.setAllowedConsumers(consumerIds);\r\n if (initLoad) {\r\n roster2.miniRosterinit(null, {\r\n hideDate: true,\r\n });\r\n roster2.showMiniRoster({\r\n hideDate: true,\r\n });\r\n }\r\n }\r\n\r\n function getConsumersWithRemainingGoals() {\r\n var getUserIdPromise = new Promise(function (resolve, reject) {\r\n outcomesAjax.getUserIdsWithGoalsByDate(currDate, res => {\r\n userIdsWithGoals = res;\r\n resolve('success');\r\n });\r\n });\r\n var getRemainingDailyGoalsPromise = new Promise(function (resolve, reject) {\r\n outcomesAjax.getRemainingDailyGoals(currDate, res => {\r\n userIdsWithRemainingGoals = res;\r\n resolve('success');\r\n });\r\n });\r\n\r\n Promise.all([getUserIdPromise, getRemainingDailyGoalsPromise]).then(function () {\r\n buildAllowedConsumersObj(userIdsWithGoals, userIdsWithRemainingGoals);\r\n });\r\n }\r\n function loadLandingPage() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n PROGRESS.SPINNER.show('Loading Outcomes...');\r\n\r\n OUTCOMES_SECTION = document.createElement('div');\r\n OUTCOMES_SECTION.classList.add('outcomes');\r\n\r\n // var message = document.createElement(\"h2\");\r\n // message.classList.add(\"landingMessage\");\r\n // message.innerHTML = `Please select a consumer to get started.`;\r\n\r\n // OUTCOMES_SECTION.appendChild(message);\r\n DOM.ACTIONCENTER.appendChild(OUTCOMES_SECTION);\r\n\r\n currDate = UTIL.getTodaysDate();\r\n outcomesAjax.getViewableGoalIdsByPermission(getConsumersWithRemainingGoals);\r\n }\r\n\r\n // function appendMiniRoster(miniRoster) {\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.appendChild(miniRoster);\r\n // }\r\n\r\n function init() {\r\n initLoad = true;\r\n // var enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // // display mini roster for consumer selection\r\n // PROGRESS.SPINNER.show(\"Please wait while we gather everyone up...\");\r\n // roster.buildRoster(true, false, appendMiniRoster, true);\r\n // } else {\r\n // PROGRESS.SPINNER.show(\"Loading Outcomes...\");\r\n // loadLandingPage();\r\n // }\r\n loadLandingPage();\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n init,\r\n backToOutcomeLoad,\r\n };\r\n})();\r\n","var outcomesAjax = (function () {\r\n function deleteGoal(activityId, consumerId, goalDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteGoal/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"activityId\":\"' + activityId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n //getGoals($.userId, goalId + '-' + objectiveId);\r\n callback();\r\n // getGoals(consumerId, goalDate);\r\n // var list = $.pages.rosterconsumerlist.split('');\r\n // getRemainingDailyGoals(list);\r\n },\r\n error: function (xhr, status, error) { },\r\n });\r\n }\r\n function getGoals(consumerId, goalDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsByDateNew/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"consumerId\":\"' +\r\n consumerId +\r\n '\", \"goalDate\":\"' +\r\n goalDate +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalsByDateNewResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getGoalSpecificLocationInfo(activityId, goalId, objId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalSpecificLocationInfoJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"activityId\":\"' + activityId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalSpecificLocationInfoJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getIdsWithGoals(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserIdsWithGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserIdsWithGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getUserIdsWithGoalsByDate(goalsCheckDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getUserIdsWithGoalsByDateJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"goalsCheckDate\":\"' + goalsCheckDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getUserIdsWithGoalsByDateJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDaysBackForEditingGoalsAndUseConsumerLocation(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDaysBackForEditingGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getDaysBackForEditingGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getViewableGoalIdsByPermission(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getViewableGoalIdsByPermissionJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getViewableGoalIdsByPermissionJSONResult;\r\n res.forEach(function ashLikesThisLoop(element, i) {\r\n $.session.viewableGoalTypeIds.push(element.ID);\r\n });\r\n callback();\r\n },\r\n });\r\n }\r\n function getRemainingDailyGoals(checkDate, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getRemainingDailyGoalsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"checkDate\":\"' + checkDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getRemainingDailyGoalsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getGoalsCommunityIntegrationLevelDropdown(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsCommunityIntegrationLevelJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getGoalsCommunityIntegrationLevelJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n //Get whether or not community integration is required.\r\n function getGoalsCommunityIntegrationRequired(callback) {\r\n //Brad\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalsCommunityIntegrationRequiredJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = ''; //JSON.parse(response.getGoalsCommunityIntegrationRequiredResult);\r\n var res = response.getGoalsCommunityIntegrationRequiredJSONResult;\r\n\r\n if (res.length) {\r\n if (res[0].Setting_Value == 'Y') {\r\n $.session.communityIntegrityRequired = true;\r\n } else {\r\n $.session.communityIntegrityRequired = false;\r\n }\r\n } else {\r\n $.session.communityIntegrityRequired = 'n/a';\r\n }\r\n\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomeTypeForFilter(data, callback) {\r\n // data = {consumerId, selectedDate, token}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeTypeForFilterJSON/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var results = response.getOutcomeTypeForFilterJSONResult;\r\n callback(results);\r\n },\r\n });\r\n }\r\n //function getConsumerTableConsumerLocation(consumerId) {\r\n //\tdata = {\r\n //\t\ttoken: $.session.Token,\r\n //\t\tconsumerId: consumerId,\r\n //\t};\r\n //\t$.ajax({\r\n //\t\ttype: 'POST',\r\n //\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumerTableConsumerLocation/',\r\n //\t\tdata: JSON.stringify(data),\r\n //\t\tcontentType: 'application/json; charset=utf-8',\r\n //\t\tdataType: 'json',\r\n //\t\tsuccess: function(response, status, xhr) {\r\n //\t\t\tdata = response.getConsumerTableConsumerLocationResult;\r\n //\t\t\t$.session.consumerTableConsumerLocationId = data[0].locationId;\r\n //\t\t\t$.session.consumerTableConsumerLocationName = data[0].description;\r\n //\t\t},\r\n //\t\terror: function(xhr, status, error) {\r\n //\t\t\talert('Error\\n-----\\n' + xhr.status + '\\n' + xhr.responseText);\r\n //\t\t},\r\n //\t});\r\n //}\r\n function saveGoals(data, callback) {\r\n data = {\r\n token: $.session.Token,\r\n objectiveId: data.objectiveId,\r\n activityId: data.activityId,\r\n date: data.objdate,\r\n success: data.success,\r\n goalnote: data.goalnote,\r\n promptType: data.promptType,\r\n promptNumber: data.promptNumber,\r\n locationId: data.locationId,\r\n locationSecondaryId: data.locationSecondaryId,\r\n goalStartTime: data.goalStartTime,\r\n goalEndTime: data.goalEndTime,\r\n goalCILevel: data.goalCILevel,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/saveGoal/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n\r\n if (!response.saveGoalResult.match('Error')) {\r\n callback(res);\r\n } else {\r\n alert(\r\n 'Outcome could not be saved. Please verify your start time, end time, and all other data.',\r\n );\r\n }\r\n },\r\n });\r\n }\r\n function getObjectiveActivity(objectiveActivityId, callback) {\r\n data = {\r\n objectiveActivityId: objectiveActivityId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getObjectiveActivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getObjectiveActivityResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesPrompts(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesPrompts/',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesPromptsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesSuccessTypes(goalTypeId, callback) {\r\n data = {\r\n goalTypeId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesSuccessTypes/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesSuccessTypesResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getOutcomesPrimaryAndSecondaryLocations(consumerId, goalDate, callback) {\r\n data = {\r\n consumerId,\r\n goalDate,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomesPrimaryAndSecondaryLocations/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getOutcomesPrimaryAndSecondaryLocationsResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getSuccessSymbols(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSuccessSymbolLookup/',\r\n // data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getSuccessSymbolLookupResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n\r\n async function getOutcomeServicsPageData(retrieveData) {\r\n // token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeServicsPageData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getOutcomeServicsPageDataResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n async function getOutcomeTypeDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeTypeDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getOutcomeServiceDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getOutcomeServiceDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getGoalEntriesByIdAsync(goalId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getGoalEntriesById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"goalId\":\"' +\r\n goalId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getObjectiveEntriesByIdAsync(objectiveId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getObjectiveEntriesById/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"objectiveId\":\"' +\r\n objectiveId +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getServiceFrequencyTypeDropDownAsync(Type) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceFrequencyTypeDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n type: Type,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertOutcomeInfoAsync(\r\n startDate, endDate, outcomeType, outcomeStatement, userID, goalId, consumerId, location\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertOutcomeInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDate: startDate,\r\n endDate: endDate,\r\n outcomeType: outcomeType,\r\n outcomeStatement: outcomeStatement,\r\n userID: userID,\r\n goalId: goalId,\r\n consumerId: consumerId,\r\n location: location\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertOutcomeServiceInfoAsync(\r\n startDate, endDate, outcomeType, servicesStatement, ServiceType, method, success, frequencyModifier, frequency, frequencyPeriod, userID, objectiveId, consumerId, location, duration\r\n ) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertOutcomeServiceInfo/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n startDate: startDate,\r\n endDate: endDate,\r\n outcomeType: outcomeType,\r\n servicesStatement: servicesStatement,\r\n ServiceType: ServiceType,\r\n method: method,\r\n success: success,\r\n frequencyModifier: frequencyModifier,\r\n frequency: frequency,\r\n frequencyPeriod: frequencyPeriod,\r\n userID: userID,\r\n objectiveId: objectiveId,\r\n consumerId: consumerId,\r\n location: location,\r\n duration: duration\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getLocationDropDownAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationDropDown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteGoal,\r\n getGoals,\r\n getGoalSpecificLocationInfo,\r\n getIdsWithGoals,\r\n getUserIdsWithGoalsByDate,\r\n getDaysBackForEditingGoalsAndUseConsumerLocation,\r\n getViewableGoalIdsByPermission,\r\n getRemainingDailyGoals,\r\n getGoalsCommunityIntegrationLevelDropdown,\r\n getGoalsCommunityIntegrationRequired,\r\n getOutcomeTypeForFilter,\r\n // getConsumerTableConsumerLocation,\r\n saveGoals,\r\n getObjectiveActivity,\r\n getOutcomesPrompts,\r\n getOutcomesSuccessTypes,\r\n getOutcomesPrimaryAndSecondaryLocations,\r\n getSuccessSymbols,\r\n getOutcomeServicsPageData,\r\n getOutcomeTypeDropDownAsync,\r\n getGoalEntriesByIdAsync,\r\n getObjectiveEntriesByIdAsync,\r\n getOutcomeServiceDropDownAsync,\r\n getServiceFrequencyTypeDropDownAsync,\r\n insertOutcomeInfoAsync,\r\n insertOutcomeServiceInfoAsync,\r\n getLocationDropDownAsync,\r\n };\r\n})();\r\n","const 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 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 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 firstPart = sentence.slice(0, 83);\r\n const secondPart = sentence.slice(83, sentence.length);\r\n return [firstPart, secondPart];\r\n}\r\n function handleReportStream(report) {\r\n if (!report) return;\r\n\r\n const arr = report;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n }\r\n function mapResultsObj(results) {\r\n const obj = {};\r\n\r\n results.forEach(r => {\r\n const [action, result, ...rest] = r.split(' ');\r\n obj[action] = rest && rest.length ? `${result},${rest}`.replaceAll(',', ' ') : result;\r\n });\r\n\r\n return obj;\r\n }\r\n async function showFinalizePopup() {\r\n let currScreen = 1;\r\n let checkboxesSelected = [];\r\n let finalizationResults;\r\n let includeInAssessment = 'false';\r\n\r\n const finalizePopup = POPUP.build({\r\n classNames: 'finalizePopup',\r\n });\r\n\r\n const screen1 = document.createElement('div');\r\n const screen2 = document.createElement('div');\r\n const screen3 = document.createElement('div');\r\n screen1.classList.add('finalizeSelect', 'finalizeScreen', 'visible');\r\n screen2.classList.add('finalizeAttachments', 'finalizeScreen');\r\n screen3.classList.add('screenThree', 'finalizeScreen');\r\n\r\n const heading1 = document.createElement('p');\r\n const heading2 = document.createElement('p');\r\n heading1.classList.add('finalizeheading');\r\n heading2.classList.add('finalizeheading');\r\n heading1.innerHTML = 'Please select the actions that should take place';\r\n heading2.innerHTML = 'Please select the attachment(s) that should be included with the report.';\r\n\r\n screen1.appendChild(heading1);\r\n screen2.appendChild(heading2);\r\n\r\n const actionBtn = button.build({\r\n text: 'Next',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n if (currScreen === 1) {\r\n if (selectedCheckboxes.selectAllCheck) {\r\n checkboxesSelected = ['selectAllCheck'];\r\n } else {\r\n checkboxesSelected = Object.entries(selectedCheckboxes)\r\n .filter(([key, value]) => {\r\n // return key === 'selectAllCheck'\r\n if (key === 'selectAllCheck') return false;\r\n if (value) return true;\r\n })\r\n .map(([key, value]) => {\r\n return key;\r\n });\r\n }\r\n\r\n currScreen = 2;\r\n screen1.classList.remove('visible');\r\n screen2.classList.add('visible');\r\n\r\n return;\r\n }\r\n\r\n if (currScreen === 2) {\r\n const spinner = PROGRESS.SPINNER.get('Finalizing Plan...');\r\n screen3.insertBefore(spinner, screen3.firstChild);\r\n\r\n currScreen = 3;\r\n actionBtn.textContent = 'done';\r\n actionBtn.style.display = 'none';\r\n screen2.classList.remove('visible');\r\n screen3.classList.add('visible');\r\n\r\n finalizationResults = await assessmentAjax.finalizationActions({\r\n token: $.session.Token,\r\n planAttachmentIds: getAttachmentIds(selectedAttachmentsPlan),\r\n wfAttachmentIds: getAttachmentIds(selectedAttachmentsSignature),\r\n sigAttachmentIds: getAttachmentIds(selectedAttachmentsWorkflow),\r\n userId: $.session.UserId,\r\n assessmentID: planId,\r\n peopleId: selectedConsumer.id,\r\n emailAddresses: [...Object.values(selectedEmails)],\r\n checkBoxes: [...checkboxesSelected],\r\n extraSpace: 'false',\r\n toONET: false,\r\n isp: false,\r\n oneSpan: false,\r\n signatureOnly: false,\r\n include: includeInAssessment,\r\n versionID: '1',\r\n });\r\n console.table(finalizationResults);\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 }\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: () => {\r\n showFinalizePopup();\r\n },\r\n });\r\n if (planStatus !== 'C') {\r\n finalizeBtn.classList.add('disabled');\r\n }\r\n\r\n const backBtn = button.build({\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n clearAllDataKeepConsumer();\r\n loadLandingPage();\r\n },\r\n });\r\n\r\n buttonBar.appendChild(moreBtn);\r\n if ($.session.applicationName === 'Gatekeeper' && $.session.planUpdate) {\r\n buttonBar.appendChild(finalizeBtn);\r\n }\r\n buttonBar.appendChild(backBtn);\r\n\r\n return buttonBar;\r\n }\r\n function buildPlanHeader() {\r\n planHeader = document.createElement('div');\r\n planHeader.classList.add('planHeader');\r\n\r\n planHeaderGeneralInfoBar = buildGeneralInfoBar();\r\n planHeaderButtons = buildButtonBar();\r\n\r\n planHeader.appendChild(planHeaderGeneralInfoBar);\r\n planHeader.appendChild(planHeaderButtons);\r\n\r\n return planHeader;\r\n }\r\n // main build\r\n async function getWorkflowMarkup() {\r\n const workflowMarkup = document.createElement('div');\r\n workflowMarkup.classList.add('planWorkflow');\r\n\r\n const processId = planWorkflow.getProcessId(planType);\r\n const workflowViewer = await WorkflowViewerComponent.get(processId, planId);\r\n const addWorkflowBtn = button.build({\r\n id: 'workflow_addWorkflowBtn',\r\n text: 'Add Workflow(s)',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['addWorkflowBtn'],\r\n callback: () => {\r\n planWorkflow.addWorkflowPopup();\r\n },\r\n });\r\n\r\n workflowMarkup.appendChild(addWorkflowBtn);\r\n workflowMarkup.appendChild(workflowViewer);\r\n\r\n return workflowMarkup;\r\n }\r\n async function buildPlanPage(loadingOrder, workflowDashboardCallback) {\r\n // loadingOrder = ['a', 'i', 'w']\r\n document.body.classList.add('planActive');\r\n\r\n const planHeading = buildPlanHeader();\r\n const loadingBar = PROGRESS.SPINNER.get('Loading Plan...');\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(planHeading);\r\n DOM.ACTIONCENTER.appendChild(loadingBar);\r\n // init data for tab sections\r\n await planData.init(planId);\r\n await planAttachment.getAttachments(planId);\r\n\r\n // build tab section wraps\r\n const assessmentWrap = document.createElement('div');\r\n const ispWrap = document.createElement('div');\r\n const workflowWrap = document.createElement('div');\r\n assessmentWrap.id = 'planAssessment';\r\n ispWrap.id = 'planISP';\r\n workflowWrap.id = 'planWorkflow';\r\n\r\n const firstToLoad = loadingOrder ? loadingOrder[0] : 'a';\r\n let defaultActiveTab = firstToLoad === 'a' ? 0 : firstToLoad === 'i' ? 1 : 2;\r\n\r\n // Build Tabs Markup\r\n const tabs = TABS.build(\r\n {\r\n navOnClick: async targetTabIndex => {\r\n if (targetTabIndex === '0') {\r\n $.loadedAppPage = 'planAssessment';\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n await assessmentCard.refreshAssessmentCard({\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n } else if (targetTabIndex === '1') {\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n\r\n $.loadedAppPage = 'planISP';\r\n await ISP.refreshISP(planId);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n DOM.autosizeTextarea();\r\n } else if (targetTabIndex === '2') {\r\n TABS.toggleNavStatus(tabs, 'disable');\r\n\r\n $.loadedAppPage = 'planWorkflow';\r\n const workflowLoadingBar = PROGRESS.SPINNER.get('Loading Workflow...');\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(workflowLoadingBar);\r\n const newWorkflowMarkup = await getWorkflowMarkup();\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(newWorkflowMarkup);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n }\r\n DOM.autosizeTextarea();\r\n },\r\n active: defaultActiveTab,\r\n },\r\n [\r\n {\r\n heading: 'Assessment',\r\n markup: assessmentWrap,\r\n },\r\n {\r\n heading: 'ISP',\r\n markup: ispWrap,\r\n },\r\n {\r\n heading: 'Workflow',\r\n markup: workflowWrap,\r\n },\r\n ],\r\n );\r\n\r\n // initial load by ordering\r\n\r\n switch (firstToLoad) {\r\n case 'a': {\r\n $.loadedAppPage = 'planAssessment';\r\n defaultActiveTab = 0;\r\n\r\n const assessmentData = await assessment.getAssessmentData(planId);\r\n const assessmentMarkup = await assessmentCard.build(assessmentData, {\r\n selectedConsumer,\r\n planStatus,\r\n planId,\r\n isActive: planActiveStatus,\r\n });\r\n assessmentWrap.appendChild(assessmentMarkup);\r\n\r\n break;\r\n }\r\n case 'i': {\r\n $.loadedAppPage = 'planISP';\r\n defaultActiveTab = 1;\r\n\r\n await ISP.refreshISP(planId);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n break;\r\n }\r\n case 'w': {\r\n $.loadedAppPage = 'planWorkflow';\r\n defaultActiveTab = 2;\r\n\r\n const workflowLoadingBar = PROGRESS.SPINNER.get('Loading ISP...');\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(workflowLoadingBar);\r\n const newWorkflowMarkup = await getWorkflowMarkup();\r\n workflowWrap.innerHTML = '';\r\n workflowWrap.appendChild(newWorkflowMarkup);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n break;\r\n }\r\n }\r\n\r\n DOM.ACTIONCENTER.removeChild(loadingBar);\r\n DOM.ACTIONCENTER.appendChild(tabs);\r\n TABS.toggleNavStatus(tabs, 'enable');\r\n\r\n if (workflowDashboardCallback) workflowDashboardCallback();\r\n\r\n if (defaultActiveTab === 0) {\r\n mainAssessment.markUnansweredQuestions();\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n\r\n DOM.autosizeTextarea();\r\n\r\n //sentToOnet = await assessmentAjax.getSentToONETDate({\r\n // token: $.session.Token,\r\n // assessmentId: planId,\r\n //});\r\n //sentToOnet = sentToOnet[0].sentDate;\r\n }\r\n\r\n // New Plan Setup Page\r\n //---------------------------------------------\r\n function sortPreviousPlans(previousPlansData) {\r\n return [...previousPlansData].sort((a, b) => {\r\n const aStart = new Date(a.planYearStart.split(' ')[0]);\r\n const bStart = new Date(b.planYearStart.split(' ')[0]);\r\n\r\n if (aStart === bStart) return 0;\r\n\r\n return aStart > bStart ? -1 : 1;\r\n });\r\n }\r\n async function handleTypeChange(e) {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n planType = selectedOption.value;\r\n\r\n if (setupWrap.contains(prevPlanTable)) setupWrap.removeChild(prevPlanTable);\r\n if (setupWrap.contains(datesBoxDiv)) setupWrap.removeChild(datesBoxDiv);\r\n\r\n if (planType === 'a') {\r\n await planDates.setAnnualPlanDates(previousPlansData);\r\n plan.setPlanType('a');\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.insertBefore(datesBoxDiv, doneBtn);\r\n doneBtn.classList.remove('disabled');\r\n }\r\n\r\n if (planType === 'r') {\r\n prevPlanTable = buildPreviousPlansTable();\r\n plan.setPlanType('r');\r\n setupWrap.insertBefore(prevPlanTable, doneBtn);\r\n doneBtn.classList.add('disabled');\r\n }\r\n }\r\n async function handleDoneBtnClick(selectedConsumer) {\r\n if (doneBtn.classList.contains('disabled')) {\r\n return;\r\n }\r\n\r\n PROGRESS__BTN.SPINNER.show('annualRevisionDoneBtn', '', true);\r\n const processId = planWorkflow.getProcessId(planType);\r\n const wfvData = await planWorkflow.getWorkflowList(processId, 0);\r\n\r\n if (!wfvData || wfvData.length === 0) {\r\n createNewPlan(selectedConsumer, processId);\r\n return;\r\n }\r\n\r\n //const foo = async (selectedWorkflows) => {\r\n // const workflowCallback = selectedWorkflows => {\r\n const workflowCallback = async selectedWorkflows => {\r\n PROGRESS__BTN.SPINNER.show('workflowContinueBtn', '', false);\r\n // TODO 100969 -- display list of User Forms for the selected Workflows\r\n\r\n if ($.session.planFormCarryover) {\r\n let selectedwfForms = [];\r\n\r\n const wfvPopup = document.querySelector('.workflowListPopup');\r\n if (wfvPopup) {\r\n POPUP.hide(wfvPopup);\r\n }\r\n\r\n // *********FAKE DATA for Step Docs in a Workflow*****Albert Annual 6/23******Annual -- 279, Antnio -- 934*******************\r\n // const wfFormsData2 = [{ docId : 6052 , description : 'Expert 15 test.pdf', WFId: 934, wfName: 'Antinono 3' },\r\n // { docId : 6053 , description : 'FORMS -- General.pdf', WFId: 934, wfName: 'Antinono 3' },\r\n // { docId : 1836 , description : 'Medication -- Med Assessment.pdf', WFId: 279, wfName: 'Annual - Waver'},\r\n /// { docId : 3201 , description : 'Signed_Plan.pdf', WFId: 279, wfName: 'Annual - Waver'} ];\r\n\r\n let thisannual_plan;\r\n // inserting a new plan based on a selected prior plan\r\n if (priorConsumerPlanId && priorConsumerPlanId !== '') {\r\n thisPreviousPlanId = priorConsumerPlanId;\r\n } else {\r\n // // inserting a new plan based on the most recent existing plan\r\n thisannual_plan = previousPlansData.filter(wf => wf.active === 'True');\r\n if (thisannual_plan && thisannual_plan.length > 0) {\r\n thisPreviousPlanId = thisannual_plan[0].consumerPlanId;\r\n }\r\n }\r\n\r\n const wfFormsData = await WorkflowViewerAjax.getWorkFlowFormsfromPreviousPlan({\r\n token: $.session.Token,\r\n selectedWFTemplateIds: selectedWorkflows.join(', '),\r\n previousPlanId: thisPreviousPlanId,\r\n });\r\n\r\n const wfFormsPopup = POPUP.build({\r\n classNames: ['wfFormsPopup'],\r\n });\r\n\r\n const title = document.createElement('h2');\r\n title.innerHTML = 'Select forms to attach.
    ';\r\n const linebr = document.createElement('div');\r\n linebr.innerHTML = '
    ';\r\n wfFormsPopup.appendChild(title);\r\n wfFormsPopup.appendChild(linebr);\r\n\r\n const doneBtn = button.build({\r\n id: 'wfFormsContinueBtn',\r\n text: 'Continue',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['copySelectedBtn', 'disabled'],\r\n classNames: 'copySelectedBtn',\r\n callback: () => {\r\n var selectedPreviousWfForms = planWorkflow.getselectedWorkFlowForms();\r\n var wf_template_selected = selectedWorkflows;\r\n\r\n POPUP.hide(wfFormsPopup);\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows, selectedPreviousWfForms);\r\n },\r\n });\r\n\r\n if (wfFormsData && wfFormsData.length > 0) {\r\n const list = planWorkflow.buildWorkflowFormList(wfFormsData);\r\n wfFormsPopup.appendChild(list);\r\n wfFormsPopup.appendChild(doneBtn);\r\n POPUP.show(wfFormsPopup);\r\n } else {\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows);\r\n }\r\n } else {\r\n // if ($.session.planFormCarryover\r\n createNewPlan(selectedConsumer, processId, selectedWorkflows);\r\n }\r\n };\r\n planWorkflow.showWorkflowListPopup(wfvData, workflowCallback);\r\n }\r\n function getSelectedConsumerName(selectedConsumer) {\r\n const last = selectedConsumer.card.querySelector('.name_last');\r\n const first = selectedConsumer.card.querySelector('.name_first');\r\n return `${first.innerText} ${last.innerText}`;\r\n }\r\n async function createNewPlan(selectedConsumer, processId, selectedWorkflows, selectedPreviousWfForms) {\r\n const EffectiveEndDate = planDates.getEffectiveEndDate();\r\n let edDate = UTIL.formatDateFromDateObj(EffectiveEndDate);\r\n\r\n let currentPlanId;\r\n let workflowId;\r\n let insertedSSA;\r\n const workflowIds = [];\r\n const wfDocIds = [];\r\n\r\n //var selectedConsumer = plan.getSelectedConsumer();\r\n var salesForceCaseManagerId = await consentAndSignAjax.getStateCaseManagerforConsumer({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n if (planType === 'a') {\r\n const planYearStartDate = planDates.getPlanYearStartDate();\r\n const planYearReviewDate = planDates.getPlanReviewDate();\r\n\r\n let returnString = await planAjax.insertAnnualPlan({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n planYearStart: UTIL.formatDateFromDateObj(planYearStartDate),\r\n reviewDate: UTIL.formatDateFromDateObj(planYearReviewDate),\r\n salesForceCaseManagerId: salesForceCaseManagerId,\r\n });\r\n\r\n returnString = returnString.split(',');\r\n currentPlanId = returnString[0];\r\n insertedSSA = returnString[1];\r\n } else {\r\n const EffectiveStartDate = planDates.getEffectiveStartDate();\r\n const esDate = UTIL.formatDateFromDateObj(EffectiveStartDate);\r\n const planYearReviewDate = planDates.getPlanReviewDate();\r\n\r\n let returnString = await planAjax.insertRevisedPlan({\r\n token: $.session.Token,\r\n priorConsumerPlanId,\r\n effectiveStart: esDate,\r\n effectiveEnd: edDate,\r\n reviewDate: UTIL.formatDateFromDateObj(planYearReviewDate),\r\n useLatestPlanVersion: true,\r\n salesForceCaseManagerId: salesForceCaseManagerId,\r\n });\r\n\r\n returnString = returnString.split(',');\r\n currentPlanId = returnString[0];\r\n insertedSSA = returnString[1];\r\n }\r\n // handle selected workflows\r\n if (selectedWorkflows && selectedWorkflows.length > 0) {\r\n for (i = 0; i < selectedWorkflows.length; i++) {\r\n let wftemplateId = selectedWorkflows[i];\r\n // does this have any attached WF Forms, if so then wantedFormIds: selectedPreviousWfForms, otherwise wantedFormDescriptions: \"\"\r\n let thiswfForms;\r\n\r\n // handle selected forms\r\n if (selectedPreviousWfForms && selectedPreviousWfForms.length > 0) {\r\n let thiswfFormslist = [];\r\n for (j = 0; j < selectedPreviousWfForms.length; j++) {\r\n if (wftemplateId === selectedPreviousWfForms[j].WFtemplateId) {\r\n //thiswfFormslist.push(selectedPreviousWfForms[j].description);\r\n thiswfFormslist.push(selectedPreviousWfForms[j].attachmentId);\r\n }\r\n }\r\n if (thiswfFormslist && thiswfFormslist.length > 0) {\r\n thiswfForms = thiswfFormslist.join(',');\r\n } else {\r\n thiswfForms = '';\r\n }\r\n } else {\r\n thiswfForms = '';\r\n }\r\n\r\n workflowId = await WorkflowViewerAjax.copyWorkflowtemplateToRecord({\r\n token: $.session.Token,\r\n templateId: wftemplateId,\r\n referenceId: currentPlanId,\r\n peopleId: selectedConsumer.id,\r\n wantedFormAttachmentIds: thiswfForms,\r\n priorReferenceId: thisPreviousPlanId,\r\n });\r\n workflowIds.push(workflowId);\r\n }\r\n }\r\n\r\n // START: Josh's WF ------------------\r\n const autoworkflowIds = await planAjax.insertAutomatedWorkflows({\r\n token: $.session.Token,\r\n processId,\r\n peopleId: selectedConsumer.id,\r\n referenceId: currentPlanId,\r\n priorConsumerPlanId: thisPreviousPlanId,\r\n });\r\n var autoWFIds = autoworkflowIds.split(',');\r\n workflowIds.push(...autoWFIds);\r\n // END: Josh's WF ---------------------\r\n\r\n const wfvPopup = document.querySelector('.workflowListPopup');\r\n if (wfvPopup) {\r\n // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n POPUP.hide(wfvPopup);\r\n }\r\n\r\n PROGRESS.SPINNER.show('Building Plan...');\r\n\r\n setActiveModuleSectionAttribute('plan-questionsAndAnswers-edit');\r\n\r\n planId = currentPlanId;\r\n planType = planType;\r\n planStatus = 'D';\r\n planActiveStatus = true;\r\n revisionNumber = undefined;\r\n\r\n if (salesForceCaseManagerId === '0') {\r\n // const wfvPopup = document.querySelector('.workflowListPopup');\r\n // if (wfvPopup) {\r\n // // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n // POPUP.hide(wfvPopup);\r\n // }\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberNoCasemanagerFoundPopup(consumer, () => {\r\n POPUP.hide(addedMemberNoCaseManagerPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n } else if (salesForceCaseManagerId === '-1') {\r\n // const wfvPopup = document.querySelector('.workflowListPopup');\r\n // if (wfvPopup) {\r\n // // PROGRESS__BTN.SPINNER.hide('workflowContinueBtn');\r\n // POPUP.hide(wfvPopup);\r\n // }\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberPopup(consumer, insertedSSA, () => {\r\n POPUP.hide(addedMemberPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n } else {\r\n const consumer = getSelectedConsumerName(selectedConsumer);\r\n showAddedToTeamMemberPopup(consumer, insertedSSA, () => {\r\n POPUP.hide(addedMemberPopup);\r\n planWorkflow.displayWFwithMissingResponsibleParties(workflowIds);\r\n buildPlanPage();\r\n });\r\n }\r\n }\r\n\r\n function buildPreviousPlansTable(forChangeType, callbackForChangeType) {\r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: ['Type', 'Rev #', 'PY Start', 'Eff Start', 'Review'],\r\n tableId: forChangeType ? 'previousPlanTableMoreMenu' : 'previousPlanTable',\r\n headline: 'Select a plan below for revision',\r\n };\r\n\r\n const tableData = previousPlansData\r\n .filter(prevPlan => {\r\n return prevPlan.active === 'True';\r\n })\r\n .map(prevPlan => {\r\n const type = prevPlan.planType === 'A' ? 'Ann' : 'Rev';\r\n const revisionNum = prevPlan.revisionNumber !== '0' ? prevPlan.revisionNumber : '';\r\n const start = prevPlan.planYearStart.split(' ')[0];\r\n const effectiveStart = prevPlan.effectiveStart.split(' ')[0];\r\n const reviewDate = prevPlan.reviewDate ? prevPlan.reviewDate.split(' ')[0] : 'n/a';\r\n\r\n return {\r\n values: [type, revisionNum, start, effectiveStart, reviewDate],\r\n attributes: [{ key: 'data-plan-id', value: prevPlan.consumerPlanId }],\r\n onClick: e => {\r\n if (!forChangeType) {\r\n const row = e.target;\r\n const previouslySeletedRow = prevPlanTable.querySelector('.selected');\r\n if (previouslySeletedRow) previouslySeletedRow.classList.remove('selected');\r\n\r\n row.classList.add('selected');\r\n\r\n planDates.setRevisionPlanDates(prevPlan);\r\n\r\n priorConsumerPlanId = prevPlan.consumerPlanId;\r\n\r\n if (setupWrap.contains(datesBoxDiv)) setupWrap.removeChild(datesBoxDiv);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.insertBefore(datesBoxDiv, prevPlanTable);\r\n } else {\r\n callbackForChangeType(e.target, prevPlan);\r\n }\r\n },\r\n };\r\n });\r\n\r\n const previousPlansTable = table.build(tableOptions);\r\n table.populate(previousPlansTable, tableData);\r\n\r\n return previousPlansTable;\r\n }\r\n function toggleNewPlanDoneBtn(disable) {\r\n if (disable) {\r\n if (doneBtn) doneBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n if (doneBtn) doneBtn.classList.remove('disabled');\r\n }\r\n async function buildNewPlanSetupPage(selectedConsumer) {\r\n setupWrap = document.createElement('div');\r\n setupWrap.classList.add('planSetupPage');\r\n\r\n hasPreviousPlans = previousPlansData && previousPlansData.length > 0 ? true : false;\r\n\r\n typeDropdown = dropdown.build({\r\n label: 'Type',\r\n style: 'secondary',\r\n className: 'planTypeDropdown',\r\n });\r\n\r\n let typeData;\r\n\r\n if (hasPreviousPlans) {\r\n planType = '%';\r\n typeData = [\r\n { value: '%', text: '' },\r\n { value: 'a', text: 'Annual' },\r\n { value: 'r', text: 'Revision' },\r\n ];\r\n } else {\r\n planType = 'a';\r\n typeData = [{ value: 'a', text: 'Annual' }];\r\n }\r\n\r\n dropdown.populate(typeDropdown, typeData);\r\n\r\n typeDropdown.addEventListener('change', handleTypeChange);\r\n\r\n doneBtn = button.build({\r\n id: 'annualRevisionDoneBtn',\r\n text: 'Done',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['setupDoneBtn', 'disabled'],\r\n callback: () => handleDoneBtnClick(selectedConsumer),\r\n });\r\n\r\n setupWrap.appendChild(typeDropdown);\r\n\r\n if (!hasPreviousPlans) {\r\n plan.setPlanType('a');\r\n await planDates.setAnnualPlanDates(previousPlansData);\r\n datesBoxDiv = planDates.buildDatesBox(isValid => {\r\n if (isValid) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n setupWrap.appendChild(datesBoxDiv);\r\n }\r\n\r\n setupWrap.appendChild(doneBtn);\r\n\r\n return setupWrap;\r\n }\r\n\r\n // Plan Landing Page\r\n //---------------------------------------------\r\n function showInvalidSalesForceWarningPopup() {\r\n const warningPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n // closeCallback: () => {\r\n // POPUP.hide(warningPopup);\r\n // },\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.innerText = `This consumer does not have a Resident Number or a SalesForce ID. Please insert the Resident Number or confirm that it is a valid number in the Desktop before inserting a Plan.`;\r\n\r\n warningPopup.appendChild(message);\r\n\r\n POPUP.show(warningPopup);\r\n }\r\n function showAddedToTeamMemberPopup(consumer, ssa, callback) {\r\n addedMemberPopup = POPUP.build({\r\n id: 'importRelationshipPopup',\r\n hideX: true,\r\n });\r\n\r\n if (ssa) {\r\n addedMemberPopup.innerHTML += `

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

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

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

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

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

    \r\n //

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

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

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

    \r\n

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

    `;\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: callback,\r\n });\r\n\r\n addedMemberNoCaseManagerPopup.appendChild(okButton);\r\n\r\n POPUP.show(addedMemberNoCaseManagerPopup);\r\n }\r\n\r\n function buildNewPlanBtn() {\r\n return button.build({\r\n text: 'Add New Plan',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.planUpdate ? ['disabled'] : ['newPlanBtn'],\r\n callback: async () => {\r\n if (newPlanBtn.innerText === 'ADD NEW PLAN') {\r\n PROGRESS__BTN.SPINNER.show(newPlanBtn);\r\n\r\n if ($.session.areInSalesForce) {\r\n // validate salesforce\r\n isValidSalesforce = await consentAndSignAjax.validateConsumerForSalesForceId({\r\n consumerId: selectedConsumer.id,\r\n });\r\n if (!isValidSalesforce) {\r\n PROGRESS__BTN.SPINNER.hide(newPlanBtn);\r\n showInvalidSalesForceWarningPopup();\r\n return;\r\n }\r\n }\r\n\r\n planSetupPage = await buildNewPlanSetupPage(selectedConsumer);\r\n\r\n landingPage.removeChild(overviewTable);\r\n landingPage.appendChild(planSetupPage);\r\n\r\n PROGRESS__BTN.SPINNER.hide(newPlanBtn);\r\n newPlanBtn.innerText = 'Back';\r\n\r\n if (assignCaseLoadBtn) {\r\n assignCaseLoadBtn.style.display = 'none';\r\n }\r\n } else {\r\n landingPage.removeChild(planSetupPage);\r\n landingPage.appendChild(overviewTable);\r\n\r\n newPlanBtn.innerText = 'Add New Plan';\r\n if (assignCaseLoadBtn) {\r\n assignCaseLoadBtn.style.display = 'block';\r\n }\r\n }\r\n },\r\n });\r\n }\r\n\r\n function buildAssignCaseloadBtn() {\r\n return button.build({\r\n id: 'assign-case-load-btn',\r\n text: $.session.applicationName === 'Gatekeeper' ? 'ASSIGN CASE LOAD' : 'ASSIGN QIDP',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.planUpdate ? ['disabled'] : ['newPlanBtn'],\r\n callback: () => {\r\n csAssignCaseload.showAssignCaseLoadPopup();\r\n },\r\n });\r\n }\r\n\r\n function buildDownloadPlanBtn() {\r\n return button.build({\r\n text: 'DOWNLOAD PLAN',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['downloadPlanBtn'],\r\n callback: downloadPlanFromSalesforceProgress,\r\n });\r\n }\r\n\r\n async function downloadPlanFromSalesforceProgress() {\r\n pendingSave.show('Downloading Plan...');\r\n\r\n const sentStatus = await planAjax.downloadPlanFromSalesforce({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n userId: $.session.UserId,\r\n });\r\n\r\n if (sentStatus === 'Download complete') {\r\n success = true;\r\n } else {\r\n success = false;\r\n }\r\n\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n // Handles popup actions based on whether the One Span delivery was successsful\r\n if (success) {\r\n pendingSave.fulfill('Download Successful!');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n overlay.hide();\r\n\r\n loadLandingPage();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to download plan, please try again.');\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n overlay.hide();\r\n }, 2000);\r\n }\r\n }\r\n\r\n function buildConsumerCard() {\r\n selectedConsumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(selectedConsumer.card);\r\n\r\n return wrap;\r\n }\r\n function buildOverviewTable() {\r\n const tableOptions = {\r\n plain: false,\r\n columnHeadings: ['Type', 'Rev #', 'Downloaded', 'PY Start', 'Eff Start', 'Review', 'Sent To DODD'],\r\n tableId: 'planOverviewTable',\r\n };\r\n\r\n const tableData = previousPlansData.map(pd => {\r\n const type = pd.planType === 'A' ? 'Annual' : 'Revision';\r\n const revisionNum = pd.revisionNumber !== '0' ? pd.revisionNumber : '';\r\n const downloadedDate = pd.downloadDate ? pd.downloadDate.split(' ')[0] : '';\r\n const startDate = pd.planYearStart.split(' ')[0];\r\n const endDate = pd.planYearEnd.split(' ')[0];\r\n const effectiveStart = pd.effectiveStart.split(' ')[0];\r\n const effectiveEnd = pd.effectiveEnd.split(' ')[0];\r\n let isActive = pd.active === 'True' ? true : false;\r\n const reviewDate = pd.reviewDate ? pd.reviewDate.split(' ')[0] : 'n/a';\r\n let sentToDODD = pd.dateSentDODD ? pd.dateSentDODD : '';\r\n sentToDODD = `${pd.userSentDODD} - ${sentToDODD}`;\r\n if (downloadedDate !== '') {\r\n downloadPlanBtn.classList.add('disabled');\r\n }\r\n\r\n return {\r\n values: [type, revisionNum, downloadedDate, startDate, effectiveStart, reviewDate, sentToDODD],\r\n attributes: [\r\n { key: 'data-plan-active', value: isActive },\r\n { key: 'data-plan-id', value: pd.consumerPlanId },\r\n ],\r\n onClick: async () => {\r\n planId = pd.consumerPlanId;\r\n planType = pd.planType.toLowerCase();\r\n planStatus = pd.planStatus ? pd.planStatus : 'D';\r\n planActiveStatus = isActive;\r\n revisionNumber = pd.revisionNumber;\r\n downloadedFromSalesforce = downloadedDate ? true : false;\r\n\r\n planDates.setReviewPlanDates({\r\n startDate: new Date(startDate),\r\n endDate: new Date(endDate),\r\n effectiveStart: new Date(effectiveStart),\r\n effectiveEnd: new Date(effectiveEnd),\r\n reviewDate: new Date(reviewDate),\r\n });\r\n\r\n buildPlanPage();\r\n },\r\n };\r\n });\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n async function loadLandingPage() {\r\n DOM.clearActionCenter();\r\n\r\n landingPage = document.createElement('div');\r\n landingPage.classList.add('planLandingPage');\r\n\r\n const consumerCard = buildConsumerCard();\r\n newPlanBtn = buildNewPlanBtn();\r\n assignCaseLoadBtn = buildAssignCaseloadBtn();\r\n downloadPlanBtn = buildDownloadPlanBtn();\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('topOutcomeWrap');\r\n\r\n btnWrap.appendChild(newPlanBtn);\r\n if ($.session.planAssignCaseload) btnWrap.appendChild(assignCaseLoadBtn);\r\n\r\n if ($.session.downloadPlans && $.session.areInSalesForce) {\r\n // validate salesforce\r\n isValidSalesforce = await consentAndSignAjax.validateConsumerForSalesForceId({\r\n consumerId: selectedConsumer.id,\r\n });\r\n\r\n if (isValidSalesforce) {\r\n btnWrap.appendChild(downloadPlanBtn);\r\n }\r\n }\r\n\r\n landingPage.appendChild(consumerCard);\r\n landingPage.appendChild(btnWrap);\r\n DOM.ACTIONCENTER.appendChild(landingPage);\r\n\r\n const spinner = PROGRESS.SPINNER.get('Gathering Plans...');\r\n landingPage.appendChild(spinner);\r\n\r\n previousPlansData = await planAjax.getConsumerPlans({\r\n token: $.session.Token,\r\n consumerId: selectedConsumer.id,\r\n });\r\n previousPlansData.sort((a, b) => {\r\n const aDate = a.effectiveStart.split(' ')[0];\r\n const bDate = b.effectiveStart.split(' ')[0];\r\n const aDateObj = new Date(aDate);\r\n const bDateObj = new Date(bDate);\r\n\r\n return bDateObj - aDateObj;\r\n });\r\n\r\n landingPage.removeChild(spinner);\r\n\r\n overviewTable = buildOverviewTable();\r\n landingPage.appendChild(overviewTable);\r\n }\r\n\r\n function init() {\r\n planAjax.checkForSalesForce();\r\n setActiveModuleAttribute('plan');\r\n DOM.clearActionCenter();\r\n roster2.showMiniRoster();\r\n }\r\n\r\n return {\r\n clearAllData,\r\n clearPlanId,\r\n dashHandler,\r\n getCurrentPlanId,\r\n getSelectedConsumer,\r\n getCurrentPlanType,\r\n getPlanStatus,\r\n getPlanActiveStatus,\r\n getPlanDropdownData,\r\n getWorkflowMarkup,\r\n getHasPreviousPlans,\r\n setSelectedConsumer,\r\n setRevisionNumber,\r\n getISPValidation,\r\n getAttachmentIds,\r\n setPlanType,\r\n setPlanId,\r\n setPlanStatus,\r\n setPlanActiveStatus,\r\n toggleNewPlanDoneBtn,\r\n handleActionNavEvent,\r\n buildPlanPage,\r\n buildPreviousPlansTable,\r\n loadLanding: loadLandingPage,\r\n init,\r\n };\r\n})();\r\n","const planAjax = (function () {\r\n // GET\r\n //------------------------------------\r\n async function getConsumerPlans(retrieveData) {\r\n // token, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPlans/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPlansResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getConsumerPlanYearInfo(retrieveData) {\r\n //token, answerObj array\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPlanYearInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPlanYearInfoResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function getPlanDropdownData(retrieveData) {\r\n // TODO: this function can be removed, it lives in planData now\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.getServiceAndSupportsDataResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getPlanAndWorkFlowAttachments(retrieveData) {\r\n //string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAndWorkFlowAttachments/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.getPlanAndWorkFlowAttachmentsResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertAnnualPlan(retrieveData) {\r\n // token, consumerId, planYearStart\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerPlanAnnual/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n const planId = data.insertConsumerPlanAnnualResult;\r\n plan.setPlanId(planId);\r\n return planId;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function insertRevisedPlan(retrieveData) {\r\n // priorConsumerPlanId, effectiveStart, effectiveEnd, useLatestAssessmentVersion\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertConsumerPlanRevision/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n const planId = data.insertConsumerPlanRevisionResult;\r\n plan.setPlanId(planId);\r\n return planId;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function insertAutomatedWorkflows(retrieveData) {\r\n // token, processId, peopleId, referenceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAutomatedWorkflows/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.insertAutomatedWorkflowsResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function addSelectedAttachmentsToReport(retrieveData) {\r\n // string token, string[] attachmentIds, string userId, string assessmentID,,\r\n // string versionID, string extraSpace, bool isp\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addSelectedAttachmentsToReport/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addSelectedAttachmentsToReportResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n // UPDATE\r\n //------------------------------------\r\n async function updateConsumerPlanReactivate(retrieveData) {\r\n // token, consumerPlanId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanReactivate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanReactivateResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanSetStatus(retrieveData) {\r\n // token, consumerPlanId, status\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetStatus/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetStatusResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n return { hasError: true, message: error.statusText };\r\n }\r\n }\r\n async function updateConsumerPlanSetAnnualDates(retrieveData) {\r\n // token, consumerPlanId, newPlanYearStart\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetAnnualDates/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetAnnualDatesResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanSetRevisionEffectiveDates(retrieveData) {\r\n // token, consumerPlanId, newEffectiveStart, newEffectiveEnd\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanSetRevisionEffectiveDates/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanSetRevisionEffectiveDatesResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updateConsumerPlanReviewDate(retrieveData) {\r\n // token, reviewDate, planId (make a integer)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateConsumerPlanReviewDate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.updateConsumerPlanReviewDateResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function uploadPlanToDODD(retrieveData) {\r\n // consumerId(peopleId), planId)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/uploadPlanToDODD/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.uploadPlanToDODDResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updatePlanType(retrieveData) {\r\n //string token, string consumerPlanId, string planType, string planYearStart, string planYearEnd, \r\n //string effectiveStartDate, string effectiveEndDate, string reviewDate, string prevPlanId\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/switchPlanType/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.switchPlanTypeResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deletePlan(retrieveData) {\r\n // token, consumerPlanId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteConsumerPlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n mainAssessment.clearData();\r\n plan.clearPlanId();\r\n return data.deleteConsumerPlanResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // ATTACHMENTS\r\n // ----------------------------------\r\n function viewPlanAttachment(attachmentId, section) {\r\n data = {\r\n attachmentId: attachmentId,\r\n };\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewPlanAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', section);\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n }\r\n\r\n async function addPlanAttachment(retrieveData) {\r\n // let abString = btoa(String.fromCharCode.apply(null, new Uint8Array(buf)))\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/addPlanAttachment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.addPlanAttachmentResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n function deletePlanAttachment(planId, attachmentId) {\r\n data = {\r\n token: $.session.Token,\r\n planId: planId, //long\r\n attachmentId: attachmentId, //long\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanAttachment/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.deletePlanAttachmentResult;\r\n },\r\n error: function (xhr, status, error) {},\r\n });\r\n }\r\n async function getPlanAttachmentsList(retrieveData) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAttachmentsList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getPlanAttachmentsListResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // OTHER\r\n // ----------------------------------\r\n function getConsumerPeopleId(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPeopleId/',\r\n data: '{\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerPeopleIdResult;\r\n return callback(res);\r\n },\r\n });\r\n }\r\n async function getConsumerPeopleIdAsync(consumerId, callback) {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerPeopleId/',\r\n data: JSON.stringify({ consumerId: consumerId }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getConsumerPeopleIdResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n async function updatePlanSectionApplicable(retrieveData) {\r\n // string token, long planId, long sectionId, string applicable)\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanSectionApplicable/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanSectionApplicableResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n 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 // Selected & Active Consumers\r\n //---------------------------------------------\r\n function selectedConsumersToActiveList() {\r\n selectedConsumers.forEach(sc => sc.card.classList.remove('highlighted'));\r\n activeConsumers = [...activeConsumers, ...selectedConsumers];\r\n selectedConsumerCache = selectedConsumers;\r\n selectedConsumers = [];\r\n }\r\n // Selected*\r\n function addConsumerToSelectedConsumers(consumer) {\r\n selectedConsumers.push({\r\n id: consumer.dataset.consumerId,\r\n card: consumer,\r\n });\r\n }\r\n function removeConsumerFromSelectedConsumers(consumerId) {\r\n selectedConsumers = selectedConsumers.filter(c => c.id !== consumerId);\r\n }\r\n function getSelectedConsumers() {\r\n return [...selectedConsumers];\r\n }\r\n function getSelectedConsumersCache() {\r\n return [...selectedConsumerCache];\r\n }\r\n /*\r\n I created selected consumers miniroster to have a function\r\n that gives you only the consumers that were selected in the mini roster\r\n GetActiveConsumers gives you the active consumers on the roster, even if they\r\n werent just selected\r\n */\r\n function getSelectedConsumersMiniRoster() {\r\n return [...selectedConsumerCache];\r\n }\r\n /**\r\n * Returns all roster consumers.\r\n *\r\n * @async\r\n * @returns {Object[]} Returns Array of consumer objects\r\n * -- FN: First Name\r\n * -- IDa: ?\r\n * -- LId: service location id's seperated by |\r\n * -- LN: Last Name\r\n * -- MN: Middle Name\r\n * -- SD: ?\r\n * -- conL: primary location id\r\n * -- id: consumer id\r\n */\r\n async function getAllRosterConsumers() {\r\n if (rosterConsumers) {\r\n return [...rosterConsumers];\r\n } else {\r\n await getRosterData();\r\n await getRosterConsumersData();\r\n return [...rosterConsumers];\r\n }\r\n }\r\n function clearSelectedConsumers() {\r\n selectedConsumers = [];\r\n // clearHighlightedConsumers();\r\n return selectedConsumers;\r\n }\r\n // Active*\r\n function addConsumerToActiveConsumers(consumer) {\r\n activeConsumers.push({\r\n id: consumer.dataset.consumerId,\r\n card: consumer,\r\n });\r\n }\r\n function removeConsumerFromActiveConsumers(consumerId) {\r\n activeConsumers = activeConsumers.filter(c => c.id !== consumerId);\r\n }\r\n function getActiveConsumers() {\r\n return [...activeConsumers];\r\n }\r\n function clearActiveConsumers() {\r\n activeConsumers = [];\r\n return activeConsumers;\r\n }\r\n\r\n // Util\r\n //---------------------------------------------\r\n function clearHighlightedConsumers() {\r\n if (!ROSTER_LIST) return;\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard.highlighted'));\r\n if (consumers.length > 1) {\r\n consumers.forEach(c => {\r\n c.classList.remove('consumer-selected', 'highlighted');\r\n });\r\n }\r\n }\r\n function selectNoneHighlightedConsumers() {\r\n if (!ROSTER_LIST) return;\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard.highlighted'));\r\n if (consumers.length > 0) {\r\n consumers.forEach(c => {\r\n c.classList.remove('consumer-selected', 'highlighted');\r\n });\r\n }\r\n }\r\n function removeMiniRosterBtn() {\r\n var miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n document.body.removeChild(miniRosterBtn);\r\n }\r\n }\r\n function getSelectedLocationObj() {\r\n return {\r\n locationName: selectedLocationName,\r\n locationId: selectedLocationId,\r\n };\r\n }\r\n function getSelectedDate() {\r\n return selectedDate;\r\n }\r\n function getRosterLocations() {\r\n return rosterLocations;\r\n }\r\n function getConsumersWithUnreadNotes() {\r\n return consumersWithUnreadNotes;\r\n }\r\n function updateSelectedDate(date) {\r\n selectedDate = date;\r\n }\r\n function updateSelectedLocationId(locationId, locationName) {\r\n selectedLocationId = locationId;\r\n selectedGroupId = locationId;\r\n selectedLocationName = locationName;\r\n }\r\n function setRosterGroups(rosterData) {\r\n rosterGroups = rosterData;\r\n selectedGroupCode = rosterData[0].GroupCode;\r\n selectedGroupId = rosterData[0].RetrieveID;\r\n // selectedGroupName = rosterData[0].GroupName;\r\n $.session.formsCaseload == true && $.loadedApp === 'forms'\r\n ? (selectedGroupName = 'Caseload')\r\n : (selectedGroupName = selectedGroupName = rosterData[0].GroupName);\r\n }\r\n function setSelectedGroupData() {\r\n var defaultRosterGroup = defaults.getLocation('rosterGroup').split('-');\r\n var defaultRosterGroupCode = defaultRosterGroup[0];\r\n var defaultRosterGroupID = defaultRosterGroup[1];\r\n\r\n rosterGroups.forEach(g => {\r\n if (g.GroupCode === defaultRosterGroupCode && g.RetrieveID === defaultRosterGroupID) {\r\n selectedGroupCode = g.GroupCode;\r\n selectedGroupId = g.RetrieveID;\r\n // selectedGroupName = g.GroupName;\r\n $.session.formsCaseload == true && $.loadedApp === 'forms'\r\n ? (selectedGroupName = 'Caseload')\r\n : (selectedGroupName = g.GroupName);\r\n }\r\n });\r\n\r\n if (!selectedGroupName) {\r\n selectedGroupCode = rosterGroups[0].GroupCode;\r\n selectedGroupId = rosterGroups[0].RetrieveID;\r\n selectedGroupName = rosterGroups[0].GroupName;\r\n }\r\n\r\n if ($.session.formsCaseload == true && $.loadedApp === 'forms') selectedGroupName = 'Caseload';\r\n }\r\n function setSelectedLocationData() {\r\n if (defaults.getLocation('roster') !== '') {\r\n selectedLocationId = defaults.getLocation('roster');\r\n\r\n var selectedLocationObj = rosterLocations.filter(loc => {\r\n return selectedLocationId === loc.ID;\r\n });\r\n\r\n selectedLocationName = selectedLocationObj[0].Name;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n }\r\n\r\n if (!selectedLocationId) {\r\n selectedLocationId = '0';\r\n selectedLocationName = 'All';\r\n }\r\n }\r\n function setCustomDefaultLocationData({ locationId, locationName }) {\r\n selectedLocationName = locationName;\r\n selectedLocationId = locationId;\r\n }\r\n function setAllowedConsumers(idArray) {\r\n // Allowed Consumers *Per Module\r\n allowedConsumerIds = [];\r\n consumersWithAlerts = [];\r\n\r\n if (idArray[0] === '%') {\r\n allowedConsumerIds = ['%'];\r\n return;\r\n }\r\n\r\n idArray.forEach(r => {\r\n const id = r.consumer_id ? r.consumer_id : r;\r\n allowedConsumerIds.push(id);\r\n if (r.showAlertIcon) consumersWithAlerts.push(id);\r\n });\r\n }\r\n\r\n // Search\r\n //---------------------------------------------\r\n function searchRoster(searchValue) {\r\n searchValue = searchValue.toLowerCase();\r\n const consumers = rosterConsumers.filter(rc => {\r\n var firstName = rc.FN.toLowerCase();\r\n var lastName = rc.LN.toLowerCase();\r\n var middleName = rc.MN.toLowerCase(); //\r\n var fullName = `${lastName}, ${middleName} ${firstName}`;\r\n var fullNameReversed = `${lastName}, ${firstName} ${middleName}`;\r\n var matchesName = fullName.indexOf(searchValue);\r\n var matchesNameReverse = fullNameReversed.indexOf(searchValue);\r\n\r\n return matchesName !== -1 || matchesNameReverse !== -1;\r\n });\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists && rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n groupRosterConsumers(consumers);\r\n populateRoster();\r\n totalConsumerCount = consumers.length;\r\n updateTotalConsumerCount();\r\n }\r\n // Filtering\r\n //---------------------------------------------\r\n function updateTotalConsumerCount() {\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n }\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.widgetFilteredBy');\r\n\r\n var splitDate = selectedDate.split('-');\r\n filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n filteredBy1 = document.createElement('div');\r\n filteredBy1.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy1.appendChild(btnWrap);\r\n filteredBy.appendChild(filteredBy1);\r\n }\r\n\r\n if (document.getElementById('filteredDateBtn') != null)\r\n document.getElementById('filteredDateBtn').innerHTML = 'Date: ' + filteredDate;\r\n\r\n if (hideDateFilter) {\r\n btnWrap.removeChild(filteredDateBtnWrap);\r\n }\r\n\r\n if (selectedLocationName === '%' || selectedLocationName === 'All') {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n if (document.getElementById('selectedLocationNameBtn') != null)\r\n document.getElementById('selectedLocationNameBtn').innerHTML = 'Location: ' + selectedLocationName;\r\n }\r\n\r\n if (selectedGroupName === '%' || selectedGroupName === 'Everyone') {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n if (document.getElementById('selectedGroupNameBtn') != null)\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n }\r\n\r\n if ($.loadedApp === 'roster' || ($.session.applicationName == 'Gatekeeper' && $.loadedApp === 'casenotes')) {\r\n if (selectedActive === '%' || selectedActive === 'All') {\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n btnWrap.removeChild(selectedActiveBtnWrap);\r\n } else {\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\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 selectedActiveCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => {\r\n closeFilter('selectedActiveBtn');\r\n },\r\n });\r\n\r\n totalConsumerCountBtn = button.build({\r\n id: 'totalConsumerCountBtn',\r\n text: 'Total Consumer Count: ' + totalConsumerCount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n\r\n filteredDateBtnWrap = document.createElement('div');\r\n filteredDateBtnWrap.classList.add('filterSelectionFirstBtnWrap');\r\n filteredDateBtnWrap.appendChild(filteredDateBtn);\r\n btnWrap.appendChild(filteredDateBtnWrap);\r\n\r\n selectedLocationNameBtnWrap = document.createElement('div');\r\n selectedLocationNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedLocationNameBtnWrap.appendChild(selectedLocationNameBtn);\r\n selectedLocationNameBtnWrap.appendChild(selectedLocationNameCloseBtn);\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n\r\n selectedGroupNameBtnWrap = document.createElement('div');\r\n selectedGroupNameBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameBtn);\r\n selectedGroupNameBtnWrap.appendChild(selectedGroupNameCloseBtn);\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n\r\n if ($.loadedApp === 'roster' || ($.session.applicationName == 'Gatekeeper' && $.loadedApp === 'casenotes')) {\r\n selectedActiveBtnWrap = document.createElement('div');\r\n selectedActiveBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedActiveBtnWrap.appendChild(selectedActiveBtn);\r\n selectedActiveBtnWrap.appendChild(selectedActiveCloseBtn);\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n }\r\n\r\n totalConsumerCountBtnWrap = document.createElement('div');\r\n totalConsumerCountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n totalConsumerCountBtnWrap.appendChild(totalConsumerCountBtn);\r\n btnWrap.appendChild(totalConsumerCountBtnWrap);\r\n }\r\n\r\n async function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedLocationNameBtn') {\r\n selectedLocationName = 'All';\r\n selectedLocationId = '0';\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n const groupResults = await getConsumerGroupsData(selectedLocationId);\r\n rosterGroups = groupResults;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n }\r\n if (closeFilter == 'selectedGroupNameBtn') {\r\n selectedGroupName = 'Everyone';\r\n selectedGroupCode = 'ALL';\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n }\r\n if (closeFilter == 'selectedActiveBtn') {\r\n selectedActive = '%';\r\n btnWrap.removeChild(selectedActiveBtnWrap);\r\n }\r\n toggleMassAbsentBtn();\r\n filterApply();\r\n }\r\n\r\n function buildDateInput() {\r\n var defaultVal = selectedDate ? selectedDate : UTIL.getTodaysDate();\r\n var date = input.build({\r\n type: 'date',\r\n label: 'Date',\r\n style: 'secondary',\r\n value: defaultVal,\r\n attributes: [{ key: 'max', value: UTIL.getTodaysDate() }],\r\n });\r\n\r\n return date;\r\n }\r\n function buildLocationDropdown() {\r\n var locationDropdown = dropdown.build({\r\n dropdownId: 'rosterLocationDropdown',\r\n label: 'Locations',\r\n style: 'secondary',\r\n });\r\n\r\n return locationDropdown;\r\n }\r\n function buildGroupDropdown() {\r\n var groupDropdown = dropdown.build({\r\n dropdownId: 'rosterGroupDropdown',\r\n label: 'Groups',\r\n style: 'secondary',\r\n readonly: $.session.formsCaseload == true && $.loadedApp === 'forms' ? true : false,\r\n });\r\n\r\n return groupDropdown;\r\n }\r\n function buildActiveDropdown() {\r\n var activeDropdown = dropdown.build({\r\n dropdownId: 'rosterActiveDropdown',\r\n label: 'Show Inactive?',\r\n style: 'secondary',\r\n });\r\n\r\n return activeDropdown;\r\n }\r\n function buildFilterPopup(IsShow) {\r\n // popup\r\n FILTER_POPUP = POPUP.build({\r\n classNames: ['rosterFilterPopup'],\r\n hideX: true,\r\n });\r\n // dropdowns & inputs\r\n DATE_INPUT = buildDateInput();\r\n LOCATION_DROPDOWN = buildLocationDropdown();\r\n GROUP_DROPDOWN = buildGroupDropdown();\r\n ACTIVE_DROPDOWN = buildActiveDropdown();\r\n // apply filters button\r\n APPLY_BTN = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n CANCEL_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(APPLY_BTN);\r\n btnWrap.appendChild(CANCEL_BTN);\r\n\r\n // build popup\r\n if (!hideDateFilter) {\r\n if (IsShow == 'ALL' || IsShow == 'filteredDateBtn') FILTER_POPUP.appendChild(DATE_INPUT);\r\n }\r\n if (IsShow == 'ALL' || IsShow == 'selectedLocationNameBtn') FILTER_POPUP.appendChild(LOCATION_DROPDOWN);\r\n if (IsShow == 'ALL' || IsShow == 'selectedGroupNameBtn') FILTER_POPUP.appendChild(GROUP_DROPDOWN);\r\n if ($.loadedApp === 'roster' || ($.session.applicationName == 'Gatekeeper' && $.loadedApp === 'casenotes')) {\r\n if (IsShow == 'ALL' || IsShow == 'selectedActiveBtn') FILTER_POPUP.appendChild(ACTIVE_DROPDOWN);\r\n }\r\n FILTER_POPUP.appendChild(btnWrap);\r\n\r\n setupFilterEvent();\r\n\r\n POPUP.show(FILTER_POPUP);\r\n\r\n populateLocationDropdown();\r\n populateGroupDropdown();\r\n populateActiveDropdown();\r\n\r\n if (islocationDisabled)\r\n LOCATION_DROPDOWN.classList.add('disabled');\r\n }\r\n // filter dropdowns\r\n function populateLocationDropdown() {\r\n var defaultVal = selectedLocationId ? selectedLocationId : defaults.getLocation('roster');\r\n var defaultValName;\r\n var data = rosterLocations.map(r => {\r\n var attributes = [{ key: 'data-residence', value: r.Residence }];\r\n\r\n var hasUnreadLocationNote = locationsWithUnreadNotes.filter(loc => loc.loc_id === r.ID);\r\n hasUnreadLocationNote = hasUnreadLocationNote.length > 0 ? true : false;\r\n\r\n if (r.ID === defaultVal) {\r\n defaultValName = r.Name;\r\n if (hasUnreadLocationNote) {\r\n LOCATION_NOTES_BTN.classList.add('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n }\r\n }\r\n\r\n if (hasUnreadLocationNote) {\r\n attributes.push({ key: 'data-hasUnreadNote', value: 'true' });\r\n } else {\r\n attributes.push({ key: 'data-hasUnreadNote', value: 'false' });\r\n }\r\n\r\n return {\r\n id: r.ID,\r\n value: r.ID,\r\n text: r.Name,\r\n attributes,\r\n };\r\n });\r\n var allOpt = {\r\n value: '0',\r\n text: 'All',\r\n };\r\n\r\n data.unshift(allOpt);\r\n\r\n dropdown.populate(LOCATION_DROPDOWN, data, defaultVal);\r\n\r\n selectedLocationId = defaultVal;\r\n if (selectedLocationId === '0') {\r\n selectedLocationName = 'All';\r\n } else {\r\n selectedLocationName = defaultValName;\r\n }\r\n }\r\n function populateGroupDropdown() {\r\n var locId = selectedLocationId === '0' ? '0' : selectedLocationId;\r\n var defaultVal;\r\n if ($.session.formsCaseload == true && $.loadedApp === 'forms') {\r\n defaultVal = `CAS-${locId}`;\r\n selectedGroupCode = 'CAS';\r\n } else {\r\n defaultVal = selectedGroupCode\r\n ? selectedGroupCode === 'ALL'\r\n ? `${selectedGroupCode}-${locId}`\r\n : `${selectedGroupCode}-${selectedGroupId}`\r\n : '';\r\n }\r\n\r\n groupCodeObj = {};\r\n\r\n var data = rosterGroups.map(r => {\r\n // dataObj for quick lookup\r\n if (!groupCodeObj[r.GroupCode]) {\r\n groupCodeObj[r.GroupCode] = {\r\n groupCode: r.GroupCode,\r\n groupName: r.GroupName,\r\n members: r.Members ? r.Members.split('|') : r.Members,\r\n };\r\n }\r\n\r\n return {\r\n value: `${r.GroupCode}-${r.RetrieveID}`,\r\n text: r.GroupName,\r\n attributes: [{ key: 'data-retrieveId', value: r.RetrieveID }],\r\n };\r\n });\r\n\r\n dropdown.populate('rosterGroupDropdown', data, defaultVal);\r\n\r\n if (!selectedGroupName) {\r\n selectedGroupCode = data[0].value;\r\n selectedGroupName = data[0].text;\r\n selectedGroupId = data[0].attributes[0].value;\r\n }\r\n }\r\n\r\n function populateActiveDropdown() {\r\n const activeDropdownData = ([\r\n { id: 1, value: 'Yes', text: 'Yes' },\r\n { id: 2, value: 'No', text: 'No' },\r\n ]);\r\n activeDropdownData.unshift({ id: null, value: '%', text: 'All' });\r\n dropdown.populate(\"rosterActiveDropdown\", activeDropdownData, selectedActive);\r\n }\r\n // filter events\r\n function setupFilterEvent() {\r\n var oldDate;\r\n var oldLocationName;\r\n var oldLocationId;\r\n var oldGroupCode;\r\n var oldGroupId;\r\n var oldGroupName;\r\n var oldRosterGroups;\r\n\r\n var locationHasUnreadNote;\r\n\r\n DATE_INPUT.addEventListener('change', event => {\r\n oldDate = selectedDate;\r\n selectedDate = event.target.value;\r\n });\r\n LOCATION_DROPDOWN.addEventListener('change', event => locationDropdownEvent(event));\r\n async function locationDropdownEvent(event) {\r\n if (islocationDisabled)\r\n return;\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n oldLocationId = selectedLocationId;\r\n oldLocationName = selectedLocationName;\r\n selectedLocationId = selectedOption.value;\r\n selectedLocationName = selectedOption.innerHTML;\r\n $.session.selectedLocation = [selectedLocationId, selectedLocationName];\r\n toggleMassAbsentBtn();\r\n toggleLocationNotesBtn();\r\n\r\n const hasUnreadNote = selectedOption.dataset.hasunreadnote === 'true' ? true : false;\r\n locationHasUnreadNote = hasUnreadNote;\r\n\r\n const groupResults = await getConsumerGroupsData(selectedLocationId);\r\n\r\n oldRosterGroups = rosterGroups;\r\n oldGroupId = selectedGroupId;\r\n oldGroupCode = selectedGroupCode;\r\n oldGroupName = selectedGroupName;\r\n\r\n rosterGroups = groupResults;\r\n selectedGroupId = groupResults[0].RetrieveID;\r\n selectedGroupCode = groupResults[0].GroupCode;\r\n // selectedGroupName = groupResults[0].GroupName;\r\n $.session.formsCaseload == true && $.loadedApp === 'forms'\r\n ? (selectedGroupName = 'Caseload')\r\n : (selectedGroupName = groupResults[0].GroupName);\r\n //selectedLocationId = tmpLocationId;\r\n populateGroupDropdown();\r\n }\r\n GROUP_DROPDOWN.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n oldGroupId = selectedGroupId;\r\n oldGroupCode = selectedGroupCode;\r\n oldGroupName = selectedGroupName;\r\n\r\n selectedGroupCode = selectedOption.value.split('-')[0];\r\n selectedGroupId = selectedOption.dataset.retrieveid;\r\n selectedGroupName = selectedOption.innerHTML;\r\n });\r\n ACTIVE_DROPDOWN.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedActive = selectedOption.value;\r\n });\r\n APPLY_BTN.addEventListener('click', async () => {\r\n POPUP.hide(FILTER_POPUP);\r\n filterApply();\r\n });\r\n CANCEL_BTN.addEventListener('click', () => {\r\n POPUP.hide(FILTER_POPUP);\r\n\r\n if (oldDate) selectedDate = oldDate;\r\n if (oldLocationId) selectedLocationId = oldLocationId;\r\n if (oldLocationName) selectedLocationName = oldLocationName;\r\n if (oldGroupId) selectedGroupId = oldGroupId;\r\n if (oldGroupCode) selectedGroupCode = oldGroupCode;\r\n if (oldGroupName) selectedGroupName = oldGroupName;\r\n if (oldRosterGroups) rosterGroups = oldRosterGroups;\r\n });\r\n }\r\n\r\n function filterUpdateDisplay() {\r\n if (selectedDate === '') {\r\n selectedDate = UTIL.getTodaysDate();\r\n }\r\n var splitDate = selectedDate.split('-');\r\n filteredDate = `${UTIL.leadingZero(splitDate[1])}/${UTIL.leadingZero(splitDate[2])}/${splitDate[0].slice(2, 4)}`;\r\n\r\n if (document.getElementById('filteredDateBtn') != null)\r\n document.getElementById('filteredDateBtn').innerHTML = 'Date: ' + filteredDate;\r\n\r\n if (selectedLocationName === '%' || selectedLocationName === 'All') {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n btnWrap.removeChild(selectedLocationNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationNameBtnWrap);\r\n document.getElementById('selectedLocationNameBtn').innerHTML = 'Location: ' + selectedLocationName;\r\n }\r\n\r\n if (selectedGroupName === '%' || selectedGroupName === 'Everyone') {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n btnWrap.removeChild(selectedGroupNameBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedGroupNameBtnWrap);\r\n document.getElementById('selectedGroupNameBtn').innerHTML = 'Group: ' + selectedGroupName;\r\n }\r\n if (document.getElementById('totalConsumerCountBtn') != null)\r\n document.getElementById('totalConsumerCountBtn').innerHTML = 'Total Consumer Count: ' + totalConsumerCount;\r\n\r\n if ($.loadedApp === 'roster' || ($.session.applicationName == 'Gatekeeper' && $.loadedApp === 'casenotes')) {\r\n if (selectedActive === '%' || selectedActive === 'All') {\r\n btnWrap.appendChild(selectedActiveBtnWrap);\r\n btnWrap.removeChild(selectedActiveBtnWrap);\r\n } else {\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\r\n if (!rosterListSelectable) {\r\n consumerInfo.toggleHideShowAbsentMenuSection(selectedLocationId);\r\n }\r\n\r\n if (selectedLocationId !== '000') {\r\n if (defaults.rememberLastLocation('roster')) defaults.setLocation('roster', selectedLocationId);\r\n }\r\n\r\n if ($.loadedApp === 'ConsumerFinances' || $.loadedApp === 'CFEditAccount') {\r\n if (defaults.rememberLastLocation('moneyManagement')) defaults.setLocation('moneyManagement', selectedLocationId);\r\n }\r\n }\r\n async function filterApply() {\r\n customGroups.init(rosterGroups);\r\n\r\n if (locationHasUnreadNote) {\r\n LOCATION_NOTES_BTN.classList.add('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n }\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n\r\n ROSTER_SPINNER = PROGRESS.SPINNER.get('Please wait while we gather everyone up...');\r\n ROSTER_WRAP.insertBefore(ROSTER_SPINNER, ROSTER_WRAP.lastChild);\r\n totalConsumerCount = 0;\r\n await getRosterConsumersData(true);\r\n //Ugly... should be re-done to be able to pass a custom apply action for the filter if needed\r\n // but I'm running out of thime for this release. THis is needed to reset the set allowed consumers\r\n //when filtering on a location or group.\r\n if ($.loadedApp === 'timeEntry') {\r\n await timeEntryCard.customRosterApplyFilterEvent();\r\n }\r\n populateRoster();\r\n filterUpdateDisplay();\r\n }\r\n // Top Nav\r\n //---------------------------------------------\r\n function toggleLocationNotesBtn() {\r\n if (selectedLocationId === '0' || selectedLocationName === 'All' || $.session.useProgressNotes === 'N') {\r\n LOCATION_NOTES_BTN.classList.add('disabled');\r\n LOCATION_NOTES_BTN.classList.remove('attention');\r\n } else {\r\n LOCATION_NOTES_BTN.classList.remove('disabled');\r\n }\r\n }\r\n function toggleMassAbsentBtn() {\r\n var useAbsent = $.session.useAbsentFeature === 'Y' ? true : false;\r\n\r\n if (!useAbsent || selectedLocationId === '0' || selectedLocationName === 'All') {\r\n MASS_ABSENT_BTN.classList.add('disabled');\r\n } else {\r\n MASS_ABSENT_BTN.classList.remove('disabled');\r\n }\r\n }\r\n function buildFilterBtn() {\r\n return button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtn',\r\n });\r\n }\r\n function buildSearchBtn() {\r\n return button.build({\r\n id: 'searchBtn',\r\n text: 'Search',\r\n icon: 'search',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['searchBtn'],\r\n });\r\n }\r\n function buildSelectAllBtn() {\r\n return button.build({\r\n icon: 'selectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildDeSelectAllBtn() {\r\n return button.build({\r\n icon: 'deSelectAll',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'deselectAllBtn',\r\n });\r\n }\r\n function buildLocationNotesBtn() {\r\n var hasUnreadLocationNote =\r\n locationsWithUnreadNotes && locationsWithUnreadNotes.filter(loc => loc.loc_id === selectedLocationId);\r\n hasUnreadLocationNote = hasUnreadLocationNote.length > 0 ? true : false;\r\n\r\n const locationNotesBtnClassNames = ['locationNotesBtn'];\r\n\r\n if (selectedLocationId === '0' || selectedLocationName === 'All' || $.session.useProgressNotes === 'N') {\r\n locationNotesBtnClassNames.push('disabled');\r\n }\r\n if (hasUnreadLocationNote && $.session.useProgressNotes === 'Y') {\r\n locationNotesBtnClassNames.push('attention');\r\n }\r\n\r\n return button.build({\r\n text: 'Location Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'note',\r\n classNames: locationNotesBtnClassNames,\r\n });\r\n }\r\n\r\n function buildMassAbsentSelectAllBtn() {\r\n return button.build({\r\n id: 'massAbsentSelectAllBtn',\r\n text: 'Select All',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildMassAbsentDeselectAllBtn() {\r\n return button.build({\r\n id:'massAbsentDeselectAllBtn',\r\n text: 'Select None',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n });\r\n }\r\n function buildMassAbsentBtn() {\r\n var useAbsent = $.session.useAbsentFeature === 'Y' ? true : false;\r\n\r\n return button.build({\r\n text: 'Mass Absent',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'no',\r\n classNames:\r\n selectedLocationId === '0' || selectedLocationName === 'All' || !useAbsent\r\n ? ['massAbsentBtn', 'disabled']\r\n : ['massAbsentBtn'],\r\n toggle: true,\r\n });\r\n }\r\n function buildManageGroupsBtn() {\r\n return button.build({\r\n text: 'Manage Groups',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'people',\r\n });\r\n }\r\n function buildRosterTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('roster-top-nav');\r\n\r\n FILTER_BTN = buildFilterBtn();\r\n SEARCH_BTN = buildSearchBtn();\r\n SELECT_ALL_BTN = buildSelectAllBtn();\r\n DESELECT_ALL_BTN = buildDeSelectAllBtn();\r\n LOCATION_NOTES_BTN = buildLocationNotesBtn();\r\n MASS_ABSENT_BTN = buildMassAbsentBtn();\r\n MANAGE_GROUPS_BTN = buildManageGroupsBtn();\r\n\r\n MASS_SELECT_ALL_BTN = buildMassAbsentSelectAllBtn();\r\n MASS_DESELECT_ALL_BTN = buildMassAbsentDeselectAllBtn();\r\n MASS_SELECT_ALL_BTN.classList.add('marginRight10px');\r\n MASS_DESELECT_ALL_BTN.classList.add('marginRight10px');\r\n // custom search stuff\r\n SEARCH_WRAP = document.createElement('div');\r\n // SEARCH_WRAP.classList.add('rosterSearch', 'searchOpen');\r\n SEARCH_WRAP.classList.add('rosterSearch');\r\n SEARCH_INPUT = document.createElement('input');\r\n SEARCH_INPUT.setAttribute('placeholder', 'search consumers');\r\n SEARCH_WRAP.appendChild(SEARCH_BTN);\r\n SEARCH_WRAP.appendChild(SEARCH_INPUT);\r\n\r\n if (rosterListSelectable) {\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap2.classList.add('btnWrap');\r\n // btns to show => selectAll, deselectAll\r\n wrap1.appendChild(SEARCH_WRAP);\r\n wrap2.appendChild(FILTER_BTN);\r\n wrap2.appendChild(SELECT_ALL_BTN);\r\n wrap2.appendChild(DESELECT_ALL_BTN);\r\n\r\n btnWrap.appendChild(wrap1);\r\n btnWrap.appendChild(wrap2);\r\n } else {\r\n var wrap1 = document.createElement('div');\r\n var wrap2 = document.createElement('div');\r\n var wrap3 = document.createElement('div');\r\n wrap1.classList.add('btnWrap');\r\n wrap2.classList.add('btnWrap');\r\n wrap2.classList.add('rosterNotesAbsentGroups');\r\n wrap3.classList.add('massSelectbtnWrap');\r\n // btns to show => search, notes, absent, groups\r\n wrap1.appendChild(FILTER_BTN);\r\n wrap1.appendChild(SEARCH_WRAP);\r\n\r\n wrap2.appendChild(LOCATION_NOTES_BTN);\r\n wrap2.appendChild(MASS_ABSENT_BTN);\r\n wrap2.appendChild(MANAGE_GROUPS_BTN);\r\n\r\n wrap3.appendChild(MASS_SELECT_ALL_BTN);\r\n wrap3.appendChild(MASS_DESELECT_ALL_BTN);\r\n\r\n btnWrap.appendChild(wrap1);\r\n btnWrap.appendChild(wrap2);\r\n btnWrap.appendChild(wrap3);\r\n }\r\n\r\n return btnWrap;\r\n }\r\n\r\n // Roster Consumers\r\n //---------------------------------------------\r\n function populateConsumerCardPortraits() {\r\n const consumerCards = [...document.querySelectorAll('.consumerCard')];\r\n consumerCards.forEach(card => {\r\n const id = card.dataset.consumerId;\r\n const portrait = card.querySelector('.portrait');\r\n portrait.innerHTML = `\r\n `;\r\n });\r\n }\r\n function buildConsumerCard(consumerData) {\r\n const fName = consumerData.FN ? consumerData.FN.trim() : '';\r\n const lName = consumerData.LN ? consumerData.LN.trim() : '';\r\n const mName = consumerData.MN ? consumerData.MN.trim() : '';\r\n const id = consumerData.id;\r\n const serviceLocations = consumerData.LId;\r\n const primaryLocation = consumerData.conL;\r\n const hasUnreadNote = consumersWithUnreadNotes && consumersWithUnreadNotes[consumerData.id] ? true : false;\r\n const isAbsent = absentConsumers && absentConsumers[consumerData.id] ? true : false;\r\n const isActive = activeConsumers && activeConsumers.filter(ac => ac.id === consumerData.id);\r\n const isSelected = selectedConsumers && selectedConsumers.filter(sc => sc.id === consumerData.id);\r\n const hasAlert = consumersWithAlerts && consumersWithAlerts.filter(cwa => cwa === consumerData.id);\r\n const showAlert = hasAlert && hasAlert.length !== 0 ? true : false;\r\n const dateOfBirth = consumerData.dob ? consumerData.dob.split(' ')[0] : '';\r\n const isInactive = consumerData.IDa == '' ? false : true;\r\n let isAllowed;\r\n if (!allowedConsumerIds) {\r\n isAllowed = true;\r\n } else if (allowedConsumerIds[0] === '%') {\r\n isAllowed = true;\r\n } else {\r\n isAllowed = allowedConsumerIds.filter(consumerId => consumerId === id);\r\n isAllowed = isAllowed.length === 0 ? false : true;\r\n }\r\n\r\n const consumerCard = document.createElement('div');\r\n consumerCard.classList.add('consumerCard');\r\n consumerCard.setAttribute('data-consumer-id', id);\r\n consumerCard.setAttribute('data-dob', dateOfBirth);\r\n\r\n if (serviceLocations) {\r\n consumerCard.setAttribute('data-service-locations', serviceLocations);\r\n }\r\n if (primaryLocation && $.session.applicationName === 'Advisor') {\r\n consumerCard.setAttribute('data-primary-location', primaryLocation);\r\n }\r\n if (hasUnreadNote) {\r\n consumerCard.setAttribute('data-unreadnote', 'true');\r\n } else {\r\n consumerCard.setAttribute('data-unreadnote', 'false');\r\n }\r\n\r\n if (isSelected.length > 0 && rosterListSelectable) {\r\n consumerCard.classList.add('highlighted', 'consumer-selected');\r\n }\r\n\r\n\r\n if ((isActive && isActive.length >= 1) || !isAllowed) {\r\n if ($.loadedApp === 'outcomes') {\r\n consumerCard.classList.remove('disabled');\r\n consumerCard.classList.add('disabledClickable');\r\n } else {\r\n consumerCard.classList.add('disabled');\r\n }\r\n } else {\r\n consumerCard.classList.remove('disabled');\r\n }\r\n\r\n const portrait = document.createElement('div');\r\n const details = document.createElement('div');\r\n const alertIcons = document.createElement('div');\r\n const d = new Date();\r\n const time = d.getTime();\r\n portrait.classList.add('portrait');\r\n if (isInactive)\r\n details.classList.add('inactiveDetails');\r\n else\r\n details.classList.add('details');\r\n alertIcons.classList.add('icons');\r\n portrait.innerHTML = `''`;\r\n portrait.innerHTML = `\r\n `;\r\n details.innerHTML = `\r\n
    \r\n

    ${lName},

    \r\n\t\t

    ${fName} ${mName}

    \r\n
    `;\r\n alertIcons.innerHTML = `\r\n ${isAbsent ? `A` : ''}\r\n ${!rosterListSelectable ? (hasUnreadNote ? `${icons['bell']}` : '') : ''}\r\n\t\t`;\r\n\r\n consumerCard.appendChild(portrait);\r\n consumerCard.appendChild(details);\r\n consumerCard.appendChild(alertIcons);\r\n\r\n if (showAlert) {\r\n var ICONS = consumerCard.querySelector('.icons');\r\n var iconsSVG = ICONS.querySelector('.alertIcon');\r\n var iconSVG = document.createElement('p');\r\n iconSVG.classList.add('alertIcon');\r\n iconSVG.innerHTML = icons['error'];\r\n if (ICONS) {\r\n if (!iconsSVG) {\r\n ICONS.appendChild(iconSVG);\r\n }\r\n }\r\n }\r\n\r\n return consumerCard;\r\n }\r\n\r\n // Mini Roster Popup\r\n //---------------------------------------------\r\n function toggleActionCenterChildrenVisiblity(hideOrShow) {\r\n const actionCenterChildren = [...DOM.ACTIONCENTER.children];\r\n actionCenterChildren.forEach(child => {\r\n if (hideOrShow === 'hide') {\r\n child.style.display = 'none';\r\n return;\r\n }\r\n child.removeAttribute('style');\r\n });\r\n }\r\n function actionNavCallback(e) {\r\n SELECT_ALL_BTN.classList.remove('disabled');\r\n DESELECT_ALL_BTN.classList.remove('disabled');\r\n\r\n if (MINI_ROSTER_BTN) MINI_ROSTER_BTN.classList.remove('disabled');\r\n\r\n DOM.ACTIONCENTER.removeChild(MINI_ROSTER_POPUP);\r\n toggleActionCenterChildrenVisiblity('show');\r\n\r\n if (e.target === MINI_ROSTER_DONE) {\r\n roster2.selectedConsumersToActiveList();\r\n }\r\n }\r\n function buildActioNav() {\r\n MINI_ROSTER_DONE = button.build({\r\n text: 'Done',\r\n icon: 'checkmark',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'miniRosterDone' }],\r\n classNames: ['disabled'],\r\n callback: actionNavCallback,\r\n });\r\n MINI_ROSTER_CANCEL = button.build({\r\n text: 'Cancel',\r\n icon: 'close',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{ key: 'data-action-nav', value: 'miniRosterCancel' }],\r\n callback: actionNavCallback,\r\n });\r\n\r\n ACTION_NAV.populate([MINI_ROSTER_DONE, MINI_ROSTER_CANCEL]);\r\n }\r\n function getMiniRosterHeadline(consumercount) {\r\n switch ($.loadedApp) {\r\n case 'incidenttracking': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to add them to this incident. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'timeEntry': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to add them to this entry. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'workshop': {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below to clock them in or out. Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n case 'plan': {\r\n return `Select a consumer below`;\r\n }\r\n default: {\r\n if (!consumercount) return `Select consumer(s) below`;\r\n return `Select consumer(s) below Total Consumer Count: ${consumercount}`;\r\n break;\r\n }\r\n }\r\n }\r\n function buildMiniRosterPopup(rosterMarkup) {\r\n const miniRosterWrap = document.createElement('div');\r\n miniRosterWrap.classList.add('enabledConsumers', 'miniRoster');\r\n miniRosterWrap.setAttribute('data-roster', 'enabled');\r\n\r\n var headline = document.createElement('h3');\r\n headline.classList.add('miniRosterHeadline');\r\n headline.innerHTML = getMiniRosterHeadline();\r\n\r\n // miniRosterWrap.appendChild(headline);\r\n rosterMarkup.insertBefore(headline, rosterMarkup.firstChild.nextSibling);\r\n miniRosterWrap.appendChild(rosterMarkup);\r\n\r\n return miniRosterWrap;\r\n }\r\n function showMiniRosterPopup(rosterMarkup) {\r\n if (MINI_ROSTER_BTN) MINI_ROSTER_BTN.classList.add('disabled');\r\n\r\n const activeSection = DOM.ACTIONCENTER.dataset.activeSection;\r\n //buttons need to be disabled. This will need to\r\n // be modified if more modules need these buttons disabled\r\n\r\n toggleActionCenterChildrenVisiblity('hide');\r\n\r\n MINI_ROSTER_POPUP = buildMiniRosterPopup(rosterMarkup);\r\n DOM.ACTIONCENTER.appendChild(MINI_ROSTER_POPUP);\r\n buildActioNav();\r\n if (\r\n $.loadedApp === 'outcomes' ||\r\n $.loadedApp === 'plan' ||\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n activeSection === 'caseNotesSSA-new' ||\r\n activeSection === 'caseNotes-new' ||\r\n $.loadedApp === 'authorizations'\r\n ) {\r\n SELECT_ALL_BTN.classList.add('disabled');\r\n DESELECT_ALL_BTN.classList.add('disabled');\r\n MINI_ROSTER_DONE.style.display = 'none';\r\n MINI_ROSTER_CANCEL.style.display = 'none';\r\n }\r\n }\r\n /**\r\n * Initializes the mini roster. Removes the mini roster button, and re-adds it with new settings.\r\n * @param {Object} locationData - Location information Object. Only use if you need to bypass the roster's default location.\r\n * @param {string} locationData.locationId - The Location ID\r\n * @param {string} locationData.locationName - The Location Name. If location name is not known, pass an empty string.\r\n * @param {Object} rosterOptions - Options for customizing the mini roster\r\n * @param {boolean} rosterOptions.hideDate - true = hide date selection. For example, SE has pay period date restrictions.\r\n * someone could change the date on the roster outside of the payperiod and choose someone who may be inactive. Removing this option alltogether prevents this.\r\n * !IMPORTANT! If setting this to true, you must update the roster date when they change the date within the module using roster2.updateSelectedDate()\r\n */\r\n async function miniRosterinit(locationData, rosterOptions) {\r\n removeMiniRosterBtn();\r\n // Reset date from moving between modules:\r\n selectedDate = UTIL.getTodaysDate();\r\n if (locationData) {\r\n const { locationId, locationName } = locationData;\r\n if (locationName && locationId) {\r\n selectedLocationName = locationName;\r\n selectedLocationId = locationId;\r\n } else if (locationName === '') {\r\n if (locationId === '0') {\r\n selectedLocationName = 'All';\r\n selectedLocationId = locationId;\r\n } else {\r\n rosterLocations = rosterLocations ?? (await getRosterLocationsData());\r\n const selectedLocationObj = rosterLocations.filter(loc => locationId === loc.ID);\r\n selectedLocationName = selectedLocationObj[0].Name;\r\n selectedLocationId = locationId;\r\n }\r\n }\r\n // reset group when custom location is passed:\r\n selectedGroupId = selectedLocationId;\r\n selectedGroupCode = 'ALL';\r\n selectedGroupName = 'Everyone';\r\n }\r\n MINI_ROSTER_BTN = button.build({\r\n icon: 'people',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: 'mini_roster',\r\n // classNames: ['floatingActionBtn', 'consumerListBtn', 'disabled'],\r\n classNames: ['floatingActionBtn', 'consumerListBtn'],\r\n callback: async () => {\r\n if (\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'assessmentHistory'\r\n ) {\r\n clearSelectedConsumers();\r\n clearActiveConsumers();\r\n }\r\n MINI_ROSTER_BTN.classList.add('disabled');\r\n await showMiniRoster(rosterOptions);\r\n MINI_ROSTER_BTN.classList.remove('disabled');\r\n },\r\n });\r\n\r\n document.body.appendChild(MINI_ROSTER_BTN);\r\n DOM.toggleNavLayout();\r\n }\r\n\r\n async function showMiniRoster(\r\n rosterOptions = {\r\n hideDate: false,\r\n locationDisabled: false\r\n },\r\n ) {\r\n const rosterMarkup = await buildRoster({\r\n selectable: true,\r\n hideDateFilter: rosterOptions.hideDate ? true : false,\r\n disabledLocation: rosterOptions.locationDisabled ? true : false,\r\n });\r\n showMiniRosterPopup(rosterMarkup);\r\n totalConsumerCount = 0;\r\n selectedActive = 'No';\r\n await getRosterConsumersData();\r\n populateRoster();\r\n document.getElementById('searchBtn').click();\r\n //filterApply(); \r\n filterUpdateDisplay();\r\n }\r\n /**\r\n * Enables or disables the mini roster button.\r\n * @param {boolean} showBtn - True = enable the mini roster button\r\n */\r\n function toggleMiniRosterBtnVisible(showBtn) {\r\n if (showBtn) {\r\n MINI_ROSTER_BTN.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_BTN.classList.add('disabled');\r\n }\r\n }\r\n // Roster Data\r\n //---------------------------------------------\r\n async function getRosterLocationsData() {\r\n try {\r\n const data = (await rosterAjax.getRosterLocations()).getLocationsJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerGroupsData() {\r\n try {\r\n const data = (await customGroupsAjax.getConsumerGroups(selectedLocationId)).getConsumerGroupsJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getLocationsWithUnreadNotesData() {\r\n try {\r\n const data = (await locationNotesAjax.getLocationsWithUnreadNotes()).getLocationsWithUnreadNotesResult;\r\n return JSON.parse(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumersByGroupData(getConsumerByGroupData) {\r\n try {\r\n const data = (await rosterAjax.getConsumersByGroup(getConsumerByGroupData)).getConsumersByGroupJSONResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumersWithUnreadNotesByEmployeeAndLocationData(selectedLocationId) {\r\n try {\r\n const data = (await progressNotesAjax.getConsumersWithUnreadNotesByEmployeeAndLocation(selectedLocationId))\r\n .getConsumersWithUnreadNotesByEmployeeAndLocationResult;\r\n return JSON.parse(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getRosterConsumersData(forceGroupFilter) {\r\n if ($.session.formsCaseload == true && $.loadedApp === 'forms') selectedGroupCode = 'CAS';\r\n const getConsumerByGroupData = {\r\n selectedGroupCode,\r\n selectedGroupId,\r\n selectedLocationId,\r\n selectedDate,\r\n selectedActive,\r\n };\r\n\r\n if (!rosterConsumers || rosterConsumers.length === 0 || forceGroupFilter) {\r\n rosterConsumers = await getConsumersByGroupData(getConsumerByGroupData);\r\n }\r\n\r\n // I am not sure why consumer location was being set to the selected location ID?\r\n const seenIds = {};\r\n\r\n rosterConsumers = rosterConsumers.filter(consumer => {\r\n if (seenIds[consumer.id]) {\r\n return false;\r\n } else {\r\n seenIds[consumer.id] = true;\r\n return true;\r\n }\r\n });\r\n groupRosterConsumers();\r\n\r\n if (selectedLocationId !== '0') {\r\n const consumersWithUnreadNotesResults = await getConsumersWithUnreadNotesByEmployeeAndLocationData(\r\n selectedLocationId,\r\n );\r\n consumersWithUnreadNotes = progressNotes.createConsumersWithUnreadNotesObj(consumersWithUnreadNotesResults);\r\n } else {\r\n consumersWithUnreadNotes = {};\r\n }\r\n\r\n absentConsumers = await rosterAbsent.getAbsentConsumers(selectedLocationId, selectedDate);\r\n }\r\n async function getRosterData() {\r\n if (!selectedDate) selectedDate = UTIL.getTodaysDate();\r\n\r\n rosterLocations = await getRosterLocationsData();\r\n if (!selectedLocationId || rosterLocations.filter(loc => loc.ID === selectedLocationId).length === 0) {\r\n if (selectedLocationId !== '0') setSelectedLocationData();\r\n }\r\n\r\n rosterGroups = await getConsumerGroupsData(selectedLocationId);\r\n if (!selectedGroupName || ($.session.formsCaseload == true && $.loadedApp === 'forms')) setSelectedGroupData();\r\n\r\n locationsWithUnreadNotes = await getLocationsWithUnreadNotesData();\r\n }\r\n\r\n // Roster List\r\n //---------------------------------------------\r\n function buildLoadMoreBtn() {\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('loadMoreConsumersBtn');\r\n\r\n const btn = button.build({\r\n text: 'Load More...',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n activeGroup++;\r\n populateRoster(true);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(btn);\r\n\r\n return btnWrap;\r\n }\r\n function toggleRosterListLockdown(lockItDown) {\r\n if (lockItDown) {\r\n ROSTER_WRAP.classList.add('disabled');\r\n } else {\r\n ROSTER_WRAP.classList.remove('disabled');\r\n }\r\n }\r\n async function refreshRosterList() {\r\n rosterListSelectable = false;\r\n setActiveModuleSectionAttribute('roster-info');\r\n\r\n const rosterlists = [...ROSTER_WRAP.querySelectorAll('.roster__list')];\r\n rosterlists && rosterlists.forEach(rl => ROSTER_WRAP.removeChild(rl));\r\n totalConsumerCount = 0;\r\n\r\n await getRosterData();\r\n await getRosterConsumersData(true);\r\n populateRoster();\r\n }\r\n function rosterEventSetup() {\r\n ROSTER_WRAP.addEventListener('click', e => {\r\n const isConsumer = event.target.classList.contains('consumerCard');\r\n if (!isConsumer) return;\r\n const consumer = event.target;\r\n const consumerId = event.target.dataset.consumerId;\r\n\r\n const activeSection = DOM.ACTIONCENTER.dataset.activeSection;\r\n\r\n if (activeSection === 'roster-info') {\r\n toggleRosterListLockdown(true);\r\n DOM.scrollToTopOfPage();\r\n consumerInfo.showCard(consumer);\r\n return;\r\n }\r\n\r\n const isConsumerSelected = consumer.classList.contains('consumer-selected');\r\n // var activeSection = actioncenter.dataset.activeSection;\r\n\r\n if (\r\n $.loadedApp === 'outcomes' ||\r\n $.loadedApp === 'plan' ||\r\n $.loadedApp === 'authorizations' ||\r\n $.loadedApp === 'ConsumerFinances' ||\r\n $.loadedApp === 'CFEditAccount' ||\r\n $.loadedApp === 'employment' ||\r\n $.loadedApp === 'covid' ||\r\n $.loadedApp === 'forms' ||\r\n $.loadedApp === 'assessmentHistory' ||\r\n activeSection === 'caseNotesSSA-new' ||\r\n activeSection === 'caseNotes-new'\r\n ) {\r\n // add modules that only allow one consumer\r\n if (isConsumerSelected) {\r\n consumer.classList.remove('consumer-selected');\r\n consumer.classList.remove('highlighted');\r\n removeConsumerFromSelectedConsumers(consumerId);\r\n } else {\r\n const currentlySelectedConsumer = ROSTER_WRAP.querySelector('.consumer-selected');\r\n if (currentlySelectedConsumer) {\r\n const currentlySelectedConsumerId = currentlySelectedConsumer.dataset.consumerId;\r\n currentlySelectedConsumer.classList.remove('highlighted');\r\n currentlySelectedConsumer.classList.remove('consumer-selected');\r\n removeConsumerFromSelectedConsumers(currentlySelectedConsumerId);\r\n }\r\n consumer.classList.add('consumer-selected');\r\n consumer.classList.add('highlighted');\r\n addConsumerToSelectedConsumers(consumer);\r\n }\r\n\r\n // only one consumer selection page rediret to main page without done button\r\n MINI_ROSTER_DONE.setAttribute('data-action-nav', 'miniRosterDone');\r\n MINI_ROSTER_DONE.click();\r\n } else {\r\n if (!isConsumerSelected) {\r\n addConsumerToSelectedConsumers(consumer);\r\n consumer.classList.add('consumer-selected');\r\n consumer.classList.add('highlighted');\r\n } else {\r\n consumer.classList.remove('consumer-selected');\r\n consumer.classList.remove('highlighted');\r\n removeConsumerFromSelectedConsumers(consumerId);\r\n }\r\n }\r\n\r\n if (activeSection === 'roster-absent') {\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n return;\r\n }\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n SELECT_ALL_BTN.addEventListener('click', event => {\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard:not(.highlighted)'));\r\n consumers.forEach(c => {\r\n if (c.classList.contains('disabled')) return;\r\n var consumer = c.cloneNode(true);\r\n addConsumerToSelectedConsumers(consumer);\r\n c.classList.add('consumer-selected', 'highlighted');\r\n });\r\n\r\n const groupCount = Object.keys(groupedRosterConsumers).length;\r\n const nextGroup = activeGroup + 1;\r\n for (let i = nextGroup; i <= groupCount; i++) {\r\n if (groupedRosterConsumers[i]) {\r\n groupedRosterConsumers[i].forEach(c => {\r\n var consumer = buildConsumerCard(c);\r\n if (consumer.classList.contains('disabled')) return;\r\n addConsumerToSelectedConsumers(consumer);\r\n });\r\n }\r\n }\r\n\r\n console.table(selectedConsumers);\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n DESELECT_ALL_BTN.addEventListener('click', event => {\r\n clearHighlightedConsumers();\r\n clearSelectedConsumers();\r\n\r\n console.table(selectedConsumers);\r\n\r\n if (selectedConsumers.length > 0) {\r\n MINI_ROSTER_DONE.classList.remove('disabled');\r\n } else {\r\n MINI_ROSTER_DONE.classList.add('disabled');\r\n }\r\n });\r\n\r\n MASS_SELECT_ALL_BTN.addEventListener('click', event => {\r\n var consumers = [].slice.call(ROSTER_WRAP.querySelectorAll('.consumerCard:not(.highlighted)'));\r\n consumers.forEach(c => {\r\n if (c.classList.contains('disabled')) return;\r\n var consumer = c.cloneNode(true);\r\n addConsumerToSelectedConsumers(consumer);\r\n c.classList.add('consumer-selected', 'highlighted');\r\n });\r\n\r\n const groupCount = Object.keys(groupedRosterConsumers).length;\r\n const nextGroup = activeGroup + 1;\r\n for (let i = nextGroup; i <= groupCount; i++) {\r\n if (groupedRosterConsumers[i]) {\r\n groupedRosterConsumers[i].forEach(c => {\r\n var consumer = buildConsumerCard(c);\r\n if (consumer.classList.contains('disabled')) return;\r\n addConsumerToSelectedConsumers(consumer);\r\n });\r\n }\r\n }\r\n\r\n console.table(selectedConsumers);\r\n\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n\r\n });\r\n\r\n MASS_DESELECT_ALL_BTN.addEventListener('click', event => {\r\n selectNoneHighlightedConsumers();\r\n clearSelectedConsumers();\r\n\r\n console.table(selectedConsumers);\r\n\r\n const doneBtn = document.getElementById('absentDone');\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n });\r\n\r\n FILTER_BTN.addEventListener('click', event => {\r\n buildFilterPopup('ALL');\r\n });\r\n\r\n SEARCH_BTN.addEventListener('click', event => {\r\n SEARCH_WRAP.classList.toggle('searchOpen');\r\n SEARCH_INPUT.value = '';\r\n SEARCH_INPUT.focus();\r\n });\r\n SEARCH_INPUT.addEventListener('keyup', event => {\r\n if (event.keyCode === 13) {\r\n searchRoster(event.target.value);\r\n }\r\n });\r\n\r\n MASS_ABSENT_BTN.addEventListener('click', event => {\r\n if (event.target.dataset.toggled === 'true') {\r\n rosterListSelectable = true;\r\n rosterAbsent.initMassAbsent();\r\n setActiveModuleSectionAttribute('roster-absent');\r\n MASS_DESELECT_ALL_BTN.style.display = 'block';\r\n MASS_SELECT_ALL_BTN.style.display = 'block';\r\n } else {\r\n rosterListSelectable = false;\r\n ACTION_NAV.hide();\r\n setActiveModuleSectionAttribute('roster-info');\r\n MASS_DESELECT_ALL_BTN.style.display = 'none';\r\n MASS_SELECT_ALL_BTN.style.display = 'none';\r\n selectNoneHighlightedConsumers();\r\n clearSelectedConsumers();\r\n }\r\n });\r\n\r\n MANAGE_GROUPS_BTN.addEventListener('click', event => {\r\n customGroups.loadManageGroupsPage();\r\n });\r\n\r\n LOCATION_NOTES_BTN.addEventListener('click', event => {\r\n locationNotes.loadAllNotesPage();\r\n });\r\n }\r\n function populateRoster(loadingMore) {\r\n if (!rosterConsumers) return;\r\n\r\n ROSTER_LIST = document.createElement('div');\r\n ROSTER_LIST.classList.add('roster__list');\r\n\r\n if (groupedRosterConsumers[activeGroup]) {\r\n groupedRosterConsumers[activeGroup].forEach(c => ROSTER_LIST.appendChild(buildConsumerCard(c)));\r\n totalConsumerCount = rosterConsumers.length;\r\n }\r\n\r\n if (ROSTER_WRAP.contains(ROSTER_SPINNER)) ROSTER_WRAP.removeChild(ROSTER_SPINNER);\r\n if (!ROSTER_WRAP.contains(LOAD_MORE_BTN)) {\r\n LOAD_MORE_BTN = buildLoadMoreBtn();\r\n ROSTER_WRAP.appendChild(LOAD_MORE_BTN);\r\n }\r\n ROSTER_WRAP.insertBefore(ROSTER_LIST, LOAD_MORE_BTN);\r\n // if (!loadingMore) SEARCH_INPUT.focus();\r\n const nextGroup = activeGroup + 1;\r\n if (!groupedRosterConsumers[nextGroup]) {\r\n ROSTER_WRAP.removeChild(LOAD_MORE_BTN);\r\n }\r\n\r\n updateTotalConsumerCount();\r\n // populateConsumerCardPortraits();\r\n }\r\n function groupRosterConsumers(consumers) {\r\n const chunkBy = 50;\r\n const chunkedArray = consumers ? UTIL.chunkArray(consumers, chunkBy) : UTIL.chunkArray(rosterConsumers, chunkBy);\r\n groupedRosterConsumers = {};\r\n chunkedArray.forEach((a, index) => (groupedRosterConsumers[index] = a));\r\n\r\n const rosterGroupKeys = Object.keys(groupedRosterConsumers);\r\n rosterGroupCount = rosterGroupKeys && rosterGroupKeys.length;\r\n activeGroup = 0;\r\n }\r\n /**\r\n *\r\n * @param {Object} param0\r\n * @param {boolean} param0.hideDateFilter - True = hide Date filter.\r\n *\r\n */\r\n async function buildRoster({ selectable, ...otherOpts }, callback) {\r\n rosterConsumers = [];\r\n\r\n rosterListSelectable = selectable;\r\n hideDateFilter = otherOpts.hideDateFilter;\r\n islocationDisabled = otherOpts.disabledLocation ? true : false; \r\n selectedActive = 'No';\r\n await getRosterData();\r\n\r\n // roster\r\n ROSTER_WRAP = document.createElement('div');\r\n ROSTER_WRAP.classList.add('roster');\r\n // roster topNav\r\n const topNav = buildRosterTopNav();\r\n const filteredBy = buildFilteredBy();\r\n // build roster\r\n ROSTER_SPINNER = PROGRESS.SPINNER.get('Please wait while we gather everyone up...');\r\n ROSTER_WRAP.appendChild(topNav);\r\n ROSTER_WRAP.appendChild(filteredBy);\r\n ROSTER_WRAP.appendChild(ROSTER_SPINNER);\r\n // setup event listener\r\n rosterEventSetup();\r\n\r\n MASS_DESELECT_ALL_BTN.style.display = 'none';\r\n MASS_SELECT_ALL_BTN.style.display = 'none';\r\n\r\n return ROSTER_WRAP;\r\n }\r\n\r\n // Main Module\r\n //---------------------------------------------\r\n async function loadRosterInfo() {\r\n //reset date\r\n selectedDate = UTIL.getTodaysDate();\r\n // clear out roster location and group so it will set back to default roster location (as per ticket 47820)\r\n selectedLocationId = null;\r\n selectedGroupName = null;\r\n\r\n PROGRESS.SPINNER.show('Loading Roster...');\r\n\r\n const rosterMarkup = await buildRoster({\r\n selectable: false,\r\n showActionNavCancel: false,\r\n forMiniRoster: false,\r\n hideDateFilter: false,\r\n });\r\n\r\n setActiveModuleSectionAttribute('roster-info');\r\n DOM.clearActionCenter();\r\n\r\n var consumerInfoCard = consumerInfo.buildCard();\r\n DOM.ACTIONCENTER.appendChild(rosterMarkup);\r\n DOM.ACTIONCENTER.appendChild(consumerInfoCard);\r\n consumerInfo.toggleHideShowAbsentMenuSection(selectedLocationId);\r\n\r\n customGroups.init(rosterGroups);\r\n rosterAbsent.init();\r\n\r\n totalConsumerCount = 0;\r\n selectedActive = 'No';\r\n await getRosterConsumersData();\r\n populateRoster();\r\n document.getElementById('searchBtn').click();\r\n filterUpdateDisplay();\r\n }\r\n\r\n return {\r\n addConsumerToActiveConsumers,\r\n buildRoster,\r\n buildConsumerCard,\r\n clearActiveConsumers,\r\n clearSelectedConsumers,\r\n getActiveConsumers,\r\n getSelectedConsumers,\r\n getSelectedConsumersCache,\r\n getSelectedConsumersMiniRoster,\r\n getSelectedLocationObj,\r\n getSelectedDate,\r\n getRosterLocations,\r\n getAllRosterConsumers,\r\n getConsumersWithUnreadNotes,\r\n getConsumerGroupsData,\r\n loadRosterInfo,\r\n miniRosterinit,\r\n populateRoster,\r\n refreshRosterList,\r\n removeConsumerFromActiveConsumers,\r\n removeMiniRosterBtn,\r\n selectedConsumersToActiveList,\r\n setAllowedConsumers,\r\n setRosterGroups,\r\n setCustomDefaultLocationData,\r\n showMiniRoster,\r\n toggleRosterListLockdown,\r\n toggleMiniRosterBtnVisible,\r\n toggleActionCenterChildrenVisiblity,\r\n updateSelectedDate,\r\n updateSelectedLocationId,\r\n selectNoneHighlightedConsumers,\r\n };\r\n})();\r\n","const rosterAjax = (function () {\r\n function getRosterLocations(callback) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getConsumersByGroup(data, callback) {\r\n // data = {selectedGroupCode, selectedGroupId, selectedLocationId, selectedDate}\r\n var groupCode = data.selectedGroupCode;\r\n var retrieveId =\r\n groupCode === 'CST' || groupCode === 'TRA' || groupCode === 'NAT'\r\n ? data.selectedGroupId\r\n : data.selectedLocationId;\r\n var date = data.selectedDate;\r\n var daysBackDate = convertDaysBack($.session.defaultProgressNoteReviewDays);\r\n\r\n date = date ? date : UTIL.getTodaysDate();\r\n var selectedActive = data.selectedActive == undefined ? 'No' : data.selectedActive; \r\n \r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumersByGroupJSON/',\r\n data:\r\n '{\"groupCode\":\"' +\r\n groupCode +\r\n '\", \"retrieveId\":\"' +\r\n retrieveId +\r\n '\", \"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n date +\r\n '\", \"daysBackDate\":\"' +\r\n daysBackDate +\r\n '\", \"isActive\":\"' +\r\n selectedActive +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getIndividualAbsentData(data, callback) {\r\n //token, locationId, consumerId, checkDate\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/checkForIndividualAbsentJSON/',\r\n //data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n try {\r\n var res = response.checkForIndividualAbsentJSONResult;\r\n } catch (e) {\r\n callback('There was a problem parsing checkForIndividualAbsentResult');\r\n }\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getAllAttachments(data, callback) {\r\n //data = {token, locationId, consumerId, checkDate}\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllAttachments/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n try {\r\n var res = response.getAllAttachmentsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback('There was a problem parsing checkForIndividualAbsentResult');\r\n }\r\n },\r\n });\r\n }\r\n function getConsumerDemographics(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerDemographicsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerDemographicsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumerRelationships(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationshipsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerRelationshipsJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getDemographicsNotes(consumerId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDemographicsNotesJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\",\"consumerId\":\"' + consumerId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getDemographicsNotesJSONResult;\r\n callback(res);\r\n },\r\n });\r\n }\r\n function getConsumerScheduleLocation(consumerId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n consumerId: consumerId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerScheduleLocation/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n data = response.getConsumerScheduleLocationResult;\r\n callback(data);\r\n },\r\n });\r\n }\r\n function getConsumerSchedule(locationId, consumerId, callback) {\r\n data = {\r\n token: $.session.Token,\r\n locationId: locationId,\r\n consumerId: consumerId,\r\n };\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/populateConsumerSchedule/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n scheduleData = response.populateConsumerScheduleResult;\r\n callback(scheduleData);\r\n },\r\n });\r\n }\r\n async function updatePortrait(imageFile, id, portraitPath, callback) {\r\n await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePortrait/',\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\",\"employeeUserName\":\"' +\r\n $.session.UserId +\r\n '\",\"imageFile\":\"' +\r\n imageFile +\r\n '\",\"id\":\"' +\r\n id +\r\n '\",\"portraitPath\":\"' +\r\n portraitPath +\r\n '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n },\r\n error: function (xhr, status, error) {\r\n console.log(status);\r\n console.log(error);\r\n console.log(xhr.responseText);\r\n },\r\n });\r\n }\r\n function getPSIUserOptionList(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPSIUserOptionListJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getPSIUserOptionListJSONResult;\r\n callback(null, res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(error, null);\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n async function updateConsumerDemographics(retrieveData) {\r\n //type, value, consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateDemographicsRecord/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.updateDemographicsRecordResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function removeConsumerPhoto(retrieveData) {\r\n // consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/removeConsumerPhoto/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return {\r\n ...data.removeConsumerPhotoResult,\r\n };\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function verifyDefaultEmailClient() {\r\n try {\r\n const data = await $.ajax({ \r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/verifyDefaultEmailClient/', \r\n data: JSON.stringify(),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getRosterLocations,\r\n getConsumersByGroup,\r\n getIndividualAbsentData,\r\n getAllAttachments,\r\n getConsumerDemographics,\r\n getDemographicsNotes,\r\n getConsumerScheduleLocation,\r\n getConsumerSchedule,\r\n updatePortrait,\r\n getConsumerRelationships,\r\n getPSIUserOptionList,\r\n updateConsumerDemographics,\r\n removeConsumerPhoto,\r\n verifyDefaultEmailClient,\r\n };\r\n})();\r\n","const rosterWorkflow = (() => {\r\n let selectedConsumerId;\r\n let selectedWorkflows = [];\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 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 });\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 });\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, onResetViewerFunc) {\r\n onResetViewer = onResetViewerFunc;\r\n selectedConsumerId = consumerId;\r\n }\r\n\r\n return {\r\n init,\r\n getWorkflowScreen,\r\n showAddWorkflowPopup\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)\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","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})();","var defaults = (function () {\r\n // dom\r\n var rosterLocationDropdown;\r\n var rosterGroupDropdown;\r\n var dayServicesLocationDropdown;\r\n var timeClockLocationDropdown;\r\n var WorkshopLocationDropdown;\r\n var moneyManagementLocationDropdown;\r\n var rosterRLLCheckBox;\r\n var dayServicesRLLCheckBox;\r\n var timeClockRLLCheckBox;\r\n var WorkshopRLLCheckBox;\r\n var moneyManagementRLLCheckBox;\r\n var itDaysBackInput;\r\n var caseNotesDaysBackInput;\r\n var progressNotesDaysBackInput;\r\n\r\n // values\r\n var todaysDate = UTIL.getTodaysDate();\r\n var rosterLocation;\r\n var rosterGroup;\r\n var rosterGroupName;\r\n var dayServicesLocation;\r\n var timeClockLocation;\r\n var WorkshopLocation;\r\n var moneyManagementLocation;\r\n var rosterRLL;\r\n var dayServicesRLL;\r\n var timeClockRLL;\r\n var workshopRLL;\r\n var moneyManagementRLL;\r\n\r\n var defaultRosterLocationFixed;\r\n //dropdown data\r\n var dayServiceDropdownData;\r\n var workshopDropdownData;\r\n var moneyManagementDropdownData;\r\n var timeClockDropdownData;\r\n var rosterLocDropdownData;\r\n var rosterGroupDropdownData;\r\n\r\n function getLocation(module) {\r\n // module ex.. 'roster', 'dayServices'\r\n switch (module) {\r\n case 'roster': {\r\n return $.session.defaultRosterLocation === 'null' ||\r\n $.session.defaultRosterLocation === '0'\r\n ? ''\r\n : $.session.defaultRosterLocation;\r\n break;\r\n }\r\n case 'rosterGroup': {\r\n return $.session.defaultRosterGroupValue;\r\n break;\r\n }\r\n case 'dayServices': {\r\n return $.session.defaultDayServiceLocation;\r\n break;\r\n }\r\n case 'timeClock': {\r\n return $.session.defaultDSTimeClockValue;\r\n break;\r\n }\r\n case 'workshop': {\r\n return $.session.defaultWorkshopLocationValue;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n return $.session.defaultMoneyManagementLocationValue;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function setLocation(module, value, name) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n rosterLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('2', rosterLocation);\r\n //reset session var for the current session\r\n $.session.defaultRosterLocation = rosterLocation;\r\n break;\r\n }\r\n case 'rosterGroup': {\r\n rosterGroup = value;\r\n defaultsAjax.saveDefaultLocationValue('6', rosterGroup, rosterGroupName);\r\n //reset session var for the current session\r\n $.session.defaultRosterGroupValue = rosterGroup;\r\n break;\r\n }\r\n case 'dayServices': {\r\n dayServicesLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('3', dayServicesLocation);\r\n //reset session var for the current session\r\n $.session.defaultDayServiceLocation = dayServicesLocation;\r\n break;\r\n }\r\n case 'timeClock': {\r\n timeClockLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('4', timeClockLocation);\r\n //reset session var for the current session\r\n $.session.defaultDSTimeClockValue = timeClockLocation;\r\n break;\r\n }\r\n case 'workshop': {\r\n WorkshopLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('5', WorkshopLocation);\r\n //reset session var for the current session\r\n $.session.defaultWorkshopLocationValue = WorkshopLocation;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n moneyManagementLocation = value;\r\n defaultsAjax.saveDefaultLocationValue('7', moneyManagementLocation);\r\n //reset session var for the current session\r\n $.session.defaultMoneyManagementLocationValue = moneyManagementLocation;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n\r\n // defaultsAjax.setDefaultValue();\r\n }\r\n\r\n function setRememberLastLocation(module) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n if (rosterRLL) {\r\n defaultsAjax.saveDefaultLocationName('2', 'Remember Last Location');\r\n $.session.defaultRosterLocationName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('2', '');\r\n $.session.defaultRosterLocationName = '';\r\n }\r\n break;\r\n }\r\n case 'dayServices': {\r\n if (dayServicesRLL) {\r\n defaultsAjax.saveDefaultLocationName('3', 'Remember Last Location');\r\n $.session.defaultDayServiceLocationName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('3', '');\r\n $.session.defaultDayServiceLocationName = '';\r\n }\r\n break;\r\n }\r\n case 'timeClock': {\r\n if (timeClockRLL) {\r\n defaultsAjax.saveDefaultLocationName('4', 'Remember Last Location');\r\n $.session.defaultDSTimeClockName = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('4', '');\r\n $.session.defaultDSTimeClockName = '';\r\n }\r\n break;\r\n }\r\n case 'workshop': {\r\n if (workshopRLL) {\r\n defaultsAjax.saveDefaultLocationName('5', 'Remember Last Location');\r\n $.session.defaultWorkshopLocation = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('5', '');\r\n $.session.defaultWorkshopLocation = '';\r\n }\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n if (moneyManagementRLL) {\r\n defaultsAjax.saveDefaultLocationName('7', 'Remember Last Location');\r\n $.session.defaultMoneyManagementLocation = 'Remember Last Location';\r\n } else {\r\n defaultsAjax.saveDefaultLocationName('7', '');\r\n $.session.defaultMoneyManagementLocation = '';\r\n }\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // function updateRememberLastLocation() {\r\n // defaultsAjax.saveDefaultLocationValue();\r\n // }\r\n\r\n function getGroup(module) {\r\n switch (module) {\r\n case 'roster': {\r\n return rosterGroup;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function setGroup(module, newGroup) {\r\n // only called from within defaults page\r\n switch (module) {\r\n case 'roster': {\r\n rosterGroup = newGroup;\r\n break;\r\n }\r\n }\r\n\r\n defaultsAjax.setDefaultValue();\r\n }\r\n\r\n function dropdownData() {\r\n var dayServiceLocationPromise = new Promise(function (resolve, reject) {\r\n dayServiceAjax.getDayServiceLocations(todaysDate, loc => {\r\n dayServiceDropdownData = loc.map(loc => {\r\n var id = `ds-${loc.locationId}`;\r\n var value = loc.locationId;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('dayServices') === '')\r\n dayServiceDropdownData.unshift({\r\n id: 'ds-0',\r\n value: null,\r\n text: 'SELECT A LOCATION',\r\n });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var workshopLocationPromise = new Promise(function (resolve, reject) {\r\n workshopAjax.WorkshopLocations(todaysDate, r => {\r\n workshopDropdownData = r.map(loc => {\r\n var id = `ws-${loc.id}`;\r\n var value = loc.id;\r\n var text = loc.name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('workshop') === '' || getLocation('workshop') === '0')\r\n workshopDropdownData.unshift({ id: 'ws-0', value: '0', text: 'ALL' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var timeClockLocationPromise = new Promise(function (resolve, reject) {\r\n timeClockDropdownData = $.session.locations.map((location, index) => {\r\n var id = `tc-${$.session.locationids[index]}`;\r\n var value = $.session.locationids[index];\r\n var text = location;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('timeClock') === '') {\r\n timeClockDropdownData.unshift({ id: 'tc-0', value: null, text: 'SELECT A LOCATION' });\r\n }\r\n resolve('success');\r\n });\r\n\r\n var rosterLocPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getRosterLocations(loc => {\r\n rosterLocDropdownData = loc.map(loc => {\r\n var id = `ros-${loc.ID}`;\r\n var value = loc.ID;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n if (getLocation('roster') === '')\r\n rosterLocDropdownData.unshift({ id: 'ros-0', value: null, text: 'ALL' });\r\n resolve('success');\r\n });\r\n });\r\n\r\n var rosterGroupPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getConsumerGroups(\r\n $.session.defaultRosterLocation === 'null' ? '' : $.session.defaultRosterLocation,\r\n res => {\r\n rosterGroupDropdownData = res.map(group => {\r\n var id = `rosGr-${group.GroupCode}-${group.RetrieveID}`;\r\n var value = `${group.GroupCode}-${group.RetrieveID}`;\r\n var text = group.GroupName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n // if (getLocation(\"rosterGroup\") === \"\") rosterGroupDropdownData.unshift({ id: \"rosGr-0\", value: null, text: \"SELECT A GROUP\" });\r\n resolve('success');\r\n },\r\n );\r\n });\r\n\r\n var moneyManagementLocationPromise = new Promise(function (resolve, reject) {\r\n defaultsAjax.getRosterLocations(loc => {\r\n moneyManagementDropdownData = loc.map(loc => {\r\n var id = `ros-${loc.ID}`;\r\n var value = loc.ID;\r\n var text = loc.Name;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n moneyManagementDropdownData.unshift({ id: 'ros-0', value: '0', text: 'ALL' });\r\n resolve('success'); \r\n });\r\n });\r\n\r\n Promise.all([\r\n dayServiceLocationPromise,\r\n workshopLocationPromise,\r\n timeClockLocationPromise,\r\n rosterLocPromise,\r\n rosterGroupPromise,\r\n moneyManagementLocationPromise,\r\n ]).then(() => {\r\n buildPage();\r\n });\r\n }\r\n\r\n function rememberLastLocation(module) {\r\n switch (module) {\r\n case 'roster': {\r\n if ($.session.defaultRosterLocationName === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'dayServices': {\r\n if ($.session.defaultDayServiceLocationName === 'Remember Last Location')\r\n return true;\r\n else return false;\r\n break;\r\n }\r\n case 'timeClock': {\r\n if ($.session.defaultDSTimeClockName === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'workshop': {\r\n if ($.session.defaultWorkshopLocation === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n case 'moneyManagement': {\r\n if ($.session.defaultMoneyManagementLocation === 'Remember Last Location') return true;\r\n else return false;\r\n break;\r\n }\r\n default: {\r\n return null;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function repopulateRosterGroupDropdown(loc) {\r\n rosterGroupDropdown.classList.add('disabled');\r\n rosterGroupDropdownData = null;\r\n defaultsAjax.getConsumerGroups(loc, res => {\r\n rosterGroupDropdownData = res.map(group => {\r\n var id = `rosGr-${group.GroupCode}-${group.RetrieveID}`;\r\n var value = `${group.GroupCode}-${group.RetrieveID}`;\r\n var text = group.GroupName;\r\n return {\r\n id,\r\n value,\r\n text,\r\n };\r\n });\r\n //If they don't have any defaults set, add a blank record to the dropdown.\r\n //This will force an update on change and NOT make it look like the have a default set, when they really don't.\r\n //Once they set a default, they can only set a new one, they can't change to no default. No default might break things.\r\n // if (getLocation(\"rosterGroup\") === \"\") rosterGroupDropdownData.unshift({ id: \"rosGr-0\", value: null, text: \"SELECT A GROUP\" });\r\n setLocation('rosterGroup', `ALL-${loc}`);\r\n dropdown.populate(rosterGroupDropdown, rosterGroupDropdownData, `CAS-${loc}`);\r\n rosterGroupDropdown.classList.remove('disabled');\r\n });\r\n }\r\n\r\n function buildPage() {\r\n var defaultsPage = document.querySelector('.util-menu__defaults');\r\n defaultsPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'Defaults';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n var rosterSection = document.createElement('div');\r\n var rosterSectionHeader = document.createElement('h3');\r\n rosterSection.classList.add('settingMenuCard');\r\n rosterSectionHeader.classList.add('header');\r\n rosterSectionHeader.innerHTML = 'Roster';\r\n\r\n var dayServiceSection = document.createElement('div');\r\n var dayServiceSectionHeader = document.createElement('h3');\r\n dayServiceSection.classList.add('settingMenuCard');\r\n dayServiceSectionHeader.classList.add('header');\r\n dayServiceSectionHeader.innerHTML = 'Day Services';\r\n\r\n var timeClockSection = document.createElement('div');\r\n var timeClockSectionHeader = document.createElement('h3');\r\n timeClockSection.classList.add('settingMenuCard');\r\n timeClockSectionHeader.classList.add('header');\r\n timeClockSectionHeader.innerHTML = 'Day Services Time Clock';\r\n\r\n var WorkshopSection = document.createElement('div');\r\n var WorkshopSectionHeader = document.createElement('h3');\r\n WorkshopSection.classList.add('settingMenuCard');\r\n WorkshopSectionHeader.classList.add('header');\r\n WorkshopSectionHeader.innerHTML = 'Workshop';\r\n\r\n var incidentTrackingSection = document.createElement('div');\r\n var incidentTrackingSectionHeader = document.createElement('h3');\r\n incidentTrackingSection.classList.add('settingMenuCard');\r\n incidentTrackingSectionHeader.classList.add('header');\r\n incidentTrackingSectionHeader.innerHTML = 'Incident Tracking';\r\n\r\n var moneyManagementSection = document.createElement('div');\r\n var moneyManagementSectionHeader = document.createElement('h3');\r\n moneyManagementSection.classList.add('settingMenuCard');\r\n moneyManagementSectionHeader.classList.add('header');\r\n moneyManagementSectionHeader.innerHTML = 'Money Management';\r\n\r\n var caseNotesSection = document.createElement('div');\r\n var caseNotesSectionHeader = document.createElement('h3');\r\n caseNotesSection.classList.add('settingMenuCard');\r\n caseNotesSectionHeader.classList.add('header');\r\n caseNotesSectionHeader.innerHTML = 'Case Notes';\r\n\r\n rosterLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultRosterLocation',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n rosterRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: rosterRLL,\r\n });\r\n rosterGroupDropdown = dropdown.build({\r\n dropdownId: 'defaultRosterGroup',\r\n label: 'Default Group',\r\n style: 'secondary',\r\n });\r\n dayServicesLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultDayServicesLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n dayServicesRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: dayServicesRLL,\r\n });\r\n timeClockLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultTimeClockLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n timeClockRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: timeClockRLL,\r\n });\r\n WorkshopLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultWorkshopLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n WorkshopRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: workshopRLL,\r\n });\r\n moneyManagementLocationDropdown = dropdown.build({\r\n dropdownId: 'defaultMoneyManagementLocation',\r\n className: 'defaultLocationDD',\r\n label: 'Default Location',\r\n style: 'secondary',\r\n });\r\n\r\n moneyManagementRLLCheckBox = input.buildCheckbox({\r\n text: 'Remember Last Location',\r\n className: 'rllCheckBox',\r\n style: 'secondary',\r\n isChecked: moneyManagementRLL,\r\n });\r\n\r\n var backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n itDaysBackInput = input.build({\r\n id: 'itDaysBack',\r\n label: 'Days Back (max: 365)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '365' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultIncidentTrackingDaysBack,\r\n });\r\n\r\n caseNotesDaysBackInput = input.build({\r\n id: 'cnDaysBack',\r\n label: 'Days Back (max: 99)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '99' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultCaseNoteReviewDays,\r\n });\r\n\r\n progressNotesDaysBackInput = input.build({\r\n id: 'progNotesDaysBack',\r\n label: 'Progress Notes Days Back (max: 99)',\r\n type: 'number',\r\n style: 'secondary',\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '999' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n value: $.session.defaultProgressNoteReviewDays,\r\n });\r\n\r\n //Display for current menu\r\n defaultsPage.appendChild(currMenu);\r\n\r\n //if remember last location is enabled, disable the location dropdown\r\n if (rosterRLL) rosterLocationDropdown.classList.add('disabled');\r\n if (rosterRLL) rosterGroupDropdown.classList.add('disabled');\r\n if (dayServicesRLL) dayServicesLocationDropdown.classList.add('disabled');\r\n if (timeClockRLL) timeClockLocationDropdown.classList.add('disabled');\r\n if (workshopRLL) WorkshopLocationDropdown.classList.add('disabled');\r\n if (moneyManagementRLL) moneyManagementLocationDropdown.classList.add('disabled');\r\n\r\n //checkbox div and wraper for right justification\r\n rosterChecboxDiv = document.createElement('div');\r\n dayServicesChecboxDiv = document.createElement('div');\r\n timeClockChecboxDiv = document.createElement('div');\r\n workshopChecboxDiv = document.createElement('div');\r\n moneyManagementChecboxDiv = document.createElement('div');\r\n rosterChecboxDiv.classList.add('checkboxWrap');\r\n dayServicesChecboxDiv.classList.add('checkboxWrap');\r\n timeClockChecboxDiv.classList.add('checkboxWrap');\r\n workshopChecboxDiv.classList.add('checkboxWrap');\r\n moneyManagementChecboxDiv.classList.add('checkboxWrap');\r\n\r\n rosterChecboxDiv.appendChild(rosterRLLCheckBox);\r\n dayServicesChecboxDiv.appendChild(dayServicesRLLCheckBox);\r\n timeClockChecboxDiv.appendChild(timeClockRLLCheckBox);\r\n workshopChecboxDiv.appendChild(WorkshopRLLCheckBox);\r\n moneyManagementChecboxDiv.appendChild(moneyManagementRLLCheckBox);\r\n\r\n //roster settigns\r\n rosterSection.appendChild(rosterSectionHeader);\r\n rosterSection.appendChild(rosterLocationDropdown);\r\n rosterSection.appendChild(rosterChecboxDiv);\r\n rosterSection.appendChild(rosterGroupDropdown);\r\n rosterSection.appendChild(progressNotesDaysBackInput);\r\n\r\n // day service settings\r\n dayServiceSection.appendChild(dayServiceSectionHeader);\r\n dayServiceSection.appendChild(dayServicesLocationDropdown);\r\n dayServiceSection.appendChild(dayServicesChecboxDiv);\r\n\r\n //time clock settings\r\n timeClockSection.appendChild(timeClockSectionHeader);\r\n timeClockSection.appendChild(timeClockLocationDropdown);\r\n timeClockSection.appendChild(timeClockChecboxDiv);\r\n\r\n //workshop settings\r\n if ($.session.applicationName === 'Advisor') {\r\n WorkshopSection.appendChild(WorkshopSectionHeader);\r\n WorkshopSection.appendChild(WorkshopLocationDropdown);\r\n WorkshopSection.appendChild(workshopChecboxDiv);\r\n }\r\n\r\n //Incitent Tracking Settings\r\n if ($.session.applicationName === 'Advisor') {\r\n incidentTrackingSection.appendChild(incidentTrackingSectionHeader);\r\n incidentTrackingSection.appendChild(itDaysBackInput);\r\n }\r\n\r\n //moneyManagement settings\r\n if ($.session.applicationName === 'Advisor') {\r\n moneyManagementSection.appendChild(moneyManagementSectionHeader);\r\n moneyManagementSection.appendChild(moneyManagementLocationDropdown);\r\n moneyManagementSection.appendChild(moneyManagementChecboxDiv);\r\n }\r\n\r\n //case notes settings\r\n caseNotesSection.appendChild(caseNotesSectionHeader);\r\n caseNotesSection.appendChild(caseNotesDaysBackInput);\r\n\r\n defaultsPage.appendChild(backButton);\r\n defaultsPage.appendChild(rosterSection);\r\n defaultsPage.appendChild(dayServiceSection);\r\n defaultsPage.appendChild(caseNotesSection);\r\n if ($.session.dsCertified) defaultsPage.appendChild(timeClockSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(WorkshopSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(incidentTrackingSection);\r\n if ($.session.applicationName === 'Advisor')\r\n defaultsPage.appendChild(moneyManagementSection);\r\n\r\n rosterLocationDropdown.classList.add('defaultLocationDD');\r\n dayServicesLocationDropdown.classList.add('defaultLocationDD');\r\n timeClockLocationDropdown.classList.add('defaultLocationDD');\r\n WorkshopLocationDropdown.classList.add('defaultLocationDD');\r\n moneyManagementLocationDropdown.classList.add('defaultLocationDD');\r\n\r\n //RESET roster group to all if they have roster remember last location enabled. this is incase they change location but their selected default group is not in that location\r\n if (rosterRLL && $.session.defaultRosterGroupValue !== 'ALL')\r\n setLocation('rosterGroup', 'ALL');\r\n\r\n //populate\r\n //\r\n dropdown.populate(\r\n rosterLocationDropdown,\r\n rosterLocDropdownData,\r\n $.session.defaultRosterLocation === 'null' ? '' : $.session.defaultRosterLocation,\r\n );\r\n\r\n dropdown.populate(\r\n rosterGroupDropdown,\r\n rosterGroupDropdownData,\r\n $.session.defaultRosterGroupValue,\r\n );\r\n\r\n dropdown.populate(\r\n dayServicesLocationDropdown,\r\n dayServiceDropdownData,\r\n $.session.defaultDayServiceLocation,\r\n );\r\n\r\n dropdown.populate(\r\n WorkshopLocationDropdown,\r\n workshopDropdownData,\r\n $.session.defaultWorkshopLocationValue,\r\n );\r\n\r\n dropdown.populate(\r\n moneyManagementLocationDropdown,\r\n moneyManagementDropdownData,\r\n $.session.defaultMoneyManagementLocationValue,\r\n );\r\n if ($.session.dsCertified)\r\n dropdown.populate(\r\n timeClockLocationDropdown,\r\n timeClockDropdownData,\r\n $.session.defaultDSTimeClockValue,\r\n );\r\n addEventListeners();\r\n }\r\n\r\n function checkInitialRememberLastLocation() {\r\n rosterRLL = rememberLastLocation('roster');\r\n dayServicesRLL = rememberLastLocation('dayServices');\r\n timeClockRLL = rememberLastLocation('timeClock');\r\n workshopRLL = rememberLastLocation('workshop');\r\n moneyManagementRLL = rememberLastLocation('moneyManagement');\r\n }\r\n\r\n function addEventListeners() {\r\n //=====\r\n //ROSTER\r\n progressNotesDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 999 && newVal >= 1) {\r\n defaultsAjax.updateConsumerNotesDaysBack(newVal);\r\n }\r\n });\r\n rosterLocationDropdown.addEventListener('change', () => {\r\n setLocation('roster', event.target.options[event.target.selectedIndex].value);\r\n repopulateRosterGroupDropdown(\r\n event.target.options[event.target.selectedIndex].value,\r\n );\r\n //Reset roster group to all\r\n setLocation('rosterGroup', 'ALL', 'Everyone');\r\n });\r\n rosterRLLCheckBox.addEventListener('change', () => {\r\n rosterRLL = !rosterRLL;\r\n setRememberLastLocation('roster');\r\n\r\n if (rosterRLL) {\r\n groupDropdownOptions = document.getElementById('defaultRosterGroup');\r\n rosterLocationDropdown.classList.add('disabled');\r\n rosterGroupDropdown.classList.add('disabled');\r\n groupDropdownOptions.selectedIndex = 'ALL';\r\n setLocation('rosterGroup', 'ALL', 'Everyone');\r\n } else {\r\n rosterLocationDropdown.classList.remove('disabled');\r\n rosterGroupDropdown.classList.remove('disabled');\r\n }\r\n });\r\n rosterGroupDropdown.addEventListener('change', () => {\r\n setLocation(\r\n 'rosterGroup',\r\n event.target.options[event.target.selectedIndex].value,\r\n event.target.options[event.target.selectedIndex].innerHTML,\r\n );\r\n });\r\n //=====\r\n //WORKSHOP\r\n WorkshopLocationDropdown.addEventListener('change', () => {\r\n setLocation('workshop', event.target.options[event.target.selectedIndex].value);\r\n });\r\n WorkshopRLLCheckBox.addEventListener('change', () => {\r\n workshopRLL = !workshopRLL;\r\n setRememberLastLocation('workshop');\r\n if (workshopRLL) WorkshopLocationDropdown.classList.add('disabled');\r\n else WorkshopLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n //MONEY MANAGEMENT\r\n moneyManagementLocationDropdown.addEventListener('change', () => {\r\n if (!moneyManagementLocationDropdown.classList.contains('disabled')) {\r\n setLocation('moneyManagement', event.target.options[event.target.selectedIndex].value);\r\n }\r\n else { \r\n document.getElementById('defaultMoneyManagementLocation').value = $.session.defaultMoneyManagementLocationValue;\r\n }\r\n }); \r\n moneyManagementRLLCheckBox.addEventListener('change', () => {\r\n moneyManagementRLL = !moneyManagementRLL;\r\n setRememberLastLocation('moneyManagement');\r\n if (moneyManagementRLL) moneyManagementLocationDropdown.classList.add('disabled');\r\n else moneyManagementLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n // DAY SERVICES\r\n dayServicesLocationDropdown.addEventListener('change', () => {\r\n setLocation('dayServices', event.target.options[event.target.selectedIndex].value);\r\n });\r\n\r\n dayServicesRLLCheckBox.addEventListener('change', () => {\r\n dayServicesRLL = !dayServicesRLL;\r\n setRememberLastLocation('dayServices');\r\n if (dayServicesRLL) dayServicesLocationDropdown.classList.add('disabled');\r\n else dayServicesLocationDropdown.classList.remove('disabled');\r\n });\r\n //=====\r\n //INCIDENT TRACKING\r\n itDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 365 && newVal >= 1) {\r\n $.session.defaultIncidentTrackingDaysBack = newVal;\r\n defaultsAjax.updateIncidentTrackingDaysBack(newVal);\r\n }\r\n });\r\n //=====\r\n //CASE NOTES\r\n caseNotesDaysBackInput.addEventListener('change', () => {\r\n let newVal = parseInt(event.target.value);\r\n if (newVal <= 99 && newVal >= 1) {\r\n $.session.defaultCaseNoteReviewDays = newVal;\r\n defaultsAjax.updateCaseNotesDaysBack(newVal);\r\n }\r\n });\r\n\r\n //=====\r\n //DS TIME CLOCK (NEED TO BE DAY SERVICE CERTIFIED TO USE)\r\n if ($.session.dsCertified) {\r\n timeClockLocationDropdown.addEventListener('change', () => {\r\n setLocation('timeClock', event.target.options[event.target.selectedIndex].value);\r\n });\r\n timeClockRLLCheckBox.addEventListener('change', () => {\r\n timeClockRLL = !timeClockRLL;\r\n setRememberLastLocation('timeClock');\r\n if (timeClockRLL) timeClockLocationDropdown.classList.add('disabled');\r\n else timeClockLocationDropdown.classList.remove('disabled');\r\n });\r\n }\r\n }\r\n // Checks DB for any default locations that have been inactivated\r\n // Resets those locations back to null, and displays a message with locations that were reset\r\n async function getInvalidDefaultLocations() {\r\n const invalidDefaults = await defaultsAjax.getInvalidDefaults();\r\n\r\n if (invalidDefaults.length === 0) return;\r\n\r\n // BUILD POPUP\r\n const invalidDefaultNotificationPopup = POPUP.build({\r\n id: 'invalidDefaultPopup',\r\n });\r\n\r\n const continueBtn = button.build({\r\n id: 'invalidDefaultContinueBtn',\r\n text: 'Continue',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(invalidDefaultNotificationPopup);\r\n },\r\n });\r\n\r\n continueBtn.style.width = '100%';\r\n\r\n // MAIN MESSAGE\r\n const message = document.createElement('div');\r\n message.classList.add('invalidDefaultMessage');\r\n message.innerHTML = `

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

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


    \r\n

    `;\r\n\r\n const listHeader = document.createElement('p');\r\n listHeader.innerText = 'Locations that were reset:';\r\n listHeader.classList.add('invalidDefaultListHeader');\r\n\r\n // LIST OF INVALID LOCATIONS\r\n const list = document.createElement('ul');\r\n list.classList.add('invalidDefaultList');\r\n\r\n invalidDefaults.forEach(def => {\r\n const listItem = document.createElement('li');\r\n listItem.innerHTML = `Location Name: ${def.locationName}
    As Your: ${def.moduleDefault}`;\r\n list.appendChild(listItem);\r\n });\r\n\r\n // APPEND AND SHOW POPUP\r\n invalidDefaultNotificationPopup.appendChild(message);\r\n invalidDefaultNotificationPopup.appendChild(listHeader);\r\n invalidDefaultNotificationPopup.appendChild(list);\r\n invalidDefaultNotificationPopup.appendChild(continueBtn);\r\n\r\n POPUP.show(invalidDefaultNotificationPopup);\r\n\r\n //RESET VALUES\r\n invalidDefaults.forEach(def => {\r\n switch (def.moduleDefault) {\r\n case 'Default Roster Location':\r\n setLocation('roster', '');\r\n setLocation('rosterGroup', '');\r\n break;\r\n case 'Default Day Services Location':\r\n setLocation('dayServices', '');\r\n break;\r\n case 'Default Time Clock Location':\r\n setLocation('timeClock', '');\r\n break;\r\n case 'Default Workshop Location':\r\n setLocation('workshop', '');\r\n break;\r\n case 'Default MoneyManagement Location':\r\n setLocation('moneyManagement', '');\r\n break;\r\n default:\r\n console.warn(`couldn't reset a default location`);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function init() {\r\n checkInitialRememberLastLocation();\r\n dropdownData();\r\n }\r\n\r\n return {\r\n init,\r\n buildPage,\r\n getLocation,\r\n getGroup,\r\n getInvalidDefaultLocations,\r\n setLocation,\r\n setGroup,\r\n rememberLastLocation,\r\n };\r\n})();\r\n","var defaultsAjax = (function () {\r\n function setDefaultValue(type, value, name) { \r\n var typeName = \"\";\r\n var switchCase = 0;\r\n switch (type) {\r\n case 1:\r\n typeName = \"Default Staff Location\";\r\n break;\r\n case 2:\r\n typeName = \"Default Roster Location\";\r\n createCookie(\"defaultRosterGroupName\", \"Everyone\", 7);\r\n createCookie(\"defaultRosterGroupValue\", \"ALL\", 7);\r\n saveDefaultLocationNameAjax(\"6\", \"Everyone\");\r\n saveDefaultLocationValueAjax(\"6\", \"ALL\");\r\n $(\"#rostergroup6\").text(\"Everyone\");\r\n if (value != 0 && name != null) {\r\n getConsumerGroups(value, name);\r\n $.session.defaultRosterLocation = value;\r\n createCookie(\"defaultRosterLocationName\", name, 7);\r\n saveDefaultLocationNameAjax(\"2\", name);\r\n } else {\r\n createCookie(\r\n \"defaultRosterLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"2\", \"Remember Last Location\");\r\n }\r\n break;\r\n case 3:\r\n typeName = \"Default Day Service Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultDayServiceLocationName\", name, 7);\r\n createCookie(\"defaultDayServiceLocationNameValue\", value, 7);\r\n createCookie(\"defaultDayServiceLocationFlag\", false, 7);\r\n saveDefaultLocationNameAjax(\"3\", name);\r\n saveDefaultLocationValueAjax(\"3\", value);\r\n $.session.defaultDayServiceLocationFlag = \"false\";\r\n $.session.dsLocationHistoryFlag = false;\r\n } else {\r\n var test = $(this).text();\r\n saveDefaultLocationNameAjax(\"3\", \"Remember Last Location\");\r\n if (name == null) {\r\n createCookie(\"defaultDayServiceLocationFlag\", true, 7);\r\n $.session.defaultDayServiceLocationFlag = \"true\";\r\n }\r\n }\r\n break;\r\n case 4:\r\n typeName = \"Default Time Clock Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultTimeClockLocationName\", name, 7);\r\n createCookie(\"defaultTimeClockLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"4\", name);\r\n saveDefaultLocationValueAjax(\"4\", value);\r\n } else {\r\n }\r\n //New way to save to the database\r\n switchCase = \"4\";\r\n saveDefaultLocationValueAjax(switchCase, value);\r\n break;\r\n case 5:\r\n typeName = \"Default Workshop Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultWorkshopLocationName\", name, 7);\r\n createCookie(\"defaultWorkshopLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"5\", name);\r\n saveDefaultLocationValueAjax(\"5\", value);\r\n } else {\r\n createCookie(\r\n \"defaultWorkshopLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"5\", \"Remember Last Location\");\r\n }\r\n break;\r\n case 6:\r\n typeName = \"Default Roster Group\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultRosterGroupName\", name, 7);\r\n createCookie(\"defaultRosterGroupValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"6\", name);\r\n saveDefaultLocationValueAjax(\"6\", value);\r\n } else {\r\n createCookie(\"defaultRosterGroupName\", \"Everyone\", 7);\r\n saveDefaultLocationNameAjax(\"6\", \"Everyone\");\r\n }\r\n break;\r\n case 7:\r\n typeName = \"Default MoneyManagement Location\";\r\n if (value != 0 && name != null) {\r\n createCookie(\"defaultMoneyManagementLocationName\", name, 7);\r\n createCookie(\"defaultMoneyManagementLocationValue\", value, 7);\r\n saveDefaultLocationNameAjax(\"7\", name);\r\n saveDefaultLocationValueAjax(\"7\", value);\r\n } else {\r\n createCookie(\r\n \"defaultMoneyManagementLocationName\",\r\n \"Remember Last Location\",\r\n 7\r\n );\r\n saveDefaultLocationNameAjax(\"7\", \"Remember Last Location\");\r\n }\r\n break;\r\n }\r\n\r\n setDefaultLoc(type, value);\r\n }\r\n\r\n async function getInvalidDefaults() {\r\n // string token\r\n const retrieveData = {\r\n token: $.session.Token\r\n }\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getInvalidDefaults/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getInvalidDefaultsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function saveDefaultLocationValue(switchCase, locationId) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/saveDefaultLocationValue/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"switchCase\":\"' +\r\n switchCase +\r\n '\", \"locationId\":\"' +\r\n locationId +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n }\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n function saveDefaultLocationName(switchCase, locationName) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/saveDefaultLocationName/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"switchCase\":\"' + switchCase + '\", \"locationName\":\"' + locationName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n //error: function (xhr, status, error) { alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText); },\r\n });\r\n }\r\n\r\n function updateConsumerNotesDaysBack(updatedReviewDays) {\r\n $.session.defaultProgressNoteReviewDays = updatedReviewDays;\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateConsumerNotesDaysBack/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"updatedReviewDays\":\"' +\r\n updatedReviewDays +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function updateConsumerNotesChecklistDaysBack() {\r\n updatedChecklistDays = $(\"#progressnoteschecklistdaysback\").val();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateConsumerNotesChecklistDaysBack/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"updatedChecklistDays\":\"' +\r\n updatedChecklistDays +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //Days back\r\n function updateIncidentTrackingDaysBack(updatedReviewDays) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateIncidentTrackingDaysBack/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedReviewDays + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateIncidentTrackingDaysBackResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n //Case Note Review Days\r\n function updateCaseNotesDaysBack(updatedDaysBack) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateCaseNotesReviewDays/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"updatedReviewDays\":\"' + updatedDaysBack + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.updateCaseNotesReviewDaysResult;\r\n },\r\n error: function (xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n\r\n // Roster ---\r\n // -----------\r\n\r\n function getRosterLocations(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getLocationsJSON/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function (response, status, xhr) {\r\n var res = response.getLocationsJSONResult;\r\n callback(res);\r\n },\r\n error: function (xhr, status, error) {\r\n callback(null);\r\n },\r\n });\r\n }\r\n function getConsumerGroups(locationId, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol + \"://\" +\r\n $.webServer.address + \":\" +\r\n $.webServer.port + \"/\" +\r\n $.webServer.serviceName + \"/getConsumerGroupsJSON/\",\r\n data: '{\"locationId\":\"' + locationId + '\", \"token\":\"' + $.session.Token + '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function (response, status, xhr) {\r\n var res = response.getConsumerGroupsJSONResult;\r\n callback(res);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n setDefaultValue,\r\n updateConsumerNotesDaysBack,\r\n updateConsumerNotesChecklistDaysBack,\r\n saveDefaultLocationValue,\r\n saveDefaultLocationName,\r\n updateIncidentTrackingDaysBack,\r\n updateCaseNotesDaysBack,\r\n getConsumerGroups,\r\n getRosterLocations,\r\n getInvalidDefaults\r\n };\r\n})();\r\n","var help = (function() {\r\n\r\n function buildPage() {\r\n var helpPage = document.querySelector(\".util-menu__help\");\r\n helpPage.innerHTML = \"\";\r\n\r\n var backButton = button.build({\r\n text: \"Back\",\r\n icon: \"arrowBack\",\r\n type: \"text\",\r\n attributes: [{ key: \"data-action\", value: \"back\" }]\r\n });\r\n var linkButton = button.build({\r\n text: \"Anywhere 4.0 Training Videos\",\r\n icon: \"openNew\",\r\n type: \"text\",\r\n attributes: [{ key: \"data-action\", value: \"trainingVideos\" }]\r\n });\r\n\r\n helpPage.appendChild(backButton);\r\n helpPage.appendChild(linkButton);\r\n }\r\n return {\r\n buildPage\r\n };\r\n})();\r\n","const information = (function () {\r\n let demographicInfo;\r\n let updateData;\r\n let mobileCarriersData;\r\n let emailError = false;\r\n // DOM\r\n let infoPage;\r\n let address1Input;\r\n let address2Input;\r\n let cityInput;\r\n let stateInput;\r\n let zipInput;\r\n let phoneInput;\r\n let carrierDropdown;\r\n let emailInput;\r\n\r\n async function getStaffDemographicInformation() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetDemographicInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetDemographicInformationResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateStaffDemographicInformation() {\r\n const mergeUpdateWithDemo = { ...demographicInfo, ...updateData };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/UpdateDemographicInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n ...mergeUpdateWithDemo,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.UpdateDemographicInformationResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getMobileCarrierDropdown() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getMobileCarrierDropdown/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getMobileCarrierDropdownResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function updateInformationData() {\r\n const newDemoInfo = await getStaffDemographicInformation();\r\n\r\n if (updateData.email && updateData.email !== newDemoInfo.email && !emailError) {\r\n emailError = true;\r\n // show error by email\r\n const emailSectionBody = document.querySelector('.emailSection .informationSection__body');\r\n const errorEle = document.createElement('p');\r\n errorEle.innerText = 'Unable to update email due to eMAR';\r\n emailSectionBody.appendChild(errorEle);\r\n input.disableInputField(emailInput);\r\n }\r\n\r\n const updatedKeys = Object.keys(updateData);\r\n if (updatedKeys.length === 1 && updatedKeys[0] === 'email' && emailError) {\r\n // do nothing\r\n } else {\r\n const saveEle = successfulSave.get('Information Updated.', true);\r\n infoPage.appendChild(saveEle);\r\n setTimeout(() => {\r\n infoPage.removeChild(saveEle);\r\n }, 1000);\r\n }\r\n\r\n demographicInfo = newDemoInfo;\r\n updateData = {};\r\n\r\n address1Input.querySelector('input').value = demographicInfo.addressOne;\r\n address2Input.querySelector('input').value = demographicInfo.addressTwo;\r\n cityInput.querySelector('input').value = demographicInfo.city;\r\n stateInput.querySelector('input').value = demographicInfo.state;\r\n zipInput.querySelector('input').value = demographicInfo.zipCode;\r\n phoneInput.querySelector('input').value = formatPhoneNumber(demographicInfo.mobilePhone);\r\n emailInput.querySelector('input').value = demographicInfo.email;\r\n }\r\n\r\n async function getValidateEmailInformation() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetValidateEmailInformation/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n email: updateData.email,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetValidateEmailInformationResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function emailValidation() {\r\n const result = await getValidateEmailInformation();\r\n if (result.isEmailExist == 0 || result.isEmailExist == '0') {\r\n await updateStaffDemographicInformation();\r\n await updateInformationData();\r\n }\r\n else {\r\n emailDuplicationPopUp();\r\n }\r\n }\r\n\r\n\r\n function emailDuplicationPopUp() {\r\n const emailDuplicationPOPUP = POPUP.build({\r\n hideX: true,\r\n });\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(emailDuplicationPOPUP);\r\n },\r\n });\r\n okBtn.style.width = '100%';\r\n const heading = document.createElement('h3');\r\n heading.style.marginTop = '-20px';\r\n heading.style.marginBottom = '20px';\r\n heading.innerText = 'Duplicate email address'; \r\n\r\n\r\n const message = document.createElement('p');\r\n message.innerText = 'This email address is already in use, please enter a unique address to save.';\r\n message.style.textAlign = 'center';\r\n message.style.marginBottom = '15px';\r\n emailDuplicationPOPUP.appendChild(heading);\r\n emailDuplicationPOPUP.appendChild(message);\r\n emailDuplicationPOPUP.appendChild(okBtn);\r\n okBtn.focus();\r\n POPUP.show(emailDuplicationPOPUP);\r\n }\r\n\r\n function formatPhoneNumber(number) {\r\n if (!number) return '';\r\n\r\n const splitNumber = number\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .replaceAll('x', '');\r\n\r\n const phoneNumber = UTIL.formatPhoneNumber(splitNumber.substr(0, 10));\r\n const phoneExt = splitNumber.substr(10);\r\n\r\n const phone = phoneExt ? `${phoneNumber} (${phoneExt})` : `${phoneNumber}`;\r\n\r\n return phone;\r\n }\r\n function formatZipCode(zipCode) {\r\n const zip = zipCode.replace(/[^\\w\\s]/gi, '').replaceAll(' ', '');\r\n if (zip.length <= 5) {\r\n return zip;\r\n } else {\r\n return zip.slice(0, 5) + '-' + zip.slice(5);\r\n }\r\n }\r\n function setCaretPosition(elem, caretPos) {\r\n if (elem != null) {\r\n if (elem.createTextRange) {\r\n var range = elem.createTextRange();\r\n range.move('character', caretPos);\r\n range.select();\r\n } else {\r\n if (elem.selectionStart) {\r\n elem.focus();\r\n elem.setSelectionRange(caretPos, caretPos);\r\n } else elem.focus();\r\n }\r\n }\r\n }\r\n function stringAdd(string, start, newSubStr) {\r\n return string.slice(0, start) + newSubStr + string.slice(start);\r\n }\r\n\r\n function populateCarrierDropdown(dropdownEle) {\r\n const data = mobileCarriersData.map(carrier => {\r\n return {\r\n value: carrier.carrierId,\r\n text: carrier.carrierName,\r\n };\r\n });\r\n data.sort((a, b) => (a.text < b.text ? -1 : 1));\r\n data.unshift({\r\n value: '',\r\n text: '',\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, demographicInfo.carrier);\r\n }\r\n\r\n function buildAddressSection() {\r\n const addressSection = document.createElement('div');\r\n addressSection.classList.add('addressSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Address';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n address1Input = input.build({\r\n label: 'Address 1',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address1'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: demographicInfo.addressOne,\r\n callback: e => {\r\n updateData.addressOne = e.target.value;\r\n },\r\n });\r\n address2Input = input.build({\r\n label: 'Address 2',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['address2'],\r\n attributes: [{ key: 'maxlength', value: '50' }],\r\n value: demographicInfo.addressTwo,\r\n callback: e => {\r\n updateData.addressTwo = e.target.value;\r\n },\r\n });\r\n cityInput = input.build({\r\n label: 'City',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['city'],\r\n attributes: [{ key: 'maxlength', value: '27' }],\r\n value: demographicInfo.city,\r\n callback: e => {\r\n updateData.city = e.target.value;\r\n },\r\n });\r\n stateInput = input.build({\r\n label: 'State',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['state'],\r\n attributes: [{ key: 'maxlength', value: '2' }],\r\n value: demographicInfo.state,\r\n callback: e => {\r\n updateData.state = e.target.value;\r\n },\r\n });\r\n zipInput = input.build({\r\n label: 'Zip Code',\r\n type: 'text',\r\n style: 'secondary',\r\n classNames: ['zip'],\r\n attributes: [{ key: 'maxlength', value: '9' }],\r\n value: formatZipCode(demographicInfo.zipCode),\r\n callback: e => {\r\n updateData.zipCode = e.target.value;\r\n },\r\n });\r\n\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(address1Input);\r\n input.disableInputField(address2Input);\r\n input.disableInputField(cityInput);\r\n input.disableInputField(stateInput);\r\n input.disableInputField(zipInput);\r\n }\r\n\r\n const stateZipWrap = document.createElement('div');\r\n stateZipWrap.classList.add('stateZipWrap');\r\n stateZipWrap.appendChild(stateInput);\r\n stateZipWrap.appendChild(zipInput);\r\n\r\n body.appendChild(address1Input);\r\n body.appendChild(address2Input);\r\n body.appendChild(cityInput);\r\n body.appendChild(stateZipWrap);\r\n\r\n addressSection.appendChild(heading);\r\n addressSection.appendChild(body);\r\n\r\n return addressSection;\r\n }\r\n function buildNumbersSection() {\r\n let validPhone = false;\r\n\r\n const numberSection = document.createElement('div');\r\n numberSection.classList.add('numberSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Phone Numbers';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n phoneInput = input.build({\r\n label: 'Mobile',\r\n type: 'tel',\r\n style: 'secondary',\r\n classNames: ['phone'],\r\n value: formatPhoneNumber(demographicInfo.mobilePhone),\r\n callback: e => {\r\n if (e.target.value === '' || !validPhone) {\r\n updateData.mobilePhone = '';\r\n return;\r\n }\r\n\r\n let splitNumber = e.target.value.split(' ');\r\n\r\n let phoneNumber = splitNumber[0].replace(/[^\\w\\s]/gi, '');\r\n let phoneExt = splitNumber[1] ? splitNumber[1].replace('(', '').replace(')', '') : '';\r\n\r\n saveValue = phoneExt ? `${phoneNumber}${phoneExt}` : `${phoneNumber}`;\r\n\r\n updateData.mobilePhone = saveValue;\r\n },\r\n });\r\n phoneInput.addEventListener('keyup', e => {\r\n if (e.code === 'Backspace') return;\r\n\r\n let value = e.target.value\r\n .replace(/[^\\w\\s]/gi, '')\r\n .replaceAll(' ', '')\r\n .slice(0, 14);\r\n\r\n let phoneNumber;\r\n\r\n if (value.length === 0) {\r\n validPhone = true;\r\n return;\r\n }\r\n if (value.length >= 4 && value.length <= 6) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 7 && value.length < 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n e.target.value = phoneNumber;\r\n }\r\n if (value.length >= 10) {\r\n phoneNumber = stringAdd(value, 3, '-');\r\n phoneNumber = stringAdd(phoneNumber, 7, '-');\r\n phoneNumber = stringAdd(phoneNumber, 12, ' (');\r\n phoneNumber = stringAdd(phoneNumber, phoneNumber.length + 1, ')');\r\n e.target.value = phoneNumber;\r\n\r\n setCaretPosition(e.target, phoneNumber.length - 1);\r\n\r\n validPhone = true;\r\n }\r\n if (!validPhone) {\r\n phoneInput.classList.add('error');\r\n } else {\r\n phoneInput.classList.remove('error');\r\n }\r\n });\r\n\r\n carrierDropdown = dropdown.build({\r\n dropdownId: 'carrierDropdown',\r\n label: 'Carrier',\r\n style: 'secondary',\r\n callback: e => {\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n updateData.carrier = selectedOption.value;\r\n },\r\n });\r\n\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(phoneInput);\r\n input.disableInputField(carrierDropdown);\r\n }\r\n\r\n populateCarrierDropdown(carrierDropdown);\r\n\r\n body.appendChild(phoneInput);\r\n body.appendChild(carrierDropdown);\r\n\r\n numberSection.appendChild(heading);\r\n numberSection.appendChild(body);\r\n\r\n return numberSection;\r\n }\r\n function buildEmailSection() {\r\n const emailSection = document.createElement('div');\r\n emailSection.classList.add('emailSection', 'informationSection');\r\n\r\n const heading = document.createElement('p');\r\n heading.innerText = 'Email Address';\r\n\r\n const body = document.createElement('div');\r\n body.classList.add('informationSection__body');\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n type: 'email',\r\n style: 'secondary',\r\n value: demographicInfo.email,\r\n callback: e => {\r\n updateData.email = e.target.value;\r\n },\r\n });\r\n if (!$.session.UpdateMyInformation) {\r\n input.disableInputField(emailInput);\r\n }\r\n\r\n body.appendChild(emailInput);\r\n\r\n emailSection.appendChild(heading);\r\n emailSection.appendChild(body);\r\n\r\n return emailSection;\r\n }\r\n\r\n function buildPage() {\r\n infoPage = document.querySelector('.util-menu__info');\r\n infoPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'My Information';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n const backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n const updateButton = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'updateInformationBtn',\r\n //callback: async () => {\r\n // await updateStaffDemographicInformation();\r\n // await updateInformationData();\r\n //},\r\n callback: async () => { await emailValidation(); },\r\n\r\n });\r\n\r\n const phoneNumberSection = buildNumbersSection();\r\n const emailSection = buildEmailSection();\r\n\r\n infoPage.appendChild(currMenu);\r\n infoPage.appendChild(backButton);\r\n if ($.session.UpdateMyInformation) {\r\n infoPage.appendChild(updateButton);\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n const addressSection = buildAddressSection();\r\n infoPage.appendChild(addressSection);\r\n }\r\n\r\n infoPage.appendChild(phoneNumberSection);\r\n infoPage.appendChild(emailSection);\r\n }\r\n\r\n async function init() {\r\n demographicInfo = await getStaffDemographicInformation();\r\n mobileCarriersData = await getMobileCarrierDropdown();\r\n updateData = {};\r\n if (!demographicInfo) {\r\n demographicInfo = {\r\n addressOne: '',\r\n addressTwo: '',\r\n city: '',\r\n state: '',\r\n zipCode: '',\r\n mobilePhone: '',\r\n carrier: '',\r\n email: '',\r\n };\r\n }\r\n buildPage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var 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 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 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 // PERMISSIONS\r\n //--------------------------\r\n let isReadOnly;\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 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: '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 cuased 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 unforseen 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 behaviorl, 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 below 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 immmediate 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 !link.classList.contains('hiddenPage') && !link.classList.contains('formComplete') && !link.classList.contains('parent');\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 !link.classList.contains('hiddenPage') && !link.classList.contains('formComplete') && !link.classList.contains('parent');\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 },\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 (pgActionRequiredIn30Days.includes('no') && pgUnavailable.includes('yes')) {\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') && wlData.riskMitigation.rMIsActionRequiredIn3oDays !== '') &&\r\n (needOtherActionRequired.includes('no') && 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 (icfIsICFResident.includes('no') || icfIsNoticeIssued.includes('no') || icfIsActionRequiredIn30Days.includes('no')) {\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('yes')) {\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') ? true : isPrimaryCaregiverUnavailable.includes('yes') && isActionRequiredIn30Days.includes('no') ? true : 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 console.log(`\r\n ${_UTIL.convertCamelCaseToTitle(page)} Visibility Status: ${showPages ? 'Visible' : 'Hidden'},\r\n Reason: isPrimaryCaregiverUnavailable was ${isPrimaryCaregiverUnavailable ? isPrimaryCaregiverUnavailable.replaceAll('isPrimaryCaregiverUnavailable', '') : 'n/a'} \r\n AND isActionRequiredIn30Days was ${isActionRequiredIn30Days ? isActionRequiredIn30Days.replaceAll('isActionRequiredIn30Days', '') : 'n/a'}\r\n `);\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 console.log(`\r\n Risk Mitigation Visibility Status: ${showRM ? 'Visible' : 'Hidden'},\r\n Reason: needsIsActionRequiredIn30Days was ${isNeedsActionRequired ? isNeedsActionRequired.replaceAll('needsIsActionRequiredRequiredIn30Days', '') : 'n/a'}\r\n `);\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 console.log(`\r\n ${_UTIL.convertCamelCaseToTitle(page)} Visibility Status: ${icfAnyNo ? 'Visible' : 'Hidden'},\r\n Reason: icfIsNoticeIssued was ${icfIsNoticeIssued ? icfIsNoticeIssued.replaceAll('icfIsNoticeIssued', '') : 'n/a'} AND\r\n icfIsICFResident was ${icfIsICFResident ? icfIsICFResident.replaceAll('icfIsICFResident', '') : 'n/a'} AND\r\n icfIsActionRequiredIn30Days was ${icfIsActionRequiredIn30Days ? icfIsActionRequiredIn30Days.replaceAll('icfIsActionRequiredIn30Days', '') : 'n/a'} AND\r\n `);\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 console.log(`\r\n ICF Discharge Visibility Status: ${showICF ? 'Visible' : 'Hidden'},\r\n Reason: rMIsActionRequiredIn3oDays was ${isRisksActionRequired ? isRisksActionRequired.replaceAll('rMIsActionRequiredIn3oDays', '') : 'n/a'}\r\n `);\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 isRMActionRequiredIn3oDays = wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].getValue();\r\n const isNeedsActionRequiredIn30Days = wlForms['other'].inputs['needsIsActionRequiredRequiredIn30Days'].getValue();\r\n const isPGActionRequiredIn30Days = wlForms['primaryCaregiver'].inputs['isActionRequiredIn30Days'].getValue();\r\n const showImmediateNeeds =\r\n isNeedsActionRequiredIn30Days.includes('yes') || (isRMActionRequiredIn3oDays.includes('yes') && isRMChecked) || isPGActionRequiredIn30Days.includes('yes');\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 console.log(\r\n `Immediate Needs Visibility Status: ${showImmediateNeeds ? 'Visible' : 'Hidden'},\r\n Reason: rMIsActionRequiredIn3oDays was ${isRMActionRequiredIn3oDays ? isRMActionRequiredIn3oDays.replaceAll('rMIsActionRequiredIn3oDays', '') : 'n/a'} AND\r\n needsIsActionRequiredIn30Days was ${isNeedsActionRequiredIn30Days ? isNeedsActionRequiredIn30Days.replaceAll('needsIsActionRequiredRequiredIn30Days', '') : 'n/a'} AND\r\n riskMitigationCheckboxes had one checked was ${isRMChecked}\r\n `);\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 showCurrentNeeds = isNeedsActionRequired.includes('no') && isRisksActionRequired.includes('no');\r\n \r\n wlForms['currentNeeds'].form.parentElement.classList.toggle('hiddenPage', !showCurrentNeeds);\r\n tocLinks['currentNeeds'].classList.toggle('hiddenPage', !showCurrentNeeds);\r\n\r\n console.log(`\r\n Current Needs Visibility Status: ${showCurrentNeeds ? 'Visible' : 'Hidden'},\r\n Reason: needsIsActionRequiredIn30Days was ${isNeedsActionRequired ? isNeedsActionRequired.replaceAll('needsIsActionRequiredRequiredIn30Days', '') : 'n/a'} AND\r\n rMIsActionRequiredIn3oDays was ${isRisksActionRequired ? isRisksActionRequired.replaceAll('rMIsActionRequiredIn3oDays', '') : 'n/a'}\r\n `);\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 //--------------------------------------------------\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 =\r\n 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 = value === 'no' ? true : isActionRequiredIn30Days.includes('no') ? true : false;\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(!enableIsIndividualSkillsDeclined);\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 = wlForms['primaryCaregiver'].inputs['isPrimaryCaregiverUnavailable'].getValue();\r\n const enableIsIndividualSkillsDeclined = isPrimaryCaregiverUnavailable.includes('no') ? true : value === 'no' ? true : false;\r\n wlForms['primaryCaregiver'].inputs['isIndividualSkillsDeclined'].toggleDisabled(!enableIsIndividualSkillsDeclined);\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\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 const isNotAppChecked = name === 'rMIsNone' && value === 'on';\r\n const hasCheck = isNotAppChecked ? false : isAnyCheckboxCheckedRiskMitigation();\r\n\r\n wlForms['riskMitigation'].inputs['rMdescription'].toggleDisabled(!hasCheck);\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].toggleDisabled(!hasCheck);\r\n\r\n if (isNotAppChecked) {\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].setValue('rMIsActionRequiredIn3oDaysno');\r\n await insertUpdateAssessmentData({\r\n value: 'no',\r\n name: 'rMIsActionRequiredIn3oDays',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n } else {\r\n wlForms['riskMitigation'].inputs['rMIsActionRequiredIn3oDays'].setValue('');\r\n await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMIsActionRequiredIn3oDays',\r\n type: 'radio',\r\n formName: 'riskMitigation',\r\n });\r\n }\r\n\r\n if (!hasCheck) {\r\n wlForms['riskMitigation'].inputs['rMdescription'].setValue('');\r\n wlForms['riskMitigation'].inputs['rMIsSupportNeeded'].setValue('rMIsSupportNeededno');\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 await insertUpdateAssessmentData({\r\n value: '',\r\n name: 'rMdescription',\r\n type: 'text',\r\n formName: 'riskMitigation',\r\n });\r\n }\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 wlForms['riskMitigation'].inputs[inputId].toggleRequired(hasCheck || isNotAppChecked ? false : true);\r\n\r\n if (wlForms['riskMitigation'].inputs[inputId].getValue()) {\r\n if (hasCheck && 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 (isNotAppChecked && 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 }\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.includes('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' : '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 showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n icfIsNoticeIssued: async ({ value }) => {\r\n await showHidePagesRelatedToICF();\r\n await icfDischargeDetermination();\r\n },\r\n icfIsActionRequiredIn30Days: async ({ value }) => {\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 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 rowId => {\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(() => {\r\n 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 },\r\n {\r\n type: 'text',\r\n label: 'Email Body',\r\n id: 'emailBody',\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 });\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 // console.log('Updates:');\r\n // console.table(responses);\r\n });\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 console.clear();\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 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 }\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\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})();","(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 selectedConsumer;\r\n let overviewWrap;\r\n let wlReviewTable;\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 newAssessmentBtn.toggleDisabled(!selectedConsumer);\r\n\r\n if (!selectedConsumer) return;\r\n\r\n const { tableData, alreadyHasAssessmentForToday } = await getReviewDataByConsumer(selectedConsumer.id);\r\n wlReviewTable.populate(tableData);\r\n newAssessmentBtn.toggleDisabled(false);\r\n newAssessmentBtn.toggleDisabled(alreadyHasAssessmentForToday);\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 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 }\r\n\r\n // MAIN\r\n //--------------------------------------------------\r\n async function loadPage() {\r\n await rosterPicker.fetchConsumers();\r\n rosterPicker.populate();\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 // Review Table\r\n wlReviewTable = new Table({\r\n columnSortable: true,\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 async function reload() {\r\n loadPageSkeleton();\r\n await loadPage();\r\n attachEvents();\r\n }\r\n async function init(opts) {\r\n moduleHeader = opts.moduleHeader;\r\n moduleBody = opts.moduleBody;\r\n selectedConsumer = opts.selectedConsumer;\r\n\r\n initComponents();\r\n loadPageSkeleton();\r\n await loadPage();\r\n attachEvents();\r\n\r\n if (selectedConsumer) {\r\n populateReviewTable();\r\n rosterPicker.setSelectedConsumers([selectedConsumer.id]);\r\n }\r\n }\r\n\r\n return {\r\n init,\r\n reload,\r\n };\r\n})();\r\n","const workflow = (\r\n function() {\r\n \r\n function init(){ \r\n\r\n \r\n // PRETEND TO BE THE PLAN MODULE \r\n const viewerBtnOpts = {\r\n text: 'Launch Viewer',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => WorkflowViewerComponent.open(WorkflowProcess.CONSUMER_PLAN_ANNUAL, '686614946775502')\r\n };\r\n const viewerBtn = button.build(viewerBtnOpts);\r\n viewerBtn.style = \"margin: 20px\";\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n\r\n btnWrap.appendChild(viewerBtn);\r\n\r\n DOM.clearActionCenter();\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n \r\n } \r\n\r\n return {\r\n init\r\n }\r\n\r\n }\r\n)();","$.session.defaultWorkshopLocationId \r\n// if this session varaible is an null, sets 'defaultLocation' to a generic location object {id: 0, text: \"Location\"}.\r\n// Otherwise, sets 'defaultLocation' to object {id: 'defaultWorkshopLocaitonID', text: \"\"}.\r\n// ALSO if this session variable is NOT Null, it assigns a variable 'nullLocation to a generic location object {id: 0, text: \"Location\"}.\r\n\r\n$.session.workshopBatchId\r\n// Used in displaySelectBatch ajax call. THis call creates a list of the 'data' that is passed into it. The session variable is being set to 'data.id' of\r\n// the element that is clicked??\r\n","var workshop = (function () {\r\n //DOM ELEMENTS\r\n var locationDropdown;\r\n var jobDropdown;\r\n var supervisorDropdown;\r\n var multiSelectBtn;\r\n var clockOutNavBtn;\r\n var consumerListBtn;\r\n var filterBtn;\r\n //DROPDOWN DATA\r\n var locationDropdownData;\r\n var locationFilterDropdownData;\r\n var jobDropdownData;\r\n var updateJobFilterDropdownData;\r\n var jobFilterDropdownData;\r\n var supervisorDropdownData;\r\n\r\n var enableMultiEdit = false;\r\n //Values\r\n var locationID;\r\n var selectedBatchId;\r\n var enabledConsumers;\r\n var selectedConsumers = [];\r\n var multiConsumerSelect = [];\r\n var minStart;\r\n var minDateIso;\r\n var maxDateIso;\r\n var maxEnd;\r\n var displayDateIso;\r\n var workshopFilterListData = {\r\n token: \"\",\r\n selectedDate: \"\",\r\n consumerIds: enabledConsumers,\r\n locationId: 0,\r\n jobStepId: 0,\r\n application: \"\",\r\n batchId: selectedBatchId,\r\n locationName: \"\"\r\n };\r\n var filterCache = {\r\n locationSelectedOpt: 0,\r\n jobStepSelectedOpt: 0\r\n };\r\n var mainTableData = {};\r\n var mainJobData = {};\r\n var mainLocationData = {};\r\n let initalRosterLoad\r\n let activeModulesConsumers = []\r\n\r\n let btnWrap;\r\n let locationBtnWrap;\r\n let jobStepBtnWrap;\r\n let serviceDateBtnWrap;\r\n\r\n\r\n //UTIL =====================================\r\n function compareSupList(a, b) {\r\n const nameA = a.text.toUpperCase();\r\n const nameB = b.text.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (nameA > nameB) {\r\n comparison = 1;\r\n } else if (nameA < nameB) {\r\n comparison = -1;\r\n }\r\n return comparison;\r\n }\r\n\r\n function checkRequiredFields(btn) {\r\n var hasErrors = [].slice.call(document.querySelectorAll(\".error\"));\r\n if (hasErrors.length === 0) {\r\n btn.classList.remove(\"disabled\");\r\n } else {\r\n btn.classList.add(\"disabled\");\r\n }\r\n }\r\n\r\n // ERROR POPUPS\r\n var errorPopup = POPUP.build({\r\n header: \"ERROR\",\r\n id: \"errorPopup\",\r\n classNames: \"error\"\r\n });\r\n var errorPopupText = document.createElement(\"p\");\r\n errorPopupText.classList.add(\"errorTextArea\");\r\n errorPopup.appendChild(errorPopupText);\r\n //=============================================\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function setupActionNav() {\r\n // show clockout button\r\n clockOutNavBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"disabled\",\r\n callback: function () {\r\n multiConsumerSelect.forEach(consumer => {\r\n let obj = {};\r\n obj[\"id\"] = consumer;\r\n selectedConsumers.push(obj);\r\n });\r\n clockInOutActionPopup(\"out\");\r\n //Reset Stuff\r\n consumerListBtn = document.querySelector(\".consumerListBtn\");\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n multiConsumerSelect = [];\r\n filterBtn.classList.remove(\"disabled\");\r\n multiSelectBtn.classList.remove(\"enabled\");\r\n consumerListBtn.classList.remove(\"disabled\");\r\n //Un-select elements\r\n var selectedElms = document.querySelectorAll(\".selected\");\r\n [].forEach.call(selectedElms, function (el) {\r\n el.classList.remove(\"selected\");\r\n });\r\n }\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([clockOutNavBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n function checkOpenBatches() {\r\n workshopAjax.WorkshopPreBatchLoad(d => {\r\n var openBatches;\r\n openBatches = d;\r\n let batchPickerPopup = document.createElement(\"div\");\r\n batchPickerPopup.classList.add(\"popup\", \"visable\", \"batchPicker\");\r\n\r\n let header = document.createElement(\"h2\");\r\n header.classList.add(\"popupHeader\");\r\n batchPickerPopup.appendChild(header);\r\n\r\n if (openBatches.length == 1) {\r\n selectedBatchId = openBatches[0].id;\r\n minStart = openBatches[0].startdate;\r\n maxEnd = openBatches[0].enddate;\r\n initPageLoad();\r\n } else if (openBatches.length > 1) {\r\n header.innerHTML = \"Please Select A Batch\";\r\n let applyBtn = button.build({\r\n id: \"apply\",\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n selectedBatchId =\r\n selectedBatchId === \"\" ? openBatches[0].id : selectedBatchId;\r\n for (var x = 0; x < openBatches.length; x++) {\r\n if (openBatches[x].id === selectedBatchId) {\r\n minStart = openBatches[x].startdate;\r\n maxEnd = openBatches[x].enddate;\r\n }\r\n }\r\n DOM.ACTIONCENTER.removeChild(batchPickerPopup);\r\n overlay.hide();\r\n initPageLoad();\r\n }\r\n });\r\n\r\n let batchDropdown = dropdown.build({\r\n dropdownId: \"batchDropdown\",\r\n label: \"Batch\",\r\n style: \"secondary\"\r\n });\r\n let today = UTIL.getTodaysDate();\r\n let defaultId = 0;\r\n today = new Date(today.replace(/-/g, '\\/'));\r\n openBatches.forEach(findCorrectDates);\r\n function findCorrectDates(ele) {\r\n let startDate = new Date(ele.startdate);\r\n let endDate = new Date(ele.enddate);\r\n if (today >= startDate && today <= endDate) {\r\n defaultId = ele.id;\r\n openBatches.splice(openBatches.indexOf(ele), 1);\r\n openBatches.unshift(ele);\r\n }\r\n }\r\n let dropdownData = openBatches.map(b => {\r\n var id = b.id;\r\n var value = b.id;\r\n var text = b.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n\r\n batchPickerPopup.appendChild(batchDropdown);\r\n batchPickerPopup.appendChild(applyBtn);\r\n DOM.ACTIONCENTER.appendChild(batchPickerPopup);\r\n dropdown.populate(\"batchDropdown\", dropdownData);\r\n batchDropdown.addEventListener(\"change\", () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedBatchId = selectedOption.id;\r\n selectedBatchId = parseInt(selectedBatchId);\r\n });\r\n overlay.show();\r\n } else {\r\n header.innerHTML =\r\n \"There are no batches available for this date. Please contact your workshop administrator.\";\r\n let exitBtn = button.build({\r\n id: \"exit\",\r\n text: \"Exit\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n DOM.ACTIONCENTER.removeChild(batchPickerPopup);\r\n overlay.hide();\r\n loadApp('home')\r\n }\r\n });\r\n overlay.show();\r\n batchPickerPopup.appendChild(exitBtn);\r\n DOM.ACTIONCENTER.appendChild(batchPickerPopup);\r\n }\r\n });\r\n }\r\n\r\n function breakDownConsumerList(consumerArray) {\r\n var consumerIdList = consumerArray.map(c => c.id).join(\",\");\r\n return consumerIdList;\r\n }\r\n\r\n function buildSelectionFields() {\r\n minDateIso = UTIL.formatDateToIso(minStart.split(\" \")[0]);\r\n maxDateIso = UTIL.formatDateToIso(maxEnd.split(\" \")[0]);\r\n let today = UTIL.getTodaysDate();\r\n\r\n if (today < minDateIso || today > maxDateIso) {\r\n displayDateIso = minDateIso;\r\n } else {\r\n displayDateIso = today;\r\n }\r\n //dropdown supervisor\r\n supervisorDropdown = dropdown.build({\r\n dropdownId: \"supervisorDropdown\",\r\n label: \"Supervisor\",\r\n style: \"secondary\"\r\n });\r\n dateSelection = input.build({\r\n id: \"date\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: displayDateIso,\r\n attributes: [\r\n { key: \"min\", value: minDateIso },\r\n { key: \"max\", value: maxDateIso }\r\n ]\r\n });\r\n\r\n dateSelection.addEventListener(\"keydown\", event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n })\r\n\r\n dateSelection.addEventListener(\"change\", event => {\r\n workshopFilterListData.selectedDate = event.target.value;\r\n })\r\n\r\n }\r\n\r\n function initialData() {\r\n // Initial Date: if todays date is in the current batch, initial date is today.\r\n // else, Initial date is the first day of the batch(minStart).\r\n minDateIso = UTIL.formatDateToIso(minStart.split(\" \")[0]);\r\n maxDateIso = UTIL.formatDateToIso(maxEnd.split(\" \")[0]);\r\n let today = UTIL.getTodaysDate();\r\n let defaultWorkshopLocation = defaults.getLocation(\"workshop\");\r\n if (defaultWorkshopLocation === \"\") defaultWorkshopLocation = 0;\r\n locationID = defaultWorkshopLocation;\r\n if (today < minDateIso || today > maxDateIso) {\r\n displayDateIso = minDateIso;\r\n } else {\r\n displayDateIso = today;\r\n }\r\n roster2.updateSelectedDate(displayDateIso)\r\n workshopFilterListData.selectedDate = displayDateIso;\r\n workshopFilterListData.batchId = selectedBatchId;\r\n workshopFilterListData.token = $.session.Token;\r\n workshopFilterListData.application = $.session.applicationName;\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n //Only allow enabled consumers - Date, LocaitonID, returns consumers (called employee_id).\r\n workshopAjax.getEnabledConsumersForWorkshop(\r\n displayDateIso,\r\n defaultWorkshopLocation,\r\n res => {\r\n const allowedConsumers = []\r\n res.forEach(r => {\r\n var consumer_id = r.employee_id;\r\n const filteredConsumer = activeModulesConsumers.filter(consumer => consumer.id === consumer_id);\r\n if (filteredConsumer.length !== 0) allowedConsumers.push({ 'consumer_id': consumer_id })\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n );\r\n\r\n workshopAjax.WorkshopLocations(displayDateIso, r => {\r\n r.forEach(r => {\r\n if (!mainLocationData[r.id]) {\r\n obj = {\r\n locName: r.name\r\n };\r\n mainLocationData[r.id] = obj;\r\n }\r\n });\r\n\r\n locationDropdownData = r.map(r => {\r\n var id = `loc${r.id}`;\r\n var value = r.id;\r\n var text = r.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n locationFilterDropdownData = [...locationDropdownData];\r\n locationFilterDropdownData.unshift({ id: \"loc0\", value: 0, text: \"All\" });\r\n locationDropdownData.unshift({ id: \"loc0\", value: 0, text: \"\" });\r\n });\r\n\r\n workshopAjax.WorkshopGetSupervisors(displayDateIso, r => {\r\n supervisorDropdownData = r.map(r => {\r\n var id = `sup${r.id}`;\r\n var value = r.id;\r\n var text = r.name;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n supervisorDropdownData.sort(compareSupList);\r\n supervisorDropdownData.unshift({ id: \"sup0\", value: 0, text: \"\" });\r\n });\r\n\r\n workshopAjax.WorkshopGetJobCode(displayDateIso, 0, r => {\r\n r.forEach(r => {\r\n if (!mainJobData[r.jobstepid]) {\r\n obj = {\r\n activityType: r.activitytype,\r\n jobStepId: r.jobstepid,\r\n jobString: r.shortdescription\r\n };\r\n mainJobData[r.jobstepid] = obj;\r\n }\r\n });\r\n\r\n jobDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n jobFilterDropdownData = [...jobDropdownData];\r\n jobFilterDropdownData.unshift({ id: \"job0\", value: 0, text: \"All\" });\r\n jobDropdownData.unshift({ id: \"job0\", value: \"%\", text: \"\" });\r\n });\r\n }\r\n\r\n function updateJobDropdown(locationId, forFilter) {\r\n workshopAjax.WorkshopGetJobCode(displayDateIso, locationId, r => {\r\n if (forFilter) {\r\n updateJobFilterDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n updateJobFilterDropdownData.unshift({\r\n id: \"job0\",\r\n value: 0,\r\n text: \"All\"\r\n });\r\n dropdown.populate(\"filterJobDropdown\", updateJobFilterDropdownData);\r\n } else {\r\n var updateJobDropdownData = r.map(r => {\r\n var id = `job${r.jobstepid}`;\r\n var value = r.jobstepid;\r\n var text = `${r.customercode} - ${r.jobcode} - ${r.jobstep} - ${r.shortdescription}`;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n updateJobDropdownData.unshift({ id: \"job0\", value: \"%\", text: \"\" });\r\n dropdown.populate(\"timeClockJobDropdown\", updateJobDropdownData);\r\n }\r\n });\r\n }\r\n\r\n function buildWorkshopTable(data, callback) {\r\n var tableData = data;\r\n\r\n multiSelectBtn = button.build({\r\n id: \"multiSelect\",\r\n text: \"Multi select\",\r\n icon: \"multiSelect\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"multiSelectBtn\",\r\n callback: function () {\r\n enableMultiEditRows(multiSelectBtn);\r\n filterBtn.classList.toggle(\"disabled\");\r\n }\r\n });\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n workshopLocation: workshopFilterListData.locationId,\r\n workshopJob: workshopFilterListData.jobStepId,\r\n workshopDate: workshopFilterListData.selectedDate,\r\n workshopStartDate: minDateIso,\r\n workshopEndDate: maxDateIso\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n reportsBtn = createMainReportButton([{ text: 'Job Activity Detail Report by Employee and Job' }])\r\n\r\n var workshopTableOpts = {\r\n headline: `Batch Period: ${UTIL.formatDateFromIso(\r\n minDateIso\r\n )} - ${UTIL.formatDateFromIso(\r\n maxDateIso\r\n )}
    Date: ${UTIL.formatDateFromIso(displayDateIso)}`,\r\n columnHeadings: [\r\n \"Consumer\",\r\n \"Start Time\",\r\n \"End Time\",\r\n \"Job Code\",\r\n \"Job Step\",\r\n \"Hours\",\r\n \"Quantity\",\r\n \"Supervisor\"\r\n ],\r\n tableId: \"workshopTable\",\r\n // callback: handleWorkshopTableEvents\r\n };\r\n\r\n data.forEach(d => {\r\n if (!mainTableData[d.jobactid]) {\r\n obj = {\r\n startTime: d.starttime,\r\n endTime: d.endtime,\r\n quantity: d.quantity,\r\n consumer: d.name,\r\n consumerid: d.consumerid,\r\n isPieceRate: d.activitytype === \"P\" ? true : false\r\n };\r\n mainTableData[d.jobactid] = obj;\r\n }\r\n });\r\n\r\n tableData = data.map(d => {\r\n consumerName = `${d.name.split(\" \")[1]}, ${d.name.split(\" \")[0]}`;\r\n trimedHour = d.hours.slice(0, -2);\r\n if (d.hours !== \"\") {\r\n trimedHour = Number(trimedHour);\r\n }\r\n //if ($.session.WorkshopUpdate) {\r\n return {\r\n values: [\r\n consumerName,\r\n UTIL.convertFromMilitary(d.starttime),\r\n d.endtime === \"\" ? icons.error : UTIL.convertFromMilitary(d.endtime),\r\n d.jobcode,\r\n d.jobstep,\r\n trimedHour === \"\" ? \"-\" : trimedHour,\r\n d.activitytype !== \"P\"\r\n ? \"-\"\r\n : d.quantity === \"\" || d.quantity === \"0\"\r\n ? icons.error\r\n : d.quantity,\r\n d.supervisor === \" \" ? \"-\" : d.supervisor\r\n ],\r\n id: `jobAct${d.jobactid}`,\r\n attributes: [{ key: \"data-job-activity\", value: d.jobactid }],\r\n onClick: handleWorkshopTableEvents\r\n // }\r\n //}\r\n // else {\r\n // return {\r\n // values: [\r\n // consumerName,\r\n // UTIL.convertFromMilitary(d.starttime),\r\n // d.endtime === \"\" ? icons.error : UTIL.convertFromMilitary(d.endtime),\r\n // d.jobcode,\r\n // d.jobstep,\r\n // trimedHour === \"\" ? \"-\" : trimedHour,\r\n // d.activitytype !== \"P\"\r\n // ? \"-\"\r\n // : d.quantity === \"\" || d.quantity === \"0\"\r\n // ? icons.error\r\n // : d.quantity,\r\n // d.supervisor === \" \" ? \"-\" : d.supervisor\r\n // ],\r\n // id: `jobAct${d.jobactid}` \r\n // // attributes: [{ key: \"data-job-activity\", value: d.jobactid }],\r\n // // onClick: handleWorkshopTableEvents\r\n // }\r\n }\r\n });\r\n\r\n DOM.clearActionCenter();\r\n\r\n filterSelectReportBtnWrap = document.createElement(\"div\");\r\n filterSelectReportBtnWrap.classList.add(\"btnWrap\", \"filterSelectReportBtnWrap\");\r\n\r\n filterSelectReportBtnWrap.appendChild(multiSelectBtn);\r\n filterSelectReportBtnWrap.appendChild(reportsBtn);\r\n\r\n DOM.ACTIONCENTER.appendChild(filterSelectReportBtnWrap);\r\n\r\n const filteredBy = updateCurrentFilterDisplay();\r\n DOM.ACTIONCENTER.appendChild(filteredBy);\r\n var workshopTable = table.build(workshopTableOpts);\r\n DOM.ACTIONCENTER.appendChild(workshopTable);\r\n table.populate(\"workshopTable\", tableData);\r\n\r\n // //permission\r\n if (!$.session.WorkshopUpdate) {\r\n multiSelectBtn.classList.add(\"disabled\")\r\n multiSelectBtn.classList.remove(\"enabled\")\r\n toggleMiniRosterBtnVisible(false)\r\n }\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n function handleWorkshopTableEvents(event) {\r\n var isRow = event.target.classList.contains(\"table__row\");\r\n var jobAct = event.target.dataset.jobActivity;\r\n if (!isRow) return; // if not row return\r\n if (!$.session.WorkshopUpdate) return; // \r\n\r\n if (enableMultiEdit) {\r\n if (mainTableData[jobAct].endTime) return; // If they already clocked out, do nothing\r\n event.target.classList.toggle(\"selected\");\r\n //Add if row is being selected\r\n if (event.target.classList.contains(\"selected\")) {\r\n //and if it doesn't exist in the array\r\n if (!multiConsumerSelect.includes(mainTableData[jobAct].consumerid)) {\r\n multiConsumerSelect.push(mainTableData[jobAct].consumerid);\r\n }\r\n } else {\r\n //Remove the consumer id if it is being deselected\r\n multiConsumerSelect.splice(\r\n multiConsumerSelect.indexOf(mainTableData[jobAct].consumerid),\r\n 1\r\n );\r\n }\r\n //disable clock out button if nothing is selected\r\n if (multiConsumerSelect.length === 0) {\r\n clockOutNavBtn.classList.add(\"disabled\");\r\n } else {\r\n clockOutNavBtn.classList.remove(\"disabled\");\r\n }\r\n } else if (!enableMultiEdit) {\r\n tableRowPopup(event.target);\r\n }\r\n }\r\n\r\n function enableMultiEditRows(multiBtn) {\r\n setupActionNav();\r\n miniRosterBtn = document.querySelector(\".consumerListBtn\");\r\n enableMultiEdit = !enableMultiEdit;\r\n multiBtn.classList.toggle(\"enabled\");\r\n miniRosterBtn.classList.toggle(\"disabled\");\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n selectedConsumers = [];\r\n ACTION_NAV.hide();\r\n }\r\n\r\n var highlightedRows = [].slice.call(\r\n document.querySelectorAll(\".table__row.selected\")\r\n );\r\n highlightedRows.forEach(row => row.classList.remove(\"selected\"));\r\n }\r\n\r\n function tableRowPopup(row) {\r\n // var isPieceRate = row.dataset.pieceRate == \"true\";\r\n jobActivity = row.dataset.jobActivity;\r\n jobActivity = parseInt(jobActivity);\r\n var isPieceRate = mainTableData[jobActivity].isPieceRate;\r\n let rowPopup = POPUP.build({\r\n classNames: \"workshopTableRowPopup\",\r\n header: mainTableData[jobActivity].consumer,\r\n id: `jobAct${jobActivity}`\r\n });\r\n\r\n let startTimeField = input.build({\r\n id: \"startTime\",\r\n label: \"Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: mainTableData[jobActivity].startTime\r\n });\r\n\r\n let endTimeField = input.build({\r\n id: \"endTime\",\r\n label: \"End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n value: mainTableData[jobActivity].endTime\r\n });\r\n\r\n //only show if they have piece rate\r\n let quantityField = input.build({\r\n id: \"pieceRateQuantity\",\r\n label: \"Quantity\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"90000\" },\r\n { key: \"onkeypress\", value: \"return event.charCode >= 48 && event.charCode <= 57\" }\r\n ],\r\n value: mainTableData[jobActivity].quantity\r\n });\r\n //enable when there are changes to apply\r\n let saveBtn = button.build({\r\n id: \"save\",\r\n text: \"Save\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"save\",\r\n // classNames: 'disabled',\r\n callback: function () {\r\n tableRowApplyChange(jobActivity, row, rowPopup);\r\n }\r\n });\r\n\r\n let deleteEntryBtn = button.build({\r\n id: \"deleteEntry\",\r\n text: \"Delete Entry\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: \"delete\",\r\n callback: function () {\r\n deleteConfirmation(\r\n rowPopup,\r\n (res = () => {\r\n if (res) {\r\n workshopAjax.deleteWorkshopEntry(jobActivity);\r\n var parent = row.parentElement;\r\n parent.removeChild(row);\r\n }\r\n })\r\n );\r\n }\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"rowPopupBtnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteEntryBtn);\r\n\r\n rowPopup.appendChild(startTimeField);\r\n rowPopup.appendChild(endTimeField);\r\n if (isPieceRate) rowPopup.appendChild(quantityField);\r\n rowPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(rowPopup);\r\n }\r\n\r\n function deleteConfirmation(rowPopup, callback) {\r\n POPUP.hide(rowPopup);\r\n var confPopup = POPUP.build({\r\n classNames: \"warning\"\r\n });\r\n var cancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"no\",\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n POPUP.show(rowPopup);\r\n callback((res = false));\r\n }\r\n });\r\n var confirmBtn = button.build({\r\n text: \"Delete Entry\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n id: \"confDeleteBtn\",\r\n icon: \"delete\",\r\n callback: function () {\r\n POPUP.hide(confPopup);\r\n callback((res = true));\r\n }\r\n });\r\n var btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(cancelBtn);\r\n btnWrap.appendChild(confirmBtn);\r\n\r\n var textArea = document.createElement(\"p\");\r\n textArea.classList.add(\"warningTextArea\");\r\n textArea.innerHTML = \"Are you sure you want to delete this record?\";\r\n confPopup.appendChild(textArea);\r\n confPopup.appendChild(btnWrap);\r\n POPUP.show(confPopup);\r\n }\r\n\r\n function tableRowApplyChange(jobActivity, row, popup) {\r\n //get time out if exists\r\n //get time in\r\n //get quantity if exists\r\n //clock out if time out exists and is different from previous clockout\r\n //update clock in if time is is different from previous clockin\r\n //update quantity if exists and is different\r\n\r\n var changedStartTime = document.getElementById(\"startTime\").value;\r\n var startTime = mainTableData[jobActivity].startTime;\r\n var endTimeField = document.getElementById(\"endTime\");\r\n var quantityField = document.getElementById(\"pieceRateQuantity\");\r\n\r\n if (endTimeField.value) {\r\n var enteredEndTime = endTimeField.value;\r\n if (enteredEndTime.length < 8) {\r\n enteredEndTime += \":00\";\r\n }\r\n }\r\n if (quantityField) {\r\n if (quantityField.value) { var quantity = quantityField.value; }\r\n else var quantity = \"0\";\r\n }\r\n\r\n if (changedStartTime === enteredEndTime) {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Start Time cannot be the same as End Time.\";\r\n return;\r\n }\r\n\r\n //UPDATE CLOCKIN TIME IF IT HAS CHANGED\r\n //workshopajax.updateworkshopclockin\r\n if (startTime !== document.getElementById(\"startTime\").value) {\r\n var changedStartTime = document.getElementById(\"startTime\").value;\r\n if (changedStartTime.length < 8) {\r\n changedStartTime += \":00\";\r\n }\r\n if (!enteredEndTime || changedStartTime < enteredEndTime) {\r\n workshopAjax.updateWorkshopClockIn(\r\n jobActivity,\r\n changedStartTime,\r\n res => {\r\n try {\r\n if (res.indexOf(\"Start Overlap\") != -1) {\r\n throw \"OverlapError\";\r\n }\r\n mainTableData[jobActivity].startTime = changedStartTime;\r\n let changedStartTimeDISPLAY = UTIL.convertFromMilitary(\r\n changedStartTime\r\n );\r\n row.children[1].innerHTML = changedStartTimeDISPLAY;\r\n row.classList.remove(\"overlapError\"); //If they are saving from Overlap\r\n hours = Number(\r\n UTIL.calculateTotalHours(\r\n mainTableData[jobActivity].startTime,\r\n mainTableData[jobActivity].endTime\r\n )\r\n );\r\n row.children[5].innerHTML = hours;\r\n } catch (e) {\r\n if (e === \"OverlapError\") {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML =\r\n \"Changes overlap with existing record\";\r\n }\r\n }\r\n }\r\n );\r\n } else {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Start Time cannot be set after End Time\";\r\n return;\r\n }\r\n }\r\n\r\n //CLOCK OUT/UPDATE CLOCK OUT TIME\r\n if (enteredEndTime) {\r\n if (\r\n enteredEndTime > mainTableData[jobActivity].startTime &&\r\n enteredEndTime !== mainTableData[jobActivity].endTime\r\n ) {\r\n mainTableData[jobActivity].endTime = enteredEndTime;\r\n workshopAjax.clockoutWorkshopSingle(\r\n jobActivity,\r\n enteredEndTime,\r\n res => {\r\n try {\r\n if (res.indexOf(\"End Overlap\") != -1) {\r\n throw \"OverlapError\";\r\n }\r\n enteredEndTimeDISPLAY = UTIL.convertFromMilitary(enteredEndTime);\r\n row.children[2].innerHTML = enteredEndTimeDISPLAY;\r\n row.classList.remove(\"overlapError\"); //If they are saving from Overlap\r\n hours = Number(\r\n UTIL.calculateTotalHours(\r\n mainTableData[jobActivity].startTime,\r\n mainTableData[jobActivity].endTime\r\n )\r\n );\r\n row.children[5].innerHTML = hours;\r\n } catch (e) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Changes overlap with existing record\";\r\n }\r\n }\r\n );\r\n } else if (enteredEndTime < startTime) {\r\n POPUP.hide(popup);\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"End Time cannot be set before Start Time\";\r\n return;\r\n }\r\n }\r\n\r\n //UPDATE QUANTITY\r\n if (quantity && quantity !== mainTableData[jobActivity].quantity) {\r\n mainTableData[jobActivity].quantity = quantity;\r\n workshopAjax.updateWorkshopQuantity(quantity, jobActivity);\r\n row.children[6].innerHTML = quantity === \"0\" ? icons.error : quantity;\r\n }\r\n POPUP.hide(popup);\r\n }\r\n\r\n function tableFilterPopup(IsShow) {\r\n var filterPopup = POPUP.build({\r\n header: \"Table Filter\",\r\n id: \"workhshopFilterTablePopup\"\r\n });\r\n\r\n //dropdown location (needs the selected date)\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n locationDropdown.addEventListener(\"change\", () => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n locationID = selectedOption.value;\r\n filterCache.locationSelectedOpt = event.target.selectedIndex;\r\n workshopFilterListData.locationName = selectedOption.innerHTML;\r\n updateJobDropdown(locationID, true);\r\n });\r\n\r\n //dropdown job\r\n jobDropdown = dropdown.build({\r\n dropdownId: \"filterJobDropdown\",\r\n label: \"Job\",\r\n style: \"secondary\"\r\n });\r\n\r\n let filterApplyBtn = button.build({\r\n id: \"filterApply\",\r\n text: \"Apply\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: \"checkmark\",\r\n callback: function () {\r\n filterApplyAction();\r\n POPUP.hide(filterPopup);\r\n }\r\n });\r\n\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'jobStepBtn')\r\n filterPopup.appendChild(jobDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'serviceDateBtn')\r\n filterPopup.appendChild(dateSelection);\r\n filterPopup.appendChild(filterApplyBtn);\r\n POPUP.show(filterPopup);\r\n updateJobDropdown(locationID, true);\r\n\r\n locationDropdownSelect = document.getElementById(\"locationDropdown\");\r\n jobDropdownSelect = document.getElementById(\"filterJobDropdown\");\r\n\r\n //Populate Dropdowns and Cache the selection\r\n dropdown.populate(\r\n \"locationDropdown\",\r\n locationFilterDropdownData,\r\n locationID\r\n );\r\n // locationDropdownSelect.options.selectedIndex =\r\n // filterCache.locationSelectedOpt;\r\n jobFilterDropdownData[0].text = \"All\";\r\n jobFilterDropdownData[0].value = 0;\r\n updateJobFilterDropdownData\r\n ? dropdown.populate(\"filterJobDropdown\", updateJobFilterDropdownData)\r\n : dropdown.populate(\"filterJobDropdown\", jobFilterDropdownData);\r\n jobDropdownSelect.options.selectedIndex = filterCache.jobStepSelectedOpt;\r\n }\r\n\r\n function filterApplyAction() {\r\n if (document.getElementById(\"date\") != null) {\r\n displayDateIso = document.getElementById(\"date\").value;\r\n workshopFilterListData.selectedDate = displayDateIso;\r\n }\r\n\r\n if (document.getElementById(\"filterJobDropdown\") != null) {\r\n jobDropdown = document.getElementById(\"filterJobDropdown\");\r\n workshopFilterListData.jobStepId = jobDropdown.options[jobDropdown.selectedIndex].value;\r\n filterCache.jobStepSelectedOpt = jobDropdown.selectedIndex;\r\n }\r\n if (document.getElementById(\"locationDropdown\") != null) {\r\n locationDropdown = document.getElementById(\"locationDropdown\");\r\n workshopFilterListData.locationId = locationDropdown.options[locationDropdown.selectedIndex].value;\r\n locationID = locationDropdown.options[locationDropdown.selectedIndex].value;\r\n filterCache.locationSelectedOpt = locationDropdown.selectedIndex;\r\n }\r\n else {\r\n workshopFilterListData.locationId = locationID;\r\n }\r\n\r\n if (defaults.rememberLastLocation(\"workshop\"))\r\n defaults.setLocation(\"workshop\", locationID);\r\n\r\n //Refresh roster date:\r\n roster2.updateSelectedDate(displayDateIso)\r\n //Update active Consumers based on filter - Date, LocaitonID, returns consumers (called employee_id).\r\n workshopAjax.getEnabledConsumersForWorkshop(\r\n displayDateIso,\r\n workshopFilterListData.locationId,\r\n res => {\r\n const allowedConsumers = []\r\n res.forEach(r => {\r\n var consumer_id = r.employee_id;\r\n const filteredConsumer = activeModulesConsumers.filter(consumer => consumer.id === consumer_id);\r\n if (filteredConsumer.length !== 0) allowedConsumers.push({ 'consumer_id': consumer_id })\r\n });\r\n roster2.setAllowedConsumers(allowedConsumers);\r\n }\r\n );\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, buildWorkshopTable);\r\n updateCurrentFilterDisplay();\r\n }\r\n\r\n function updateCurrentFilterDisplay() {\r\n var currentFilterDisplay = document.querySelector('.filteredByData');\r\n if (!currentFilterDisplay) {\r\n workshopFilterListData.locationName = locationID == 0 ? \"All\" : mainLocationData[locationID].locName;\r\n workshopFilterListData.locationId = locationID;\r\n currentFilterDisplay = document.createElement('div');\r\n currentFilterDisplay.classList.add('filteredByData');\r\n filterButtonSet();\r\n currentFilterDisplay.appendChild(btnWrap);\r\n }\r\n\r\n currentFilterDisplay.style.maxWidth = '100%';\r\n\r\n if (workshopFilterListData.locationId == '0') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n } else {\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + workshopFilterListData.locationName;\r\n btnWrap.appendChild(locationBtnWrap);\r\n }\r\n\r\n if (workshopFilterListData.jobStepId === '0' || workshopFilterListData.jobStepId === 0) {\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n btnWrap.removeChild(jobStepBtnWrap);\r\n } else {\r\n if (document.getElementById('jobStepBtn') != null)\r\n document.getElementById('jobStepBtn').innerHTML = workshopFilterListData.jobStepId == '0' ? 'Job: All' : 'Job: ' + mainJobData[workshopFilterListData.jobStepId].jobString;\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n }\r\n\r\n if (document.getElementById('serviceDateBtn') != null)\r\n document.getElementById('serviceDateBtn').innerHTML = 'Date: ' + workshopFilterListData.selectedDate;\r\n\r\n\r\n return currentFilterDisplay;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { tableFilterPopup('ALL') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + workshopFilterListData.locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n jobStepBtn = button.build({\r\n id: 'jobStepBtn',\r\n text: workshopFilterListData.jobStepId == '0' || workshopFilterListData.jobStepId === 0 ? 'Job: All' : 'Job: ' + mainJobData[workshopFilterListData.jobStepId].jobString,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('jobStepBtn') },\r\n });\r\n jobStepCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('jobStepBtn') },\r\n });\r\n\r\n serviceDateBtn = button.build({\r\n id: 'serviceDateBtn',\r\n text: 'Date: ' + workshopFilterListData.selectedDate,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { tableFilterPopup('serviceDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n jobStepBtnWrap = document.createElement('div');\r\n jobStepBtnWrap.classList.add('filterSelectionBtnWrap');\r\n jobStepBtnWrap.appendChild(jobStepBtn);\r\n jobStepBtnWrap.appendChild(jobStepCloseBtn);\r\n btnWrap.appendChild(jobStepBtnWrap);\r\n\r\n serviceDateBtnWrap = document.createElement('div');\r\n serviceDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n serviceDateBtnWrap.appendChild(serviceDateBtn);\r\n btnWrap.appendChild(serviceDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) { \r\n if (closeFilter == 'jobStepBtn') {\r\n workshopFilterListData.jobStepId = 0; \r\n }\r\n if (closeFilter == 'locationBtn') {\r\n locationID = '0'; \r\n workshopFilterListData.locationId = '0'; \r\n }\r\n filterApplyAction();\r\n }\r\n\r\n function clockInOutChoicePopup() {\r\n let popup = POPUP.build({\r\n header: \"Please Choose an Option\",\r\n id: \"clockInOutChoicePopup\"\r\n });\r\n\r\n let clockInBtn = button.build({\r\n text: \"Clock In\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup(\"in\");\r\n }\r\n });\r\n let clockOutBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(popup);\r\n clockInOutActionPopup(\"out\");\r\n }\r\n });\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"choiceBtnWrap\");\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(clockOutBtn);\r\n popup.appendChild(btnWrap);\r\n POPUP.show(popup);\r\n }\r\n\r\n function clockInOutActionPopup(choice) {\r\n //Display the Date and Location that were selected from the Filter.\r\n let locationDisplay = document.createElement(\"h4\");\r\n locationDisplay.innerHTML = `Location: ${locationID == 0\r\n ? \"No location specified\"\r\n : mainLocationData[locationID].locName\r\n }`;\r\n // locationDisplay.innerHTML = `Location: ${\r\n // workshopFilterListData.locationId == 0\r\n // ? \"No location specified\"\r\n // : mainLocationData[workshopFilterListData.locationId].locName\r\n // }`;\r\n let dateDisplay = document.createElement(\"h4\");\r\n dateDisplay.innerHTML = `Selected Date: ${UTIL.formatDateFromIso(\r\n displayDateIso\r\n )}`;\r\n\r\n timeClockJobDropdown = dropdown.build({\r\n dropdownId: \"timeClockJobDropdown\",\r\n label: \"Job\",\r\n style: \"secondary\"\r\n });\r\n\r\n timeClockLocationDropdown = dropdown.build({\r\n dropdownId: \"timeClockLocationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\"\r\n });\r\n\r\n let inPopup = POPUP.build({\r\n header: \"Clock In\",\r\n id: \"clockInOutPopup\"\r\n });\r\n\r\n let outPopup = POPUP.build({\r\n header: \"Clock Out\",\r\n id: \"clockInOutPopup\"\r\n });\r\n\r\n let timeInField = input.build({\r\n id: \"inTime\",\r\n label: \"In Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n callback: function () { }\r\n });\r\n timeInField.classList.add(\"error\");\r\n\r\n let timeOutField = input.build({\r\n id: \"outTime\",\r\n label: \"Out Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n timeOutField.classList.add(\"error\");\r\n\r\n let clockInBtn = button.build({\r\n text: \"Clock In\",\r\n style: \"secondary\",\r\n classNames: \"disabled\",\r\n type: \"contained\",\r\n id: \"clockInBtn\",\r\n callback: function () {\r\n clockIn();\r\n POPUP.hide(inPopup);\r\n //Clock in function\r\n }\r\n });\r\n\r\n let clockOutBtn = button.build({\r\n text: \"Clock Out\",\r\n style: \"secondary\",\r\n classNames: \"disabled\",\r\n type: \"contained\",\r\n callback: function () {\r\n clockOut();\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n //clock out function\r\n }\r\n });\r\n\r\n let inCancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(inPopup);\r\n }\r\n });\r\n\r\n let outCancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n callback: function () {\r\n roster2.clearActiveConsumers();\r\n POPUP.hide(outPopup);\r\n }\r\n });\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n\r\n timeInField.addEventListener(\"change\", function () {\r\n let inTimeField = document.getElementById(\"inTime\");\r\n if (inTimeField.value === \"\") {\r\n timeInField.classList.add(\"error\");\r\n } else {\r\n timeInField.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockInBtn);\r\n });\r\n timeOutField.addEventListener(\"change\", function () {\r\n let outTimeField = document.getElementById(\"outTime\");\r\n if (outTimeField.value === \"\") {\r\n timeOutField.classList.add(\"error\");\r\n } else {\r\n timeOutField.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockOutBtn);\r\n });\r\n timeClockJobDropdown.classList.add(\"error\");\r\n timeClockJobDropdown.addEventListener(\"change\", function () {\r\n let timeClockJobDropdownField = document.getElementById(\r\n \"timeClockJobDropdown\"\r\n );\r\n if (\r\n timeClockJobDropdownField.options[\r\n timeClockJobDropdownField.selectedIndex\r\n ].value === \"%\"\r\n ) {\r\n timeClockJobDropdown.classList.add(\"error\");\r\n } else {\r\n timeClockJobDropdown.classList.remove(\"error\");\r\n }\r\n checkRequiredFields(clockInBtn);\r\n });\r\n\r\n switch (choice) {\r\n case \"in\": {\r\n inPopup.appendChild(dateDisplay);\r\n inPopup.appendChild(locationDisplay);\r\n inPopup.appendChild(timeClockJobDropdown);\r\n inPopup.appendChild(supervisorDropdown);\r\n inPopup.appendChild(timeInField);\r\n btnWrap.appendChild(clockInBtn);\r\n btnWrap.appendChild(inCancelBtn);\r\n inPopup.appendChild(btnWrap);\r\n POPUP.show(inPopup);\r\n\r\n updateJobDropdown(locationID, false);\r\n // updateJobDropdown(workshopFilterListData.locationId, false);\r\n\r\n // jobFilterDropdownData[0].text = \"\";\r\n // jobFilterDropdownData[0].value = \"%\";\r\n\r\n dropdown.populate(\"timeClockJobDropdown\", jobFilterDropdownData);\r\n dropdown.populate(\r\n \"supervisorDropdown\",\r\n supervisorDropdownData,\r\n $.session.PeopleId\r\n ); // default supervisor to the clocked in user (if supervisor)\r\n break;\r\n }\r\n case \"out\": {\r\n outPopup.appendChild(timeOutField);\r\n btnWrap.appendChild(clockOutBtn);\r\n btnWrap.appendChild(outCancelBtn);\r\n outPopup.appendChild(btnWrap);\r\n POPUP.show(outPopup);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function clockIn() {\r\n var supervisorID;\r\n let jobDropdownSelect = document.getElementById(\"timeClockJobDropdown\");\r\n let jobStepIdInt = parseInt(\r\n jobDropdownSelect.options[jobDropdownSelect.selectedIndex].value\r\n );\r\n // let locationID = workshopFilterListData.locationId;\r\n let supervisorSelect = document.getElementById(\"supervisorDropdown\");\r\n let supSelectedIndex = supervisorSelect.selectedIndex;\r\n if (supSelectedIndex !== -1) {\r\n supervisorID =\r\n supervisorSelect.options[supervisorSelect.selectedIndex].value;\r\n } else {\r\n supervisorID = \"0\";\r\n }\r\n let inTimeField = document.getElementById(\"inTime\");\r\n let inTime = inTimeField.value + \":00\";\r\n\r\n inData = {\r\n batchId: selectedBatchId,\r\n consumerids: selectedConsumers.map(e => e.id).join(\"|\"),\r\n jobActType: mainJobData[jobStepIdInt].activityType,\r\n jobStepId: mainJobData[jobStepIdInt].jobStepId,\r\n jobString: mainJobData[jobStepIdInt].jobString,\r\n location: locationID,\r\n selectedDate: displayDateIso,\r\n startOrEnd: \"Start\",\r\n supervisor: supervisorID,\r\n time: inTime,\r\n token: $.session.Token\r\n };\r\n\r\n workshopFilterListData.jobStepId = 0;\r\n\r\n workshopAjax.WorkshopClockIn(inData, res => {\r\n if (res.length > 0) {\r\n // There are overlaps\r\n overlapErrorPopup(res, \"in\");\r\n } else {\r\n selectedConsumers = [];\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n }\r\n\r\n roster2.clearActiveConsumers();\r\n });\r\n }\r\n\r\n function clockOut() {\r\n let outTimeField = document.getElementById(\"outTime\");\r\n let outTime = outTimeField.value + \":00\";\r\n outData = {\r\n batchId: selectedBatchId,\r\n consumerids: selectedConsumers.map(e => e.id).join(\"|\"),\r\n jobActType: \"\",\r\n jobStepId: \"0\",\r\n jobString: \"\",\r\n location: \"0\",\r\n selectedDate: displayDateIso,\r\n startOrEnd: \"End\",\r\n supervisor: \"0\",\r\n time: outTime,\r\n token: $.session.Token\r\n };\r\n\r\n workshopFilterListData.jobStepId = 0;\r\n\r\n workshopAjax.WorkshopClockOut(outData, res => {\r\n if (res.length > 0) {\r\n overlapErrorPopup(res, \"out\");\r\n } else {\r\n selectedConsumers = [];\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n }\r\n });\r\n }\r\n\r\n function overlapErrorPopup(overlapRecords, inOutString) {\r\n let clockedInConsumers = selectedConsumers.length - overlapRecords.length;\r\n\r\n let overlapErrorPopup = POPUP.build({\r\n header: `\r\n ${clockedInConsumers} ${clockedInConsumers !== 1 ? \"consumers\" : \"consumer\"\r\n } clocked ${inOutString}. \r\n There ${overlapRecords.length === 1 ? \"Is\" : \"Are\"} ${overlapRecords.length\r\n } ${overlapRecords.length === 1 ? \"Overlap.\" : \"Overlaps.\"}\r\n `,\r\n id: \"overlapErrorPopup\"\r\n });\r\n\r\n let overlapDescriptionWrap = document.createElement(\"div\");\r\n\r\n overlapRecords.forEach(r => {\r\n let overlapRecord = document.createElement(\"p\");\r\n overlapRecord.innerHTML = `

    ${mainTableData[r].consumer}


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

    \r\n `;\r\n overlapDescriptionWrap.appendChild(overlapRecord);\r\n });\r\n\r\n let correctBtn = button.build({\r\n text: \"Correct Overlaps\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n POPUP.hide(overlapErrorPopup);\r\n overlapCorrection(overlapRecords);\r\n }\r\n });\r\n let continueBtn = button.build({\r\n text: \"Continue\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n callback: function () {\r\n mainTableData = {};\r\n workshopAjax.WorkshopFilterList(\r\n workshopFilterListData,\r\n buildWorkshopTable\r\n );\r\n POPUP.hide(overlapErrorPopup);\r\n }\r\n });\r\n selectedConsumers = [];\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(correctBtn);\r\n btnWrap.appendChild(continueBtn);\r\n overlapErrorPopup.appendChild(overlapDescriptionWrap);\r\n overlapErrorPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(overlapErrorPopup);\r\n }\r\n\r\n function overlapCorrection(overlapRecords) {\r\n workshopFilterListData.consumerIds = overlapRecords\r\n .map(r => mainTableData[r].consumerid)\r\n .join(\",\");\r\n\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, res => {\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n buildWorkshopTable(res, callback => {\r\n overlapRecords.forEach(r => {\r\n row = document.getElementById(`jobAct${r}`);\r\n row.classList.add(\"overlapError\");\r\n });\r\n });\r\n });\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n var miniRoster = document.querySelector('[data-roster=\"waiting\"]');\r\n var consumerList = document.querySelector('[data-roster=\"enabled\"]');\r\n consumerListBtn = document.querySelector(\".consumerListBtn\");\r\n\r\n switch (targetAction) {\r\n // case \"rosterDone\": {\r\n // roster.selectedConsumersToEnabledList();\r\n // checkOpenBatches();\r\n // enabledConsumers = roster.getEnabledConsumers();\r\n // workshopFilterListData.consumerIds = breakDownConsumerList(\r\n // enabledConsumers\r\n // );\r\n // break;\r\n // }\r\n // case \"rosterCancel\": {\r\n // unloadApp($.loadedApp);\r\n // setActiveModuleAttribute(\"home\");\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.removeAttribute(\"data-active-section\");\r\n // dashboard.load();\r\n // break;\r\n // }\r\n case \"miniRosterDone\": {\r\n if (initalRosterLoad) {\r\n activeModulesConsumers = roster2.getActiveConsumers();\r\n initalRosterLoad = false\r\n setActiveModuleSectionAttribute(\"workshop\");\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n workshopFilterListData.consumerIds = breakDownConsumerList(\r\n activeModulesConsumers\r\n );\r\n checkOpenBatches();\r\n } else {\r\n selectedConsumers = roster2.getActiveConsumers();\r\n DOM.toggleNavLayout();\r\n clockInOutChoicePopup();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n if (initalRosterLoad) {\r\n loadApp('home')\r\n } else {\r\n DOM.toggleNavLayout();\r\n roster2.clearActiveConsumers();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n function initPageLoad() {\r\n DOM.clearActionCenter();\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.init();\r\n PROGRESS.SPINNER.show(\"Gathering Data\");\r\n\r\n buildSelectionFields();\r\n initialData();\r\n workshopAjax.WorkshopFilterList(workshopFilterListData, buildWorkshopTable);\r\n }\r\n\r\n function init() {\r\n //RESET FILTERS\r\n filterCache = {\r\n locationSelectedOpt: 0,\r\n jobStepSelectedOpt: 0\r\n };\r\n workshopFilterListData.jobStepId = 0;\r\n selectedBatchId = \"\";\r\n enableMultiEdit = false;\r\n //--------\r\n let defaultWorkshopLocation = defaults.getLocation('workshop');\r\n if (defaultWorkshopLocation === '') {\r\n defaults.setLocation('workshop', 0);\r\n defaultWorkshopLocation = \"0\";\r\n }\r\n roster2.miniRosterinit({\r\n locationId: defaultWorkshopLocation,\r\n locationName: '',\r\n }, {\r\n hideDate: true,\r\n });\r\n\r\n initalRosterLoad = true\r\n sitenav = document.querySelector(\".nav\");\r\n setActiveModuleSectionAttribute(\"workshop\");\r\n\r\n roster2.showMiniRoster({ hideDate: true })\r\n\r\n\r\n\r\n // enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // // display mini roster for consumer selection\r\n // roster.buildRoster(true, false, function appendMiniRoster(miniRoster) {\r\n // DOM.ACTIONCENTER.appendChild(miniRoster);\r\n // }, true);\r\n // } else {\r\n // checkOpenBatches();\r\n // }\r\n }\r\n\r\n return {\r\n init,\r\n handleActionNavEvent\r\n };\r\n})();\r\n","var workshopAjax = (function() {\r\n function clockoutWorkshopSingle(jobActid, timeEntered, callback) {\r\n singleClockOutData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActid,\r\n timeEntered: timeEntered\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/ClockoutWorkshopSingle/\",\r\n data: JSON.stringify(singleClockOutData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // if (res.indexOf(\"End Overlap\") !== -1) {\r\n // timeOverlapPopup(\"End time overlaps with existing record.\");\r\n // } else {\r\n // endTime = formatTimeFromDB(singleClockOutData.timeEntered);\r\n // $(\"#\" + singleClockOutData.jobActivityId + \" td:nth-child(3)\").text(\r\n // endTime\r\n // );\r\n\r\n // // this works now just need to send over the endtime and not starttime input - Ash\r\n // var clockoutEndtime = Array.from(\r\n // $(\"#\" + singleClockOutData.jobActivityId + \" td:nth-child(3)\")\r\n // );\r\n // validateEndTime(clockoutEndtime[0]);\r\n // filterSetup();\r\n // }\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function deleteWorkshopEntry(jobActId, callback) {\r\n deleteData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActId\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/DeleteWorkshopEntry/\",\r\n data: JSON.stringify(deleteData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getDeleteWorkshopEntryResult;\r\n callback();\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n //Call to popuate list based on drop down values\r\n function getWorkshopBatchById(data, callback) {\r\n callback();\r\n }\r\n\r\n function getEnabledConsumersForWorkshop(selectedDate, selectedLocation, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n // selectedDate = formatDateForDatabaseSave(selectedDate);\r\n // var selectedLocation = $(\"#workshoplocationname\").attr(\"locationid\");\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getEnabledConsumersForWorkshop/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"selectedDate\":\"' +\r\n selectedDate +\r\n '\", \"selectedLocation\":\"' +\r\n selectedLocation +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n var res = JSON.parse(response.getEnabledConsumersForWorkshopResult);\r\n callback(res);\r\n // disableNonWorkshopConsumers(res);\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function updateWorkshopClockIn(jobActid, timeEntered, callback) {\r\n updateClockInData = {\r\n token: $.session.Token,\r\n jobActivityId: jobActid,\r\n timeEntered: timeEntered\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/UpdateWorkshopClockIn/\",\r\n data: JSON.stringify(updateClockInData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n // if (res.indexOf(\"Start Overlap\") != -1) {\r\n // //Show pop up with error message saying start time can not be after end time.\r\n // timeOverlapPopup(\"Start time can not be set after end time.\");\r\n // } else {\r\n // startTime = formatTimeFromDB(updateClockInData.timeEntered);\r\n // $(\"#\" + updateClockInData.jobActivityId + \" td:nth-child(2)\").text(\r\n // startTime\r\n // );\r\n // filterSetup();\r\n // $(\"*\").removeClass(\"waitingCursor\");\r\n // }\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function updateWorkshopQuantity(quantity, jobActId) {\r\n insertData = {\r\n token: $.session.Token,\r\n quantity: quantity,\r\n jobActivityId: jobActId\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/UpdateWorkshopQuantity/\",\r\n data: JSON.stringify(insertData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getUpdateWorkshopQuantityResult;\r\n \r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopPreBatchLoad(callback) {\r\n var newDate = new Date();\r\n absenceDate =\r\n newDate.getFullYear() +\r\n \"-\" +\r\n (newDate.getMonth() + 1) +\r\n \"-\" +\r\n newDate.getDate();\r\n $.session.workshopBatchId = \"\";\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/WorkshopPreBatchLoad/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"absenceDate\":\"' +\r\n absenceDate +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n data = response.WorkshopPreBatchLoadResult;\r\n callback(data);\r\n // if (data.length > 1) {\r\n // \tdisplaySelectBatch(data, callback);\r\n // } else if (data.length == 1) {\r\n // \t$.session.workshopBatchId = data[0].id;\r\n // \tcallback(data);\r\n // } else {\r\n // \tdisplayNoBatch();\r\n // \t$('#roostertoolbar').hide();\r\n // \t$('*').removeClass('waitingCursor');\r\n // \tdata = null;\r\n // \tcallback(data);\r\n // }\r\n },\r\n error: function(xhr, status, error) {\r\n callback(error, null);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopLocations(dateSelected, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/WorkshopLocations/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"serviceDate\":\"' +\r\n dateSelected +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.WorkshopLocationsResult;\r\n callback(data);\r\n // populateLocations(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopGetSupervisors(date, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopSupervisors/\",\r\n data:\r\n '{\"token\":\"' +\r\n $.session.Token +\r\n '\", \"selectedDate\":\"' +\r\n date +\r\n '\"}',\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopSupervisorsResult;\r\n callback(data);\r\n // populateSupervisors(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function WorkshopGetJobCode(date, location, callback) {\r\n // var selectedDate = $(\"#workshopdateboxinside\").html();\r\n // var location = $(\"#workshoplocationname\").attr(\"locationid\");\r\n queryData = {\r\n token: $.session.Token,\r\n selectedDate: date,\r\n location: location\r\n };\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopJobCode/\",\r\n data: JSON.stringify(queryData),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopJobCodeResult;\r\n callback(data);\r\n // populateWorkCodes(null, data);\r\n } catch (e) {}\r\n },\r\n error: function(xhr, status, error) {}\r\n });\r\n }\r\n\r\n function WorkshopFilterList(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getWorkshopFilterListData/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n data = response.getWorkshopFilterListDataResult;\r\n callback(data)\r\n // preFilterListDataSetup(null, data, overlapData);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopClockIn(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/GetWorkshopOverlaps/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n //Returns ConsumerIds of people that already have a record\r\n res = response.GetWorkshopOverlapsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback(e, null);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n function WorkshopClockOut(data, callback) {\r\n $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/GetWorkshopOverlaps/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\",\r\n success: function(response, status, xhr) {\r\n try {\r\n res = response.GetWorkshopOverlapsResult;\r\n callback(res);\r\n } catch (e) {\r\n callback(e, null);\r\n }\r\n },\r\n error: function(xhr, status, error) {\r\n alert(\"Error\\n-----\\n\" + xhr.status + \"\\n\" + xhr.responseText);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n clockoutWorkshopSingle,\r\n deleteWorkshopEntry,\r\n getWorkshopBatchById,\r\n getEnabledConsumersForWorkshop,\r\n updateWorkshopClockIn,\r\n updateWorkshopQuantity,\r\n WorkshopPreBatchLoad,\r\n WorkshopLocations,\r\n WorkshopGetSupervisors,\r\n WorkshopGetJobCode,\r\n WorkshopFilterList,\r\n WorkshopClockIn,\r\n WorkshopClockOut\r\n };\r\n})();\r\n","(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\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 this.selectedActive = 'No';\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\r\n this.messageEleIcon = this.options.consumerRequired ? Icon.getIcon('error') : '';\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'rosterPicker__message',\r\n node: this.messageEleIcon,\r\n text: this.options.consumerRequired\r\n ? this.options.allowMultiSelect\r\n ? 'Consumer(s) is required'\r\n : 'Consumer is required'\r\n : 'Please select a consumer',\r\n });\r\n this.messageEle.classList.toggle(\r\n 'error',\r\n this.options.consumerRequired && !Object.keys(this.selectedConsumers).length,\r\n );\r\n\r\n this.rosterSearchInput = new Input({\r\n type: 'search',\r\n id: 'rosterPickerSearch',\r\n name: 'rosterPickerSearch',\r\n placeholder: 'Search...',\r\n });\r\n\r\n this.rosterCaseLoadInput = new Checkbox({\r\n label: 'Only show caseload',\r\n id: 'caseloadtoggle',\r\n name: 'caseload',\r\n checked: false,\r\n });\r\n\r\n this.rosterInActiveInput = new Checkbox({\r\n label: 'Show inactive individuals',\r\n id: 'inactivetoggle',\r\n name: 'inactive',\r\n checked: false,\r\n hidden: $.session.applicationName === 'Advisor', \r\n });\r\n\r\n this.rootElement.append(\r\n this.messageEle,\r\n this.rosterSearchInput.rootElement,\r\n this.rosterCaseLoadInput.rootElement,\r\n this.rosterInActiveInput.rootElement,\r\n this.rosterWrapEle,\r\n );\r\n };\r\n\r\n RosterPicker.prototype._buildMobileButton = function () {\r\n this.mobileRosterBtn = new Button({\r\n icon: 'peopleGroup',\r\n class: ['mobileRosterBtn'],\r\n });\r\n };\r\n\r\n /**\r\n * Sets up events for roster picker\r\n *\r\n * @function\r\n */\r\n RosterPicker.prototype._setupEvents = function () {\r\n this.rosterWrapEle.addEventListener('click', e => {\r\n if (e.target.dataset.target === 'pinCardIcon') {\r\n if (!e.target.parentNode.parentNode.classList.contains('pinned')) {\r\n e.target.parentNode.parentNode.classList.add('pinned');\r\n } else {\r\n e.target.parentNode.parentNode.classList.remove('pinned');\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (e.target.dataset.target === 'rosterCard') {\r\n if (e.target.parentNode.classList.contains('selected')) {\r\n e.target.parentNode.classList.remove('selected');\r\n delete this.selectedConsumers[e.target.dataset.id];\r\n } else {\r\n if (!this.options.allowMultiSelect) this.clearSelectedConsumers();\r\n\r\n e.target.parentNode.classList.add('selected');\r\n this.selectedConsumers[e.target.dataset.id] = e.target;\r\n }\r\n\r\n this._updateMessage();\r\n\r\n const customEvent = new CustomEvent('onConsumerSelect');\r\n this.rosterWrapEle.dispatchEvent(customEvent);\r\n\r\n return;\r\n }\r\n });\r\n\r\n this.rosterWrapEle.addEventListener('error', e => {\r\n if (e.target.tagName === 'IMG') {\r\n this.failedImageCache.add(e.target.src);\r\n }\r\n });\r\n\r\n this.rosterSearchInput.onKeyup(\r\n _UTIL.debounce(e => {\r\n this._filterConsumersOnSearch(e);\r\n }, 500),\r\n );\r\n\r\n this.rosterSearchInput.onChange(e => {\r\n this._filterConsumersOnSearch(e);\r\n });\r\n this.rosterSearchInput.onClick(e => {\r\n console.log(e);\r\n // this._filterConsumersOnSearch(e);\r\n });\r\n\r\n this.rosterCaseLoadInput.onChange(async e => {\r\n this.groupCode = e.target.checked ? 'CAS' : 'ALL';\r\n await this.fetchConsumers();\r\n this.populate();\r\n });\r\n\r\n this.rosterInActiveInput.onChange(async e => {\r\n this.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 = dates.getTodaysDateObj();\r\n todaysDate.setHours(0, 0, 0, 0);\r\n\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: dates.formatISO(todaysDate, { representation: 'date' }),\r\n daysBackDate: daysBackDate,\r\n isActive: this.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 const inActive = consumer.IDa == '' ? false : true; \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 // e.target is confirm or cancel? \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 };\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 Form.prototype.toggleFormDisabled = function (disable) {\r\n this.form.classList.toggle('readonly', disable);\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 };\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\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 };\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 }\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 };\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.id);\r\n });\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.textareaClone.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 //=======================================\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 };\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 };\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\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 };\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 };\r\n\r\n /**\r\n * Renders the built Textarea element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the textarea to\r\n * @returns {Textarea} Returns the current instances for chaining\r\n */\r\n Textarea.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.rootElement);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Textarea;\r\n});\r\n","(function (global, factory) {\r\n global.Toast = factory();\r\n})(this, function () {\r\n //=======================================\r\n // MAIN LIB\r\n //---------------------------------------\r\n /**\r\n * Default configuration\r\n * @type {Object}\r\n */\r\n const DEFAULT_OPTIONS = {\r\n autoClose: false,\r\n waitDuration: null,\r\n };\r\n\r\n /**\r\n * Constructor function for Toast Notifications.\r\n *\r\n * Toast allow you to display a message to user that will not enterfear with user workflow.\r\n * || Example usage would be to show that a report is being generated.\r\n *\r\n * @constructor\r\n * @param {Object} options\r\n * @param {Boolean} [options.autoClose] if true, toast will hide after waitDuration\r\n * @param {Number} [options.waitDuration] how long to show toast, ms\r\n * @returns {Toast}\r\n */\r\n function Toast(options) {\r\n // Data Init\r\n this.options = _UTIL.mergeObjects(DEFAULT_OPTIONS, options);\r\n this.displayStatus = null;\r\n\r\n // DOM Ref\r\n this.dialog = null;\r\n this.closeToastButton = null;\r\n this.messageEle = null;\r\n\r\n this._build();\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype._build = function () {\r\n this.dialog = new Dialog({ className: 'toast', isModal: false });\r\n\r\n this.messageEle = _DOM.createElement('p', {\r\n class: 'toast__message',\r\n });\r\n\r\n this.closeToastButton = new Button({ icon: 'close', style: 'secondary', styleType: 'text' });\r\n\r\n this.dialog.dialog.appendChild(this.messageEle);\r\n this.closeToastButton.renderTo(this.dialog.dialog);\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype.show = function (message) {\r\n if (this.displayStatus === 'open') return;\r\n\r\n if (message) this.messageEle.innerText = message;\r\n this.dialog.show();\r\n this.displayStatus = 'open';\r\n };\r\n\r\n /**\r\n * @function\r\n */\r\n Toast.prototype.close = function () {\r\n this.dialog.close();\r\n this.displayStatus = 'closed';\r\n };\r\n\r\n /**\r\n * Renders the built Toast Notification element to the specified DOM node.\r\n *\r\n * @function\r\n * @param {Node} node DOM node to render the Toast Notification to\r\n * @returns {Toast} Returns the current instances for chaining\r\n */\r\n Toast.prototype.renderTo = function (node) {\r\n if (node instanceof Node) {\r\n node.appendChild(this.dialog.dialog);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n return Toast;\r\n});\r\n","(function (global, factory) {\r\n global._DOM = factory();\r\n})(this, function () {\r\n const ACTIONCENTER = document.getElementById('actioncenter');\r\n\r\n /**\r\n * Create DOM element node and set given attributes, html/text, or nodes to append\r\n *\r\n * Examples:\r\n *\r\n * {css: 'classname'} - can be string value or an array of srings\r\n * {text: 'string of text' || 123456}\r\n * {html: '

    innerHTML

    '}\r\n * {node: elementNode} - can be a single node or an array of nodes\r\n * {[attribute]: nativeAttribute} - native HTML attributes\r\n *\r\n * @function\r\n * @param {String} tag - HTML element name\r\n * @param {Object} attributes - Attributes to be applied to element\r\n * @returns {HTMLElement} - Returns created HTML element\r\n */\r\n function createElement(tag, attributes) {\r\n const element = document.createElement(tag);\r\n const fragment = new DocumentFragment();\r\n\r\n if (attributes && typeof attributes === 'object') {\r\n let attributeName;\r\n for (attributeName in attributes) {\r\n if (!attributes[attributeName]) continue;\r\n\r\n switch (attributeName) {\r\n case 'html': {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = attributes[attributeName];\r\n\r\n const htmlFragment = new DocumentFragment();\r\n\r\n while (tempDiv.firstChild) {\r\n htmlFragment.appendChild(tempDiv.firstChild);\r\n }\r\n\r\n fragment.append(htmlFragment);\r\n break;\r\n }\r\n case 'text': {\r\n const textNode = document.createTextNode(attributes[attributeName]);\r\n fragment.append(textNode);\r\n break;\r\n }\r\n case 'node': {\r\n if (Array.isArray(attributes[attributeName])) {\r\n attributes[attributeName].forEach(att => {\r\n fragment.append(att);\r\n });\r\n } else {\r\n fragment.append(attributes[attributeName]);\r\n }\r\n break;\r\n }\r\n case 'class': {\r\n if (Array.isArray(attributes[attributeName])) {\r\n attributes[attributeName].forEach(att => {\r\n element.classList.add(att);\r\n });\r\n } else {\r\n element.classList.add(attributes[attributeName]);\r\n }\r\n break;\r\n }\r\n default: {\r\n if (typeof attributes[attributeName] === 'boolean') {\r\n element.setAttribute(attributeName, '');\r\n } else {\r\n element.setAttribute(attributeName, attributes[attributeName]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n element.append(fragment);\r\n return element;\r\n }\r\n\r\n /**\r\n * Asynchronously fetches attachment details based on the given event object.\r\n *\r\n * @async\r\n * @param {Object} file File object\r\n * @returns {Promise} Returns a Promise that resolves to an object containing attachment details.\r\n * @returns {Object} .attachmentObj - An object containing the description and type of the attachment, as well as its ArrayBuffer.\r\n * @returns {string} .attachmentObj.description - The name of the attachment file.\r\n * @returns {string} .attachmentObj.type - The file extension of the attachment.\r\n * @returns {ArrayBuffer} .attachmentObj.arrayBuffer - The ArrayBuffer of the attachment file.\r\n * @throws {Error} Throws an error if unable to fetch attachment details.\r\n */\r\n async function getAttachmentDetails(file) {\r\n const attachmentObj = {};\r\n const attachmentFile = file;\r\n const attachmentName = attachmentFile.name;\r\n const attachmentType = attachmentFile.name.split('.').pop();\r\n\r\n attachmentObj.description = attachmentName;\r\n attachmentObj.type = attachmentType;\r\n\r\n const response = new Response(attachmentFile);\r\n const arrayBuffer = await response.arrayBuffer();\r\n\r\n // convert arrayBuffer to a base64 encoded string\r\n const bytes = new Uint8Array(arrayBuffer);\r\n const binary = Array.from(bytes).reduce((acc, byte) => {\r\n return acc + String.fromCharCode(byte);\r\n }, '');\r\n const abString = window.btoa(binary);\r\n\r\n attachmentObj.attachment = abString;\r\n\r\n return attachmentObj;\r\n }\r\n\r\n /**\r\n * Test if node is reference-free\r\n *\r\n * @function\r\n * @param {HTMLElement} node - HTML element\r\n * @returns {Boolean} - Returns whether node is reference free or not\r\n */\r\n function isReferenceFree(node) {\r\n return (document.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) === 0;\r\n }\r\n\r\n /**\r\n * Separates valid HTML attributes from options obj\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes\r\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attributes\r\n *\r\n * @function\r\n * @param {Object} options - Options object\r\n * @return {Object} - Separated options object\r\n */\r\n function separateHTMLAttribrutes(options) {\r\n const props = [\r\n 'accept',\r\n 'alt',\r\n 'autocomplete',\r\n 'checked',\r\n 'disabled',\r\n 'form',\r\n 'id',\r\n 'list',\r\n 'max',\r\n 'maxlength',\r\n 'min',\r\n 'minlength',\r\n 'multiple',\r\n 'name',\r\n 'pattern',\r\n 'placeholder',\r\n 'readonly',\r\n 'required',\r\n 'size',\r\n 'src',\r\n 'type',\r\n 'value',\r\n ];\r\n\r\n const [a, b] = Object.entries(options).reduce(\r\n ([matching, leftover], [key, value]) =>\r\n props.includes(key) || key.startsWith('data-')\r\n ? [Object.assign(matching, { [key]: value }), leftover]\r\n : [matching, Object.assign(leftover, { [key]: value })],\r\n [{}, {}],\r\n );\r\n\r\n return { ...b, attributes: { ...a } };\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function setActiveModuleAttribute(appName) {\r\n ACTIONCENTER.setAttribute('data-active-module', appName);\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function setActiveModuleSectionAttribute(sectionName) {\r\n ACTIONCENTER.setAttribute('data-active-section', sectionName);\r\n }\r\n\r\n /**\r\n * Checks if a given string contains HTML tags.\r\n *\r\n * @param {String} str - The string to be checked for HTML tags.\r\n * @returns {Boolean} - True if the string contains HTML tags, false otherwise.\r\n */\r\n function stringContainsHTML(str) {\r\n const regExp = /<[^>]*>/g;\r\n return regExp.test(str);\r\n }\r\n\r\n /**\r\n * @function\r\n */\r\n function scrollToTop() {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth',\r\n });\r\n }\r\n\r\n return {\r\n // DOM ref\r\n ACTIONCENTER,\r\n setActiveModuleAttribute,\r\n setActiveModuleSectionAttribute,\r\n // methods\r\n createElement,\r\n getAttachmentDetails,\r\n isReferenceFree,\r\n separateHTMLAttribrutes,\r\n stringContainsHTML,\r\n scrollToTop,\r\n };\r\n});\r\n","(function (global, factory) {\r\n global._UTIL = factory();\r\n})(this, function () {\r\n /**\r\n * Auto-increments the numeric suffix of an identifier string. If the provided string\r\n * does not end in a hyphen followed by a number, it appends '-1'. If it does end\r\n * with a number, the number is incremented by one.\r\n *\r\n * This function is useful for automatically generating incremented ID values in\r\n * scenarios where unique and sequential identifiers are needed.\r\n *\r\n * @param {string} str - The input string which may or may not end with a numeric suffix.\r\n * @returns {string} The input string\r\n *\r\n * @example\r\n * autoIncrementIdString('example');\r\n * //* returns 'example-1'\r\n *\r\n * @example\r\n * autoIncrementIdString('example-4');\r\n * //* returns 'example-5'\r\n */\r\n function autoIncrementId(str) {\r\n // Regular expression to match the pattern \"-number\" at the end of the string\r\n const regex = /-(\\d+)$/;\r\n\r\n // Check if the string matches the pattern\r\n const match = str.match(regex);\r\n\r\n if (match) {\r\n // If it matches, increment the number and return the string\r\n const number = parseInt(match[1], 10) + 1;\r\n return str.replace(regex, `-${number}`);\r\n } else {\r\n // If it doesn't match, append \"-1\" to the string\r\n return `${str}-1`;\r\n }\r\n }\r\n\r\n /**\r\n * Allows you to use async await with setTimeout\r\n *\r\n * @param {number} ms The number of milliseconds to delay.\r\n * @param {Function} callback The callback function to execute after the delay.\r\n * @returns {Promise} A promise that resolves after the specified delay.\r\n */\r\n function asyncSetTimeout(callback, ms) {\r\n let timeoutId;\r\n\r\n const promise = new Promise(resolve => {\r\n timeoutId = setTimeout(() => {\r\n callback();\r\n resolve();\r\n clearTimeout(timeoutId);\r\n }, ms);\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n /**\r\n * Creates an instance of AsyncQueue for managing and sending updates asynchronously.\r\n *\r\n * @constructor\r\n * @param {string} apiEndpoint - The endpoint URL where updates will be sent.\r\n * @param {number} [maxQueueSize=10] - The maximum number of updates before automatically sending them.\r\n */\r\n function AsyncQueue(apiEndpoint, maxQueueSize = 10, onSendComplete = () => {}) {\r\n this.apiEndpoint = apiEndpoint;\r\n this.maxQueueSize = maxQueueSize;\r\n this.onSendComplete = onSendComplete;\r\n\r\n this.queue = {};\r\n this.queueLength = 0;\r\n this.failedUpdates = [];\r\n this.isSending = false;\r\n }\r\n\r\n /**\r\n * Adds an update to the queue. Automatically sends updates if the queue reaches maxQueueSize.\r\n *\r\n * @param {string} inputId - The identifier for the input being updated.\r\n * @param {any} newValue - The new value for the input.\r\n */\r\n AsyncQueue.prototype.addUpdate = function (updateData) {\r\n this.queue[updateData.id] = updateData.data;\r\n this.queueLength = Object.keys(this.queue).length;\r\n\r\n if (this.queueLength >= this.maxQueueSize) {\r\n this.sendUpdates();\r\n }\r\n };\r\n\r\n /**\r\n * Sends updates from the queue to the server endpoint. Can be forced to send all updates regardless of queue size.\r\n *\r\n * @param {boolean} [force=false] - Whether to force sending of updates regardless of the current queue size.\r\n */\r\n AsyncQueue.prototype.sendUpdates = async function (forceUpdate = false) {\r\n if (this.queueLength === 0 || (this.isSending && !forceUpdate)) {\r\n this.onSendComplete([]);\r\n return;\r\n }\r\n\r\n this.isSending = true;\r\n\r\n const updatesToSend = Object.values(this.queue);\r\n this.queue = {};\r\n this.queueLength = 0;\r\n\r\n const sendPromises = updatesToSend.map(async update => {\r\n try {\r\n const response = await _UTIL.fetchData(this.apiEndpoint, update);\r\n return { success: true, data: response, update };\r\n } catch (error) {\r\n console.error('Error sending update:', update, error);\r\n this.failedUpdates.push(update);\r\n return { success: false, error: error.message, update };\r\n }\r\n });\r\n\r\n const results = await Promise.all(sendPromises);\r\n this.isSending = false;\r\n this.onSendComplete(results);\r\n };\r\n\r\n /**\r\n * Sets the callback function to be executed when sending data is complete.\r\n *\r\n * @param {Function} callback - The callback function to be called when sending is complete.\r\n * @returns {void}\r\n */\r\n AsyncQueue.prototype.setSendCompleteCallback = function (callback) {\r\n this.onSendComplete = callback;\r\n };\r\n\r\n /**\r\n * Immediately forces sending of all updates in the queue, regardless of queue size.\r\n */\r\n AsyncQueue.prototype.forceSendUpdates = async function () {\r\n if (this.queueLength > 0) {\r\n await this.sendUpdates(true);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a camelCase string to a title case string with spaces.\r\n *\r\n * @param {string} camelCaseStr - The camelCase string to be converted.\r\n * @returns {string} The converted string in title case with spaces.\r\n *\r\n * @example\r\n * // returns 'Hello There World'\r\n * convertCamelCaseToTitle('helloThereWorld');\r\n */\r\n function convertCamelCaseToTitle(camelCaseStr) {\r\n // Add a space before each uppercase letter and trim the result\r\n let spacedStr = camelCaseStr.replace(/([A-Z])/g, ' $1').trim();\r\n\r\n // Capitalize the first letter and concatenate with the rest of the string\r\n return spacedStr.charAt(0).toUpperCase() + spacedStr.slice(1);\r\n }\r\n\r\n function connectionWatch() {\r\n if ($.session.watchingConnection) return;\r\n\r\n const statusPopup = new Dialog({ className: 'connectionWatchStatusPopup' });\r\n const statusMessage = _DOM.createElement('p');\r\n statusPopup.dialog.appendChild(statusMessage);\r\n statusPopup.renderTo(document.body);\r\n\r\n window.addEventListener('offline', event => {\r\n statusMessage.innerText = 'The network connection has been lost.';\r\n statusPopup.show();\r\n });\r\n\r\n window.addEventListener('online', event => {\r\n statusMessage.innerText = 'You are now connected to the network.';\r\n setTimeout(() => {\r\n statusPopup.close();\r\n }, 3000)\r\n });\r\n\r\n console.clear();\r\n console.log('connection watch enabled');\r\n $.session.watchingConnection = true;\r\n }\r\n\r\n /**\r\n * Debounces a function, ensuring that it's not called until after the specified\r\n * amount of time has passed since the last time it was invoked.\r\n *\r\n * @function\r\n * @param {Function} func - The function to debounce.\r\n * @param {Number} wait - The number of milliseconds to delay the function\r\n * @returns {Function} - Returns the debounced version of the provided function\r\n */\r\n function debounce(func, wait) {\r\n let timeout;\r\n\r\n return function executedFunction(...args) {\r\n const context = this;\r\n\r\n const later = function () {\r\n timeout = null;\r\n func.apply(context, args);\r\n };\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n }\r\n\r\n /**\r\n * Ajax call using native Fetch API\r\n *\r\n * @function\r\n * @param {String} service\r\n * @param {Object} [retrieveData]\r\n * @returns {Object}\r\n */\r\n async function fetchData(service, retrieveData) {\r\n const URL_BASE = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}`;\r\n const URL = `${URL_BASE}/${service}/`;\r\n\r\n try {\r\n let response = await fetch(URL, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({ token: $.session.Token, ...retrieveData }),\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error('Issue with network, response was not OK');\r\n }\r\n\r\n let data = await response.json();\r\n\r\n return data;\r\n } catch (error) {\r\n console.log(`There was a problem with ${service}`, error.message);\r\n throw error;\r\n }\r\n }\r\n\r\n function getDeviceType() {\r\n const ua = navigator.userAgent;\r\n\r\n // Patterns to detect mobile and tablet devices\r\n const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(ua);\r\n const isTablet = /iPad|Android/i.test(ua) && !/Mobile/i.test(ua);\r\n\r\n if (isMobile) {\r\n return isTablet ? 'TABLET' : 'MOBILE';\r\n } else {\r\n return 'DESKTOP';\r\n }\r\n }\r\n\r\n /**\r\n * Provides methods to interact with the browser's localStorage.\r\n * It allows you to get and set values while handling JSON serialization and deserialization automatically.\r\n *\r\n * @namespace localStorageHandler\r\n */\r\n const localStorageHandler = {\r\n /**\r\n * Retrieves a value from local storage\r\n *\r\n * @function\r\n * @memberof localStorageHandler\r\n * @param {String} key\r\n * @returns {Any|Null}\r\n */\r\n get(key) {\r\n try {\r\n // storedValue = {storage_key1:storage_value,storage_key2:value}\r\n const storedValue = localStorage.getItem(`anywstate_${$.session.UserId}`);\r\n if (storedValue) {\r\n try {\r\n const state = JSON.parse(storedValue);\r\n return state ? state[key] : null;\r\n } catch (error) {\r\n return storedValue;\r\n }\r\n }\r\n\r\n return null;\r\n } catch (error) {\r\n console.log('An error occurred when getting the value from local storage', error);\r\n }\r\n },\r\n /**\r\n * Sets a value to local storage\r\n *\r\n * @function\r\n * @memberof localStorageHandler\r\n * @param {String} key\r\n * @param {Any} value\r\n */\r\n set(key, value) {\r\n try {\r\n if (typeof value === 'object') {\r\n value = JSON.parse(value);\r\n }\r\n\r\n // get current ls value\r\n const storedValue = localStorage.getItem(`anywstate_${$.session.UserId}`);\r\n if (!storedValue) {\r\n storedValue = {};\r\n }\r\n // set new key/value pair\r\n storedValue[key] = value;\r\n\r\n // update with new value\r\n const updatedValue = JSON.stringify(storedValue);\r\n localStorage.setItem(`anywstate_${$.session.UserId}`, updatedValue);\r\n } catch (error) {\r\n console.log('An error occurred when setting the value to local storage', error);\r\n }\r\n },\r\n };\r\n\r\n /**\r\n * Merge two objects together, baseObject and mergeObject share same prop names they will be overridden\r\n * inside the baseObject.\r\n *\r\n * @function\r\n * @param {Object} baseObject\r\n * @param {Object} mergeObject\r\n * @return {Object} - Merged options object\r\n */\r\n function mergeObjects(baseObject, mergeObject) {\r\n return Object.assign({}, baseObject, mergeObject);\r\n }\r\n\r\n /**\r\n * Pads a number with a leading zero if it is less than 10.\r\n *\r\n * @param {number} number - The number to pad.\r\n * @return {string} - The padded number as a string.\r\n */\r\n function padNumberWithZero(number) {\r\n return number < 10 ? '0' + number : number.toString();\r\n }\r\n\r\n /**\r\n * Removes and replaces certain characters that can't be saved into the DB.\r\n * @param {string} note Text that needs to be converted to a format that will save in the DB.\r\n * @returns {string} Returns the note that can now be saved into the DB.\r\n */\r\n function removeUnsavableNoteText(note) {\r\n if (note == null) return null;\r\n if (note === '') return '';\r\n\r\n // Remove backslashes\r\n if (note.indexOf('\\\\') != -1) {\r\n note = note.replace(/\\\\/g, '');\r\n }\r\n\r\n // Replace double quotes with the same double quotes (seems unnecessary but kept for intent)\r\n if (note.indexOf('\"') != -1) {\r\n note = note.replace(/\\\"/g, '\"');\r\n }\r\n\r\n // Escape single quotes\r\n if (note.indexOf(\"'\") != -1) {\r\n note = note.replace(/'/g, \"''\");\r\n }\r\n\r\n // Remove special tab characters and actual tab characters\r\n note = note.replace(/ |\\t/g, '');\r\n\r\n return note;\r\n }\r\n\r\n /**\r\n * Sorts an Array of Objects by given property, currently property must be a string\r\n *\r\n * @function\r\n * @param {String} sortProp\r\n * @return {Function} - sort comparator function\r\n */\r\n function sortByProperty(sortProp) {\r\n return function (a, b) {\r\n const aValue = a[sortProp] || '';\r\n const bValue = b[sortProp] || '';\r\n\r\n // srings only\r\n return aValue.localeCompare(bValue);\r\n };\r\n }\r\n\r\n /**\r\n * Separate props and methods from obj\r\n *\r\n * @function\r\n * @param {Object} dirtyObj - Object to split\r\n * @param {Array} props - Object props to isolate\r\n * @return {Object} - Separated options object\r\n */\r\n function splitObjectByPropNames(dirtyObj, props) {\r\n const [a, b] = Object.entries(dirtyObj).reduce(\r\n ([matching, leftover], [key, value]) =>\r\n props.includes(key)\r\n ? [Object.assign(matching, { [key]: value }), leftover]\r\n : [matching, Object.assign(leftover, { [key]: value })],\r\n [{}, {}],\r\n );\r\n\r\n return [{ ...a }, { ...b }];\r\n }\r\n\r\n /**\r\n * Truncates a filename to a specified maximum length by removing characters from the middle.\r\n * Appends an ellipsis ('...') to indicate truncation.\r\n *\r\n * @function\r\n * @param {string} filename - The original filename to truncate.\r\n * @param {number} [maxLength=20] - The maximum length for the truncated filename. Default is 20.\r\n *\r\n * @returns {string} The truncated filename with an ellipsis in the middle.\r\n *\r\n * @example\r\n * const original = 'reallyLongfilename.png';\r\n * const truncated = truncateFilename(original, 15);\r\n */\r\n function truncateFilename(filename, maxLength = 20) {\r\n const fileExtension = filename.split('.').pop();\r\n\r\n // 3 characters are reserved for \"...\"\r\n const maxMainLength = maxLength - fileExtension.length - 3;\r\n\r\n if (filename.length > maxLength) {\r\n const firstPartLength = Math.floor(maxMainLength / 2);\r\n const secondPartLength = maxMainLength - firstPartLength;\r\n\r\n // Extract the first and last portions of the main part of the filename\r\n const firstPart = filename.substring(0, firstPartLength);\r\n const secondPart = filename.substring(\r\n filename.length - fileExtension.length - secondPartLength,\r\n filename.length - fileExtension.length,\r\n );\r\n\r\n return `${firstPart}...${secondPart}${fileExtension}`;\r\n }\r\n\r\n return filename;\r\n }\r\n\r\n /**\r\n * Watchs for the value of given variable to change\r\n *\r\n * @namespace watchVariable\r\n */\r\n function watchVariable(initialValue, callback) {\r\n let value = initialValue;\r\n\r\n return {\r\n getValue() {\r\n return value;\r\n },\r\n setValue(newValue) {\r\n if (value !== newValue) {\r\n callback(value, newValue);\r\n }\r\n value = newValue;\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Validates the file type based on the provided regular expression pattern.\r\n *\r\n * @param {Event} event - The Event object, commonly from an input element of type 'file'.\r\n * @param {RegExp} forbiddenTypesPattern - The regular expression pattern to match forbidden file types.\r\n * @returns {boolean} Returns true if the file type is valid, false otherwise.\r\n */\r\n function validateFileType(event, forbiddenTypesPattern) {\r\n const fileType = event.target.files[0]?.type;\r\n\r\n if (!fileType) {\r\n console.warn('No file selected.');\r\n return false;\r\n }\r\n\r\n if (forbiddenTypesPattern.test(fileType)) {\r\n alert('This application currently does not accept the selected file type.');\r\n event.target.value = '';\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n return {\r\n autoIncrementId,\r\n asyncSetTimeout,\r\n AsyncQueue,\r\n connectionWatch,\r\n convertCamelCaseToTitle,\r\n debounce,\r\n getDeviceType,\r\n fetchData,\r\n localStorageHandler,\r\n mergeObjects,\r\n padNumberWithZero,\r\n removeUnsavableNoteText,\r\n sortByProperty,\r\n splitObjectByPropNames,\r\n truncateFilename,\r\n watchVariable,\r\n validateFileType,\r\n };\r\n});\r\n","const 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","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 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 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","var CN_ProductivityWidget = (function() {\r\n let cnProductivityChart\r\n let groupNotes = {}\r\n let timeObj = {}\r\n let widgetSettings\r\n let daysBackWidgetSetting\r\n\r\n function getDates() {\r\n let dateArr = []\r\n\r\n for (let i = 0; i <= (daysBackWidgetSetting - 1); i++ ) {\r\n const date = new Date()\r\n date.setDate(date.getDate() - i);\r\n dateArr.push(`${(date.getMonth() + 1)}/${date.getDate()}/${date.getFullYear()}`)\r\n }\r\n return dateArr\r\n }\r\n\r\n function addChartData(chart, label, data) {\r\n chart.data.labels.push(label);\r\n chart.data.datasets.forEach((dataset) => {\r\n dataset.data.push(data);\r\n });\r\n chart.update();\r\n }\r\n\r\n async function getData() {\r\n daysBackWidgetSetting = widgetSettings.widgetConfig.daysBack\r\n const response = (await CN_ProductivityWidgetAjax.getCaseNoteProductivity(daysBackWidgetSetting)).getDashboardCaseNoteProductivityResult;\r\n preBuildDataObj()\r\n response.forEach(note => {\r\n const serviceDate = note.Service_Date.split(\" \")[0]\r\n const originalEnteredDate = note.Original_Update.split(\" \")[0]\r\n if (note.Case_Note_Group_ID !== \"\") {\r\n groupNotes[note.Case_Note_Group_ID] = note\r\n return;\r\n }\r\n // If the service date is outside of days back, but entered date is note, and it has doc time, \r\n // ONLY calculate doc time.\r\n if (!timeObj[serviceDate] && timeObj[originalEnteredDate]) {\r\n calculateDocTime(note, originalEnteredDate)\r\n return\r\n }\r\n timeObj[serviceDate].noteTime += parseInt(note.diffMinutes);\r\n if (note.Travel_Time !== \"\") {\r\n timeObj[serviceDate].travelTime += parseInt(note.Travel_Time);\r\n }\r\n // NOTE: Doc Time calculation goes towards Original Update date, NOT service date\r\n if (note.Total_Doc_Time !== \"\" && timeObj[originalEnteredDate]) {\r\n calculateDocTime(note, originalEnteredDate)\r\n }\r\n })\r\n if(Object.keys(groupNotes).length > 0) {\r\n Object.keys(groupNotes).forEach(noteID => {\r\n const serviceDate = groupNotes[noteID].Service_Date.split(\" \")[0]\r\n const originalEnteredDate = groupNotes[noteID].Original_Update.split(\" \")[0]\r\n // If the service date is outside of days back, but entered date is note, and it has doc time, \r\n // ONLY calculate doc time.\r\n if ((!timeObj[serviceDate] && timeObj[originalEnteredDate]) && groupNotes[noteID].Total_Doc_Time !== \"\") {\r\n timeObj[originalEnteredDate].docTime += Math.round(Math.floor(groupNotes[noteID].Total_Doc_Time/30) / 2)\r\n return\r\n }\r\n timeObj[serviceDate].noteTime += parseInt(groupNotes[noteID].diffMinutes);\r\n if (groupNotes[noteID].Travel_Time !== \"\") {\r\n timeObj[serviceDate].travelTime += parseInt(groupNotes[noteID].Travel_Time);\r\n }\r\n // NOTE: Doc Time calculation goes towards Original Update date, NOT service date\r\n if (groupNotes[noteID].Total_Doc_Time !== \"\" && timeObj[originalEnteredDate]) {\r\n timeObj[originalEnteredDate].docTime += Math.round(Math.floor(groupNotes[noteID].Total_Doc_Time/30) / 2)\r\n }\r\n })\r\n }\r\n initChart()\r\n }\r\n /** \r\n * Calculates Documentation time for time table\r\n * @param {object} caseNoteData - Note data from getCaseNoteProductivity AJAX call\r\n * @param {string} orgDate - date ISO format of the original entered date of the case note\r\n */\r\n function calculateDocTime(caseNoteData, orgDate) {\r\n if (caseNoteData.Total_Doc_Time === \"\") return\r\n timeObj[orgDate].docTime += Math.round(Math.floor(caseNoteData.Total_Doc_Time/30) / 2)\r\n }\r\n\r\n function preBuildDataObj() {\r\n let dateArr = getDates();\r\n dateArr.forEach(date => {\r\n timeObj[date] = {noteTime: 0, travelTime: 0, docTime: 0}\r\n }) \r\n }\r\n\r\n function calculateBackgroundColor(productivityPercentage) {\r\n const productivityThreshold = widgetSettings.widgetConfig.productivityThreshold\r\n let colors\r\n //first element of color array is Note Time, second is travel, third is doc\r\n if (productivityPercentage < productivityThreshold) { \r\n //Red Bars\r\n colors = [\r\n \"rgba(219, 22, 47, .8)\",\r\n \"rgba(219, 22, 47, .5)\",\r\n \"rgba(219, 22, 47, .2)\",\r\n ]\r\n } else {\r\n //Green Bars\r\n colors = [\r\n \"rgba(129, 185, 65, .8)\",\r\n \"rgba(129, 185, 65, .5)\",\r\n \"rgba(129, 185, 65, .2)\",\r\n ]\r\n }\r\n return colors\r\n }\r\n\r\n function reconfigureDataForChart(workHoursPerDay = 7) {\r\n const minForProductivity = 60 * widgetSettings.widgetConfig.workHoursPerDay;\r\n let noteTimeDataset = {label: 'Note Time (%)', data:[], backgroundColor: [], order: 0}\r\n let travelTimeDataset = {label: 'Travel Time (%)', data:[], backgroundColor: [], order: 1}\r\n let docTimeDataset = {label: 'Documentation Time (%)', data:[], backgroundColor: [], order: 2}\r\n Object.keys(timeObj).forEach(date => {\r\n let totalTime = timeObj[date].noteTime + timeObj[date].travelTime + timeObj[date].docTime\r\n let productivityPercentage = Math.round((totalTime/minForProductivity) * 100)\r\n let colorArr = calculateBackgroundColor(productivityPercentage);\r\n noteTimeDataset.backgroundColor.push(colorArr[0])\r\n travelTimeDataset.backgroundColor.push(colorArr[1])\r\n docTimeDataset.backgroundColor.push(colorArr[2])\r\n noteTimeDataset.data.push(Math.round((timeObj[date].noteTime/minForProductivity) * 100))\r\n travelTimeDataset.data.push(Math.round((timeObj[date].travelTime/minForProductivity) * 100))\r\n docTimeDataset.data.push(Math.round((timeObj[date].docTime/minForProductivity) * 100))\r\n })\r\n return [noteTimeDataset, travelTimeDataset, docTimeDataset]\r\n }\r\n\r\n\r\n function initChart() {\r\n const widgetBody = document.getElementById('cn_productivity');\r\n const canvas = document.createElement('canvas');\r\n canvas.width = 290;\r\n canvas.height = 230;\r\n widgetBody.appendChild(canvas)\r\n\r\n const options = {\r\n scales: {\r\n yAxes: [{\r\n stacked: true,\r\n ticks: {\r\n beginAtZero: true \r\n }\r\n }],\r\n xAxes: [{\r\n stacked:true,\r\n ticks: {\r\n beginAtZero: true,\r\n min: 0,\r\n max: 100,\r\n stepSixe: 10,\r\n precision: 10,\r\n callback: function (value) {\r\n return value + '%';\r\n } \r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Percentage'\r\n }\r\n }]\r\n },\r\n legend: {\r\n display: false,\r\n }\r\n }\r\n \r\n cnProductivityChart = new Chart(canvas, {\r\n type: 'horizontalBar',\r\n data: {\r\n labels: getDates(),\r\n datasets: reconfigureDataForChart()\r\n },\r\n options: options,\r\n })\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n productivityThreshold: 60,\r\n daysBack: 7,\r\n workHoursPerDay: 7\r\n }\r\n widgetSettingsAjax.setWidgetSettingConfig(1, JSON.stringify(widgetSettings.widgetConfig), widgetSettings.showHide)\r\n }\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('1')\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull()\r\n getData()\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\n\r\nconst CN_ProductivityWidgetAjax = (function() {\r\n function getCaseNoteProductivity(daysBack = 7) {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getDashboardCaseNoteProductivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivity\r\n };\r\n})();\r\n","var CN_RejectedWidget = (function() {\r\n let cnProductivityChart\r\n let groupNotes = {}\r\n let timeObj = {}\r\n let rejectedNotes\r\n let widgetSettings\r\n let daysBack;\r\n let groups;\r\n let strgroupids;\r\n let objgroups = [];\r\n let groupids = [];\r\n\r\n function getRejectedData(cb) {\r\n // const response = (await CN_RejectedWidgetAjax.getCaseNotesRejected()).getDashboardCaseNotesRejectedResult;\r\n daysBack = widgetSettings.widgetConfig.daysBack; \r\n CN_RejectedWidgetAjax.getCaseNotesRejected(daysBack, res => {\r\n rejectedNotes = res.map(consumer => {\r\n const consumerObj = {\r\n caseNoteId: consumer.Case_Note_ID,\r\n personId: consumer.ID,\r\n cnGroupId: consumer.Case_Note_Group_ID,\r\n firstName: consumer.first_Name,\r\n lastName: consumer.Last_Name,\r\n serviceDate: consumer.Service_Date,\r\n serviceCode: consumer.Service_Code,\r\n endTime: consumer.End_Time,\r\n startTime: consumer.Start_Time,\r\n lastUpdate: consumer.Last_Update\r\n };\r\n return consumerObj;\r\n });\r\n getRejectedcnGroups();\r\n cb();\r\n });\r\n }\r\n \r\n function getRejectedcnGroups() { \r\n groups = {}\r\n\r\n if (getGroupsIds()) {\r\n\r\n strgroupids = groupids.map(g => g ).join(\",\");\r\n \r\n CN_RejectedWidgetAjax.getGroupCaseNotes(strgroupids, res => {\r\n objgroupids = res.map(grpconsumer => {\r\n const grpconsumerObj = {\r\n caseNoteId: grpconsumer.Case_Note_ID,\r\n personId: grpconsumer.ID,\r\n cnGroupId: grpconsumer.Case_Note_Group_ID,\r\n firstName: grpconsumer.first_Name,\r\n lastName: grpconsumer.Last_Name,\r\n serviceDate: grpconsumer.Service_Date,\r\n serviceCode: grpconsumer.Service_Code,\r\n endTime: grpconsumer.End_Time,\r\n startTime: grpconsumer.Start_Time,\r\n lastUpdate: grpconsumer.Last_Update\r\n };\r\n objgroups.push(grpconsumerObj);\r\n return grpconsumerObj;\r\n });\r\n objgroups.forEach(fn => {\r\n if (fn.cnGroupId !== '') {// \r\n // groupids.push(fn.cnGroupId);\r\n var consumerId = fn.personId;\r\n var name = `${fn.lastName}, ${fn.firstName}`;\r\n if (!groups[fn.cnGroupId]) {\r\n groups[fn.cnGroupId] = {[consumerId]: name}\r\n }\r\n groups[fn.cnGroupId][consumerId] = name;\r\n }\r\n })\r\n });\r\n }\r\n }\r\n\r\n function getGroupsIds() { \r\n rejectedNotes.forEach(fn => {\r\n if (fn.cnGroupId !== '' && groupids.indexOf(fn.cnGroupId) === -1) {\r\n groupids.push(fn.cnGroupId); \r\n }\r\n })\r\n if (groupids.length > 0) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n function populateRejectedWidget() {\r\n const widget = document.getElementById(\"casenotesrejected\");\r\n if (!widget) return;\r\n const widgetBody = widget.querySelector(\".widget__body\");\r\n // if (rejectedNotes.length === 0) {\r\n if (rejectedNotes.length === 0) {\r\n widgetBody.innerHTML = `\r\n There are no rejected case notes during the past ${daysBack} days.\r\n \r\n `\r\n return\r\n }\r\n \r\n const tableOptions = {\r\n plain: true,\r\n columnHeadings: [\"Consumer\", \"Serv Date\", \"Code\", \"Start\", \"End\", \"Update\" ],\r\n tableId: \"rejectedWidgetTable\"\r\n };\r\n const rejectedTable = table.build(tableOptions);\r\n \r\n widgetBody.innerHTML = \"\";\r\n widgetBody.appendChild(rejectedTable);\r\n const tableData = rejectedNotes.map(consumer => {\r\n const name = `${consumer.lastName}, ${consumer.firstName}`;\r\n // const dateString = consumer.lastNoteDate.split(\" \")[0] === \"\" ? \"00/00/0000\" : consumer.lastNoteDate.split(\" \")[0];\r\n \r\n const caseNoteId = consumer.caseNoteId;\r\n const serviceDate = consumer.serviceDate.split(\" \")[0];\r\n const serviceCode = `${consumer.serviceCode}`;\r\n const tmpstartTime = consumer.startTime.split(\":\");\r\n const startTime = tmpstartTime.slice(0,-1).join(\":\");\r\n const frmtStartTime = UTIL.convertFromMilitary(startTime);\r\n const tmpendTime = consumer.endTime.split(\":\");\r\n const endTime = tmpendTime.slice(0,-1).join(\":\");\r\n const frmtEndTime = UTIL.convertFromMilitary(endTime);\r\n\r\n const updateDate = consumer.lastUpdate.split(\" \")[0];\r\n \r\n return {\r\n values: [name, serviceDate, serviceCode, frmtStartTime, frmtEndTime, updateDate],\r\n id: consumer.caseNoteId,\r\n onClick: () => {\r\n DOM.clearActionCenter();\r\n caseNotesAjax.getCaseNoteEdit(caseNoteId, function(results) {\r\n setActiveModuleAttribute('casenotes')\r\n note.init('review', results, groups);\r\n }); \r\n }\r\n };\r\n });\r\n table.populate(rejectedTable, tableData);\r\n\r\n // window.setTimeout(newNote.checkMicError, 3000);\r\n }\r\n \r\n // function getCaseNote(caseNoteId) {\r\n // var test = caseNotesAjax.getCaseNoteEdit(caseNoteId, function(results) {\r\n // note.init('review', results, groups);\r\n // });\r\n // rowPopup(test);\r\n // }\r\n\r\n // function rowPopup(test) {\r\n // const popup = POPUP.build({\r\n // header: nameStr,\r\n // id: \"caseNotePopup\"\r\n // });\r\n // popup.appendChild(test)\r\n\r\n // POPUP.show(popup);\r\n // }\r\n\r\n // function getDaysBackDate(daysBack) {\r\n // const daysBackDate = new Date();\r\n // daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n // return daysBackDate;\r\n // }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n daysBack: 60 \r\n }\r\n widgetSettingsAjax.setWidgetSettingConfig(3, JSON.stringify(widgetSettings.widgetConfig), widgetSettings.showHide)\r\n }\r\n\r\n function cleanSettings() {\r\n daysBack = widgetSettings.widgetConfig.daysBack;\r\n \r\n }\r\n\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('3')\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull()\r\n cleanSettings();\r\n // daysBackDate = getDaysBackDate(daysBack);\r\n getRejectedData(populateRejectedWidget);\r\n \r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const CN_RejectedWidgetAjax = (function() {\r\n\r\n function getCaseNotesRejected(daysBack, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDashboardCaseNotesRejected/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"daysBack\":\"' + daysBack + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\t// var res = JSON.stringify(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\t\tcallback(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t\t},\r\n\t\t});\r\n }\r\n \r\n function getGroupCaseNotes(groupNoteIds, callback) {\r\n\t$.ajax({\r\n\t\ttype: 'POST',\r\n\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getDashboardGroupCaseNoteConsumerNames/',\r\n\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"groupNoteIds\":\"' + groupNoteIds + '\"}',\r\n\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\tdataType: 'json',\r\n\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t// var res = JSON.stringify(response.getDashboardCaseNotesRejectedResult);\r\n\t\t\tcallback(response.getDashboardGroupCaseNoteConsumerNamesResult);\r\n\t\t},\r\n\t\terror: function(xhr, status, error) {\r\n\t\t\t//alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n\t\t},\r\n\t});\r\n}\r\n\r\n\r\n return {\r\n\t getCaseNotesRejected,\r\n\t getGroupCaseNotes\r\n };\r\n})();","//Widget id = 2\r\nconst CN_CaseLoadWidget = (function () {\r\n //Data\r\n let caseLoad, widgetSettings, demographicInfo;\r\n let consumerName;\r\n var widget;\r\n var widgetBody;\r\n let consumerCountlbl;\r\n let currentRowConsumerId;\r\n // Settings\r\n let viewNotesDaysBack, lastNoteEnteredDaysBack, viewEnteredByOtherUsers;\r\n // dates\r\n let lastNoteEnteredDaysBackDate;\r\n\r\n function showSendReportPopup() {\r\n const emailData = {\r\n to: '',\r\n cc: '',\r\n bcc: '',\r\n subject: '',\r\n body: '',\r\n };\r\n const sendReportPopup = POPUP.build({\r\n id: 'myCaseLoadSendReportPopup',\r\n header: 'Email Report',\r\n });\r\n\r\n const emailTo = input.build({\r\n type: 'email',\r\n label: 'Email To Addresses:',\r\n callback: e => {\r\n emailData.to = e.target.value;\r\n },\r\n });\r\n const emailCC = input.build({\r\n type: 'email',\r\n label: 'Email Cc Addresses:',\r\n callback: e => {\r\n emailData.cc = e.target.value;\r\n },\r\n });\r\n const emailBCC = input.build({\r\n type: 'email',\r\n label: 'Email Bcc Addresses:',\r\n callback: e => {\r\n emailData.bcc = e.target.value;\r\n },\r\n });\r\n const emailSubject = input.build({\r\n type: 'text',\r\n label: 'Email Subject:',\r\n callback: e => {\r\n emailData.subject = e.target.value;\r\n },\r\n });\r\n const emailBody = input.build({\r\n type: 'text',\r\n label: 'Email Body:',\r\n callback: e => {\r\n emailData.body = e.target.value;\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendReportPopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'CANCEL',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(sendReportPopup);\r\n showReportPopup();\r\n },\r\n });\r\n btnWrap.appendChild(okBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n sendReportPopup.appendChild(emailTo);\r\n sendReportPopup.appendChild(emailCC);\r\n sendReportPopup.appendChild(emailBCC);\r\n sendReportPopup.appendChild(emailSubject);\r\n sendReportPopup.appendChild(emailBody);\r\n sendReportPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(sendReportPopup);\r\n }\r\n function showReportDownloadPopup() {\r\n const createReportPopup = POPUP.build({\r\n id: 'myCaseLoadCreateReportPopup',\r\n });\r\n const message = document.createElement('div');\r\n message.innerText =\r\n 'Your report is beig generated and will be downloaded when finished, in the meantime you may continue to work.';\r\n const okBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(createReportPopup);\r\n },\r\n });\r\n createReportPopup.appendChild(message);\r\n createReportPopup.appendChild(okBtn);\r\n }\r\n function showReportPopup() {\r\n quickPrintPopup = POPUP.build({\r\n id: 'myCaseLoadReportPopup',\r\n });\r\n\r\n const createReportBtn = button.build({\r\n text: 'Create Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(quickPrintPopup);\r\n showReportDownloadPopup();\r\n },\r\n });\r\n const sendReportBtn = button.build({\r\n text: 'Send Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(quickPrintPopup);\r\n showSendReportPopup();\r\n },\r\n });\r\n\r\n quickPrintPopup.appendChild(createReportBtn);\r\n quickPrintPopup.appendChild(sendReportBtn);\r\n\r\n POPUP.show(quickPrintPopup);\r\n }\r\n\r\n function displayConsumerCount(caseLoad) {\r\n if (caseLoad && caseLoad.length !== 0) {\r\n consumerCountlbl = document.createElement('div');\r\n consumerCountlbl.innerHTML = `
    \r\n

    Consumer Count: ${caseLoad.length}

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

    Address

    \r\n

    ${address1}

    \r\n

    ${address2}

    \r\n

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

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

    Contact Info

    \r\n

    Primary: ${pPhone}

    \r\n

    Secondary: ${sPhone}

    `;\r\n popup.appendChild(contactInfoBlock);\r\n\r\n // new case note button\r\n const newNoteBtn = button.build({\r\n text: 'New Case Note',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: !$.session.CaseNotesUpdate ? ['newNoteBtn', 'disabled'] : ['newNoteBtn'],\r\n callback: () => {\r\n // Need to finish new note button once new roster is done\r\n POPUP.hide(popup);\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('caseNotes-new');\r\n UTIL.toggleMenuItemHighlight('casenotes');\r\n actioncenter.dataset.activeModule = 'casenotes';\r\n CaseNotes.init(true);\r\n },\r\n });\r\n\r\n // review case notes\r\n const reviewNotesBtn = button.build({\r\n text: 'Review Notes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('caseNotes-overview');\r\n UTIL.toggleMenuItemHighlight('casenotes');\r\n actioncenter.dataset.activeModule = 'casenotes';\r\n notesOverview.dashHandeler(\r\n viewNotesDaysBack,\r\n consumerId,\r\n viewEnteredByOtherUsers,\r\n consumerName,\r\n );\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(newNoteBtn);\r\n btnWrap.appendChild(reviewNotesBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function getCaseLoadData(cb) {\r\n caseNotesAjax.getCaseLoadRestriction(res => {\r\n caseLoad = res.map(consumer => {\r\n const consumerObj = {\r\n id: consumer.id,\r\n firstName: consumer.FN,\r\n lastName: consumer.LN,\r\n lastNoteDate: consumer.last_note_datetime,\r\n residentNumber: consumer.residentNumber,\r\n };\r\n return consumerObj;\r\n });\r\n cb();\r\n });\r\n }\r\n\r\n function getConsumerDemographics(consumerId) {\r\n rosterAjax.getConsumerDemographics(consumerId, res => {\r\n demographicInfo = res[0];\r\n rowPopup(consumerId);\r\n });\r\n }\r\n\r\n function getCurrentlyselectedConsumerId() {\r\n return currentRowConsumerId;\r\n }\r\n\r\n function setDefaultIfConfigNull() {\r\n widgetSettings.widgetConfig = {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n };\r\n widgetSettingsAjax.setWidgetSettingConfig(\r\n 2,\r\n JSON.stringify(widgetSettings.widgetConfig),\r\n widgetSettings.showHide,\r\n );\r\n }\r\n\r\n function getDaysBackDate(daysBack) {\r\n const daysBackDate = new Date();\r\n daysBackDate.setDate(daysBackDate.getDate() - daysBack);\r\n return daysBackDate;\r\n }\r\n\r\n function cleanSettings() {\r\n viewNotesDaysBack = widgetSettings.widgetConfig.viewNotesDaysBack;\r\n lastNoteEnteredDaysBack = widgetSettings.widgetConfig.lastNoteEnteredDaysBack;\r\n viewEnteredByOtherUsers =\r\n widgetSettings.widgetConfig.viewEnteredByOtherUsers === 'N' ? false : true;\r\n }\r\n\r\n function init() {\r\n widgetSettings = dashboard.getWidgetSettings('2');\r\n if (widgetSettings.widgetConfig === null) setDefaultIfConfigNull();\r\n cleanSettings();\r\n lastNoteEnteredDaysBackDate = getDaysBackDate(lastNoteEnteredDaysBack);\r\n getCaseLoadData(populateCaseLoadWidget);\r\n\r\n widget = document.getElementById('casenotescaseload');\r\n widgetBody = widget.querySelector('.widget__body');\r\n dashboard.appendPDFButton('casenotescaseload', 'caseloadPDFBtn');\r\n displayConsumerCount();\r\n }\r\n\r\n return {\r\n init,\r\n getCurrentlyselectedConsumerId\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\n\r\nconst CN_CaseLoadWidgetAjax = (function() {\r\n function getCaseNoteProductivity(daysBack = 7) {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/getDashboardCaseNoteProductivity/',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivity\r\n };\r\n})();\r\n","var consumerFinancesWidget = (function () {\r\n // cached data\r\n var cfWidgetLocationId;\r\n var cfWidgetLocationName;\r\n var cfWidgetConsumerName;\r\n var cfWidgetSortOrderId;\r\n var cfWidgetSortOrderName;\r\n // DOM\r\n //-----------------------\r\n var widget;\r\n var widgetBody;\r\n var filterPopup;\r\n var locationDropdown;\r\n var consumerDropdown;\r\n var sortOrderDropdown;\r\n var applyFiltersBtn;\r\n var cancelFilterBtn;\r\n\r\n function buildFilterPopup() {\r\n var widgetFilter = widget.querySelector('.widget__filters');\r\n if (widgetFilter) return;\r\n\r\n filterPopup = dashboard.buildFilterPopup();\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetLocations',\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetConsumer',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n sortOrderDropdown = dropdown.build({\r\n dropdownId: 'consumerFinancesWidgetSortOrder',\r\n label: 'Sort Order',\r\n style: 'secondary',\r\n readonly: false\r\n });\r\n applyFiltersBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n cancelFilterBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyFiltersBtn);\r\n btnWrap.appendChild(cancelFilterBtn);\r\n\r\n filterPopup.appendChild(consumerDropdown);\r\n filterPopup.appendChild(locationDropdown);\r\n filterPopup.appendChild(sortOrderDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n widget.insertBefore(filterPopup, widgetBody);\r\n }\r\n function eventSetup() {\r\n var tempCFWidgetLocationName;\r\n var tempCFWidgetConsumerName;\r\n var tempCFWidgetSortOrderName;\r\n\r\n\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetLocationName = selectedOption.value;\r\n // cfWidgetLocationName = selectedOption.value;\r\n });\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetConsumerName = selectedOption.value;\r\n // cfWidgetConsumerName = selectedOption.value;\r\n });\r\n sortOrderDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tempCFWidgetSortOrderName = selectedOption.value;\r\n // cfWidgetSortOrderName = selectedOption.value;\r\n });\r\n applyFiltersBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n\r\n updateFilterData({\r\n tempCFWidgetLocationName,\r\n tempCFWidgetConsumerName,\r\n tempCFWidgetSortOrderName\r\n });\r\n\r\n //Loading\r\n widgetBody.innerHTML = '';\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(widgetBody, \"Loading\");\r\n\r\n ConsumerFinancesWidgetAjax.getConsumerFinanceWidgetEntriesDataAjax({\r\n token: $.session.Token,\r\n consumerName: cfWidgetConsumerName,\r\n locationName: cfWidgetLocationName,\r\n sortOrderName: cfWidgetSortOrderName\r\n }, populateConsumerFinanceResults);\r\n });\r\n cancelFilterBtn.addEventListener('click', event => {\r\n filterPopup.classList.remove('visible');\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(filterPopup);\r\n });\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tempCFWidgetLocationName) cfWidgetLocationName = data.tempCFWidgetLocationName;\r\n if (data.tempCFWidgetConsumerName) cfWidgetConsumerName = data.tempCFWidgetConsumerName;\r\n if (data.tempCFWidgetSortOrderName) cfWidgetSortOrderName = data.tempCFWidgetSortOrderName;\r\n }\r\n\r\n function populateCFWidgetLocations(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.Name,\r\n text: r.Name\r\n }\r\n });\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('consumerFinancesWidgetLocations', data, cfWidgetLocationId);\r\n }\r\n function populateCFWidgetConsumers(results) {\r\n var data = results.map(r => {\r\n return {\r\n id: r.ID,\r\n value: r.FullName,\r\n text: r.FullName \r\n }\r\n });\r\n data.unshift({ id: null, value: '%', text: 'ALL' });\r\n dropdown.populate('consumerFinancesWidgetConsumer', data, cfWidgetConsumerName);\r\n }\r\n function populateCFWidgetDropdowns() {\r\n const sortData = ([\r\n { id: 1, value: 'Consumer Last Name Ascending', text: 'Consumer Last Name Ascending' },\r\n { id: 2, value: 'Consumer Last Name Descending', text: 'Consumer Last Name Descending' },\r\n { id: 3, value: 'Account Balance Ascending', text: 'Account Balance Ascending' },\r\n { id: 4, value: 'Account Balance Descending', text: 'Account Balance Descending' },\r\n { id: 5, value: 'Last Transaction Ascending', text: 'Last Transaction Ascending' },\r\n { id: 6, value: 'Last Transaction Descending', text: 'Last Transaction Descending' },\r\n ]);\r\n dropdown.populate(\"consumerFinancesWidgetSortOrder\", sortData, cfWidgetSortOrderName);\r\n }\r\n\r\n function displayFilteredBy() {\r\n var filteredBy = widget.querySelector('.widgetFilteredBy');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('widgetFilteredBy');\r\n widgetBody.appendChild(filteredBy);\r\n }\r\n\r\n filteredBy.innerHTML = `
    \r\n

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

    \r\n

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

    \r\n

    Sort Order: ${cfWidgetSortOrderName}

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

    Location: ${locationNoteLocationLookupObject[filteredLocation].locationName}

    \r\n
    \r\n `;\r\n }\r\n\r\n function populateLocationLookup() {\r\n locationNoteLocationLookupObject = {};\r\n locationNoteLocationObj.forEach(loc => {\r\n obj = {\r\n locationName: loc.locationName\r\n };\r\n locationNoteLocationLookupObject[loc.loc_id] = obj;\r\n });\r\n }\r\n\r\n function getData() {\r\n let getlocations = new Promise((resolve, reject) => {\r\n locationNotesAjax.getLocationsWithUnreadNotesAndPermission(res => {\r\n locationNoteLocationObj = res;\r\n resolve(\"success\");\r\n });\r\n });\r\n\r\n Promise.all([getlocations]).then(() => {\r\n populateDropdown();\r\n populateLocationLookup();\r\n getNotesFiltered();\r\n });\r\n }\r\n\r\n // const dash_locationProgressNotesLS = (function() {\r\n // function getLocation() {\r\n // let user = $.session.UserId;\r\n // return localStorage.getItem(\r\n // `user:${user} dash_locationProgressNoteLocation`\r\n // );\r\n // }\r\n // function setLocaiton(locationId) {\r\n // let user = $.session.UserId;\r\n // return localStorage.setItem(\r\n // `user:${user} dash_locationProgressNoteLocation`,\r\n // locationId\r\n // );\r\n // }\r\n // return {\r\n // getLocation: getLocation,\r\n // setLocation: setLocaiton\r\n // };\r\n // })();\r\n\r\n function init() {\r\n dashboard.appendFilterButton(\r\n \"locationprogressnoteswidget\",\r\n \"locationProgressFilterBtn\"\r\n );\r\n\r\n widget = document.getElementById(\"locationprogressnoteswidget\");\r\n widgetBody = widget.querySelector(\".widget__body\");\r\n locationNoteList = document.getElementById(\"locationProgressNoteList\");\r\n \r\n getData();\r\n buildFilterPopup();\r\n eventSetup();\r\n }\r\n return {\r\n init\r\n };\r\n})();\r\n","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\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); //\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","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 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 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 timeClock = (function() {\r\n\t// DOM elements\r\n\tvar widget;\r\n\tvar widgetResults;\r\n\tvar clockInOutBtn;\r\n\tvar rowdataPopup;\r\n\t// Data & Values\r\n\tvar currentLocationId;\r\n\tvar currentStartTime;\r\n\tvar currentEndTime;\r\n\r\n\tfunction giveInvalidTimeError() {\r\n\t\tvar timeError = document.createElement('p');\r\n\t\ttimeError.style.color = 'red';\r\n\t\ttimeError.innerHTML = $.session.timeClockError;\r\n\t\twidgetError.appendChild(timeError);\r\n\t\t$.session.timeClockError = '';\r\n\t}\r\n\tfunction punchClock(event) {\r\n\t\tvar btn = event.target;\r\n\t\tswitch (btn.dataset.clockAction) {\r\n\t\t\tcase 'in':\r\n\t\t\t\ttimeClockAjax.clockInStaff();\r\n\t\t\t\tbtn.innerHTML = 'Clock Out';\r\n\t\t\t\tbtn.setAttribute('data-clock-action', 'out');\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'out':\r\n\t\t\t\ttimeClockAjax.clockOutStaff();\r\n\t\t\t\tbtn.innerHTML = 'Clock In';\r\n\t\t\t\tbtn.setAttribute('data-clock-action', 'in');\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tfunction updateStaffTimeClock(data) {\r\n\t\tvar updateKeys = [];\r\n\t\tvar newLocationData = data.newLocationData;\r\n\t\tvar newStartTimeData = data.newStartTimeData;\r\n\t\tvar newEndTimeData = data.newEndTimeData;\r\n\t\tvar currentStartTime = data.data.startTime;\r\n\t\tvar currentEndTime = data.data.stopTime;\r\n\t\tif (newLocationData) {\r\n\t\t\tvar newLocationId = newLocationData.loc;\r\n\r\n\t\t\tif (newLocationId !== currentLocationId) {\r\n\t\t\t\tif (newStartTimeData) newStartTimeData.loc = newLocationId;\r\n\t\t\t\tif (newEndTimeData) newEndTimeData.loc = newLocationId;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//if (newStartTimeData) newEndTimeData.orgTime = newStartTimeData.newTime;\r\n\r\n\t\tif (newLocationData) updateKeys.push('newLocationData');\r\n\t\tif (newStartTimeData) {\r\n\t\t\tif (currentEndTime && newStartTimeData.newTime > currentEndTime) {\r\n\t\t\t\t$.session.timeClockError = 'Invald Time';\r\n\t\t\t\tgiveInvalidTimeError();\r\n\t\t\t\t//return\r\n\t\t\t} else {\r\n\t\t\t\tupdateKeys.push('newStartTimeData');\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (newEndTimeData) {\r\n\t\t\tif (newEndTimeData.newTime < currentStartTime) {\r\n\t\t\t\t$.session.timeClockError = 'Invald Time';\r\n\t\t\t\tgiveInvalidTimeError();\r\n\t\t\t\t//return\r\n\t\t\t} else {\r\n\t\t\t\tupdateKeys.push('newEndTimeData');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tswitch (updateKeys.length) {\r\n\t\t\tcase 1: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 2: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[1]], () => {\r\n\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 3: {\r\n\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[0]], () => {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[1]], () => {\r\n\t\t\t\t\t\ttimeClockAjax.updateStaffClockTime(data[updateKeys[2]], () => {\r\n\t\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfunction populateLocationsDropdown(description) {\r\n\t\tvar defaultLocation;\r\n\t\t// prepare locations data for dropdown\r\n\t\tvar locations = $.session.locations\r\n\t\t\t.map((location, index) => {\r\n\t\t\t\tif (location === description) {\r\n\t\t\t\t\tdefaultLocation = {\r\n\t\t\t\t\t\tid: $.session.locationids[index],\r\n\t\t\t\t\t\tvalue: location,\r\n\t\t\t\t\t\ttext: location,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\treturn {\r\n\t\t\t\t\tid: $.session.locationids[index],\r\n\t\t\t\t\tvalue: location,\r\n\t\t\t\t\ttext: location,\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.filter(loc => {\r\n\t\t\t\treturn loc.value !== description;\r\n\t\t\t});\r\n\r\n\t\tlocations.unshift(defaultLocation);\r\n\r\n\t\tdropdown.populate('timeClockLocations', locations);\r\n\t}\r\n\tfunction displayRowData(data) {\r\n\t\treadOnly = false;\r\n\t\tcurrentLocationId = data.locationId;\r\n\t\tcurrentStartTime = data.startTime;\r\n\t\tcurrentEndTime = data.stopTime;\r\n\t\tvar newLocationData;\r\n\t\tvar newStartTimeData;\r\n\t\tvar newEndTimeData;\r\n\r\n\t\tvar rowId = data.rowId;\r\n var locationId = data.locationId;\r\n \r\n if ($.session.DenyStaffClockUpdate === true) {\r\n readOnly = true;\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n rowdataPopup = POPUP.build({ classNames: ['timeClockRowDetailsPopup']});\r\n\r\n\t\t// build popup inner html\r\n\t\tvar locationsDropdown = dropdown.build({\r\n\t\t\tdropdownId: 'timeClockLocations',\r\n\t\t\tlabel: 'Locations',\r\n\t\t\tstyle: 'secondary'\r\n\t\t});\r\n\t\tvar startTimeInput = input.build({\r\n\t\t\tid: 'timeClockStartTime',\r\n\t\t\tlabel: 'Start Time',\r\n\t\t\ttype: 'time',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\treadonly: readOnly,\r\n\t\t\tvalue: data.startTime,\r\n\t\t});\r\n\t\tvar endTimeInput = input.build({\r\n\t\t\tid: 'timeClockEndTime',\r\n\t\t\tlabel: 'End Time',\r\n\t\t\ttype: 'time',\r\n\t\t\tstyle: 'secondary',\r\n\t\t\treadonly: readOnly,\r\n\t\t\tvalue: data.stopTime,\r\n\t\t});\r\n\t\tvar applyChanges = button.build({\r\n\t\t\ttext: 'Apply Changes',\r\n\t\t\tstyle: 'secondary',\r\n type: 'contained',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tPOPUP.hide(rowdataPopup);\r\n\t\t\t\tupdateStaffTimeClock({ newLocationData, newStartTimeData, newEndTimeData, data });\r\n\t\t\t},\r\n\t\t});\r\n\t\tvar deleteEntry = button.build({\r\n\t\t\ttext: 'Delete Entry',\r\n\t\t\tstyle: 'secondary',\r\n type: 'contained',\r\n classNames: 'deleteTimeBtn',\r\n\t\t\tcallback: function() {\r\n\t\t\t\tshowTimeClockDeleteWarning(data);\r\n\t\t\t},\r\n });\r\n \r\n\t\tvar timeWrap = document.createElement('div');\r\n\t\ttimeWrap.classList.add('timeWrap');\r\n\t\ttimeWrap.appendChild(startTimeInput);\r\n timeWrap.appendChild(endTimeInput);\r\n \r\n var btnWrap = document.createElement('div');\r\n\t\tbtnWrap.classList.add('btnWrap');\r\n\t\tbtnWrap.appendChild(applyChanges);\r\n btnWrap.appendChild(deleteEntry);\r\n\r\n\r\n\t\trowdataPopup.appendChild(locationsDropdown);\r\n\t\trowdataPopup.appendChild(timeWrap);\r\n\t\trowdataPopup.appendChild(btnWrap);\r\n\r\n\t\tPOPUP.show(rowdataPopup);\r\n\t\tpopulateLocationsDropdown(data.description);\r\n\r\n\t\t// popup events\r\n\t\tfunction showTimeClockDeleteWarning(data) {\r\n\t\t\tPOPUP.hide(rowdataPopup);\r\n\t\t\tvar timeClockDeleteWarningPop = POPUP.build({\r\n\t\t\t\theader: 'Are you sure you want to delete this entry?',\r\n\t\t\t});\r\n\r\n\t\t\tvar btnWrap = document.createElement('div');\r\n\t\t\tbtnWrap.classList.add('btnWrap');\r\n\t\t\tvar yesBtn = button.build({\r\n\t\t\t\ttext: 'Yes',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function() {\r\n\t\t\t\t\ttimeClockAjax.updateStaffClockTime(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tloc: locationId,\r\n\t\t\t\t\t\t\torgTime: data.startTime,\r\n\t\t\t\t\t\t\tnewTime: data.startTime,\r\n\t\t\t\t\t\t\tisStartTime: 3,\r\n\t\t\t\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t);\r\n\t\t\t\t\tPOPUP.hide(timeClockDeleteWarningPop);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\t\tvar noBtn = button.build({\r\n\t\t\t\ttext: 'No',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function() {\r\n\t\t\t\t\tPOPUP.hide(timeClockDeleteWarningPop);\r\n\t\t\t\t\tPOPUP.show(rowdataPopup);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tbtnWrap.appendChild(yesBtn);\r\n\t\t\tbtnWrap.appendChild(noBtn);\r\n\t\t\ttimeClockDeleteWarningPop.appendChild(btnWrap);\r\n\r\n\t\t\tPOPUP.show(timeClockDeleteWarningPop);\r\n\t\t}\r\n\r\n\t\tlocationsDropdown.addEventListener('change', event => {\r\n\t\t\tvar selectedOption = event.target.options[event.target.selectedIndex];\r\n\t\t\tnewLocationData = {\r\n\t\t\t\tloc: selectedOption.id,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: data.startTime,\r\n\t\t\t\tisStartTime: 2,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t\tstartTimeInput.addEventListener('change', event => {\r\n\t\t\tnewStartTimeData = {\r\n\t\t\t\tloc: data.locationId,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: `${event.target.value}:00`,\r\n\t\t\t\tisStartTime: 0,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t\tendTimeInput.addEventListener('change', event => {\r\n\t\t\tnewEndTimeData = {\r\n\t\t\t\tloc: data.locationId,\r\n\t\t\t\torgTime: data.startTime,\r\n\t\t\t\tnewTime: `${event.target.value}:00`,\r\n\t\t\t\tisStartTime: 1,\r\n\t\t\t\tcheckedAgainstTime: '',\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\tfunction processStaffActivity(results) {\r\n\t\tvar lastClockOutTime;\r\n widgetResults.innerHTML = '';\r\n widgetError.innerHTML = '';\r\n\t\tif ($.session.timeClockError) giveInvalidTimeError();\r\n\t\tresults.forEach((r, index) => {\r\n\t\t\tvar staffId = r.Staff_ID;\r\n\t\t\tvar locationId = r.Location_ID;\r\n\t\t\tvar locationCode = r.location_code;\r\n\t\t\tvar startTime = r.Start_Time === '23:59:59' ? '00:00:00' : r.Start_Time;\r\n\t\t\tvar stopTime = r.Stop_Time === '23:59:59' ? '00:00:00' : r.Stop_Time;\r\n\t\t\tvar serviceDate = r.Service_Date.split(' ')[0];\r\n\t\t\tvar description = r.Description;\r\n\r\n\t\t\tvar resultsRow = document.createElement('div');\r\n\t\t\tresultsRow.classList.add('results-row');\r\n\t\t\tresultsRow.setAttribute('data-row-id', index);\r\n\t\t\tresultsRow.innerHTML = `\r\n
    ${description}
    \r\n
    ${UTIL.convertFromMilitary(startTime)}
    \r\n
    ${UTIL.convertFromMilitary(stopTime)}
    \r\n `;\r\n\r\n\t\t\twidgetResults.appendChild(resultsRow);\r\n\r\n\t\t\tresultsRow.addEventListener('click', function() {\r\n\t\t\t\tdisplayRowData({\r\n\t\t\t\t\tstaffId,\r\n\t\t\t\t\tlocationId,\r\n\t\t\t\t\tlocationCode,\r\n\t\t\t\t\tdescription,\r\n\t\t\t\t\tserviceDate,\r\n\t\t\t\t\tstartTime,\r\n\t\t\t\t\tstopTime,\r\n\t\t\t\t\trowId: index,\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tlastClockOutTime = stopTime;\r\n\t\t});\r\n\r\n\t\tif (lastClockOutTime !== '') {\r\n\t\t\tclockInOutBtn.innerHTML = 'Clock In';\r\n\t\t\tclockInOutBtn.setAttribute('data-clock-action', 'in');\r\n\t\t} else {\r\n\t\t\tclockInOutBtn.innerHTML = 'Clock Out';\r\n\t\t\tclockInOutBtn.setAttribute('data-clock-action', 'out');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction init() {\r\n widget = document.getElementById('dashtimeclockwidget');\r\n widgetError = widget.querySelector('.overlapError');\r\n\t\twidgetResults = widget.querySelector('.widget__results');\r\n\t\tclockInOutBtn = widget.querySelector('.clockInOutBtn');\r\n\r\n\t\tclockInOutBtn.addEventListener('click', punchClock);\r\n\r\n\t\ttimeClockAjax.getStaffActivity(processStaffActivity);\r\n\t}\r\n\r\n\treturn {\r\n\t\tprocessStaffActivity,\r\n\t\tgiveInvalidTimeError,\r\n\t\tinit,\r\n\t};\r\n})();\r\n","var timeClockAjax = (function() {\r\n\tfunction clockInStaff() {\r\n\t\tvar locationId = '';\r\n\t\tvar locationId = defaults.getLocation(\"timeClock\");\r\n\t\tif (locationId == null || locationId == '') locationId = 0;\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/clockInStaff/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"locationId\":\"' + locationId + '\", \"createTimeEntries\":\"' + $.session.createTimeEntries + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n success: function (response, status, xhr) { \r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\t if (res.indexOf('517') > -1) {\r\n $.session.timeClockError = 'You are not assigned as Day Service Staff.';\r\n\t\t\t }\r\n\t\t\t\t if (res.indexOf('611') > -1) {\r\n $.session.timeClockError = 'You are not assigned as Day Service Staff';\r\n\t\t\t\t }\r\n\t\t\t\t if (res.indexOf('612') > -1) {\r\n $.session.timeClockError = 'You do not have an active staff location assigned to you.';\r\n\t\t\t\t }\r\n\t\t\t\t if (res.indexOf('610') > -1) {\r\n $.session.timeClockError = 'You are already clocked in!';\r\n\t\t\t\t }\r\n\t\t\t\tif (res.indexOf('613') > -1) {\r\n window.timeOverlapError = true;\r\n $.session.timeClockError = 'Time Overlap';\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.timeOverlapError = false; //needed to reset previous error value\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\tgetStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction clockOutStaff() {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/clockOutStaff/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\tgetStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction getStaffActivity(callback) {\r\n\t\tvar d = new Date();\r\n\t\tvar timeClockDate = [d.getFullYear(), d.getMonth() + 1, d.getDate()].join('-');\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getStaffActivityJSON/',\r\n\t\t\tdata: '{\"token\":\"' + $.session.Token + '\", \"serviceDate\":\"' + timeClockDate + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tres = response.getStaffActivityJSONResult;\r\n\t\t\t\tcallback(res);\r\n\t\t\t},\r\n\t\t\terror: function(xhr, status, error) {\r\n\t\t\t\tcallback(null);\r\n\t\t\t},\r\n\t\t\t// complete: function(jqXHR, status) {\r\n\t\t\t// \tshowDownArrow();\r\n\t\t\t// },\r\n\t\t});\r\n\t}\r\n\r\n\tfunction updateStaffClockTime(data, callback) {\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateStaffClockTime/',\r\n\t\t\tdata:\r\n\t\t\t\t'{\"token\":\"' + $.session.Token +\r\n\t\t\t\t'\", \"serviceDate\":\"' + UTIL.getDBDateNow() +\r\n\t\t\t\t'\", \"orginalTime\":\"' + data.orgTime +\r\n\t\t\t\t'\", \"newTime\":\"' + data.newTime +\r\n\t\t\t\t'\", \"isClockIn\":\"' + data.isStartTime +\r\n\t\t\t\t'\", \"checkedAgainstTime\":\"' + data.orgTime +\r\n\t\t\t\t'\",\"location\":\"' + data.loc + '\"}',\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t\tsuccess: function(response, status, xhr) {\r\n\t\t\t\tvar res = JSON.stringify(response);\r\n\t\t\t\tif (res.indexOf('613') > -1) {\r\n $.session.timeClockError = 'Time Overlap';\r\n\t\t\t\t\twindow.timeOverlapError = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.timeOverlapError = false;\r\n }\r\n callback();\r\n\t\t\t},\r\n\t\t\tcomplete: function(jqXHR, status) {\r\n\t\t\t\t//getStaffActivity(timeClock.processStaffActivity);\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t$.session.initialTimeOut = '';\r\n\t\t$.session.initialTimeIn = '';\r\n\t}\r\n\r\n\treturn {\r\n\t\tclockInStaff,\r\n\t\tclockOutStaff,\r\n\t\tgetStaffActivity,\r\n\t\tupdateStaffClockTime,\r\n\t};\r\n})();\r\n","var incident = (function () {\r\n var updateData = {\r\n token: null,\r\n\r\n incidentTypeId: null, // Incident Details\r\n incidentTypeDesc: null, // Incident Details\r\n incidentDate: null, // Incident Details - incident date\r\n incidentTime: null, // Incident Details - incident time\r\n reportedDate: null, // Incident Details - reported date\r\n reportedTime: null, // Incident Details - reported time\r\n subcategoryId: null, // Incident Details - incident category\r\n locationDetailId: null, // Incident Details - location detail\r\n serviceLocationId: null, // ????????????\r\n summary: null, // Incident Details - summary of incident\r\n note: null, // Incident Details - immediate acction\r\n prevention: null, // Incident Details - preventive plan\r\n contributingFactor: null, // Incident Details - cause & contributing factors\r\n\r\n consumerIdString: null, // Consumers Involved - consumer id\r\n includeInCount: null, // Consumers Involved - PPI checkbox\r\n involvementId: null, // Consumers Involved - involvement type id\r\n consumerIncidentLocationIdString: null, // Consumers Involved - incident location id\r\n consumerInvolvedIdString: null,\r\n\r\n employeeIdString: null, // Employees Involved\r\n notifyEmployeeString: null, // Employees Involved\r\n employeeInvolvementIdString: null, // Employees Involved\r\n\r\n othersInvolvedNameString: null, // Others Involved\r\n othersInvolvedCompanyString: null, // Others Involved\r\n othersInvolvedAddress1String: null, // Others Involved\r\n othersInvolvedAddress2String: null, // Others Involved\r\n othersInvolvedCityString: null, // Others Involved\r\n othersInvolvedStateString: null, // Others Involved\r\n othersInvolvedZipCodeString: null, // Others Involved\r\n othersInvolvedPhoneString: null, // Others Involved\r\n othersInvolvedInvolvementTypeIdString: null, // Others Involved\r\n othersInvolvedInvolvementDescriptionString: null, // Others Involved - ????\r\n\r\n updateIncidentId: null, // set for update only. else make 0\r\n saveUpdate: 'Update', // set either Save or Update\r\n };\r\n var isNewIncident;\r\n var consumersInvolvedIds;\r\n var newConsumersInvolvedIds;\r\n\r\n function clearUpdateData() {\r\n var datakeys = Object.keys(updateData);\r\n datakeys.forEach(key => {\r\n updateData[key] = null;\r\n });\r\n }\r\n\r\n function getIncidentId() {\r\n return updateData.updateIncidentId;\r\n }\r\n\r\n function setNewConsumerInvolvedIds(involvementIds) {\r\n // when saving new incident this handles the new consumerInvolement Ids coming back\r\n newConsumersInvolvedIds = [];\r\n\r\n involvementIds.forEach(ids => {\r\n var idArray = ids.split('|');\r\n var consumerId = idArray[0];\r\n var involvementId = idArray[1];\r\n\r\n newConsumersInvolvedIds.push({\r\n id: consumerId,\r\n involvedId: involvementId,\r\n });\r\n });\r\n }\r\n\r\n //-----------------------------------------------------------\r\n // Saving/Updating Incident Card\r\n //-----------------------------------------------------------\r\n function setUpdateIncidentId(incidentId) {\r\n updateData.updateIncidentId = incidentId;\r\n }\r\n // Gather Data From Each Section\r\n function getConsumersInvolvedUpdateData() {\r\n var consumerIds = [];\r\n var involvementIds = [];\r\n var locationIds = [];\r\n var includeInCount = [];\r\n var consumerInvolvementIds = [];\r\n\r\n var consumersInvolvedIds = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n var data = consumerInvolvement.getData();\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach((key, index) => {\r\n var consumerData = data[key];\r\n var consumerInvolvementId;\r\n\r\n if (consumersInvolvedIds) {\r\n consumerInvolvementId = consumersInvolvedIds.find(e => e.id === key);\r\n consumerInvolvementId = consumerInvolvementId ? consumerInvolvementId.involvedId : 0;\r\n } else {\r\n consumerInvolvementId = 0;\r\n }\r\n\r\n consumerIds.push(key);\r\n involvementIds.push(consumerData.involvementId);\r\n locationIds.push(consumerData.locationId);\r\n includeInCount.push(consumerData.includeInCount);\r\n consumerInvolvementIds.push(consumerInvolvementId);\r\n });\r\n\r\n updateData.consumerIdString = consumerIds.join(',');\r\n updateData.involvementId = involvementIds.join('|');\r\n updateData.consumerIncidentLocationIdString = locationIds.join('|');\r\n updateData.includeInCount = includeInCount.join('|');\r\n updateData.consumerInvolvedIdString = consumerInvolvementIds.join('|');\r\n }\r\n function getEmployeesInvolvedUpdateData() {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"employees\"]');\r\n var employeeRows = [].slice.call(section.querySelectorAll('.employeeRow'));\r\n\r\n var employeeIds = [];\r\n var involvementTypes = [];\r\n var toNotify = [];\r\n\r\n employeeRows.forEach((row, index) => {\r\n var employeeNameDropdown = row.querySelector('.employeeNameDropdown');\r\n var involvementDropdown = row.querySelector('.involvmentTypeDropdown');\r\n var notifyCheckbox = row.querySelector('.checkbox');\r\n var notifyInput = notifyCheckbox.querySelector('input');\r\n var employeeNameDropdownSelectedValue =\r\n employeeNameDropdown.options[employeeNameDropdown.selectedIndex];\r\n\r\n var name = employeeNameDropdownSelectedValue.dataset.employeeid;\r\n var involvement = involvementDropdown.value;\r\n var notify = notifyInput.checked ? 'Y' : 'N';\r\n\r\n employeeIds.push(name);\r\n involvementTypes.push(involvement);\r\n toNotify.push(notify);\r\n });\r\n\r\n updateData.employeeIdString = employeeIds.join('|');\r\n updateData.employeeInvolvementIdString = involvementTypes.join('|');\r\n updateData.notifyEmployeeString = toNotify.join('|');\r\n }\r\n function getPeopleInvolvedUpdateData() {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"people\"]');\r\n var peopleRows = [].slice.call(section.querySelectorAll('.peopleRow'));\r\n\r\n var names = [];\r\n var companies = [];\r\n var addresses1 = [];\r\n var addresses2 = [];\r\n var cities = [];\r\n var states = [];\r\n var zips = [];\r\n var phones = [];\r\n var involevmentTypes = [];\r\n var involevmentDescriptions = [];\r\n\r\n peopleRows.forEach((person, index) => {\r\n var nameInput = person.querySelector('.name');\r\n var companyInput = person.querySelector('.company');\r\n var address1Input = person.querySelector('.address1');\r\n var address2Input = person.querySelector('.address2');\r\n var cityInput = person.querySelector('.city');\r\n var stateInput = person.querySelector('.state');\r\n var zipInput = person.querySelector('.zip');\r\n var phoneInput = person.querySelector('.phone');\r\n var typeDropdown = person.querySelector('.involvmentTypeDropdown');\r\n\r\n var name = UTIL.removeUnsavableNoteText(nameInput.value);\r\n var company = UTIL.removeUnsavableNoteText(companyInput.value);\r\n var address1 = UTIL.removeUnsavableNoteText(address1Input.value);\r\n var address2 = UTIL.removeUnsavableNoteText(address2Input.value);\r\n var city = UTIL.removeUnsavableNoteText(cityInput.value);\r\n var state = stateInput.value;\r\n var zip = zipInput.value;\r\n var phone = phoneInput.value;\r\n var type = typeDropdown.value;\r\n\r\n names.push(name);\r\n companies.push(company);\r\n addresses1.push(address1);\r\n addresses2.push(address2);\r\n cities.push(city);\r\n states.push(state);\r\n zips.push(zip);\r\n phones.push(phone);\r\n involevmentTypes.push(type);\r\n });\r\n\r\n updateData.othersInvolvedNameString = names.join('|');\r\n updateData.othersInvolvedCompanyString = companies.join('|');\r\n updateData.othersInvolvedAddress1String = addresses1.join('|');\r\n updateData.othersInvolvedAddress2String = addresses2.join('|');\r\n updateData.othersInvolvedCityString = cities.join('|');\r\n updateData.othersInvolvedStateString = states.join('|');\r\n updateData.othersInvolvedZipCodeString = zips.join('|');\r\n updateData.othersInvolvedPhoneString = phones.join('|');\r\n updateData.othersInvolvedInvolvementTypeIdString = involevmentTypes.join('|');\r\n }\r\n function getIncidentDetailsUpdateData(details) {\r\n var section = document.querySelector('.incidentSection[data-card-page=\"details\"]');\r\n var iDate = section.querySelector('.iDate');\r\n var iTime = section.querySelector('.iTime');\r\n var rDate = section.querySelector('.rDate');\r\n var rTime = section.querySelector('.rTime');\r\n var category = section.querySelector('.categoryDropdown');\r\n var location = section.querySelector('.locationDropdown');\r\n var summary = section.querySelector('.summary');\r\n var action = section.querySelector('.action');\r\n\r\n updateData.incidentDate = iDate.value;\r\n updateData.incidentTime = iTime.value;\r\n updateData.reportedDate = rDate.value;\r\n updateData.reportedTime = rTime.value;\r\n updateData.subcategoryId = category.value;\r\n updateData.locationDetailId = location.value;\r\n updateData.summary = UTIL.removeUnsavableNoteText(summary.value);\r\n updateData.note = UTIL.removeUnsavableNoteText(action.value);\r\n updateData.prevention = '';\r\n updateData.contributingFactor = '';\r\n\r\n if ($.session.incidentTrackingShowPreventionPlan) {\r\n var prevention = section.querySelector('.prevention');\r\n updateData.prevention = UTIL.removeUnsavableNoteText(prevention.value);\r\n }\r\n if ($.session.incidentTrackingShowCauseAndContributingFactors) {\r\n var factors = section.querySelector('.factors');\r\n updateData.contributingFactor = UTIL.removeUnsavableNoteText(factors.value);\r\n }\r\n\r\n if (details) {\r\n updateData.incidentTypeId = details.incidentTypeId === '' ? null : details.incidentTypeId;\r\n updateData.incidentTypeDesc =\r\n details.incidentTypeDesc === '' ? null : details.incidentTypeDesc;\r\n }\r\n }\r\n\r\n function updateIncidentSaveEditData() {\r\n getConsumersInvolvedUpdateData();\r\n getEmployeesInvolvedUpdateData();\r\n getPeopleInvolvedUpdateData();\r\n getIncidentDetailsUpdateData();\r\n updateData.token = $.session.Token;\r\n updateData.saveUpdate = isNewIncident ? 'Save' : 'Update';\r\n }\r\n\r\n function saveIncident(isNew) {\r\n isNewIncident = isNew;\r\n // update save data\r\n updateIncidentSaveEditData();\r\n // tell roster to clear out its active consumers\r\n roster2.clearActiveConsumers();\r\n // fire ajax save\r\n incidentTrackingAjax.saveUpdateITIncident(updateData, function (involvementIds) {\r\n setNewConsumerInvolvedIds(involvementIds);\r\n // load review page\r\n incidentOverview.init();\r\n saveConsumerData();\r\n deleteConsumerData();\r\n clearUpdateData();\r\n });\r\n }\r\n function deleteIncident() {\r\n var deleteIncidentWarningPopup = POPUP.build({});\r\n\r\n var message = document.createElement('p');\r\n message.innerHTML = 'Are you sure you want to delete this incident?';\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n incidentTrackingAjax.deleteITIncident(updateData.updateIncidentId);\r\n clearUpdateData();\r\n POPUP.hide(deleteIncidentWarningPopup);\r\n incidentOverview.init();\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n clearUpdateData();\r\n POPUP.hide(deleteIncidentWarningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n deleteIncidentWarningPopup.appendChild(message);\r\n deleteIncidentWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(deleteIncidentWarningPopup);\r\n }\r\n function cancelIncident() {\r\n // clear active consumers\r\n roster2.clearActiveConsumers();\r\n // clear data\r\n itConsumerSection.clearData();\r\n // load review page\r\n incidentOverview.init();\r\n }\r\n\r\n //-----------------------------------------------------------\r\n // Saving/Updating Consumer Involved Sub Sections\r\n //-----------------------------------------------------------\r\n function saveConsumerData() {\r\n consumersInvolvedIds = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n var followUpData = consumerFollowUp.getData();\r\n var injuryData = consumerInjuries.getData();\r\n var interventionsData = consumerIntervention.getData();\r\n var reviewData = consumerReview.getData();\r\n var reportData = consumerReporting.getData();\r\n var behaviorData = consumerBehavior.getData();\r\n\r\n var fupPromises = saveConsumerFollowUps(followUpData);\r\n var injPromises = saveConsumerInjuries(injuryData);\r\n var intPromises = saveConsumerInterventions(interventionsData);\r\n var revPromises = saveConsumerReviews(reviewData);\r\n var repPromises = saveConsumerReports(reportData);\r\n var behavPromises = saveConsumerBehaviors(behaviorData);\r\n\r\n var consumerDataSavePromises = [\r\n ...fupPromises,\r\n ...injPromises,\r\n ...intPromises,\r\n ...revPromises,\r\n ...repPromises,\r\n ...behavPromises,\r\n ];\r\n\r\n Promise.all(consumerDataSavePromises).then(() => {\r\n itConsumerSection.clearData();\r\n });\r\n }\r\n function saveConsumerFollowUps(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerFollowUpIdArray: [],\r\n followUpTypeIdArray: [],\r\n personResponsibleArray: [],\r\n dueDateArray: [],\r\n completedDateArray: [],\r\n notesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var fuData = data[key][idKey];\r\n if (!fuData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerFollowUpId = isNew ? '' : idKey;\r\n var followUpTypeId = fuData.followUpTypeId ? fuData.followUpTypeId : '';\r\n var personResponsible = fuData.personResponsible\r\n ? UTIL.removeUnsavableNoteText(fuData.personResponsible)\r\n : '';\r\n var dueDate = fuData.dueDate ? fuData.dueDate : '';\r\n var dateCompleted = fuData.dateCompleted ? fuData.dateCompleted : '';\r\n var notes = fuData.notes ? UTIL.removeUnsavableNoteText(fuData.notes) : '';\r\n\r\n saveData.consumerFollowUpIdArray.push(itConsumerFollowUpId);\r\n saveData.followUpTypeIdArray.push(followUpTypeId);\r\n saveData.personResponsibleArray.push(personResponsible);\r\n saveData.dueDateArray.push(dueDate);\r\n saveData.completedDateArray.push(dateCompleted);\r\n saveData.notesArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerFollowUp(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerInjuries(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerInjuryIdArray: [],\r\n checkedByNurseArray: [],\r\n checkedDateArray: [],\r\n detailsArray: [],\r\n itInjuryLocationIdArray: [],\r\n itInjuryTypeIdArray: [],\r\n treatmentArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var iData = data[key][idKey];\r\n if (!iData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerInjuryId = isNew ? '' : idKey;\r\n var checkedByNurse = iData.checkedByNurse ? iData.checkedByNurse : '';\r\n var checkedDate = iData.checkedDate ? iData.checkedDate : '';\r\n var injuryDetails = iData.injuryDetails\r\n ? UTIL.removeUnsavableNoteText(iData.injuryDetails)\r\n : '';\r\n var injuryLocationId = iData.injuryLocationId ? iData.injuryLocationId : '';\r\n var injuryTypeId = iData.injuryTypeId ? iData.injuryTypeId : '';\r\n var injuryTreatment = iData.injuryTreatment\r\n ? UTIL.removeUnsavableNoteText(iData.injuryTreatment)\r\n : '';\r\n\r\n saveData.itConsumerInjuryIdArray.push(itConsumerInjuryId);\r\n saveData.checkedByNurseArray.push(checkedByNurse);\r\n saveData.checkedDateArray.push(checkedDate);\r\n saveData.detailsArray.push(injuryDetails);\r\n saveData.itInjuryLocationIdArray.push(injuryLocationId);\r\n saveData.itInjuryTypeIdArray.push(injuryTypeId);\r\n saveData.treatmentArray.push(injuryTreatment);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerInjuries(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerInterventions(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerInterventionIdArray: [],\r\n aversiveArray: [],\r\n itConsumerInterventionTypeIdArray: [],\r\n notesArray: [],\r\n startTimeArray: [],\r\n stopTimeArray: [],\r\n timeLengthArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var iData = data[key][idKey];\r\n if (!iData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerInterventionId = isNew ? '' : idKey;\r\n var aversive = iData.aversive ? iData.aversive : '';\r\n var interventionType = iData.interventionType ? iData.interventionType : '';\r\n var interventionNotes = iData.interventionNotes\r\n ? UTIL.removeUnsavableNoteText(iData.interventionNotes)\r\n : '';\r\n var startTime = iData.startTime ? iData.startTime : '';\r\n var stopTime = iData.stopTime ? iData.stopTime : '';\r\n var timeLength = iData.timeLength ? iData.timeLength : '';\r\n\r\n saveData.itConsumerInterventionIdArray.push(itConsumerInterventionId);\r\n saveData.aversiveArray.push(aversive);\r\n saveData.itConsumerInterventionTypeIdArray.push(interventionType);\r\n saveData.notesArray.push(interventionNotes);\r\n saveData.startTimeArray.push(startTime);\r\n saveData.stopTimeArray.push(stopTime);\r\n saveData.timeLengthArray.push(timeLength);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerInterventions(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerReviews(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n itConsumerReviewIdArray: [],\r\n reviewedByArray: [],\r\n reviewedDateArray: [],\r\n noteArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerReviewId = isNew ? '' : idKey;\r\n var reviewedBy = rData.reviewedBy ? rData.reviewedBy : '';\r\n var reviewedDate = rData.reviewedDate ? rData.reviewedDate : '';\r\n var notes = rData.notes ? UTIL.removeUnsavableNoteText(rData.notes) : '';\r\n\r\n saveData.itConsumerReviewIdArray.push(itConsumerReviewId);\r\n saveData.reviewedByArray.push(reviewedBy);\r\n saveData.reviewedDateArray.push(reviewedDate);\r\n saveData.noteArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerReviews(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerReports(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerReportIdArray: [],\r\n reportDateArray: [],\r\n reportTimeArray: [],\r\n reportingCategoryIdArray: [],\r\n reportToArray: [],\r\n reportByArray: [],\r\n reportMethodArray: [],\r\n notesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerReportId = isNew ? '' : idKey;\r\n var dateReported = rData.dateReported ? rData.dateReported : '';\r\n var timeReported = rData.timeReported ? rData.timeReported : '';\r\n var reportingCategoryID = rData.reportingCategoryID ? rData.reportingCategoryID : '';\r\n var reportTo = rData.reportTo ? UTIL.removeUnsavableNoteText(rData.reportTo) : '';\r\n var reportBy = rData.reportBy ? UTIL.removeUnsavableNoteText(rData.reportBy) : '';\r\n var reportMethod = rData.reportMethod\r\n ? UTIL.removeUnsavableNoteText(rData.reportMethod)\r\n : '';\r\n var notes = rData.notes ? UTIL.removeUnsavableNoteText(rData.notes) : '';\r\n\r\n saveData.consumerReportIdArray.push(itConsumerReportId);\r\n saveData.reportDateArray.push(dateReported);\r\n saveData.reportTimeArray.push(timeReported);\r\n saveData.reportingCategoryIdArray.push(reportingCategoryID);\r\n saveData.reportToArray.push(reportTo);\r\n saveData.reportByArray.push(reportBy);\r\n saveData.reportMethodArray.push(reportMethod);\r\n saveData.notesArray.push(notes);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerReporting(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n function saveConsumerBehaviors(data) {\r\n var savePromises = [];\r\n\r\n var consumerIdKeys = Object.keys(data);\r\n consumerIdKeys.forEach(key => {\r\n var saveData = {\r\n token: $.session.Token,\r\n consumerInvolvedId: '',\r\n consumerBehaviorIdArray: [],\r\n behaviorTypeIdArray: [],\r\n startTimeArray: [],\r\n endTimeArray: [],\r\n occurrencesArray: [],\r\n };\r\n\r\n var involvementId;\r\n\r\n if (consumersInvolvedIds) involvementId = consumersInvolvedIds.find(e => e.id === key);\r\n if (!involvementId) involvementId = newConsumersInvolvedIds.find(e => e.id === key);\r\n saveData.consumerInvolvedId = involvementId.involvedId;\r\n\r\n var idKeys = Object.keys(data[key]);\r\n idKeys.forEach(idKey => {\r\n var rData = data[key][idKey];\r\n if (!rData.updated) return;\r\n\r\n var isNew = idKey.includes('new');\r\n\r\n var itConsumerBehaviorId = isNew ? '' : idKey;\r\n var behaviorTypeId = rData.behaviorTypeId ? rData.behaviorTypeId : '';\r\n var startTime = rData.startTime ? rData.startTime : '';\r\n var endTime = rData.endTime ? rData.endTime : '';\r\n var occurrences = rData.occurrences ? rData.occurrences : '';\r\n\r\n saveData.consumerBehaviorIdArray.push(itConsumerBehaviorId);\r\n saveData.behaviorTypeIdArray.push(behaviorTypeId);\r\n saveData.startTimeArray.push(startTime);\r\n saveData.endTimeArray.push(endTime);\r\n saveData.occurrencesArray.push(occurrences);\r\n });\r\n\r\n var savePromise = new Promise((fulfill, reject) => {\r\n incidentTrackingAjax.saveUpdateITConsumerBehaviors(saveData, () => {\r\n fulfill();\r\n });\r\n });\r\n\r\n savePromises.push(savePromise);\r\n });\r\n\r\n return savePromises;\r\n }\r\n\r\n function deleteConsumerData() {\r\n var followUpDeletes = consumerFollowUp.getDeleteData();\r\n var injuryDeletes = consumerInjuries.getDeleteData();\r\n var interventionDeletes = consumerIntervention.getDeleteData();\r\n var reviewDeletes = consumerReview.getDeleteData();\r\n var reportDeletes = consumerReporting.getDeleteData();\r\n var behaviorDeletes = consumerBehavior.getDeleteData();\r\n\r\n if (followUpDeletes) {\r\n var fuKeys = Object.keys(followUpDeletes);\r\n fuKeys.forEach(fuKey => {\r\n var keys = Object.keys(followUpDeletes[fuKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerFollowUp(key, () => {});\r\n });\r\n });\r\n }\r\n if (injuryDeletes) {\r\n var injKeys = Object.keys(injuryDeletes);\r\n injKeys.forEach(injKey => {\r\n var keys = Object.keys(injuryDeletes[injKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerInjuries(key, () => {});\r\n });\r\n });\r\n }\r\n if (interventionDeletes) {\r\n var intKeys = Object.keys(interventionDeletes);\r\n intKeys.forEach(intKey => {\r\n var keys = Object.keys(interventionDeletes[intKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerInterventions(key, () => {});\r\n });\r\n });\r\n }\r\n if (reviewDeletes) {\r\n var revKeys = Object.keys(reviewDeletes);\r\n revKeys.forEach(revKey => {\r\n var keys = Object.keys(reviewDeletes[revKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerReviews(key, () => {});\r\n });\r\n });\r\n }\r\n if (reportDeletes) {\r\n var repKeys = Object.keys(reportDeletes);\r\n repKeys.forEach(repKey => {\r\n var keys = Object.keys(reportDeletes[repKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerReporting(key, () => {});\r\n });\r\n });\r\n }\r\n if (behaviorDeletes) {\r\n var bhKeys = Object.keys(behaviorDeletes);\r\n bhKeys.forEach(fuKey => {\r\n var keys = Object.keys(behaviorDeletes[fuKey]);\r\n keys.forEach(key => {\r\n incidentTrackingAjax.itDeleteConsumerBehavior(key, () => {});\r\n });\r\n });\r\n }\r\n }\r\n\r\n return {\r\n save: saveIncident,\r\n delete: deleteIncident,\r\n cancel: cancelIncident,\r\n setUpdateIncidentId,\r\n saveConsumerData,\r\n getIncidentId,\r\n };\r\n})();\r\n","var newIncident = (function() {\r\n\t// DATA\r\n\t//---------------------\r\n\t// Values\r\n //---------------------\r\n\r\n // Action Nav Event Handler\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch(targetAction) {\r\n // case 'rosterDone': {\r\n // roster.selectedConsumersToEnabledList();\r\n // loadPage();\r\n // break;\r\n // }\r\n // case 'rosterCancel': {\r\n // incidentTracking.loadLandingPage();\r\n // break;\r\n // }\r\n case 'miniRosterDone': {\r\n var selectedConsumers = roster2.getActiveConsumers();\r\n // roster.selectedConsumersToActiveList();\r\n itConsumerSection.addConsumers(selectedConsumers);\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n case 'miniRosterCancel': {\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n \r\n function loadPage() {\r\n DOM.clearActionCenter();\r\n roster2.setAllowedConsumers(['%']);\r\n roster2.miniRosterinit();\r\n\r\n var newIncidentCard = incidentCard.build();\r\n\r\n DOM.ACTIONCENTER.appendChild(newIncidentCard);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('incidentTracking-new');\r\n loadPage();\r\n\r\n // var enabledConsumers = roster.getEnabledConsumers();\r\n\r\n // if (enabledConsumers.length === 0) {\r\n // PROGRESS.SPINNER.show('Please wait while we gather everyone up...');\r\n // roster.buildRoster(true, false, rosterList => {\r\n // DOM.clearActionCenter();\r\n // DOM.ACTIONCENTER.appendChild(rosterList);\r\n // }, true);\r\n // } else {\r\n // loadPage();\r\n // }\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n init\r\n }\r\n})();","// Used For Incident Review Page\r\nconst incidentPermissions = (function () {\r\n function incidentDetails(enteredBy) {\r\n const textareas = [...document.querySelectorAll('textarea')];\r\n\r\n textareas.forEach(textarea => {\r\n if ($.session.UserId.toLowerCase() !== enteredBy.toLowerCase()) {\r\n if (\r\n (textarea.classList.contains('summary') && $.session.updateIncidentSummaryText) ||\r\n (textarea.classList.contains('action') && $.session.updateIncidentActionText) ||\r\n (textarea.classList.contains('prevention') && $.session.updateIncidentPreventionText) ||\r\n (textarea.classList.contains('factors') && $.session.updateIncidentCauseText)\r\n ) {\r\n const nonEditableText = textarea.value;\r\n\r\n textarea.addEventListener('keydown', event => {\r\n const updatedText = event.target.value;\r\n\r\n // if noneditable text is not at the beginning or has been changed\r\n if (!updatedText.startsWith(nonEditableText)) {\r\n textarea.blur();\r\n // create and append popup\r\n const popupElement = POPUP.build({\r\n id: 'js-incidentSummaryWarning',\r\n closeCallback: () => {\r\n const resetValue =\r\n nonEditableText + updatedText.substr(nonEditableText.length + 1);\r\n textarea.value = resetValue;\r\n },\r\n });\r\n const message = document.createElement('div');\r\n message.innerHTML = 'You are not allowed to edit previously entered text.';\r\n\r\n const okButton = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popupElement);\r\n const resetValue =\r\n nonEditableText + updatedText.substr(nonEditableText.length + 1);\r\n textarea.value = resetValue;\r\n },\r\n });\r\n\r\n popupElement.appendChild(message);\r\n popupElement.appendChild(okButton);\r\n\r\n POPUP.show(popupElement);\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n function permissions(originallyEnteredByUserId) {\r\n // gather all inputs, textareas, and dropdowns\r\n var incidentTrackingCard = document.querySelector('.incidentSection[data-card-page=\"details\"]');\r\n var inputs = [].slice.call(incidentTrackingCard.querySelectorAll('input'));\r\n var textareas = [].slice.call(incidentTrackingCard.querySelectorAll('textarea'));\r\n var dropdowns = [].slice.call(incidentTrackingCard.querySelectorAll('select'));\r\n var formElements = [].concat(inputs, textareas, dropdowns);\r\n if ($.session.incidentTrackingUpdate === false) {\r\n // disable everything\r\n formElements.forEach(element => {\r\n element.disabled = true;\r\n });\r\n } else {\r\n // undisable everything\r\n formElements.forEach(element => {\r\n element.disabled = false;\r\n });\r\n incidentDetails(originallyEnteredByUserId);\r\n }\r\n }\r\n\r\n return {\r\n incidentDetails,\r\n permissions,\r\n };\r\n})();\r\n","var reviewIncident = (function () {\r\n function loadPage(reviewData, incidentId) {\r\n DOM.clearActionCenter();\r\n\r\n var newIncidentCard = incidentCard.build(reviewData);\r\n\r\n DOM.ACTIONCENTER.appendChild(newIncidentCard);\r\n\r\n incidentPermissions.permissions(reviewData.itReviewData[0].originallyEnteredByUserId);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function init(incidentId) {\r\n incidentTrackingAjax.getIncidentEditReviewDataAllObjects(incidentId, results => {\r\n incident.setUpdateIncidentId(incidentId);\r\n loadPage(results, incidentId);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var incidentCard = (function () {\r\n // DOM\r\n //---------------------\r\n var incidentCard;\r\n //*sections\r\n var consumersSection;\r\n var detailsSection;\r\n var employeeSection;\r\n var peopleSection;\r\n //*nav buttons\r\n var nextBtn;\r\n var prevBtn;\r\n //*action buttons\r\n var cardActionBtns;\r\n var saveBtn;\r\n var deleteBtn;\r\n var cancelBtn;\r\n // DATA\r\n //---------------------\r\n var sections = [\r\n 'Consumers Involved',\r\n 'Incident Details',\r\n 'Employees Involved',\r\n 'People Involved',\r\n ];\r\n var itConsumerInvolved;\r\n var itReviewData;\r\n var itEmployeesInvolved;\r\n var itOthersInvolved;\r\n // Values\r\n //---------------------\r\n var isNewIncident;\r\n var currentSectionNumber;\r\n\r\n function toggleSaveBtnStatus(disableBtn) {\r\n if (disableBtn) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n function toggleActionBtns(hide) {\r\n if (hide) {\r\n cardActionBtns.classList.add('hidden');\r\n } else {\r\n cardActionBtns.classList.remove('hidden');\r\n }\r\n }\r\n function toggleNavBtns() {\r\n if (currentSectionNumber === 3) {\r\n // disable next btn\r\n nextBtn.classList.remove('visible');\r\n } else {\r\n nextBtn.classList.add('visible');\r\n }\r\n if (currentSectionNumber === 0) {\r\n // disable prev btn\r\n prevBtn.classList.remove('visible');\r\n } else {\r\n prevBtn.classList.add('visible');\r\n }\r\n }\r\n function showSection(e) {\r\n if (e.target === nextBtn) currentSectionNumber++;\r\n if (e.target === prevBtn) currentSectionNumber--;\r\n\r\n var currentlyVisibleSection = incidentCard.querySelector('.incidentSection.visible');\r\n var targetSectionSelector = `[data-page-num=\"${currentSectionNumber}\"]`;\r\n var targetSection = incidentCard.querySelector(targetSectionSelector);\r\n\r\n currentlyVisibleSection.classList.remove('visible');\r\n targetSection.classList.add('visible');\r\n\r\n var nextSectionName = sections[currentSectionNumber + 1];\r\n nextBtn.innerHTML = nextSectionName ? nextSectionName : '';\r\n\r\n DOM.autosizeTextarea();\r\n\r\n toggleNavBtns();\r\n }\r\n\r\n function buildNav() {\r\n currentSectionNumber = 0;\r\n\r\n var nav = document.createElement('div');\r\n nav.classList.add('incidentCard__nav');\r\n\r\n nextBtn = button.build({\r\n text: sections[currentSectionNumber + 1],\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: ['nextBtn', 'visible'],\r\n callback: showSection,\r\n });\r\n prevBtn = button.build({\r\n text: 'prev',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'prevBtn',\r\n callback: showSection,\r\n });\r\n\r\n nav.appendChild(prevBtn);\r\n nav.appendChild(nextBtn);\r\n\r\n return nav;\r\n }\r\n function buildActionBtns() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap', 'incidentCard__actionBtns');\r\n\r\n saveBtn = button.build({\r\n text: isNewIncident ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['incidentSave', 'disabled'],\r\n callback: function () {\r\n saveBtn.classList.add('disabled');\r\n incident.save(isNewIncident);\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: incident.delete,\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: incident.cancel,\r\n });\r\n\r\n if ($.session.incidentTrackingUpdate || $.session.incidentTrackingInsert) {\r\n btnWrap.appendChild(saveBtn);\r\n }\r\n if (!isNewIncident && $.session.incidentTrackingUpdate && $.session.incidentTrackingDelete) {\r\n btnWrap.appendChild(deleteBtn);\r\n }\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildSections() {\r\n var wrap = document.createElement('div');\r\n wrap.classList.add('incidentCard__sections');\r\n\r\n consumersSection = itConsumerSection.build({ pageNumber: '0' }, itConsumerInvolved);\r\n detailsSection = itDetailsSection.build({ pageNumber: '1' }, itReviewData);\r\n employeeSection = itEmployeeSection.build({ pageNumber: '2' }, itEmployeesInvolved);\r\n peopleSection = itPeopleSection.build({ pageNumber: '3' }, itOthersInvolved);\r\n\r\n wrap.appendChild(consumersSection);\r\n wrap.appendChild(detailsSection);\r\n wrap.appendChild(employeeSection);\r\n wrap.appendChild(peopleSection);\r\n\r\n return wrap;\r\n }\r\n\r\n function buildCard(data) {\r\n if (!data) {\r\n isNewIncident = true;\r\n reviewData = undefined;\r\n itConsumerInvolved = undefined;\r\n itReviewData = undefined;\r\n itEmployeesInvolved = undefined;\r\n itOthersInvolved = undefined;\r\n } else {\r\n isNewIncident = false;\r\n reviewData = data;\r\n itConsumerInvolved = reviewData.itConsumerInvolved;\r\n itReviewData = reviewData.itReviewData;\r\n itEmployeesInvolved = reviewData.itEmployeesInvolved;\r\n itOthersInvolved = reviewData.itOthersInvolved;\r\n }\r\n\r\n incidentCard = document.createElement('div');\r\n incidentCard.classList.add('incidentCard');\r\n\r\n var cardNav = buildNav();\r\n cardActionBtns = buildActionBtns();\r\n var cardSections = buildSections();\r\n\r\n incidentCard.appendChild(cardNav);\r\n incidentCard.appendChild(cardSections);\r\n incidentCard.appendChild(cardActionBtns);\r\n\r\n var consumerSectionHasError = checkforRequiredConsumer();\r\n toggleSaveBtnStatus(consumerSectionHasError);\r\n\r\n return incidentCard;\r\n }\r\n\r\n function checkforRequiredConsumer() {\r\n // number of selected Consumers with an error ; length = 0 on initial display\r\n var selectedErroredConsumers = [].slice.call(\r\n document.querySelectorAll('.consumersWrap .consumerCard.error'),\r\n );\r\n // hasNoErrors = 0 means the \"Select a Consumer\" message is displayed\r\n var hasNoErrors = document.getElementsByClassName('consumerError hidden');\r\n\r\n if (hasNoErrors.length === 0) return true;\r\n\r\n if (selectedErroredConsumers.length === 0 || itConsumerInvolved) {\r\n return false; // false means don't disable the Save BTN\r\n } else {\r\n return true; // true means do disable the Save BTN\r\n }\r\n }\r\n function checkEntireIncidentCardforErrors() {\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n var peopleSectionHasErrors = itPeopleSection.checkRequiredFields();\r\n var consumerSectionHasErrors = checkforRequiredConsumer();\r\n\r\n if (detailSectionHasErrors || peopleSectionHasErrors || consumerSectionHasErrors) {\r\n toggleSaveBtnStatus(true);\r\n } else {\r\n toggleSaveBtnStatus(false);\r\n }\r\n }\r\n\r\n return {\r\n build: buildCard,\r\n toggleSave: toggleSaveBtnStatus,\r\n checkforRequiredConsumer,\r\n checkEntireIncidentCardforErrors,\r\n toggleActionBtns,\r\n };\r\n})();\r\n","const incidentOverview = (function () {\r\n // DOM Elements\r\n let overviewTable;\r\n //Incident Tracking Report Data\r\n let incidentTrackingEmailData = { emailSubject: 'Incidents [Composite] by Consumer, Date' };\r\n //filters\r\n let filterPopup;\r\n let filterBtn;\r\n let applyFilterBtn;\r\n let alphaDropdown;\r\n let locationDropdown;\r\n let consumerDropdown;\r\n let betaDropdown;\r\n let fromDateInput;\r\n let toDateInput;\r\n let categoryDropdown;\r\n let showDropdown;\r\n let consumerDropdownData;\r\n let btnWrap;\r\n let supervisorBtnWrap;\r\n let locationBtnWrap;\r\n let consumerBtnWrap;\r\n let employeeBtnWrap;\r\n let categoryBtnWrap;\r\n let fromDateBtnWrap;\r\n let toDateBtnWrap;\r\n // filter values for remembering\r\n let filterData = {\r\n alpha: null,\r\n alphaName: null,\r\n beta: null,\r\n betaName: null,\r\n location: null,\r\n locationName: null,\r\n consumer: null,\r\n consumerName: null,\r\n category: null,\r\n categoryName: null,\r\n fromDate: null,\r\n toDate: null,\r\n show:null,\r\n };\r\n // alpha beta stuff\r\n let changedSelectedAlphaBetas;\r\n let alphaBetaData;\r\n let selectedAlphaId;\r\n let selectedBetaData = {\r\n id: '',\r\n name: '',\r\n };\r\n let retrieveData = {\r\n token: '',\r\n locationId: '%',\r\n employeeId: null,\r\n supervisorId: '',\r\n subcategoryId: '%',\r\n fromDate: '',\r\n toDate: '',\r\n viewCaseLoad: $.session.incidentTrackingViewCaseLoad,\r\n };\r\n\r\n // Filtering\r\n //------------------------------------\r\n function populateSelectedFilterValues() {\r\n var selectedFilters = document.querySelector('.filteredByData');\r\n if (!selectedFilters) {\r\n selectedFilters = document.createElement('div');\r\n selectedFilters.classList.add('filteredByData');\r\n DOM.ACTIONCENTER.appendChild(selectedFilters);\r\n filterData.alphaName = $.session.LName + ', ' + $.session.Name;\r\n filterButtonSet();\r\n selectedFilters.appendChild(btnWrap); \r\n }\r\n\r\n if (filterData.locationName === null || filterData.locationName === 'All' || filterData.locationName === 'All Locations') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + filterData.locationName;\r\n }\r\n\r\n if (filterData.consumerName === null || filterData.consumerName === 'All' || filterData.consumerName === 'All Consumers') {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n btnWrap.removeChild(consumerBtnWrap);\r\n } else {\r\n btnWrap.appendChild(consumerBtnWrap);\r\n document.getElementById('consumerBtn').innerHTML = 'Consumer: ' + filterData.consumerName;\r\n }\r\n\r\n if (filterData.betaName === null || filterData.betaName === 'All' || filterData.betaName === 'All Employees') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + filterData.betaName;\r\n }\r\n if (filterData.categoryName === null || filterData.categoryName === 'All' || filterData.categoryName === 'All Categories') {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n btnWrap.removeChild(categoryBtnWrap); \r\n }\r\n else {\r\n btnWrap.appendChild(categoryBtnWrap);\r\n document.getElementById('categoryBtn').innerHTML = 'Category / Subcategory: ' + filterData.categoryName;\r\n }\r\n\r\n if (filterData.show === null || filterData.show === 'All' ) {\r\n btnWrap.appendChild(showBtnWrap);\r\n btnWrap.removeChild(showBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(showBtnWrap);\r\n document.getElementById('showBtn').innerHTML = 'Show: ' + filterData.show; \r\n }\r\n \r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + filterData.alphaName;\r\n document.getElementById('fromDateBtn').innerHTML = 'From Date: ' + UTIL.formatDateFromIso(filterData.fromDate);\r\n document.getElementById('toDateBtn').innerHTML = 'To Date: ' + UTIL.formatDateFromIso(filterData.toDate);\r\n\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n supervisorBtn = button.build({\r\n id: 'supervisorBtn',\r\n text: 'Supervisor: ' + filterData.alphaName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('supervisorBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + filterData.locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n consumerBtn = button.build({\r\n id: 'consumerBtn',\r\n text: 'Consumer: ' + filterData.consumerName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('consumerBtn') },\r\n });\r\n consumerCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('consumerBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + filterData.betaName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n categoryBtn = button.build({\r\n id: 'categoryBtn',\r\n text: 'Category / Subcategory: ' + filterData.categoryName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('categoryBtn') },\r\n });\r\n categoryCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('categoryBtn') },\r\n });\r\n\r\n showBtn = button.build({\r\n id: 'showBtn',\r\n text: 'Show: ' + filterData.show,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('showBtn') },\r\n });\r\n showCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('showBtn') },\r\n });\r\n\r\n fromDateBtn = button.build({\r\n id: 'fromDateBtn',\r\n text: 'From Date: ' + UTIL.formatDateFromIso(filterData.fromDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('fromDateBtn') },\r\n });\r\n\r\n toDateBtn = button.build({\r\n id: 'toDateBtn',\r\n text: 'To Date: ' + UTIL.formatDateFromIso(filterData.toDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('toDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n supervisorBtnWrap = document.createElement('div');\r\n supervisorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n supervisorBtnWrap.appendChild(supervisorBtn);\r\n btnWrap.appendChild(supervisorBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n consumerBtnWrap = document.createElement('div');\r\n consumerBtnWrap.classList.add('filterSelectionBtnWrap');\r\n consumerBtnWrap.appendChild(consumerBtn);\r\n consumerBtnWrap.appendChild(consumerCloseBtn);\r\n btnWrap.appendChild(consumerBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn);\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n categoryBtnWrap = document.createElement('div');\r\n categoryBtnWrap.classList.add('filterSelectionBtnWrap');\r\n categoryBtnWrap.appendChild(categoryBtn);\r\n categoryBtnWrap.appendChild(categoryCloseBtn);\r\n btnWrap.appendChild(categoryBtnWrap);\r\n\r\n showBtnWrap = document.createElement('div');\r\n showBtnWrap.classList.add('filterSelectionBtnWrap');\r\n showBtnWrap.appendChild(showBtn);\r\n showBtnWrap.appendChild(showCloseBtn);\r\n btnWrap.appendChild(showBtnWrap); \r\n\r\n fromDateBtnWrap = document.createElement('div');\r\n fromDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fromDateBtnWrap.appendChild(fromDateBtn);\r\n btnWrap.appendChild(fromDateBtnWrap);\r\n\r\n toDateBtnWrap = document.createElement('div');\r\n toDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n toDateBtnWrap.appendChild(toDateBtn);\r\n btnWrap.appendChild(toDateBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'locationBtn') {\r\n filterData.locationName = 'All';\r\n retrieveData.locationId = '%';\r\n filterData.location = '%'; \r\n }\r\n if (closeFilter == 'consumerBtn') {\r\n filterData.consumerName = 'All';\r\n retrieveData.consumerId = '%';\r\n filterData.consumer = '%';\r\n }\r\n if (closeFilter == 'employeeBtn') {\r\n retrieveData.employeeId = '%';\r\n filterData.beta = '%';\r\n filterData.betaName = 'All';\r\n }\r\n if (closeFilter == 'categoryBtn') {\r\n retrieveData.subcategoryId = '%';\r\n filterData.category = '%';\r\n filterData.categoryName = 'All';\r\n }\r\n\r\n if (closeFilter == 'showBtn') {\r\n filterData.show = 'All'; \r\n }\r\n\r\n populateSelectedFilterValues();\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, populateOverviewTable);\r\n } \r\n\r\n function saveFilterData(data) {\r\n filterData.alpha = data.alphaId ? data.alphaId : filterData.alpha;\r\n filterData.alphaName = data.alphaName ? data.alphaName : filterData.alphaName;\r\n filterData.beta = data.betaId ? data.betaId : filterData.beta;\r\n filterData.betaName = data.betaName ? data.betaName : filterData.betaName;\r\n filterData.location = data.locationId ? data.locationId : filterData.location;\r\n filterData.locationName = data.locationName ? data.locationName : data.locationName == '' ? null : filterData.locationName;\r\n filterData.consumer = data.consumerId ? data.consumerId : filterData.consumer;\r\n filterData.consumerName = data.consumerName ? data.consumerName : filterData.consumerName;\r\n filterData.category = data.categoryId ? data.categoryId : filterData.category;\r\n filterData.categoryName = data.categoryName ? data.categoryName : filterData.categoryName;\r\n filterData.fromDate = data.fromDate ? data.fromDate : filterData.fromDate;\r\n filterData.toDate = data.toDate ? data.toDate : filterData.toDate;\r\n filterData.show = data.show ? data.show : filterData.show;\r\n }\r\n function populateFilterDropdowns() {\r\n incidentTrackingAjax.getReviewPageLocations(populateLocationsDropdown);\r\n //incidentTrackingAjax.getReviewPageLocations(populateConsumersDropdown);\r\n getConsumerDropdownData();\r\n incidentTrackingAjax.getIncidentCategories(populateCategoriesDropdown);\r\n incidentTrackingAjax.getITReviewPageEmployeeListAndSubList(\r\n $.session.PeopleId,\r\n populateUserAndEmployeeDropdowns,\r\n ); \r\n }\r\n function getFromDateValue() {\r\n if (filterData.fromDate) return filterData.fromDate;\r\n\r\n var fromDate = convertDaysBack($.session.defaultIncidentTrackingDaysBack);\r\n filterData.fromDate = fromDate;\r\n return fromDate;\r\n }\r\n function getToDateValue() {\r\n if (filterData.toDate) return filterData.toDate;\r\n\r\n var today = UTIL.getTodaysDate();\r\n filterData.toDate = today;\r\n return today;\r\n }\r\n function buildFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({\r\n classNames: ['incidentTrackingFilterPopup'],\r\n });\r\n\r\n alphaDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Supervisor',\r\n style: 'secondary',\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n consumerDropdown = dropdown.build({\r\n dropdownId: 'consumerDropdown',\r\n label: 'Consumer',\r\n style: 'secondary',\r\n });\r\n betaDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Employee',\r\n style: 'secondary',\r\n });\r\n categoryDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Category/Subcategory',\r\n style: 'secondary',\r\n });\r\n showDropdown = dropdown.build({\r\n dropdownId: 'showDropdown',\r\n label: \"Show\",\r\n style: \"secondary\"\r\n });\r\n fromDateInput = input.build({\r\n label: 'From Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: getFromDateValue(),\r\n });\r\n toDateInput = input.build({\r\n label: 'To Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: getToDateValue(),\r\n });\r\n applyFilterBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n\r\n // Build Popup\r\n if (IsShow == 'ALL' || IsShow == 'supervisorBtn')\r\n filterPopup.appendChild(alphaDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'consumerBtn')\r\n filterPopup.appendChild(consumerDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(betaDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'categoryBtn')\r\n filterPopup.appendChild(categoryDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'showBtn') \r\n filterPopup.appendChild(showDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'fromDateBtn')\r\n filterPopup.appendChild(fromDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'toDateBtn')\r\n filterPopup.appendChild(toDateInput);\r\n\r\n filterPopup.appendChild(applyFilterBtn);\r\n\r\n // Populate Dropodowns\r\n populateFilterDropdowns();\r\n }\r\n function showFilterPopup(IsShow) {\r\n // popup\r\n buildFilterPopup(IsShow);\r\n POPUP.show(filterPopup);\r\n // Setup Events\r\n filterDropdownEventSetup();\r\n }\r\n function setupFiltering() {\r\n const filterAndReportsBtnsWrap = document.createElement('div');\r\n filterAndReportsBtnsWrap.classList.add('filterAndReportsBtnsWrap');\r\n\r\n function getFilterValues() {\r\n return (filterValues = {\r\n ITLocation: retrieveData.locationId,\r\n ITConsumer: retrieveData.consumerId ? retrieveData.consumerId : '%',\r\n ITFromDate: filterData.fromDate,\r\n ITToDate: filterData.toDate,\r\n });\r\n }\r\n // Helper function to create the main reports button on the module page\r\n function createMainReportButton(buttonsData) {\r\n return button.build({\r\n text: 'Reports',\r\n icon: 'add',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'reportBtn',\r\n callback: function () {\r\n // Iterate through each item in the buttonsData array\r\n buttonsData.forEach(function (buttonData) {\r\n buttonData.filterValues = getFilterValues();\r\n });\r\n\r\n generateReports.showReportsPopup(buttonsData);\r\n },\r\n });\r\n }\r\n\r\n reportsBtn = createMainReportButton([{ text: 'Incident Reporting Log' }]);\r\n\r\n DOM.ACTIONCENTER.appendChild(filterAndReportsBtnsWrap);\r\n filterAndReportsBtnsWrap.appendChild(reportsBtn);\r\n\r\n buildFilterPopup('ALL');\r\n }\r\n function filterDropdownEventSetup() {\r\n var tmpAlphaId;\r\n var tmpAlphaName;\r\n var tmpBetaId;\r\n var tmpBetaName;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpConsumerId;\r\n var tmpConsumerName;\r\n var tmpCategoryId;\r\n var tmpCategoryName;\r\n var tmpToDate;\r\n var tmpFromDate;\r\n var tmpShow;\r\n\r\n alphaDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedAlphaId = selectedOption.value;\r\n // update retrieveData obj\r\n retrieveData.supervisorId = selectedAlphaId;\r\n retrieveData.locationId = '%';\r\n retrieveData.consumerId = '%';\r\n retrieveData.employeeId = '%';\r\n retrieveData.subcategoryId = '%';\r\n retrieveData.viewCaseLoad = $.session.incidentTrackingViewCaseLoad;\r\n // temp cache data\r\n tmpAlphaId = selectedAlphaId;\r\n tmpAlphaName = selectedOption.innerHTML;\r\n // re populate beta dropwond based off selected alpha\r\n alphaBetaData.forEach(d => {\r\n if (d.alpha.personId === selectedAlphaId) {\r\n changedSelectedAlphaBetas = d.betas;\r\n populateBetas(d.betas);\r\n }\r\n });\r\n });\r\n betaDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n selectedBetaData.id = selectedOption.value;\r\n selectedBetaData.name = selectedOption.innerHTML;\r\n retrieveData.employeeId = selectedBetaData.id;\r\n\r\n // temp cache data\r\n tmpBetaId = selectedBetaData.id;\r\n tmpBetaName = selectedBetaData.name;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.locationId = selectedOption.value;\r\n // temp cache data \r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n consumerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.consumerId = selectedOption.value;\r\n // temp cache data\r\n tmpConsumerId = selectedOption.value;\r\n tmpConsumerName = selectedOption.innerHTML;\r\n });\r\n categoryDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n retrieveData.subcategoryId = selectedOption.value;\r\n // temp cache data\r\n tmpCategoryId = selectedOption.value;\r\n tmpCategoryName = selectedOption.innerHTML;\r\n });\r\n showDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n // temp cache data\r\n tmpShow = selectedOption.innerHTML; \r\n });\r\n toDateInput.addEventListener('change', event => {\r\n var selectedDate = event.target.value;\r\n if (selectedDate === '') {\r\n toDateInput.classList.add('error');\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n toDateInput.classList.remove('error');\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n retrieveData.toDate = selectedDate;\r\n filterData.toDate = selectedDate;\r\n toDateVal = selectedDate;\r\n // temp cache data\r\n tmpToDate = selectedDate;\r\n });\r\n fromDateInput.addEventListener('change', event => {\r\n var selectedDate = event.target.value;\r\n if (selectedDate === '') {\r\n fromDateInput.classList.add('error');\r\n applyFilterBtn.classList.add('disabled');\r\n } else {\r\n fromDateInput.classList.remove('error');\r\n applyFilterBtn.classList.remove('disabled');\r\n }\r\n retrieveData.fromDate = selectedDate;\r\n // temp cache data\r\n tmpFromDate = selectedDate;\r\n });\r\n\r\n applyFilterBtn.addEventListener('click', event => {\r\n POPUP.hide(filterPopup);\r\n saveFilterData({\r\n alphaId: tmpAlphaId,\r\n alphaName: tmpAlphaName,\r\n betaId: tmpBetaId,\r\n betaName: tmpBetaName,\r\n locationId: tmpLocationId,\r\n locationName: tmpLocationName,\r\n consumerId: tmpConsumerId,\r\n consumerName: tmpConsumerName,\r\n categoryId: tmpCategoryId,\r\n categoryName: tmpCategoryName,\r\n toDate: tmpToDate,\r\n fromDate: tmpFromDate,\r\n show: tmpShow\r\n });\r\n populateSelectedFilterValues();\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, populateOverviewTable);\r\n });\r\n }\r\n // Dropdowns\r\n //------------------------------------\r\n function populateAlphas(alphas) {\r\n var data = alphas.map(a => {\r\n var value = a.personId;\r\n var text = `${a.lastName}, ${a.firstName}`;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n if (filterData.alpha) {\r\n dropdown.populate(alphaDropdown, data, filterData.alpha);\r\n } else {\r\n dropdown.populate(alphaDropdown, data);\r\n filterData.alpha = data[0].value;\r\n filterData.alphaName = data[0].text;\r\n }\r\n }\r\n function populateBetas(betas) {\r\n var data = betas.map(b => {\r\n var value = b.personId;\r\n var text = `${b.lastName}, ${b.firstName}`;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n var filteredBetas = betas.filter(b => b.personId === filterData.beta);\r\n\r\n if (filteredBetas.length > 0) {\r\n dropdown.populate(betaDropdown, data, filterData.beta);\r\n } else {\r\n dropdown.populate(betaDropdown, data);\r\n filterData.betaName = 'All Employees';\r\n }\r\n }\r\n function populateUserAndEmployeeDropdowns(res) {\r\n function decipherXML(res) {\r\n var xmlDoc,\r\n allEmployees = [];\r\n xmlDoc = UTIL.parseXml(\r\n '' + res.getITReviewPageEmployeeListAndSubListResult,\r\n );\r\n\r\n var employeeobjectArray = [].slice.call(xmlDoc.getElementsByTagName('employeeobject'));\r\n employeeobjectArray.forEach(employeeObject => {\r\n var alphaNode = [].slice.call(employeeObject.getElementsByTagName('alpha'))[0];\r\n var betasNode = [].slice.call(employeeObject.getElementsByTagName('beta'));\r\n var alpha = {\r\n personId: [].slice.call(alphaNode.getElementsByTagName('personid'))[0].textContent,\r\n firstName: [].slice.call(alphaNode.getElementsByTagName('firstname'))[0].textContent,\r\n lastName: [].slice.call(alphaNode.getElementsByTagName('lastname'))[0].textContent,\r\n userName: [].slice.call(alphaNode.getElementsByTagName('username'))[0].textContent,\r\n };\r\n var betas = [];\r\n if (betasNode !== undefined) {\r\n betasNode.forEach(betaNode => {\r\n var beta = {\r\n personId: [].slice.call(betaNode.getElementsByTagName('personid'))[0].textContent,\r\n firstName: [].slice.call(betaNode.getElementsByTagName('firstname'))[0].textContent,\r\n lastName: [].slice.call(betaNode.getElementsByTagName('lastname'))[0].textContent,\r\n userName: [].slice.call(betaNode.getElementsByTagName('username'))[0].textContent,\r\n };\r\n betas.push(beta);\r\n });\r\n }\r\n var alphaAndBeta;\r\n if (betas.length > 0) {\r\n alphaAndBeta = {\r\n alpha: alpha,\r\n betas: betas,\r\n };\r\n } else {\r\n alphaAndBeta = {\r\n alpha: alpha,\r\n betas: [],\r\n };\r\n }\r\n allEmployees.push(alphaAndBeta);\r\n });\r\n return allEmployees;\r\n }\r\n\r\n alphaBetaData = decipherXML(res);\r\n var defaultAlpha;\r\n var alphas = [];\r\n // move default alpha to start\r\n alphaBetaData = alphaBetaData.filter(d => {\r\n if (d.alpha.personId === $.session.PeopleId) defaultAlpha = d;\r\n return d.alpha.personId !== $.session.PeopleId;\r\n });\r\n alphaBetaData.unshift(defaultAlpha);\r\n // set aside alphas\r\n alphaBetaData.forEach(d => {\r\n if (d !== undefined) {\r\n alphas.push(d.alpha);\r\n }\r\n });\r\n // initial population of dropdowns\r\n populateAlphas(alphas);\r\n if (!changedSelectedAlphaBetas) {\r\n populateBetas(alphaBetaData[0].betas);\r\n } else {\r\n populateBetas(changedSelectedAlphaBetas);\r\n }\r\n }\r\n function populateLocationsDropdown(res) {\r\n var data = res.map(r => {\r\n var value = r.ID;\r\n var text = r.Name;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n if (filterData.location) {\r\n dropdown.populate(locationDropdown, data, filterData.location);\r\n } else {\r\n dropdown.populate(locationDropdown, data);\r\n filterData.locationName = 'All Locations';\r\n }\r\n\r\n const showDropdownData = ([\r\n { id: 1, value: 'Unread', text: 'Unread' },\r\n { id: 2, value: 'Read', text: 'Read' },\r\n ]);\r\n showDropdownData.unshift({ id: null, value: 'All', text: 'All' }); \r\n dropdown.populate(showDropdown, showDropdownData, filterData.show); \r\n }\r\n\r\n function populateConsumersDropdown() {\r\n populateDropdownData = consumerDropdownData.map(el => {\r\n return {\r\n text: `${el.LN}, ${el.FN}`,\r\n value: el.id,\r\n };\r\n });\r\n populateDropdownData.unshift({ text: 'All', value: '%' });\r\n\r\n if (filterData.consumer) {\r\n dropdown.populate(consumerDropdown, populateDropdownData, filterData.consumer);\r\n } else {\r\n dropdown.populate(consumerDropdown, populateDropdownData);\r\n filterData.consumerName = 'All Consumers';\r\n }\r\n }\r\n\r\n function getConsumerDropdownData() {\r\n return new Promise((resolve, reject) => {\r\n caseNotesAjax.getConsumersForCNFilter(res => {\r\n consumerDropdownData = res;\r\n populateConsumersDropdown();\r\n resolve('success');\r\n });\r\n });\r\n }\r\n\r\n function populateCategoriesDropdown(res) {\r\n var data = res.map(r => {\r\n var value = r.subcategoryId;\r\n var text = r.incidentCategory;\r\n\r\n return {\r\n value,\r\n text,\r\n };\r\n });\r\n\r\n var defaultOption = {\r\n value: '%',\r\n text: 'All',\r\n };\r\n data.unshift(defaultOption);\r\n\r\n if (filterData.category) {\r\n dropdown.populate(categoryDropdown, data, filterData.category);\r\n } else {\r\n dropdown.populate(categoryDropdown, data);\r\n filterData.categoryName = 'All Categories';\r\n }\r\n }\r\n // Incident Overview Email Button and Popup\r\n async function showIncidentEmailPopup(incidentId) {\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n const incidentEmailPopup = POPUP.build({\r\n header: 'Email Report',\r\n id: 'sig_mainPopup',\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n const toAddress = input.build({\r\n label: 'Email To Addresses:',\r\n callbackType: 'input',\r\n id: 'toAddress',\r\n callback: event => {\r\n // If the toAddresses field is blank, disable the send button\r\n const inputField = document.getElementById('toAddress');\r\n if (inputField.value === '') {\r\n sendBtn.classList.add('disabled');\r\n } else {\r\n sendBtn.classList.remove('disabled');\r\n }\r\n\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.toAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const ccAddress = input.build({\r\n label: 'Email Cc Addresses:',\r\n callbackType: 'input',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.ccAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const bccAddress = input.build({\r\n label: 'Email Bcc Addresses:',\r\n callbackType: 'input',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.bccAddresses = event.target.value;\r\n },\r\n });\r\n\r\n const emailSubject = input.build({\r\n label: 'Email Subject:',\r\n callbackType: 'input',\r\n value: 'Incidents [Composite] by Consumer, Date',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.emailSubject = event.target.value;\r\n },\r\n });\r\n\r\n const emailBody = input.build({\r\n label: 'Email Body:',\r\n callbackType: 'input',\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n callback: event => {\r\n // set value of report email data to input value\r\n incidentTrackingEmailData.emailBody = event.target.value;\r\n },\r\n });\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const sendBtn = button.build({\r\n id: 'incidentEmailSendBtn',\r\n text: 'send',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n incidentTrackingAjax.generateIncidentTrackingReport(\r\n incidentId,\r\n checkIfITReportIsReadyInterval,\r\n );\r\n POPUP.hide(incidentEmailPopup);\r\n },\r\n });\r\n\r\n const cancelBtn = button.build({\r\n id: 'incidentEmailPopup_cancel',\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(incidentEmailPopup);\r\n },\r\n });\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n incidentEmailPopup.appendChild(toAddress);\r\n incidentEmailPopup.appendChild(ccAddress);\r\n incidentEmailPopup.appendChild(bccAddress);\r\n incidentEmailPopup.appendChild(emailSubject);\r\n incidentEmailPopup.appendChild(emailBody);\r\n\r\n const mainWrap = document.createElement('div');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(sendBtn);\r\n sendBtn.classList.add('disabled');\r\n btnWrap2.appendChild(cancelBtn);\r\n mainWrap.appendChild(btnWrap2);\r\n incidentEmailPopup.appendChild(mainWrap);\r\n\r\n POPUP.show(incidentEmailPopup);\r\n }\r\n\r\n // Repeatedly checks to see if the report is ready\r\n function checkIfITReportIsReadyInterval(res) {\r\n seconds = parseInt($.session.reportSeconds);\r\n intSeconds = seconds * 1000;\r\n interval = setInterval(async () => {\r\n await checkITReportExists(res);\r\n }, intSeconds);\r\n }\r\n\r\n async function checkITReportExists(res) {\r\n await incidentTrackingAjax.checkIfITReportExists(res, callITReport);\r\n }\r\n\r\n // Retrieves the report when it is ready\r\n function callITReport(res, reportScheduleId) {\r\n if (res.indexOf('1') === -1) {\r\n //do nothing\r\n } else {\r\n incidentTrackingAjax.sendIncidentTrackingReport(reportScheduleId, incidentTrackingEmailData);\r\n clearInterval(interval);\r\n reportRunning = false;\r\n\r\n // Reset values of email data\r\n incidentTrackingEmailData = { emailSubject: 'Incidents [Composite] by Consumer, Date' };\r\n }\r\n }\r\n\r\n // OVERVIEW TABLE\r\n //------------------------------------\r\n function buildOverviewTable() {\r\n populateSelectedFilterValues();\r\n\r\n if (!$.session.incidentTrackingEmailIncident) {\r\n var tableOptions = {\r\n tableId: 'incidentOverviewTable',\r\n heading: 'Incident Overview',\r\n columnHeadings: ['Location', 'Entered By', 'Date', 'Time', 'Type', 'Consumer(s) Involved'],\r\n };\r\n } else {\r\n var tableOptions = {\r\n tableId: 'incidentOverviewTable',\r\n heading: 'Incident Overview',\r\n columnHeadings: ['Location', 'Entered By', 'Date', 'Time', 'Type', 'Consumer(s) Involved'],\r\n endIcon: true,\r\n };\r\n }\r\n\r\n overviewTable = table.build(tableOptions);\r\n DOM.ACTIONCENTER.appendChild(overviewTable);\r\n }\r\n function populateOverviewTable(res) {\r\n var incidents = {};\r\n res.forEach(r => {\r\n if (!incidents[r.incidentId]) {\r\n incidents[r.incidentId] = r;\r\n } else {\r\n const dupName = incidents[r.incidentId].consumerName.includes(r.consumerName);\r\n if (!dupName) {\r\n incidents[r.incidentId].consumerName += `, ${r.consumerName}`;\r\n }\r\n incidents[r.incidentId].viewedBy += `, ${r.viewedBy}`;\r\n }\r\n });\r\n\r\n var keys = Object.keys(incidents);\r\n const removeArray = [];\r\n var count = 0;\r\n var data = keys\r\n .filter(k => {\r\n var obj = incidents[k];\r\n\r\n if ($.session.incidentTrackingViewPerm.length !== 0) {\r\n if (\r\n obj.description !== '' &&\r\n !$.session.incidentTrackingViewPerm.includes(obj.description.toLowerCase())\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n .map(key => {\r\n var obj = incidents[key];\r\n\r\n var rowId = obj.incidentId;\r\n var location = obj.locationName;\r\n var enteredBy = obj.supervisorName;\r\n var date = obj.incidentDate.split(' ')[0];\r\n var time = UTIL.convertFromMilitary(obj.incidentTime);\r\n var category = obj.incidentCategory;\r\n var consumersInvolved = obj.consumerName.replace(/\\|/g, ', ');\r\n var viewedOn = obj.viewedOn ? true : false;\r\n var orginUser =\r\n obj.originallyEnteredBy.toLowerCase() === $.session.UserId.toLowerCase() ? true : false;\r\n var userHasViewed = obj.viewedBy.includes($.session.UserId) ? true : false;\r\n var showBold;\r\n\r\n if (!orginUser && !userHasViewed) {\r\n showBold = true;\r\n }\r\n \r\n if (filterData.show == 'Read' && showBold) {\r\n removeArray.push(count);\r\n }\r\n else if (filterData.show == 'Unread' && !showBold) {\r\n removeArray.push(count);\r\n }\r\n count = count + 1;\r\n var incidentEmailBtn = document.createElement('button');\r\n incidentEmailBtn.classList.add('btn', 'btn--secondary', 'btn--contained');\r\n incidentEmailBtn.textContent = 'EMAIL';\r\n incidentEmailBtn.style.zIndex = '9999';\r\n\r\n if (!$.session.incidentTrackingEmailIncident) {\r\n return {\r\n id: rowId,\r\n values: [location, enteredBy, date, time, category, consumersInvolved],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n onClick: async event => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: rowId,\r\n userId: $.session.UserId,\r\n });\r\n DOM.scrollToTopOfPage();\r\n reviewIncident.init(event.target.id);\r\n },\r\n };\r\n } else {\r\n return {\r\n id: rowId,\r\n values: [location, enteredBy, date, time, category, consumersInvolved],\r\n attributes: [{ key: 'data-viewed', value: showBold }],\r\n endIcon: incidentEmailBtn.outerHTML,\r\n endIconCallback: e => {\r\n e.stopPropagation();\r\n var isParentRow = e.target.parentNode.classList.contains('table__row');\r\n if (!isParentRow) return;\r\n\r\n showIncidentEmailPopup(obj.incidentId);\r\n },\r\n onClick: async event => {\r\n await incidentTrackingAjax.updateIncidentViewByUser({\r\n token: $.session.Token,\r\n incidentId: rowId,\r\n userId: $.session.UserId,\r\n });\r\n DOM.scrollToTopOfPage();\r\n reviewIncident.init(event.target.id);\r\n },\r\n };\r\n }\r\n });\r\n\r\n for (let i = removeArray.length - 1; i >= 0; i--)\r\n data.splice(removeArray[i], 1);\r\n\r\n data.sort(function (a, b) {\r\n var dateOne = UTIL.formatDateToIso(a.values[2]);\r\n var dateTwo = UTIL.formatDateToIso(b.values[2]);\r\n dateOne = new Date(dateOne);\r\n dateTwo = new Date(dateTwo);\r\n var newDateOne = dateOne.getTime();\r\n var newDateTwo = dateTwo.getTime();\r\n\r\n var timeOne = a.values[3];\r\n var timeTwo = b.values[3];\r\n timeOne = UTIL.convertToMilitary(timeOne);\r\n timeTwo = UTIL.convertToMilitary(timeTwo);\r\n timeOne = parseFloat(`${parseInt(timeOne.split(':')[0])}.${parseInt(timeOne.split(':')[1])}`);\r\n timeTwo = parseFloat(`${parseInt(timeTwo.split(':')[0])}.${parseInt(timeTwo.split(':')[1])}`);\r\n\r\n if (newDateOne === newDateTwo) {\r\n return timeOne - timeTwo;\r\n }\r\n\r\n return newDateOne > newDateTwo ? -1 : 1;\r\n });\r\n \r\n table.populate(overviewTable, data);\r\n }\r\n\r\n function init() {\r\n setActiveModuleSectionAttribute('incidentTracking-overview');\r\n DOM.clearActionCenter();\r\n\r\n retrieveData.supervisorId = $.session.PeopleId;\r\n retrieveData.token = $.session.Token;\r\n retrieveData.viewCaseLoad = $.session.incidentTrackingViewCaseLoad;\r\n retrieveData.toDate = getToDateValue();\r\n retrieveData.fromDate = getFromDateValue();\r\n\r\n setupFiltering();\r\n\r\n //never need mini roster on reviews\r\n roster2.removeMiniRosterBtn();\r\n\r\n incidentTrackingAjax.getITReviewTableData(retrieveData, function (results) {\r\n buildOverviewTable();\r\n populateOverviewTable(results);\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const OODFormTransportation = (() => {\r\n\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n\r\n // buttons\r\nlet saveNoteBtn;\r\nlet saveAndNewNoteBtn;\r\nlet cancelNoteBtn;\r\nlet updateNoteBtn;\r\nlet deleteNoteBtn;\r\n\r\n// OOD Transportation Edit Data\r\nlet consumerId;\r\n//let personId;\r\nlet OODTransportationId;\r\nlet serviceDate;\r\nlet startTime;\r\nlet endTime;\r\nlet startLocation;\r\nlet endLocation;\r\nlet numberInVehicle; \r\n\r\n//OOD Transportation Data\r\nlet caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet referenceNumber;\r\n\r\nlet formReadOnly;\r\n\r\nlet currentEntryUserId;\r\n\r\n async function init(OODTransportationData, currentConsumer, selectedConsumerServiceId, selectedConsumerReferenceNumber, currentRecordUserId, selectedServiceDate, clickSource = 'OODGrid') {\r\n\r\n formReadOnly = false;\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (OODTransportationData && Object.keys(OODTransportationData).length !== 0) {\r\n // consumerId = OODTransportationData[0].consumerId; // consumer_id from consumers table for the selected consumer\r\n // personId = OODTransportationData[0].personId; //the person_id from the persons table of the logged in user\r\n OODTransportationId = OODTransportationData[0].OODTransportationId;\r\n serviceDate = OODTransportationData[0].serviceDate; // Service Date from page\r\n startTime = OODTransportationData[0].startTime; // Start Time from page\r\n endTime = OODTransportationData[0].endTime; // end Time from page\r\n numberInVehicle = OODTransportationData[0].numberInVehicle; // # In Vehicle Per Trip from page\r\n startLocation = OODTransportationData[0].startLocation; // Start Location Street/City from page\r\n endLocation = OODTransportationData[0].endLocation; // End Location Street/City from page\r\n userId = $.session.UserId; // user_id from users_groups of the user who made the last update to the entry\r\n \r\n } else {\r\n // consumerId = OODTransportationData[0].consumerId; // consumer_id from consumers table for the selected consumer\r\n // personId = OODTransportationData[0].personId; //the person_id from the persons table of the logged in user\r\n OODTransportationId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n startTime = '';\r\n endTime = '';\r\n numberInVehicle = '';\r\n startLocation = '';\r\n endLocation = '';\r\n userId = $.session.UserId;\r\n referenceNumber = selectedConsumerReferenceNumber; // the value from consumer_services_master.reference_number for the service selected from NEW ENTRY form in previous page\r\n\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Service Date',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n numberInVehicleInput = input.build({\r\n label: '# in Vehicle Per Trip',\r\n type: 'number',\r\n style: 'secondary',\r\n value: numberInVehicle === '0' || numberInVehicle === '0.00' ? '' : numberInVehicle,\r\n readonly: formReadOnly,\r\n attributes: [{ key: 'min', value: '0' }],\r\n });\r\n\r\n startLocationInput = input.build({\r\n label: 'Start Location Street/City',\r\n value: startLocation,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n endLocationInput = input.build({\r\n label: 'End Location Street/City',\r\n value: endLocation,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n checkRequiredFields()\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length === 0)) {\r\n insertFormData('save');\r\n } \r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n checkRequiredFields()\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length === 0)) {\r\n insertFormData('saveandNew');\r\n } \r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n //TODO JOE; Look at DElete\r\n deleteConfirmation(OODTransportationId); \r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Transportation - OOD Form 10';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1'); \r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput); \r\n inputContainer0.appendChild(numberInVehicleInput);\r\n\r\n container.appendChild(inputContainer0);\r\n \r\n container.appendChild(startLocationInput);\r\n container.appendChild(endLocationInput);\r\n \r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (OODTransportationId == '0') ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n (OODTransportationId == '0') ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn) ;\r\n\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n var numInVehicleInput = numberInVehicleInput.querySelector('input');\r\n\r\n if (numInVehicleInput.value === '' || numInVehicleInput.value === 0 || numInVehicleInput.value <= 0) {\r\n numberInVehicleInput.classList.add('error');\r\n } else {\r\n numberInVehicleInput.classList.remove('error');\r\n }\r\n\r\n var startLocInput = startLocationInput.querySelector('textarea');\r\n\r\n if (startLocInput.value === '') {\r\n startLocationInput.classList.add('error');\r\n } else {\r\n startLocationInput.classList.remove('error');\r\n }\r\n\r\n var endLocInput = endLocationInput.querySelector('textarea');\r\n\r\n if (endLocInput.value === '') {\r\n endLocationInput.classList.add('error');\r\n } else {\r\n endLocationInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled')\r\n }\r\n\r\n }\r\n\r\nfunction checkEndInputTime() {\r\n\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value))\r\n {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck')\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n \r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n}\r\n\r\nfunction checkStartInputTime() {\r\n\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value))\r\n {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n}\r\n\r\nfunction checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet =\r\n tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) >\r\n Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n}\r\n\r\n\r\nfunction validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n}\r\n\r\n function setupEvents() {\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n \r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n numberInVehicleInput.addEventListener('input', event => {\r\n numberInVehicle = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n numberInVehicleInput.addEventListener('keypress', event => {\r\n numberInVehicle = event.target.value;\r\n if (event.key === '.' && event.target.value.indexOf('.') !== -1) {\r\n // event.target.value = event.target.value.substr(0, (event.target.value.length - 1))\r\n event.preventDefault();\r\n return;\r\n }\r\n if (event.keyCode < 48 || event.keyCode > 57) {\r\n event.preventDefault();\r\n return;\r\n }\r\n });\r\n\r\n startLocationInput.addEventListener('input', event => {\r\n startLocation = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n endLocationInput.addEventListener('input', event => {\r\n endLocation = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n \r\n \r\n }\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n\t\t const wrap = document.createElement('div');\r\n\t\t wrap.classList.add('planConsumerCard');\r\n\t\r\n\t\t wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n OODTransportationId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n numberInVehicle,\r\n startLocation,\r\n endLocation,\r\n userId,\r\n };\r\n\r\n OODAjax.updateForm10TransportationData(data, function(results) {\r\n if (results.includes(\"Error\")) {\r\n return;\r\n } else {\r\n\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n\r\n }\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n numberInVehicle,\r\n startLocation,\r\n endLocation, \r\n userId,\r\n referenceNumber,\r\n };\r\n\r\n OODAjax.insertForm10TransportationData(data, function(results) {\r\n if (results.includes(\"Error\")) {\r\n return;\r\n } else {\r\n\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n } \r\n }\r\n });\r\n }\r\n //TODO JOE : Look into DElete for Transporation\r\n function deleteConfirmation(OODTransportationId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODForm10TransportationEntry(OODTransportationId); \r\n if (result.deleteOODForm10TransportationEntryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n return {\r\n init,\r\n \r\n };\r\n})();\r\n","const 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 OODForm4MonthlyPlacement = (() => {\r\n\r\n //Inputs\r\n let serviceDateInput;\r\n let startTimeInput;\r\n let endTimeInput;\r\n let SAMLevelDropdown;\r\n let employerDropdown;\r\n let contactMethodDropdown;\r\n let jobSeekerPresentDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let outcomeDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let TSCNotifiedDropdown; //-- REMOVED FROM FORM ON 4/8/22\r\n let applicationSubmittedDropdown; \r\n let interviewDropdown; \r\n let bilingualSupplementDropdown;\r\n let narrativeOutcomeInput;\r\n\r\n // buttons\r\nlet saveNoteBtn;\r\nlet saveAndNewNoteBtn;\r\nlet cancelNoteBtn;\r\nlet updateNoteBtn;\r\nlet deleteNoteBtn;\r\n\r\n// Case Note Edit Data\r\nlet consumerId;\r\nlet caseNoteId;\r\nlet serviceDate;\r\nlet startTime;\r\nlet endTime;\r\nlet SAMLevel;\r\nlet employer;\r\nlet contactType;\r\nlet jobSeekerPresent;\r\nlet outcome;\r\nlet TSCNotified;\r\nlet bilingualSupplement;\r\nlet notes;\r\nlet application;\r\nlet interview;\r\n\r\n//Case Note Data\r\nlet caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet referenceNumber;\r\n\r\nlet formReadOnly = false;\r\n\r\nlet currentEntryUserId;\r\n\r\n async function init(caseNoteData, currentConsumer, selectedConsumerServiceId, selectedConsumerReferenceNumber, currentRecordUserId, selectedServiceDate, clickSource = 'OODGrid') {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate;\r\n startTime = caseNoteData[0].startTime;\r\n endTime = caseNoteData[0].endTime;\r\n SAMLevel = caseNoteData[0].SAMLevel;\r\n employer = caseNoteData[0].employer;\r\n contactType = caseNoteData[0].contactType;\r\n jobSeekerPresent = caseNoteData[0].jobSeekerPresent; //-- REMOVED FROM FORM ON 4/8/22\r\n outcome = caseNoteData[0].outcome; //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified = caseNoteData[0].TSCNotified; //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement = caseNoteData[0].bilingualSupplement;\r\n notes = caseNoteData[0].notes;\r\n application = caseNoteData[0].application;\r\n interview = caseNoteData[0].interview;\r\n \r\n } else {\r\n\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n startTime = '';\r\n endTime = '';\r\n SAMLevel = '';\r\n employer = '';\r\n contactType = '';\r\n jobSeekerPresent = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n outcome = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified = ''; //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement = '';\r\n notes = '';\r\n application = '';\r\n interview = '';\r\n\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Service Date',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: \"SAMLevelDropdown\",\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n \r\n employerDropdown = dropdown.build({\r\n label: \"Employer\",\r\n dropdownId: \"employerDropdown\",\r\n value: employer,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: \"Contact Method\",\r\n dropdownId: \"contactMethodDropdown\",\r\n value: contactType,\r\n readonly: formReadOnly,\r\n }); \r\n\r\n applicationSubmittedDropdown = dropdown.build({\r\n label: 'Application Submitted',\r\n dropdownId: \"applicationSubmittedDropdown\",\r\n value: application,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n interviewDropdown = dropdown.build({\r\n label: 'Interview',\r\n dropdownId: \"interviewDropdown\",\r\n value: interview,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n jobSeekerPresentDropdown = dropdown.build({\r\n label: 'Job Seeker Present ?',\r\n dropdownId: \"jobSeekerPresentDropdown\",\r\n value: jobSeekerPresent,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n outcomeDropdown = dropdown.build({\r\n label: 'Outcome',\r\n dropdownId: \"outcomeDropdown\",\r\n value: outcome,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotifiedDropdown = dropdown.build({\r\n label: 'TSC Notified ?',\r\n dropdownId: \"TSCNotifiedDropdown\",\r\n value: TSCNotified,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n bilingualSupplementDropdown = dropdown.build({\r\n label: 'Bilingual Supplement ?',\r\n dropdownId: \"bilingualSupplementDropdown\",\r\n value: bilingualSupplement,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n narrativeOutcomeInput = input.build({\r\n label: 'Narrative/Outcome',\r\n value: notes,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n insertFormData('save'); \r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId); \r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Monthly Placement - OOD Form 4';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1'); \r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n \r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer1.appendChild(SAMLevelDropdown);\r\n inputContainer1.appendChild(employerDropdown);\r\n inputContainer1.appendChild(contactMethodDropdown);\r\n \r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n //inputContainer2.appendChild(jobSeekerPresentDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n //inputContainer2.appendChild(outcomeDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n //inputContainer2.appendChild(TSCNotifiedDropdown); //-- REMOVED FROM FORM ON 4/8/22\r\n inputContainer2.appendChild(applicationSubmittedDropdown);\r\n inputContainer2.appendChild(interviewDropdown);\r\n inputContainer2.appendChild(bilingualSupplementDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeOutcomeInput);\r\n \r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (caseNoteId == '0') ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n (caseNoteId == '0') ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn) ;\r\n\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateConsumerEmployersDropdown(currentConsumer.id);\r\n populateContactTypeDropdown();\r\n populateOutcomeDropdown();\r\n \r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n\r\n\tasync function populateConsumerEmployersDropdown(currentConsumerId) { \r\n\t\t\r\n\t\tconst {\r\n\t\t\tgetActiveEmployersResult: employers,\r\n\t\t} = await OODAjax.getActiveEmployersAsync();\r\n\t // const templates = WorkflowViewerComponent.getTemplates();\r\n\r\n\t let data = employers.map((employr) => ({\r\n\t\t id: employr.employerId, \r\n\t\t value: employr.employerId, \r\n\t\t text: (employr.address1 == '') ? employr.employerName : employr.employerName + ' -- ' + employr.address1,\r\n\t })); \r\n\r\n \t\tconst index = data.findIndex((x) => x.id == employer);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note employer not in the employers DDL\r\n\t\t\t\t\t\t}\r\n\r\n var filtereddata = data.filter((x) => x.id != 0);\r\n\r\n\t filtereddata.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n\t dropdown.populate(\"employerDropdown\", filtereddata, employer); \r\n }\r\n\r\n\t async function populateContactTypeDropdown() { \r\n\t\t\r\n const {\r\n getContactTypesResult: contactTypes,\r\n } = await OODAjax.getContactTypesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactTypes.map((contactType) => ({\r\n id: contactType.contactCode, \r\n value: contactType.contactCode, \r\n text: contactType.contactCaption,\r\n })); \r\n\r\n const index = data.findIndex((x) => x.id == contactType);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note contactType not in the contactTypes DDL\r\n\t\t\t\t\t\t}\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"contactMethodDropdown\", data, contactType); \r\n }\r\n\r\n async function populateOutcomeDropdown() { \r\n\t\t\r\n const {\r\n getOutcomesResult: outcomes,\r\n } = await OODAjax.getOutcomesAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = outcomes.map((outcome) => ({\r\n id: outcome.outcomeCode, \r\n value: outcome.outcomeCode, \r\n text: outcome.outcomeCaption,\r\n })); \r\n\r\n const index = data.findIndex((x) => x.id == outcome);\r\n\t\t\t\t\t\tif (index === -1) {\r\n\t\t\t\t\t\t\t// case note outcome not in the outcomes DDL\r\n\t\t\t\t\t\t}\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"outcomeDropdown\", data, outcome); \r\n }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n \r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // dropdown.populate(jobSeekerPresentDropdown, yesNoDropdownData, jobSeekerPresent); //-- REMOVED FROM FORM ON 4/8/22\r\n // dropdown.populate(TSCNotifiedDropdown, yesNoDropdownData, TSCNotified); //-- REMOVED FROM FORM ON 4/8/22\r\n dropdown.populate(applicationSubmittedDropdown, yesNoDropdownData, application); \r\n dropdown.populate(interviewDropdown, yesNoDropdownData, interview); \r\n dropdown.populate(bilingualSupplementDropdown, yesNoDropdownData, bilingualSupplement);\r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!employer || employer === '') {\r\n employerDropdown.classList.add('error');\r\n } else {\r\n employerDropdown.classList.remove('error');\r\n }\r\n\r\n if (!contactType || contactType === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n if (!application || application === '') {\r\n applicationSubmittedDropdown.classList.add('error');\r\n } else {\r\n applicationSubmittedDropdown.classList.remove('error');\r\n }\r\n\r\n if (!interview || interview === '') {\r\n interviewDropdown.classList.add('error');\r\n } else {\r\n interviewDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!jobSeekerPresent || jobSeekerPresent === '') {\r\n jobSeekerPresentDropdown.classList.add('error');\r\n } else {\r\n jobSeekerPresentDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!outcome || outcome === '') {\r\n outcomeDropdown.classList.add('error');\r\n } else {\r\n outcomeDropdown.classList.remove('error');\r\n }\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n if (!TSCNotified || TSCNotified === '') {\r\n TSCNotifiedDropdown.classList.add('error');\r\n } else {\r\n TSCNotifiedDropdown.classList.remove('error');\r\n }\r\n\r\n if (!bilingualSupplement || bilingualSupplement === '') {\r\n bilingualSupplementDropdown.classList.add('error');\r\n } else {\r\n bilingualSupplementDropdown.classList.remove('error');\r\n }\r\n\r\n var noteInput = narrativeOutcomeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeOutcomeInput.classList.add('error');\r\n } else {\r\n narrativeOutcomeInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n\r\n }\r\n \r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled')\r\n }\r\n\r\n }\r\n\r\nfunction checkEndInputTime() {\r\n\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value))\r\n {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck')\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n \r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n \r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n}\r\n\r\nfunction checkStartInputTime() {\r\n\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value))\r\n {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n}\r\n\r\nfunction checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet =\r\n tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) >\r\n Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n}\r\n\r\n\r\nfunction validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n}\r\n\r\n function setupEvents() {\r\n\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n employerDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n employer = '';\r\n } else {\r\n employer = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n contactType = '';\r\n } else {\r\n contactType = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n applicationSubmittedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n application = '';\r\n } else {\r\n application = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n interviewDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n interview = '';\r\n } else {\r\n interview = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n jobSeekerPresentDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n jobSeekerPresent = '';\r\n } else {\r\n jobSeekerPresent = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n outcomeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n outcome = '';\r\n } else {\r\n outcome = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotifiedDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n TSCNotified = '';\r\n } else {\r\n TSCNotified = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n bilingualSupplementDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n bilingualSupplement = '';\r\n } else {\r\n bilingualSupplement = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n \r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeOutcomeInput.addEventListener('input', event => {\r\n notes = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n\t\t});\r\n \r\n }\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n\t\t const wrap = document.createElement('div');\r\n\t\t wrap.classList.add('planConsumerCard');\r\n\t\r\n\t\t wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n employer,\r\n contactType,\r\n jobSeekerPresent, //-- REMOVED FROM FORM ON 4/8/22\r\n outcome, //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified, //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement,\r\n notes,\r\n userId,\r\n application, \r\n interview,\r\n };\r\n\r\n OODAjax.updateForm4MonthlyPlacementEditData(data, function(results) {\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n \r\n });\r\n\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n employer,\r\n contactType,\r\n jobSeekerPresent, //-- REMOVED FROM FORM ON 4/8/22\r\n outcome, //-- REMOVED FROM FORM ON 4/8/22\r\n TSCNotified, //-- REMOVED FROM FORM ON 4/8/22\r\n bilingualSupplement,\r\n notes,\r\n caseManagerId,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n application, \r\n interview,\r\n };\r\n\r\n OODAjax.insertForm4MonthlyPlacementEditData(data, function(results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n\r\n }\r\n\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId); \r\n if (result.deleteOODFormEntryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n return {\r\n init,\r\n \r\n };\r\n})();\r\n","const OODForm4MonthlySummary = (() => {\r\n\r\n // Inputs\r\n let monthYearDropdown;\r\n let referenceNumberDropdown;\r\n let nextScheduledReviewInput;\r\n let employmentGoalInput;\r\n let referralQuestionsInput;\r\n let individualsInputInput;\r\n let issuesConcernswithProgressInput;\r\n let planGoalsNextMonthInput;\r\n let numberConsumerContactsInput;\r\n let numberEmployerContactsbyConsumerInput;\r\n let numberEmployerContactsbyStaffInput;\r\n let numberMonthsinJobDevelopmentInput;\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown\r\n let emReviewDateDBValue; // monthYearDropdown \r\n let emReferenceNumber; // referenceNumberDropdown\r\n let emNextScheduledReview; // nextScheduledReviewInput\r\n let emEmploymentGoal; // employmentGoalInput\r\n let emReferralQuestions; //referralQuestionsInput\r\n let emIndivInputonSearch; // individualsInputInput\r\n let emPotentialIssueswithProgress; // issuesConcernswithProgressInput\r\n let emPlanGoalsNextMonth; // planGoalsNextMonthInput\r\n let emNumberofConsumerContacts; // numberConsumerContactsInput\r\n let emNumberEmployerContactsbyConsumer; // numberEmployerContactsbyConsumerInput\r\n let emNumberEmployerContactsbyStaff; // numberEmployerContactsbyStaffInput\r\n let emNumberMonthsJobDevelopment; // numberMonthsinJobDevelopmentInput\r\n\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n//let caseManagerId;\r\nlet userId;\r\nlet serviceId;\r\nlet reviewStartDate;\r\nlet reviewEndDate;\r\n\r\nlet formReadOnly = false;\r\nconst FORMNUMBER = '4'; // Form 4\r\n\r\nlet OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(emReviewData, currentConsumer, selectedServiceId, currentRecordUserId, clickSource = 'OODGrid') {\r\n\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate); \r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate); \r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emEmploymentGoal = emReviewData.emEmploymentGoal;\r\n emReferralQuestions = emReviewData.emReferralQuestions; //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch = emReviewData.emIndivInputonSearch;\r\n emPotentialIssueswithProgress = emReviewData.emPotentialIssueswithProgress;\r\n emPlanGoalsNextMonth = emReviewData.emPlanGoalsNextMonth; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts = emReviewData.emNumberofConsumerContacts; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer = emReviewData.emNumberEmployerContactsbyConsumer; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff = emReviewData.emNumberEmployerContactsbyStaff; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment = emReviewData.emNumberMonthsJobDevelopment; //-- REMOVED FROM FORM ON 4/7/22\r\n\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear(); \r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1); \r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emEmploymentGoal = '';\r\n emReferralQuestions = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch = '';\r\n emPotentialIssueswithProgress = '';\r\n emPlanGoalsNextMonth = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment = ''; //-- REMOVED FROM FORM ON 4/7/22\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n \r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n \r\n if ((userId !== currentRecordUserId)) {\r\n formReadOnly = true;\r\n }\r\n\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer)\r\n\r\n let container = document.createElement(\"div\");\r\n container.classList.add(\"monthlyForm\");\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Monthly Placement -- OOD Form 4 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: \"monthYearDropdown\",\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: \"referenceNumberDropdown\",\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n\t\t\ttype: 'date',\r\n\t\t\tlabel: 'Next Scheduled Review',\r\n\t\t\tstyle: 'secondary',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n\t\t\t//value: filterValues.serviceDateStart\r\n\t\t });\r\n\r\n // employmentGoalInput textarea\r\n employmentGoalInput = input.build({\r\n label: 'Employment Goal',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emEmploymentGoal,\r\n readonly: formReadOnly,\r\n charLimit: 256,\r\n forceCharLimit: true,\r\n });\r\n // employmentGoalInput.classList.add('OODTextArea');\r\n\r\n // referralQuestionsInput textarea -- REMOVED FROM FORM ON 4/7/22\r\n referralQuestionsInput = input.build({\r\n label: 'Referral Questions',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emReferralQuestions,\r\n readonly: formReadOnly,\r\n });\r\n // referralQuestionsInput.classList.add('introTextArea');\r\n\r\n // individualsInput textarea\r\n individualsInputInput = input.build({\r\n label: `Individual's Self-Assessment`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emIndivInputonSearch,\r\n readonly: formReadOnly,\r\n });\r\n // individualsInputInput.classList.add('introTextArea');\r\n \r\n // issuesConcernswithProgress textarea\r\n issuesConcernswithProgressInput = input.build({\r\n label: `Provider's Assessment & Recommendations`,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emPotentialIssueswithProgress,\r\n readonly: formReadOnly,\r\n });\r\n // issuesConcernswithProgressInput.classList.add('introTextArea');\r\n \r\n // planGoalsNextMonth textarea -- REMOVED FROM FORM ON 4/7/22\r\n planGoalsNextMonthInput = input.build({\r\n label: 'Plan/Goals for Next Month',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emPlanGoalsNextMonth,\r\n readonly: formReadOnly,\r\n });\r\n // planGoalsNextMonthInput.classList.add('introTextArea');\r\n planGoalsNextMonthInput.addEventListener('input', e => {\r\n emPlanGoalsNextMonth = e.target.value;\r\n // updateIntroduction();\r\n });\r\n \r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberConsumerContactsInput = input.build({\r\n id: \"numberConsumerContactsInput\",\r\n label: \"No. of Consumer Contacts\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberofConsumerContacts,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyConsumerInput = input.build({\r\n id: \"numberEmployerContactsbyConsumerInput\",\r\n label: \"No. of Employer Contacts by Consumer\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberEmployerContactsbyConsumer,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyStaffInput = input.build({\r\n id: \"numberEmployerContactsbyStaffInput\",\r\n label: \"No. of Employer Contacts by Staff\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberEmployerContactsbyStaff,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberMonthsinJobDevelopmentInput = input.build({\r\n id: \"numberMonthsinJobDevelopmentInput\",\r\n label: \"No. of Months in Job Development\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: emNumberMonthsJobDevelopment,\r\n readonly: formReadOnly,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => { \r\n insertFormData('save'); \r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => { \r\n updateFormData(); \r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style : 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId); \r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style : 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n \r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n container.appendChild(employmentGoalInput); \r\n container.appendChild(individualsInputInput);\r\n container.appendChild(issuesConcernswithProgressInput);\r\n\r\n // container.appendChild(planGoalsNextMonthInput); //-- REMOVED FROM FORM ON 4/7/22\r\n// container.appendChild(referralQuestionsInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // const inputContainer2 = document.createElement('div');\r\n // inputContainer2.classList.add('ood_form4monthlysummary_inputContainer2');\r\n\r\n // inputContainer2.appendChild(numberConsumerContactsInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // inputContainer2.appendChild(numberEmployerContactsbyConsumerInput); //-- REMOVED FROM FORM ON 4/7/22\r\n // inputContainer2.appendChild(numberEmployerContactsbyStaffInput); //-- REMOVED FROM FORM ON 4/7/22\r\n //// inputContainer2.appendChild(numberMonthsinJobDevelopmentInput); //-- REMOVED FROM FORM ON 4/7/22\r\n\r\n // container.appendChild(inputContainer2);\r\n\r\n let updatecontainer = document.createElement(\"div\");\r\n updatecontainer.classList.add(\"updatecontainer\");\r\n\r\n let updatemessage = document.createElement(\"div\");\r\n updatemessage.classList.add(\"updatemessage\");\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n (emReviewId == '0') ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n (emReviewId == '0') ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn) ;\r\n\r\n let btnWrap2 = document.createElement(\"div\");\r\n btnWrap2.classList.add(\"btnWrap\");\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement(\"div\");\r\n btnRow.classList.add(\"btnRow\");\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n \r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n\t // container.appendChild(OODMonthlySummariesTable);\r\n \r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateReferenceNumberDropdown();\r\n populateStaticDropDowns();\r\n\r\n checkRequiredFields(); \r\n\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate = (thisDate.getMonth() + 1).toString().padStart(2, \"0\") + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n\r\n }\r\n\r\n async function populateReferenceNumberDropdown() { \r\n \r\n setReviewStartandEndDates();\r\n\r\n const {\r\n getConsumerReferenceNumbersResult: referencenumbers,\r\n } = await OODAjax.getConsumerReferenceNumbersAsync(consumerId, reviewStartDate, reviewEndDate, FORMNUMBER);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map((referencenumber) => ({\r\n id: referencenumber.referenceNumber, \r\n value: referencenumber.referenceNumber, \r\n text: referencenumber.referenceNumber,\r\n })); \r\n\r\n \r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n } \r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"referenceNumberDropdown\", data, emReferenceNumber); \r\n\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue)\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n\r\n // no reference Numbers\r\n\t\t\tlet noReferenceNumberPopup = POPUP.build({\r\n\t\t\t\theader: \"No Reference Numbers Found\",\r\n\t\t\t\thideX: true,\r\n\t\t\t\tid: \"noReferenceNumberPopup\"\r\n\t\t\t}); \r\n\r\n\t\t\tlet OKBtn = button.build({\r\n\t\t\t\ttext: 'Ok',\r\n\t\t\t\tstyle: 'secondary',\r\n\t\t\t\ttype: 'contained',\r\n\t\t\t\tcallback: function () {\r\n\t\t\t\t POPUP.hide(noReferenceNumberPopup);\r\n\t\t\t\t // overlay.hide();\r\n\r\n\t\t\t\t},\r\n\t\t\t });\r\n\r\n\t\t\t let btnWrap = document.createElement(\"div\");\r\n\t\t\t let warningMessage = document.createElement('p');\r\n\t\t\t warningMessage.innerHTML = 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n\t\t\t btnWrap.classList.add(\"btnWrap\");\r\n\t\t\t btnWrap.appendChild(OKBtn); \r\n\t\t\t //noServicesPopup.appendChild(consumerServicesDropdown);\r\n\t\t\t noReferenceNumberPopup.appendChild(warningMessage);\r\n\t\t\t noReferenceNumberPopup.appendChild(btnWrap);\r\n\t\t\t \toverlay.show();\r\n\t\t\t POPUP.show(noReferenceNumberPopup);\r\n\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n \r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate: (firstDay.getMonth() +1).toString().padStart(2,\"0\") + '/' + (firstDay.getFullYear().toString()),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map((thisDate) => ({\r\n id: thisDate.fulldate, \r\n value: thisDate.partialdate, \r\n text: thisDate.partialdate,\r\n })); \r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value \r\n dropdown.populate(\"monthYearDropdown\", data, emReviewDate); \r\n }\r\n\r\n function checkRequiredFields() {\r\n\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var employmentGoalInpt = employmentGoalInput.querySelector('textarea');\r\n if (employmentGoalInpt.value === '') {\r\n employmentGoalInput.classList.add('error');\r\n } else {\r\n employmentGoalInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var referralQuestionsInpt = referralQuestionsInput.querySelector('textarea'); //-- REMOVED FROM FORM ON 4/7/22\r\n if (referralQuestionsInpt.value === '') {\r\n referralQuestionsInput.classList.add('error');\r\n } else {\r\n referralQuestionsInput.classList.remove('error');\r\n }\r\n\r\n var individualsInputInpt = individualsInputInput.querySelector('textarea');\r\n if (individualsInputInpt.value === '') {\r\n individualsInputInput.classList.add('error');\r\n } else {\r\n individualsInputInput.classList.remove('error');\r\n }\r\n\r\n var issuesConcernswithProgressInpt = issuesConcernswithProgressInput.querySelector('textarea');\r\n if (issuesConcernswithProgressInpt.value === '') {\r\n issuesConcernswithProgressInput.classList.add('error');\r\n } else {\r\n issuesConcernswithProgressInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var planGoalsNextMonthInpt = planGoalsNextMonthInput.querySelector('textarea');\r\n if (planGoalsNextMonthInpt.value === '') {\r\n planGoalsNextMonthInput.classList.add('error');\r\n } else {\r\n planGoalsNextMonthInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberConsumerContactsInpt = numberConsumerContactsInput.querySelector('#numberConsumerContactsInput'); \r\n if (numberConsumerContactsInpt.value === '' ) {\r\n numberConsumerContactsInput.classList.add('error');\r\n } else {\r\n numberConsumerContactsInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberEmployerContactsbyConsumerInpt = numberEmployerContactsbyConsumerInput.querySelector('#numberEmployerContactsbyConsumerInput');\r\n if (numberEmployerContactsbyConsumerInpt.value === '' ) {\r\n numberEmployerContactsbyConsumerInput.classList.add('error');\r\n } else {\r\n numberEmployerContactsbyConsumerInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberEmployerContactsbyStaffInpt = numberEmployerContactsbyStaffInput.querySelector('#numberEmployerContactsbyStaffInput');\r\n if (numberEmployerContactsbyStaffInpt.value === '' ) {\r\n numberEmployerContactsbyStaffInput.classList.add('error');\r\n } else {\r\n numberEmployerContactsbyStaffInput.classList.remove('error');\r\n }\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n var numberMonthsinJobDevelopmentInpt = numberMonthsinJobDevelopmentInput.querySelector('#numberMonthsinJobDevelopmentInput');\r\n if (numberMonthsinJobDevelopmentInpt.value === '' ) {\r\n numberMonthsinJobDevelopmentInput.classList.add('error');\r\n } else {\r\n numberMonthsinJobDevelopmentInput.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n \r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n \r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if ((hasErrors.length !== 0) || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n \r\n if ((userId !== currentEntryUserId) || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled')\r\n }\r\n \r\n }\r\n\r\n function setupEvents() {\r\n \r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] -1, 1)\r\n emReviewDateDBValue = updatedFullDate;\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n \r\n if (selectedOption.value == \"SELECT\") {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n \r\n });\r\n // nextScheduledReviewInput.addEventListener('keydown', event => {\r\n // event.preventDefault();\r\n // event.stopPropagation();\r\n // });\r\n\r\n\r\n employmentGoalInput.addEventListener('input', event => {\r\n emEmploymentGoal = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n referralQuestionsInput.addEventListener('input', event => {\r\n emReferralQuestions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n individualsInputInput.addEventListener('input', event => {\r\n emIndivInputonSearch = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n issuesConcernswithProgressInput.addEventListener('input', event => {\r\n emPotentialIssueswithProgress = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n planGoalsNextMonthInput.addEventListener('input', event => {\r\n emPlanGoalsNextMonth = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberConsumerContactsInput.addEventListener('input', event => {\r\n emNumberofConsumerContacts = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyConsumerInput.addEventListener('input', event => {\r\n emNumberEmployerContactsbyConsumer = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberEmployerContactsbyStaffInput.addEventListener('input', event => {\r\n emNumberEmployerContactsbyStaff = event.target.value;\r\n checkRequiredFields();\r\n });\r\n //-- REMOVED FROM FORM ON 4/7/22\r\n numberMonthsinJobDevelopmentInput.addEventListener('input', event => {\r\n emNumberMonthsJobDevelopment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n saveBtn.addEventListener('click', event => {\r\n\t\t\t// event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n\t\t});\r\n\r\n\r\n\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: ['Month','Individual Input on Search', 'Potential Issues/Concerns with Progress', 'Plan/Goals for Next Month'],\r\n endIcon: false,\r\n \r\n };\r\n \r\n\t // FAKE DATA : build table data -- see forms.js line 93\r\n\t\t const tableData = [{ values : ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko']}, \r\n\t\t \t\t\t\t\t{ values : ['11/2021', 'No, this is my input', 'Yes, this is my concern', 'No plans here either']} ];\r\n\r\n\r\n\t\t const oTable = table.build(tableOptions);\r\n\t\t table.populate(oTable, tableData);\r\n\r\n\t return oTable;\r\n }\r\n\r\n\r\n \t// build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n \r\n consumer.card.classList.remove('highlighted');\r\n \r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n \r\n wrap.appendChild(consumer.card);\r\n \r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n \r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate: emReviewDateDBValue.getFullYear() + '-' + (emReviewDateDBValue.getMonth() +1).toString().padStart(2, \"0\") + '-' + '01', \r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]), \r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emEmploymentGoal,\r\n emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch,\r\n emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId,\r\n };\r\n\r\n OODAjax.updateForm4MonthlySummary(data, function(results) {\r\n successfulSave.show();\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n \r\n });\r\n \r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return DBValue.getFullYear() + '-' + (DBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '1';\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate: emReviewDateDBValue.getFullYear() + '-' + (emReviewDateDBValue.getMonth() +1).toString().padStart(2, \"0\") + '-' + '01', \r\n emReferenceNumber,\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emEmploymentGoal,\r\n emReferralQuestions, //-- REMOVED FROM FORM ON 4/7/22\r\n emIndivInputonSearch,\r\n emPotentialIssueswithProgress,\r\n emPlanGoalsNextMonth, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberofConsumerContacts, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyConsumer, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberEmployerContactsbyStaff, //-- REMOVED FROM FORM ON 4/7/22\r\n emNumberMonthsJobDevelopment, //-- REMOVED FROM FORM ON 4/7/22\r\n userId,\r\n serviceId,\r\n };\r\n\r\n OODAjax.insertForm4MonthlySummary(data, function(results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else { //save\r\n setTimeout(function() {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n\r\n }\r\n\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId); \r\n if (result.deleteFormMonthlySummaryResult === \"1\"){\r\n OOD.loadOODLanding(); \r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function() {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n \r\n\r\n\r\n return {\r\n init,\r\n \r\n };\r\n })();","const Tier1andJDPlanForm = (() => {\r\n //Inputs\r\n let serviceDateInput; // Default Service Date to the date that is selected \r\n // when the user clicks New Entry in the previous page. Default all other fields to null/unselected\r\n let SAMLevelDropdown; //SAM Level dropdown should have same values/logic as existing dropdown for OOD Form 8\r\n let contactMethodDropdown; // Contact Type dropdown should have values from code_table.caption \r\n //where table_ID = Employment_Code_OOD_6 and code_table.field_id = ContactMethod \r\n let narrativeInput;\r\n \r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n\r\n // Case Note Edit Data\r\n let consumerId; // emp_ood.consumer_id = consumer_id from consumers table for the selected consumer \r\n let caseNoteId;\r\n let serviceDate; // emp_ood.date_of_service = Service Date from page \r\n let SAMLevel; // emp_ood.service_area_modifier = SAM Level from page. Save data to table using same logic as found in OOD Form 8. \r\n let contactMethod; // emp_ood.contact_method = Contact Type from page. Save code_table.code for selected contact method\r\n let narrative; // emp_ood.narrative = Narrative from page \r\n\r\n //Case Note Data\r\n let caseManagerId; // ??? emp_ood.person_id = the person_id from the persons table of the logged in\r\n let userId; // ??? user emp_ood.user_id = user_id from users_groups of the user who made the last update to the entry \r\n let serviceId;\r\n let referenceNumber; // emp_ood.reference_number = copy consumer_services_master.reference_number from the selected service (in pop-up prior to going to this page)\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date \r\n SAMLevel = caseNoteData[0].SAMLevel; //TODO JOE: Case_Notes.Service_Area_Modifier (populates with N/A, 1, 2, or 3)\r\n contactMethod = caseNoteData[0].contactMethod; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.contact_method\r\n narrative = caseNoteData[0].narrative; //TODO JOE: emp_ood.narrative\r\n \r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n SAMLevel = '';\r\n contactMethod = '';\r\n narrative = '';\r\n \r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: 'SAMLevelDropdown',\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: 'Contact Type',\r\n dropdownId: 'contactMethodDropdown',\r\n value: contactMethod,\r\n readonly: formReadOnly,\r\n });\r\n\r\n narrativeInput = input.build({\r\n label: 'Narrative',\r\n value: narrative,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n // heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 8`;\r\n heading.innerHTML = `Tier 1 and JD Plan - OOD Form 6`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(contactMethodDropdown);\r\n inputContainer0.appendChild(SAMLevelDropdown);\r\n\r\n // const inputContainer1 = document.createElement('div');\r\n // inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n \r\n \r\n\r\n // const inputContainer2 = document.createElement('div');\r\n // inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n \r\n\r\n container.appendChild(inputContainer0);\r\n // container.appendChild(inputContainer1);\r\n // container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateContactMethodDropdown();\r\n \r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n // TODO JOE: Double check that AJAX pulls correct data\r\n // Contact Method - Contact Method dropdown should be a list of values (code_table.caption)\r\n // where code_table.table_id = employment_code and code_table.field_id = contactmethod\r\n async function populateContactMethodDropdown() {\r\n const { getContactMethodsResult: contactMethods } = await OODAjax.getContactMethodsAsync();\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 contactMethodDropdown;\r\n let behavioralIndicatorsDropdown;\r\n let jobTaskQualityIndicatorsDropdown;\r\n let jobTaskQuantityIndicatorsDropdown;\r\n let narrativeInput;\r\n let interventionsInput;\r\n\r\n // buttons\r\n let saveNoteBtn;\r\n let saveAndNewNoteBtn;\r\n let cancelNoteBtn;\r\n let updateNoteBtn;\r\n let deleteNoteBtn;\r\n\r\n // Case Note Edit Data\r\n let consumerId;\r\n let caseNoteId;\r\n let serviceDate;\r\n let startTime;\r\n let endTime;\r\n let SAMLevel;\r\n let position;\r\n let contactMethod;\r\n let behavioralIndicators;\r\n let jobTaskQualityIndicators;\r\n let jobTaskQuantityIndicators;\r\n let narrative;\r\n let interventions;\r\n\r\n //Case Note Data\r\n let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let referenceNumber;\r\n\r\n let formReadOnly = false;\r\n\r\n let currentEntryUserId;\r\n\r\n async function init(\r\n caseNoteData,\r\n currentConsumer,\r\n selectedConsumerServiceId,\r\n selectedConsumerServiceName,\r\n selectedConsumerReferenceNumber,\r\n currentRecordUserId,\r\n selectedServiceDate,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (caseNoteData && Object.keys(caseNoteData).length !== 0) {\r\n userId = $.session.UserId;\r\n caseNoteId = caseNoteData[0].caseNoteId;\r\n serviceDate = caseNoteData[0].serviceDate; //TODO JOE: Case_Notes.Service_Date\r\n startTime = caseNoteData[0].startTime; //TODO JOE: Case_Notes.Start_Time\r\n endTime = caseNoteData[0].endTime; //TODO JOE: Case_Notes.End_Time\r\n SAMLevel = caseNoteData[0].SAMLevel; //TODO JOE: Case_Notes.Service_Area_Modifier (populates with N/A, 1, 2, or 3)\r\n position = caseNoteData[0].position;\r\n contactMethod = caseNoteData[0].contactMethod; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.contact_method\r\n jobTaskQuantityIndicators = caseNoteData[0].jobTaskQuantityIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.quantity_indicators\r\n narrative = caseNoteData[0].narrative; //TODO JOE: emp_ood.narrative\r\n interventions = caseNoteData[0].interventions; //TODO JOE: emp_ood.interventions\r\n behavioralIndicators = caseNoteData[0].behavioralIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.behavioral_indicators\r\n jobTaskQualityIndicators = caseNoteData[0].jobTaskQualityIndicators; //TODO JOE: Corresponding Code_Table.Code will save to emp_ood.quality_indicators\r\n } else {\r\n caseManagerId = $.session.PeopleId;\r\n userId = $.session.UserId;\r\n serviceId = selectedConsumerServiceId;\r\n caseNoteId = '0';\r\n serviceDate = selectedServiceDate;\r\n //serviceDate = UTIL.getTodaysDate();\r\n referenceNumber = selectedConsumerReferenceNumber;\r\n startTime = '';\r\n endTime = '';\r\n SAMLevel = '';\r\n position = '';\r\n contactMethod = '';\r\n jobTaskQuantityIndicators = '';\r\n narrative = '';\r\n interventions = '';\r\n behavioralIndicators = '';\r\n jobTaskQualityIndicators = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'newEntry' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n serviceDateInput = input.build({\r\n type: 'date',\r\n label: 'Service Date',\r\n style: 'secondary',\r\n value: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n //readonly: ((userId !== currentRecordUserId) || (!$.session.OODUpdate && !$.session.OODInsert)) ? true : false,\r\n readonly: true,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n startTimeInput = input.build({\r\n label: 'Start Time',\r\n type: 'time',\r\n value: startTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: startTime,\r\n });\r\n\r\n endTimeInput = input.build({\r\n label: 'End Time',\r\n type: 'time',\r\n value: endTime,\r\n readonly: formReadOnly,\r\n // style,\r\n // value: endTime,\r\n });\r\n\r\n SAMLevelDropdown = dropdown.build({\r\n label: 'SAM Level',\r\n dropdownId: 'SAMLevelDropdown',\r\n value: SAMLevel,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n positionDropdown = dropdown.build({\r\n label: 'Position',\r\n dropdownId: 'positionDropdown',\r\n value: position,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n contactMethodDropdown = dropdown.build({\r\n label: 'Contact Method',\r\n dropdownId: 'contactMethodDropdown',\r\n value: contactMethod,\r\n readonly: formReadOnly,\r\n });\r\n\r\n behavioralIndicatorsDropdown = dropdown.build({\r\n label: 'Behavioral Indicators (Work Days)',\r\n dropdownId: 'behavioralIndicatorsDropdown',\r\n value: behavioralIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n jobTaskQualityIndicatorsDropdown = dropdown.build({\r\n label: 'Job Task Quality Indicators (Work Days)',\r\n dropdownId: 'jobTaskQualityIndicatorsDropdown',\r\n value: jobTaskQualityIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n jobTaskQuantityIndicatorsDropdown = dropdown.build({\r\n label: 'Job Task Quantity Indicators (Work Days)',\r\n dropdownId: 'jobTaskQuantityIndicatorsDropdown',\r\n value: jobTaskQuantityIndicators,\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n narrativeInput = input.build({\r\n label: 'Narrative',\r\n value: narrative,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n interventionsInput = input.build({\r\n label: 'Interventions',\r\n value: interventions,\r\n type: 'textarea',\r\n classNames: 'autosize',\r\n readonly: formReadOnly,\r\n //readonly: true,\r\n // type: 'email',\r\n });\r\n\r\n saveNoteBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewNoteBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateNoteBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteNoteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(caseNoteId);\r\n },\r\n });\r\n cancelNoteBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = `${selectedConsumerServiceName} - OOD Form 8`;\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n const inputContainer0 = document.createElement('div');\r\n inputContainer0.classList.add('ood_form4monthlyplacement_inputContainer1');\r\n inputContainer0.appendChild(serviceDateInput);\r\n inputContainer0.appendChild(startTimeInput);\r\n inputContainer0.appendChild(endTimeInput);\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form4monthlyplacement_inputContainer1'); // new _OOD.scss setting -- ood_form8monthlyplacement_inputContainer1\r\n inputContainer1.appendChild(positionDropdown);\r\n inputContainer1.appendChild(SAMLevelDropdown);\r\n inputContainer1.appendChild(contactMethodDropdown);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('ood_form4monthlyplacement_inputContainer2');\r\n inputContainer2.appendChild(behavioralIndicatorsDropdown);\r\n inputContainer2.appendChild(jobTaskQualityIndicatorsDropdown);\r\n inputContainer2.appendChild(jobTaskQuantityIndicatorsDropdown);\r\n\r\n container.appendChild(inputContainer0);\r\n container.appendChild(inputContainer1);\r\n container.appendChild(inputContainer2);\r\n\r\n container.appendChild(narrativeInput);\r\n container.appendChild(interventionsInput);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n caseNoteId == '0' ? btnWrap.appendChild(saveNoteBtn) : btnWrap.appendChild(updateNoteBtn);\r\n caseNoteId == '0' ? btnWrap.appendChild(saveAndNewNoteBtn) : btnWrap.appendChild(deleteNoteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelNoteBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n\r\n container.appendChild(btnRow);\r\n\r\n populateStaticDropDowns();\r\n populateContactMethodDropdown();\r\n populatePositionDropdown();\r\n populateIndicatorsDropdown();\r\n // populateOutcomeDropdown();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n // call Required Fields\r\n checkRequiredFields();\r\n }\r\n // TODO JOE: Double check that AJAX pulls correct data\r\n // Contact Method - Contact Method dropdown should be a list of values (code_table.caption)\r\n // where code_table.table_id = employment_code and code_table.field_id = contactmethod\r\n async function populateContactMethodDropdown() {\r\n const { getContactMethodsResult: contactMethods } = await OODAjax.getContactMethodsAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = contactMethods.map(contactMethod => ({\r\n id: contactMethod.code,\r\n value: contactMethod.code,\r\n text: contactMethod.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == contactMethod);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('contactMethodDropdown', data, contactMethod);\r\n }\r\n\r\n async function populatePositionDropdown() {\r\n const { getOODPositionsResult: positions } = await OODAjax.getPositionsAsync(consumerId);\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = positions.map(position => ({\r\n id: position.code,\r\n value: position.code,\r\n text: position.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('positionDropdown', data, position);\r\n }\r\n\r\n async function populateIndicatorsDropdown() {\r\n const { getIndicatorsResult: indicators } = await OODAjax.getIndicatorsAsync();\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = indicators.map(indicator => ({\r\n id: indicator.code,\r\n value: indicator.code,\r\n text: indicator.caption,\r\n }));\r\n\r\n const index = data.findIndex(x => x.id == position);\r\n if (index === -1) {\r\n // case note contactType not in the contactTypes DDL\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('behavioralIndicatorsDropdown', data, behavioralIndicators);\r\n dropdown.populate('jobTaskQualityIndicatorsDropdown', data, jobTaskQualityIndicators);\r\n dropdown.populate('jobTaskQuantityIndicatorsDropdown', data, jobTaskQuantityIndicators);\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n // THis DDL may not be needed?\r\n // async function populateOutcomeDropdown() {\r\n\r\n // const {\r\n // getOutcomesResult: outcomes,\r\n // } = await OODAjax.getOutcomesAsync();\r\n // // const templates = WorkflowViewerComponent.getTemplates();\r\n // let data = outcomes.map((outcome) => ({\r\n // id: outcome.outcomeCode,\r\n // value: outcome.outcomeCode,\r\n // text: outcome.outcomeCaption,\r\n // }));\r\n\r\n // const index = data.findIndex((x) => x.id == outcome);\r\n // \t\t\t\tif (index === -1) {\r\n // \t\t\t\t\t// case note outcome not in the outcomes DDL\r\n // \t\t\t\t}\r\n\r\n // data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n // dropdown.populate(\"outcomeDropdown\", data, outcome);\r\n // }\r\n\r\n function populateStaticDropDowns() {\r\n const SAMLevelDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'N/A', value: '0' },\r\n { text: '1', value: '1' },\r\n { text: '2', value: '2' },\r\n { text: '3', value: '3' },\r\n ];\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n dropdown.populate(SAMLevelDropdown, SAMLevelDropdownData, SAMLevel);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Behavioral Indicators (Work Days) dropdown should be a list of\r\n // values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(behavioralIndicatorsDropdown, yesNoDropdownData, behavioralIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quality Indicators -Job Task Quality Indicators (Work Days) dropdown should\r\n // be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQualityIndicatorsDropdown, yesNoDropdownData, jobTaskQualityIndicators);\r\n // TODO JOE: Double check that DDL is properly populated -- not yes/no for Form 8\r\n // Job Task Quantity Indicators -Job Task Quantity Indicators (Work Days) dropdown\r\n // should be a list of values (code_table.caption) where code_table.table_id = employment_code and code_table.field_id = Lichert Scale 2\r\n // dropdown.populate(jobTaskQuantityIndicatorsDropdown, yesNoDropdownData, jobTaskQuantityIndicators);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!SAMLevel || SAMLevel === '') {\r\n SAMLevelDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n SAMLevelDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!position || position === '') {\r\n positionDropdown.classList.add('error');\r\n //return 'error';\r\n } else {\r\n positionDropdown.classList.remove('error');\r\n // return 'success';\r\n }\r\n\r\n if (!contactMethod || contactMethod === '') {\r\n contactMethodDropdown.classList.add('error');\r\n } else {\r\n contactMethodDropdown.classList.remove('error');\r\n }\r\n\r\n if (!behavioralIndicators || behavioralIndicators === '') {\r\n behavioralIndicatorsDropdown.classList.add('error');\r\n } else {\r\n behavioralIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n if (!jobTaskQualityIndicators || jobTaskQualityIndicators === '') {\r\n jobTaskQualityIndicatorsDropdown.classList.add('error');\r\n } else {\r\n jobTaskQualityIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n if (!jobTaskQuantityIndicators || jobTaskQuantityIndicators === '') {\r\n jobTaskQuantityIndicatorsDropdown.classList.add('error');\r\n } else {\r\n jobTaskQuantityIndicatorsDropdown.classList.remove('error');\r\n }\r\n\r\n var noteInput = narrativeInput.querySelector('textarea');\r\n\r\n if (noteInput.value === '') {\r\n narrativeInput.classList.add('error');\r\n } else {\r\n narrativeInput.classList.remove('error');\r\n }\r\n\r\n var interventionInpt = interventionsInput.querySelector('textarea');\r\n\r\n if (interventionInpt.value === '') {\r\n interventionsInput.classList.add('error');\r\n } else {\r\n interventionsInput.classList.remove('error');\r\n }\r\n\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n }\r\n\r\n function checkServiceDateInput() {\r\n let todaydate = new Date();\r\n let myservicedate = new Date(serviceDate);\r\n\r\n var isDateBefore = dates.isBefore(myservicedate, todaydate);\r\n\r\n if (!isDateBefore) {\r\n serviceDateInput.classList.add('error');\r\n } else {\r\n serviceDateInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveNoteBtn.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n updateNoteBtn.classList.add('disabled');\r\n } else {\r\n saveNoteBtn.classList.remove('disabled');\r\n saveAndNewNoteBtn.classList.remove('disabled');\r\n updateNoteBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteNoteBtn.classList.add('disabled');\r\n } else {\r\n deleteNoteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function checkEndInputTime() {\r\n var endInput = endTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(endInput.value)) {\r\n endTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n endTimeInput.classList.remove('error');\r\n }\r\n\r\n var isEndAfterStartTime = validateStartEndTimes('endCheck');\r\n\r\n if (isEndAfterStartTime) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n\r\n var isEndTimeValid = UTIL.validateTime(endInput.value);\r\n\r\n if (isEndTimeValid) {\r\n endTimeInput.classList.remove('error');\r\n } else {\r\n endTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkStartInputTime() {\r\n var startInput = startTimeInput.querySelector('input');\r\n var todaysDate = UTIL.getTodaysDate();\r\n currentserviceDate = UTIL.formatDateToIso(serviceDate.split(' ')[0]);\r\n\r\n if (currentserviceDate === todaysDate && checkTimeForAfterNow(startInput.value)) {\r\n startTimeInput.classList.add('error');\r\n return;\r\n } else {\r\n startTimeInput.classList.remove('error');\r\n }\r\n\r\n var isStartTimeValid = UTIL.validateTime(startInput.value);\r\n if (isStartTimeValid) {\r\n startTimeInput.classList.remove('error');\r\n } else {\r\n startTimeInput.classList.add('error');\r\n return;\r\n }\r\n }\r\n\r\n function checkTimeForAfterNow(enteredTime) {\r\n let tempNow = new Date();\r\n let nowHour = tempNow.getHours() < '10' ? `0${tempNow.getHours()}` : tempNow.getHours();\r\n let nowMinuet = tempNow.getMinutes() < '10' ? `0${tempNow.getMinutes()}` : tempNow.getMinutes();\r\n return (\r\n Date.parse(`01/01/2020 ${enteredTime}`) > Date.parse(`01/01/2020 ${nowHour}:${nowMinuet}`)\r\n );\r\n }\r\n\r\n function validateStartEndTimes(validateTime) {\r\n var startInput = startTimeInput.querySelector('input');\r\n var endInput = endTimeInput.querySelector('input');\r\n var dateInput = serviceDateInput.querySelector('input');\r\n var startTime = startInput.value;\r\n var endTime = endInput.value;\r\n var currentDate = UTIL.getTodaysDate();\r\n var currentTime = UTIL.getCurrentTime();\r\n\r\n if (validateTime === 'startCheck') {\r\n if (dateInput.value === currentDate) {\r\n if (startTime > currentTime) return false; // current date can't have startTime be future time\r\n }\r\n\r\n if (startTime === '') return false; //error on no time,\r\n if (startTime !== '' && endTime === '') return true; // initial condition, startTime entered, but not endTime\r\n } else {\r\n // endCheck\r\n if (dateInput.value === currentDate) {\r\n if (endTime > currentTime) return false; // current date can't have endTime be future time\r\n }\r\n\r\n if (endTime === '' || endTime === '00:00') return false; //error on no time, or a 12am end time\r\n }\r\n\r\n return startTime >= endTime ? false : true; // startTime can't be after EndTime\r\n }\r\n\r\n function setupEvents() {\r\n SAMLevelDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n SAMLevel = '';\r\n } else {\r\n SAMLevel = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n positionDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n position = '';\r\n } else {\r\n position = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n contactMethodDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n contactMethod = '';\r\n } else {\r\n contactMethod = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n behavioralIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n behavioralIndicators = '';\r\n } else {\r\n behavioralIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n jobTaskQualityIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n jobTaskQualityIndicators = '';\r\n } else {\r\n jobTaskQualityIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n jobTaskQuantityIndicatorsDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n jobTaskQuantityIndicators = '';\r\n } else {\r\n jobTaskQuantityIndicators = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n startTimeInput.addEventListener('focusout', event => {\r\n startTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n endTimeInput.addEventListener('change', event => {\r\n endTime = event.target.value;\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n\r\n serviceDateInput.addEventListener('change', event => {\r\n serviceDate = event.target.value;\r\n checkServiceDateInput();\r\n checkStartInputTime();\r\n checkEndInputTime();\r\n setBtnStatus();\r\n });\r\n serviceDateInput.addEventListener('keydown', event => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n });\r\n\r\n narrativeInput.addEventListener('input', event => {\r\n narrative = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n interventionsInput.addEventListener('input', event => {\r\n interventions = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n\r\n saveNoteBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewNoteBtn.classList.add('disabled');\r\n saveNoteBtn.classList.add('disabled');\r\n });\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n position,\r\n contactMethod,\r\n behavioralIndicators,\r\n jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators,\r\n narrative,\r\n interventions,\r\n userId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.updateForm8CommunityBasedAssessment(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n caseNoteId,\r\n serviceDate: UTIL.formatDateToIso(serviceDate.split(' ')[0]),\r\n startTime,\r\n endTime,\r\n SAMLevel,\r\n position,\r\n contactMethod,\r\n behavioralIndicators,\r\n jobTaskQualityIndicators,\r\n jobTaskQuantityIndicators,\r\n narrative,\r\n interventions,\r\n userId,\r\n serviceId,\r\n referenceNumber,\r\n caseManagerId,\r\n };\r\n // TODO JOE: This AJAX needs to change\r\n OODAjax.insertForm8CommunityBasedAssessment(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildEntryServicePopUp(consumerId, 'newEntry');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n // TODO JOE: Look into whether this AJAX needs to change or not\r\n function deleteConfirmation(caseNoteId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteOODFormEntryAsync(caseNoteId);\r\n if (result.deleteOODFormEntryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const communityBasedAssessmentSummaryForm = (() => {\r\n // Inputs\r\n let monthYearDropdown;\r\n let referenceNumberDropdown;\r\n let nextScheduledReviewInput;\r\n let selfAssessmentInput;\r\n let referralQuestionsInput;\r\n let employerAssessmentInput;\r\n let providerAssessmentInput;\r\n let supportAndTransitionInput;\r\n let reviewVTSDropdown;\r\n\r\n // values\r\n let consumerId;\r\n let emReviewId;\r\n let emReviewDate; // monthYearDropdown\r\n let emReviewDateDBValue; // monthYearDropdown\r\n let emReferenceNumber; // referenceNumberDropdown\r\n let emNextScheduledReview; // nextScheduledReviewInput\r\n let emSummaryIndivSelfAssessment; // selfAssessmentInput\r\n let emReferralQuestions; //referralQuestionsInput\r\n let emSummaryIndivEmployerAssessment; // employerAssessmentInput\r\n let emSummaryIndivProviderAssessment; // providerAssessmentInput\r\n let emSupportandTransition; //supportAndTransitionInput\r\n let emReviewVTS; // reviewVTSDropdown\r\n\r\n // buttons\r\n let saveBtn;\r\n let saveAndNewBtn;\r\n let cancelBtn;\r\n let updateBtn;\r\n let deleteBtn;\r\n\r\n //Review Data\r\n //let caseManagerId;\r\n let userId;\r\n let serviceId;\r\n let reviewStartDate;\r\n let reviewEndDate;\r\n\r\n let formReadOnly = false;\r\n const FORMNUMBER = '8'; // Form 8\r\n\r\n let OODMonthlySummariesTable; // To be added in future release\r\n\r\n async function init(\r\n emReviewData,\r\n currentConsumer,\r\n selectedServiceId,\r\n currentRecordUserId,\r\n clickSource = 'OODGrid',\r\n ) {\r\n DOM.clearActionCenter();\r\n document.querySelectorAll('.consumerListBtn').forEach(e => e.remove());\r\n\r\n let todaysdate = new Date();\r\n var thisMonthFirstDay = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n\r\n consumerId = currentConsumer.id;\r\n currentEntryUserId = currentRecordUserId;\r\n\r\n if (emReviewData && Object.keys(emReviewData).length !== 0) {\r\n userId = $.session.UserId;\r\n emReviewId = emReviewData.emReviewId;\r\n emReviewDate = getShortDate(emReviewData.emReviewDate);\r\n emReviewDateDBValue = new Date(emReviewData.emReviewDate);\r\n emReferenceNumber = emReviewData.emReferenceNumber;\r\n emNextScheduledReview = emReviewData.emNextScheduledReview;\r\n emSummaryIndivSelfAssessment = emReviewData.emSummaryIndivSelfAssessment;\r\n emSummaryIndivEmployerAssessment = emReviewData.emSummaryIndivEmployerAssessment;\r\n emSummaryIndivProviderAssessment = emReviewData.emSummaryIndivProviderAssessment;\r\n emSupportandTransition = emReviewData.emSupportandTransition;\r\n emReviewVTS = emReviewData.emReviewVTS;\r\n } else {\r\n userId = $.session.UserId;\r\n serviceId = selectedServiceId;\r\n emReviewId = '0';\r\n emReviewDate = ('0' + (todaysdate.getMonth() + 1)).slice(-2) + '/' + todaysdate.getFullYear();\r\n emReviewDateDBValue = new Date(todaysdate.getFullYear(), todaysdate.getMonth(), 1);\r\n emReferenceNumber = '';\r\n emNextScheduledReview = '';\r\n emSummaryIndivSelfAssessment = '';\r\n emSummaryIndivEmployerAssessment = '';\r\n emSummaryIndivProviderAssessment = '';\r\n emSupportandTransition = '';\r\n emReviewVTS = '';\r\n }\r\n\r\n if (clickSource === 'OODGrid' && !$.session.OODUpdate) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (clickSource === 'monthlySummary' && !$.session.OODInsert) {\r\n formReadOnly = true;\r\n }\r\n\r\n if (userId !== currentRecordUserId) {\r\n formReadOnly = true;\r\n }\r\n\r\n let myconsumer = buildConsumerCard(currentConsumer);\r\n\r\n let container = document.createElement('div');\r\n container.classList.add('monthlyForm');\r\n var LineBr = document.createElement('br');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Community Based Assessment - OOD Form 8 Monthly Summary';\r\n heading.classList.add('OODsectionHeading');\r\n\r\n container.appendChild(myconsumer);\r\n // container.appendChild(LineBr);\r\n container.appendChild(LineBr);\r\n container.appendChild(heading);\r\n container.appendChild(LineBr);\r\n\r\n //var date = new Date();\r\n monthYearDropdown = dropdown.build({\r\n label: 'Month',\r\n //classNames: 'monthYear',\r\n dropdownId: 'monthYearDropdown',\r\n value: emReviewDate,\r\n readonly: formReadOnly,\r\n // value: ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear()\r\n //readonly: true,\r\n });\r\n\r\n referenceNumberDropdown = dropdown.build({\r\n label: 'Reference Number',\r\n dropdownId: 'referenceNumberDropdown',\r\n value: emReferenceNumber,\r\n readonly: formReadOnly,\r\n // readonly: (userId !== currentRecordUserId) ? true : false,\r\n });\r\n\r\n nextScheduledReviewInput = input.build({\r\n type: 'date',\r\n label: 'Next Scheduled Review',\r\n style: 'secondary',\r\n // classNames: 'nextScheduledReviewInput',\r\n value: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n readonly: formReadOnly,\r\n //value: filterValues.serviceDateStart\r\n });\r\n\r\n // selfAssessmentInput textarea\r\n selfAssessmentInput = input.build({\r\n //label: `Summary of Individual's Self-Assessment. Likes and/or Dislikes of Work, concerns, etc. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivSelfAssessment,\r\n readonly: formReadOnly,\r\n // charLimit: 256,\r\n // forceCharLimit: true,\r\n });\r\n // selfAssessmentInput.classList.add('OODTextArea');\r\n\r\n // employerAssessment textarea\r\n employerAssessmentInput = input.build({\r\n // label: `Summary of Employer's Assessment of Individual, Performance or Soft Skill Concerns, etc. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivEmployerAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // employerAssessmentInput.classList.add('introTextArea');\r\n\r\n // providerAssessment textarea\r\n providerAssessmentInput = input.build({\r\n // label: `Summary of Provider's Assessment of Individual's Performance and Soft Skill Concerns. Recommendations of next steps or services. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSummaryIndivProviderAssessment,\r\n readonly: formReadOnly,\r\n });\r\n // providerAssessmentInput.classList.add('introTextArea');\r\n\r\n supportAndTransitionInput = input.build({\r\n //label: `Support and Transition Plan. `,\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: emSupportandTransition,\r\n readonly: formReadOnly,\r\n });\r\n\r\n // reviewVTS textarea\r\n reviewVTSDropdown = dropdown.build({\r\n // label: `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS?`,\r\n dropdownId: 'reviewVTSDropdown',\r\n value: emReviewVTS,\r\n readonly: formReadOnly,\r\n });\r\n // reviewVTSDropdown.classList.add('introTextArea');\r\n\r\n saveBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('save');\r\n },\r\n });\r\n saveAndNewBtn = button.build({\r\n text: 'Save & New',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n classNames: ['caseNoteSave', 'disabled'],\r\n callback: async () => {\r\n insertFormData('saveandNew');\r\n },\r\n });\r\n updateBtn = button.build({\r\n text: 'update',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'add',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n updateFormData();\r\n },\r\n });\r\n deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n // classNames: 'disabled',\r\n callback: async () => {\r\n deleteConfirmation(emReviewId);\r\n },\r\n });\r\n cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n classNames: ['caseNoteCancel'],\r\n callback: async () => {\r\n OOD.loadOODLanding();\r\n },\r\n });\r\n\r\n setupEvents();\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('ood_form8monthlysummary_inputContainer1');\r\n\r\n inputContainer1.appendChild(monthYearDropdown);\r\n inputContainer1.appendChild(referenceNumberDropdown);\r\n // inputContainer1.appendChild(referenceNumberDropdown);\r\n\r\n //inputContainer1.appendChild(nextScheduledReviewInput);\r\n\r\n const nextScheduledReviewInputDIV = document.createElement('div');\r\n nextScheduledReviewInputDIV.classList.add('nextScheduledReviewInput');\r\n nextScheduledReviewInputDIV.appendChild(nextScheduledReviewInput);\r\n\r\n inputContainer1.appendChild(nextScheduledReviewInputDIV);\r\n\r\n container.appendChild(inputContainer1);\r\n\r\n const selfAssessmentLabel = document.createElement('p');\r\n selfAssessmentLabel.innerHTML = `Summary of Individual's Self-Assessment. Likes and/or Dislikes of Work, concerns, etc.`;\r\n\r\n const employerAssessmentLabel = document.createElement('p');\r\n employerAssessmentLabel.innerHTML = `Summary of Employer's Assessment of Individual, Performance or Soft Skill Concerns, etc. `;\r\n\r\n const providerAssessmentLabel = document.createElement('p');\r\n providerAssessmentLabel.innerHTML = `Summary of Provider's Assessment of Individual's Performance and Soft Skill Concerns. Recommendations of next steps or services. `;\r\n\r\n const supportAndTransitionLabel = document.createElement('p');\r\n supportAndTransitionLabel.innerHTML = `Support and Transition Plan. `;\r\n\r\n const reviewVTSDropdownLabel = document.createElement('p');\r\n reviewVTSDropdownLabel.innerHTML = `Has the Vocational Training Stipend (VTS) been reviewed with the individual? Does it only reflect the time the individual participated? Does the individual agree to the amount of the VTS? `;\r\n\r\n container.appendChild(selfAssessmentLabel);\r\n container.appendChild(selfAssessmentInput);\r\n container.appendChild(employerAssessmentLabel);\r\n container.appendChild(employerAssessmentInput);\r\n container.appendChild(providerAssessmentLabel);\r\n container.appendChild(providerAssessmentInput);\r\n container.appendChild(supportAndTransitionLabel);\r\n container.appendChild(supportAndTransitionInput);\r\n container.appendChild(reviewVTSDropdownLabel);\r\n container.appendChild(reviewVTSDropdown);\r\n\r\n let updatecontainer = document.createElement('div');\r\n updatecontainer.classList.add('updatecontainer');\r\n\r\n let updatemessage = document.createElement('div');\r\n updatemessage.classList.add('updatemessage');\r\n updatemessage.innerHTML = `This record was created by another user therefore no edits can be made.`;\r\n updatecontainer.appendChild(updatemessage);\r\n\r\n let btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n emReviewId == '0' ? btnWrap.appendChild(saveBtn) : btnWrap.appendChild(updateBtn);\r\n emReviewId == '0' ? btnWrap.appendChild(saveAndNewBtn) : btnWrap.appendChild(deleteBtn);\r\n\r\n let btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n btnWrap2.appendChild(cancelBtn);\r\n\r\n let btnRow = document.createElement('div');\r\n btnRow.classList.add('btnRow');\r\n btnRow.appendChild(btnWrap);\r\n btnRow.appendChild(btnWrap2);\r\n if (userId !== currentEntryUserId) btnRow.appendChild(updatecontainer);\r\n container.appendChild(btnRow);\r\n\r\n var LineBr = document.createElement('br');\r\n var LineBr2 = document.createElement('br');\r\n var LineBr3 = document.createElement('br');\r\n container.appendChild(LineBr);\r\n container.appendChild(LineBr2);\r\n container.appendChild(LineBr3);\r\n\r\n // NOTE: This summary table will be added in a later release; will need this code eventually -- JMM 02/05/2022\r\n // OODMonthlySummariesTable = await buildOODMonthlySummariesTable();\r\n // container.appendChild(OODMonthlySummariesTable);\r\n\r\n // populateStaticDropDowns();\r\n\r\n DOM.ACTIONCENTER.appendChild(container);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateStaticDropDowns();\r\n populateReferenceNumberDropdown();\r\n\r\n checkRequiredFields();\r\n }\r\n\r\n function getShortDate(fullDate) {\r\n var thisDate = new Date(fullDate);\r\n var thisShortDate =\r\n (thisDate.getMonth() + 1).toString().padStart(2, '0') + '/' + thisDate.getFullYear();\r\n return thisShortDate;\r\n }\r\n\r\n function setReviewStartandEndDates() {\r\n var dateparts = emReviewDate.split('/');\r\n var thisMonth = dateparts[0];\r\n\r\n var daysinMonth = dates.getDaysInMonth(emReviewDateDBValue);\r\n var thisYear = emReviewDateDBValue.getFullYear();\r\n\r\n reviewStartDate = thisYear + '-' + thisMonth + '-01';\r\n reviewEndDate = thisYear + '-' + thisMonth + '-' + daysinMonth;\r\n }\r\n\r\n function displaynoReferenceNumberPopup() {\r\n // no reference Numbers\r\n let noReferenceNumberPopup = POPUP.build({\r\n header: 'No Reference Numbers Found',\r\n hideX: true,\r\n id: 'noReferenceNumberPopup',\r\n });\r\n\r\n let OKBtn = button.build({\r\n text: 'Ok',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(noReferenceNumberPopup);\r\n // overlay.hide();\r\n },\r\n });\r\n\r\n let btnWrap = document.createElement('div');\r\n let warningMessage = document.createElement('p');\r\n warningMessage.innerHTML =\r\n 'There are no reference numbers for this consumer and date combination. Please change the Month/Year to see a list of valid reference numbers or contact your Advisor Administrator to enter an OOD Authorization for the selected consumer.';\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(OKBtn);\r\n //noServicesPopup.appendChild(consumerServicesDropdown);\r\n noReferenceNumberPopup.appendChild(warningMessage);\r\n noReferenceNumberPopup.appendChild(btnWrap);\r\n overlay.show();\r\n POPUP.show(noReferenceNumberPopup);\r\n }\r\n\r\n async function populateReferenceNumberDropdown() {\r\n setReviewStartandEndDates();\r\n\r\n const { getConsumerReferenceNumbersResult: referencenumbers } =\r\n await OODAjax.getConsumerReferenceNumbersAsync(\r\n consumerId,\r\n reviewStartDate,\r\n reviewEndDate,\r\n FORMNUMBER,\r\n );\r\n // const templates = WorkflowViewerComponent.getTemplates();\r\n let data = referencenumbers.map(referencenumber => ({\r\n id: referencenumber.referenceNumber,\r\n value: referencenumber.referenceNumber,\r\n text: referencenumber.referenceNumber,\r\n }));\r\n\r\n if (data.length == 0) {\r\n displaynoReferenceNumberPopup();\r\n }\r\n\r\n // if creating a new record and there is only one referenceNumber in the data, then automatically select it in the DDL\r\n if (emReferenceNumber == '' && data.length == 1) {\r\n emReferenceNumber = data[0].value;\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('referenceNumberDropdown', data, emReferenceNumber);\r\n }\r\n\r\n // for monthYearDropdown DDL\r\n function populateStaticDropDowns() {\r\n const yesNoDropdownData = [\r\n { text: 'SELECT', value: 'SELECT' },\r\n { text: 'Yes', value: 'Y' },\r\n { text: 'No', value: 'N' },\r\n ];\r\n\r\n var mydate = new Date();\r\n var arrayDates = [];\r\n\r\n for (let i = 0; i < 24; i++) {\r\n var firstDay = new Date(mydate.getFullYear() - 1, mydate.getMonth() + i, 1);\r\n arrayDates.push({\r\n partialdate:\r\n (firstDay.getMonth() + 1).toString().padStart(2, '0') +\r\n '/' +\r\n firstDay.getFullYear().toString(),\r\n fulldate: firstDay.toDateString(),\r\n });\r\n }\r\n\r\n let data = arrayDates.map(thisDate => ({\r\n id: thisDate.fulldate,\r\n value: thisDate.partialdate,\r\n text: thisDate.partialdate,\r\n }));\r\n data.unshift({ id: null, value: 'SELECT', text: 'SELECT' }); //ADD Blank value\r\n dropdown.populate('monthYearDropdown', data, emReviewDate);\r\n\r\n dropdown.populate(reviewVTSDropdown, yesNoDropdownData, emReviewVTS);\r\n }\r\n\r\n function checkRequiredFields() {\r\n if (!emReviewDate || emReviewDate === '') {\r\n monthYearDropdown.classList.add('error');\r\n } else {\r\n monthYearDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emReferenceNumber || emReferenceNumber === '') {\r\n referenceNumberDropdown.classList.add('error');\r\n } else {\r\n referenceNumberDropdown.classList.remove('error');\r\n }\r\n\r\n if (!emNextScheduledReview || emNextScheduledReview === '') {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n\r\n var selfAssessmentInpt = selfAssessmentInput.querySelector('textarea');\r\n if (selfAssessmentInpt.value === '') {\r\n selfAssessmentInput.classList.add('error');\r\n } else {\r\n selfAssessmentInput.classList.remove('error');\r\n }\r\n\r\n var employerAssessmentInpt = employerAssessmentInput.querySelector('textarea');\r\n if (employerAssessmentInpt.value === '') {\r\n employerAssessmentInput.classList.add('error');\r\n } else {\r\n employerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n // provider\r\n var providerAssessmentInpt = providerAssessmentInput.querySelector('textarea');\r\n if (providerAssessmentInpt.value === '') {\r\n providerAssessmentInput.classList.add('error');\r\n } else {\r\n providerAssessmentInput.classList.remove('error');\r\n }\r\n\r\n var supportAndTransitionInpt = supportAndTransitionInput.querySelector('textarea');\r\n if (supportAndTransitionInpt.value === '') {\r\n supportAndTransitionInput.classList.add('error');\r\n } else {\r\n supportAndTransitionInput.classList.remove('error');\r\n }\r\n\r\n // var reviewVTSInpt = reviewVTSInput.querySelector('textarea');\r\n // if (reviewVTSInpt.value === '') {\r\n // reviewVTSInput.classList.add('error');\r\n // } else {\r\n // reviewVTSInput.classList.remove('error');\r\n // }\r\n\r\n if (!emReviewVTS || emReviewVTS === '') {\r\n reviewVTSDropdown.classList.add('error');\r\n } else {\r\n reviewVTSDropdown.classList.remove('error');\r\n }\r\n\r\n setBtnStatus();\r\n }\r\n\r\n function checknextScheduledReviewDateInput() {\r\n let todaydate = new Date();\r\n let thisNextReviewDate = new Date(emNextScheduledReview);\r\n\r\n var isDateBefore = dates.isBefore(thisNextReviewDate, todaydate);\r\n\r\n if (isDateBefore) {\r\n nextScheduledReviewInput.classList.add('error');\r\n } else {\r\n nextScheduledReviewInput.classList.remove('error');\r\n }\r\n }\r\n\r\n function setBtnStatus() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0 || formReadOnly) {\r\n saveBtn.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n updateBtn.classList.add('disabled');\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveAndNewBtn.classList.remove('disabled');\r\n updateBtn.classList.remove('disabled');\r\n }\r\n\r\n if (userId !== currentEntryUserId || !$.session.OODDelete) {\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n deleteBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function setupEvents() {\r\n monthYearDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n var dateparts = selectedOption.value.split('/');\r\n var updatedFullDate = new Date(dateparts[1], dateparts[0] - 1, 1);\r\n emReviewDateDBValue = updatedFullDate;\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewDate = '';\r\n } else {\r\n emReviewDate = selectedOption.value;\r\n }\r\n\r\n emReferenceNumber = '';\r\n populateReferenceNumberDropdown();\r\n checkRequiredFields();\r\n });\r\n\r\n referenceNumberDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReferenceNumber = '';\r\n } else {\r\n emReferenceNumber = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n nextScheduledReviewInput.addEventListener('change', event => {\r\n emNextScheduledReview = event.target.value;\r\n checknextScheduledReviewDateInput();\r\n setBtnStatus();\r\n });\r\n\r\n selfAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivSelfAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n employerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivEmployerAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n // provider\r\n providerAssessmentInput.addEventListener('input', event => {\r\n emSummaryIndivProviderAssessment = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n supportAndTransitionInput.addEventListener('input', event => {\r\n emSupportandTransition = event.target.value;\r\n checkRequiredFields();\r\n });\r\n\r\n reviewVTSDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n\r\n if (selectedOption.value == 'SELECT') {\r\n emReviewVTS = '';\r\n } else {\r\n emReviewVTS = selectedOption.value;\r\n }\r\n checkRequiredFields();\r\n });\r\n\r\n saveAndNewBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n\r\n saveBtn.addEventListener('click', event => {\r\n // event.target.classList.add('disabled');\r\n saveAndNewBtn.classList.add('disabled');\r\n saveBtn.classList.add('disabled');\r\n });\r\n }\r\n // build the listing of OOD Entries (based off of filter settings) -- Note: will be used in future release -- JMM 02/05/2022\r\n async function buildOODMonthlySummariesTable() {\r\n const tableOptions = {\r\n plain: false,\r\n tableId: 'OODMonthlySummaryTable',\r\n columnHeadings: [\r\n 'Month',\r\n 'Individual Input on Search',\r\n 'Potential Issues/Concerns with Progress',\r\n 'Plan/Goals for Next Month',\r\n ],\r\n endIcon: false,\r\n };\r\n\r\n // FAKE DATA : build table data -- see forms.js line 93\r\n const tableData = [\r\n { values: ['11/2021', 'This is my input', 'This is my concern', 'Got no plans, bucko'] },\r\n {\r\n values: [\r\n '11/2021',\r\n 'No, this is my input',\r\n 'Yes, this is my concern',\r\n 'No plans here either',\r\n ],\r\n },\r\n ];\r\n\r\n const oTable = table.build(tableOptions);\r\n table.populate(oTable, tableData);\r\n\r\n return oTable;\r\n }\r\n\r\n // build display of selected consumers with their associated \"Entry\" buttons\r\n function buildConsumerCard(consumer) {\r\n const consumerRow = document.createElement('div');\r\n var LineBr = document.createElement('br');\r\n\r\n consumer.card.classList.remove('highlighted');\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('planConsumerCard');\r\n\r\n wrap.appendChild(consumer.card);\r\n\r\n consumerRow.appendChild(wrap);\r\n consumerRow.appendChild(LineBr);\r\n // wrap.appendChild(LineBr);\r\n\r\n return consumerRow;\r\n }\r\n\r\n function updateFormData() {\r\n //var myserviceDate =\"2/7/2022 12:00:00 AM\";\r\n // '2022-02-07'\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n emReferenceNumber,\r\n // emReviewDate: UTIL.formatDateToIso(emReviewDateDBValue.split(' ')[0]),\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emSupportandTransition,\r\n emReviewVTS,\r\n userId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.updateForm8MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n });\r\n\r\n function getReviewDate(DBValue) {\r\n if (DBValue instanceof Date && !isNaN(DBValue.valueOf())) {\r\n return (\r\n DBValue.getFullYear() + '-' + DBValue.getMonth().toString().padStart(2, '0') + '-' + '1'\r\n );\r\n } else {\r\n return UTIL.formatDateToIso(DBValue.split(' ')[0]);\r\n }\r\n }\r\n }\r\n\r\n function insertFormData(saveType) {\r\n var data = {\r\n consumerId,\r\n emReviewId,\r\n emReviewDate:\r\n emReviewDateDBValue.getFullYear() +\r\n '-' +\r\n (emReviewDateDBValue.getMonth() + 1).toString().padStart(2, '0') +\r\n '-' +\r\n '01',\r\n // emNextScheduledReview: emNextScheduledReviewDBValue.getFullYear() + '-' + (emNextScheduledReviewDBValue.getMonth()).toString().padStart(2, \"0\") + '-' + '01',\r\n emReferenceNumber,\r\n emNextScheduledReview: UTIL.formatDateToIso(emNextScheduledReview.split(' ')[0]),\r\n emSummaryIndivSelfAssessment,\r\n emSummaryIndivEmployerAssessment,\r\n emSummaryIndivProviderAssessment,\r\n emSupportandTransition,\r\n emReviewVTS,\r\n userId,\r\n serviceId,\r\n };\r\n // TODO JOE: need new C# and SP for Form 8\r\n OODAjax.insertForm8MonthlySummary(data, function (results) {\r\n successfulSave.show();\r\n if (saveType == 'saveandNew') {\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n overlay.show();\r\n OOD.buildSummaryServicePopUp(consumerId, 'monthlySummary');\r\n }, 2000);\r\n } else {\r\n //save\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n OOD.loadOODLanding();\r\n }, 2000);\r\n }\r\n });\r\n }\r\n // TODO JOE: need new C# and SP for Form 8 ???\r\n function deleteConfirmation(emReviewId) {\r\n var deletepopup = POPUP.build({\r\n id: 'deleteWarningPopup',\r\n classNames: 'warning',\r\n });\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function () {\r\n POPUP.hide(deletepopup);\r\n let result = await OODAjax.deleteFormMonthlySummaryAsync(emReviewId);\r\n if (result.deleteFormMonthlySummaryResult === '1') {\r\n OOD.loadOODLanding();\r\n }\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'close',\r\n callback: function () {\r\n POPUP.hide(deletepopup);\r\n },\r\n });\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n var warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = 'Are you sure you want to delete this record?';\r\n deletepopup.appendChild(warningMessage);\r\n deletepopup.appendChild(btnWrap);\r\n POPUP.show(deletepopup);\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const assessment = (function () {\r\n // Data\r\n let sectionData;\r\n let subsectionData;\r\n let questionSetData;\r\n let questionData;\r\n let conditionalQuestionData;\r\n\r\n // Applicable Sections\r\n //------------------------------------\r\n let applicableSections;\r\n\r\n function getApplicableSections() {\r\n return applicableSections;\r\n }\r\n function showApplicableWarningMessage(callback) {\r\n const warningPopup = POPUP.build({\r\n classNames: 'applicableWarningMessage',\r\n });\r\n\r\n const header = document.createElement('h3');\r\n header.innerHTML =\r\n 'Marking this section Not Applicable will remove all information for this section, including answers to assessment questions, assessment summary information, and assessment area names on supports. Do you want to proceed?';\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async e => {\r\n // Delete answers to questions for the selected section\r\n // Null out Assessment Area values\r\n callback('yes');\r\n POPUP.hide(warningPopup);\r\n },\r\n });\r\n\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n callback('no');\r\n POPUP.hide(warningPopup);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n warningPopup.appendChild(header);\r\n warningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(warningPopup);\r\n }\r\n async function toggleIsSectionApplicable(sectionId, isApplicable) {\r\n // isApplicable === true || false\r\n const planId = plan.getCurrentPlanId();\r\n await planAjax.updatePlanSectionApplicable({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n sectionId: parseInt(sectionId),\r\n applicable: isApplicable ? 'Y' : 'N',\r\n });\r\n\r\n applicableSections[sectionId] = isApplicable;\r\n tableOfContents.toggleApplicability(sectionId, isApplicable);\r\n }\r\n\r\n // Utils\r\n //------------------------------------\r\n function getConditionalQuestions(conditionalQuestionId) {\r\n return conditionalQuestionData[conditionalQuestionId];\r\n }\r\n function getQuestionDataById(id) {\r\n return questionData[id];\r\n }\r\n function sortAssessmentDetails(data) {\r\n if (!data) return;\r\n // answerId: \"686614946860364\"\r\n // answerRow: \"1\"\r\n // answerText: \"\"\r\n // questionAnswerOptions: \"\"\r\n // questionAnswerStyle: \"TEXT\"\r\n // questionConditionalAnswerText: \"\"\r\n // questionConditionalQuestionId: \"\"\r\n // questionDefaultAnswer: \"\"\r\n // questionId: \"9\"\r\n // questionOrder: \"1\"\r\n // questionPrompt: \"\"\r\n // questionRequiresAnswer: \"True\"\r\n // questionSetAllowMultirowInserts: \"False\"\r\n // questionSetId: \"3\"\r\n // questionSetOrder: \"1\"\r\n // questionSetTitle: \"\"\r\n // questionSetType: \"LIST\"\r\n // questionTag: \"contributors_consumerName\"\r\n // questionText: \"Individual’s First Name & Last Initial\"\r\n // sectionId: \"2\"\r\n // sectionName: \"CONTRIBUTORS\"\r\n // sectionOrder: \"0\"\r\n // subsectionId: \"\"\r\n // subsectionName: \"\"\r\n // subsectionOrder: \"\"\r\n // applicable: \"Y\" || \"N\"\r\n // assessment: \"Y\" || \"N\"\r\n\r\n sectionData = {};\r\n subsectionData = {};\r\n questionSetData = {};\r\n questionData = {};\r\n answerData = {};\r\n conditionalQuestionData = {};\r\n applicableSections = {};\r\n\r\n data.forEach(({ sectionId, subsectionId, questionId, questionSetId, ...otherData }) => {\r\n // Sections\r\n if (!sectionData[sectionId]) {\r\n const isApplicable = otherData.applicable === '' ? 'Y' : otherData.applicable;\r\n sectionData[sectionId] = {\r\n order: otherData.sectionOrder,\r\n title: otherData.sectionName,\r\n applicable: isApplicable === 'Y' ? true : false,\r\n isAssessment: otherData.assessment,\r\n };\r\n\r\n if (!applicableSections[sectionId] && otherData.assessment) {\r\n if (otherData.assessment === 'Y') {\r\n applicableSections[sectionId] = isApplicable === 'Y' ? true : false;\r\n }\r\n }\r\n }\r\n // SubSections\r\n if (subsectionId && !subsectionData[subsectionId]) {\r\n subsectionData[subsectionId] = {\r\n sectionId,\r\n order: otherData.subsectionOrder,\r\n title: otherData.subsectionName,\r\n };\r\n }\r\n // Question Sets\r\n if (!questionSetData[questionSetId]) {\r\n questionSetData[questionSetId] = {\r\n id: questionSetId,\r\n sectionId,\r\n subsectionId,\r\n order: otherData.questionSetOrder,\r\n setType: otherData.questionSetType,\r\n allowRowInsert: otherData.questionSetAllowMultirowInserts,\r\n defaultAnswer: otherData.questionDefaultAnswer,\r\n questions: {},\r\n };\r\n }\r\n // Questions\r\n if (otherData.questionSetType === 'GRID') {\r\n if (!questionSetData[questionSetId].questions[otherData.answerRow]) {\r\n questionSetData[questionSetId].questions[otherData.answerRow] = {};\r\n }\r\n if (\r\n !questionSetData[questionSetId].questions[otherData.answerRow][otherData.questionOrder]\r\n ) {\r\n questionSetData[questionSetId].questions[otherData.answerRow][otherData.questionOrder] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n id: questionId,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n tag: otherData.questionTag,\r\n text: otherData.questionText,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n } else {\r\n if (!questionSetData[questionSetId].questions[otherData.questionOrder]) {\r\n questionSetData[questionSetId].questions[otherData.questionOrder] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n id: questionId,\r\n order: otherData.questionOrder,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n text: otherData.questionText,\r\n tag: otherData.questionTag,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n if (!questionData[questionId]) {\r\n questionData[questionId] = {\r\n answerId: otherData.answerId,\r\n answerText: otherData.answerText,\r\n answerStyle: otherData.questionAnswerStyle,\r\n answerOptions: otherData.questionAnswerOptions,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n id: questionId,\r\n order: otherData.questionOrder,\r\n prompt: otherData.questionPrompt,\r\n requiredAnswer: otherData.questionRequiresAnswer,\r\n text: otherData.questionText,\r\n tag: otherData.questionTag,\r\n skipped: otherData.skipped,\r\n };\r\n }\r\n\r\n if (otherData.questionConditionalQuestionId === '') return;\r\n\r\n if (!conditionalQuestionData[otherData.questionConditionalQuestionId]) {\r\n conditionalQuestionData[otherData.questionConditionalQuestionId] = [];\r\n }\r\n\r\n conditionalQuestionData[otherData.questionConditionalQuestionId].push({\r\n answerId: otherData.answerId,\r\n questionId: questionId,\r\n answerText: otherData.answerText,\r\n conditionalQuestionId: otherData.questionConditionalQuestionId,\r\n conditionalAnswerText: otherData.questionConditionalAnswerText,\r\n });\r\n }\r\n });\r\n\r\n return { sectionData, subsectionData, questionSetData };\r\n }\r\n\r\n // Data\r\n //------------------------------------\r\n // TODO: refactor ajax calls to return data\r\n // TODO: remove below functions once ^^ is done\r\n async function getAssessmentData(planId) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerAssessment({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n })\r\n ).getConsumerAssessmentResult;\r\n return sortAssessmentDetails(data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerRelationshipsData(consumerId, effectiveStartDate, effectiveEndDate) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerRelationships({\r\n token: $.session.Token,\r\n consumerId,\r\n effectiveStartDate,\r\n effectiveEndDate,\r\n })\r\n ).getConsumerRelationshipsResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerNameInfoData(consumerId) {\r\n try {\r\n const data = (\r\n await assessmentAjax.getConsumerNameInfo({\r\n token: $.session.Token,\r\n consumerId,\r\n })\r\n ).getConsumerNameInfoResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getServiceAndSupportsData() {\r\n try {\r\n const data = (\r\n await assessmentAjax.getServiceAndSupportsData({\r\n token: $.session.Token,\r\n })\r\n ).getServiceAndSupportsDataResult;\r\n return data;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function generateReport(assessmentID, versionID, extraSpace) {\r\n try {\r\n const success = (\r\n await assessmentAjax.getPlanAssessmentReport({\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n isp: true, //new\r\n signatureOnly: false,\r\n })\r\n ).getPlanAssessmentReportResult;\r\n\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n } catch (error) {\r\n return error.statusText;\r\n }\r\n }\r\n function generateReportWithAttachments(\r\n assessmentID,\r\n versionID,\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n toDODD,\r\n ) {\r\n assessmentAjax.getPlanAssessmentReportWithAttachments(\r\n //Testgd\r\n {\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n toONET: false,\r\n isp: true,\r\n oneSpan: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n },\r\n () => {\r\n const arr = success._buffer;\r\n const byteArray = new Uint8Array(arr);\r\n const blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser === 'Explorer' || $.session.browser === 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n const fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n\r\n reports.handledProcessedReport();\r\n return 'success';\r\n },\r\n );\r\n }\r\n async function transeferPlanReportToONET(\r\n assessmentID,\r\n versionID,\r\n extraSpace,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n ) {\r\n try {\r\n const successMessage = await assessmentAjax.transeferPlanReportToONET({\r\n token: $.session.Token,\r\n userId: $.session.PeopleId,\r\n assessmentID,\r\n versionID,\r\n extraSpace: extraSpace,\r\n toONET: true,\r\n isp: true,\r\n oneSpan: false,\r\n planAttachmentIds,\r\n wfAttachmentIds,\r\n sigAttachmentIds,\r\n DODDFlag,\r\n signatureOnly,\r\n include,\r\n });\r\n\r\n return successMessage;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function insertPlanReportToBeTranferredToONET(byteArray, assessmentID) {\r\n var binary = '';\r\n var len = byteArray.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(byteArray[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n try {\r\n const response = (\r\n await assessmentAjax.insertPlanReportToBeTranferredToONET({\r\n token: $.session.Token,\r\n report: abString,\r\n planId: assessmentID,\r\n })\r\n ).insertPlanReportToBeTranferredToONETResult;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n async function insertAssessmentGridRowAnswers(consumerPlanId, assessmentQuestionSetId) {\r\n try {\r\n const newRowData = (\r\n await assessmentAjax.insertAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId,\r\n assessmentQuestionSetId,\r\n })\r\n ).insertAssessmentGridRowAnswersResult;\r\n\r\n return newRowData;\r\n // return planId;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n // async function updateAnswers(answerArray) {\r\n // try {\r\n // const success = (\r\n // await assessmentAjax.updateConsumerAssessmentAnswers({\r\n // token: $.session.Token,\r\n // answers: answerArray,\r\n // })\r\n // ).updateAssessmentAnswersResult;\r\n // return success;\r\n // } catch (error) {\r\n // console.log(error.statusText);\r\n // }\r\n // }\r\n async function deleteGridRows(planId, questionSetId, rowsToDelete) {\r\n try {\r\n const success = (\r\n await assessmentAjax.deleteAssessmentGridRowAnswers({\r\n token: $.session.Token,\r\n consumerPlanId: planId,\r\n assessmentQuestionSetId: questionSetId,\r\n rowsToDelete,\r\n })\r\n ).deleteAssessmentGridRowAnswersResult;\r\n return success;\r\n } catch (error) {\r\n console.log(error.statusText);\r\n }\r\n }\r\n\r\n return {\r\n getAssessmentData,\r\n getConditionalQuestions,\r\n getQuestionDataById,\r\n getConsumerRelationshipsData,\r\n getConsumerNameInfoData,\r\n getServiceAndSupportsData,\r\n generateReport,\r\n generateReportWithAttachments,\r\n insertAssessmentGridRowAnswers,\r\n // updateAnswers,\r\n deleteGridRows,\r\n transeferPlanReportToONET,\r\n // applicable stuff\r\n showApplicableWarningMessage,\r\n toggleIsSectionApplicable,\r\n getApplicableSections,\r\n };\r\n})();\r\n","const assessmentAjax = (function () {\r\n function getConsumerAssessment(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerAssessment/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getPlanAssessmentReport(retrieveData) {\r\n //token, userId, assessmentID, versionID, extraSpace, isp(boolean)\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanAssessmentReport/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n async function getSentToONETDate(retrieveData) {\r\n //token, assessmentId\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSentToONETDate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSentToONETDateResult;\r\n }\r\n\r\n async function transeferPlanReportToONET(retrieveData) {\r\n //token, planAttachmentIds, wfAttachmentIds, sigAttachmentIds\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/transeferPlanReportToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.transeferPlanReportToONETResult;\r\n } catch (error) {\r\n console.log(error);\r\n return error.text;\r\n }\r\n }\r\n\r\n async function sendSelectedAttachmentsToDODD(retrieveData) {\r\n //token, planAttachmentIds, wfAttachmentIds, sigAttachmentIds\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/sendSelectedAttachmentsToDODD/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.sendSelectedAttachmentsToDODDResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getDefaultEmailsForFinalization() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getDefaultEmailsForFinalization/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getDefaultEmailsForFinalizationResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function finalizationActions(retrieveData) {\r\n //string token, string[] planAttachmentIds, string[] wfAttachmentIds, string[] sigAttachmentIds, string userId, string assessmentID\r\n //string versionID, string extraSpace, bool toONET, bool isp, bool oneSpan, bool signatureOnly, string include, string planId\r\n //string peopleId, string[] emailAddresses, string[] checkBoxes\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/finalizationActions/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.finalizationActionsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function getPlanAssessmentReportWithAttachments(retrieveData, callback) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/addSelectedAttachmentsToReport/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n callback();\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'bare');\r\n form.setAttribute('success', successFunction); //\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var userIdInput = document.createElement('input');\r\n userIdInput.setAttribute('name', 'userId');\r\n userIdInput.setAttribute('value', retrieveData.userId);\r\n userIdInput.id = 'userId';\r\n var assessmentIDInput = document.createElement('input');\r\n assessmentIDInput.setAttribute('name', 'assessmentID');\r\n assessmentIDInput.setAttribute('value', retrieveData.assessmentID);\r\n assessmentIDInput.id = 'assessmentID';\r\n var versionIDInput = document.createElement('input');\r\n versionIDInput.setAttribute('name', 'versionID');\r\n versionIDInput.setAttribute('value', retrieveData.versionID);\r\n versionIDInput.id = 'versionID';\r\n var extraSpaceInput = document.createElement('input');\r\n extraSpaceInput.setAttribute('name', 'extraSpace');\r\n extraSpaceInput.setAttribute('value', retrieveData.extraSpace);\r\n var toONETInput = document.createElement('input');\r\n toONETInput.setAttribute('name', 'toONET');\r\n toONETInput.setAttribute('value', retrieveData.toONET);\r\n var ispInput = document.createElement('input');\r\n ispInput.setAttribute('name', 'isp');\r\n ispInput.setAttribute('value', retrieveData.isp);\r\n ispInput.id = 'isp';\r\n var oneSpanInput = document.createElement('input');\r\n oneSpanInput.setAttribute('name', 'oneSpan');\r\n oneSpanInput.setAttribute('value', retrieveData.oneSpan);\r\n oneSpanInput.id = 'oneSpan';\r\n var signatureOnlyInput = document.createElement('input');\r\n signatureOnlyInput.setAttribute('name', 'signatureOnly');\r\n signatureOnlyInput.setAttribute('value', retrieveData.signatureOnly);\r\n signatureOnlyInput.id = 'signatureOnly';\r\n var includeInput = document.createElement('input');\r\n includeInput.setAttribute('name', 'include');\r\n includeInput.setAttribute('value', retrieveData.include);\r\n includeInput.id = 'include';\r\n var planAttachmentIdsInput = document.createElement('input');\r\n planAttachmentIdsInput.setAttribute('name', 'planAttachmentIds');\r\n planAttachmentIdsInput.setAttribute('value', retrieveData.planAttachmentIds);\r\n planAttachmentIdsInput.id = 'planAttachmentIds';\r\n var wfAttachmentIdsInput = document.createElement('input');\r\n wfAttachmentIdsInput.setAttribute('name', 'wfAttachmentIds');\r\n wfAttachmentIdsInput.setAttribute('value', retrieveData.wfAttachmentIds);\r\n wfAttachmentIdsInput.id = 'wfAttachmentIds';\r\n var sigAttachmentIdsInput = document.createElement('input');\r\n sigAttachmentIdsInput.setAttribute('name', 'sigAttachmentIds');\r\n sigAttachmentIdsInput.setAttribute('value', retrieveData.sigAttachmentIds);\r\n sigAttachmentIdsInput.id = 'sigAttachmentIds';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(userIdInput);\r\n form.appendChild(assessmentIDInput);\r\n form.appendChild(versionIDInput);\r\n form.appendChild(extraSpaceInput);\r\n form.appendChild(toONETInput);\r\n form.appendChild(ispInput);\r\n form.appendChild(oneSpanInput);\r\n form.appendChild(signatureOnlyInput);\r\n form.appendChild(includeInput);\r\n form.appendChild(planAttachmentIdsInput);\r\n form.appendChild(wfAttachmentIdsInput);\r\n form.appendChild(sigAttachmentIdsInput);\r\n\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n function getConsumerRelationships(retrieveData) {\r\n //token, consumerId, effectiveStartDate, effectiveEndDate\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationships/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n function getConsumerNameInfo(retrieveData) {\r\n //token, consumerId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerNameInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function updateConsumerAssessmentAnswers(retrieveData, callback) {\r\n //token, answerObj array\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n async function updateConsumerAssessmentAnswer(answerObject) {\r\n const retrieveData = {\r\n token: $.session.Token,\r\n answers: [answerObject],\r\n };\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updateAssessmentAnswersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n function insertAssessmentGridRowAnswers(retrieveData) {\r\n // token, consumerPlanId, assessmentQuestionSetId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertAssessmentGridRowAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function deleteAssessmentGridRowAnswers(retrieveData) {\r\n // token, consumerPlanId, assessmentQuestionSetId, rowsToDelete[]\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteAssessmentGridRowAnswers/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n // TODO: Delete below function\r\n function getServiceAndSupportsData(retrieveData) {\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getServiceAndSupportsData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function insertPlanReportToBeTranferredToONET(retrieveData) {\r\n //token, reort, planId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanReportToBeTranferredToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function transferPlanReportToONET(retrieveData) {\r\n //token, planId\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/transferPlanReportToONET/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n function updateAssessmentAnswerRowOrder(retrieveData) {\r\n // string token, string answerIds, long assessmentId, long questionSetId, int newPos, int oldPos\r\n // Pipe delimit the answerIds with no spaces\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateAssessmentAnswerRowOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n }\r\n\r\n return {\r\n getConsumerAssessment,\r\n getPlanAssessmentReport,\r\n getConsumerRelationships,\r\n getConsumerNameInfo,\r\n updateConsumerAssessmentAnswers,\r\n updateConsumerAssessmentAnswer,\r\n insertAssessmentGridRowAnswers,\r\n deleteAssessmentGridRowAnswers,\r\n getDefaultEmailsForFinalization,\r\n getServiceAndSupportsData,\r\n finalizationActions,\r\n insertPlanReportToBeTranferredToONET,\r\n transferPlanReportToONET,\r\n updateAssessmentAnswerRowOrder,\r\n getPlanAssessmentReportWithAttachments,\r\n sendSelectedAttachmentsToDODD,\r\n transeferPlanReportToONET,\r\n getSentToONETDate,\r\n };\r\n})();\r\n","const ISP = (function () {\r\n let ispData;\r\n let planId;\r\n let ispDiv;\r\n let ispNav;\r\n let ispBody;\r\n let readOnly;\r\n let validationCheck;\r\n\r\n const sections = [\r\n {\r\n title: 'Summary',\r\n id: 0,\r\n markup: () => planSummary.getMarkup(),\r\n },\r\n {\r\n title: 'Outcomes',\r\n id: 1,\r\n markup: () => planOutcomes.getMarkup(),\r\n },\r\n {\r\n title: 'Services',\r\n id: 2,\r\n markup: () => servicesSupports.getMarkup(),\r\n },\r\n {\r\n title: 'Restrictive Measures',\r\n id: 3,\r\n markup: () => planRestrictiveMeasures.getMarkup(),\r\n },\r\n {\r\n title: 'Sign / Consent',\r\n id: 4,\r\n markup: () => planConsentAndSign.getMarkup(),\r\n },\r\n {\r\n title: 'Contacts',\r\n id: 5,\r\n markup: () => contactInformation.getSectionMarkup(),\r\n },\r\n {\r\n title: 'Introduction',\r\n id: 6,\r\n markup: () => planIntroduction.getMarkup(),\r\n },\r\n ];\r\n\r\n // Utils\r\n //---------------------------------------------\r\n async function getInitialData() {\r\n ispData = {};\r\n\r\n ispData.servicesSupports = await servicesSupportsAjax.getServicesAndSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planId,\r\n });\r\n }\r\n async function refreshISP(planID) {\r\n planId = planID;\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n const ispWrap = document.getElementById('planISP');\r\n\r\n const loadingBar = PROGRESS.SPINNER.get('Loading ISP...');\r\n ispWrap.innerHTML = '';\r\n ispWrap.appendChild(loadingBar);\r\n\r\n const newIspMarkup = await getMarkup();\r\n\r\n ispWrap.innerHTML = '';\r\n ispWrap.appendChild(newIspMarkup);\r\n\r\n DOM.autosizeTextarea();\r\n }\r\n function toggleActiveNavItem(selectedNavItem) {\r\n const activeNavItem = ispNav.querySelector('.active');\r\n\r\n if (activeNavItem) {\r\n activeNavItem.classList.remove('active');\r\n }\r\n\r\n selectedNavItem.classList.add('active');\r\n }\r\n function toggleActiveSection(sectionId) {\r\n const activeSection = ispBody.querySelector('.active');\r\n const targetSection = ispBody.querySelector(`[data-section-id=\"${sectionId}\"]`);\r\n\r\n if (activeSection) {\r\n activeSection.classList.remove('active');\r\n }\r\n\r\n targetSection.classList.add('active');\r\n }\r\n function showDeleteWarning(popup, message, callback) {\r\n popup.classList.add('deleteActive');\r\n\r\n const deleteWarning = document.createElement('div');\r\n deleteWarning.classList.add('deleteWarning');\r\n\r\n const warningMessage = document.createElement('p');\r\n warningMessage.innerHTML = `${message}`;\r\n\r\n const yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n callback();\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n },\r\n });\r\n const closeWarningBtn = button.build({\r\n type: 'text',\r\n style: 'secondary',\r\n icon: 'close',\r\n classNames: 'closeWarningBtn',\r\n callback: function () {\r\n popup.removeChild(deleteWarning);\r\n popup.classList.remove('deleteActive');\r\n popup.style.overflow = 'auto';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n // popup.style.overflow = 'hidden';\r\n deleteWarning.appendChild(closeWarningBtn);\r\n deleteWarning.appendChild(warningMessage);\r\n deleteWarning.appendChild(yesBtn);\r\n deleteWarning.appendChild(noBtn);\r\n\r\n popup.appendChild(deleteWarning);\r\n }\r\n\r\n // Markup\r\n //---------------------------------------------\r\n function buildNavigation() {\r\n const nav = document.createElement('div');\r\n nav.classList.add('planISP__nav');\r\n\r\n sections.forEach(async (section, index) => {\r\n const sectionId = section.id;\r\n\r\n const navItem = document.createElement('div');\r\n navItem.classList.add('planISP__navItem');\r\n navItem.innerHTML = `${section.title}`;\r\n\r\n if (section.title === 'Summary') {\r\n const summaryAlertDiv = document.createElement('div');\r\n summaryAlertDiv.classList.add('summaryAlertDiv');\r\n summaryAlertDiv.id = 'summaryAlert';\r\n summaryAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(summaryAlertDiv);\r\n summaryAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n summaryAlertDiv,\r\n );\r\n\r\n let summaryRisksValidation = planValidation.returnSummaryRisksValidation();\r\n\r\n // If a plan returns an error on the validation check, show the alert div\r\n if (!summaryRisksValidation)\r\n {\r\n summaryAlertDiv.style.display = 'flex';\r\n } else {\r\n summaryAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n // if the section is 'Outcomes' run an initial validation check on the section\r\n if (section.title === 'Outcomes') {\r\n const outcomesAlertDiv = document.createElement('div');\r\n outcomesAlertDiv.classList.add('outcomesAlertDiv');\r\n outcomesAlertDiv.id = 'outcomesAlert';\r\n outcomesAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(outcomesAlertDiv);\r\n outcomesAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n outcomesAlertDiv,\r\n );\r\n\r\n // If a plan returns an error on the validation check, show the alert div\r\n if (validationCheck.missingExperiences.length === 0 && validationCheck.missingReviews.length === 0) \r\n {\r\n outcomesAlertDiv.style.display = 'none';\r\n } else {\r\n outcomesAlertDiv.style.display = 'flex';\r\n }\r\n \r\n if (validationCheck.complete === false) {\r\n outcomesAlertDiv.style.display = 'flex';\r\n } else {\r\n outcomesAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n // if the section is 'Outcomes' run an initial validation check on the section\r\n if (section.title === 'Contacts') {\r\n const contactsAlertDiv = document.createElement('div');\r\n contactsAlertDiv.classList.add('contactsAlertDiv');\r\n contactsAlertDiv.id = 'contactsAlert';\r\n contactsAlertDiv.innerHTML = `${icons.error}`;\r\n navItem.appendChild(contactsAlertDiv);\r\n contactsAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'There is data missing on this tab that is required by DODD',\r\n contactsAlertDiv,\r\n );\r\n\r\n let contactValidationCheck = planValidation.getContactValidation();\r\n\r\n if (!contactValidationCheck.importantPeople || !contactValidationCheck.importantPlaces || !contactValidationCheck.bestWayToConnect)\r\n {\r\n contactsAlertDiv.style.display = 'flex';\r\n } else {\r\n contactsAlertDiv.style.display = 'none';\r\n }\r\n }\r\n\r\n if (index === 0) {\r\n navItem.classList.add('active');\r\n }\r\n\r\n navItem.addEventListener('click', e => {\r\n toggleActiveNavItem(navItem);\r\n toggleActiveSection(sectionId);\r\n DOM.autosizeTextarea();\r\n });\r\n\r\n nav.appendChild(navItem);\r\n });\r\n\r\n return nav;\r\n }\r\n async function buildBody() {\r\n const body = document.createElement('div');\r\n body.classList.add('planISP__body');\r\n\r\n // refresh data for relationships in dropdown data\r\n planData.refreshDropdownData();\r\n\r\n await getInitialData();\r\n\r\n servicesSupports.init({ planId, readOnly, data: ispData.servicesSupports });\r\n\r\n // eventually remove await and place data GET into getInitialData()\r\n await planSummary.init({ planId, readOnly });\r\n await planOutcomes.init({ planId, readOnly });\r\n await planConsentAndSign.init({ planId, readOnly });\r\n await planRestrictiveMeasures.init({ planId, readOnly });\r\n await contactInformation.init(planId);\r\n await planIntroduction.init({ planId, readOnly });\r\n\r\n sections.forEach((section, index) => {\r\n const sectionId = section.id;\r\n const sectionMarkup = section.markup();\r\n sectionMarkup.setAttribute('data-section-id', sectionId);\r\n sectionMarkup.classList.add('planISP__section');\r\n\r\n if (index === 0) {\r\n sectionMarkup.classList.add('active');\r\n }\r\n\r\n body.appendChild(sectionMarkup);\r\n });\r\n\r\n return body;\r\n }\r\n\r\n async function getMarkup() {\r\n ispDiv = document.createElement('div');\r\n ispDiv.classList.add('planISP');\r\n\r\n const status = plan.getPlanStatus();\r\n const isPlanComplete = status === 'C' ? true : false;\r\n const isPlanActive = plan.getPlanActiveStatus();\r\n const hasUpdatePermission = $.session.planUpdate;\r\n if (!isPlanActive || isPlanComplete || !hasUpdatePermission) {\r\n readOnly = true;\r\n ispDiv.classList.add('readOnly');\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n ispNav = buildNavigation();\r\n ispDiv.appendChild(ispNav);\r\n\r\n ispBody = await buildBody();\r\n ispDiv.appendChild(ispBody);\r\n\r\n return ispDiv;\r\n }\r\n\r\n return {\r\n refreshISP,\r\n getMarkup,\r\n showDeleteWarning,\r\n };\r\n})();\r\n","const planValidation = (function () {\r\n let planId;\r\n let workingSectionCase = 0;\r\n\r\n let assessmentValidationCheck = {\r\n workingNotWorking: [],\r\n sectionsApplicable: [],\r\n servicesAndSupports: {},\r\n servicesAndSupportsChecked: {\r\n 34: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 35: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 36: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 37: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 38: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 39: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 40: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n },\r\n hasASectionApplicable: true,\r\n workingSectionComplete: false,\r\n servicesAndSupportsError: false,\r\n complete: false\r\n };\r\n\r\n let IspValidationCheck = {\r\n complete: true,\r\n details: [],\r\n missingExperiences: [],\r\n missingReviews: [],\r\n planProgressSummary: false,\r\n outcome: [],\r\n selectedProviders: [],\r\n paidSupportsProviders: [],\r\n invalidProviders: [],\r\n contactSectionComplete: true,\r\n summaryRisksValidation: true\r\n };\r\n\r\n let contactsValidation = {\r\n importantPeople: true,\r\n importantPlaces: true,\r\n bestWayToConnect: true\r\n }\r\n\r\n const servicesAndSupportsQuestionIds = {\r\n noSupportQuestionIds: ['509', '526', '84', '95', '162', '500', '575'],\r\n paidSupportQuestionIds: [\r\n '631',\r\n '612',\r\n '637',\r\n '648',\r\n '663',\r\n '674',\r\n '689',\r\n '376',\r\n '395',\r\n '401',\r\n '412',\r\n '427',\r\n '438',\r\n '453',\r\n ],\r\n professionalReferralQuestionIds: [\r\n '693',\r\n '678',\r\n '667',\r\n '652',\r\n '641',\r\n '627',\r\n '616',\r\n '457',\r\n '442',\r\n '431',\r\n '416',\r\n '405',\r\n '391',\r\n '380',\r\n ],\r\n potentialOutcomeQuestionIds: [\r\n '510',\r\n '527',\r\n '541',\r\n '558',\r\n '576',\r\n '589',\r\n '85',\r\n '96',\r\n '163',\r\n '196',\r\n '242',\r\n '267',\r\n '336',\r\n '501',\r\n ],\r\n additionalSupportQuestionIds: {\r\n naturalSupportQuestionIds: [\r\n '624',\r\n '613',\r\n '638',\r\n '649',\r\n '664',\r\n '675',\r\n '690',\r\n '377',\r\n '388',\r\n '402',\r\n '413',\r\n '428',\r\n '439',\r\n '454',\r\n ],\r\n technologyQuestionIds: [\r\n '614',\r\n '625',\r\n '639',\r\n '650',\r\n '665',\r\n '676',\r\n '691',\r\n '378',\r\n '389',\r\n '403',\r\n '414',\r\n '429',\r\n '440',\r\n '455',\r\n ],\r\n communityQuestionIds: [\r\n '615',\r\n '626',\r\n '640',\r\n '651',\r\n '666',\r\n '677',\r\n '692',\r\n '379',\r\n '390',\r\n '404',\r\n '415',\r\n '430',\r\n '441',\r\n '456',\r\n ],\r\n },\r\n };\r\n\r\n function setPlanId(newPlanId) {\r\n planId = newPlanId;\r\n }\r\n \r\n //* TOOLTIPS\r\n function createTooltip(message, attachedDiv) {\r\n attachedDiv.classList.add('tooltip');\r\n \r\n const tooltipText = document.createElement('div');\r\n tooltipText.classList.add('tooltiptext');\r\n tooltipText.innerHTML = message;\r\n \r\n attachedDiv.addEventListener('mousemove', event => {\r\n const x = event.clientX;\r\n const y = event.clientY;\r\n \r\n tooltipText.style.left = `${x}px`;\r\n tooltipText.style.top = `${y}px`;\r\n });\r\n \r\n attachedDiv.appendChild(tooltipText);\r\n }\r\n \r\n //* ASSESSMENT INITIAL CHECK\r\n function returnAssessmentValidationData() {\r\n return assessmentValidationCheck;\r\n }\r\n\r\n async function getAssessmentValidation(planId) {\r\n // reset the values of the validation for each consumer\r\n assessmentValidationCheck = {\r\n workingNotWorking: [],\r\n sectionsApplicable: [],\r\n servicesAndSupports: {},\r\n servicesAndSupportsChecked: {\r\n 34: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 35: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 36: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 37: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 38: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 39: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n 40: {\r\n noSupport: false,\r\n paidSupport: false,\r\n naturalSupport: false,\r\n technology: false,\r\n communitResource: false,\r\n professionalReferral: false,\r\n potentialOutcome: false,\r\n },\r\n },\r\n hasASectionApplicable: true,\r\n workingSectionComplete: false,\r\n servicesAndSupportsError: false,\r\n complete: false\r\n };\r\n // Gathers the data from the database\r\n servicesAndSupportsData = await planValidationAjax.getAssessmentValidationData(planId);\r\n \r\n // WORKING/NOT WORKING\r\n assessmentValidationCheck.workingNotWorking = servicesAndSupportsData.workingNotWorking;\r\n workingSectionCheck(assessmentValidationCheck);\r\n \r\n // SECTIONS APPLICABLE\r\n // check each section fo rthe plan and see if any are selected, if at least one is selected, return true\r\n assessmentValidationCheck.sectionsApplicable = servicesAndSupportsData.sectionsApplicable;\r\n let hasASectionApplicable = assessmentValidationCheck.sectionsApplicable.some(\r\n obj => obj.applicable === 'Y',\r\n );\r\n\r\n // In the case the ANYW_ISP_Sections_Applicable table is missing the planId\r\n if (assessmentValidationCheck.sectionsApplicable.length === 0) {\r\n hasASectionApplicable = true;\r\n }\r\n \r\n // if no section is checked, set value to false\r\n if (!hasASectionApplicable) {\r\n assessmentValidationCheck.hasASectionApplicable = false;\r\n }\r\n \r\n // SERVICES AND SUPPORTS\r\n // Count occurrences of assessmentAreaId in each service and supports category\r\n assessmentValidationCheck.servicesAndSupports.additionalSupportCounts = countOccurrences(servicesAndSupportsData.additionalSupport);\r\n assessmentValidationCheck.servicesAndSupports.paidSupportCounts = countOccurrences(servicesAndSupportsData.paidSupport);\r\n assessmentValidationCheck.servicesAndSupports.professionalReferralCounts = countOccurrences(servicesAndSupportsData.professionalReferral);\r\n assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts = countOccurrences(servicesAndSupportsData.assessmentOutcomes);\r\n \r\n // check if all sections are complete\r\n allAssessmentAreasComplete(assessmentValidationCheck);\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n function allAssessmentAreasComplete(assessmentValidationCheck) {\r\n if (assessmentValidationCheck.hasASectionApplicable === true && assessmentValidationCheck.workingSectionComplete === true && assessmentValidationCheck.servicesAndSupportsError === false) {\r\n assessmentValidationCheck.complete = true;\r\n } else {\r\n assessmentValidationCheck.complete = false;\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT DATA UPDATE CHECK\r\n function updatedAssessmenteValidation() {\r\n const workingAlertDivCase1 = document.getElementById('workingAlert1');\r\n const workingAlertDivCase2 = document.getElementById('workingAlert2');\r\n const tocAlertDiv = document.getElementById('tocAlert');\r\n const tocMobileAlertDiv = document.getElementById('tocAlertMobile');\r\n const navAlertDiv = document.getElementById('navAlertAssessment');\r\n \r\n //Check working/ not working section\r\n workingSectionCheck(assessmentValidationCheck);\r\n \r\n //check sections applicable\r\n tocAssessmentCheck(assessmentValidationCheck);\r\n \r\n //Check services and supports\r\n servicesAndSupportsAllVisibleSectionsCheck(assessmentValidationCheck);\r\n updateTocSectionHeaders(assessmentValidationCheck);\r\n\r\n //Check status of Assessment page\r\n allAssessmentAreasComplete(assessmentValidationCheck);\r\n \r\n // Set alert divs display value\r\n // If a section is not applied, show the alerts in the Table of Contents and the Nav\r\n if (!assessmentValidationCheck.hasASectionApplicable) {\r\n if (tocAlertDiv) {\r\n tocAlertDiv.style.display = 'flex';\r\n }\r\n if (tocMobileAlertDiv) {\r\n tocMobileAlertDiv.style.display = 'flex';\r\n }\r\n } else {\r\n if (tocAlertDiv) {\r\n tocAlertDiv.style.display = 'none';\r\n }\r\n if (tocMobileAlertDiv) {\r\n tocMobileAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n // If the working/not working section does not have a completed row, show the alert\r\n if (!assessmentValidationCheck.workingSectionComplete) {\r\n if (workingSectionCase === 1) {\r\n if (workingAlertDivCase1) {\r\n workingAlertDivCase1.style.display = 'inline-block';\r\n workingAlertDivCase2.style.display = 'none';\r\n }\r\n }\r\n else if (workingSectionCase === 2) {\r\n if (workingAlertDivCase2) {\r\n workingAlertDivCase2.style.display = 'inline-block';\r\n workingAlertDivCase1.style.display = 'none';\r\n }\r\n }\r\n } else {\r\n if (workingAlertDivCase1) {\r\n workingAlertDivCase1.style.display = 'none';\r\n }\r\n if (workingAlertDivCase2) {\r\n workingAlertDivCase2.style.display = 'none';\r\n }\r\n }\r\n \r\n // If the assessment page has an error, show the nav alert\r\n if (assessmentValidationCheck.complete === false) {\r\n if (navAlertDiv) {\r\n navAlertDiv.style.display = 'flex';\r\n }\r\n } else {\r\n if (navAlertDiv) {\r\n navAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT WORKING/NOT WORKING\r\n function workingSectionCheck(assessmentValidationCheck) {\r\n const groupedByRow = {};\r\n const hasValue605Array = [];\r\n const hasValue606Array = [];\r\n\r\n // Group objects by row\r\n assessmentValidationCheck.workingNotWorking.forEach(obj => {\r\n if (!groupedByRow[obj.answerRow]) {\r\n groupedByRow[obj.answerRow] = [];\r\n }\r\n groupedByRow[obj.answerRow].push(obj);\r\n });\r\n\r\n // Check for Question 607 within each row having values for 605 or 606\r\n for (const row in groupedByRow) {\r\n let hasValue605 = false;\r\n let hasValue606 = false;\r\n let hasValue607 = false;\r\n\r\n groupedByRow[row].forEach(obj => {\r\n if (obj.questionNumber === \"Question 605\" && obj.answer) {\r\n hasValue605 = true;\r\n }\r\n if (obj.questionNumber === \"Question 606\" && obj.answer) {\r\n hasValue606 = true;\r\n }\r\n if (obj.questionNumber === \"Question 607\" && obj.answer) {\r\n hasValue607 = true;\r\n }\r\n });\r\n\r\n // If either 605 or 606 has value, then 607 must also have a value\r\n if ((hasValue605 || hasValue606) && !hasValue607) {\r\n assessmentValidationCheck.workingSectionComplete = false;\r\n workingSectionCase = 2; \r\n return assessmentValidationCheck;\r\n }\r\n\r\n // Check if all three questions are blank\r\n if (!hasValue605 && !hasValue606) {\r\n assessmentValidationCheck.workingSectionComplete = false;\r\n workingSectionCase = 2;\r\n return assessmentValidationCheck;\r\n }\r\n\r\n hasValue605Array.push(hasValue605);\r\n hasValue606Array.push(hasValue606);\r\n }\r\n\r\n // Check if there's at least one row with both 605 and 606 having values\r\n const hasValue605 = hasValue605Array.some(val => val);\r\n const hasValue606 = hasValue606Array.some(val => val);\r\n if (!hasValue605 || !hasValue606) {\r\n assessmentValidationCheck.workingSectionComplete = false;\r\n workingSectionCase = 1;\r\n return assessmentValidationCheck;\r\n }\r\n\r\n assessmentValidationCheck.workingSectionComplete = true;\r\n workingSectionCase = 0; // Set workingSectionCase to 0 if all conditions pass\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function returnWorkingSectionCaseValue() {\r\n return workingSectionCase;\r\n }\r\n\r\n async function updateAnswerWorkingSection(planId) {\r\n const check = await getAssessmentValidation(planId);\r\n\r\n workingSectionCheck(check);\r\n \r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation();\r\n //return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT TABLE OF CONTENTS\r\n function tocAssessmentCheck(assessmentValidationCheck) {\r\n const hasASectionApplicable = assessmentValidationCheck.sectionsApplicable.some(\r\n obj => obj.applicable === 'Y',\r\n );\r\n \r\n if (hasASectionApplicable) {\r\n assessmentValidationCheck.hasASectionApplicable = true;\r\n } else {\r\n assessmentValidationCheck.hasASectionApplicable = false;\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n\r\n function updateTocSectionHeaders(assessmentValidationCheck) {\r\n for (let id = 34; id <= 40; id++) {\r\n let tocSectionHeader = document.getElementById(`${id}alert`);\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;\r\n \r\n if (\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport && paidSupportCount === 0) ||\r\n ((assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport || assessmentValidationCheck.servicesAndSupportsChecked[id].technology || assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource) && additionalSupportCount === 0) ||\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral && professionalReferralCounts === 0) ||\r\n (assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome && potentialOutcomeCount === 0)\r\n ) {\r\n if (tocSectionHeader) {\r\n tocSectionHeader.style.display = 'inline-block';\r\n }\r\n } else {\r\n if (tocSectionHeader) {\r\n tocSectionHeader.style.display = 'none';\r\n }\r\n }\r\n }\r\n \r\n return assessmentValidationCheck;\r\n }\r\n \r\n // ASSESSMENT SERVICES AND SUPPORTS\r\n function servicesAndSupportsBtnCheck() {\r\n const idsToCheck = [34, 35, 36, 37, 38, 39, 40];\r\n\r\n idsToCheck.forEach(id => {\r\n let paidSupportBtn = document.getElementById(`paidSupportBtn${id}`);\r\n let additionalSupportBtn = document.getElementById(`additionalSupportBtn${id}`);\r\n let profRefBtn = document.getElementById(`profRefBtn${id}`);\r\n let outcomesBtn = document.getElementById(`outcomesBtn${id}`);\r\n\r\n // number of services and supports attached to each section\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;;\r\n\r\n // returns true if the section has been checked \r\n let paidSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport;\r\n let additionalSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport || assessmentValidationCheck.servicesAndSupportsChecked[id].technology || assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource;\r\n let professionalReferralChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral;\r\n let potentialOutcomeChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome;\r\n\r\n // Add error class to buttons that are checked and have 0 outcomes attached to them\r\n // if the btn already has the error and no longer meets criteria to contain the error class, remove the error class\r\n const sections = [\r\n {\r\n checkboxChecked: paidSupportChecked,\r\n count: paidSupportCount,\r\n button: paidSupportBtn,\r\n errorText: 'Add Paid Support',\r\n },\r\n {\r\n checkboxChecked: additionalSupportChecked,\r\n count: additionalSupportCount,\r\n button: additionalSupportBtn,\r\n errorText: 'Add Additional Support',\r\n },\r\n {\r\n checkboxChecked: professionalReferralChecked,\r\n count: professionalReferralCounts,\r\n button: profRefBtn,\r\n errorText: 'Add Professional Referral',\r\n },\r\n {\r\n checkboxChecked: potentialOutcomeChecked,\r\n count: potentialOutcomeCount,\r\n button: outcomesBtn,\r\n errorText: 'Add Outcome',\r\n },\r\n ];\r\n \r\n assessmentValidationCheck.servicesAndSupportsError = false;\r\n \r\n sections.forEach(section => {\r\n if (section.checkboxChecked && section.count === 0) {\r\n section.button.classList.add('error');\r\n assessmentValidationCheck.servicesAndSupportsError = true;\r\n } else {\r\n if (section.button.classList.contains('error')) {\r\n section.button.classList.remove('error');\r\n }\r\n section.button.innerHTML = `${section.errorText} (${section.count})`;\r\n }\r\n });\r\n\r\n });\r\n\r\n // if any of the classes have an error then add the alert if it is not already there\r\n if (assessmentValidationCheck.servicesAndSupportsError === true) {\r\n assessmentValidationCheck.complete = false;\r\n }\r\n\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function servicesAndSupportsAllVisibleSectionsCheck(assessmentValidationCheck) {\r\n const allSections = document.getElementsByClassName('assessment__section');\r\n\r\n // Get only the sections that are selected on the assessment\r\n const applicableSections = Array.from(allSections).filter(section => !section.classList.contains('nonApplicable'));\r\n \r\n // Check if any of the buttons within the applicable sections have the class \"error\"\r\n const hasError = Array.from(applicableSections).some(section => {\r\n const buttons = section.querySelectorAll('.sectionFooter .btn.btn--secondary.btn--contained');\r\n return Array.from(buttons).some(button => button.classList.contains('error'));\r\n });\r\n \r\n if (hasError) {\r\n assessmentValidationCheck.servicesAndSupportsError = true;\r\n } else {\r\n // No buttons with the class \"error\" found\r\n assessmentValidationCheck.servicesAndSupportsError = false;\r\n }\r\n\r\n return assessmentValidationCheck;\r\n }\r\n\r\n function findQuestionIdCategory(questionId) {\r\n if (servicesAndSupportsQuestionIds.noSupportQuestionIds.includes(questionId)) {\r\n return 'noSupport';\r\n } else if (servicesAndSupportsQuestionIds.paidSupportQuestionIds.includes(questionId)) {\r\n return 'paidSupport';\r\n } else if (\r\n servicesAndSupportsQuestionIds.professionalReferralQuestionIds.includes(questionId)\r\n ) {\r\n return 'professionalReferral';\r\n } else if (servicesAndSupportsQuestionIds.potentialOutcomeQuestionIds.includes(questionId)) {\r\n return 'potentialOutcome';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.naturalSupportQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'naturalSupport';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.technologyQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'technology';\r\n } else if (\r\n servicesAndSupportsQuestionIds.additionalSupportQuestionIds.communityQuestionIds.includes(\r\n questionId,\r\n )\r\n ) {\r\n return 'communityResource';\r\n } else {\r\n return 'Variable not found in the object';\r\n }\r\n }\r\n \r\n function countOccurrences(array) {\r\n const counts = {};\r\n array.forEach(item => {\r\n const assessmentAreaId = item.assessmentAreaId;\r\n counts[assessmentAreaId] = (counts[assessmentAreaId] || 0) + 1;\r\n });\r\n return counts;\r\n }\r\n\r\n function updateSectionApplicability(sectionID, applied) {\r\n // Find the object with matching sectionId and obtain the index\r\n const matchingIndex = assessmentValidationCheck.sectionsApplicable.findIndex(\r\n obj => obj.sectionId === sectionID,\r\n );\r\n \r\n // Update the value if a match is found\r\n if (matchingIndex !== -1) {\r\n assessmentValidationCheck.sectionsApplicable[matchingIndex].applicable = applied;\r\n // Toggle the value between 'Y' and 'N'\r\n assessmentValidationCheck.sectionsApplicable[matchingIndex].applicable = applied;\r\n (assessmentValidationCheck.sectionsApplicable[matchingIndex]).applicable === 'Y' ? 'N' : 'Y';\r\n }\r\n \r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n }\r\n\r\n function updateAssessmentValidationSection(key, value) {\r\n assessmentValidationCheck[key] = value;\r\n\r\n updatedAssessmenteValidation();\r\n }\r\n\r\n function updateAssessmentValidationProperty(sectionId, questionIdCategory, value) {\r\n assessmentValidationCheck.servicesAndSupportsChecked[sectionId][questionIdCategory] = value;\r\n\r\n updatedAssessmenteValidation();\r\n }\r\n\r\n //* ISP\r\n async function ISPValidation(planId) {\r\n // Set state of check to neutral before running to remove cached data\r\n IspValidationCheck = {\r\n complete: true,\r\n details: [],\r\n missingExperiences: [],\r\n missingReviews: [],\r\n planProgressSummary: false,\r\n outcome: [],\r\n selectedProviders: [],\r\n paidSupportsProviders: [],\r\n invalidProviders: []\r\n };\r\n\r\n outcomesData = await planOutcomesAjax.getPlanSpecificOutcomes({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n \r\n IspValidationCheck.outcomesData = outcomesData;\r\n\r\n for (const item of outcomesData.planOutcomeExperiences) {\r\n for (const responsibility of item.planExperienceResponsibilities) {\r\n const responsibleProvider = responsibility.responsibleProvider;\r\n (IspValidationCheck.selectedProviders).push(responsibleProvider);\r\n }\r\n }\r\n\r\n const paidSupportsIds = outcomesData.paidSupports.map(obj => obj.providerId);\r\n IspValidationCheck.paidSupportsProviders = paidSupportsIds;\r\n\r\n const invalidProviders = (IspValidationCheck.selectedProviders).filter(number => \r\n number !== \"\" && \r\n number !== \"%\" && \r\n !(IspValidationCheck.paidSupportsProviders).includes(number) && \r\n !IspValidationCheck.outcomesData.planOutcomeExperiences.some(outcome =>\r\n Object.values(outcome.planExperienceResponsibilities).some(responsibility =>\r\n responsibility.responsibleProvider === number &&\r\n responsibility.isSalesforceLocation === 'True'\r\n )\r\n )\r\n );\r\n IspValidationCheck.invalidProviders = invalidProviders;\r\n \r\n // get a list of the unique outcomeIds\r\n var uniqueOutcomeIds = Array.from(new Set(outcomesData.planOutcome.map(obj => obj.outcomeId)));\r\n \r\n // if any outcome is missing the 'Details to Know' or 'Outcome' section, return false on the validation check\r\n for (let i = 0; i < outcomesData.planOutcome.length; i++) {\r\n if (outcomesData.planOutcome[i].details === '') {\r\n IspValidationCheck.details.push(outcomesData.planOutcome[i].outcomeId);\r\n }\r\n if (outcomesData.planOutcome[i].outcome === '') {\r\n IspValidationCheck.outcome.push(outcomesData.planOutcome[i].outcomeId);\r\n }\r\n }\r\n \r\n for (let i = 0; i < outcomesData.planReviews.length; i++) {\r\n if (outcomesData.planReviews[i].whenToCheckIn === '') {\r\n IspValidationCheck.missingReviews.push(outcomesData.planReviews[i].outcomeId);\r\n //IspValidationCheck.complete = false;\r\n }\r\n }\r\n\r\n // makes list of all the outcomeIds from the plan outcome experiences and reviews\r\n const outcomeExperienceOutcomeIds = outcomesData.planOutcomeExperiences.map(\r\n obj => obj.outcomeId,\r\n );\r\n const outcomeReviewOutcomeIds = outcomesData.planReviews.map(obj => obj.outcomeId);\r\n \r\n // checks for outcomeIds that may be missing in experiences and reviews (if values are returned, that outcome is missing data)\r\n const missingOutcomeExperiences = uniqueOutcomeIds.filter(\r\n num => !outcomeExperienceOutcomeIds.includes(num),\r\n );\r\n const missingOutcomeReviews = uniqueOutcomeIds.filter(\r\n num => !outcomeReviewOutcomeIds.includes(num),\r\n );\r\n \r\n IspValidationCheck.missingExperiences = missingOutcomeExperiences;\r\n // IspValidationCheck.missingReviews = missingOutcomeReviews;\r\n IspValidationCheck.missingReviews.push(...missingOutcomeReviews) ;\r\n \r\n // if an outcome is missing a review or experience, return false on the validation check\r\n if (missingOutcomeReviews.length > 0 || missingOutcomeExperiences.length > 0) {\r\n IspValidationCheck.complete = false;\r\n }\r\n \r\n // check the plan progress summary value\r\n if (outcomesData.planProgressSummary[0]) {\r\n IspValidationCheck.planProgressSummary = (outcomesData.planProgressSummary[0].progressSummary !== '');\r\n }\r\n\r\n if (IspValidationCheck.outcomesData.planOutcome.length < 1) {\r\n IspValidationCheck.planProgressSummary = true;\r\n }\r\n\r\n // if there are invalid providers, return false on the validaton check\r\n if (IspValidationCheck.invalidProviders.length > 0) {\r\n IspValidationCheck.complete = false;\r\n } \r\n \r\n // checks if all required data on the page has been filled out\r\n checkAllOutcomesComplete(IspValidationCheck);\r\n\r\n ispValidationContactCheck();\r\n \r\n await summaryRisksValidationCheck();\r\n\r\n //IspValidationCheck = validationCheck;\r\n return IspValidationCheck;\r\n }\r\n\r\n function returnIspValidation() {\r\n return IspValidationCheck;\r\n }\r\n // sets the alerts status based on the completion of the ISP outcomes data\r\n function updatedIspOutcomesSetAlerts(validationCheck) {\r\n //checkExperienceProviders(validationCheck);\r\n checkAllOutcomesComplete(validationCheck);\r\n//\r\n // ISP Main Nav and ISP Outcomes Tab \r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const outcomesNav = document.getElementById('outcomesAlert');\r\n\r\n //if (validationCheck.complete === true) {\r\n if (validationCheck.missingExperiences.length > 0 || validationCheck.missingReviews.length > 0) {\r\n outcomesNav.style.display = 'block';\r\n ISPAlertDiv.style.display = 'flex';\r\n } else {\r\n outcomesNav.style.display = 'none';\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n\r\n\r\n return validationCheck;\r\n }\r\n \r\n // Checks if all fields on the ISP outcomes are completed\r\n function checkAllOutcomesComplete(validationCheck) {\r\n // if (validationCheck.outcomesData.planOutcome.length > 0) {\r\n // validationCheck.planProgressSummary = true;\r\n // }\r\n \r\n validationCheck.complete =\r\n validationCheck.details.length === 0 &&\r\n validationCheck.missingExperiences.length === 0 &&\r\n validationCheck.missingReviews.length === 0 &&\r\n validationCheck.planProgressSummary &&\r\n validationCheck.outcome.length === 0 &&\r\n //outcomesData.planOutcome.length > 0 &&\r\n validationCheck.invalidProviders.length === 0;\r\n\r\n return validationCheck;\r\n }\r\n \r\n // ISP DETAILS TO KNOW\r\n // adds the outcomeId to a list of unfinished outcomes if the value is an empty string, if the value is not empty it will remove that id from the list\r\n function updateOutcomeDetails(outcomeId, validationCheck, emptyString) {\r\n if (emptyString) {\r\n validationCheck.details.push(outcomeId);\r\n } else {\r\n // removes this outcome id from the details array in the validation check\r\n validationCheck.details = validationCheck.details.filter(id => id !== outcomeId);\r\n }\r\n \r\n return validationCheck;\r\n }\r\n\r\n // ISP OUTCOME FIELD\r\n // adds the outcomeId to a list of unfinished outcomes if the value is an empty string, if the value is not empty it will remove that id from the list\r\n function updateOutcome(outcomeId, validationCheck, emptyString) {\r\n if (emptyString) {\r\n validationCheck.outcome.push(outcomeId);\r\n } else {\r\n // Remove this outcome ID from the outcome array in the validation check\r\n validationCheck.outcome = validationCheck.outcome.filter(id => id !== outcomeId);\r\n }\r\n \r\n return validationCheck;\r\n }\r\n\r\n // ISP REVIEWS\r\n //checks if the outcome has a review, if not, set the alert next to the add review button\r\n function reviewsValidationCheck(validationCheck, outcomeId, alertDiv) {\r\n const display = validationCheck.missingReviews.includes(outcomeId) ? 'flex' : 'none';\r\n alertDiv.style.display = display;\r\n }\r\n \r\n //ISP EXPERIENCES\r\n //checks if the outcome has an experience, if not, set the alert next to the add experience button\r\n function experiencesValidationCheck(validationCheck, outcomeId, alertDiv) {\r\n // Checks each experience and compares repsonsible party Ids with the invalid providers array\r\n function checkResponsibleProvider(outcomesData, outcomeID, presetArray) {\r\n for (const planOutcomeExperience of outcomesData.planOutcomeExperiences) {\r\n if (planOutcomeExperience.outcomeId === outcomeID) {\r\n for (const experienceResponsibility of planOutcomeExperience.planExperienceResponsibilities) {\r\n if (presetArray.includes(experienceResponsibility.responsibleProvider)) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n const invalidProvidersCheck = checkResponsibleProvider(validationCheck.outcomesData, outcomeId, validationCheck.invalidProviders);\r\n\r\n const display = (validationCheck.missingExperiences.includes(outcomeId) || invalidProvidersCheck) ? 'flex' : 'none';\r\n alertDiv.style.display = display;\r\n //validationCheck.invalidProviders.length > 0\r\n }\r\n\r\n //ISP CONTACTS\r\n async function contactsValidationCheck() {\r\n const contactData = await planValidationAjax.getContactValidationData(planId);\r\n\r\n const bestWayToConnect = contactData[0]?.bestWayToConnect || '';\r\n \r\n const importantPeopleData = contactData.map(item => ({\r\n type: item.importantPeopleType,\r\n typeOther: item.importantPeopleTypeOther,\r\n }));\r\n \r\n const importantPlacesData = contactData.map(item => ({\r\n type: item.importantPlacesType,\r\n typeOther: item.importantPlacesTypeOther,\r\n }));\r\n\r\n checkImportantPeople(importantPeopleData);\r\n checkImportantPlaces(importantPlacesData);\r\n checkBestWayToConnect(bestWayToConnect);\r\n\r\n checkContactsValidation();\r\n }\r\n\r\n function checkImportantPeople(importantPeopleData) {\r\n // Loop through each item in the array\r\n for (const contact of importantPeopleData) {\r\n if (contact.type === 'Other' && contact.typeOther === '') {\r\n contactsValidation.importantPeople = false;\r\n return;\r\n }\r\n }\r\n\r\n contactsValidation.importantPeople = true;\r\n }\r\n\r\n function checkImportantPlaces(importantPlacesData) {\r\n // Loop through each item in the array\r\n for (const place of importantPlacesData) {\r\n if (place.type === 'Other' && place.typeOther === '') {\r\n contactsValidation.importantPlaces = false;\r\n return;\r\n }\r\n }\r\n\r\n contactsValidation.importantPlaces = true;\r\n }\r\n\r\n function checkBestWayToConnect(bestWayToConnect) {\r\n if (bestWayToConnect === '') {\r\n contactsValidation.bestWayToConnect = false;\r\n return;\r\n }\r\n\r\n contactsValidation.bestWayToConnect = true;\r\n }\r\n\r\n function getContactValidation() {\r\n return contactsValidation;\r\n }\r\n\r\n function checkContactsValidation() {\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const alertDiv = document.querySelector('.contactsAlertDiv');\r\n const bestWayToConnectAlertDiv = document.querySelector('.bestWaytoConnectAlert')\r\n\r\n // Check if the alertDiv exists and if any validation condition is false\r\n if (alertDiv && (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect)) {\r\n alertDiv.style.display = 'flex';\r\n } else if (alertDiv) {\r\n alertDiv.style.display = 'none';\r\n }\r\n\r\n if (bestWayToConnectAlertDiv && !contactsValidation.bestWayToConnect) {\r\n bestWayToConnectAlertDiv.style.display = 'flex';\r\n } else if (bestWayToConnectAlertDiv) {\r\n bestWayToConnectAlertDiv.style.display = 'none';\r\n }\r\n\r\n if (ISPAlertDiv && (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect)) {\r\n ISPAlertDiv.style.display = 'flex';\r\n } else if (ISPAlertDiv) {\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n\r\n // sets isp validation check variable value regardless of UI\r\n ispValidationContactCheck();\r\n }\r\n\r\n function ispValidationContactCheck() {\r\n if (!contactsValidation.importantPeople || !contactsValidation.importantPlaces || !contactsValidation.bestWayToConnect) {\r\n IspValidationCheck.contactSectionComplete = false;\r\n } else {\r\n IspValidationCheck.contactSectionComplete = true;\r\n }\r\n }\r\n\r\n // checks if the provider selected for the experience is also in the paid supports\r\n function checkExperienceProviders(validationCheck) {\r\n // Extract the first values from the second array objects\r\n const secondValues = (validationCheck.paidSupportsProviders).map(obj => obj.value);\r\n\r\n // Create a list of values from the first array that don't exist in the second array\r\n const invalidProviders = validationCheck.selectedProviders.filter(value =>\r\n value !== '' &&\r\n value !== '%' &&\r\n !secondValues.includes(value) &&\r\n !validationCheck.outcomesData.planOutcomeExperiences.some(outcome =>\r\n Object.values(outcome.planExperienceResponsibilities).some(responsibility =>\r\n responsibility.responsibleProvider === value &&\r\n responsibility.isSalesforceLocation === 'True'\r\n )\r\n )\r\n ); \r\n \r\n validationCheck.invalidProviders = invalidProviders;\r\n return validationCheck;\r\n }\r\n\r\n function checkExperiencesAfterAddingNewPaidSupport(validationCheck) {\r\n // Find all divs with classname 'experiencesAlert'\r\n const divs = document.querySelectorAll('.experiencesAlert');\r\n\r\n // Loop over the resulting array and run your function on each div\r\n if (divs.length > 0) {\r\n divs.forEach(div => {\r\n // Extract the number from the id using a regular expression\r\n const regex = /experienceAlert(\\d{1,5})/;\r\n const matches = div.id.match(regex);\r\n const number = matches ? Number(matches[1]) : null;\r\n\r\n // Check each div to see if the alert is needed or not\r\n experiencesValidationCheck(validationCheck, number, div);\r\n });\r\n }\r\n }\r\n\r\n // Summary Risks\r\n async function summaryRisksValidationCheck() {\r\n let summaryValidationData = await planValidationAjax.getSummaryRiskValidationData(planId);\r\n \r\n let groupedByQuestionSetId = summaryValidationData.reduce((acc, obj) => {\r\n const key = obj.QuestionSetId;\r\n (acc[key] ? acc[key] : (acc[key] = [])).push(obj);\r\n return acc;\r\n }, {});\r\n \r\n // Check if any answer in the group is null or empty\r\n function hasNullOrEmptyAnswer(group) {\r\n return group.some(item => item.Answer === '' || item.Answer === null || item.Answer === '%');\r\n }\r\n \r\n // Iterate over each group and perform the necessary checks\r\n for (let group of Object.values(groupedByQuestionSetId)) {\r\n // Check if there is at least one non-empty answer for the specified question text\r\n let hasNonEmptyAnswer = group.some(item => item.Answer !== '' && item.QuestionText === 'What is the risk, what it looks like, where it occurs:');\r\n if (hasNonEmptyAnswer) {\r\n // If there's a non-empty answer for the specified question text,\r\n // check if any other answer in the group is null or empty\r\n let hasNullOrEmpty = hasNullOrEmptyAnswer(group);\r\n if (hasNullOrEmpty) {\r\n // If any answer is null or empty, set the flag and exit the function\r\n IspValidationCheck.summaryRisksValidation = false;\r\n return;\r\n }\r\n }\r\n }\r\n \r\n // If no null or empty answers were found, set the flag to true\r\n IspValidationCheck.summaryRisksValidation = true;\r\n }\r\n \r\n\r\n function returnSummaryRisksValidation() {\r\n return IspValidationCheck.summaryRisksValidation;\r\n }\r\n\r\n function setSummaryRiskValidation(hasErrors) {\r\n IspValidationCheck.summaryRisksValidation = hasErrors;\r\n }\r\n\r\n async function alertCheckSummaryRisksValidation() {\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n const summaryAlertDiv = document.querySelector('.summaryAlertDiv');\r\n\r\n if (summaryAlertDiv && !IspValidationCheck.summaryRisksValidation) {\r\n summaryAlertDiv.style.display = 'flex';\r\n } else if (summaryAlertDiv) {\r\n summaryAlertDiv.style.display = 'none';\r\n }\r\n\r\n const isEverythingComplete = await ISPValidation(planId);\r\n\r\n if (ISPAlertDiv && (!isEverythingComplete.complete || !isEverythingComplete.contactSectionComplete || !isEverythingComplete.summaryRisksValidation)) {\r\n ISPAlertDiv.style.display = 'flex';\r\n } else if (ISPAlertDiv) {\r\n ISPAlertDiv.style.display = 'none';\r\n }\r\n }\r\n \r\n async function init(newPlanId) {\r\n planId = newPlanId;\r\n\r\n //await summaryRisksValidationCheck(planId);\r\n\r\n await contactsValidationCheck(planId);\r\n \r\n await ISPValidation(planId);\r\n \r\n await getAssessmentValidation(planId);\r\n }\r\n \r\n return {\r\n setPlanId,\r\n createTooltip,\r\n returnAssessmentValidationData,\r\n getAssessmentValidation,\r\n updateTocSectionHeaders,\r\n updatedAssessmenteValidation,\r\n updateSectionApplicability,\r\n updateAssessmentValidationSection,\r\n updateAssessmentValidationProperty,\r\n returnWorkingSectionCaseValue,\r\n ISPValidation,\r\n returnIspValidation,\r\n checkAllOutcomesComplete,\r\n updatedIspOutcomesSetAlerts,\r\n reviewsValidationCheck,\r\n experiencesValidationCheck,\r\n workingSectionCheck,\r\n updateAnswerWorkingSection,\r\n tocAssessmentCheck,\r\n findQuestionIdCategory,\r\n servicesAndSupportsBtnCheck,\r\n updateOutcome,\r\n updateOutcomeDetails,\r\n checkExperienceProviders,\r\n checkExperiencesAfterAddingNewPaidSupport,\r\n contactsValidationCheck,\r\n getContactValidation,\r\n returnSummaryRisksValidation,\r\n setSummaryRiskValidation,\r\n alertCheckSummaryRisksValidation,\r\n summaryRisksValidationCheck,\r\n init,\r\n };\r\n })();","const planValidationAjax = (function () {\r\n async function getAssessmentValidationData(planId) {\r\n // string token, anywAssessmentId\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAssessmentValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAssessmentValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getContactValidationData(planId) {\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getContactValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n \r\n return data.getContactValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getSummaryRiskValidationData(planId) {\r\n const retrieveData = {token: $.session.Token, planId}\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getSummaryRiskValidationData/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n \r\n return data.getSummaryRiskValidationDataResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n \r\n return {\r\n getAssessmentValidationData,\r\n getContactValidationData,\r\n getSummaryRiskValidationData\r\n };\r\n })();","const planWorkflow = (() => {\r\n let selectedWorkflowForms = [];\r\n function getProcessId(planType) {\r\n return planType === 'Revision' || planType === 'r'\r\n ? WorkflowProcess.CONSUMER_PLAN_REVISION\r\n : WorkflowProcess.CONSUMER_PLAN_ANNUAL;\r\n }\r\n async function getWorkflowList(processId, planId) {\r\n const wfvData = await WorkflowViewerAjax.getManualWorkflowList({\r\n token: $.session.Token,\r\n processId,\r\n referenceId: planId ? planId : 0,\r\n });\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","var rosterAbsent = (function() {\r\n //-DATA------------------\r\n var absentReasons;\r\n var notificationTypes;\r\n //-DOM------------------\r\n var MASS_ABSENT_POPUP;\r\n // *absent form inputs\r\n var CONSUMERS_SELECTED_INPUT;\r\n var DATE_OF_ABSENSE_INPUT;\r\n var DATE_REPORTED_INPUT;\r\n var LOCATION_INPUT;\r\n var NOTIFICATION_DROPDOWN;\r\n var REPORTED_BY_INPUT;\r\n var REASON_DROPDOWN;\r\n var TIME_REPORTED_INPUT;\r\n // *absent form btns\r\n var SAVE_ABSENT_BTN;\r\n var DELETE_ABSENT_BTN;\r\n var CANCEL_ABSENT_BTN;\r\n // *action nav btns\r\n var doneBtn;\r\n var cancelBtn;\r\n //-VALUES------------------\r\n var absentLocation;\r\n // save/update\r\n var absenceDate;\r\n var consumerIdString;\r\n var dateReported;\r\n var locationId;\r\n var notificationId;\r\n var reportedBy;\r\n var resonId;\r\n var timeReported;\r\n // delete data\r\n var absentRecordId;\r\n var doPreSaveCheck = true;\r\n\r\n // Absent Save\r\n //---------------------------------------------\r\n function showPreSaveWarningPopup() {\r\n var preSaveWarningPopup = POPUP.build({\r\n header: 'The following consumers have an already existing record in either Outcomes or Day Services. Do you wish to proceed?'\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n var yesBtn = button.build({\r\n text: 'Yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function(event) {\r\n doPreSaveCheck = false;\r\n SAVE_ABSENT_BTN.click();\r\n POPUP.hide(preSaveWarningPopup);\r\n }\r\n });\r\n var noBtn = button.build({\r\n text: 'No',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n POPUP.hide(preSaveWarningPopup);\r\n }\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n preSaveWarningPopup.appendChild(btnWrap);\r\n\r\n POPUP.show(preSaveWarningPopup);\r\n }\r\n function saveSingleAbsent() {\r\n var singleSaveData = {\r\n token: $.session.Token,\r\n absentReasonId: resonId === '%' ? '' : resonId,\r\n absentNotificationId: notificationId === '%' ? '' : notificationId,\r\n consumerIdString: consumerIdString,\r\n absenceDate: absenceDate,\r\n locationId: locationId,\r\n reportedBy: UTIL.removeUnsavableNoteText(reportedBy),\r\n timeReported: timeReported,\r\n dateReported: dateReported\r\n };\r\n var preSaveData = {\r\n token: $.session.Token,\r\n consumerIdString: consumerIdString,\r\n absentDate: absenceDate,\r\n locationId: locationId,\r\n };\r\n\r\n function updateAbsents() {\r\n roster2.refreshRosterList();\r\n var backBtn = document.querySelector('.sectionBackBtn');\r\n backBtn.click();\r\n }\r\n function checkAbsentPreSave(results) {\r\n if (results && results.length) {\r\n // show warning message\r\n showPreSaveWarningPopup()\r\n return;\r\n }\r\n\r\n absentAjax.oneLocationAbsentSave(singleSaveData, updateAbsents);\r\n }\r\n\r\n if (doPreSaveCheck) {\r\n absentAjax.absentPreSaveCheck(preSaveData, checkAbsentPreSave);\r\n } else {\r\n absentAjax.oneLocationAbsentSave(singleSaveData, updateAbsents);\r\n doPreSaveCheck = true;\r\n }\r\n }\r\n function saveMassAbsent() {\r\n var singleSaveData = {\r\n token: $.session.Token,\r\n absentReasonId: resonId === '%' ? '' : resonId,\r\n absentNotificationId: notificationId === '%' ? '' : notificationId,\r\n consumerIdString: consumerIdString,\r\n absenceDate: absenceDate,\r\n locationId: locationId,\r\n reportedBy: UTIL.removeUnsavableNoteText(reportedBy),\r\n timeReported: timeReported,\r\n dateReported: dateReported\r\n };\r\n\r\n absentAjax.oneLocationAbsentSave(singleSaveData, function() {\r\n roster2.refreshRosterList();\r\n });\r\n }\r\n\r\n // UTIL\r\n //---------------------------------------------\r\n async function getAbsentConsumers(locationId, absenceDate, callback) {\r\n try {\r\n let getConsumersByLocationAbsentResults = (await absentAjax.getConsumersByLocationAbsent(locationId, absenceDate)).getConsumersByLocationAbsentResult;\r\n getConsumersByLocationAbsentResults = JSON.parse(getConsumersByLocationAbsentResults);\r\n const absentConsumerIds = createAbsentConsumersObj(getConsumersByLocationAbsentResults);\r\n return absentConsumerIds;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n\r\n // absentAjax.getConsumersByLocationAbsent(locationId, absenceDate, function(results) {\r\n // var absentConsumerIds = createAbsentConsumersObj(results);\r\n // if (callback) callback(absentConsumerIds);\r\n // });\r\n }\r\n function getAbsentFormDropdownData(callback) {\r\n if (!notificationTypes || !absentReasons) {\r\n absentAjax.selectAbsentNotificationTypes(function(results) {\r\n notificationTypes = results;\r\n absentAjax.selectAbsentReasons(function(results) {\r\n absentReasons = results;\r\n if (callback) callback();\r\n });\r\n });\r\n } else {\r\n if (callback) callback();\r\n }\r\n }\r\n function createAbsentConsumersObj(results) {\r\n if (!results || results.length === 0) return {};\r\n\r\n var newObj = {};\r\n\r\n results.forEach(r => {\r\n if (!newObj[r.consumer_id]) newObj[r.consumer_id] = r.consumer_id;\r\n });\r\n\r\n return newObj;\r\n }\r\n function setSaveData(absentData) {\r\n if (!absentData) {\r\n var selectedLocationObj = roster2.getSelectedLocationObj();\r\n\r\n absentLocation = selectedLocationObj.locationName;\r\n absenceDate = UTIL.getTodaysDate();\r\n dateReported = UTIL.getTodaysDate();\r\n locationId = selectedLocationObj.locationId;\r\n notificationId = '%';\r\n reportedBy = `${$.session.LName}, ${$.session.Name}`;\r\n resonId = '%';\r\n timeReported = UTIL.getCurrentTime();\r\n\r\n return;\r\n }\r\n\r\n var rosterLocations = roster2.getRosterLocations();\r\n\r\n var data = absentData[0];\r\n var tempLocation = rosterLocations.filter(rl => rl.ID === data.locationId);\r\n var tempLocationName = tempLocation[0].Name;\r\n var tempLocationId = data.locationId;\r\n var tempDateOfAbsense = UTIL.formatDateToIso(data.dateOfAbsence.split(' ')[0]);\r\n var tempReportedBy = data.reportedby;\r\n var tempDatereported = UTIL.formatDateToIso(data.dateReported.split(' ')[0]);\r\n var tempTimereported = data.timereported;\r\n var tempReasonId = data.reasonId;\r\n var tempNotifiId = data.notificationId;\r\n\r\n absentRecordId = data.recordid;\r\n\r\n absentLocation = tempLocationName;\r\n absenceDate = tempDateOfAbsense;\r\n consumerIdString = data.consumerId;\r\n dateReported = tempDatereported;\r\n locationId = tempLocationId;\r\n notificationId = tempNotifiId;\r\n reportedBy = tempReportedBy;\r\n resonId = tempReasonId;\r\n timeReported = tempTimereported;\r\n }\r\n\r\n // Absent Form\r\n //---------------------------------------------\r\n function populateAbsentFormDropdowns(defaultValues) {\r\n var notifValue = defaultValues.notif;\r\n var reasonValue = defaultValues.reason;\r\n\r\n var notificationTypeData = notificationTypes.map(r => {\r\n return {\r\n value: r.notifid,\r\n text: r.notifdesc\r\n }\r\n });\r\n var reasonsData = absentReasons.map(r => {\r\n return {\r\n value: r.reasonid,\r\n text: r.reasondesc\r\n }\r\n });\r\n\r\n var defaultVal = {value: '%', text: ''};\r\n notificationTypeData.unshift(defaultVal);\r\n reasonsData.unshift(defaultVal);\r\n\r\n dropdown.populate(NOTIFICATION_DROPDOWN, notificationTypeData, notifValue);\r\n dropdown.populate(REASON_DROPDOWN, reasonsData, reasonValue);\r\n }\r\n function setupFormEvents(single) {\r\n REASON_DROPDOWN.addEventListener('change', event => {\r\n var selectedOpt = event.target.options[event.target.selectedIndex];\r\n resonId = selectedOpt.value;\r\n });\r\n NOTIFICATION_DROPDOWN.addEventListener('change', event => {\r\n var selectedOpt = event.target.options[event.target.selectedIndex];\r\n notificationId = selectedOpt.value;\r\n });\r\n DATE_OF_ABSENSE_INPUT.addEventListener('change', event => {\r\n absenceDate = event.target.value;\r\n });\r\n DATE_REPORTED_INPUT.addEventListener('change', event => {\r\n dateReported = event.target.value;\r\n });\r\n TIME_REPORTED_INPUT.addEventListener('change', event => {\r\n timeReported = event.target.value;\r\n });\r\n SAVE_ABSENT_BTN.addEventListener('click', () => {\r\n document.getElementById(\"absentSaveBtn\").disabled = true;\r\n if (!single) {\r\n // untoggle MASS_ABSENT_BTN\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n // clear selected consumers\r\n roster2.clearSelectedConsumers();\r\n // hide popup\r\n POPUP.hide(MASS_ABSENT_POPUP);\r\n // reset active section\r\n setActiveModuleSectionAttribute('roster-info');\r\n // save it\r\n saveMassAbsent();\r\n } else {\r\n saveSingleAbsent();\r\n }\r\n });\r\n DELETE_ABSENT_BTN.addEventListener('click', () => {\r\n absentAjax.deleteAbsent(absentRecordId, function(results) {\r\n roster2.refreshRosterList();\r\n });\r\n var backBtn = document.querySelector('.sectionBackBtn');\r\n backBtn.click();\r\n });\r\n CANCEL_ABSENT_BTN.addEventListener('click', () => {\r\n // untoggle MASS_ABSENT_BTN\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n // clear selected consumers\r\n roster2.selectNoneHighlightedConsumers();\r\n roster2.clearSelectedConsumers();\r\n roster2.refreshRosterList();\r\n // hide absent actionnav\r\n ACTION_NAV.hide();\r\n // hide popup\r\n POPUP.hide(MASS_ABSENT_POPUP);\r\n });\r\n }\r\n function buildAbsentForm(single, consumerId, dateOfAbsent, absentData) {\r\n if (absentData && absentData.length) {\r\n setSaveData(absentData);\r\n } else if (single) {\r\n setSaveData();\r\n consumerIdString = consumerId;\r\n absenceDate = dateOfAbsent;\r\n } else {\r\n //setSaveData();\r\n }\r\n\r\n var absentForm = document.createElement('div');\r\n absentForm.classList.add('absentForm');\r\n // inputs & dropdowns\r\n CONSUMERS_SELECTED_INPUT = input.build({\r\n label: 'Consumer(s)',\r\n type: 'text',\r\n style: 'secondary',\r\n value: 'All Selected',\r\n readonly: true\r\n });\r\n LOCATION_INPUT = input.build({\r\n label: 'Location',\r\n type: 'text',\r\n style: 'secondary',\r\n value: absentLocation,\r\n readonly: true\r\n });\r\n DATE_OF_ABSENSE_INPUT = input.build({\r\n label: 'Date Of Absence',\r\n type: 'date',\r\n style: 'secondary',\r\n value: absenceDate ? absenceDate : UTIL.getTodaysDate()\r\n });\r\n REPORTED_BY_INPUT = input.build({\r\n label: 'Reported By',\r\n type: 'text',\r\n style: 'secondary',\r\n value: reportedBy ? reportedBy : `${$.session.LName}, ${$.session.Name}`,\r\n readonly: true\r\n });\r\n DATE_REPORTED_INPUT = input.build({\r\n label: 'Date Reported',\r\n type: 'date',\r\n style: 'secondary',\r\n value: dateReported ? dateReported : UTIL.getTodaysDate()\r\n });\r\n TIME_REPORTED_INPUT = input.build({\r\n label: 'Time Reported',\r\n type: 'time',\r\n style: 'secondary',\r\n value: timeReported ? timeReported : UTIL.getCurrentTime()\r\n });\r\n REASON_DROPDOWN = dropdown.build({\r\n label: 'Reason',\r\n style: 'secondary'\r\n });\r\n NOTIFICATION_DROPDOWN = dropdown.build({\r\n label: 'Notification Type',\r\n style: 'secondary'\r\n });\r\n\r\n // save, cancel & delete buttons\r\n var ABSENT_BTN_WRAP = document.createElement('div');\r\n ABSENT_BTN_WRAP.classList.add('btnWrap');\r\n SAVE_ABSENT_BTN = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n id: 'absentSaveBtn',\r\n type: 'contained'\r\n });\r\n CANCEL_ABSENT_BTN = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained'\r\n });\r\n DELETE_ABSENT_BTN = button.build({\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'outlined'\r\n });\r\n\r\n if (absentData && absentData.length) {\r\n absentForm.classList.add('disabled');\r\n if ($.session.RosterDeleteAbsent) ABSENT_BTN_WRAP.appendChild(DELETE_ABSENT_BTN);\r\n } else {\r\n ABSENT_BTN_WRAP.appendChild(SAVE_ABSENT_BTN);\r\n }\r\n\r\n if (!single) ABSENT_BTN_WRAP.appendChild(CANCEL_ABSENT_BTN);\r\n if (!single) absentForm.appendChild(CONSUMERS_SELECTED_INPUT);\r\n absentForm.appendChild(LOCATION_INPUT);\r\n absentForm.appendChild(DATE_OF_ABSENSE_INPUT);\r\n absentForm.appendChild(REPORTED_BY_INPUT);\r\n absentForm.appendChild(DATE_REPORTED_INPUT);\r\n absentForm.appendChild(TIME_REPORTED_INPUT);\r\n absentForm.appendChild(REASON_DROPDOWN);\r\n absentForm.appendChild(NOTIFICATION_DROPDOWN);\r\n absentForm.appendChild(ABSENT_BTN_WRAP);\r\n\r\n // populate dropdowns\r\n populateAbsentFormDropdowns({\r\n reason: resonId ? resonId : '%', \r\n notif: notificationId ? notificationId : '%'\r\n });\r\n // set events\r\n setupFormEvents(single);\r\n\r\n return absentForm;\r\n }\r\n\r\n // Single Absent\r\n //---------------------------------------------\r\n function init() {\r\n getAbsentFormDropdownData();\r\n }\r\n\r\n // Mass Absent\r\n //---------------------------------------------\r\n function showAbsentPopup() {\r\n // create popup\r\n MASS_ABSENT_POPUP = POPUP.build({\r\n classNames: 'rosterAbsentPopup'\r\n });\r\n // build form\r\n var absentForm = buildAbsentForm(false);\r\n // append form to popup\r\n MASS_ABSENT_POPUP.appendChild(absentForm);\r\n POPUP.show(MASS_ABSENT_POPUP);\r\n }\r\n function setConsumerIdString() {\r\n var selectedConsumers = roster2.getSelectedConsumers();\r\n consumerIdString = selectedConsumers.map(sc => sc.id).join(',');\r\n }\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n\r\n switch(targetAction) {\r\n case 'absentDone': {\r\n setConsumerIdString();\r\n showAbsentPopup();\r\n document.getElementById('massAbsentSelectAllBtn').style.display = 'none';\r\n document.getElementById('massAbsentDeselectAllBtn').style.display = 'none';\r\n break;\r\n }\r\n case 'absentCancel': {\r\n MASS_ABSENT_BTN.setAttribute('data-toggled', false);\r\n setActiveModuleSectionAttribute('roster-info');\r\n roster2.selectNoneHighlightedConsumers();\r\n roster2.clearSelectedConsumers();\r\n roster2.refreshRosterList();\r\n ACTION_NAV.hide();\r\n document.getElementById('massAbsentSelectAllBtn').style.display = 'none';\r\n document.getElementById('massAbsentDeselectAllBtn').style.display = 'none';\r\n break;\r\n }\r\n }\r\n }\r\n function toggleActionNavBtns() {\r\n var selectedConsumers = roster2.getSelectedConsumers();\r\n if (selectedConsumers.length > 0) {\r\n doneBtn.classList.remove('disabled');\r\n } else {\r\n doneBtn.classList.add('disabled');\r\n }\r\n }\r\n function buildAbsentActionNav() {\r\n doneBtn = button.build({\r\n text: 'Done',\r\n id: 'absentDone',\r\n icon: 'checkmark',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n attributes: [{key: 'data-action-nav', value: 'absentDone'}]\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n icon: 'close',\r\n style: 'secondary',\r\n type: 'outlined',\r\n attributes: [{key: 'data-action-nav', value: 'absentCancel'}]\r\n });\r\n\r\n ACTION_NAV.populate([doneBtn, cancelBtn]);\r\n }\r\n function initMassAbsent() {\r\n MASS_ABSENT_BTN = document.querySelector('.massAbsentBtn');\r\n getAbsentFormDropdownData(() => {\r\n buildAbsentActionNav();\r\n setSaveData();\r\n });\r\n }\r\n\r\n\r\n return {\r\n buildAbsentForm,\r\n createAbsentConsumersObj,\r\n getAbsentConsumers,\r\n handleActionNavEvent,\r\n initMassAbsent,\r\n init,\r\n toggleActionNavBtns\r\n }\r\n})();","var absentAjax = (function() {\r\n function absentPreSaveCheck(selectData, callback) {\r\n // data = {token, consumerIdString, absentDate, locationId}\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/absentPreSave/',\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(selectData),\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.absentPreSaveResult;\r\n callback(res);\r\n }\r\n });\r\n }\r\n function allLocationSaveAbsent(data, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/allLocationSaveAbsent/',\r\n contentType: 'application/json; charset=utf-8',\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.allLocationSaveAbsentResult;\r\n if (callback) callback(res);\r\n },\r\n error: function(xhr, status, error) {\r\n //alert(\"Error\\n-----\\n\" + xhr.status + '\\n' + xhr.responseText);\r\n },\r\n });\r\n }\r\n function deleteAbsent(absentId, callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteAbsent/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"absentId\":\"' + absentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = JSON.stringify(response);\r\n callback(res);\r\n }\r\n });\r\n }\r\n function getConsumersByLocationAbsent(locationId, absenceDate, callback) {\r\n // returns absent consumers for provided location and date\r\n var selectData = {\r\n token: $.session.Token,\r\n absenceDate: absenceDate ? absenceDate : UTIL.getTodaysDate(),\r\n locationId: locationId,\r\n };\r\n\r\n if (parseInt(locationId, 10) === 0) {\r\n selectData.locationId = \"%\";\r\n }\r\n\r\n return $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumersByLocationAbsent/',\r\n data: JSON.stringify(selectData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n // $.ajax({\r\n // type: 'POST',\r\n // url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getConsumersByLocationAbsent/',\r\n // data: JSON.stringify(selectData),\r\n // contentType: 'application/json; charset=utf-8',\r\n // dataType: 'json',\r\n // success: function(response, status, xhr) {\r\n // var res = JSON.parse(response.getConsumersByLocationAbsentResult);\r\n // callback(res);\r\n // }\r\n // });\r\n }\r\n function oneLocationAbsentSave(saveData, callback) {\r\n // saveData = {\r\n // token, absentReasonId, absentNotificationId, consumerIdString, absenceDate,\r\n // locationId, reportedBy, timeReported, dateReported\r\n // }\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/oneLocationAbsentSave/',\r\n data: JSON.stringify(saveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = response.oneLocationAbsentTableSaveResult;\r\n callback();\r\n }\r\n });\r\n }\r\n function selectAbsentNotificationTypes(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsentNotificationTypes/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n if (response.selectAbsentNotificationTypesResult) {\r\n var res = JSON.parse(response.selectAbsentNotificationTypesResult);\r\n callback(res);\r\n return;\r\n } \r\n \r\n callback([]);\r\n }\r\n });\r\n }\r\n function selectAbsentReasons(callback) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsentReasons/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n if (response.selectAbsentReasonsResult) {\r\n var res = JSON.parse(response.selectAbsentReasonsResult);\r\n callback(res);\r\n return;\r\n }\r\n \r\n callback([]);\r\n }\r\n });\r\n }\r\n function selectAbsent(selectData, callback) {\r\n // selectData = {token, consumerId, locationId, statusDate }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/selectAbsent/',\r\n data: JSON.stringify(selectData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var res = JSON.parse(response.selectAbsentResult);\r\n callback(res);\r\n }\r\n });\r\n \r\n return false;\r\n }\r\n \r\n return {\r\n absentPreSaveCheck,\r\n allLocationSaveAbsent,\r\n deleteAbsent,\r\n getConsumersByLocationAbsent,\r\n oneLocationAbsentSave,\r\n selectAbsentNotificationTypes,\r\n selectAbsentReasons,\r\n selectAbsent\r\n }\r\n})();\r\n\r\n","const rosterGroupIndividuals = (function () {\r\n\r\n let selectedConsumerIDs = [];\r\n let groupId;\r\n async function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n selectedConsumerIDs.push(consumer.id);\r\n })\r\n await customGroupsAjax.addConsumerToCustomGroup(selectedConsumerIDs, groupId); \r\n roster2.clearSelectedConsumers(); \r\n roster2.clearActiveConsumers(); \r\n customGroups.loadManageGroupsPage(); \r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n roster2.clearSelectedConsumers();\r\n customGroups.loadManageGroupsPage();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n async function init(newGroupID) {\r\n selectedConsumerIDs = [];\r\n groupId = newGroupID;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"roster-GroupIndividuals\");\r\n await roster2.miniRosterinit(null, { hideDate: true, locationDisabled: true });\r\n document.getElementById('mini_roster').click();\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 consumerInfo = (function () {\r\n var locationId;\r\n var consumerId;\r\n var selectedDate;\r\n var consumerInfoCard;\r\n var currentlyVisibleSection;\r\n var hasUnreadNote;\r\n var modalOverlay;\r\n let menuNewList = [];\r\n var currentScreen;\r\n var previousScreen = '';\r\n var nextScreen = '';\r\n\r\n function getImageOrientation(file, callback) {\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n var view = new DataView(e.target.result);\r\n if (view.getUint16(0, false) != 0xffd8) {\r\n return callback(-2);\r\n }\r\n var length = view.byteLength,\r\n offset = 2;\r\n while (offset < length) {\r\n if (view.getUint16(offset + 2, false) <= 8) return callback(-1);\r\n var marker = view.getUint16(offset, false);\r\n offset += 2;\r\n if (marker == 0xffe1) {\r\n if (view.getUint32((offset += 2), false) != 0x45786966) {\r\n return callback(-1);\r\n }\r\n\r\n var little = view.getUint16((offset += 6), false) == 0x4949;\r\n offset += view.getUint32(offset + 4, little);\r\n var tags = view.getUint16(offset, little);\r\n offset += 2;\r\n for (var i = 0; i < tags; i++) {\r\n if (view.getUint16(offset + i * 12, little) == 0x0112) {\r\n return callback(view.getUint16(offset + i * 12 + 8, little));\r\n }\r\n }\r\n } else if ((marker & 0xff00) != 0xff00) {\r\n break;\r\n } else {\r\n offset += view.getUint16(offset, false);\r\n }\r\n }\r\n return callback(-1);\r\n };\r\n reader.readAsArrayBuffer(file);\r\n }\r\n\r\n // Workers\r\n function formatPortraitPath(portraitPath) {\r\n var splitPath = portraitPath.split('\\\\');\r\n var newPath = '\\\\\\\\\\\\\\\\';\r\n splitPath.forEach(sp => {\r\n if (sp === '') return;\r\n newPath += `${sp}\\\\\\\\`;\r\n });\r\n\r\n return newPath;\r\n }\r\n function updatePhotoToDefault() {\r\n var targetConsumerId = consumerInfoCard.dataset.consumerid;\r\n var consumerCardFromRosterList = document.querySelector(`[data-consumer-id=\"${targetConsumerId}\"]`);\r\n var rosterPic = consumerCardFromRosterList.querySelector('img');\r\n var infoCardPic = consumerInfoCard.querySelector('img');\r\n rosterPic.setAttribute('src', './images/new-icons/default.jpg');\r\n infoCardPic.setAttribute('src', './images/new-icons/default.jpg');\r\n rosterPic.setAttribute('onerror', './images/new-icons/default.jpg');\r\n infoCardPic.setAttribute('onerror', './images/new-icons/default.jpg');\r\n }\r\n async function updateConsumerPhoto(event) {\r\n event.preventDefault();\r\n var targetConsumerId = consumerInfoCard.dataset.consumerid;\r\n var consumerCardFromRosterList = document.querySelector(`[data-consumer-id=\"${targetConsumerId}\"]`);\r\n\r\n var pic2 = consumerCardFromRosterList.querySelector('img');\r\n pic2.setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n var pic1 = consumerInfoCard.querySelector('img');\r\n pic1.setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n\r\n var id = `${targetConsumerId}`;\r\n id = parseInt(id);\r\n var portraitPath = $.session.portraitPath;\r\n portraitPath = formatPortraitPath(portraitPath);\r\n\r\n var canvas = document.createElement('canvas');\r\n canvas.height = 127;\r\n canvas.width = 150;\r\n\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imageObj = new Image(152, 127);\r\n\r\n pic2.onload = function () {\r\n ctx.drawImage(pic2, 0, 0, 152, 127);\r\n\r\n var srcData = canvas.toDataURL('image/jpeg');\r\n srcData = srcData.replace('data:image/jpeg;base64,', '');\r\n\r\n rosterAjax.updatePortrait(srcData, id, portraitPath);\r\n\r\n getImageOrientation(event.target.files[0], function (orientation) {});\r\n };\r\n //ctx.drawImage(imageObj, 0, 0, 152, 127);\r\n var imageObjSrcVal = `#${id}`;\r\n imageObj.setAttribute('src', imageObjSrcVal);\r\n ctx.drawImage(imageObj, 0, 0, 152, 127);\r\n\r\n //var srcData = canvas.toDataURL('image/jpeg');\r\n //srcData = srcData.replace(\"data:image/jpeg;base64,\", \"\");\r\n //rosterAjax.updatePortrait(srcData, id, portraitPath);\r\n }\r\n function orderScheduleData(data) {\r\n var tableData = [\r\n {\r\n id: 'startTime',\r\n values: [\r\n data.start.Sun,\r\n data.start.Mon,\r\n data.start.Tues,\r\n data.start.Wed,\r\n data.start.Thur,\r\n data.start.Fri,\r\n data.start.Sat,\r\n ],\r\n },\r\n {\r\n id: 'endTime',\r\n values: [data.end.Sun, data.end.Mon, data.end.Tues, data.end.Wed, data.end.Thur, data.end.Fri, data.end.Sat],\r\n },\r\n ];\r\n\r\n return tableData;\r\n }\r\n function toggleHideShowAbsentMenuSection(locationid) {\r\n var menulist = document.querySelector('.menuList');\r\n var absentMenuItem = menulist.querySelector('[data-info-task=\"Mark As Absent\"]');\r\n if ((locationid === '000' || locationid === '0') && absentMenuItem !== null) {\r\n absentMenuItem.classList.add('hidden');\r\n const index = menuNewList.findIndex(x => x.title == 'Mark As Absent');\r\n if (index != -1) {\r\n menuNewList.splice(index, 1);\r\n }\r\n } else if (absentMenuItem !== null) {\r\n absentMenuItem.classList.remove('hidden');\r\n }\r\n }\r\n function downloadAttachment(attachmentid) {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/getIndividualAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', attachmentid);\r\n attachmentInput.id = 'attachmentId';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n }\r\n // Hide/Show\r\n function showCard(consumer) {\r\n var consumersWithUnreadNotes = roster2.getConsumersWithUnreadNotes();\r\n hasUnreadNote = consumersWithUnreadNotes[consumer.dataset.consumerId];\r\n\r\n if ($.session.selectedLocation[0] === '0') {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.add('hidden');\r\n const index = menuNewList.findIndex(x => x.title == 'Progress Notes');\r\n if (index != -1) {\r\n menuNewList.splice(index, 1);\r\n }\r\n } else {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.remove('hidden');\r\n }\r\n\r\n if (hasUnreadNote) {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.add('needsAttention');\r\n } else {\r\n var menuItem = document.querySelector('.menuList .progressNote');\r\n if (menuItem) menuItem.classList.remove('needsAttention');\r\n }\r\n\r\n // shows consumer info card\r\n var locationObj = roster2.getSelectedLocationObj();\r\n locationId = locationObj.locationId;\r\n selectedDate = roster2.getSelectedDate();\r\n\r\n setConsumerToCard(consumer);\r\n\r\n var rosterList = document.querySelector('.roster');\r\n rosterList.classList.add('fadeOut');\r\n DOM.toggleHeaderOpacity();\r\n\r\n setTimeout(function () {\r\n consumerInfoCard.classList.add('visible');\r\n if (!isMobile) {\r\n bodyScrollLock.disableBodyScroll(consumerInfoCard);\r\n }\r\n modalOverlay.classList.add('modal');\r\n }, 300);\r\n }\r\n function closeCard() {\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n roster2.toggleRosterListLockdown(false);\r\n progressNotes.clearAllGlobalVariables();\r\n // hides consumer info card\r\n // grab visible section & subsection, then hide them\r\n var visibleSection = consumerInfoCard.querySelector('.infoCardSection.visible');\r\n var visibleSubSection = consumerInfoCard.querySelector('.infoCardSubSection.visible');\r\n if (visibleSection) visibleSection.classList.remove('visible');\r\n if (visibleSubSection) visibleSubSection.classList.remove('visible');\r\n // reset menuList\r\n var menuList = consumerInfoCard.querySelector('.menuList');\r\n menuList.classList.remove('fadeOut');\r\n // hide consumer info card\r\n consumerInfoCard.classList.remove('visible');\r\n // wait till consumer card is hidden\r\n setTimeout(function () {\r\n // reshow roster list\r\n var rosterList = document.querySelector('.roster');\r\n rosterList.classList.remove('hidden');\r\n rosterList.classList.remove('fadeOut');\r\n DOM.toggleHeaderOpacity();\r\n if (!isMobile) {\r\n bodyScrollLock.enableBodyScroll(consumerInfoCard);\r\n }\r\n modalOverlay.classList.remove('modal');\r\n }, 200);\r\n\r\n currentlyVisibleSection = null;\r\n }\r\n function showCardSection(targetSection) {\r\n // shows section\r\n currentlyVisibleSection = targetSection;\r\n\r\n var menu = consumerInfoCard.querySelector('.menuList');\r\n menu.classList.add('fadeOut');\r\n\r\n targetSection.classList.add('visible');\r\n }\r\n function showCardSubSection(targetSubSection) {\r\n // shows sub section\r\n var currentlyVisibleSubSection = consumerInfoCard.querySelector('.infoCardSubSection.visible');\r\n // hide currently visible sub section\r\n currentlyVisibleSubSection.classList.remove('visible');\r\n // restore height of target subsection\r\n targetSubSection.classList.remove('hidden');\r\n\r\n setTimeout(function () {\r\n // shrink currently visible sub section\r\n currentlyVisibleSubSection.classList.add('hidden');\r\n // show target sub section\r\n targetSubSection.classList.add('visible');\r\n }, 200);\r\n }\r\n function handleBackButtonClick() {\r\n backwordBtn.classList.add('hidden');\r\n forwardBtn.classList.add('hidden');\r\n // first check to see if we are on the menulist\r\n var menuList = consumerInfoCard.querySelector('.menuList');\r\n var isMenuListHidden = menuList.classList.contains('fadeOut');\r\n if (!isMenuListHidden) {\r\n return;\r\n }\r\n\r\n var sectionBackBtn = document.querySelector('.sectionBackBtn');\r\n\r\n // clear out section/sub section variables\r\n //MAT - commenting out below due to teh fact that sometimes the back button is used while in progress notes. Still need the consumer ID at this point if adding another note\r\n progressNotes.clearAllGlobalVariablesOnBack();\r\n\r\n var visibleSection = consumerInfoCard.querySelector('.infoCardSection.visible');\r\n var visibleSubSection = visibleSection.querySelector('.infoCardSubSection.visible');\r\n\r\n if (visibleSubSection) {\r\n var isSubSection0Visible = visibleSubSection.classList.contains('subSec0');\r\n if (isSubSection0Visible) {\r\n // hide visible section & subSections\r\n visibleSubSection.classList.remove('visible');\r\n visibleSection.classList.remove('visible');\r\n // back to menu list\r\n menuList.classList.remove('fadeOut');\r\n sectionBackBtn.classList.add('hidden');\r\n } else {\r\n // back to subSec0\r\n var subSec0 = visibleSection.querySelector('.subSec0');\r\n // hide visible subsection\r\n visibleSubSection.classList.remove('visible');\r\n // reset subSec0 height\r\n subSec0.classList.remove('hidden');\r\n\r\n setTimeout(function () {\r\n // shrink currently visible sub section\r\n visibleSubSection.classList.add('hidden');\r\n // show subSec0\r\n subSec0.classList.add('visible');\r\n }, 200);\r\n }\r\n } else {\r\n // hide visible section\r\n visibleSection.classList.remove('visible');\r\n // back to menu list\r\n menuList.classList.remove('fadeOut');\r\n sectionBackBtn.classList.add('hidden');\r\n }\r\n }\r\n // Populating Card Sections\r\n function setConsumerToCard(consumer) {\r\n var cardClone = consumer.cloneNode(true);\r\n // set consumer id attribute and cache it\r\n var id = consumer.dataset.consumerId;\r\n consumerInfoCard.setAttribute('data-consumerId', id);\r\n consumerId = id;\r\n // append consumer card to info card\r\n var header = consumerInfoCard.querySelector('.consumerInfoCard__heading');\r\n header.innerHTML = '';\r\n header.appendChild(cardClone);\r\n }\r\n function populateAbsentSection(section, absentData) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var absentForm = rosterAbsent.buildAbsentForm(true, consumerId, selectedDate, absentData);\r\n sectionInner.appendChild(absentForm);\r\n }\r\n function populatePhotoSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n var removePhotoBtn = button.build({\r\n text: 'Remove Photo',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: e => {\r\n if (!$.session.DemographicsPictureDelete) {\r\n return;\r\n }\r\n\r\n rosterAjax.updatePortrait('', parseInt(consumerId), formatPortraitPath($.session.portraitPath), () => {\r\n updatePhotoToDefault();\r\n });\r\n },\r\n });\r\n if (!$.session.DemographicsPictureDelete) {\r\n removePhotoBtn.classList.add('disabled');\r\n }\r\n\r\n var photoInput = input.build({\r\n label: 'Choose Image',\r\n type: 'file',\r\n accept: 'image/*',\r\n style: 'secondary',\r\n attributes: [{ key: 'multiple', value: 'false' }],\r\n });\r\n\r\n sectionInner.appendChild(removePhotoBtn);\r\n sectionInner.appendChild(photoInput);\r\n\r\n photoInput.addEventListener('change', updateConsumerPhoto);\r\n }\r\n function populateGroupSection(section) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n var groupList = customGroups.buildGroupList(false, consumerId);\r\n sectionInner.appendChild(groupList);\r\n }\r\n function populateNotesSection(section, data) {\r\n var sectionInner = section.querySelector('.sectionInner');\r\n sectionInner.innerHTML = '';\r\n\r\n if (data.length === 0) {\r\n sectionInner.innerHTML = `

    No notes found.

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

    ${fileName}

    \r\n

    ${fileType}

    \r\n

    ${icons.download}

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

    Company Name

    \r\n

    ${companyName}

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

    Title

    \r\n

    ${title}

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

    Address

    \r\n

    ${addressOne}

    \r\n

    ${addressTwo}

    \r\n

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

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

    No relationships found.

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

    There is nothing scheduled for this location

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

    No applications found.

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

    ${v}

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

    ${appName}

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

    ${name}

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

    ${date}

    ${time}

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

    ${title}

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

    ${text}

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

    ${selectedLocation.locationName}

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

    ${selectedLocation.locationName}

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

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

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

    ${dateTimeArray[0]}

    \r\n

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

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

    ${d.notetitle}

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

    ${d.note}

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

    ${d.MainAuthor}

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

    ${dateTimeArray[0]}

    \r\n

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

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

    ${d.title}

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

    ${shortenNotePreview(d.note)}

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

    Overlapping Shift Approvals(s)

    \r\n

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


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

    Overlapping Open Shift Request(s)

    \r\n

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


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

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


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

    ${item}

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

    Appointment Details

    \r\n

    ${date}

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

    Time:

    \r\n

    ${time}

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

    Consumer:

    \r\n

    ${consumer}

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

    Provider:

    \r\n

    ${provider}

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

    Type:

    \r\n

    ${type}

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

    Reason:

    \r\n

    ${reason}

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

    Notes:

    \r\n

    ${notes}

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

    Shift Details

    \r\n

    ${shiftDate}

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

    Location:

    \r\n

    ${location}

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

    Time:

    \r\n

    ${startTime} - ${endTime}

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

    Consumers:

    \r\n

    ${consumers}

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

    Work Code:

    \r\n

    ${workCode}

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

    Shift Type:

    \r\n

    ${shiftType}

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

    Notes:

    \r\n

    ${shiftNotes}

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

    Shift Details

    \r\n

    ${shiftDate}

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

    Location:

    \r\n

    ${location}

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

    Time:

    \r\n

    ${startTime} - ${endTime}

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

    Consumers:

    \r\n

    ${consumers}

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

    Work Code:

    \r\n

    ${workCode}

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

    Shift Type:

    \r\n

    ${shiftType}

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

    Notes:

    \r\n

    ${shiftNotes}

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

    Requested Shift Overlap

    \r\n

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

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

    Request Open Shift

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

    Shift Details

    \r\n

    ${shiftDate}

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

    Location:

    \r\n

    ${location}

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

    Time:

    \r\n

    ${startTime} - ${endTime}

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

    Consumers:

    \r\n

    ${consumers}

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

    Work Code:

    \r\n

    ${workCode}

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

    Shift Type:

    \r\n

    ${shiftType}

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

    Notes:

    \r\n

    ${shiftNotes}

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

    Shift Details

    \r\n

    ${shiftDate}

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

    Location:

    \r\n

    ${location}

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

    Time:

    \r\n

    ${startTime} - ${endTime}

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

    Consumers:

    \r\n

    ${consumers}

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

    Work Code:

    \r\n

    ${workCode}

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

    Shift Type:

    \r\n

    ${shiftType}

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

    Notes:

    \r\n

    ${shiftNotes}

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

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

    `;\r\n\r\n if (wrap) {\r\n wrap.innerHTML = wrapMarkup;\r\n } else {\r\n var calendar = document.querySelector('.calendarFooter');\r\n wrap = document.createElement('div');\r\n wrap.classList.add('total-hours-wrap');\r\n wrap.innerHTML = wrapMarkup;\r\n calendar.appendChild(wrap);\r\n }\r\n\r\n // Individual Shift Total Hours\r\n //=========================================\r\n var shifts = Array.prototype.slice.call(\r\n document.querySelectorAll('.eventBody .hdr'),\r\n );\r\n shifts.forEach(shift => {\r\n var time = shift.innerHTML;\r\n time = time.split('-');\r\n time[1] = time[1].trim() === '11:59 PM' ? '12:00 AM' : time[1];\r\n var hours = getTotalHours(time[0], time[1]);\r\n // sets total hours per shift\r\n shift.innerHTML += `(${parseFloat(hours).toFixed(2)})`;\r\n });\r\n\r\n _currentWeekHours = totalHours; // cache total hours\r\n }, 100);\r\n }\r\n\r\n function populateAppointments(results) {\r\n results.forEach((res, index) => {\r\n var serviceDate = getServiceDate(res);\r\n var startTime = `${serviceDate} ${res.timeScheduled}`;\r\n // This code is for microshit IE\r\n var dateArray = startTime.split(' ')[0].split('-');\r\n var timeArray = startTime.split(' ')[1].split(':');\r\n var yyyy = dateArray[0];\r\n var mm = dateArray[1] - 1;\r\n var dd = dateArray[2];\r\n var hour = timeArray[0];\r\n var min = timeArray[1];\r\n var sec = timeArray[2];\r\n var date = new Date(yyyy, mm, dd, hour, min, sec);\r\n // end Microshit IE code\r\n var endTime = addMinutes(date, 60);\r\n endTime = `${serviceDate} ${UTIL.leadingZero(\r\n endTime.getHours(),\r\n )}:${UTIL.leadingZero(endTime.getMinutes())}:00`;\r\n\r\n _scheduleArray[5].events.push({\r\n startTime: startTime,\r\n endTime: endTime,\r\n group: {\r\n groupId: 6,\r\n },\r\n eventId: res.medTrackingId,\r\n allDay: false,\r\n description: res.typeDescription,\r\n name: res.consumerName,\r\n eventName: res.takenToApptBy,\r\n });\r\n\r\n // Temp cache of appointments\r\n _appointments.push(res);\r\n });\r\n }\r\n\r\n function populateSchedules(results, locationId) {\r\n // clear own _schedules cache\r\n _schedules = [];\r\n // refigure dataObject to match web2cal\r\n _scheduleArray = [\r\n {\r\n name: 'My Shifts',\r\n groupId: 1,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'All Shifts',\r\n groupId: 2,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Open Shifts',\r\n groupId: 3,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Pending Request Open Shifts',\r\n groupId: 4,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Pending Call Off Shifts',\r\n groupId: 5,\r\n events: [],\r\n groups: null,\r\n },\r\n {\r\n name: 'Appointments',\r\n groupId: 6,\r\n events: [],\r\n groups: null,\r\n },\r\n ];\r\n\r\n results.forEach(res => {\r\n // null/undefined checks\r\n var timeRegEx = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\r\n var isStartTimeValid = timeRegEx.test(res.startTime);\r\n var isEndTimeValid = timeRegEx.test(res.endTime);\r\n\r\n if (!isStartTimeValid || !isEndTimeValid || res.serviceDate === '') {\r\n return;\r\n }\r\n\r\n if (_scheduleView === 'mine' && $.session.isPSI) return;\r\n\r\n // Determine which scheduleArray group to push to\r\n var groupPos; // position in scheduleArray\r\n var groupId; // calendar group number\r\n\r\n if (res.personID === '' || res.personID === null) {\r\n if (_scheduleView === 'all') {\r\n if (\r\n (res.callOffStatus === '' && res.requestShiftStatus === '') ||\r\n (res.callOffStatus === '' && res.requestShiftStatus === 'D')\r\n ) {\r\n //MAT changed 6/7/2019. Ash check\r\n // open shift\r\n groupId = 3;\r\n groupPos = 2;\r\n } else if (res.requestShiftStatus === 'P') {\r\n // pending open shift\r\n groupId = 4;\r\n groupPos = 3;\r\n }\r\n }\r\n } else if (res.personID.toString() === $.session.PeopleId) {\r\n if (res.callOffStatus === 'P') {\r\n // pending call off\r\n groupId = 5;\r\n groupPos = 4;\r\n } else {\r\n // my shifts\r\n groupId = 1;\r\n groupPos = 0;\r\n }\r\n } else {\r\n // all shifts\r\n groupId = 2;\r\n groupPos = 1;\r\n }\r\n\r\n // Event Details\r\n //----------------------\r\n var serviceDate = getServiceDate(res);\r\n var startTime = `${serviceDate} ${res.startTime}`;\r\n var endTime = `${serviceDate} ${res.endTime}`;\r\n var description = `${res.lastName}, ${res.firstName}`;\r\n description = description.trim() === ',' ? '' : description;\r\n var eventName =\r\n _scheduleView === 'mine'\r\n ? res.locationName\r\n : `${res.lastName}, ${res.firstName} `;\r\n eventName = eventName.trim() === ',' ? '' : eventName;\r\n eventName = eventName === '' ? res.locationName : eventName;\r\n var name = _scheduleView === 'mine' ? res.locationName : res.lastName;\r\n name = name === '' ? res.locationName : name;\r\n\r\n if (typeof groupPos === 'number') {\r\n _scheduleArray[groupPos].events.push({\r\n startTime: startTime,\r\n endTime: endTime,\r\n group: {\r\n groupId: groupId,\r\n },\r\n eventId: res.shiftId,\r\n allDay: false,\r\n description: description,\r\n name: name,\r\n eventName: eventName,\r\n });\r\n }\r\n\r\n // Cache schedules\r\n _schedules.push(res);\r\n });\r\n\r\n if (_scheduleView === 'all') {\r\n schedulingAjax.getScheduleApptInformationAjax(locationId, function (results) {\r\n populateAppointments(results);\r\n drawCalendar();\r\n });\r\n } else {\r\n drawCalendar(_scheduleArray);\r\n }\r\n }\r\n\r\n //========================================================\r\n // Schedule Admin\r\n // MOVED to SchedulingApproveRequest.js\r\n //========================================================\r\n\r\n //========================================================\r\n // Calendar\r\n //========================================================\r\n let ical;\r\n function drawCalendar() {\r\n removeInnerHtml('calendarContainer');\r\n ical = new Web2Cal('calendarContainer', {\r\n loadEvents: function () {\r\n ical.render(_scheduleArray);\r\n },\r\n onNewEvent: onNewEvent,\r\n startOfWeek: _startDay,\r\n readOnly: true,\r\n });\r\n ical.build();\r\n\r\n removeStuffWeDontWant();\r\n renderCalFooter();\r\n setupCalendarEvents();\r\n if (_currentView === 'week' || _currentView === 'day') {\r\n populateShiftTotalHours();\r\n }\r\n if (!document.querySelector('.scheduleViewWrap')) {\r\n renderScheduleViewBtn();\r\n renderLocationDropdown();\r\n schedulingAjax.getLocationDropdownForSchedulingAjax(populateLocationDropdown);\r\n }\r\n }\r\n\r\n function onNewEvent(obj, groups, allday) {\r\n Web2Cal.defaultPlugins.onNewEvent(obj, groups, allday);\r\n }\r\n\r\n function rzCloseAddEvent() {\r\n ical.closeAddEvent();\r\n }\r\n\r\n function renderCalFooter() {\r\n var calendar = document.getElementById('calendarContent');\r\n var footer = document.createElement('div');\r\n footer.classList.add('calendarFooter');\r\n footer.innerHTML = `
    `;\r\n calendar.appendChild(footer);\r\n }\r\n\r\n function setupDateHeadingEvent() {\r\n var dateHeadings = Array.prototype.slice.call(\r\n document.querySelectorAll('.calHeader'),\r\n );\r\n\r\n dateHeadings.forEach(heading => {\r\n heading.addEventListener('click', event => {\r\n _currentView = 'day';\r\n populateShiftTotalHours();\r\n });\r\n });\r\n }\r\n\r\n function setupCalendarEvents() {\r\n var calendar = document.getElementById('calendarContent');\r\n var monthBtn = document.getElementById('calNavmonth');\r\n var weekBtn = document.getElementById('calNavweek');\r\n var dayBtn = document.getElementById('calNavday');\r\n var prevBtn = document.querySelector('.prevButton.navbtn');\r\n var nextBtn = document.querySelector('.nextButton.navbtn');\r\n\r\n calendar.addEventListener('click', event => {\r\n switch (event.target) {\r\n case monthBtn:\r\n _currentView = 'month';\r\n var a = document.querySelector('.calendarFooter');\r\n var b = a.querySelector('.total-hours-wrap');\r\n if (b) a.removeChild(b);\r\n break;\r\n case weekBtn:\r\n _currentView = 'week';\r\n setupDateHeadingEvent();\r\n populateShiftTotalHours();\r\n if ($.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n break;\r\n case dayBtn:\r\n _currentView = 'day';\r\n populateShiftTotalHours();\r\n if ($.session.schedAllowCallOffRequests === 'Y' && $.session.schedulingUpdate) {\r\n }\r\n break;\r\n case prevBtn:\r\n case nextBtn:\r\n if (_currentView === 'week' || _currentView === 'day') {\r\n populateShiftTotalHours();\r\n if (\r\n _scheduleView === 'mine' &&\r\n $.session.schedAllowCallOffRequests === 'Y' &&\r\n $.session.schedulingUpdate\r\n ) {\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n if (event.target.classList.contains('dayEvent')) {\r\n // My Shifts & All Shifts\r\n if (\r\n event.target.classList.contains('red') ||\r\n event.target.classList.contains('blueTemplate')\r\n ) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'shift');\r\n return;\r\n }\r\n\r\n // Open Shifts\r\n if (event.target.classList.contains('brickTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'openShift');\r\n return;\r\n }\r\n\r\n // Pending Request Open Shifts\r\n if (event.target.classList.contains('tealTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'requestOff');\r\n return;\r\n }\r\n\r\n // Pending Call Off Shifts\r\n if (event.target.classList.contains('lightGreenTemplate')) {\r\n var eventId = parseInt(event.target.getAttribute('eventid'));\r\n var eventDetails = _schedules.filter(schedule => {\r\n return schedule.shiftId === eventId;\r\n });\r\n renderDetailsPopup(eventDetails, 'callOff');\r\n return;\r\n }\r\n\r\n // Appointments\r\n if (event.target.classList.contains('brownTemplate')) {\r\n // alert('Congratulations you have just won an all enclusive trip to a destination of your choice!');\r\n // alert('We just need you to call 740-525-7145 and leave a voice mail with your SSN, DOB, address and mothers maiden name');\r\n // alert('Did you call us yet?');\r\n // alert('Promise this isnt a scam.');\r\n var appointmentId = event.target.getAttribute('eventid');\r\n var appointmenttDetails = _appointments.filter(appointment => {\r\n return appointment.medTrackingId === appointmentId;\r\n });\r\n\r\n renderDetailsPopup(appointmenttDetails, 'appointment');\r\n return;\r\n }\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n //========================================================\r\n // Overriding Web2Cal\r\n //========================================================\r\n function removeStuffWeDontWant() {\r\n var navWrap = document.getElementById('inner-wrap');\r\n var leftNav = document.getElementById('leftNav');\r\n navWrap.removeChild(leftNav);\r\n\r\n var inliner1 = document.querySelector('.inline.r1');\r\n var inliner2 = document.querySelector('.inline.r2');\r\n var calNav = document.getElementById('calNavData');\r\n var agendaBtn = document.querySelector('.liagenda');\r\n var workshiftBtn = document.querySelector('.liworkshift');\r\n var resourceBtn = document.querySelector('.liw2cview');\r\n var groupsBtn = document.querySelector('.topHideShowLink');\r\n var calicon = document.querySelector('.icon-calendar');\r\n calNav.removeChild(agendaBtn);\r\n calNav.removeChild(workshiftBtn);\r\n calNav.removeChild(resourceBtn);\r\n inliner1.removeChild(groupsBtn);\r\n inliner2.removeChild(calicon);\r\n\r\n var collapseWrap = document.querySelector('#topnavContainer .inline.r2');\r\n var collapse = document.querySelector('.collapse-left-nav.icon-arrow-left');\r\n collapseWrap.removeChild(collapse);\r\n }\r\n function init() {\r\n isMobile = document.body.dataset.mobile;\r\n\r\n if (isMobile) {\r\n _currentView = 'day';\r\n } else {\r\n _currentView = 'week';\r\n }\r\n _scheduleView = 'mine';\r\n PROGRESS.init();\r\n PROGRESS.SPINNER.init();\r\n PROGRESS.SPINNER.show('Loading Calendar');\r\n schedulingAjax.getDayOfWeekScheduleAjax(setStartDay);\r\n\r\n // default view is my schedules\r\n schedulingAjax.getSchedulesForSchedulingModuleAjax('%', $.session.PeopleId, function (\r\n results,\r\n ) {\r\n // PROGRESS.SPINNER.hide();\r\n DOM.clearActionCenter();\r\n actioncenter = document.getElementById('actioncenter');\r\n appendModuleContainer('calendarContainer');\r\n populateSchedules(results);\r\n\r\n // *** Only for All Schedule View\r\n // Once we have the schedule array built,\r\n // send it off to have appointments joined before\r\n // drawing the calendar\r\n\r\n //populateSchedules does this too...\r\n // if (_scheduleView === 'all') {\r\n // schedulingAjax.getScheduleApptInformationAjax(locationId, function(results) {\r\n // populateAppointments(results);\r\n // drawCalendar();\r\n // });\r\n // } else {\r\n // drawCalendar();\r\n // }\r\n });\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","var schedulingRequestTimeOff = (function() {\r\n var actioncenter;\r\n\r\n // UTIL\r\n //-------------------------------------------------\r\n function eachDateOfInterval(dirtyInterval) {\r\n const interval = dirtyInterval || {};\r\n\r\n if (interval.start === interval.end)\r\n return interval.start.split(\",\").join(\"/\");\r\n\r\n const startDate = cloneDate(interval.start);\r\n const endDate = cloneDate(interval.end);\r\n\r\n const endTime = endDate.getTime();\r\n\r\n if (!(startDate.getTime() <= endTime)) return;\r\n\r\n let dates = [];\r\n\r\n const currentDate = startDate;\r\n currentDate.setHours(0, 0, 0, 0);\r\n\r\n while (currentDate.getTime() <= endTime) {\r\n dates.push(cloneDate(currentDate));\r\n currentDate.setDate(currentDate.getDate() + 1);\r\n currentDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n return dates;\r\n }\r\n function timeOverlapCheck(fromTime, toTime) {\r\n var startTimeMilliseconds = new Date(\"01/01/2019 \" + fromTime).getTime();\r\n var endTimeMilliseconds = new Date(\"01/01/2019 \" + toTime).getTime();\r\n var timeDifference = endTimeMilliseconds - startTimeMilliseconds;\r\n return timeDifference < 0 ? false : true;\r\n }\r\n function cloneDate(argument) {\r\n const argStr = Object.prototype.toString.call(argument);\r\n\r\n if (\r\n argument instanceof Date ||\r\n (typeof argument === \"object\" && argStr === [\"object Date\"])\r\n ) {\r\n return new Date(argument.getTime());\r\n } else if (typeof argument === \"number\" || argStr === [\"object Number\"]) {\r\n return new Date(argument);\r\n } else {\r\n argument = argument.split(\",\");\r\n return new Date(\r\n parseInt(argument[0]),\r\n parseInt(argument[1] - 1),\r\n parseInt(argument[2])\r\n );\r\n }\r\n }\r\n\r\n // ERROR POPUPS\r\n var errorPopup = POPUP.build({\r\n header: \"ERROR\",\r\n classNames: \"popup__error\",\r\n id: \"errorPopup\"\r\n });\r\n var errorPopupText = document.createElement(\"h3\");\r\n errorPopup.appendChild(errorPopupText);\r\n //=============================================\r\n \r\n //REST\r\n //-------------------------------------------------\r\n function populateEmployeesDropdown(results) {\r\n results = [{ employeeId: \"%\", employeeName: \"\" }, ...results];\r\n var employeeData = results.map(r => {\r\n var id = r.employeeId;\r\n var value = r.employeeName;\r\n var text = r.employeeName;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n dropdown.populate(\"employeeDropdown\", employeeData);\r\n employeeId = employeeData[0].id;\r\n }\r\n\r\n function populateReasonsDropdown(results) {\r\n results.sort((a, b) => (a.reasonName < b.reasonName ? -1 : 1));\r\n results = [{ reasonId: \"%\", reasonName: \"\" }, ...results];\r\n var dropdownData = results.map(r => {\r\n var id = r.reasonId;\r\n var value = r.reasonName;\r\n var text = r.reasonName;\r\n return {\r\n id,\r\n value,\r\n text\r\n };\r\n });\r\n dropdown.populate(\"reasonDropdown\", dropdownData);\r\n reasonId = dropdownData[0].id;\r\n }\r\n\r\n function overlapAlert(requestData) {\r\n\r\n var alertPopup = POPUP.build({\r\n id: 'saveAlertPopup',\r\n classNames: 'warning',\r\n });\r\n var alertbtnWrap = document.createElement('div');\r\n alertbtnWrap.classList.add('btnWrap');\r\n var alertokBtn = button.build({\r\n text: 'OK',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: async function() {\r\n POPUP.hide(alertPopup);\r\n // overlay.show();\r\n \r\n },\r\n });\r\n\r\n alertbtnWrap.appendChild(alertokBtn);\r\n\r\n var Date = `${requestData.serviceDate.split(' ')[0]}`;\r\n var startTime = `${UTIL.convertFromMilitary(requestData.startTime)}`;\r\n var endTime = `${UTIL.convertFromMilitary(requestData.endTime)}`;\r\n\r\n // Create the alert message\r\n const alertMessage = document.createElement('p');\r\n alertMessage.innerHTML = `This request overlaps an existing day off request on ${Date} ${startTime}-${endTime} and could not be processed.`;\r\n \r\n // Append the alert message and button wrapper to the alert popup\r\n alertPopup.appendChild(alertMessage);\r\n alertPopup.appendChild(alertbtnWrap);\r\n \r\n // Show the alert popup\r\n POPUP.show(alertPopup);\r\n\t\r\n }\r\n\r\n async function submitRequest() {\r\n reasonId = reasonId === \"%\" ? null : reasonId;\r\n employeeId = employeeId === \"%\" ? null : employeeId;\r\n if (reasonId === null || employeeId === null) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"Reason and notified employee fields are required\";\r\n return;\r\n }\r\n var startDate = document\r\n .getElementById(\"fromDate\")\r\n .value.split(\"-\")\r\n .join(\",\");\r\n var endDate = document\r\n .getElementById(\"toDate\")\r\n .value.split(\"-\")\r\n .join(\",\");\r\n var dateInterval = eachDateOfInterval({ start: startDate, end: endDate });\r\n // check date overlap:\r\n var areDatesValid = !dateInterval ? false : true;\r\n if (!areDatesValid) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"From Date cannot be after To Date\";\r\n return;\r\n } else {\r\n if (typeof dateInterval === \"string\") {\r\n var dateArray = dateInterval;\r\n } else {\r\n var dateArray = dateInterval\r\n .map(date => {\r\n var year = date.getFullYear();\r\n var month = UTIL.leadingZero(date.getMonth() + 1);\r\n var day = UTIL.leadingZero(date.getDate());\r\n\r\n return `${year}/${month}/${day}`;\r\n })\r\n .toString();\r\n }\r\n }\r\n\r\n var fromTime = document.getElementById(\"fromTime\");\r\n var toTime = document.getElementById(\"toTime\");\r\n fromTimeVal = fromTime.value === \"\" ? \"00:00:00\" : fromTime.value;\r\n toTimeVal = toTime.value === \"\" ? \"23:59:59\" : toTime.value;\r\n // check time overlap - ONLY CHECK TIME OVERLAP ON REQUEST OFF FOR 1 DAY. TO TIME CAN COME BEFORE FROM TIME\r\n // IF REQUESTING MULTIPLE DAYS OFF IN A ROW.\r\n if (typeof dateInterval === \"string\") {\r\n var areTimesValid = timeOverlapCheck(fromTimeVal, toTimeVal);\r\n if (!areTimesValid) {\r\n POPUP.show(errorPopup);\r\n errorPopupText.innerHTML = \"To Time cannot come before From Time\"\r\n return;\r\n } else {\r\n fromTime = fromTimeVal === \"\" ? \"00:00:00\" : fromTimeVal;\r\n toTime = toTimeVal === \"\" ? \"23:59:59\" : toTimeVal;\r\n }\r\n } else {\r\n fromTime = fromTimeVal === \"\" ? \"00:00:00\" : fromTimeVal;\r\n toTime = toTimeVal === \"\" ? \"23:59:59\" : toTimeVal;\r\n }\r\n\r\n var data = {\r\n token: $.session.Token,\r\n personId: $.session.PeopleId,\r\n dates: dateArray,\r\n fromTime: fromTimeVal,\r\n toTime: toTimeVal,\r\n reasonId: reasonId,\r\n employeeNotifiedId: employeeId,\r\n status: \"P\"\r\n };\r\n const requestResult = await schedulingAjax.requestDaysOffSchedulingAjax(data);\r\n if (requestResult.requestDaysOffSchedulingResult.length > 0)\r\n {\r\n overlapAlert(requestResult.requestDaysOffSchedulingResult[0])\r\n } else {\r\n // Add verification/popup that the request has been sent?\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n }\r\n\r\n function buildRequestTimeOff() {\r\n var today = new Date();\r\n var dd = UTIL.leadingZero(today.getDate());\r\n var mm = UTIL.leadingZero(today.getMonth() + 1);\r\n var yyyy = today.getFullYear();\r\n\r\n actioncenter = document.getElementById(\"actioncenter\");\r\n\r\n let cardHeader = document.createElement(\"div\");\r\n cardHeader.classList.add(\"card__header\");\r\n\r\n let cardBody = document.createElement(\"div\");\r\n cardBody.classList.add(\"card__body\");\r\n\r\n let dateWrap = document.createElement(\"div\");\r\n dateWrap.classList.add('requestOffCard__date')\r\n\r\n let timeWrap = document.createElement(\"div\");\r\n timeWrap.classList.add('requestOffCard__time')\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"requestOffBtnWrap\");\r\n\r\n let headerText = document.createElement(\"h3\");\r\n headerText.innerHTML = \"Request Time Off\";\r\n\r\n let card = document.createElement('div');\r\n card.classList.add('card', 'requestOffCard');\r\n\r\n let fromDateInput = input.build({\r\n id: \"fromDate\",\r\n label: \"From Date\",\r\n type: \"date\",\r\n style: \"secondary\"\r\n });\r\n let toDateInput = input.build({\r\n id: \"toDate\",\r\n label: \"To Date\",\r\n type: \"date\",\r\n style: \"secondary\"\r\n });\r\n let fromTimeInput = input.build({\r\n id: \"fromTime\",\r\n label: \"From Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n let toTimeInput = input.build({\r\n id: \"toTime\",\r\n label: \"To Time\",\r\n type: \"time\",\r\n style: \"secondary\"\r\n });\r\n let reasonDropdown = dropdown.build({\r\n dropdownId: \"reasonDropdown\",\r\n label: \"Reason\",\r\n classNames: 'error',\r\n style: \"secondary\"\r\n });\r\n let employeeDropdown = dropdown.build({\r\n dropdownId: \"employeeDropdown\",\r\n label: \"Employee To Notify\",\r\n classNames: 'error',\r\n style: \"secondary\"\r\n });\r\n let cancelBtn = button.build({\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: 'close',\r\n callback: function() {\r\n DOM.clearActionCenter();\r\n scheduling.init();\r\n }\r\n });\r\n let submitRequestBtn = button.build({\r\n id: \"submitRequestBtn\",\r\n text: \"Submit Request\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n classNames: \"disabled\",\r\n icon: 'send',\r\n callback: function() {\r\n submitRequest();\r\n }\r\n });\r\n\r\n dateWrap.appendChild(fromDateInput);\r\n dateWrap.appendChild(fromTimeInput);\r\n cardBody.appendChild(dateWrap);\r\n\r\n timeWrap.appendChild(toDateInput);\r\n timeWrap.appendChild(toTimeInput);\r\n cardBody.appendChild(timeWrap);\r\n\r\n cardBody.appendChild(reasonDropdown);\r\n cardBody.appendChild(employeeDropdown);\r\n\r\n btnWrap.appendChild(submitRequestBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n cardBody.appendChild(btnWrap)\r\n\r\n cardHeader.appendChild(headerText);\r\n \r\n card.appendChild(cardHeader);\r\n card.appendChild(cardBody);\r\n\r\n actioncenter.appendChild(card);\r\n\r\n //EVENT LISTENERS TO FOR REQIRED AND ENABELING SUBMIT BTN\r\n fromDateInput.classList.add(\"error\");\r\n toDateInput.classList.add(\"error\");\r\n reasonDropdown.classList.add('error')\r\n employeeDropdown.classList.add('error')\r\n\r\n var fromDateField = document.getElementById(\"fromDate\");\r\n var toDateField = document.getElementById(\"toDate\");\r\n var reasonDropdownField = document.getElementById(\"reasonDropdown\");\r\n var employeeDropdownField = document.getElementById(\"employeeDropdown\");\r\n\r\n fromDateInput.addEventListener(\"change\", function() {\r\n if (fromDateField.value === \"\") {\r\n fromDateInput.classList.add(\"error\");\r\n } else {\r\n fromDateInput.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n toDateInput.addEventListener(\"change\", function() { \r\n if (toDateField.value === \"\") {\r\n toDateInput.classList.add(\"error\");\r\n } else {\r\n toDateInput.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n reasonDropdown.addEventListener(\"change\", function() {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n reasonId = selectedOption.id;\r\n if (reasonDropdownField.selectedIndex === 0) {\r\n reasonDropdown.classList.add(\"error\");\r\n } else {\r\n reasonDropdown.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n employeeDropdown.addEventListener(\"change\", function() {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n employeeId = selectedOption.id;\r\n if (employeeDropdownField.selectedIndex === 0) {\r\n employeeDropdown.classList.add(\"error\");\r\n } else {\r\n employeeDropdown.classList.remove(\"error\");\r\n }\r\n if (fromDateField.value === \"\" || toDateField.value === \"\" || reasonDropdownField.selectedIndex === 0 || employeeDropdownField.selectedIndex === 0) {\r\n submitRequestBtn.classList.add(\"disabled\");\r\n } else {\r\n submitRequestBtn.classList.remove(\"disabled\");\r\n }\r\n });\r\n\r\n\r\n schedulingAjax.getRequestTimeOffDropdownEmployees(populateEmployeesDropdown);\r\n schedulingAjax.getCallOffDropdownReasonsAjax(populateReasonsDropdown);\r\n }\r\n\r\n function init() {\r\n actioncenter = document.getElementById(\"actioncenter\");\r\n DOM.clearActionCenter();\r\n buildRequestTimeOff();\r\n }\r\n\r\n return {\r\n init\r\n };\r\n})();\r\n","const TRANS_addRoute = (function () {\r\n /*\r\n Date\r\n Route Name\r\n Driver\r\n Other Rider\r\n Location\r\n Vehicle\r\n Billing Type (radio: Miles/Trips)\r\n Consumers\r\n */\r\n\r\n let dateInput,\r\n routeNameInput,\r\n driverDropdown,\r\n otherRiderDropdown,\r\n locationDropdown,\r\n vehicleDropdown;\r\n let milesRadio, tripsRadio;\r\n let consumerSectionBody, noConsumerWarning;\r\n let consumersOnRecord = new Map();\r\n let saveBtn;\r\n\r\n function buildPage() {\r\n const column1 = document.createElement('div')\r\n const column2 = document.createElement('div')\r\n column1.classList.add('col-1')\r\n column2.classList.add('col-2')\r\n\r\n // Route Info Card//\r\n const routeInfoCard = document.createElement(\"div\");\r\n routeInfoCard.classList.add(\"card\");\r\n const routeInfoCardBody = document.createElement(\"div\");\r\n routeInfoCardBody.classList.add(\"card__body\");\r\n routeInfoCard.innerHTML = `\r\n
    Route Information
    \r\n `;\r\n routeInfoCard.appendChild(routeInfoCardBody)\r\n //\r\n dateInput = input.build({\r\n id: \"addRouteDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: UTIL.getTodaysDate(),\r\n });\r\n routeNameInput = input.build({\r\n id: \"routeNameInput\",\r\n label: \"Route Name\",\r\n charLimit: 60\r\n });\r\n routeNameInput.autocomplete = 'false'\r\n\r\n driverDropdown = dropdown.build({\r\n dropdownId: \"driverDropdown\",\r\n label: \"Driver\",\r\n style: \"secondary\",\r\n });\r\n otherRiderDropdown = dropdown.build({\r\n dropdownId: \"otherRiderDropdown\",\r\n label: \"Other Rider\",\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: \"vehicleDropdown\",\r\n label: \"Vehicle\",\r\n style: \"secondary\",\r\n });\r\n\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n style: \"secondary\",\r\n });\r\n\r\n // Billing Radios //\r\n milesRadio = input.buildRadio({\r\n id: `milesRadio`,\r\n text: \"Miles\",\r\n name: \"billingType\",\r\n isChecked: true,\r\n });\r\n tripsRadio = input.buildRadio({\r\n id: `tripsRadio`,\r\n text: \"Trips\",\r\n name: \"billingType\",\r\n isChecked: false,\r\n });\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addRouteRadioDiv\");\r\n radioDiv.appendChild(milesRadio);\r\n radioDiv.appendChild(tripsRadio);\r\n /////////////////\r\n saveBtn = button.build({\r\n id: 'saveBtn',\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n saveRoute();\r\n }\r\n }\r\n });\r\n const cancelBtn = button.build({\r\n id: 'cancelBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n // Should probably reset values maybe?? will need to test\r\n setActiveModuleSectionAttribute(null);\r\n roster2.clearActiveConsumers()\r\n TRANS_mainLanding.init();\r\n }\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n ///////////////////\r\n // Append to first column //\r\n column1.appendChild(routeInfoCard)\r\n routeInfoCardBody.appendChild(dateInput);\r\n routeInfoCardBody.appendChild(routeNameInput);\r\n routeInfoCardBody.appendChild(driverDropdown);\r\n routeInfoCardBody.appendChild(otherRiderDropdown);\r\n routeInfoCardBody.appendChild(vehicleDropdown);\r\n routeInfoCardBody.appendChild(locationDropdown);\r\n routeInfoCardBody.appendChild(radioDiv);\r\n ////////////////////\r\n // Consumer Section //\r\n const consumerSectionCard = document.createElement(\"div\");\r\n const consumerSectionHeader = document.createElement(\"div\");\r\n consumerSectionBody = document.createElement(\"div\");\r\n consumerSectionCard.classList.add(\"card\");\r\n consumerSectionHeader.classList.add(\"card__header\");\r\n consumerSectionBody.classList.add(\"card__body\");\r\n consumerSectionBody.id = 'consumerOnRouteSection'\r\n consumerSectionHeader.innerText = \"Consumers on Route\";\r\n consumerSectionCard.appendChild(consumerSectionHeader);\r\n consumerSectionCard.appendChild(consumerSectionBody);\r\n // No Consumer Warning //\r\n noConsumerWarning = document.createElement('p');\r\n noConsumerWarning.style.color = 'red';\r\n noConsumerWarning.innerText = 'You must select at least one consumer for the route.'\r\n consumerSectionBody.appendChild(noConsumerWarning)\r\n //\r\n column2.appendChild(consumerSectionCard)\r\n column2.appendChild(btnWrap)\r\n DOM.ACTIONCENTER.appendChild(column1)\r\n DOM.ACTIONCENTER.appendChild(column2)\r\n\r\n populateDropdowns();\r\n eventListeners();\r\n checkRequiredFieldsOfAddRoute();\r\n }\r\n\r\n function checkRequiredFieldsOfAddRoute() {\r\n var date = dateInput.querySelector('input');\r\n var routeName = routeNameInput.querySelector('#routeNameInput');\r\n var driver = driverDropdown.querySelector('#driverDropdown');\r\n var vehicle = vehicleDropdown.querySelector('#vehicleDropdown');\r\n var location = locationDropdown.querySelector('#locationDropdown');\r\n\r\n if (date.value === '') {\r\n dateInput.classList.add('error');\r\n } else {\r\n dateInput.classList.remove('error');\r\n }\r\n\r\n if (routeName.value === '') {\r\n routeNameInput.classList.add('error');\r\n } else {\r\n routeNameInput.classList.remove('error');\r\n }\r\n\r\n if (driver.value === '') {\r\n driverDropdown.classList.add('error');\r\n } else {\r\n driverDropdown.classList.remove('error');\r\n }\r\n\r\n if (vehicle.value === '') {\r\n vehicleDropdown.classList.add('error');\r\n } else {\r\n vehicleDropdown.classList.remove('error');\r\n }\r\n\r\n if (location.value === '') {\r\n locationDropdown.classList.add('error');\r\n } else {\r\n locationDropdown.classList.remove('error');\r\n }\r\n\r\n if (noConsumerWarning.style.display === 'none') {\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n\r\n function setBtnStatusOfAddRoute() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n saveBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n\r\n function populateDropdowns() {\r\n const vehicleDropdownData = []\r\n const driverDropdownData = []\r\n const otherRiderDropdownData = []\r\n const locationDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n const locations = TRANS_mainLanding.getLocations();\r\n\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n locations.forEach((val, key, map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: val.Name\r\n })\r\n })\r\n\r\n otherRiderDropdownData.unshift({ value: '0', text: 'NONE' })\r\n vehicleDropdownData.unshift({ value: '', text: '' })\r\n locationDropdownData.unshift({ value: '', text: '' })\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData);\r\n dropdown.populate(driverDropdown, driverDropdownData, $.session.PeopleId);\r\n // If the person logged in is not classified as a driver, driver dropdown will\r\n // default to a blank option, and need to be classified as an error untill changed\r\n if (!drivers.has($.session.PeopleId)) driverDropdown.classList.add('error');\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData);\r\n dropdown.populate(locationDropdown, locationDropdownData);\r\n }\r\n\r\n function eventListeners() {\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n driverDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n routeNameInput.addEventListener('keyup', event => {\r\n checkRequiredFieldsOfAddRoute();\r\n });\r\n dateInput.addEventListener('change', event => {\r\n resetPageForNewDate(event.target.value)\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n }\r\n\r\n function resetPageForNewDate(newDate) {\r\n /* When Changing the date, several date dependant items need to be reset.\r\n Driver/Other Rider - re-populate dropdown with new data based on date\r\n Consumers - remove all consumers, and reset the day in the mini roster\r\n */\r\n\r\n // * ROSTER AND CONSUMERS\r\n roster2.updateSelectedDate(newDate)\r\n roster2.clearActiveConsumers()\r\n consumersOnRecord.clear();\r\n const consumerSection = document.getElementById('consumerOnRouteSection');\r\n consumerSection.innerHTML = '';\r\n consumerSection.appendChild(noConsumerWarning)\r\n noConsumerWarning.style.display = 'block'\r\n // *\r\n\r\n // * Driver/Other Rider\r\n const drivers = TRANS_mainLanding.getAllDrivers(Date.parse(newDate));\r\n let driverDropdownData = []\r\n let otherRiderDropdownData = []\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n otherRiderDropdownData.unshift({ value: '0', text: 'NONE' })\r\n dropdown.populate(driverDropdown, driverDropdownData, $.session.PeopleId);\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData);\r\n //*\r\n }\r\n\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId)\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n } else noConsumerWarning.style.display = 'block';\r\n checkRequiredFieldsOfAddRoute();\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster()\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerSectionBody.appendChild(transportationCard)\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n } else noConsumerWarning.style.display = 'block';\r\n checkRequiredFieldsOfAddRoute();\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n roster2.clearSelectedConsumers();\r\n DOM.toggleNavLayout();\r\n break;\r\n }\r\n }\r\n }\r\n async function saveRoute() {\r\n pendingSave.show('Creating Route...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n if (consumersOnRecord.size === 0) throw \"no consumers\"\r\n //\r\n const date = dateInput.querySelector('input').value;\r\n const routeName = routeNameInput.querySelector('input').value;\r\n const driverddElement = document.getElementById('driverDropdown');\r\n const driver = driverddElement.options[driverddElement.selectedIndex].value;\r\n const otherRiderElement = document.getElementById('otherRiderDropdown');\r\n const otherRider = otherRiderElement.options[otherRiderElement.selectedIndex].value;\r\n const vehicleElement = document.getElementById('vehicleDropdown');\r\n const vehicle = vehicleElement.options[vehicleElement.selectedIndex].value;\r\n const locationElement = document.getElementById('locationDropdown');\r\n const location = locationElement.options[locationElement.selectedIndex].value;\r\n const billingType = document.getElementById(\"milesRadio\").checked ? \"M\" : \"T\";\r\n const data = {\r\n token: $.session.Token,\r\n tripName: UTIL.removeUnsavableNoteText(routeName),\r\n driverId: driver,\r\n otherRider: otherRider,\r\n dateOfService: date,\r\n billingType: billingType,\r\n vehicleInformationId: vehicle,\r\n locationId: location\r\n }\r\n // 1) Save main trip to get the tripCompletedId from DB\r\n const tripCompletedId = (await TRANS_addRouteAjax.insertTrip(data)).insertTripCompletedResult[0].tripCompletedId\r\n // 2) Save consumers to the newly created tripCompletedId\r\n const dbCallArr = []\r\n consumersOnRecord.forEach((val, key, map) => {\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: tripCompletedId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes : '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit))\r\n })\r\n Promise.all(dbCallArr).then(res => {\r\n pendingSave.fulfill('Route has been created');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers()\r\n /* \r\n After saving, if the route is for a future date OR the\r\n driver on the route is different than the person creating the route,\r\n then take them to the transportation landing page.\r\n Otherwise give them the save route popup.\r\n */\r\n if (Date.parse(date) > UTIL.getTodaysDate(true) || $.session.PeopleId !== driver) {\r\n TRANS_mainLanding.init();\r\n } else {\r\n saveRoutePopup(tripCompletedId, date, routeName, vehicle)\r\n }\r\n }, 3000)\r\n })\r\n } catch (error) {\r\n switch (error) {\r\n case 'err exist':\r\n pendingSave.reject('Failed to create route. Please correct any errors that exist on the route.')\r\n console.error('Failing due to missing required fields.')\r\n break;\r\n case 'no consumers':\r\n pendingSave.reject('Failed to create route. There must be at least on consumer for a route.')\r\n console.error('Failing due to no consumers added.')\r\n break;\r\n default:\r\n pendingSave.reject('Failed to save. Please try again.')\r\n console.error(error)\r\n break;\r\n }\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n function saveRoutePopup(tripCompletedId, tripDate, tripName, vehicleId) {\r\n const popup = POPUP.build({\r\n hideX: true,\r\n classNames: 'routeSavedPopup'\r\n });\r\n const message = document.createElement('div');\r\n message.style.textAlign = 'center'\r\n message.innerHTML = `\r\n

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

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

    Date: ${readableDate}

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

    Route: ${selectedRouteName}

    \r\n

    Location: ${selectedLocationName}

    \r\n

    Date: ${readableDate}

    \r\n `;\r\n };\r\n\r\n // Route Info Card//\r\n const routeInfoCard = document.createElement(\"div\");\r\n routeInfoCard.classList.add(\"card\");\r\n const routeInfoCardBody = document.createElement(\"div\");\r\n routeInfoCardBody.classList.add(\"card__body\");\r\n routeInfoCard.innerHTML = `\r\n
    Route Information
    \r\n `;\r\n routeInfoCard.appendChild(routeInfoCardBody)\r\n\r\n routeNameInput = input.build({\r\n id: \"routeNameInput\",\r\n label: \"Route Name\",\r\n charLimit: 60,\r\n readonly: ro,\r\n value: selectedRouteName\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: \"locationDropdown\",\r\n label: \"Location\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n\r\n routeStartInput = input.build({\r\n id: \"routeStartTime\",\r\n label: \"Route Start Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.startTime\r\n });\r\n routeEndInput = input.build({\r\n id: \"routeEndTime\",\r\n label: \"Route End Time\",\r\n type: \"time\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.endTime\r\n });\r\n routeStartOdo = input.build({\r\n id: \"routeStartOdo\",\r\n type: \"number\",\r\n label: \"Starting Odometer\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.odometerStart\r\n });\r\n routeEndOdo = input.build({\r\n id: \"routeEndOdo\",\r\n type: \"number\",\r\n label: \"Ending Odometer\",\r\n style: \"secondary\",\r\n readonly: ro,\r\n value: tripInfo.odometerStop\r\n });\r\n driverDropdown = dropdown.build({\r\n dropdownId: \"driverDropdown\",\r\n label: \"Driver\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n otherRiderDropdown = dropdown.build({\r\n dropdownId: \"otherRiderDropdown\",\r\n label: \"Other Rider\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: \"vehicleDropdown\",\r\n label: \"Vehicle\",\r\n readonly: ro,\r\n style: \"secondary\",\r\n });\r\n\r\n\r\n // Billing Radios //\r\n milesRadio = input.buildRadio({\r\n id: `milesRadio`,\r\n text: \"Miles\",\r\n name: \"billingType\",\r\n isDisabled: ro,\r\n isChecked: tripInfo.billingType === 'M' ? true : false,\r\n });\r\n tripsRadio = input.buildRadio({\r\n id: `tripsRadio`,\r\n text: \"Trips\",\r\n name: \"billingType\",\r\n isDisabled: ro,\r\n isChecked: tripInfo.billingType === 'T' ? true : false,\r\n });\r\n\r\n // Disable inputs for read only;\r\n if (ro) {\r\n routeNameInput.classList.add('disabled')\r\n locationDropdown.classList.add('disabled')\r\n routeStartInput.classList.add('disabled')\r\n routeEndInput.classList.add('disabled')\r\n routeStartOdo.classList.add('disabled')\r\n routeEndOdo.classList.add('disabled')\r\n driverDropdown.classList.add('disabled')\r\n otherRiderDropdown.classList.add('disabled')\r\n vehicleDropdown.classList.add('disabled')\r\n }\r\n const radioDiv = document.createElement(\"div\");\r\n radioDiv.classList.add(\"addRouteRadioDiv\");\r\n radioDiv.appendChild(milesRadio);\r\n radioDiv.appendChild(tripsRadio);\r\n /////////////////\r\n // * Time Wrap\r\n const timeDiv = document.createElement(\"div\");\r\n timeDiv.classList.add(\"odometerDiv\");\r\n timeDiv.appendChild(routeStartInput);\r\n timeDiv.appendChild(routeEndInput);\r\n // * Odometer Wrap\r\n const odometerDiv = document.createElement(\"div\");\r\n odometerDiv.classList.add(\"odometerDiv\");\r\n odometerDiv.appendChild(routeStartOdo);\r\n odometerDiv.appendChild(routeEndOdo);\r\n //\r\n const updateBtn = button.build({\r\n id: \"updateBtn\",\r\n text: \"Update\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: 'save',\r\n callback: () => {\r\n if (!updateBtn.classList.contains('disabled')) {\r\n saveData();\r\n }\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n id: \"deleteBtn\",\r\n classNames: 'trans_DeleteBtn',\r\n text: \"Delete\",\r\n style: \"secondary\",\r\n type: \"contained\",\r\n icon: 'delete',\r\n callback: () => deleteRoute(),\r\n });\r\n const cancelBtn = button.build({\r\n id: \"cancelBtn\",\r\n text: \"Cancel\",\r\n style: \"secondary\",\r\n type: \"outlined\",\r\n icon: 'close',\r\n callback: () => {\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n },\r\n });\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n if (!ro) btnWrap.appendChild(updateBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n ///////////////////\r\n // Append to Main Section //\r\n if (isBatched) column1.appendChild(batchedWarninig)\r\n column1.appendChild(selectedRouteInformation);\r\n column1.appendChild(routeInfoCard);\r\n if (isAddHoc) routeInfoCardBody.appendChild(routeNameInput)\r\n routeInfoCardBody.appendChild(timeDiv);\r\n routeInfoCardBody.appendChild(odometerDiv);\r\n routeInfoCardBody.appendChild(driverDropdown);\r\n routeInfoCardBody.appendChild(otherRiderDropdown);\r\n routeInfoCardBody.appendChild(vehicleDropdown);\r\n if (isAddHoc) routeInfoCardBody.appendChild(locationDropdown)\r\n routeInfoCardBody.appendChild(radioDiv);\r\n ////////////////////\r\n // Consumer Section //\r\n const consumerSectionCard = document.createElement(\"div\");\r\n const consumerSectionHeader = document.createElement(\"div\");\r\n consumerSectionBody = document.createElement(\"div\");\r\n consumerSectionCard.classList.add(\"card\", \"consumerSectionCard\");\r\n consumerSectionHeader.classList.add(\"card__header\");\r\n consumerSectionBody.classList.add(\"card__body\");\r\n consumerSectionHeader.innerText = \"Consumers on Route\";\r\n consumerSectionCard.appendChild(consumerSectionHeader);\r\n consumerSectionCard.appendChild(consumerSectionBody);\r\n // No Consumer Warning //\r\n noConsumerWarning = document.createElement('p');\r\n noConsumerWarning.style.color = 'red';\r\n noConsumerWarning.innerText = 'You must select at least one consumer for the route.'\r\n consumerSectionBody.appendChild(noConsumerWarning)\r\n noConsumerWarning.style.display = 'none';\r\n //\r\n column2.appendChild(consumerSectionCard)\r\n column2.appendChild(btnWrap);\r\n if (!ro) column2.appendChild(deleteBtn);\r\n ///////////////////////\r\n DOM.ACTIONCENTER.appendChild(column1);\r\n DOM.ACTIONCENTER.appendChild(column2);\r\n\r\n populateDropdowns()\r\n buildConsumerCards()\r\n eventListeners()\r\n setBtnStatusOfAddRoute()\r\n }\r\n\r\n function buildConsumerCards() {\r\n consumersOnRecord.forEach((val,key, map) => {\r\n // transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n transportationCard = TRANS_consumerDocCard.createCard(key, val, ro);\r\n consumerSectionBody.appendChild(transportationCard)\r\n })\r\n }\r\n\r\n function populateDropdowns() {\r\n if (isAddHoc) {\r\n const locationDropdownData = []\r\n const locations = TRANS_mainLanding.getLocations();\r\n locations.forEach((val,key,map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: val.Name\r\n })\r\n });\r\n dropdown.populate(locationDropdown, locationDropdownData, tripInfo.locationId);\r\n }\r\n const vehicleDropdownData = []\r\n const driverDropdownData = []\r\n const otherRiderDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n\r\n vehicles.forEach((val,key,map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val,key,map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n otherRiderDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n otherRiderDropdownData.unshift({ value: '', text: 'NONE'})\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, tripInfo.vehicleInformationId);\r\n dropdown.populate(driverDropdown, driverDropdownData, tripInfo.driverId);\r\n dropdown.populate(otherRiderDropdown, otherRiderDropdownData, tripInfo.otherRider);\r\n }\r\n\r\n function eventListeners() {\r\n function odoCheck() {\r\n const startVal = parseInt(routeStartOdo.querySelector('input').value)\r\n const endVal = parseInt(routeEndOdo.querySelector('input').value)\r\n //Odo can be null, check to see if they are numbers (NaN when they are null)\r\n if (typeof(startVal) !== 'number' && typeof(endVal) !== 'number') {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n return\r\n }\r\n\r\n const dif = endVal - startVal;\r\n if (dif < 0) {\r\n routeStartOdo.classList.add('error');\r\n routeEndOdo.classList.add('error')\r\n } else {\r\n routeStartOdo.classList.remove('error');\r\n routeEndOdo.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n routeStartInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.firstChild.value, routeEndInput.querySelector('input').value)\r\n if (totalHours < 0) {\r\n routeStartInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n routeEndInput.addEventListener('change', event => {\r\n const totalHours = UTIL.calculateTotalHours(routeStartInput.querySelector('input').value, routeEndInput.firstChild.value)\r\n if (totalHours < 0) {\r\n routeEndInput.classList.add('error')\r\n } else {\r\n routeStartInput.classList.remove('error')\r\n routeEndInput.classList.remove('error')\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n routeStartOdo.addEventListener('change', () => odoCheck());\r\n routeEndOdo.addEventListener('change', () => odoCheck());\r\n\r\n routeNameInput.addEventListener('change', event => {\r\n if (event.target.value.trim() === \"\") {\r\n routeNameInput.classList.add('error');\r\n } else {\r\n routeNameInput.classList.remove('error');\r\n }\r\n selectedRouteName = event.target.value;\r\n setBtnStatusOfAddRoute();\r\n });\r\n driverDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.driverId = selectedOption.value;\r\n })\r\n otherRiderDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.otherRider = selectedOption.value;\r\n })\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n if (vehicleInspection !== \"\") {\r\n UTIL.warningPopup({\r\n message: \"This trip has an inspection completed for it. Changing the vehicle will result in the inspection being deleted. Continue?\",\r\n accept: {\r\n text: \"Yes\",\r\n callback: () => {\r\n tripInfo.vehicleInformationId = selectedOption.value;\r\n deleteInspection = true;\r\n }\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n event.target.value = tripInfo.vehicleInformationId;\r\n }\r\n }\r\n })\r\n } else {\r\n tripInfo.vehicleInformationId = selectedOption.value;\r\n }\r\n })\r\n locationDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n tripInfo.locationId = selectedOption.value;\r\n })\r\n }\r\n\r\n function setBtnStatusOfAddRoute() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n updateBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n if ($.session.transportationUpdate)\r\n updateBtn.classList.remove('disabled');\r\n else\r\n updateBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n function loadData(routeID) {\r\n function cleanData(getTripInformationResult, getTripConsumersResult) {\r\n tripInfo = getTripInformationResult[0];\r\n getTripConsumersResult.forEach(consumer => {\r\n consumer.batchId = tripInfo.batchId; \r\n consumersOnRecord.set(consumer.consumerId, consumer);\r\n // Roster Required Info:\r\n const consumerobj = roster2.buildConsumerCard({\r\n FN: consumer.firstName,\r\n LN: consumer.lastName,\r\n id: consumer.consumerId\r\n });\r\n roster2.addConsumerToActiveConsumers(consumerobj);\r\n })\r\n buildPage();\r\n }\r\n\r\n //Get data for the route\r\n const routeInfo = TRANS_routeDocumentationAjax.getRouteInformation(routeID)\r\n const consumerInfo = TRANS_routeDocumentationAjax.getRouteConsumers(routeID)\r\n Promise.all([routeInfo, consumerInfo]).then(val => {\r\n const getTripInformationResult = val[0].getTripInformationResult\r\n const getTripConsumersResult = val[1].getTripConsumersResult\r\n cleanData(getTripInformationResult, getTripConsumersResult);\r\n })\r\n }\r\n function consumerRemoveAction(consumerId) {\r\n consumersOnRecord.delete(consumerId)\r\n consumersToRemove.push(consumerId)\r\n\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.style.display = 'block';\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n }\r\n function updateConsumerData(data) {\r\n const { consumerId, key, value } = data\r\n consumersOnRecord.get(consumerId)[key] = value;\r\n }\r\n function retrieveConsumerData(consumerId, key) {\r\n return consumersOnRecord.get(consumerId)[key];\r\n }\r\n\r\n function deleteRoute() {\r\n /*\r\n When Deleting a route:\r\n * can only delete non-batched routes\r\n * Warn before delete\r\n * If there is a vehicle inspection completed for the route also warn that it will be deleted\r\n */\r\n function deleteRouteAccept() {\r\n pendingSave.show('Deleting Route...');\r\n try {\r\n const deleteProms = []\r\n //Delete Inspection:\r\n if (vehicleInspection !== \"\") deleteProms.push(TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspection));\r\n //Delete Route\r\n deleteProms.push(TRANS_manageRoutesAjax.deleteTrip(selectedRouteId))\r\n Promise.all(deleteProms).then(() => {\r\n pendingSave.fulfill('Deleted');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n })\r\n } catch (error) {\r\n console.error(error)\r\n pendingSave.reject('Failed to delete Route.')\r\n setTimeout(() => {\r\n failSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n }\r\n }\r\n const warningMessage = vehicleInspection === \"\" ?\r\n \"You are sure you would like to delete this Route?\" :\r\n \"Are you sure you would like to delete this Route and Vehicle Inspection?\"\r\n UTIL.warningPopup({\r\n message: warningMessage,\r\n hideX: true,\r\n accept: {\r\n callback: deleteRouteAccept,\r\n text: 'YES'\r\n },\r\n reject: {\r\n callback: () => {},\r\n text: 'NO'\r\n }\r\n });\r\n\r\n }\r\n\r\n function saveData() {\r\n notTodeleteConsumers = [];\r\n pendingSave.show('Saving Route...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n const routeName = routeNameInput.querySelector('input').value;\r\n const startTime = routeStartInput.querySelector('input').value\r\n const endTime = routeEndInput.querySelector('input').value\r\n const odoStart = routeStartOdo.querySelector('input').value\r\n const odoEnd = routeEndOdo.querySelector('input').value;\r\n const billingType = document.getElementById(\"milesRadio\").checked ? \"M\":\"T\";\r\n const dbCallArr = [];\r\n const tripData = {\r\n token: $.session.Token,\r\n tripsCompletedId: selectedRouteId,\r\n odometerStart: odoStart,\r\n odometerStop: odoEnd,\r\n startTime: startTime,\r\n endTime: endTime,\r\n driverId: tripInfo.driverId,\r\n otherRiderId: tripInfo.otherRider,\r\n vehicleId: tripInfo.vehicleInformationId,\r\n locationId: tripInfo.locationId,\r\n billingType: billingType,\r\n tripName: UTIL.removeUnsavableNoteText(routeName),\r\n };\r\n dbCallArr.push(TRANS_manageRoutesAjax.updateManageTripDetails(tripData));\r\n if (deleteInspection) dbCallArr.push(TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspection)) \r\n consumersOnRecord.forEach((val,key,map) => {\r\n notTodeleteConsumers.push(key);\r\n const { alternateAddress, completedDetailId, directions, pickupOrder, notes, riderStatus, scheduledTime, specialInstructions, totalTravelTime } = val\r\n const consumerDetailSubmit = {\r\n token: $.session.Token,\r\n tripDetailId: completedDetailId ? completedDetailId : '',\r\n tripsCompletedId: selectedRouteId,\r\n consumerId: key,\r\n alternateAddress: alternateAddress ? alternateAddress : '',\r\n scheduledTime: scheduledTime ? scheduledTime : '',\r\n totalTravelTime: totalTravelTime ? totalTravelTime : '',\r\n riderStatus: riderStatus,\r\n specialInstructions: specialInstructions ? specialInstructions : '',\r\n directions: directions ? directions : '',\r\n pickupOrder: pickupOrder ? pickupOrder : '',\r\n notes: notes ? notes: '',\r\n };\r\n dbCallArr.push(TRANS_routeDocumentationAjax.insertUpdateTripConsumers(consumerDetailSubmit));\r\n });\r\n consumersToRemove.forEach(consumer => { \r\n let IsSameInsertedConsumerFind = notTodeleteConsumers.includes(consumer);\r\n const data = {\r\n tripsCompletedId: selectedRouteId,\r\n consumerId: consumer\r\n }\r\n if (!IsSameInsertedConsumerFind) {\r\n dbCallArr.push(TRANS_routeDocumentationAjax.deleteConsumerFromTrip(data))\r\n } \r\n }); \r\n Promise.all(dbCallArr).then(() => {\r\n // Get Alt Addresses from DB Again:\r\n TRANS_mainLanding.updateAltAddress();\r\n pendingSave.fulfill('Save Successful');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n roster2.clearActiveConsumers();\r\n roster2.removeMiniRosterBtn();\r\n TRANS_manageRoutes.init(false);\r\n }, 1000)\r\n })\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.')\r\n console.error('Failing due to odometer or time overlap. Check odometer and time overlaps.')\r\n } else {\r\n pendingSave.reject('Failed to save. Please try again.')\r\n }\r\n console.error(error)\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n function handleActionNavEvent(target) {\r\n const targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case \"miniRosterDone\": {\r\n const selectedConsumers = roster2.getSelectedConsumersMiniRoster();\r\n selectedConsumers.forEach(async consumer => {\r\n const consumerDetails = (await TRANS_routeDocumentationAjax.getConsumerDetails(consumer.id)).getConsumerDetailsResult[0];\r\n consumersOnRecord.set(consumer.id, consumerDetails);\r\n consumersOnRecord.get(consumer.id)['riderStatus'] = '';\r\n const transportationCard = TRANS_consumerDocCard.createCard(consumer.id, consumerDetails);\r\n consumerSectionBody.appendChild(transportationCard);\r\n if (consumersOnRecord.size > 0) {\r\n noConsumerWarning.style.display = 'none';\r\n noConsumerWarning.classList.remove('error');\r\n } else {\r\n noConsumerWarning.style.display = 'block';\r\n noConsumerWarning.classList.add('error');\r\n }\r\n setBtnStatusOfAddRoute();\r\n })\r\n break;\r\n }\r\n case \"miniRosterCancel\": {\r\n DOM.toggleNavLayout();\r\n roster2.clearSelectedConsumers();\r\n break;\r\n }\r\n }\r\n }\r\n function init(opts) {\r\n const { batched, routeId, date, routeName, locationName, addHocRoute, vehicleInspectionId } = opts\r\n selectedRouteId = routeId;\r\n selectedDate = date;\r\n selectedRouteName = routeName;\r\n selectedLocationName = locationName;\r\n isAddHoc = addHocRoute;\r\n vehicleInspection = vehicleInspectionId;\r\n deleteInspection = false;\r\n isBatched = batched;\r\n if (batched) {\r\n ro = true;\r\n console.warn(\"Route is batched. No changes can be made\")\r\n } else {\r\n ro = false;\r\n }\r\n if (isAddHoc) {\r\n console.info('This is an Add Hoc Route. Changes to route name and location are allowed')\r\n } else {\r\n console.info('This is not an Add Hoc Route. No changes to route name or location allowed')\r\n }\r\n consumersOnRecord.clear();\r\n consumersToRemove = [];\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n roster2.miniRosterinit(null, { hideDate: true });\r\n roster2.updateSelectedDate(selectedDate);\r\n setActiveModuleSectionAttribute(\"editRoute\");\r\n loadData(selectedRouteId)\r\n }\r\n return {\r\n init,\r\n handleActionNavEvent,\r\n consumerRemoveAction,\r\n updateConsumerData,\r\n retrieveConsumerData\r\n };\r\n})();\r\n","const TRANS_manageRoutes = (function () {\r\n let routesTable;\r\n let selectedRoutes, filteredRoutes;\r\n let filterOpts;\r\n let tripsStatus;\r\n let multiEditEnabled, multiSelRoutes, multiSelectBtn;\r\n let updateDriverBtn, updateVehicleBtn;\r\n\r\n let filterBtn;\r\n let filteredDateStart;\r\n let filteredDateStop;\r\n let selectedDriver;\r\n let selectedLocation;\r\n let selectedRouteStatus;\r\n let totalRouteCount;\r\n let selectedVehicle;\r\n\r\n let btnWrap;\r\n let filteredDateStartBtnWrap;\r\n let selectedDriverBtnWrap;\r\n let selectedLocationBtnWrap;\r\n let selectedRouteStatusBtnWrap;\r\n let selectedVehicleBtnWrap;\r\n let totalRouteCountBtnWrap;\r\n\r\n function buildPage(resetFilter) {\r\n\r\n const backButton = button.build({\r\n id: 'myRouteBackButton',\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_mainLanding.init();\r\n },\r\n });\r\n\r\n if (resetFilter) {\r\n filterOpts = {\r\n token: $.session.Token,\r\n serviceDateStart: UTIL.getTodaysDate(),\r\n serviceDateStop: UTIL.getTodaysDate(),\r\n personId: '%',\r\n locationId: '%',\r\n routeStatus: '%',\r\n };\r\n\r\n filteredDateStart = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(UTIL.getTodaysDate(), '/'));\r\n filteredDateStop = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(UTIL.getTodaysDate(), '/'));\r\n selectedDriver = '%';\r\n selectedLocation = '%';\r\n selectedRouteStatus = '%';\r\n totalRouteCount = '0';\r\n selectedVehicle = '%';\r\n }\r\n\r\n multiSelectBtn = button.build({\r\n id: 'multiSelect',\r\n text: 'Multi select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: function () {\r\n enableMultiEditRows();\r\n filterBtn.classList.toggle('disabled');\r\n backButton.classList.toggle('disabled');\r\n },\r\n });\r\n\r\n routesTable = table.build({\r\n tableId: 'manageRouteTable',\r\n headline: 'Routes',\r\n columnHeadings: [\r\n 'Date',\r\n 'Route',\r\n 'Driver',\r\n 'Vehicle',\r\n 'Location',\r\n 'Start Odometer',\r\n 'End Odometer',\r\n 'Start Time',\r\n 'Stop Time',\r\n ],\r\n });\r\n routesTable.setAttribute('data-multiselect-enabled', false);\r\n // * FILTERED BY DISPLAY\r\n const filteredByDisplay = buildFilteredBy();\r\n\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay);\r\n DOM.ACTIONCENTER.appendChild(routesTable);\r\n\r\n getData();\r\n }\r\n\r\n function populateTable() {\r\n const tableData = [];\r\n multiSelRoutes = new Map();\r\n filteredRoutes.forEach((val, key, map) => {\r\n const {\r\n batchNumber,\r\n dateOfService,\r\n tripId,\r\n tripName,\r\n vehicleInfoId,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n endTime,\r\n locationName,\r\n driverId,\r\n tripInspection,\r\n tripsCompletedId,\r\n } = val;\r\n\r\n const vehicleNumber = TRANS_mainLanding.vehicleLookup(vehicleInfoId).vehicleNumber;\r\n const driver = TRANS_mainLanding.driverLookup(driverId);\r\n const addHocRoute = tripId === '' ? true : false;\r\n const batched = batchNumber === '' ? false : true;\r\n\r\n const driverDisp = `${driver.Last_Name}, ${driver.First_Name}`;\r\n const readDate = UTIL.abbreviateDateYear(dateOfService.split(' ')[0]);\r\n const readStartTime = UTIL.formatTimeString(startTime);\r\n const readEndTime = UTIL.formatTimeString(endTime);\r\n const readOdoStart = odoStart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n const readOdoStop = odoStop.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n const status = tripsStatus.get(tripsCompletedId);\r\n\r\n const rowValues = [\r\n readDate,\r\n tripName,\r\n driverDisp,\r\n vehicleNumber,\r\n locationName,\r\n readOdoStart,\r\n readOdoStop,\r\n readStartTime,\r\n readEndTime,\r\n ];\r\n tableData.push({\r\n values: rowValues,\r\n id: key,\r\n attributes: [{ key: 'data-route-status', value: status }],\r\n onClick: evt => {\r\n if (multiEditEnabled) {\r\n if (batched) {\r\n console.info(`route ${key} is batched`);\r\n // evt.target.classList.add('batchedWarn');\r\n const batchWarnEl = document.createElement('span');\r\n batchWarnEl.innerText = 'ROUTE IS BATCHED';\r\n batchWarnEl.classList.add('batchedWarn');\r\n evt.target.appendChild(batchWarnEl);\r\n setTimeout(() => {\r\n // evt.target.classList.remove('batchedWarn');\r\n batchWarnEl.remove();\r\n }, 1000);\r\n } else {\r\n evt.target.classList.toggle('selected');\r\n multiSelRoutes.has(key) ? multiSelRoutes.delete(key) : multiSelRoutes.set(key, val);\r\n if (multiSelRoutes.size > 0) {\r\n updateDriverBtn.classList.remove('disabled');\r\n updateVehicleBtn.classList.remove('disabled');\r\n } else {\r\n updateDriverBtn.classList.add('disabled');\r\n updateVehicleBtn.classList.add('disabled');\r\n }\r\n }\r\n } else {\r\n TRANS_manageEditRoute.init({\r\n addHocRoute: addHocRoute,\r\n routeId: key,\r\n date: UTIL.formatDateToIso(dateOfService.split(' ')[0]),\r\n routeName: tripName,\r\n locationName: locationName,\r\n vehicleInspectionId: tripInspection,\r\n batched: batched,\r\n });\r\n }\r\n },\r\n });\r\n });\r\n table.populate(routesTable, tableData);\r\n }\r\n\r\n function buildFilteredBy() {\r\n let filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n const driverLookup = TRANS_mainLanding.driverLookup(filterOpts.personId);\r\n const locationLookup = TRANS_mainLanding.locationLookup(filterOpts.locationId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleFilteredLookup(filterOpts.vehicleId);\r\n\r\n filteredDateStart = UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(filterOpts.serviceDateStart, '/'),\r\n );\r\n filteredDateStop = UTIL.abbreviateDateYear(\r\n UTIL.formatDateFromIso(filterOpts.serviceDateStop, '/'),\r\n );\r\n selectedDriver = driverLookup\r\n ? `${driverLookup.Last_Name}, ${driverLookup.First_Name}`\r\n : 'All';\r\n selectedLocation = locationLookup ? locationLookup.Name : 'All';\r\n selectedVehicle = vehicleLookup ? vehicleLookup.vehicleNumber : 'All';\r\n totalRouteCount = filteredRoutes ? filteredRoutes.size : '0';\r\n\r\n\r\n switch (filterOpts.routeStatus) {\r\n case 'NS':\r\n selectedRouteStatus = 'Not Started';\r\n break;\r\n case 'IP':\r\n selectedRouteStatus = 'In Progress';\r\n break;\r\n case 'C':\r\n selectedRouteStatus = 'Completed';\r\n break;\r\n default:\r\n selectedRouteStatus = 'All';\r\n break;\r\n }\r\n\r\n if (document.getElementById('filteredDateStartBtn') != null)\r\n document.getElementById('filteredDateStartBtn').innerHTML = 'Date: ' + filteredDateStart + ' - ' + filteredDateStop;\r\n\r\n\r\n if (selectedDriver === '%' || selectedDriver === 'All') {\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n btnWrap.removeChild(selectedDriverBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n if (document.getElementById('selectedDriverBtn') != null)\r\n document.getElementById('selectedDriverBtn').innerHTML = 'Driver: ' + selectedDriver;\r\n }\r\n\r\n if (selectedLocation === '%' || selectedLocation === 'All') {\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n btnWrap.removeChild(selectedLocationBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n if (document.getElementById('selectedLocationBtn') != null)\r\n document.getElementById('selectedLocationBtn').innerHTML = 'Location: ' + selectedLocation;\r\n }\r\n\r\n if (selectedRouteStatus === '%' || selectedRouteStatus === 'All') {\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n btnWrap.removeChild(selectedRouteStatusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n if (document.getElementById('selectedRouteStatusBtn') != null)\r\n document.getElementById('selectedRouteStatusBtn').innerHTML = 'Route Status: ' + selectedRouteStatus;\r\n }\r\n\r\n if (selectedVehicle === '%' || selectedVehicle === 'All') {\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n btnWrap.removeChild(selectedVehicleBtnWrap);\r\n } else {\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n if (document.getElementById('selectedVehicleBtn') != null)\r\n document.getElementById('selectedVehicleBtn').innerHTML = 'Vehicle: ' + selectedVehicle;\r\n }\r\n\r\n if (document.getElementById('totalRouteCountBtn') != null)\r\n document.getElementById('totalRouteCountBtn').innerHTML = 'Total Route Count: ' + totalRouteCount;\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n TRANS_manageRoutesFilter.init(filterOpts, 'ALL');\r\n },\r\n });\r\n\r\n filteredDateStartBtn = button.build({\r\n id: 'filteredDateStartBtn',\r\n text: 'Date: ' + filteredDateStart + ' - ' + filteredDateStop,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'filteredDateStartBtn') },\r\n });\r\n\r\n selectedDriverBtn = button.build({\r\n id: 'selectedDriverBtn',\r\n text: 'Driver: ' + selectedDriver,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedDriverBtn') },\r\n });\r\n selectedDriverCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedDriverBtn') },\r\n });\r\n\r\n selectedLocationBtn = button.build({\r\n id: 'selectedLocationBtn',\r\n text: 'Location: ' + selectedLocation,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedLocationBtn') },\r\n });\r\n selectedLocationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedLocationBtn') },\r\n });\r\n\r\n selectedRouteStatusBtn = button.build({\r\n id: 'selectedRouteStatusBtn',\r\n text: 'Route Status: ' + selectedRouteStatus,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedRouteStatusBtn') },\r\n });\r\n selectedRouteStatusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedRouteStatusBtn') },\r\n });\r\n\r\n totalRouteCountBtn = button.build({\r\n id: 'totalRouteCountBtn',\r\n text: 'Total Route Count: ' + totalRouteCount,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n });\r\n\r\n selectedVehicleBtn = button.build({\r\n id: 'selectedVehicleBtn',\r\n text: 'Vehicle: ' + selectedVehicle,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_manageRoutesFilter.init(filterOpts, 'selectedVehicleBtn') },\r\n });\r\n selectedVehicleCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('selectedVehicleBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n filteredDateStartBtnWrap = document.createElement('div');\r\n filteredDateStartBtnWrap.classList.add('filterSelectionBtnWrap');\r\n filteredDateStartBtnWrap.appendChild(filteredDateStartBtn);\r\n btnWrap.appendChild(filteredDateStartBtnWrap);\r\n\r\n selectedDriverBtnWrap = document.createElement('div');\r\n selectedDriverBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedDriverBtnWrap.appendChild(selectedDriverBtn);\r\n selectedDriverBtnWrap.appendChild(selectedDriverCloseBtn);\r\n btnWrap.appendChild(selectedDriverBtnWrap);\r\n\r\n selectedLocationBtnWrap = document.createElement('div');\r\n selectedLocationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedLocationBtnWrap.appendChild(selectedLocationBtn);\r\n selectedLocationBtnWrap.appendChild(selectedLocationCloseBtn);\r\n btnWrap.appendChild(selectedLocationBtnWrap);\r\n\r\n selectedRouteStatusBtnWrap = document.createElement('div');\r\n selectedRouteStatusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedRouteStatusBtnWrap.appendChild(selectedRouteStatusBtn);\r\n selectedRouteStatusBtnWrap.appendChild(selectedRouteStatusCloseBtn);\r\n btnWrap.appendChild(selectedRouteStatusBtnWrap);\r\n\r\n totalRouteCountBtnWrap = document.createElement('div');\r\n totalRouteCountBtnWrap.classList.add('filterSelectionBtnWrap');\r\n totalRouteCountBtnWrap.appendChild(totalRouteCountBtn);\r\n btnWrap.appendChild(totalRouteCountBtnWrap);\r\n\r\n selectedVehicleBtnWrap = document.createElement('div');\r\n selectedVehicleBtnWrap.classList.add('filterSelectionBtnWrap');\r\n selectedVehicleBtnWrap.appendChild(selectedVehicleBtn);\r\n selectedVehicleBtnWrap.appendChild(selectedVehicleCloseBtn);\r\n btnWrap.appendChild(selectedVehicleBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'selectedLocationBtn') {\r\n filterOpts.locationId = '%';\r\n }\r\n if (closeFilter == 'selectedRouteStatusBtn') {\r\n filterOpts.routeStatus = '%';\r\n }\r\n if (closeFilter == 'selectedDriverBtn') {\r\n filterOpts.personId = '%';\r\n }\r\n if (closeFilter == 'selectedVehicleBtn') {\r\n filterOpts.vehicleId = '%';\r\n }\r\n\r\n getData();\r\n }\r\n\r\n async function getData() {\r\n table.clear(routesTable);\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(DOM.ACTIONCENTER, 'Gathering Routes...');\r\n const locationPermissions = TRANS_mainLanding.getLocations();\r\n const tmpRoutes = (await TRANS_manageRoutesAjax.getTrips(filterOpts)).getTripsResult;\r\n const routeMap = new Map();\r\n tmpRoutes.forEach(route => {\r\n if (locationPermissions.has(route.locationId)) {\r\n routeMap.set(route.tripsCompletedId, route);\r\n } else {\r\n console.info(\r\n `skipping route ${route.tripsCompletedId}. User does not have permission to the route's location.`,\r\n );\r\n }\r\n });\r\n filteredRoutes = routeMap;\r\n PROGRESS__ANYWHERE.SPINNER.hide(DOM.ACTIONCENTER);\r\n determineTripStatus();\r\n filterTripStatus();\r\n buildFilteredBy();\r\n populateTable();\r\n }\r\n\r\n function filterApply(opts) {\r\n filterOpts = opts;\r\n getData();\r\n }\r\n\r\n function filterTripStatus() {\r\n if (filterOpts.routeStatus === '%') return;\r\n tripsStatus;\r\n let tripsWithFilteredStatus = [...tripsStatus.entries()]\r\n .filter(({ 1: v }) => v === filterOpts.routeStatus)\r\n .map(([k]) => k);\r\n const tempFilteredRoutes = new Map();\r\n tripsWithFilteredStatus.forEach(tripId => {\r\n tempFilteredRoutes.set(tripId, filteredRoutes.get(tripId));\r\n });\r\n filteredRoutes = tempFilteredRoutes;\r\n }\r\n\r\n function enableMultiEditRows() {\r\n setupActionNav();\r\n multiEditEnabled = !multiEditEnabled;\r\n multiSelectBtn.classList.toggle('enabled');\r\n\r\n if (multiEditEnabled) {\r\n ACTION_NAV.show();\r\n routesTable.setAttribute('data-multiselect-enabled', true);\r\n } else {\r\n // clear out selected rows?\r\n ACTION_NAV.hide();\r\n multiSelRoutes.clear();\r\n routesTable.setAttribute('data-multiselect-enabled', false);\r\n }\r\n\r\n const highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n\r\n function setupActionNav() {\r\n updateDriverBtn = button.build({\r\n text: 'Update Driver',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n TRANS_updatePopup.init({ updateType: 'driver', selectedRoutes: multiSelRoutes });\r\n },\r\n });\r\n updateVehicleBtn = button.build({\r\n text: 'Update Vehicle',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n TRANS_updatePopup.init({ updateType: 'vehicle', selectedRoutes: multiSelRoutes });\r\n },\r\n });\r\n\r\n ACTION_NAV.clear();\r\n ACTION_NAV.populate([updateDriverBtn, updateVehicleBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n function massUpdateCallback() {\r\n const event = new MouseEvent('click', {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n multiSelectBtn.dispatchEvent(event);\r\n getData();\r\n }\r\n\r\n function determineTripStatus() {\r\n const tempStatusMap = new Map();\r\n filteredRoutes.forEach((val, key, map) => {\r\n const {\r\n endTime,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n tripType,\r\n totalConsumersOnRecord,\r\n consumerNoStatus,\r\n } = val;\r\n let status;\r\n\r\n // First break down into Miles or Trip. Miles and Trip have different definitions of being complete.\r\n switch (tripType) {\r\n case 'M':\r\n if (\r\n endTime === '' &&\r\n startTime === '' &&\r\n odoStart === '' &&\r\n odoStop === '' &&\r\n consumerNoStatus === totalConsumersOnRecord\r\n ) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (\r\n endTime !== '' &&\r\n startTime !== '' &&\r\n odoStart !== '' &&\r\n odoStop !== '' &&\r\n consumerNoStatus == 0\r\n ) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n case 'T':\r\n if (endTime === '' && startTime === '' && consumerNoStatus === totalConsumersOnRecord) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (endTime !== '' && startTime !== '' && consumerNoStatus == 0) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n\r\n default:\r\n console.error(\r\n 'There was a problem determining the completion status of the trip. No Miles/Trip Billing_Type found!',\r\n );\r\n status = 'NS';\r\n break;\r\n }\r\n\r\n tempStatusMap.set(key, status);\r\n });\r\n tripsStatus = tempStatusMap;\r\n }\r\n /** Manage Routes Init Function\r\n * @param {boolean} [resetFilter=True] False will not reset filter values\r\n */\r\n function init(resetFilter = true) {\r\n multiEditEnabled = false;\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('manageroute');\r\n buildPage(resetFilter);\r\n }\r\n return {\r\n init,\r\n filterApply,\r\n massUpdateCallback,\r\n };\r\n})();\r\n","const TRANS_manageRoutesAjax = (function() {\r\n\r\n function getTrips(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTrips/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function massUpdateDriverVehicle(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/massUpdateDriverVehicle/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function updateManageTripDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateManageTripDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction deleteTrip(tripsCompletedId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\ttripsCompletedId: tripsCompletedId,\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteTrip/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n return {\r\n getTrips,\r\n\t\tmassUpdateDriverVehicle,\r\n\t\tupdateManageTripDetails,\r\n\t\tdeleteTrip\r\n }\r\n})();","const TRANS_manageRoutesFilter = (function () {\r\n // Inputs\r\n let startDateInput, endDateInput, driverDropdown, locationDropdown, routeStatusDropdown, vehicleDropdown;\r\n let filterOpts;\r\n let IsShow;\r\n\r\n function createFilterElements() {\r\n startDateInput = input.build({\r\n id: 'myRouteDateStart',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: filterOpts.serviceDateStart,\r\n });\r\n endDateInput = input.build({\r\n id: 'myRouteDateStop',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: filterOpts.serviceDateStop,\r\n });\r\n driverDropdown = dropdown.build({\r\n dropdownId: 'driverDropdown',\r\n label: 'Driver',\r\n style: 'secondary',\r\n });\r\n locationDropdown = dropdown.build({\r\n dropdownId: 'locationDropdown',\r\n label: 'Location',\r\n style: 'secondary',\r\n });\r\n routeStatusDropdown = dropdown.build({\r\n dropdownId: 'routeStatusDropdown',\r\n label: 'Route Status',\r\n style: 'secondary',\r\n });\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: 'vehicleDropdown',\r\n label: 'Vehicle',\r\n style: 'secondary',\r\n });\r\n }\r\n\r\n function buildFilterPopup(params) {\r\n const dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap', 'btnWrap');\r\n\r\n const popup = POPUP.build({\r\n header: 'Filter',\r\n classNames: 'manageRoutesFilterPopup',\r\n });\r\n\r\n const applyButton = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'checkmark',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n TRANS_manageRoutes.filterApply(filterOpts);\r\n },\r\n });\r\n applyButton.style.width = '100%';\r\n\r\n dateWrap.appendChild(startDateInput);\r\n dateWrap.appendChild(endDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'filteredDateStartBtn')\r\n popup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'selectedDriverBtn')\r\n popup.appendChild(driverDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedLocationBtn')\r\n popup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedRouteStatusBtn')\r\n popup.appendChild(routeStatusDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'selectedVehicleBtn')\r\n popup.appendChild(vehicleDropdown);\r\n popup.appendChild(applyButton);\r\n POPUP.show(popup);\r\n\r\n populateDropdowns();\r\n eventListeners();\r\n }\r\n\r\n function populateDropdowns() {\r\n const driverDropdownData = [];\r\n const locationDropdownData = [];\r\n const vehicleDropdownData = [];\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n const locations = TRANS_mainLanding.getLocations();\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const routeStatusDropdownData = [\r\n {\r\n value: '%',\r\n text: 'All',\r\n },\r\n {\r\n value: 'C',\r\n text: 'Completed',\r\n },\r\n {\r\n value: 'IP',\r\n text: 'In Progress',\r\n },\r\n {\r\n value: 'NS',\r\n text: 'Not Started',\r\n },\r\n ];\r\n\r\n drivers.forEach((val, key, map) => {\r\n driverDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`,\r\n });\r\n });\r\n locations.forEach((val, key, map) => {\r\n locationDropdownData.push({\r\n value: key,\r\n text: `${val.Name}`,\r\n });\r\n });\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: `${val.vehicleNumber}`,\r\n });\r\n });\r\n driverDropdownData.unshift({ value: '%', text: 'All' });\r\n locationDropdownData.unshift({ value: '%', text: 'All' });\r\n vehicleDropdownData.unshift({ value: '%', text: 'All' });\r\n dropdown.populate(driverDropdown, driverDropdownData, filterOpts.personId);\r\n dropdown.populate(locationDropdown, locationDropdownData, filterOpts.locationId);\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, filterOpts.vehicleId);\r\n dropdown.populate(\r\n routeStatusDropdown,\r\n routeStatusDropdownData,\r\n filterOpts.routeStatus,\r\n );\r\n }\r\n\r\n function eventListeners() {\r\n startDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n filterOpts.serviceDateStart = event.target.value;\r\n } else {\r\n event.target.value = filterOpts.serviceDateStart;\r\n }\r\n });\r\n endDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n filterOpts.serviceDateStop = event.target.value;\r\n } else {\r\n event.target.value = filterOpts.serviceDateStop;\r\n }\r\n });\r\n driverDropdown.addEventListener('change', event => {\r\n filterOpts.personId = event.target.value;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n filterOpts.locationId = event.target.value;\r\n });\r\n vehicleDropdown.addEventListener('change', event => {\r\n filterOpts.vehicleId = event.target.value;\r\n });\r\n routeStatusDropdown.addEventListener('change', event => {\r\n filterOpts.routeStatus = event.target.value;\r\n });\r\n }\r\n\r\n function isValidDate(d) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n function init(opts, IsFilterShow) {\r\n filterOpts = opts;\r\n IsShow = IsFilterShow; \r\n createFilterElements();\r\n buildFilterPopup();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_updatePopup = (function() {\r\n\r\n let updateDropdown, currentDisplay, saveBtn;\r\n let updateType, routes;\r\n\r\n function createPopupElements() {\r\n switch (updateType) {\r\n case 'Driver':\r\n updateDropdown = dropdown.build({\r\n dropdownId: 'updateDropdown',\r\n label: 'Update selected routes driver to:',\r\n style: 'secondary'\r\n })\r\n break;\r\n case 'Vehicle':\r\n updateDropdown = dropdown.build({\r\n dropdownId: 'updateDropdown',\r\n label: 'Update selected routes vehicle to:',\r\n style: 'secondary'\r\n })\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n function createCurrentDisplay() {\r\n currentDisplay = document.createElement('div');\r\n currentDisplay.classList.add('transCurrentDisplay');\r\n const updateDescription = document.createElement('h4');\r\n updateDescription.innerText = updateType === 'Driver' ? \r\n 'Selected Routes, and current drivers assigned:' :\r\n 'Selected Routes, and current vehicles assigned:';\r\n updateDescription.style.paddingBottom = '10px';\r\n currentDisplay.appendChild(updateDescription)\r\n routes.forEach((val, key, map) => {\r\n const driverLookup = TRANS_mainLanding.driverLookup(val.driverId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleLookup(val.vehicleInfoId)\r\n\r\n const routeDisp = document.createElement('p');\r\n const driverDisp = `${driverLookup.Last_Name}, ${driverLookup.First_Name}`;\r\n const vehicleDisp = `${vehicleLookup.vehicleNumber}`;\r\n routeDisp.innerHTML = `${val.tripName}: ${updateType === 'Driver' ? driverDisp : vehicleDisp}`\r\n currentDisplay.appendChild(routeDisp)\r\n })\r\n }\r\n\r\n function buildFilterPopup() {\r\n const popup = POPUP.build({\r\n header: `Update ${updateType}`,\r\n classNames: 'updateRoutePopup'\r\n })\r\n\r\n saveBtn = button.build({\r\n text: 'SAVE',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n classNames: 'disabled',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n saveData()\r\n }\r\n });\r\n saveBtn.style.width = '100%'\r\n popup.appendChild(currentDisplay)\r\n popup.appendChild(updateDropdown)\r\n popup.appendChild(saveBtn);\r\n POPUP.show(popup)\r\n\r\n populateDropdown();\r\n eventListener();\r\n }\r\n\r\n function eventListener() {\r\n updateDropdown.addEventListener('change', event => {\r\n if (event.target.value === \"\") {\r\n saveBtn.classList.add(\"disabled\")\r\n } else {\r\n saveBtn.classList.remove(\"disabled\")\r\n }\r\n })\r\n }\r\n\r\n function populateDropdown(params) {\r\n const dropdownData = []\r\n switch (updateType) {\r\n case 'Driver':\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n drivers.forEach((val,key,map) => {\r\n dropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n break;\r\n case 'Vehicle':\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n vehicles.forEach((val,key,map) => {\r\n dropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n break;\r\n default:\r\n break;\r\n }\r\n dropdownData.unshift({ value: '', text: ''});\r\n dropdown.populate(updateDropdown, dropdownData);\r\n }\r\n\r\n async function saveData() {\r\n pendingSave.show('Updating Routes...')\r\n try {\r\n const routeIdConcat = Array.from(routes.keys()).join(\"|\");\r\n const newUpdateVal = updateDropdown.firstChild.options[updateDropdown.firstChild.selectedIndex].value;\r\n const updateData = {\r\n token: $.session.Token,\r\n method: updateType,\r\n routeIdString: routeIdConcat,\r\n updateVal: newUpdateVal\r\n }\r\n await TRANS_manageRoutesAjax.massUpdateDriverVehicle(updateData);\r\n pendingSave.fulfill('Routes have been updated');\r\n setTimeout(() => {\r\n successfulSave.hide();\r\n TRANS_manageRoutes.massUpdateCallback();\r\n }, 3000)\r\n } catch (error) {\r\n pendingSave.reject('Failed to update routes. Please try again.')\r\n console.warn('Error saving updates');\r\n console.error(error);\r\n setTimeout(() => failSave.hide(), 3000)\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {object} opts \r\n * @param {string} opts.updateType driver or vehicle\r\n * @param {string} opts.currentValue the current driver or vehicle\r\n * @param {array} opts.selectedRoutes Routes that are selected from the route dropdown\r\n */\r\n function init(opts) {\r\n updateType = UTIL.capitalize(opts.updateType);\r\n routes = opts.selectedRoutes;\r\n createPopupElements();\r\n createCurrentDisplay()\r\n buildFilterPopup()\r\n }\r\n return {\r\n init\r\n }\r\n})();","const TRANS_myRoute = (function () {\r\n let routeSection, dateInput, warningDisp;\r\n let selectedDate, trips, tripsStatus;\r\n\r\n function buildPage() {\r\n ////////////\r\n // TOP SECTION\r\n const topSection = document.createElement('div');\r\n const backButton = button.build({\r\n id: 'myRouteBackButton',\r\n text: 'Back',\r\n style: 'secondary',\r\n type: 'text',\r\n icon: 'arrowBack',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_mainLanding.init();\r\n },\r\n });\r\n dateInput = input.build({\r\n id: 'myRouteDate',\r\n label: 'Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: UTIL.getTodaysDate(),\r\n attributes: [{ max: UTIL.getTodaysDate() }],\r\n });\r\n // Warning display for 'no routes, or future date'\r\n warningDisp = document.createElement('p');\r\n warningDisp.style.color = '#DB162f';\r\n warningDisp.style.textAlign = 'center';\r\n warningDisp.style.marginBottom = '10px';\r\n // set selected date to today:\r\n selectedDate = UTIL.getTodaysDate();\r\n topSection.appendChild(backButton);\r\n topSection.appendChild(dateInput);\r\n topSection.appendChild(warningDisp);\r\n /////////////////\r\n // Route Button section\r\n routeSection = document.createElement('div');\r\n routeSection.classList.add('myRouteButtonSection');\r\n\r\n DOM.ACTIONCENTER.appendChild(topSection);\r\n DOM.ACTIONCENTER.appendChild(routeSection);\r\n eventListeners();\r\n }\r\n\r\n function buildRouteBtn(route) {\r\n const { tripName, tripsCompletedId, tripInspection } = route;\r\n const routeBtn = document.createElement('div');\r\n const status = tripsStatus.get(tripsCompletedId);\r\n let statusText;\r\n switch (status) {\r\n case 'C':\r\n statusText = 'Complete';\r\n break;\r\n case 'IP':\r\n statusText = 'In Progress';\r\n break;\r\n case 'NS':\r\n statusText = 'Not Started';\r\n break;\r\n default:\r\n break;\r\n }\r\n const inspIcon = tripInspection !== '' ? icons.checkmark : icons.close;\r\n const inspColor = tripInspection !== '' ? 'white' : 'red';\r\n routeBtn.classList.add('routeBtn', `status__${status}`);\r\n routeBtn.setAttribute('id', `route-${tripsCompletedId}`);\r\n routeBtn.innerHTML = `\r\n
    ${tripName}
    \r\n
    ${statusText}
    \r\n
    ${inspIcon} Inspection
    \r\n\r\n `;\r\n routeBtn.addEventListener('click', () => {\r\n TRANS_selectedRoutePopup.init(route, selectedDate);\r\n });\r\n routeSection.appendChild(routeBtn);\r\n }\r\n\r\n function eventListeners() {\r\n dateInput.addEventListener('input', event => {\r\n selectedDate = event.target.value;\r\n if (Date.parse(event.target.value) > UTIL.getTodaysDate(true)) {\r\n warningDisp.innerText = 'Notice: Future dates are read only';\r\n } else {\r\n warningDisp.innerText = '';\r\n }\r\n getData(event.target.value);\r\n });\r\n }\r\n\r\n async function getData(date) {\r\n routeSection.innerHTML = '';\r\n PROGRESS__ANYWHERE.init();\r\n PROGRESS__ANYWHERE.SPINNER.show(routeSection, 'Gathering Trips...');\r\n try {\r\n const tripsResp = (await TRANS_myRotueAjax.getTrips(date)).getTripsResult;\r\n let tempTrips = new Map();\r\n tripsResp.forEach(trip => {\r\n tempTrips.set(trip.tripsCompletedId, trip);\r\n });\r\n trips = tempTrips;\r\n determineTripStatus();\r\n routeSection.innerHTML = '';\r\n if (trips.size === 0) {\r\n warningDisp.innerText = 'No routes have been found for this date';\r\n } else {\r\n for (const [key, value] of trips) {\r\n buildRouteBtn(value);\r\n }\r\n }\r\n } catch (error) {\r\n PROGRESS__ANYWHERE.SPINNER.hide(routeSection);\r\n console.error(error);\r\n console.error('Error gathering routes. Check for valid date, and users permissions');\r\n }\r\n }\r\n\r\n function determineTripStatus() {\r\n const tempStatusMap = new Map();\r\n trips.forEach((val, key, map) => {\r\n const {\r\n endTime,\r\n odoStart,\r\n odoStop,\r\n startTime,\r\n tripType,\r\n totalConsumersOnRecord,\r\n consumerNoStatus,\r\n } = val;\r\n let status;\r\n\r\n // First break down into Miles or Trip. Miles and Trip have different definitions of being complete.\r\n switch (tripType) {\r\n case 'M':\r\n if (\r\n endTime === '' &&\r\n startTime === '' &&\r\n odoStart === '' &&\r\n odoStop === '' &&\r\n consumerNoStatus === totalConsumersOnRecord\r\n ) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (\r\n endTime !== '' &&\r\n startTime !== '' &&\r\n odoStart !== '' &&\r\n odoStop !== '' &&\r\n consumerNoStatus == 0\r\n ) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n case 'T':\r\n if (endTime === '' && startTime === '' && consumerNoStatus === totalConsumersOnRecord) {\r\n // Nothing has been completed, so the trip has not started = NS\r\n status = 'NS';\r\n } else if (endTime !== '' && startTime !== '' && consumerNoStatus == 0) {\r\n // Everything has been completed, so the trip is complete = C\r\n status = 'C';\r\n } else {\r\n // If something is completed... but not everything, its still in progress = IP\r\n status = 'IP';\r\n }\r\n break;\r\n\r\n default:\r\n console.error(\r\n 'There was a problem determining the completion status of the trip. No Miles/Trip Billing_Type found!',\r\n );\r\n status = 'NS';\r\n break;\r\n }\r\n\r\n tempStatusMap.set(key, status);\r\n });\r\n tripsStatus = tempStatusMap;\r\n }\r\n\r\n function init() {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute('myroute');\r\n\r\n buildPage();\r\n getData(UTIL.getTodaysDate());\r\n }\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_myRotueAjax = (function() {\r\n\r\n function getTrips(date) {\r\n const data = {\r\n token: $.session.Token,\r\n serviceDateStart: date,\r\n serviceDateStop: date,\r\n personId: $.session.PeopleId,\r\n locationId: '%'\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getTrips/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n return {\r\n getTrips\r\n }\r\n})();","const TRANS_selectedRoutePopup = (function() {\r\n // let routeId, routeName;\r\n\r\n function buildPopup(opts, selectedDate) {\r\n const { tripsCompletedId, tripName, vehicleInfoId, tripInspection, tripInspectionEnteredBy, inspectionTime, inspectionNote, batchNumber } = opts;\r\n\r\n const batched = batchNumber === '' ? false : true;\r\n let futureDate = false\r\n if (Date.parse(selectedDate) > UTIL.getTodaysDate(true)) {\r\n futureDate = true\r\n }\r\n let ro = batched || futureDate ? true : false;\r\n\r\n const warnDisp = document.createElement('h4');\r\n if (batched) {\r\n warnDisp.innerText = 'Selected Route is Batched.';\r\n } else if (futureDate) {\r\n warnDisp.innerHTML = 'The date you have selected is a future date.
    Vehicle Inspections can not be created for future dates.';\r\n }\r\n warnDisp.style.color = '#DB162f';\r\n warnDisp.style.textAlign = 'center';\r\n\r\n const popup = POPUP.build({\r\n id: `route-${vehicleInfoId}`,\r\n header: tripName,\r\n classNames: 'selectedRoutePopup'\r\n });\r\n const documentBtn = button.build({\r\n id: `document-${vehicleInfoId}`,\r\n text: batched || futureDate || $.session.transportationUpdate === false ? 'Review Route' : 'Document',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'docBtn',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n TRANS_routeDocumentation.init({date: selectedDate, routeID: tripsCompletedId, routeName: tripName, vehicleInfoId: vehicleInfoId, readOnly: ro})\r\n }\r\n });\r\n const vehicleInspBtn = button.build({\r\n id: `inspection-${vehicleInfoId}`,\r\n text: tripInspection !== '' ? 'Review Vehicle Inspection' : 'Vehicle Inspection',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n if (tripInspection === '') {\r\n // If there is no inspection, add a new one\r\n TRANS_vehicleInspection.init({enterPath: 'routeSelection', vId: vehicleInfoId, rId: tripsCompletedId, routeName: tripName, routeDate: selectedDate})\r\n } else {\r\n // Else, review the one that exists\r\n TRANS_vehicleInspection.init({enterPath: 'routeSelection', vId: vehicleInfoId, rId: tripsCompletedId, routeName: tripName, edit: true, batchedRoute: batched,\r\n editData: {\r\n inspectionId: tripInspection, \r\n enteredById: tripInspectionEnteredBy,\r\n inspectionDate: UTIL.formatDateFromIso(selectedDate),\r\n inspectionTime: inspectionTime,\r\n note: inspectionNote\r\n },\r\n routeDate: selectedDate})\r\n }\r\n }\r\n });\r\n if (futureDate || (batched && tripInspection === '') || ($.session.transportationUpdate === false && tripInspection === '')) {\r\n // Vehicle inspections can't be created for future dates Or batched routes or they do not have Update permission\r\n // except if there is already a inspection, then they can review it.\r\n vehicleInspBtn.classList.add('disabled')\r\n }\r\n documentBtn.style.width = '100%'\r\n vehicleInspBtn.style.width = '100%'\r\n if (batched || futureDate) popup.appendChild(warnDisp)\r\n popup.appendChild(documentBtn)\r\n popup.appendChild(vehicleInspBtn);\r\n POPUP.show(popup)\r\n }\r\n\r\n /**\r\n * \r\n * @param {object} opts \r\n * @param {string} opts.tripsCompletedId Selected Route Id\r\n * @param {string} opts.tripName Name of selected route\r\n * @param {string} opts.vehicleInfoId Vehicle Info Id for the route\r\n * @param {string} opts.tripInspection Inspection tied to route, or ''\r\n * @param {string} date Date they have selected\r\n */\r\n function init(opts, date) {\r\n buildPopup(opts, date)\r\n }\r\n return {\r\n init\r\n }\r\n})();","const TRANS_vehicleInspectionLanding = (function() {\r\n\r\n function loadVehicleInspectionLanding(params) {\r\n const backButton = button.build({\r\n id: \"inspectionLandingBackButton\",\r\n text: \"Back\",\r\n style: \"secondary\",\r\n type: \"text\",\r\n icon: \"arrowBack\",\r\n callback: () => TRANS_mainLanding.init()\r\n });\r\n const newInspectionBtn = button.build({\r\n text: 'COMPLETE AN INSPECTION',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_vehicleInspection.init({enterPath: 'inspectionLanding'})\r\n })\r\n const reviewInspectionsBtn = button.build({\r\n text: 'REVIEW INSPECTIONS',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => TRANS_inspectionReview.init()\r\n })\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('landingBtnWrap');\r\n if ($.session.transportationUpdate === true) btnWrap.appendChild(newInspectionBtn);\r\n btnWrap.appendChild(reviewInspectionsBtn);\r\n DOM.ACTIONCENTER.appendChild(backButton);\r\n DOM.ACTIONCENTER.appendChild(btnWrap);\r\n }\r\n\r\n \r\n function init() {\r\n setActiveModuleSectionAttribute(null);\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n const miniRosterBtn = document.querySelector('.consumerListBtn');\r\n if (miniRosterBtn) {\r\n miniRosterBtn.remove();\r\n DOM.toggleNavLayout();\r\n }\r\n loadVehicleInspectionLanding()\r\n }\r\n\r\n return {\r\n init,\r\n }\r\n })();","const TRANS_reviewInspectionFilter = (function () {\r\n // Inputs\r\n let fromDateInput, toDateInput, vehicleDropdown, enteredByDropdown;\r\n let filterOpts\r\n let IsShow;\r\n let applyButton; \r\n function createFilterElements() {\r\n\r\n fromDateInput = input.build({\r\n id: \"inspectionFromDate\",\r\n label: \"From\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: filterOpts.fromDate\r\n })\r\n toDateInput = input.build({\r\n id: \"inspectionToDate\",\r\n label: \"To\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: filterOpts.toDate\r\n })\r\n vehicleDropdown = dropdown.build({\r\n dropdownId: 'vehicleDropdown',\r\n label: 'Vehicle',\r\n style: 'secondary',\r\n value: filterOpts.vehicleInfoId\r\n });\r\n enteredByDropdown = dropdown.build({\r\n dropdownId: 'enteredByDropdown',\r\n label: 'Entered By',\r\n style: 'secondary',\r\n value: filterOpts.userId\r\n });\r\n }\r\n\r\n function buildFilterPopup(params) {\r\n const dateWrap = document.createElement('div')\r\n dateWrap.classList.add('dateWrap', 'btnWrap')\r\n\r\n const popup = POPUP.build({\r\n header: 'Filter',\r\n classNames: 'vehicleInspectionFilterPopup'\r\n })\r\n\r\n applyButton = button.build({\r\n text: 'APPLY',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n POPUP.hide(popup)\r\n TRANS_inspectionReview.filterApply(filterOpts)\r\n }\r\n });\r\n applyButton.style.width = '100%';\r\n dateWrap.appendChild(fromDateInput);\r\n dateWrap.appendChild(toDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'fromDateBtn')\r\n popup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'vehicleNumberBtn')\r\n popup.appendChild(vehicleDropdown)\r\n if (IsShow == 'ALL' || IsShow == 'enteredByBtn')\r\n popup.appendChild(enteredByDropdown)\r\n popup.appendChild(applyButton);\r\n POPUP.show(popup)\r\n\r\n eventListeners();\r\n populateDropdowns();\r\n }\r\n\r\n function populateDropdowns() {\r\n const vehicleDropdownData = []\r\n const enteredByDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n const drivers = TRANS_mainLanding.getAllDrivers();\r\n\r\n vehicles.forEach((val, key, map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n drivers.forEach((val, key, map) => {\r\n enteredByDropdownData.push({\r\n value: key,\r\n text: `${val.Last_Name}, ${val.First_Name}`\r\n });\r\n });\r\n\r\n vehicleDropdownData.unshift({ value: '%', text: 'All' })\r\n enteredByDropdownData.unshift({ value: '%', text: 'All' })\r\n\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, filterOpts.vehicleInfoId)\r\n dropdown.populate(enteredByDropdown, enteredByDropdownData, filterOpts.userId)\r\n }\r\n\r\n function eventListeners() {\r\n fromDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n if (UTIL.checkValidDateRange(event.target.value, toDateInput.firstElementChild.value)) {\r\n updateDates();\r\n } else {\r\n console.info('invalid date range');\r\n fromDateInput.classList.add('error');\r\n applyButton.classList.add('disabled');\r\n }\r\n } else {\r\n event.target.value = filterOpts.fromDate\r\n }\r\n\r\n })\r\n toDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n if (UTIL.checkValidDateRange(fromDateInput.firstElementChild.value, event.target.value)) {\r\n updateDates();\r\n } else {\r\n console.info('invalid date range');\r\n toDateInput.classList.add('error');\r\n applyButton.classList.add('disabled');\r\n }\r\n } else {\r\n event.target.value = filterOpts.toDate\r\n }\r\n })\r\n vehicleDropdown.addEventListener('change', event => {\r\n filterOpts.vehicleInfoId = event.target.value;\r\n })\r\n enteredByDropdown.addEventListener('change', event => {\r\n filterOpts.userId = event.target.value;\r\n })\r\n\r\n function isValidDate(d) {\r\n d = new Date(d)\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n function updateDates() {\r\n filterOpts.fromDate = fromDateInput.firstElementChild.value;\r\n filterOpts.toDate = toDateInput.firstElementChild.value;\r\n fromDateInput.classList.remove('error');\r\n toDateInput.classList.remove('error');\r\n applyButton.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function init(opts, IsFilterShow) {\r\n filterOpts = opts;\r\n IsShow = IsFilterShow;\r\n createFilterElements();\r\n buildFilterPopup()\r\n }\r\n\r\n return {\r\n init\r\n }\r\n})();","const TRANS_inspectionReview = (function () {\r\n\r\n let inspectionTable, filterOpts;\r\n\r\n let fromDate;\r\n let toDate;\r\n let enteredBy;\r\n let vehicleNumber;\r\n let today;\r\n let defaultFromDate;\r\n\r\n let btnWrap;\r\n let fromDateBtnWrap;\r\n let vehicleNumberBtnWrap;\r\n let enteredByBtnWrap;\r\n\r\n\r\n function buildPage(resetFilter) {\r\n\r\n today = new Date();\r\n defaultFromDate = new Date();\r\n defaultFromDate.setDate(defaultFromDate.getDate() - 7);\r\n\r\n if (resetFilter) {\r\n filterOpts = {\r\n token: $.session.Token,\r\n fromDate: UTIL.formatDateFromDateObj(defaultFromDate),\r\n toDate: UTIL.formatDateFromDateObj(today),\r\n vehicleInfoId: '%',\r\n userId: '%',\r\n }\r\n }\r\n\r\n const backButton = button.build({\r\n id: \"myRouteBackButton\",\r\n text: \"Back\",\r\n style: \"secondary\",\r\n type: \"text\",\r\n icon: \"arrowBack\",\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n TRANS_vehicleInspectionLanding.init();\r\n },\r\n });\r\n\r\n // FILTERED BY DISPLAY //\r\n const filteredByDisplay = buildFilteredBy();\r\n inspectionTable = table.build({\r\n tableId: \"vehicleInspectionTable\",\r\n headline: \"Completed Inspections\",\r\n columnHeadings: [\"Vehicle Number\", \"Date\", \"Time\", \"Last Update\", \"Route\"],\r\n })\r\n\r\n DOM.ACTIONCENTER.appendChild(backButton)\r\n DOM.ACTIONCENTER.appendChild(filteredByDisplay)\r\n DOM.ACTIONCENTER.appendChild(inspectionTable)\r\n\r\n getData(filterOpts)\r\n }\r\n\r\n async function getData(opts) {\r\n table.clear(inspectionTable);\r\n PROGRESS__ANYWHERE.init()\r\n PROGRESS__ANYWHERE.SPINNER.show(DOM.ACTIONCENTER, \"Gathering Vehicle Inspections...\");\r\n const tmpInsp = (await TRANS_vehicleInspectionAjax.getCompletedInspections(opts)).getCompletedInspectionsResult;\r\n const inspMap = new Map()\r\n tmpInsp.forEach(insp => {\r\n inspMap.set(insp.inspectionId, insp)\r\n })\r\n PROGRESS__ANYWHERE.SPINNER.hide(DOM.ACTIONCENTER)\r\n populateTable(inspMap)\r\n }\r\n\r\n function populateTable(inspections) {\r\n const tableData = [];\r\n inspections.forEach((val, key, map) => {\r\n const { enteredById, inspectionDate, inspectionTime, routeName, vehicleNumber } = val;\r\n const readDate = UTIL.abbreviateDateYear(inspectionDate);\r\n const readTime = UTIL.formatTimeString(inspectionTime);\r\n const values = [vehicleNumber, readDate, readTime, enteredById, routeName]\r\n tableData.push({\r\n values: values,\r\n id: key,\r\n onClick: () => {\r\n TRANS_vehicleInspection.init({ enterPath: 'reviewInspections', vId: val.vehicleId, rId: val.routeId, edit: true, editData: val, routeName: routeName });\r\n }\r\n })\r\n });\r\n table.populate(inspectionTable, tableData)\r\n }\r\n\r\n function filterApply(opts) {\r\n filterOpts = opts;\r\n buildFilteredBy();\r\n getData(filterOpts);\r\n }\r\n\r\n function buildFilteredBy() {\r\n let filteredBy = document.querySelector(\".filteredByData\");\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement(\"div\");\r\n filteredBy.classList.add(\"filteredByData\");\r\n filterButtonSet()\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n const driverLookup = TRANS_mainLanding.driverLookup(filterOpts.userId);\r\n const vehicleLookup = TRANS_mainLanding.vehicleLookup(filterOpts.vehicleInfoId);\r\n\r\n fromDate = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.fromDate, '/'));\r\n toDate = UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.toDate, '/'));\r\n enteredBy = driverLookup ? `${driverLookup.Last_Name}, ${driverLookup.First_Name}` : 'All';\r\n vehicleNumber = vehicleLookup !== 'Non-Existant Vehicle!' ? `${vehicleLookup.vehicleNumber}` : 'All';\r\n\r\n\r\n if (document.getElementById('fromDateBtn') != null)\r\n document.getElementById('fromDateBtn').innerHTML = 'Inspection Dates: ' + fromDate + ' - ' + toDate;\r\n\r\n if (vehicleNumber === '%' || vehicleNumber === 'All') {\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n btnWrap.removeChild(vehicleNumberBtnWrap);\r\n } else {\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n if (document.getElementById('vehicleNumberBtn') != null)\r\n document.getElementById('vehicleNumberBtn').innerHTML = 'Vehicle: ' + vehicleNumber;\r\n }\r\n\r\n if (enteredBy === '%' || enteredBy === 'All') {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n btnWrap.removeChild(enteredByBtnWrap);\r\n } else {\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n if (document.getElementById('enteredByBtn') != null)\r\n document.getElementById('enteredByBtn').innerHTML = 'Entered By: ' + enteredBy;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'filter',\r\n classNames: 'filterBtnNew',\r\n callback: () => {\r\n TRANS_reviewInspectionFilter.init(filterOpts, 'ALL');\r\n },\r\n });\r\n\r\n fromDateBtn = button.build({\r\n id: 'fromDateBtn',\r\n text: 'Inspection Dates: ' + UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.fromDate, '/')) + ' - ' + UTIL.abbreviateDateYear(UTIL.formatDateFromIso(filterOpts.toDate, '/')),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'fromDateBtn') },\r\n });\r\n\r\n vehicleNumberBtn = button.build({\r\n id: 'vehicleNumberBtn',\r\n text: 'Vehicle: ' + vehicleNumber,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'vehicleNumberBtn') },\r\n });\r\n vehicleNumberCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('vehicleNumberBtn') },\r\n });\r\n\r\n enteredByBtn = button.build({\r\n id: 'enteredByBtn',\r\n text: 'Entered By: ' + enteredBy,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { TRANS_reviewInspectionFilter.init(filterOpts, 'enteredByBtn') },\r\n });\r\n enteredByCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('enteredByBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n fromDateBtnWrap = document.createElement('div');\r\n fromDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n fromDateBtnWrap.appendChild(fromDateBtn);\r\n btnWrap.appendChild(fromDateBtnWrap);\r\n\r\n vehicleNumberBtnWrap = document.createElement('div');\r\n vehicleNumberBtnWrap.classList.add('filterSelectionBtnWrap');\r\n vehicleNumberBtnWrap.appendChild(vehicleNumberBtn);\r\n vehicleNumberBtnWrap.appendChild(vehicleNumberCloseBtn);\r\n btnWrap.appendChild(vehicleNumberBtnWrap);\r\n\r\n enteredByBtnWrap = document.createElement('div');\r\n enteredByBtnWrap.classList.add('filterSelectionBtnWrap');\r\n enteredByBtnWrap.appendChild(enteredByBtn);\r\n enteredByBtnWrap.appendChild(enteredByCloseBtn);\r\n btnWrap.appendChild(enteredByBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'enteredByBtn') {\r\n filterOpts.userId = '%';\r\n }\r\n if (closeFilter == 'vehicleNumberBtn') {\r\n filterOpts.vehicleInfoId = '%';\r\n }\r\n buildFilteredBy();\r\n getData(filterOpts);\r\n }\r\n /** Vehicle Inspection Init Function\r\n * @param {boolean} [resetFilter=True] False will not reset filter values\r\n */\r\n function init(resetFilter = true) {\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"reviewinspections\");\r\n buildPage(resetFilter);\r\n }\r\n return {\r\n init,\r\n filterApply\r\n }\r\n})();","const TRANS_vehicleInspection = (function () {\r\n let selectedVehicle, selectedRoute, selectedRouteName, selectedRouteDate, saveBtn;\r\n let dateInput, timeInput, noteInput, vehicleDropdown, inspectionQuestionBody;\r\n let isEdit, questionResponses, vehicleInspectionId, readOnly, enteredByOtherUser, inspectionEnterPath, routeInspection;\r\n let currentlySelectedVehicle;\r\n let allQuestionsAnswered = true;\r\n\r\n function buildPage(editData) {\r\n const inspectionDate = isEdit ? \r\n UTIL.formatDateToIso(editData.inspectionDate.split(' ')[0]) :\r\n routeInspection ? \r\n selectedRouteDate : UTIL.getTodaysDate();\r\n const inspectionTIme = isEdit ? editData.inspectionTime : UTIL.getCurrentTime();\r\n const inspectionNote = isEdit ? editData.note : '';\r\n\r\n // inspection Info Card//\r\n const inspectionInfoCard = document.createElement(\"div\");\r\n inspectionInfoCard.classList.add(\"card\");\r\n const inspectionInfoBody = document.createElement(\"div\");\r\n inspectionInfoBody.classList.add(\"card__body\");\r\n inspectionInfoCard.innerHTML = `\r\n
    Inspection Information
    \r\n `;\r\n inspectionInfoCard.appendChild(inspectionInfoBody)\r\n\r\n //let saveBtn\r\n let deleteBtn\r\n\r\n if (!readOnly) {\r\n saveBtn = button.build({\r\n id: 'saveInspectionBtn',\r\n text: isEdit ? 'Update' : 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'save',\r\n callback: () => {saveInspection()}\r\n });\r\n if (isEdit) {\r\n deleteBtn = button.build({\r\n id: 'deleteInspectionBtn',\r\n classNames: 'trans_DeleteBtn',\r\n text: 'Delete',\r\n style: 'secondary',\r\n type: 'contained',\r\n icon: 'delete',\r\n callback: () => {deleteInspection()}\r\n });\r\n }\r\n }\r\n\r\n const cancelBtn = button.build({\r\n id: 'cancelInspectionBtn',\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n icon: 'close',\r\n callback: () => {\r\n setActiveModuleSectionAttribute(null);\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n }\r\n }\r\n });\r\n dateInput = input.build({\r\n id: \"vehicleInspectionDate\",\r\n label: \"Date\",\r\n type: \"date\",\r\n style: \"secondary\",\r\n value: inspectionDate,\r\n readonly: readOnly || routeInspection,\r\n attributes: [{ max: UTIL.getTodaysDate() }],\r\n });\r\n timeInput = input.build({\r\n id: \"vehicleInspectionTime\",\r\n label: \"Time\",\r\n type: \"time\",\r\n value: inspectionTIme,\r\n readonly: readOnly,\r\n style: \"secondary\",\r\n });\r\n vehicleDropdown = dropdown.build({\r\n id: 'vehicleDropdown',\r\n dropdownId: 'vehicleDropdown',\r\n readonly: readOnly || routeInspection,\r\n label: 'Vehicle'\r\n });\r\n noteInput = input.build({\r\n id: 'vehicleInspectionNote',\r\n classNames: ['autosize'],\r\n label: 'Note',\r\n type: 'textarea',\r\n style: 'secondary',\r\n value: inspectionNote,\r\n readonly: readOnly\r\n });\r\n // Grid Columns\r\n const col1 = document.createElement('div');\r\n col1.classList.add('col-1')\r\n const col2 = document.createElement('div');\r\n col2.classList.add('col-2')\r\n // Route Name Display\r\n const routeNameDisp = document.createElement('h3');\r\n routeNameDisp.classList.add('routeNameDisp')\r\n routeNameDisp.innerHTML = `This inspection is for the route: ${selectedRouteName}`\r\n // Entered By Other User Display\r\n const otherUserDisp = document.createElement('h4');\r\n otherUserDisp.classList.add('otherUserDisp')\r\n otherUserDisp.innerHTML = `This inspection was entered by another user. No changes can be made.`\r\n // Date and time Wrap //\r\n const dtWrap = document.createElement(\"div\");\r\n dtWrap.classList.add(\"vehicleInspectionDTWrap\");\r\n dtWrap.appendChild(dateInput);\r\n dtWrap.appendChild(timeInput);\r\n // Save/Cancel button wrap //\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n if (saveBtn) btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n // Creating inspection item card //\r\n const inspectionQuestionCard = document.createElement(\"div\");\r\n const inspectionQuestionHeader = document.createElement(\"div\");\r\n inspectionQuestionBody = document.createElement(\"div\");\r\n inspectionQuestionBody.classList.add(\"card__body\");\r\n inspectionQuestionBody.classList.add(\"inspectionItemSection\");\r\n inspectionQuestionHeader.classList.add(\"card__header\");\r\n inspectionQuestionHeader.innerText = \"Inspection Items\";\r\n inspectionQuestionCard.classList.add(\"card\");\r\n inspectionQuestionCard.classList.add(\"inspectionItemCard\");\r\n inspectionQuestionCard.appendChild(inspectionQuestionHeader);\r\n inspectionQuestionCard.appendChild(inspectionQuestionBody);\r\n ///////////////////\r\n // Append to Grid Columns\r\n\r\n if (selectedRouteName) col1.appendChild(routeNameDisp);\r\n if (enteredByOtherUser) col1.appendChild(otherUserDisp);\r\n inspectionInfoBody.appendChild(dtWrap);\r\n inspectionInfoBody.appendChild(vehicleDropdown);\r\n inspectionInfoBody.appendChild(noteInput);\r\n //\r\n col1.appendChild(inspectionInfoCard)\r\n col2.appendChild(inspectionQuestionCard);\r\n col2.appendChild(btnWrap);\r\n if (deleteBtn) col2.appendChild(deleteBtn);\r\n\r\n DOM.ACTIONCENTER.appendChild(col1)\r\n DOM.ACTIONCENTER.appendChild(col2)\r\n\r\n DOM.autosizeTextarea();\r\n\r\n populateDropdown()\r\n buildInspectionQuestions(editData);\r\n eventListeners()\r\n checkForAllRequiredFields();\r\n }\r\n\r\n function eventListeners() {\r\n dateInput.addEventListener('change', event => {\r\n if (Date.parse(event.target.value) > UTIL.getTodaysDate(true)) {\r\n console.warn('future date not allowed')\r\n UTIL.warningPopup({\r\n message: 'Future dates are not allowed',\r\n accept: {\r\n text: 'Ok'\r\n },\r\n })\r\n event.target.value = UTIL.getTodaysDate();\r\n }\r\n });\r\n vehicleDropdown.addEventListener('change', event => {\r\n const selectedOption = event.target.options[event.target.selectedIndex];\r\n currentlySelectedVehicle = selectedOption.value;\r\n if (selectedOption.value === '') {\r\n vehicleDropdown.classList.add('error');\r\n console.warn('No vehicle selected.')\r\n } else {\r\n vehicleDropdown.classList.remove('error');\r\n }\r\n checkForAllRequiredFields();\r\n });\r\n }\r\n\r\n async function buildInspectionQuestions(editData) {\r\n let completedStatus;\r\n if (isEdit) {\r\n completedStatus = await getInspectionDetailsForEdit(editData.inspectionId)\r\n }\r\n const questions = TRANS_mainLanding.getCategories();\r\n questionResponses = new Map();\r\n questions.forEach((val, key) => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('questionWrapWord'); \r\n const questionTitle = document.createElement('h4');\r\n questionTitle.innerText = val.desc;\r\n let passCheck = false; \r\n let failCheck = false;\r\n let naCheck = false;\r\n let allowNA = val.allowNA === 'Y' ? true : false;\r\n if (isEdit) {\r\n switch (completedStatus.get(key)) {\r\n case 'P':\r\n passCheck = true;\r\n questionResponses.set(key, 'P');\r\n break;\r\n case 'N':\r\n naCheck = true;\r\n questionResponses.set(key, 'N');\r\n break;\r\n default:\r\n failCheck = true;\r\n questionResponses.set(key, 'F');\r\n break;\r\n }\r\n } else {\r\n questionResponses.set(key, '');\r\n allQuestionsAnswered = false; // If not in edit mode, mark as not all questions answered\r\n }\r\n const passRadio = input.buildRadio({\r\n id: `${key}-pass`,\r\n text: \"Pass\",\r\n name: key,\r\n isChecked: passCheck,\r\n isDisabled: readOnly\r\n });\r\n const failRadio = input.buildRadio({\r\n id: `${key}-fail`,\r\n text: \"Fail\",\r\n name: key,\r\n isChecked: failCheck,\r\n isDisabled: readOnly\r\n });\r\n passRadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'P');\r\n checkAllQuestionsAnswered();\r\n });\r\n failRadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'F');\r\n checkAllQuestionsAnswered();\r\n });\r\n\r\n const radioDiv = document.createElement('div');\r\n radioDiv.classList.add('inspection_radioDiv');\r\n radioDiv.appendChild(passRadio);\r\n radioDiv.appendChild(failRadio);\r\n \r\n // NA OPTION (only displayed if the inspection category is set to allow NA)\r\n if (allowNA) {\r\n const allowNARadio = input.buildRadio({\r\n id: `${key}-na`,\r\n text: \"N/A\",\r\n name: key,\r\n isChecked: naCheck,\r\n isDisabled: readOnly\r\n });\r\n allowNARadio.addEventListener('change', () => {\r\n questionResponses.set(key, 'N');\r\n checkAllQuestionsAnswered();\r\n });\r\n radioDiv.appendChild(allowNARadio);\r\n }\r\n questionContainer.appendChild(questionTitle);\r\n questionContainer.appendChild(radioDiv);\r\n var lineBR = document.createElement('br');\r\n questionContainer.appendChild(lineBR);\r\n\r\n inspectionQuestionBody.appendChild(questionContainer);\r\n });\r\n\r\n // Function to check if all questions are answered\r\n function checkAllQuestionsAnswered() {\r\n allQuestionsAnswered = true; // Reset the flag\r\n questionResponses.forEach(value => {\r\n if (value === '') {\r\n allQuestionsAnswered = false;\r\n return; // Exit forEach loop early if any question is unanswered\r\n }\r\n });\r\n\r\n checkForAllRequiredFields();\r\n }\r\n\r\n // Return the result indicating if all questions are answered\r\n return allQuestionsAnswered;\r\n}\r\n\r\n\r\n async function getInspectionDetailsForEdit(vehicleInspectionId) {\r\n const completedDetails = (await TRANS_vehicleInspectionAjax.getVehicleInspectionDetails(vehicleInspectionId)).getVehicleInspectionDetailsResult\r\n const completedDetailsMap = new Map();\r\n completedDetails.forEach(cat => {\r\n completedDetailsMap.set(cat.inspectionCategory, cat.categoryStatus);\r\n })\r\n return completedDetailsMap\r\n }\r\n\r\n function populateDropdown() {\r\n vehicleDropdownData = []\r\n const vehicles = TRANS_mainLanding.getVehicles();\r\n\r\n vehicles.forEach((val,key,map) => {\r\n vehicleDropdownData.push({\r\n value: key,\r\n text: val.vehicleNumber\r\n });\r\n })\r\n\r\n vehicleDropdownData.unshift({value: '', text: ''})\r\n dropdown.populate(vehicleDropdown, vehicleDropdownData, selectedVehicle)\r\n currentlySelectedVehicle = selectedVehicle\r\n if (!selectedVehicle) vehicleDropdown.classList.add('error')\r\n }\r\n\r\n async function saveInspection() {\r\n // Date Time Vehicle are required\r\n // Check if inspection categories are complete\r\n const inspectionCategories = []\r\n const inspectionStatus = []\r\n pendingSave.show('Saving Inspection...')\r\n try {\r\n // Check for errors first\r\n const errors = document.querySelectorAll('.error');\r\n if (errors.length > 0) throw \"err exist\"\r\n // Check that all inspection items have been answered\r\n questionResponses.forEach((val,key,map) => {\r\n if (val === \"\") {\r\n console.error(`Save Failed. Inspection category id ${key} is registering as not complete`)\r\n throw \"You must complete all Inspection Items\"\r\n } else {\r\n inspectionCategories.push(key)\r\n inspectionStatus.push(val)\r\n }\r\n })\r\n const note = noteInput.querySelector('textarea').value\r\n const date = dateInput.querySelector('input').value\r\n const time = timeInput.querySelector('input').value\r\n const vddElement = document.getElementById('vehicleDropdown');\r\n const vehicleId = vddElement.options[vddElement.selectedIndex].value;\r\n\r\n const mainData = {\r\n token: $.session.Token,\r\n vehicleInspectionId: vehicleInspectionId,\r\n vehicleInformationId: vehicleId,\r\n tripCompletedId: selectedRoute ? selectedRoute : '',\r\n inspectionDate: date,\r\n inspectionTime: time,\r\n notes: UTIL.removeUnsavableNoteText(note)\r\n }\r\n if (isEdit) {\r\n await TRANS_vehicleInspectionAjax.updateVehicleInspection(mainData)\r\n } else {\r\n vehicleInspectionId = (await TRANS_vehicleInspectionAjax.insertVehicleInspection(mainData)).insertVehicleInspectionResult[0].vehicleInspectionId;\r\n }\r\n\r\n const detailData = {\r\n token: $.session.Token,\r\n vehicleInspectionId: vehicleInspectionId,\r\n inspectionCatString: inspectionCategories.join(\"|\"),\r\n inspectionStatusString: inspectionStatus.join(\"|\")\r\n }\r\n await TRANS_vehicleInspectionAjax.insertUpdateVehicleInspectionDetails(detailData)\r\n pendingSave.fulfill('Save Successful')\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n // What happens after a succesful save depends on how the entered the module\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n // If they came from the inspection landing page, go back to the landing page\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n // If they just added a new route, or were reviewing an inspection, take them to the review table\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n // If they came from the my route selection popup, take them back to my routes\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n init({enterPath: 'inspectionLanding'})\r\n break;\r\n }\r\n }, 2000);\r\n } catch (error) {\r\n if (error === 'err exist') {\r\n pendingSave.reject('Failed to save. Please correct any errors that exist on the route.');\r\n console.error('Failing due to option highlighted in red. Check to make sure all required items have been completed.');\r\n } else {\r\n pendingSave.reject(`Failed to save inspection. ${error}`);\r\n console.error('Unspecified Error');\r\n console.error(error);\r\n }\r\n setTimeout(() => failSave.hide(), 4000);\r\n }\r\n }\r\n\r\n function deleteInspection() {\r\n async function acceptDelete() {\r\n pendingSave.show('Deleting Inspection...')\r\n try {\r\n await TRANS_vehicleInspectionAjax.deleteVehicleInspection(vehicleInspectionId)\r\n pendingSave.fulfill('Inspection Deleted')\r\n setTimeout(() => {\r\n successfulSave.hide()\r\n // What happens after a delete depends on how the entered the module\r\n switch (inspectionEnterPath) {\r\n case 'inspectionLanding':\r\n // If they came from the inspection landing page, clear, and start a new inspection\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n case 'addRoute':\r\n case 'reviewInspections':\r\n // If they just added a new route, or were reviewing an inspection, take them to the review table\r\n TRANS_inspectionReview.init(false)\r\n break;\r\n case 'routeSelection':\r\n // If they came from the my route selection popup, take them back to my routes\r\n TRANS_myRoute.init()\r\n break;\r\n default:\r\n TRANS_vehicleInspectionLanding.init();\r\n break;\r\n }\r\n }, 2000);\r\n } catch (error) {\r\n pendingSave.reject(error)\r\n setTimeout(() => failSave.hide(), 2000);\r\n }\r\n }\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this vehicle inspection?',\r\n hideX: true,\r\n accept: {\r\n text: 'Delete',\r\n callback: acceptDelete\r\n },\r\n reject: {\r\n text: 'Cancel'\r\n }\r\n })\r\n }\r\n\r\n function clearVar() {\r\n selectedVehicle = null;\r\n selectedRoute = null;\r\n isEdit = null;\r\n questionResponses = null;\r\n vehicleInspectionId = null;\r\n readOnly = null;\r\n enteredByOtherUser = null;\r\n currentlySelectedVehicle = null;\r\n }\r\n\r\n function checkForAllRequiredFields() {\r\n if (readOnly) {\r\n return;\r\n }\r\n\r\n if (!currentlySelectedVehicle || currentlySelectedVehicle === '' || allQuestionsAnswered === false) {\r\n // If no vehicle is selected, disable the save button and add the 'disabled' class\r\n saveBtn.disabled = true;\r\n saveBtn.classList.add('disabled');\r\n } else {\r\n // If a vehicle is selected, enable the save button and remove the 'disabled' class\r\n saveBtn.disabled = false;\r\n saveBtn.classList.remove('disabled');\r\n }\r\n}\r\n\r\n /**\r\n *\r\n * @param {object} opts\r\n * @param {string} opts.vehicleId\r\n * @param {string} [opts.routeId]\r\n */\r\n function init(opts = {rId: null, vId: null, edit: false, editData: null, routeName: null, routeDate: null, batchedRoute: false}) {\r\n clearVar();\r\n const { vId, rId, editData, edit, enterPath, routeName, routeDate, batchedRoute } = opts\r\n selectedVehicle = vId;\r\n selectedRoute = rId;\r\n routeInspection = rId ? true : false;\r\n selectedRouteDate = routeDate;\r\n selectedRouteName = routeName;\r\n isEdit = edit;\r\n inspectionEnterPath = enterPath;\r\n\r\n DOM.scrollToTopOfPage();\r\n DOM.clearActionCenter();\r\n setActiveModuleSectionAttribute(\"vehicleInspection\");\r\n\r\n if (edit) {\r\n vehicleInspectionId = editData.inspectionId\r\n if (batchedRoute) {\r\n readOnly = true;\r\n } else if (editData.enteredById.toLowerCase() !== $.session.UserId.toLowerCase()) {\r\n readOnly = true;\r\n } else if ($.session.transportationUpdate === false) {\r\n readOnly = true;\r\n } else {\r\n readOnly = false;\r\n }\r\n enteredByOtherUser = editData.enteredById.toLowerCase() === $.session.UserId.toLowerCase() ? false : true;\r\n } else {\r\n readOnly = false;\r\n }\r\n\r\n buildPage(editData);\r\n }\r\n return {\r\n init,\r\n };\r\n})();\r\n","const TRANS_vehicleInspectionAjax = (function() {\r\n\r\n function getInspectionCategories() {\r\n const data = {\r\n token: $.session.Token,\r\n }\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getInspectionCategories/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function insertVehicleInspection(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n function insertUpdateVehicleInspectionDetails(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/insertUpdateVehicleInspectionDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n }\r\n\r\n function getCompletedInspections(data) {\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getCompletedInspections/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n function getVehicleInspectionDetails(vehicleInspectionId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tvehicleInspectionId: vehicleInspectionId\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/getVehicleInspectionDetails/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction updateVehicleInspection(data) {\r\n\t\treturn $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/updateVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\r\n\tfunction deleteVehicleInspection(vehicleInspectionId) {\r\n\t\tconst data = {\r\n\t\t\ttoken: $.session.Token,\r\n\t\t\tvehicleInspectionId: vehicleInspectionId\r\n\t\t}\r\n return $.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\turl: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/deleteVehicleInspection/',\r\n\t\t\tdata: JSON.stringify(data),\r\n\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\tdataType: 'json',\r\n\t\t});\r\n\t}\r\n\r\n return {\r\n getInspectionCategories,\r\n insertVehicleInspection,\r\n getCompletedInspections,\r\n\t\tinsertUpdateVehicleInspectionDetails,\r\n\t\tgetVehicleInspectionDetails,\r\n\t\tupdateVehicleInspection,\r\n\t\tdeleteVehicleInspection\r\n }\r\n})();","const widgetSettings = (function () {\r\n let widgetSettingsPage;\r\n let sectionreorder = [];\r\n let updatedListOrder = [];\r\n let widgetsContainer;\r\n let newTable;\r\n\r\n //let sectionBody;\r\n const sections = {\r\n // pre existing, need new ids, idk what that'll do to existing data?\r\n 1: {\r\n id: 1,\r\n name: 'Case Note Productivity',\r\n settings: { productivityThreshold: 60, daysBack: 7, workHoursPerDay: 7 },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const that = this;\r\n const saveID = 1;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const group1 = document.createElement('div');\r\n group1.classList.add('group1');\r\n const group2 = document.createElement('div');\r\n group2.classList.add('group2');\r\n const percentSymb = document.createElement('p');\r\n percentSymb.innerText = '%';\r\n percentSymb.style.color = 'black';\r\n percentSymb.style.position = 'absolute';\r\n percentSymb.style.marginLeft = '252px';\r\n percentSymb.style.marginTop = '-99px';\r\n\r\n // build inputs\r\n const daysBackInput = input.build({\r\n id: 'cnProductivityDaysBack',\r\n label: 'Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '14' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const productivityThresholdPercentage = input.build({\r\n id: 'productivityThresholdPercentage',\r\n label: 'Productivity Threshold',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.productivityThreshold,\r\n attributes: [\r\n { key: 'min', value: '0' },\r\n { key: 'max', value: '100' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const workHoursPerDay = input.build({\r\n id: 'cnProductivityWorkHoursPerDay',\r\n label: 'Work Hours/Day',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.workHoursPerDay,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '24' },\r\n ],\r\n });\r\n const saveBtn = button.build({\r\n id: 'cnProductivitySave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n const newProductivity = parseInt(\r\n productivityThresholdPercentage.firstElementChild.value,\r\n );\r\n const newWorkHours = parseFloat(workHoursPerDay.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 14) {\r\n that.settings.daysBack = newDaysBack;\r\n }\r\n if (newProductivity >= 0 && newProductivity <= 100) {\r\n that.settings.productivityThreshold = newProductivity;\r\n }\r\n if (newWorkHours >= 0.1 && newWorkHours <= 24) {\r\n that.settings.workHoursPerDay = newWorkHours;\r\n }\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnProductivityBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-1');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n group1.appendChild(daysBackInput);\r\n group1.appendChild(workHoursPerDay);\r\n group2.appendChild(productivityThresholdPercentage);\r\n\r\n widgetBody.appendChild(group1);\r\n widgetBody.appendChild(group2);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n 2: {\r\n id: 2,\r\n name: 'My Case Load',\r\n settings: {\r\n viewNotesDaysBack: 30,\r\n lastNoteEnteredDaysBack: 30,\r\n viewEnteredByOtherUsers: 'N',\r\n },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 2;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const viewNotesByOtherUsersCheckBox = input.buildCheckbox({\r\n text: 'View Notes Entered by Other Users',\r\n style: 'secondary',\r\n isChecked: that.settings.viewEnteredByOtherUsers === 'Y' ? true : false,\r\n });\r\n viewNotesByOtherUsersCheckBox.classList.add('settingsCheckBox');\r\n viewNotesByOtherUsersCheckBox.addEventListener('change', event => {\r\n if (event.target.checked && $.session.CaseNotesViewEntered) {\r\n that.settings.viewEnteredByOtherUsers = 'Y';\r\n } else {\r\n that.settings.viewEnteredByOtherUsers = 'N';\r\n }\r\n });\r\n\r\n const lastNoteDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Last Note Entered Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.lastNoteEnteredDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const reviewNotesDaysBackInput = input.build({\r\n id: 'cnCaseLoadLastNoteDaysBack',\r\n label: 'Review Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.viewNotesDaysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n\r\n const saveBtn = button.build({\r\n id: 'cnCaseLoadSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // get input field values\r\n const newViewNotesDaysBack = parseInt(reviewNotesDaysBackInput.firstElementChild.value);\r\n const newLastNoteEnteredDaysBack = parseInt(\r\n lastNoteDaysBackInput.firstElementChild.value,\r\n );\r\n let newViewEnteredByOthers = 'N';\r\n if ($.session.CaseNotesViewEntered) {\r\n newViewEnteredByOthers = viewNotesByOtherUsersCheckBox.firstElementChild.checked\r\n ? 'Y'\r\n : 'N';\r\n }\r\n\r\n if (newViewNotesDaysBack >= 1 && newViewNotesDaysBack <= 60) {\r\n that.settings.viewNotesDaysBack = newViewNotesDaysBack;\r\n }\r\n if (newLastNoteEnteredDaysBack >= 1 && newLastNoteEnteredDaysBack <= 60) {\r\n that.settings.lastNoteEnteredDaysBack = newLastNoteEnteredDaysBack;\r\n }\r\n\r\n that.settings.viewEnteredByOtherUsers = newViewEnteredByOthers;\r\n\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnCaseLoadBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-2');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n if ($.session.CaseNotesViewEntered) {\r\n widgetBody.appendChild(viewNotesByOtherUsersCheckBox);\r\n } else {\r\n this.settings.viewEnteredByOtherUsers = 'N';\r\n }\r\n\r\n widgetBody.appendChild(viewNotesByOtherUsersCheckBox);\r\n widgetBody.appendChild(lastNoteDaysBackInput);\r\n widgetBody.appendChild(reviewNotesDaysBackInput);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n 3: {\r\n id: 3,\r\n name: 'Rejected Case Notes',\r\n settings: { daysBack: 60 },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 3;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const daysBackInput = input.build({\r\n id: 'cnRejectedDaysBack',\r\n label: 'Rejected Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: that.settings.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '999' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n const saveBtn = button.build({\r\n id: 'cnRejectedSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n if (!saveBtn.classList.contains('disabled')) {\r\n console.log(that);\r\n // get input field values\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 999) {\r\n that.settings.daysBack = newDaysBack;\r\n }\r\n\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n }\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'cnRejectedBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n // classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-3');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(daysBackInput);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n daysBackInput.addEventListener('input', event => {\r\n if (event.target.value > 999) {\r\n daysBackInput.classList.add('error');\r\n saveBtn.classList.add('disabled');\r\n }\r\n else {\r\n daysBackInput.classList.remove('error');\r\n saveBtn.classList.remove('disabled');\r\n }\r\n });\r\n return widgetBody;\r\n },\r\n },\r\n 4: {\r\n id: 4,\r\n name: 'Plan To-Do List',\r\n settings: { dueDate: 'today' },\r\n showHide: '',\r\n application: 'gk',\r\n order: 0,\r\n build: function () {\r\n const saveID = 4;\r\n const that = this;\r\n const widgetBody = document.createElement('div');\r\n widgetBody.classList.add('widgetBody__Inner');\r\n\r\n const dueDateDropdown = dropdown.build({\r\n label: 'Due Date',\r\n style: 'secondary',\r\n dropdownId: 'dueDateDropdown',\r\n });\r\n dueDateDropdown.addEventListener('change', e => {\r\n that.settings.dueDate = e.target.value;\r\n });\r\n dropdown.populate(\r\n dueDateDropdown,\r\n [\r\n { id: 1, value: 'today', text: 'Today' },\r\n { id: 2, value: 'next 7 days', text: 'Next 7 Days' },\r\n { id: 3, value: 'next 30 days', text: 'Next 30 Days' },\r\n { id: 4, value: 'prior 7 days', text: 'Prior 7 Days' },\r\n { id: 5, value: 'prior 30 days', text: 'Prior 30 Days' },\r\n ],\r\n that.settings.dueDate,\r\n );\r\n\r\n const saveBtn = button.build({\r\n id: 'wfPlanSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: async () => {\r\n // config string to json\r\n const configString = JSON.stringify(that.settings);\r\n\r\n // style saved button\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n\r\n // update settings\r\n await widgetSettingsAjax.setWidgetSettingConfig(saveID, configString, that.showHide);\r\n dashboard.load();\r\n },\r\n });\r\n\r\n const backBtn = button.build({\r\n id: 'wfPlanBack',\r\n text: 'Back',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: async () => {\r\n const toggle = document.querySelector('#build-4');\r\n toggle.classList.remove('active');\r\n newTable.classList.add('active');\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"btnWrap\");\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(backBtn);\r\n\r\n widgetBody.appendChild(dueDateDropdown);\r\n widgetBody.appendChild(btnWrap);\r\n\r\n return widgetBody;\r\n },\r\n },\r\n // new widgets\r\n 5: { id: 5, name: 'Custom Links', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 6: {\r\n id: 6,\r\n name: 'Absent Consumers',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 7: {\r\n id: 7,\r\n name: 'Location Progress Notes',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 8: {\r\n id: 8,\r\n name: 'Consumer Progress Notes',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 9: {\r\n id: 9,\r\n name: 'Day Service Time Clock',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 10: { id: 10, name: 'Hours Worked', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 11: {\r\n id: 11,\r\n name: 'Daily Services',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 12: { id: 12, name: 'Day Services', settings: {}, showHide: '', application: 'gk,adv', order: 0, },\r\n 13: {\r\n id: 13,\r\n name: 'My Unapproved Time Entries',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 14: {\r\n id: 14,\r\n name: 'Time Entry Review',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 15: { id: 15, name: 'My Schedule', settings: {}, showHide: '', application: 'adv', order: 0, },\r\n 16: {\r\n id: 16,\r\n name: 'Incident Tracking',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 17: {\r\n id: 17,\r\n name: 'Plans Missing Signatures',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n 18: {\r\n id: 18,\r\n name: 'Money Management',\r\n settings: {},\r\n showHide: '',\r\n application: 'adv',\r\n order: 0,\r\n },\r\n 19: {\r\n id: 19,\r\n name: 'System Messages',\r\n settings: {},\r\n showHide: '',\r\n application: 'gk,adv',\r\n order: 0,\r\n },\r\n };\r\n\r\n function setWidgetSettings(widgetId) {\r\n let settings = dashboard.getWidgetSettings(widgetId);\r\n\r\n if (settings.widgetConfig !== null) {\r\n sections[widgetId].settings = { ...settings.widgetConfig };\r\n }\r\n sections[widgetId].order = parseInt(settings.widgetOrder);\r\n sections[widgetId].showHide = settings.showHide;\r\n }\r\n\r\n function buildWidgetBodyInnerHTML(sec) {\r\n const settingHTML = sections[sec].build();\r\n return settingHTML;\r\n }\r\n\r\n function populatePage() {\r\n const appName = $.session.applicationName === 'Advisor' ? 'adv' : 'gk';\r\n widgetsContainer = document.createElement('div');\r\n widgetsContainer.classList.add('widgetsContainer');\r\n\r\n newTable = buildTeamMemberTable();\r\n newTable.classList.add('active');\r\n widgetsContainer.appendChild(newTable);\r\n\r\n for (const sec in sections) {\r\n if (!sections[sec].application.includes(appName)) {\r\n continue;\r\n }\r\n setWidgetSettings(sec);\r\n if (sections[sec].build) {\r\n const sectionWrap = document.createElement('div');\r\n sectionWrap.classList.add('widgetWrap');\r\n sectionWrap.id = `build-${sections[sec].id}`;\r\n\r\n const sectionHeader = document.createElement('div');\r\n sectionHeader.classList.add('widgetHeader');\r\n\r\n const sectionBody = document.createElement('div');\r\n sectionBody.classList.add('widgetBody');\r\n const title = document.createElement('p');\r\n title.innerText = sections[sec].name;\r\n sectionHeader.appendChild(title);\r\n sectionBody.appendChild(buildWidgetBodyInnerHTML(sec));\r\n sectionWrap.appendChild(sectionHeader);\r\n sectionWrap.appendChild(sectionBody);\r\n widgetsContainer.appendChild(sectionWrap);\r\n }\r\n }\r\n widgetSettingsPage.appendChild(widgetsContainer);\r\n }\r\n\r\n\r\n function buildTeamMemberTable() {\r\n const teamMemberTable = table.build({\r\n tableId: 'settingTable',\r\n columnHeadings: [],\r\n endIcon: true,\r\n sortable: true,\r\n onSortCallback: async res => {\r\n var allElmnts = document.querySelectorAll('[id^=\"sig-\"]');\r\n updatedListOrder = [];\r\n updatedListOrder.length = allElmnts.length;\r\n for (var i = 0; i < allElmnts.length; i++) {\r\n updatedListOrder[i] = allElmnts[i].innerText.replace('show', '').replace('\\n', '').trim();\r\n } \r\n await widgetSettingsAjax.setWidgetSettingOrder(updatedListOrder);\r\n if ($.session.activeModule == 'home')\r\n dashboard.load();\r\n },\r\n });\r\n\r\n if (sections) {\r\n const appName = $.session.applicationName === 'Advisor' ? 'adv' : 'gk';\r\n sectionreorder = [];\r\n for (const sec in sections) {\r\n if (!sections[sec].application.includes(appName)) {\r\n continue;\r\n }\r\n setWidgetSettings(sec);\r\n sectionreorder.push(sections[sec]);\r\n };\r\n\r\n let sortedProducts = sectionreorder.sort((a, b) => {\r\n if (a.order === 0) return 1;\r\n if (b.order === 0) return -1;\r\n return a.order - b.order;\r\n });\r\n\r\n const tableData = sortedProducts.map(m => {\r\n let name;\r\n let IsBuild = 'false';\r\n if (sections[m.id].build) { \r\n name = m.name + ' ' + `${icons['Gear']}`;\r\n IsBuild = 'true';\r\n }\r\n else {\r\n IsBuild = 'false';\r\n name = m.name;\r\n }\r\n const activeCheckbox = input.buildCheckbox({\r\n id: `chk-${m.id}`,\r\n text: 'show',\r\n isChecked: m.showHide === 'Y' ? true : false,\r\n });\r\n\r\n const tableOBJ = {\r\n values: [name],\r\n id: `sig-${m.id}-${m.order}`,\r\n endIcon: m.name == 'System Messages' ? '' : activeCheckbox.outerHTML,\r\n onClick: async e => {\r\n var id = e.target.id.split('-')[1];\r\n if (sections[parseInt(m.id)].build) {\r\n const toggle = document.querySelector('#build-' + id);\r\n toggle.classList.add('active');\r\n newTable.classList.remove('active');\r\n }\r\n },\r\n };\r\n\r\n // set checkbox callback\r\n tableOBJ.endIconCallback = async e => {\r\n sec = e.currentTarget.children[0].control.id.split('-')[1];\r\n document.getElementById(e.currentTarget.children[0].control.id).checked = sections[sec].showHide == 'Y' ? false : true;\r\n sections[sec].showHide = sections[sec].showHide == 'Y' ? 'N' : 'Y';\r\n\r\n const configString = JSON.stringify(sections[sec].settings);\r\n const sectionID = parseInt(sec);\r\n await widgetSettingsAjax.setWidgetSettingConfig(\r\n sectionID,\r\n configString,\r\n sections[sec].showHide,\r\n );\r\n if ($.session.activeModule == 'home')\r\n dashboard.load();\r\n };\r\n tableOBJ.attributes = [{ key: 'data-signed', value: m.id }, { key: 'data-plan-active', value: IsBuild }];\r\n return tableOBJ;\r\n });\r\n\r\n table.populate(teamMemberTable, tableData, true);\r\n }\r\n return teamMemberTable;\r\n }\r\n\r\n function buildPage() {\r\n widgetSettingsPage = document.querySelector('.util-menu__widgetSettings');\r\n widgetSettingsPage.innerHTML = '';\r\n\r\n const currMenu = document.createElement('p');\r\n currMenu.innerText = 'Widget Settings';\r\n currMenu.classList.add('menuTopDisplay');\r\n\r\n const backButton = button.build({\r\n text: 'Back',\r\n icon: 'arrowBack',\r\n type: 'text',\r\n attributes: [{ key: 'data-action', value: 'back' }],\r\n });\r\n\r\n widgetSettingsPage.appendChild(currMenu);\r\n widgetSettingsPage.appendChild(backButton);\r\n }\r\n\r\n function init() {\r\n buildPage();\r\n populatePage();\r\n }\r\n\r\n return {\r\n init,\r\n };\r\n})();\r\n","const widgetSettingsAjax = (function () {\r\n function getWidgetSettings() {\r\n data = {\r\n token: $.session.Token\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/getUserWidgetSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n function setWidgetSettingConfig(widgetId, widgetConfig, showHide) {\r\n data = {\r\n token: $.session.Token,\r\n widgetId: widgetId,\r\n showHide: showHide,\r\n widgetConfig: widgetConfig\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateUserWidgetSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n function setWidgetSettingOrder(updatedListOrder) {\r\n data = {\r\n token: $.session.Token,\r\n updatedListOrder: updatedListOrder,\r\n };\r\n return $.ajax({\r\n type: \"POST\",\r\n url:\r\n $.webServer.protocol +\r\n \"://\" +\r\n $.webServer.address +\r\n \":\" +\r\n $.webServer.port +\r\n \"/\" +\r\n $.webServer.serviceName +\r\n \"/updateUserWidgetOrderSettings/\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n return {\r\n getWidgetSettings,\r\n setWidgetSettingConfig,\r\n setWidgetSettingOrder \r\n };\r\n})();\r\n","var reports = (function(){\r\n var reportCurrentlyProcessing = false;\r\n var startDate;\r\n var endDate;\r\n // DOM elements\r\n var actioncenter;\r\n var reportPopup;\r\n\r\n function handledProcessedReport() {\r\n reportCurrentlyProcessing = false;\r\n }\r\n\r\n function showTimeEntryReport() {\r\n if (!startDate || !endDate) return\r\n\r\n reportCurrentlyProcessing = true;\r\n var userId = $.session.UserId;\r\n\r\n reportsAjax.getEmpSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n }\r\n\r\n function showOverlapReport() {\r\n if (!startDate || !endDate) return\r\n\r\n reportCurrentlyProcessing = true;\r\n var userId = $.session.UserId;\r\n\r\n reportsAjax.getOverlapSingleEntryDetailReportAjax(userId, startDate, endDate);\r\n }\r\n\r\n function showReportsPopup() {\r\n // popup\r\n var popup = document.createElement('div');\r\n popup.classList.add('popup', 'visible', 'popup--filter', 'timeEntryReportsPopup');\r\n popup.setAttribute('data-popup', 'true');\r\n // header\r\n var header = document.createElement('h5');\r\n header.innerHTML = `Select A Report To View`;\r\n // reports list\r\n var reports = `\r\n
      \r\n
    \r\n `;\r\n var timeEntryBtn = button.build({\r\n text: 'Time Entry Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n actioncenter.removeChild(popup);\r\n showTimeEntryReport();\r\n }\r\n });\r\n var overlapBtn = button.build({\r\n text: 'Overlap Report',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function() {\r\n overlay.hide();\r\n bodyScrollLock.enableBodyScroll(popup);\r\n actioncenter.removeChild(popup);\r\n showOverlapReport();\r\n }\r\n });\r\n\r\n popup.appendChild(header);\r\n popup.appendChild(timeEntryBtn);\r\n popup.appendChild(overlapBtn);\r\n\r\n // append to dom\r\n bodyScrollLock.disableBodyScroll(popup);\r\n overlay.show();\r\n actioncenter.appendChild(popup);\r\n }\r\n\r\n function init(payPeriod) {\r\n actioncenter = document.getElementById('actioncenter');\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n showReportsPopup();\r\n }\r\n\r\n return {\r\n init,\r\n handledProcessedReport\r\n }\r\n})();\r\n","var reportsAjax = (function(){\r\n function getEmpSingleEntryDetailReportAjax(userId, startDate, endDate) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/BasicSingleEntryReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + startDate + '\", \"endDate\":\"' + endDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.BasicSingleEntryReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }//\r\n });\r\n }\r\n \r\n function getOverlapSingleEntryDetailReportAjax(userId, startDate, endDate) {\r\n $.ajax({\r\n type: 'POST',\r\n url: $.webServer.protocol + '://' + $.webServer.address + ':' + $.webServer.port + '/' + $.webServer.serviceName + '/SingleEntryOverLapReport/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"userId\":\"' + userId + '\", \"startDate\":\"' + startDate + '\", \"endDate\":\"' + endDate + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n success: function(response, status, xhr) {\r\n var arr = response.SingleEntryOverLapReportResult._buffer;\r\n var byteArray = new Uint8Array(arr);\r\n var blob = new Blob([byteArray], { type: 'application/pdf' });\r\n if ($.session.browser == 'Explorer' || $.session.browser == 'Mozilla') {\r\n window.navigator.msSaveOrOpenBlob(blob, 'report.pdf');\r\n } else {\r\n var fileURL = URL.createObjectURL(blob);\r\n window.open(fileURL);\r\n }\r\n reports.handledProcessedReport();\r\n }\r\n });\r\n }\r\n\r\n return {\r\n getEmpSingleEntryDetailReportAjax,\r\n getOverlapSingleEntryDetailReportAjax\r\n }\r\n})();\r\n","var timeApproval = (function () {\r\n //-DATA------------------\r\n var locationData;\r\n var payPeriodData;\r\n var payPeriod;\r\n var endDate;\r\n var startDate;\r\n var rejectionReasonText;\r\n // dropdowns\r\n var employees;\r\n var locations;\r\n var supervisors;\r\n // filter data\r\n var payPeriodText;\r\n var supervisorId;\r\n var supervisorName;\r\n var locationId;\r\n var locationName;\r\n var employeeId;\r\n var employeeName;\r\n var status;\r\n var statusText;\r\n\r\n let btnWrap;\r\n let supervisorBtnWrap;\r\n let locationBtnWrap;\r\n let statusBtnWrap;\r\n let employeeBtnWrap;\r\n let workCodeBtnWrap;\r\n let startDateBtnWrap;\r\n let endDateBtnWrap;\r\n\r\n var tmpSupervisorId;\r\n var tmpSupervisorName;\r\n var tmpLocationId;\r\n var tmpLocationName;\r\n var tmpEmployeeId;\r\n var tmpEmployeeName;\r\n var tmpStatus;\r\n var tmpStatusText;\r\n //-DOM------------------\r\n var reviewTable;\r\n var mulitSelectBtn;\r\n var selectAllBtn;\r\n var filterBtn;\r\n var mapBtn;\r\n var filterPopup;\r\n var payPeriodsDropdown;\r\n var supervisorDropdown;\r\n var employeeDropdown;\r\n var locationDropdown;\r\n var statusDropdown;\r\n var applyBtn;\r\n var startDateInput;\r\n var endDateInput\r\n var tmpStartDate;\r\n var tmpEndDate;\r\n // action nav items\r\n var cancelBtn;\r\n var approveNavBtn;\r\n var rejectNavBtn;\r\n var submitNavBtn;\r\n //-WorkCode---------------\r\n var workCodeData;\r\n var workCodeDropdown;\r\n var workCodeId;\r\n var workCodeName;\r\n var tmpWorkCodeId;\r\n var tmpWorkCodeName;\r\n //-OTHER------------------\r\n var statuses = [\r\n { key: 'A', value: 'Awaiting Approval' },\r\n { key: 'P', value: 'Pending' },\r\n { key: 'I', value: 'Imported' },\r\n { key: 'S', value: 'Submitted' },\r\n { key: 'R', value: 'Rejected' },\r\n ];\r\n var statusLookup = {\r\n A: 'Awaiting Approval',\r\n P: 'Pending',\r\n R: 'Rejected',\r\n I: 'Imported',\r\n S: 'Submitted',\r\n D: 'Duplicate',\r\n };\r\n var workCodeLookup = {\r\n A: 'Awake Service',\r\n L: '1:1 Lucas County',\r\n N: 'Non Billable',\r\n O: 'On Behalf Of - Admin',\r\n S: 'Sleep',\r\n T: 'Transportation',\r\n V: 'Vacation',\r\n };\r\n var enableMultiEdit = false;\r\n var enableSelectAll = false;\r\n var selectedRows = []; // array of row ids\r\n var sortedSelectedRows;\r\n var rejectOrApprove;\r\n let totalHours = 0;\r\n //-TABLE DATA------------------\r\n let showMap = false;\r\n // const LSKEY_showMap = \"se_showMap\"\r\n let IsFilterDisable = true;\r\n\r\n function clearAllGlobalVariables() {\r\n selectedRows = [];\r\n\r\n locationData = undefined;\r\n payPeriodData = undefined;\r\n payPeriod = undefined;\r\n endDate = undefined;\r\n startDate = undefined;\r\n\r\n employees = undefined;\r\n locations = undefined;\r\n supervisors = undefined;\r\n\r\n supervisorId = undefined;\r\n locationId = undefined;\r\n employeeId = undefined;\r\n status = undefined;\r\n totalHours = undefined;\r\n\r\n workCodeId = undefined;\r\n workCodeName = undefined;\r\n tmpWorkCodeId = undefined;\r\n tmpWorkCodeName = undefined;\r\n\r\n enableSelectAll = false;\r\n enableMultiEdit = false;\r\n }\r\n function sortSelectedRowsForUpdate() {\r\n sortedSelectedRows = {};\r\n\r\n selectedRows.forEach(sr => {\r\n if (!sortedSelectedRows[sr.status]) {\r\n sortedSelectedRows[sr.status] = [];\r\n }\r\n\r\n sortedSelectedRows[sr.status].push(sr.id);\r\n });\r\n\r\n console.table(sortedSelectedRows);\r\n }\r\n // Approve/Reject/Submit\r\n //------------------------------------\r\n function updateSelectAllStatus(type) {\r\n let updatePromiseArray = [];\r\n const selectedRowKeys = Object.keys(sortedSelectedRows);\r\n let statusUpdateData = {};\r\n switch (type) {\r\n case 'approve':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'A') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'S',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n }\r\n });\r\n break;\r\n case 'reject':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'A') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'R',\r\n userID: $.session.UserId,\r\n rejectionReason: rejectionReasonText,\r\n };\r\n }\r\n });\r\n break;\r\n case 'submit':\r\n selectedRowKeys.forEach(key => {\r\n if (key === 'P') {\r\n statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: 'A',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n var updatePromise = new Promise((fulfill, reject) => {\r\n singleEntryAjax.adminUpdateSingleEntryStatus(statusUpdateData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n\r\n updatePromise.then(() => {\r\n successfulSave.show();\r\n selectedRows = [];\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n getReviewTableData(populateTable);\r\n }, 1000);\r\n });\r\n }\r\n\r\n function updateEntryStatus() {\r\n var updatePromiseArray = [];\r\n\r\n var selectedRowKeys = Object.keys(sortedSelectedRows);\r\n selectedRowKeys.forEach(key => {\r\n var statusUpdateData = {\r\n token: $.session.Token,\r\n singleEntryIdString:\r\n sortedSelectedRows[key].length > 1\r\n ? sortedSelectedRows[key].join(',')\r\n : sortedSelectedRows[key][0],\r\n newStatus: '',\r\n userID: $.session.UserId,\r\n rejectionReason: '',\r\n };\r\n\r\n statusUpdateData.newStatus = key === 'P' ? 'A' : '';\r\n if (statusUpdateData.newStatus === '' && rejectOrApprove) {\r\n statusUpdateData.newStatus = rejectOrApprove === 'approve' ? 'S' : 'R';\r\n statusUpdateData.rejectionReason = rejectOrApprove === 'approve' ? '' : rejectionReasonText;\r\n }\r\n\r\n console.table(statusUpdateData);\r\n\r\n var updatePromise = new Promise((fulfill, reject) => {\r\n singleEntryAjax.adminUpdateSingleEntryStatus(statusUpdateData, function (results) {\r\n fulfill();\r\n });\r\n });\r\n\r\n updatePromiseArray.push(updatePromise);\r\n });\r\n\r\n Promise.all(updatePromiseArray).then(() => {\r\n successfulSave.show();\r\n selectedRows = [];\r\n setTimeout(function () {\r\n successfulSave.hide();\r\n getReviewTableData(populateTable);\r\n }, 1000);\r\n });\r\n }\r\n // Status Change Popup\r\n //------------------------------------\r\n function setApproveOrReject(approveOrReject) {\r\n rejectOrApprove = approveOrReject;\r\n }\r\n function buildStatusChangePopupMessage() {\r\n var pCount = sortedSelectedRows['P'] ? sortedSelectedRows['P'].length : 0;\r\n var aCount = sortedSelectedRows['A'] ? sortedSelectedRows['A'].length : 0;\r\n\r\n var messageBody = document.createElement('div');\r\n messageBody.classList.add('timeApprovalWarningPopup__messages');\r\n\r\n if (pCount > 0) {\r\n var pMessageContainer = document.createElement('div');\r\n pMessageContainer.classList.add('timeApprovalWarningPopup__messageContainer');\r\n\r\n var pMessageWrap = document.createElement('div');\r\n pMessageWrap.classList.add('timeApprovalWarningPopup__messageWrap');\r\n var pMessage = document.createElement('p');\r\n pMessage.innerHTML = `You have selected ${pCount} ${pCount === 1 ? `entry` : 'entries'\r\n } with a status of Pending, to be submitted.`;\r\n pMessageWrap.appendChild(pMessage);\r\n\r\n pMessageContainer.appendChild(pMessageWrap);\r\n pMessageContainer.appendChild(pMessageWrap);\r\n\r\n messageBody.appendChild(pMessageContainer);\r\n }\r\n if (aCount > 0) {\r\n var aMessageContainer = document.createElement('div');\r\n aMessageContainer.classList.add('timeApprovalWarningPopup__messageContainer');\r\n\r\n var aMessageWrap = document.createElement('div');\r\n aMessageWrap.classList.add('timeApprovalWarningPopup__messageWrap');\r\n var aMessage = document.createElement('p');\r\n aMessage.innerHTML = `You have selected ${aCount} ${aCount === 1 ? `entry` : 'entries'\r\n } with a status of Awaiting Approval.`;\r\n aMessageWrap.appendChild(aMessage);\r\n\r\n var aMessage2Wrap = document.createElement('div');\r\n aMessage2Wrap.classList.add('timeApprovalWarningPopup__messageWrap', 'messageWithBtns');\r\n var aMessage2 = document.createElement('p');\r\n\r\n aMessage2.innerHTML = `Would you like to Approve or Reject ${aCount === 1 ? `this entry` : 'these entries'\r\n }?`;\r\n var aMessageBtnWrap = document.createElement('div');\r\n aMessageBtnWrap.classList.add('btnWrap');\r\n var approveBtn = button.build({ text: 'Approve' });\r\n var rejectBtn = button.build({ text: 'Reject' });\r\n\r\n approveBtn.addEventListener('click', () => {\r\n approveBtn.classList.add('enabled');\r\n rejectBtn.classList.remove('enabled');\r\n setApproveOrReject('approve');\r\n });\r\n rejectBtn.addEventListener('click', () => {\r\n rejectBtn.classList.add('enabled');\r\n approveBtn.classList.remove('enabled');\r\n setApproveOrReject('reject');\r\n });\r\n\r\n aMessageBtnWrap.appendChild(approveBtn);\r\n aMessageBtnWrap.appendChild(rejectBtn);\r\n aMessage2Wrap.appendChild(aMessage2);\r\n aMessage2Wrap.appendChild(aMessageBtnWrap);\r\n\r\n aMessageContainer.appendChild(aMessageWrap);\r\n aMessageContainer.appendChild(aMessage2Wrap);\r\n\r\n messageBody.appendChild(aMessageContainer);\r\n }\r\n\r\n return messageBody;\r\n }\r\n function showStatusChangePopup() {\r\n var warningPop = POPUP.build({});\r\n warningPop.classList.add('timeApprovalWarningPopup');\r\n\r\n // build message\r\n var message = buildStatusChangePopupMessage();\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n var yesBtn = button.build({\r\n text: 'Proceed',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n updateEntryStatus();\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n var noBtn = button.build({\r\n text: 'Cancel',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: function () {\r\n POPUP.hide(warningPop);\r\n },\r\n });\r\n\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n warningPop.appendChild(message);\r\n warningPop.appendChild(btnWrap);\r\n\r\n POPUP.show(warningPop);\r\n }\r\n\r\n // Data Getters\r\n //------------------------------------\r\n function getDropdownData(callback) {\r\n singleEntryAjax.getSingleEntrySupervisors($.session.PeopleId, function (results) {\r\n supervisors = results;\r\n\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(\r\n parseInt($.session.PeopleId),\r\n function (results) {\r\n employees = results;\r\n\r\n singleEntryAjax.getAdminSingleEntryLocations(function (results) {\r\n locations = results;\r\n\r\n callback();\r\n });\r\n },\r\n );\r\n });\r\n }\r\n function getReviewTableData(callback) {\r\n var filterData = {\r\n token: $.session.Token,\r\n endDate,\r\n startDate,\r\n supervisorId: supervisorId ? supervisorId : $.session.PeopleId,\r\n locationId: locationId ? locationId : '',\r\n employeeId: employeeId ? employeeId : '',\r\n status: status || status !== '%' ? status : '',\r\n workCodeId: workCodeId ? workCodeId : '',\r\n };\r\n singleEntryAjax.singleEntryFilterAdminList(filterData, function (results) {\r\n reviewTableData = results;\r\n callback(results);\r\n\r\n //clear google map. Don't show it unless they click the show map button.\r\n\r\n // if (showMap) {\r\n // addMap()\r\n // } else GOOGLE_MAP.clearMap()\r\n\r\n GOOGLE_MAP.clearMap();\r\n showMap = false;\r\n });\r\n }\r\n\r\n // Action Nav\r\n //------------------------------------\r\n function actionNavEvent(type) {\r\n ACTION_NAV.hide();\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n if (selectedRows.length > 0) {\r\n if (type === 'reject') {\r\n //open rejection reason popup\r\n var popup = POPUP.build({\r\n header: 'Reject Multiple Time Records',\r\n });\r\n\r\n var dataMessage = document.createElement('p');\r\n dataMessage.style.marginBottom = '2em';\r\n dataMessage.innerHTML = '';\r\n\r\n // Text Input\r\n var rejectionReason = input.build({\r\n label: 'Reason:',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n charLimit: '500',\r\n forceCharLimit: true,\r\n });\r\n var reasonInput = document.createElement('div');\r\n reasonInput.appendChild(rejectionReason);\r\n rejectionReason.addEventListener('change', event => {\r\n rejectionReasonText = event.target.value;\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n //save button\r\n var notifyBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n sortSelectedRowsForUpdate();\r\n setApproveOrReject('reject');\r\n updateSelectAllStatus(type);\r\n\r\n rejectionReasonText = '';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //cancel button\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //display data\r\n popup.appendChild(dataMessage);\r\n popup.appendChild(reasonInput);\r\n\r\n btnWrap.appendChild(notifyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n //show popup\r\n POPUP.show(popup);\r\n } else {\r\n sortSelectedRowsForUpdate();\r\n updateSelectAllStatus(type);\r\n }\r\n }\r\n }\r\n\r\n function handleActionNavEvent(target) {\r\n var targetAction = target.dataset.actionNav;\r\n switch (targetAction) {\r\n case 'timeApprovalApprove': {\r\n actionNavEvent('approve');\r\n break;\r\n }\r\n case 'timeApprovalSubmit': {\r\n actionNavEvent('submit');\r\n break;\r\n }\r\n case 'timeApprovalReject': {\r\n actionNavEvent('reject');\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n function setupActionNav() {\r\n approveNavBtn = button.build({\r\n text: 'Approve',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalApprove' }],\r\n });\r\n submitNavBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalSubmit' }],\r\n });\r\n rejectNavBtn = button.build({\r\n text: 'Reject',\r\n style: 'secondary',\r\n type: 'contained',\r\n attributes: [{ key: 'data-action-nav', value: 'timeApprovalReject' }],\r\n });\r\n ACTION_NAV.populate([approveNavBtn, submitNavBtn, rejectNavBtn]);\r\n ACTION_NAV.hide();\r\n }\r\n\r\n // Filtering\r\n //------------------------------------\r\n function buildFilteredBy() {\r\n var filteredBy = document.querySelector('.filteredByData');\r\n\r\n if (!filteredBy) {\r\n filteredBy = document.createElement('div');\r\n filteredBy.classList.add('filteredByData');\r\n filterButtonSet();\r\n filteredBy.appendChild(btnWrap);\r\n }\r\n\r\n if (document.getElementById('startDateBtn') != null) {\r\n document.getElementById('startDateBtn').innerHTML = 'From Date: ' + moment(startDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('endDateBtn').innerHTML = 'To Date: ' + moment(endDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + supervisorName;\r\n }\r\n\r\n\r\n if (employeeName === 'All' || employeeName === '') { \r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n if (document.getElementById('employeeBtn') != null)\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + employeeName;\r\n }\r\n\r\n if (locationName === 'All' || locationName === '%') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n if (document.getElementById('locationBtn') != null)\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (statusText === 'All' || statusText === '%') {\r\n btnWrap.appendChild(statusBtnWrap);\r\n btnWrap.removeChild(statusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(statusBtnWrap);\r\n if (document.getElementById('statusBtn') != null)\r\n document.getElementById('statusBtn').innerHTML = 'Status: ' + statusText;\r\n }\r\n\r\n\r\n if (workCodeName === 'All' || workCodeName === '%') {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n btnWrap.removeChild(workCodeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n if (document.getElementById('workCodeBtn') != null)\r\n document.getElementById('workCodeBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n }\r\n\r\n return filteredBy;\r\n }\r\n\r\n function filterButtonSet() {\r\n filterBtn = button.build({\r\n text: 'Filter',\r\n icon: 'filter',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'filterBtnNew',\r\n callback: () => { showFilterPopup('ALL') },\r\n });\r\n\r\n supervisorBtn = button.build({\r\n id: 'supervisorBtn',\r\n text: 'Supervisor: ' + supervisorName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('supervisorBtn') },\r\n });\r\n\r\n locationBtn = button.build({\r\n id: 'locationBtn',\r\n text: 'Location: ' + locationName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('locationBtn') },\r\n });\r\n locationCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('locationBtn') },\r\n });\r\n\r\n statusBtn = button.build({\r\n id: 'statusBtn',\r\n text: 'Consumer: ' + statusText,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('statusBtn') },\r\n });\r\n statusCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('statusBtn') },\r\n });\r\n\r\n employeeBtn = button.build({\r\n id: 'employeeBtn',\r\n text: 'Employee: ' + employeeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('employeeBtn') },\r\n });\r\n employeeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('employeeBtn') },\r\n });\r\n\r\n workCodeBtn = button.build({\r\n id: 'workCodeBtn',\r\n text: 'Work Code: ' + workCodeName,\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('workCodeBtn') },\r\n });\r\n workCodeCloseBtn = button.build({\r\n icon: 'Delete',\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterCloseBtn',\r\n callback: () => { closeFilter('workCodeBtn') },\r\n });\r\n\r\n startDateBtn = button.build({\r\n id: 'startDateBtn',\r\n text: 'From Date: ' + UTIL.formatDateFromIso(startDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('startDateBtn') },\r\n });\r\n\r\n endDateBtn = button.build({\r\n id: 'endDateBtn',\r\n text: 'To Date: ' + UTIL.formatDateFromIso(endDate),\r\n style: 'secondary',\r\n type: 'text',\r\n classNames: 'filterSelectionBtn',\r\n callback: () => { showFilterPopup('endDateBtn') },\r\n });\r\n\r\n btnWrap = document.createElement('div');\r\n btnWrap.classList.add('filterBtnWrap');\r\n btnWrap.appendChild(filterBtn);\r\n\r\n startDateBtnWrap = document.createElement('div');\r\n startDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n startDateBtnWrap.appendChild(startDateBtn);\r\n btnWrap.appendChild(startDateBtnWrap);\r\n\r\n endDateBtnWrap = document.createElement('div');\r\n endDateBtnWrap.classList.add('filterSelectionBtnWrap');\r\n endDateBtnWrap.appendChild(endDateBtn);\r\n btnWrap.appendChild(endDateBtnWrap);\r\n\r\n supervisorBtnWrap = document.createElement('div');\r\n supervisorBtnWrap.classList.add('filterSelectionBtnWrap');\r\n supervisorBtnWrap.appendChild(supervisorBtn);\r\n btnWrap.appendChild(supervisorBtnWrap);\r\n\r\n locationBtnWrap = document.createElement('div');\r\n locationBtnWrap.classList.add('filterSelectionBtnWrap');\r\n locationBtnWrap.appendChild(locationBtn);\r\n locationBtnWrap.appendChild(locationCloseBtn);\r\n btnWrap.appendChild(locationBtnWrap);\r\n\r\n statusBtnWrap = document.createElement('div');\r\n statusBtnWrap.classList.add('filterSelectionBtnWrap');\r\n statusBtnWrap.appendChild(statusBtn);\r\n statusBtnWrap.appendChild(statusCloseBtn);\r\n btnWrap.appendChild(statusBtnWrap);\r\n\r\n employeeBtnWrap = document.createElement('div');\r\n employeeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n employeeBtnWrap.appendChild(employeeBtn);\r\n employeeBtnWrap.appendChild(employeeCloseBtn);\r\n btnWrap.appendChild(employeeBtnWrap);\r\n\r\n workCodeBtnWrap = document.createElement('div');\r\n workCodeBtnWrap.classList.add('filterSelectionBtnWrap');\r\n workCodeBtnWrap.appendChild(workCodeBtn);\r\n workCodeBtnWrap.appendChild(workCodeCloseBtn);\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n }\r\n\r\n function closeFilter(closeFilter) {\r\n if (closeFilter == 'locationBtn') {\r\n locationName = 'All';\r\n locationId = '%';\r\n tmpLocationId = '%';\r\n tmpLocationName = 'All';\r\n }\r\n if (closeFilter == 'statusBtn') {\r\n statusText = 'All';\r\n status = '%';\r\n tmpStatus = '%';\r\n tmpStatusText = 'All';\r\n }\r\n if (closeFilter == 'employeeBtn') {\r\n employeeId = '';\r\n employeeName = 'All';\r\n tmpEmployeeId = '';\r\n tmpEmployeeName = 'All';\r\n }\r\n if (closeFilter == 'workCodeBtn') {\r\n workCodeId = '%';\r\n workCodeName = 'All';\r\n tmpWorkCodeId = '%';\r\n tmpWorkCodeName = 'All';\r\n }\r\n filterApply();\r\n }\r\n\r\n function updateFilterData(data) {\r\n if (data.tmpSupervisorId) supervisorId = data.tmpSupervisorId;\r\n if (data.tmpSupervisorName) supervisorName = data.tmpSupervisorName;\r\n if (data.tmpLocationId) locationId = data.tmpLocationId;\r\n if (data.tmpLocationName) locationName = data.tmpLocationName;\r\n if (data.tmpEmployeeId || data.tmpEmployeeId === '') employeeId = data.tmpEmployeeId;\r\n if (data.tmpEmployeeName) employeeName = data.tmpEmployeeName;\r\n if (data.tmpStatus) status = data.tmpStatus;\r\n if (data.tmpStatusText) statusText = data.tmpStatusText;\r\n if (data.tmpWorkCodeId || data.tmpWorkCodeId === '') workCodeId = data.tmpWorkCodeId;\r\n if (data.tmpWorkCodeName) workCodeName = data.tmpWorkCodeName;\r\n if (data.tmpStartDate) startDate = data.tmpStartDate;\r\n if (data.tmpEndDate) endDate = data.tmpEndDate;\r\n if (data.tmpStartDate) payPeriod.start = data.tmpStartDate;\r\n if (data.tmpEndDate) payPeriod.end = data.tmpEndDate;\r\n\r\n }\r\n function buildSupervisorDropdown() {\r\n var select = dropdown.build({\r\n label: 'Supervisor',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = supervisors.map(sup => {\r\n return {\r\n value: sup.Person_ID,\r\n text: `${sup.last_name}, ${sup.first_name}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n\r\n dropdown.populate(select, data, supervisorId);\r\n\r\n return select;\r\n }\r\n function buildEmployeeDropdown() {\r\n var select = dropdown.build({\r\n dropdownId: 'subEmployeeList',\r\n label: 'Employee',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n var data = employees.map(emp => {\r\n return {\r\n value: emp.Person_ID,\r\n text: `${emp.last_name}, ${emp.first_name}`,\r\n };\r\n });\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n data.unshift({\r\n value: '',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, employeeId);\r\n\r\n return select;\r\n }\r\n function repopulateEmployeeDropdown() {\r\n var data = employees.map(emp => {\r\n return {\r\n value: emp.Person_ID,\r\n text: `${emp.last_name}, ${emp.first_name}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n var aNameSplit = a.text.split(',');\r\n var bNameSplit = b.text.split(',');\r\n var aName = `${aNameSplit[0].trim()}${aNameSplit[1].trim()}`.toLowerCase();\r\n var bName = `${bNameSplit[0].trim()}${bNameSplit[1].trim()}`.toLowerCase();\r\n\r\n return aName > bName ? 1 : -1;\r\n });\r\n\r\n data.unshift({\r\n value: '',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate('subEmployeeList', data, employeeId);\r\n }\r\n function buildLocationDropdown() {\r\n var select = dropdown.build({\r\n label: 'Location',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = locations.map(loc => {\r\n return {\r\n value: loc.locationID,\r\n text: loc.shortDescription,\r\n };\r\n });\r\n data.sort((a, b) => (a.text > b.text ? 1 : -1));\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n var defaultVal;\r\n\r\n if (locationId) defaultVal = locationId;\r\n\r\n dropdown.populate(select, data, locationId);\r\n\r\n return select;\r\n }\r\n function buildStatusDropdown() {\r\n var select = dropdown.build({\r\n label: 'Status',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = statuses.map(status => {\r\n return {\r\n value: status.key,\r\n text: status.value,\r\n };\r\n });\r\n\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, status);\r\n\r\n return select;\r\n }\r\n function buildWorkCodeDropdown() {\r\n var select = dropdown.build({\r\n label: 'Work Codes',\r\n style: 'secondary',\r\n readonly: false,\r\n });\r\n\r\n var data = workCodeData.map(wc => {\r\n return {\r\n value: wc.workcodeid,\r\n text: wc.workcodename,\r\n };\r\n });\r\n\r\n data.unshift({\r\n value: '%',\r\n text: 'All',\r\n });\r\n\r\n dropdown.populate(select, data, workCodeId);\r\n\r\n return select;\r\n }\r\n function setupFilterEvents() {\r\n tmpSupervisorId;\r\n tmpSupervisorName;\r\n tmpLocationId;\r\n tmpLocationName;\r\n tmpEmployeeId;\r\n tmpEmployeeName;\r\n tmpStatus;\r\n tmpStatusText;\r\n tmpStartDate;\r\n tmpEndDate;\r\n\r\n supervisorDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpSupervisorId = selectedOption.value;\r\n tmpSupervisorName = selectedOption.innerHTML;\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(tmpSupervisorId, function (results) {\r\n employees = results;\r\n repopulateEmployeeDropdown();\r\n });\r\n });\r\n employeeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpEmployeeId = selectedOption.value;\r\n tmpEmployeeName = selectedOption.innerHTML;\r\n });\r\n locationDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpLocationId = selectedOption.value;\r\n tmpLocationName = selectedOption.innerHTML;\r\n });\r\n statusDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpStatus = selectedOption.value;\r\n tmpStatusText = selectedOption.innerHTML;\r\n });\r\n workCodeDropdown.addEventListener('change', event => {\r\n var selectedOption = event.target.options[event.target.selectedIndex];\r\n tmpWorkCodeId = selectedOption.value;\r\n tmpWorkCodeName = selectedOption.innerHTML;\r\n });\r\n startDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n tmpStartDate = event.target.value;\r\n payPeriod.start = event.target.value;\r\n checkDateValidation();\r\n } else {\r\n event.target.value = tmpStartDate;\r\n }\r\n });\r\n endDateInput.addEventListener('change', event => {\r\n if (isValidDate(event.target.value)) {\r\n tmpEndDate = event.target.value;\r\n payPeriod.end = event.target.value;\r\n checkDateValidation();\r\n } else {\r\n event.target.value = tmpEndDate;\r\n }\r\n });\r\n\r\n applyBtn.addEventListener('click', () => {\r\n\r\n if (IsFilterDisable) {\r\n POPUP.hide(filterPopup);\r\n\r\n // if (tmpEmployeeId !== \"\") {\r\n // showMap = true\r\n // } else showMap = false\r\n filterApply();\r\n }\r\n IsFilterDisable = true;\r\n });\r\n\r\n applyBtn.addEventListener('keypress', event => {\r\n if (event.keyCode === 13 && applyBtn.classList.contains('disabled')) {\r\n IsFilterDisable = false;\r\n }\r\n });\r\n\r\n cancelBtn.addEventListener('click', () => {\r\n POPUP.hide(filterPopup);\r\n tmpStartDate = startDate;\r\n tmpEndDate = endDate;\r\n });\r\n }\r\n\r\n function filterApply() {\r\n if (tmpWorkCodeId) workCodeId = tmpWorkCodeId;\r\n if (tmpWorkCodeName) workCodeName = tmpWorkCodeName;\r\n\r\n updateFilterData({\r\n tmpSupervisorId,\r\n tmpSupervisorName,\r\n tmpLocationId,\r\n tmpLocationName,\r\n tmpEmployeeId,\r\n tmpEmployeeName,\r\n tmpStatus,\r\n tmpStatusText,\r\n tmpWorkCodeId,\r\n tmpWorkCodeName,\r\n tmpStartDate,\r\n tmpEndDate\r\n });\r\n \r\n document.getElementById('startDateBtn').innerHTML = 'From Date: ' + moment(startDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('endDateBtn').innerHTML = 'To Date: ' + moment(endDate, 'YYYY-MM-DD').format('M/D/YYYY');\r\n document.getElementById('supervisorBtn').innerHTML = 'Supervisor: ' + supervisorName;\r\n\r\n if (employeeName === 'All' || employeeName === '') {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n btnWrap.removeChild(employeeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(employeeBtnWrap);\r\n document.getElementById('employeeBtn').innerHTML = 'Employee: ' + employeeName;\r\n }\r\n\r\n if (locationName === 'All' || locationName === '%') {\r\n btnWrap.appendChild(locationBtnWrap);\r\n btnWrap.removeChild(locationBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(locationBtnWrap);\r\n document.getElementById('locationBtn').innerHTML = 'Location: ' + locationName;\r\n }\r\n\r\n if (statusText === 'All' || statusText === '%') {\r\n btnWrap.appendChild(statusBtnWrap);\r\n btnWrap.removeChild(statusBtnWrap);\r\n } else {\r\n btnWrap.appendChild(statusBtnWrap);\r\n document.getElementById('statusBtn').innerHTML = 'Status: ' + statusText;\r\n }\r\n\r\n\r\n if (workCodeName === 'All' || workCodeName === '%') {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n btnWrap.removeChild(workCodeBtnWrap);\r\n }\r\n else {\r\n btnWrap.appendChild(workCodeBtnWrap);\r\n document.getElementById('workCodeBtn').innerHTML = 'Work Code: ' + workCodeName;\r\n } \r\n\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n\r\n enableMultiEdit = false;\r\n enableSelectAll = false;\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n\r\n }\r\n function showFilterPopup(IsShow) {\r\n filterPopup = POPUP.build({ hideX: true });\r\n\r\n supervisorDropdown = buildSupervisorDropdown();\r\n employeeDropdown = buildEmployeeDropdown();\r\n locationDropdown = buildLocationDropdown();\r\n statusDropdown = buildStatusDropdown();\r\n workCodeDropdown = buildWorkCodeDropdown();\r\n\r\n startDateInput = input.build({\r\n id: 'startDateInput',\r\n label: 'From',\r\n type: 'date',\r\n style: 'secondary',\r\n value: startDate,\r\n });\r\n endDateInput = input.build({\r\n id: 'endDateInput',\r\n label: 'To',\r\n type: 'date',\r\n style: 'secondary',\r\n value: endDate,\r\n });\r\n\r\n applyBtn = button.build({\r\n text: 'Apply',\r\n style: 'secondary',\r\n type: 'contained',\r\n });\r\n cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(applyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n const dateWrap = document.createElement('div');\r\n dateWrap.classList.add('dateWrap', 'btnWrap');\r\n if (IsShow == 'ALL' || IsShow == 'startDateBtn')\r\n dateWrap.appendChild(startDateInput);\r\n if (IsShow == 'ALL' || IsShow == 'endDateBtn')\r\n dateWrap.appendChild(endDateInput);\r\n\r\n if (IsShow == 'ALL' || IsShow == 'supervisorBtn')\r\n filterPopup.appendChild(supervisorDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'employeeBtn')\r\n filterPopup.appendChild(employeeDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'locationBtn')\r\n filterPopup.appendChild(locationDropdown);\r\n if (IsShow == 'ALL' || IsShow == 'statusBtn')\r\n filterPopup.appendChild(statusDropdown);\r\n filterPopup.appendChild(dateWrap);\r\n if (IsShow == 'ALL' || IsShow == 'workCodeBtn')\r\n filterPopup.appendChild(workCodeDropdown);\r\n filterPopup.appendChild(btnWrap);\r\n\r\n setupFilterEvents();\r\n\r\n singleEntryAjax.getSubEmployeeListAndCountInfo(supervisorId, function (results) {\r\n employees = results;\r\n repopulateEmployeeDropdown();\r\n });\r\n\r\n checkDateValidation();\r\n POPUP.show(filterPopup);\r\n }\r\n\r\n\r\n function checkDateValidation() {\r\n if (tmpStartDate > tmpEndDate) {\r\n endDateInput.classList.add('error');\r\n } else {\r\n endDateInput.classList.remove('error');\r\n }\r\n setBtnStatusOfApplyFilter();\r\n }\r\n\r\n function setBtnStatusOfApplyFilter() {\r\n var hasErrors = [].slice.call(document.querySelectorAll('.error'));\r\n if (hasErrors.length !== 0) {\r\n applyBtn.classList.add('disabled');\r\n return;\r\n } else {\r\n applyBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n // Time Entry Details Popup\r\n //------------------------------------\r\n function getDataForTimeEntryEdit(status, entryId, isOrginUser) {\r\n $.session.editSingleEntryCardStatus = status;\r\n singleEntryAjax.getSingleEntryById(entryId, results => {\r\n singleEntryAjax.getSingleEntryConsumersPresent(entryId, consumers => {\r\n editTimeEntry.init({\r\n isOrginUser,\r\n entry: results,\r\n consumers: consumers,\r\n isAdminEdit: true,\r\n payPeriod,\r\n recordActivityElement: document.getElementById(`${entryId}-seRecordActivity`),\r\n });\r\n });\r\n });\r\n }\r\n function showRowDetails(\r\n entryId,\r\n entryStatus,\r\n consumersPresent,\r\n isValid,\r\n rowName,\r\n rowDate,\r\n rowStartTime,\r\n rowEndTime,\r\n rowWorkCode,\r\n isOrginUser,\r\n ) {\r\n selectedRows = [];\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n sortSelectedRowsForUpdate();\r\n // popup\r\n var popup = POPUP.build({\r\n classNames: 'timeEntryDetailsPopup',\r\n });\r\n // btns\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('buttonWrap');\r\n var editBtn = button.build({\r\n text: 'Edit',\r\n style: 'secondary',\r\n type: 'contained',\r\n //icon: 'edit',\r\n classNames: 'editEntryBtn',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n getDataForTimeEntryEdit(entryStatus, entryId, isOrginUser);\r\n },\r\n });\r\n var approveBtn = button.build({\r\n text: 'Approve',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (!isValid) {\r\n showSubmitError(`Unable to approve entry, end time needed.`);\r\n } else {\r\n setApproveOrReject('approve');\r\n updateEntryStatus();\r\n }\r\n },\r\n });\r\n var submitBtn = button.build({\r\n text: 'Submit',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n if (!isValid) {\r\n showSubmitError(`Unable to submit entry, end time needed.`);\r\n } else {\r\n setApproveOrReject('');\r\n updateEntryStatus();\r\n }\r\n },\r\n });\r\n var rejectBtn = button.build({\r\n text: 'Reject',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n function showRejectionPopup() {\r\n //popup\r\n var popup = POPUP.build({\r\n header: 'Reject Time Entry - ' + rowName,\r\n });\r\n\r\n //put together work code description\r\n var workCode = workCodeLookup[rowWorkCode];\r\n if (workCode != '') {\r\n var workCodeText = rowWorkCode + ' - ' + workCode;\r\n } else {\r\n var workCodeText = rowWorkCode;\r\n }\r\n\r\n //format consumer data before displaying\r\n var dataMessage = document.createElement('p');\r\n dataMessage.style.marginBottom = '2em';\r\n dataMessage.innerHTML =\r\n 'Date: ' +\r\n rowDate +\r\n '
    ' +\r\n 'Start Time: ' +\r\n rowStartTime +\r\n '
    ' +\r\n 'End Time: ' +\r\n rowEndTime +\r\n '
    ' +\r\n 'Work Code: ' +\r\n workCodeText;\r\n\r\n // Text Input\r\n var rejectionReason = input.build({\r\n label: 'Reason:',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n charLimit: '500',\r\n forceCharLimit: true,\r\n });\r\n var reasonInput = document.createElement('div');\r\n reasonInput.appendChild(rejectionReason);\r\n rejectionReason.addEventListener('change', event => {\r\n rejectionReasonText = event.target.value;\r\n });\r\n\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n\r\n //save button\r\n var notifyBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n //Update Work Code and the Rejection Reason\r\n setApproveOrReject('reject');\r\n updateEntryStatus();\r\n rejectionReasonText = '';\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //cancel button\r\n var cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: function () {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n\r\n //display data\r\n popup.appendChild(dataMessage);\r\n popup.appendChild(reasonInput);\r\n\r\n btnWrap.appendChild(notifyBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n popup.appendChild(btnWrap);\r\n\r\n //show popup\r\n POPUP.show(popup);\r\n }\r\n showRejectionPopup();\r\n },\r\n });\r\n\r\n btnWrap.appendChild(editBtn);\r\n if (entryStatus === 'P') {\r\n btnWrap.appendChild(submitBtn);\r\n }\r\n if (entryStatus === 'A') {\r\n btnWrap.appendChild(approveBtn);\r\n btnWrap.appendChild(rejectBtn);\r\n }\r\n // Aditional details\r\n const consumerDisplay = document.createElement('div');\r\n consumerDisplay.id = 'consumerDisplay';\r\n const loadingDisplay = document.createElement('div');\r\n loadingDisplay.id = 'loadingDisplay';\r\n const transportationDisplay = document.createElement('div');\r\n transportationDisplay.id = 'transportationDisplay';\r\n\r\n popup.appendChild(loadingDisplay);\r\n popup.appendChild(consumerDisplay);\r\n popup.appendChild(transportationDisplay);\r\n popup.appendChild(btnWrap);\r\n\r\n POPUP.show(popup);\r\n timeEntryDetailsPopup.init(entryId, consumersPresent);\r\n }\r\n\r\n // Admin Review Table\r\n //------------------------------------\r\n function enableMultiEditRows() {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n mulitSelectBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n ACTION_NAV.show();\r\n } else {\r\n ACTION_NAV.hide();\r\n }\r\n\r\n selectedRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n function enableSelectAllRows() {\r\n enableSelectAll = !enableSelectAll;\r\n\r\n selectAllBtn.classList.toggle('enabled');\r\n\r\n if (enableSelectAll) {\r\n ACTION_NAV.show();\r\n enableMultiEdit = true;\r\n mulitSelectBtn.classList.add('disabled');\r\n mulitSelectBtn.classList.remove('enabled');\r\n\r\n selectedRows = [];\r\n\r\n var rows = [].slice.call(document.querySelectorAll('.table__row'));\r\n rows.forEach(r => {\r\n var isValid = r.dataset.valid === 'true' ? true : false;\r\n if (!isValid) return;\r\n\r\n var entryStatus = r.dataset.status;\r\n var entryId = r.id;\r\n\r\n if (entryStatus === 'P' || entryStatus === 'A') {\r\n r.classList.add('selected');\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n }\r\n });\r\n } else {\r\n ACTION_NAV.hide();\r\n enableMultiEdit = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n\r\n selectedRows = [];\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n }\r\n // events\r\n function handleReviewTableEvents(event) {\r\n var isRow = event.target.classList.contains('table__row');\r\n var isSelected = event.target.classList.contains('selected');\r\n var entryStatus = event.target.dataset.status;\r\n var entryId = event.target.id;\r\n\r\n //capture rowName, rowDate, rowStartTime, rowEndTime, rowWorkCode\r\n var rowName = event.target.childNodes[1].innerText;\r\n var rowDate = event.target.childNodes[2].innerText;\r\n var rowStartTime = event.target.childNodes[3].innerText;\r\n var rowEndTime = event.target.childNodes[4].innerText;\r\n var rowWorkCode = event.target.childNodes[7].innerText;\r\n\r\n var consumersPresent = event.target.dataset.consumers;\r\n var isValid = event.target.dataset.valid === 'true' ? true : false;\r\n var isOrginUser = event.target.dataset.valid === 'Y' ? true : false;\r\n if (!isRow) return; // if not row return\r\n\r\n if (enableMultiEdit && isValid) {\r\n if (isSelected) {\r\n // if alread selected, de-select it\r\n event.target.classList.remove('selected');\r\n selectedRows = selectedRows.filter(sr => sr.id !== entryId);\r\n if (enableSelectAll) {\r\n enableSelectAll = false;\r\n mulitSelectBtn.classList.remove('disabled');\r\n mulitSelectBtn.classList.add('enabled');\r\n selectAllBtn.classList.remove('enabled');\r\n }\r\n } else {\r\n if (entryStatus === 'P' || entryStatus === 'A') {\r\n event.target.classList.add('selected');\r\n selectedRows.push({ id: entryId, status: entryStatus });\r\n }\r\n }\r\n } else if (!enableMultiEdit) {\r\n selectedRows = [];\r\n showRowDetails(\r\n entryId,\r\n entryStatus,\r\n consumersPresent,\r\n isValid,\r\n rowName,\r\n rowDate,\r\n rowStartTime,\r\n rowEndTime,\r\n rowWorkCode,\r\n isOrginUser,\r\n );\r\n }\r\n }\r\n // populate\r\n function populateTable(results) {\r\n totalHours = 0;\r\n var tableData = results.map(entry => {\r\n var isOrginUser = $.session.PeopleId === entry.peopleId ? 'Y' : 'N';\r\n\r\n var entryId = entry.Single_Entry_ID;\r\n var status = statusLookup[entry.Anywhere_status];\r\n var employee = `${entry.lastname}, ${entry.firstname}`;\r\n var date = entry.Date_of_Service.split(' ')[0];\r\n var start = UTIL.convertFromMilitary(entry.start_time);\r\n var end = UTIL.convertFromMilitary(\r\n entry.end_time === '23:59:59' ? '00:00:00' : entry.end_time,\r\n );\r\n var hours = parseFloat(entry.check_hours);\r\n var location = entry.Location_Name;\r\n var workcode = entry.WCCode;\r\n var comments = entry.comments;\r\n const consumersPresent = entry.Number_Consumers_Present;\r\n const transportationUnits = entry.transportation_units;\r\n let isValid;\r\n\r\n totalHours += hours;\r\n if (entry.keyTimes === 'Y') {\r\n // end time required to be valid\r\n isValid = entry.end_time === '' ? 'false' : 'true';\r\n } else {\r\n isValid = 'true';\r\n }\r\n\r\n //consumer present and transportation icons\r\n const additionalInformation = document.createElement('div');\r\n additionalInformation.classList.add('additionalInfoBox');\r\n additionalInformation.innerHTML = consumersPresent;\r\n if (transportationUnits !== '') additionalInformation.innerHTML += icons.car;\r\n\r\n const iconsBox = document.createElement('div');\r\n iconsBox.classList.add('iconsBox');\r\n iconsBox.appendChild(additionalInformation);\r\n\r\n if (comments !== \"\" && comments !== null) {\r\n const commentsBox = document.createElement('div');\r\n commentsBox.classList.add('commentsBox');\r\n commentsBox.innerHTML = icons.note;\r\n iconsBox.appendChild(commentsBox);\r\n\r\n if (isValid === 'false') {\r\n const svgElement = commentsBox.querySelector('svg');\r\n svgElement.style.color = 'white';\r\n }\r\n }\r\n\r\n return {\r\n id: entryId,\r\n values: [\r\n status,\r\n employee,\r\n date,\r\n start,\r\n end,\r\n hours,\r\n location,\r\n workcode,\r\n iconsBox.outerHTML\r\n ],\r\n attributes: [\r\n { key: 'data-status', value: entry.Anywhere_status },\r\n { key: 'data-consumers', value: consumersPresent },\r\n { key: 'data-valid', value: isValid },\r\n { key: 'data-origUser', value: isOrginUser },\r\n ],\r\n };\r\n });\r\n\r\n table.populate(reviewTable, tableData);\r\n totalHours = totalHours.toFixed(2);\r\n buildHoursWorked(totalHours);\r\n buildSERecordActivity(results);\r\n }\r\n // BUILD ==============\r\n // == Build Hours Worked ==\r\n function buildHoursWorked(hours) {\r\n if (Array.from(document.querySelectorAll('.table__row')).length === 1) return; // 1st row is the headers. If there is only the first row, there are no records\r\n const lastRow = Array.from(document.querySelectorAll('.table__row')).pop();\r\n const lastRowHour = lastRow.childNodes[5].innerText;\r\n lastRow.childNodes[5].outerHTML = `

    ${lastRowHour}

    Total Hours: ${hours}
    `;\r\n }\r\n\r\n // Row Additional Information from ticket 66490 Submitted/Rejected/Approved User and Date\r\n function buildSERecordActivity(seData) {\r\n function createElement(status, user, date, seID, rejected) {\r\n const dateVal = date.split(' ')[0];\r\n const timeVal = UTIL.formatTimeString(\r\n UTIL.convertToMilitary(`${date.split(' ')[1]} ${date.split(' ')[2]}`),\r\n );\r\n const element = document.createElement('p');\r\n element.classList.add('seRecordActivity');\r\n element.id = `${seID}-seRecordActivity`;\r\n element.innerText = `${status}: ${dateVal} - ${timeVal} - ${user}`;\r\n // if (rejected) element.classList.add('rejected'); //add red text to the message for rejected records\r\n const tableRow = document.getElementById(seID);\r\n tableRow.appendChild(element);\r\n }\r\n seData.forEach(entry => {\r\n switch (entry.Anywhere_status) {\r\n case 'A': // Submitted needs approval\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'S': // Submitted (and Approved)\r\n if (entry.approved_time != '') {\r\n createElement(\r\n 'Record Approved',\r\n entry.approvedUser,\r\n entry.approved_time,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n\r\n } else {\r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n }\r\n\r\n case 'I': // Imported into Advisor\r\n case 'D': // Duplicate \r\n createElement(\r\n 'Record Submitted',\r\n entry.submittedUser,\r\n entry.submit_date,\r\n entry.Single_Entry_ID,\r\n false,\r\n );\r\n break;\r\n case 'R': // Rejected\r\n createElement(\r\n 'Record Rejected',\r\n entry.rejectedUser,\r\n entry.rejected_time,\r\n entry.Single_Entry_ID,\r\n true,\r\n );\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n function buildTopNav() {\r\n var btnWrap = document.createElement('div');\r\n btnWrap.classList.add('actionButtonWrap');\r\n\r\n mulitSelectBtn = button.build({\r\n text: 'Multi Select',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiSelectBtn',\r\n callback: enableMultiEditRows,\r\n });\r\n selectAllBtn = button.build({\r\n text: 'Select All',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'selectAllBtn',\r\n callback: enableSelectAllRows,\r\n });\r\n\r\n btnWrap.appendChild(mulitSelectBtn);\r\n btnWrap.appendChild(selectAllBtn);\r\n\r\n return btnWrap;\r\n }\r\n function buildTable() {\r\n var tableOptions = {\r\n tableId: 'singleEntryAdminReviewTable',\r\n headline: 'Time Entries',\r\n columnHeadings: [\r\n 'Status',\r\n 'Employee',\r\n 'Date',\r\n 'Start Time',\r\n 'End Time',\r\n 'Hours',\r\n 'Location',\r\n 'Work Code',\r\n '',\r\n ],\r\n callback: e => {\r\n handleReviewTableEvents(e);\r\n },\r\n };\r\n\r\n return table.build(tableOptions);\r\n }\r\n function buildReviewPage() {\r\n mapBtn = button.build({\r\n text: showMap ? ' Hide Map' : ' Show Map',\r\n style: 'secodary',\r\n type: 'text',\r\n classNames: 'mapBtn',\r\n callback: function () {\r\n if (!showMap) addMap();\r\n showMap = true;\r\n //See comment in init func regarding the removal of local storage setting for Map.\r\n //Button will only be show map. once clicked they can't hide it. This is to prevent people from\r\n //showing and hiding rapidly and incuring high api usage.\r\n\r\n //UTIL.LS.setStorage(LSKEY_showMap, showMap)\r\n //if (showMap) {\r\n // mapBtn.innerHTML = icons.close + ' Hide Map'\r\n // addMap()\r\n //} else {\r\n // mapBtn.innerHTML = icons.show + ' Show Map'\r\n // GOOGLE_MAP.clearMap()\r\n //}\r\n },\r\n });\r\n mapBtn.innerHTML = icons.show + ' Show Map';\r\n\r\n DOM.clearActionCenter();\r\n var topNav = buildTopNav();\r\n var fitleredBy = buildFilteredBy();\r\n reviewTable = buildTable();\r\n\r\n DOM.ACTIONCENTER.appendChild(topNav);\r\n DOM.ACTIONCENTER.appendChild(fitleredBy);\r\n DOM.ACTIONCENTER.appendChild(reviewTable);\r\n DOM.ACTIONCENTER.appendChild(mapBtn);\r\n\r\n setupActionNav();\r\n }\r\n // load\r\n function loadReviewPage() {\r\n $.session.singleEntrycrossMidnight = false;\r\n roster2.removeMiniRosterBtn();\r\n if (!supervisorId) supervisorId = $.session.PeopleId;\r\n if (!supervisorName) supervisorName = `${$.session.Name} ${$.session.LName}`;\r\n if (!employeeId) employeeId = '';\r\n if (!employeeName) employeeName = 'All';\r\n if (!locationId) locationId = '%';\r\n if (!locationName) locationName = 'All';\r\n if (!status) status = '%';\r\n if (!statusText) statusText = 'All';\r\n if (!workCodeId) workCodeId = '%';\r\n if (!workCodeName) workCodeName = 'All';\r\n\r\n buildReviewPage();\r\n getReviewTableData(populateTable);\r\n }\r\n\r\n /**\r\n * Handle navigation from dashboard widget to module\r\n * @param {string} startPeriod - M/D/Y Start of the pay period\r\n * @param {string} endPeriod - M/D/Y End of the pay period\r\n * @param {string} dashStatus - Letter code of status of the time entry\r\n * */\r\n async function dashHandler(startPeriod, endPeriod, dashStatus) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n locationData = timeEntry.getLocations();\r\n let startDateIso = UTIL.formatDateToIso(startPeriod);\r\n let endDateIso = UTIL.formatDateToIso(endPeriod);\r\n startDate = startDateIso;\r\n endDate = endDateIso;\r\n status = dashStatus;\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n payPeriod = timeEntry.setSelectedPayPeriod(\r\n startDateIso,\r\n endDateIso,\r\n `${startPeriod} - ${endPeriod}`,\r\n );\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n function addMap() {\r\n let center;\r\n let markers = [];\r\n let markerLabels = [];\r\n reviewTableData.forEach((el, i) => {\r\n if (el.latitude == 0 && el.longitude == 0) return;\r\n latLngObj = {\r\n lat: parseFloat(el.latitude),\r\n lng: parseFloat(el.longitude),\r\n };\r\n let markerLabelDate = el.Date_of_Service.split(' ')[0];\r\n let markerLabelStartTime = UTIL.formatTimeString(el.start_time);\r\n let markerLabelEndTime = UTIL.formatTimeString(el.end_time);\r\n let markerLabelText = `\r\n ${el.lastname}, ${el.firstname}
    \r\n ${markerLabelDate} ${markerLabelStartTime} - ${markerLabelEndTime}
    \r\n ${el.Location_Name}\r\n `;\r\n markers.push(latLngObj);\r\n markerLabels.push(markerLabelText);\r\n });\r\n\r\n markers = GOOGLE_MAP.createMarkerArray(markers, markerLabels);\r\n\r\n let recordCnt = markers.latLngObj.length;\r\n if (recordCnt === 0) {\r\n GOOGLE_MAP.clearMap();\r\n return;\r\n }\r\n center = markers.latLngObj[0];\r\n GOOGLE_MAP.createBoundry(markers.latLngObj);\r\n GOOGLE_MAP.clearMap();\r\n GOOGLE_MAP.createElement(DOM.ACTIONCENTER);\r\n\r\n GOOGLE_MAP.initMap(10, center, markers);\r\n }\r\n\r\n async function refreshPage(payperiod) {\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = payperiod ? payperiod : timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n setActiveModuleSectionAttribute('timeEntry-approval');\r\n workCodeData = await timeEntry.getWorkCodes();\r\n startDate = payperiod.start;\r\n endDate = payperiod.end;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n }); \r\n }\r\n\r\n function showSubmitError(messageText) {\r\n var popup = POPUP.build({ classNames: ['error'] });\r\n var message = document.createElement('p');\r\n message.innerHTML = messageText;\r\n popup.appendChild(message);\r\n\r\n POPUP.show(popup);\r\n }\r\n\r\n function isValidDate(d) {\r\n d = new Date(d);\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n async function init() {\r\n //Removing Local Storage Key for showing Map. Map will now be defaulted to off,\r\n //end user will always need to click on show map button to load map.\r\n //this is to prevent over usage of google api.\r\n // showMap = UTIL.LS.getStorage(LSKEY_showMap);\r\n showMap = false;\r\n // if (showMap === undefined) showMap = true;\r\n payPeriodData = timeEntry.getPayPeriods(false);\r\n payPeriod = timeEntry.getCurrentPayPeriod(false);\r\n locationData = timeEntry.getLocations();\r\n workCodeData = await timeEntry.getWorkCodes();\r\n\r\n //displayPayPeriodPopup();\r\n if (payPeriod.start && payPeriod.end) {\r\n startDate = payPeriod.start;\r\n endDate = payPeriod.end;\r\n }\r\n else {\r\n endDate = UTIL.formatDateFromDateObj(dates.addDays(new Date(), 5));\r\n startDate = UTIL.formatDateFromDateObj(dates.subDays(new Date(), 1));\r\n }\r\n\r\n tmpStartDate = startDate;\r\n tmpEndDate = endDate;\r\n\r\n getDropdownData(function () {\r\n loadReviewPage();\r\n });\r\n }\r\n\r\n return {\r\n handleActionNavEvent,\r\n dashHandler,\r\n clearAllGlobalVariables,\r\n refreshPage,\r\n init,\r\n };\r\n})();\r\n","var emptySignatureDataURL = `iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAEYklEQVR4Xu3UAQkAAAwCwdm/9HI83BLIOdw5AgQIRAQWySkmAQIEzmB5AgIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlAABg+UHCBDICBisTFWCEiBgsPwAAQIZAYOVqUpQAgQMlh8gQCAjYLAyVQlKgIDB8gMECGQEDFamKkEJEDBYfoAAgYyAwcpUJSgBAgbLDxAgkBEwWJmqBCVAwGD5AQIEMgIGK1OVoAQIGCw/QIBARsBgZaoSlACBB1YxAJfjJb2jAAAAAElFTkSuQmCC`;\r\n\r\nfunction clearSavedSignaturesAndNotes() {\r\n $.session.evvDataCache = {};\r\n}\r\nfunction removeConsumerFromEVVCache(consumerId) {\r\n delete $.session.evvDataCache[consumerId];\r\n}\r\n\r\nfunction saveSignatureAndNote(savedSingleEntryId) {\r\n var savedSignaturesAndNotes = [];\r\n\r\n for (var prop in $.session.evvDataCache) {\r\n var singleEntryId;\r\n\r\n if (Array.isArray(savedSingleEntryId)) {\r\n var currerntConsumer = $.session.evvDataCache[prop]._consumerID;\r\n savedSingleEntryId.forEach(entry => {\r\n if (entry.consumerId.indexOf(currerntConsumer) !== -1) {\r\n singleEntryId = entry.singleEntryId;\r\n }\r\n });\r\n } else {\r\n singleEntryId = savedSingleEntryId;\r\n }\r\n\r\n $.session.evvDataCache[prop]._signatureDataUrl = $.session.evvDataCache[prop]._signatureDataUrl.replace(\"data:image/png;base64,\", \"\");\r\n \r\n savedSignaturesAndNotes.push({\r\n token:$.session.Token,\r\n singleEntryId: singleEntryId,\r\n consumerId: $.session.evvDataCache[prop]._consumerID,\r\n note: UTIL.removeUnsavableNoteText($.session.evvDataCache[prop]._noteDataString),\r\n signatureImage: $.session.evvDataCache[prop]._signatureDataUrl\r\n });\r\n }\r\n\r\n if (savedSignaturesAndNotes.length > 0) {\r\n savedSignaturesAndNotes.forEach(evvEntry => {\r\n signatureAjax.singleEntrySaveSignatureAndNote(evvEntry);\r\n });\r\n }\r\n \r\n //clearSavedSignaturesAndNotes();\r\n}\r\n\r\nfunction validateEVV() {\r\n var signRequired = $.session.singleEntryShowConsumerSignature === 'Y' ? true : false;\r\n var noteRequired = $.session.singleEntryShowConsumerNote === 'Y' ? true : false;\r\n var consumersArray = Array.prototype.slice.call(document.querySelectorAll('.consumer.singleentryselected'));\r\n var isValidEVV = true;\r\n\r\n if (signRequired || noteRequired) {\r\n if (consumersArray.length > 0) {\r\n var hasSignature, hasNote;\r\n consumersArray.forEach(consumer => {\r\n if (consumer.id in $.session.evvDataCache) {\r\n // if consumer has EVV grab it\r\n var consumerEVV = $.session.evvDataCache[consumer.id];\r\n // check consumerEVV for signature and note values\r\n hasSignature = consumerEVV._signatureDataUrl === '' ? false : true;\r\n hasNote = consumerEVV._noteDataString === '' ? false : true;\r\n if (signRequired && hasSignature === false) isValidEVV = false;\r\n if (noteRequired && hasNote === false) isValidEVV = false;\r\n } else {\r\n // if any consumer is selected but dosen't have an EVV\r\n isValidEVV = false; \r\n } \r\n });\r\n }\r\n }\r\n\r\n return isValidEVV;\r\n}\r\n\r\nclass EVV {\r\n constructor(options) {\r\n this._actionBtn;\r\n this._evvContainer;\r\n // signature coming from db?\r\n this._fromSave = options.fromSave ? true : false;\r\n // signature pad brains\r\n this._signaturePad;\r\n // save data\r\n this._consumerID = options.consumerId;\r\n this._signatureDataUrl = options.signatureDataUrl;\r\n this._noteDataString = options.noteDataString;\r\n // dom references\r\n this._consumerSECard;\r\n this._consumerCard = options.consumer;\r\n // popup markup\r\n this._signatureImageMarkup;\r\n this._signatureMarkup;\r\n this._noteMarkup;\r\n this._evvActionMarkup;\r\n // temp signature data storage for cancel button\r\n this._tempSigData\r\n\r\n this._init();\r\n }\r\n\r\n // PRIVATE METHODS - DO NOT TOUCH OR CALL!\r\n //==========================================\r\n _init() {\r\n // check for null Consumer Card\r\n if (!this._consumerCard) {\r\n var consumers = Array.prototype.slice.call(document.querySelectorAll('.consumer-selected'));\r\n consumers.forEach(consumer => {\r\n if (consumer.dataset.consumerId === this._consumerID) {\r\n this._consumerCard = consumer;\r\n }\r\n });\r\n }\r\n // build popups and save reference\r\n this._signatureMarkup = this._renderEVVMarkup('sign');\r\n this._signatureImageMarkup = this._renderEVVMarkup('img');\r\n this._noteMarkup = this._renderEVVMarkup('note');\r\n this._evvActionMarkup = this._renderEVVActionMarkup();\r\n // init signature pad\r\n this._initSignaturePad();\r\n // add events\r\n this._popupEvents();\r\n this._signatureEvents();\r\n // initial cache if new single entry\r\n if (!this._fromSave) {\r\n $.session.evvDataCache[this._consumerID] = this;\r\n }\r\n }\r\n _initSignaturePad() {\r\n var canvas = this._signatureMarkup.querySelector('.evvCanvas');\r\n if (!canvas) return;\r\n this._signaturePad = new SignaturePad(canvas);\r\n }\r\n _dataURLToBlob(dataURL) {\r\n var parts = dataURL.split(';base64,');\r\n var contentType = parts[0].split(':')[1];\r\n var raw = window.atob(parts[1]);\r\n var rawLength = raw.length;\r\n var uInt8Array = new Uint8Array(rawLength);\r\n \r\n for (var i = 0; i < rawLength; ++i) {\r\n uInt8Array[i] = raw.charCodeAt(i);\r\n }\r\n \r\n return new Blob([uInt8Array], { type: contentType });\r\n }\r\n\r\n // CRUD METHODS\r\n //--------------------------------\r\n _saveSignatureData() {\r\n if (this._signaturePad.isEmpty()) {\r\n this._tempSigData = ''; \r\n } else {\r\n var dataUrl = this._signaturePad.toDataURL();\r\n this._signatureDataUrl = dataUrl.replace(\"data:image/png;base64,\", \"\");\r\n }\r\n }\r\n _saveNoteData() {\r\n var noteText = this._noteMarkup.querySelector('.evv-note--pad');\r\n this._noteDataString = noteText.value;\r\n }\r\n _saveEVVInstance() {\r\n $.session.evvDataCache[this._consumerID] = this;\r\n }\r\n\r\n // EVV\r\n //--------------------------------\r\n _renderSignatureMarkup() {\r\n var markup = `\r\n
    \r\n

    Signature

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

    signature

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

    Note

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

    Workflow

    \r\n

    ${name}

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

    Process

    \r\n

    ${processName}

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

    ${description}

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

    Due

    \r\n

    ${dueDate? dueDate : ''}

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

    Start

    \r\n

    ${startDate? startDate : ''}

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

    Done

    \r\n

    ${doneDate? doneDate : ''}

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

    Responsible Party

    \r\n
    \r\n

    ${getFirstAndLastName(responsiblePartyId, responsiblePeople)}

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

    Comments

    \r\n
    \r\n

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

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

    Documents

    \r\n
    \r\n `;\r\n\r\n const addDocBtnOpts = {\r\n text: 'Upload Document',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['step-edit-button'],\r\n icon: 'add'\r\n };\r\n\r\n const addFormBtnOpts = {\r\n text: 'Add Form',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['step-edit-button'],\r\n icon: 'add',\r\n callback: () => {\r\n // forms.displayPopup();\r\n const docOrder = this.documents.length + 1;\r\n new FormsWorkflowStepComponent(new WorkflowStepComponent(this, people, responsiblePeople), docOrder); // new FormsWorkflowStepComponent\r\n // alert('Test2');\r\n } // callback\r\n }; // addFormBtnOpts\r\n\r\n let attachmentInput = document.createElement(\"input\");\r\n attachmentInput.type = \"file\";\r\n attachmentInput.name = \"file\";\r\n attachmentInput.id = `stepId-${this.stepId}`;\r\n attachmentInput.classList.add('inputfile');\r\n attachmentInput.onchange = (event) => {\r\n const attachment = event.target;\r\n if (this.isAttachmentValid(attachment)){\r\n const newDocumentComponent = this.addStepDocument(attachment);\r\n event.target.value = \"\"; // clear file input value after adding it\r\n };\r\n }\r\n\r\n let attachmentLabelAddDoc = document.createElement(\"label\");\r\n // attachmentLabel.classList.add(\"step-add-document-container\");\r\n attachmentLabelAddDoc.setAttribute(\"for\",attachmentInput.id); \r\n\r\n let addDocumentBtn = button.build(addDocBtnOpts);\r\n let addFormBtn = button.build(addFormBtnOpts);\r\n\r\n // TODOJOE: Upload Document and Display Form buttons -- need to size the AddDocbtn\r\n attachmentLabelAddDoc.appendChild(addDocumentBtn);\r\n // attachmentLabel.appendChild(addFormBtn);\r\n\r\n let attachmentLabelAddForm = document.createElement(\"label\");\r\n attachmentLabelAddForm.appendChild(addFormBtn);\r\n\r\n // documentsContainer.appendChild(attachmentInput);\r\n\r\n let btnWrap = document.createElement(\"div\");\r\n btnWrap.classList.add(\"step-action-container\");\r\n btnWrap.appendChild(attachmentInput);\r\n btnWrap.appendChild(attachmentLabelAddDoc);\r\n btnWrap.appendChild(attachmentLabelAddForm);\r\n\r\n\r\n documentsContainer.appendChild(btnWrap);\r\n\r\n // documentsContainer.appendChild(attachmentLabel);\r\n // documentsContainer.appendChild(addFormBtn);\r\n\r\n let documentsList = document.createElement(\"ul\");\r\n documentsList.classList.add(\"wf-documents-list\");\r\n\r\n if (documents && documents.length > 0){\r\n documents.map(d => {\r\n documentsList.appendChild(new WorkflowDocumentComponent(d).render());\r\n });\r\n }\r\n\r\n documentsContainer.appendChild(documentsList);\r\n\r\n let actionContainer = document.createElement(\"div\");\r\n actionContainer.classList.add(\"step-action-container\");\r\n actionContainer.appendChild(stepBtnEdit);\r\n actionContainer.appendChild(stepBtnDelete);\r\n if (this.allowStepEdit === 'False') {\r\n stepBtnDelete.classList.add(\"disabled\");\r\n stepBtnDelete.classList.remove(\"btn--danger\");\r\n }\r\n stepDetailContainer.appendChild(actionContainer);\r\n stepDetailContainer.appendChild(reponsiblePartyContainer);\r\n stepDetailContainer.appendChild(commentsContainer);\r\n stepDetailContainer.appendChild(documentsContainer);\r\n\r\n stepsGridColumn2.appendChild(stepSummaryContainer);\r\n stepsGridColumn2.appendChild(stepDetailContainer);\r\n\r\n let stepsGridColumn3 = document.createElement(\"div\");\r\n stepsGridColumn3.classList.add(\"step-grid-column-3\");\r\n\r\n // let stepDragHandle = document.createElement(\"div\");\r\n // stepDragHandle.classList.add(\"drag-handle\"); \r\n // stepDragHandle.innerHTML = icons['drag'];\r\n // stepsGridColumn3.appendChild(stepDragHandle); \r\n\r\n stepsGrid.appendChild(stepsGridColumn1);\r\n stepsGrid.appendChild(stepsGridColumn2);\r\n stepsGrid.appendChild(stepsGridColumn3);\r\n\r\n let stepsContainer = document.createElement(\"div\");\r\n stepsContainer.classList.add(\"wf-steps-container\");\r\n stepsContainer.setAttribute('data-id', stepId);\r\n\r\n stepsContainer.addEventListener('click', async (e)=> {\r\n if (e.target.type === \"checkbox\"){\r\n let doneDate = e.target.checked ? moment(UTIL.getTodaysDate(), \"YYYY-MM-DD\").format(\"M/D/YYYY\") : null;\r\n // update the database and get response\r\n let result = await WorkflowViewerAjax.setStepDoneDateAsync(this.stepId, doneDate);\r\n if (Object.values(result)[0] === \"1\") {\r\n // set the state of this object's done date\r\n this.doneDate = doneDate;\r\n // update the html\r\n let stepsContainer = e.target.closest(\".wf-steps-container\");\r\n let doneDateElement = stepsContainer.getElementsByClassName('wf-step-done-date')[0];\r\n doneDateElement.innerHTML = doneDate? doneDate : '';\r\n // EVENT -- this step done date is set\r\n let cache = {modified : doneDate, eventTypeId : this.stepId, eventType : \"step\", eventId : 6};\r\n let processEvent = await WorkflowViewerAjax.processStepEventsAsync(cache);\r\n let stepActionData = JSON.parse(processEvent.processWorkflowStepEventResult);\r\n // ACTION -- if Action is 'set WorkFlow Status' (Action = 1), then update UI to reflect Action \r\n for (var i = 0; i < stepActionData.length; i++) {\r\n if (stepActionData[i].length > 1) {\r\n let stepActionObj = JSON.parse(stepActionData[i])\r\n if (stepActionObj.ActionId == \"1\") {\r\n const statusDropdown = document.getElementById('statusDropdown - ' + stepActionObj.workflowId );\r\n statusDropdown.value = stepActionObj.wfStatusId;\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n });\r\n\r\n stepsContainer.appendChild(stepsGrid);\r\n\r\n new Sortable(documentsList, {\r\n handle: '.drag-handle',\r\n draggable: 'li',\r\n onSort: function (evt){ \r\n const stepDocuments = Array.from(documentsList.getElementsByTagName(\"LI\"));\r\n if (stepDocuments){\r\n const orderArray = stepDocuments.map((doc, index) => ({\r\n id: doc.getAttribute(\"data-document-id\"),\r\n order: index.toString()\r\n }));\r\n try {\r\n WorkflowViewerAjax.setDocumentOrderAsync(orderArray);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }\r\n });\r\n\r\n return stepsContainer;\r\n }\r\n\r\n}","const WorkflowViewerAjax = (() => {\r\n async function deleteDocumentAsync(documentId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflowStepDocument/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"documentId\":\"' + documentId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteWorkflowAsync(workflowId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflow/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowId\":\"' + workflowId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function deleteStepAsync(stepId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deleteWorkflowStep/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"stepId\":\"' + stepId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function downloadAttachment(attachmentid, filename) {\r\n try {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/getAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentId = document.createElement('input');\r\n attachmentId.setAttribute('name', 'attachmentId');\r\n attachmentId.setAttribute('value', attachmentid);\r\n attachmentId.id = 'attachmentId';\r\n var attachmentFileName = document.createElement('input');\r\n attachmentFileName.setAttribute('name', 'attachmentId');\r\n attachmentFileName.setAttribute('value', filename);\r\n attachmentFileName.id = 'attachmentId';\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentId);\r\n form.appendChild(attachmentFileName);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n form.submit();\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPeopleNamesAsync(peopleId, TypeId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPeopleNames/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n TypeId: TypeId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getFormTemplatesAsync() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getFormTemplates/',\r\n data: '{\"token\":\"' + $.session.Token + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getPlanWorkflowWidgetData(peopleId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanWorkflowWidgetData/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n responsiblePartyId: peopleId,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkflowsAsync(processId, referenceId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkflows/',\r\n data:\r\n '{\"token\":\"' + $.session.Token + '\", \"processId\":\"' + processId + '\", \"referenceId\":\"' + referenceId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function isWorkflowAutoCreatedAsync(workflowName) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/isWorkflowAutoCreated/',\r\n data: '{\"token\":\"' + $.session.Token + '\", \"workflowName\":\"' + workflowName + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertStepAsync(step) {\r\n try {\r\n const { people, events, ...stepData } = step;\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkflowStep/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n step: stepData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function insertStepDocumentAsync(stepId, docOrder, description, attachmentType, attachment, documentEdited) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertWorkflowStepDocument/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId,\r\n docOrder,\r\n description,\r\n attachmentType,\r\n attachment: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateStepDocumentAsync(documentId, attachmentType, attachment, documentEdited) {\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateWorkflowStepDocument/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n documentId,\r\n attachmentType,\r\n attachment: abString,\r\n documentEdited,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepDoneDateAsync(stepId, doneDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDoneDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId: stepId,\r\n doneDate: doneDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepDueDateAsync(stepId, dueDate) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDueDate/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n stepId: stepId,\r\n dueDate: dueDate,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setDocumentOrderAsync(documentOrderArray) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepDocumentOrder/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n orderArray: documentOrderArray,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function setStepOrderAsync(stepOrderArray) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setWorkflowStepOrder/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n orderArray: stepOrderArray,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateStepAsync(step) {\r\n try {\r\n const { people, events, ...stepData } = step;\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateWorkflowStep/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n step: stepData,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function processStepEventsAsync(events) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/processWorkflowStepEvent/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n thisEvent: events,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getManualWorkflowList(retrieveData) {\r\n try {\r\n // token\r\n // processId = 2 for annual and 3 for revision\r\n // planId = aka referenceId\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getManualWorkflowList/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getManualWorkflowListResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWorkFlowFormsfromPreviousPlan(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWorkFlowFormsfromPreviousPlan/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWorkFlowFormsfromPreviousPlanResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function copyWorkflowtemplateToRecord(retrieveData) {\r\n try {\r\n //token, templateId, peopleId, referenceId, wantedFormIds\r\n //referenceId is isp_consumer_plan_id,\r\n //priorReferenceId\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/copyWorkflowtemplateToRecord/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n const workflowId = result.copyWorkflowtemplateToRecordResult;\r\n return workflowId;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWFwithMissingResponsibleParties(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWFwithMissingResponsibleParties/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWFwithMissingResponsiblePartiesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getResponsiblePartyIdforThisEditStep(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getResponsiblePartyIdforThisEditStep/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getResponsiblePartyIdforThisEditStepResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getWFResponsibleParties(retrieveData) {\r\n try {\r\n //token, processId\r\n //processId = 2 for annual and 3 for revision\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getWFResponsibleParties/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getWFResponsiblePartiesResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function updateRelationshipResponsiblePartyID(peopleId, WFID, responsiblePartyType) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updateRelationshipResponsiblePartyID/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n WFID: WFID,\r\n responsiblePartyType: responsiblePartyType,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n async function getResponsiblePartyClassification() {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getResponsiblePartyClassification/',\r\n data: JSON.stringify({\r\n token: $.session.Token,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result.getResponsiblePartyClassificationResult;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n return {\r\n deleteDocumentAsync,\r\n deleteWorkflowAsync,\r\n deleteStepAsync,\r\n downloadAttachment,\r\n getPeopleNamesAsync,\r\n getFormTemplatesAsync,\r\n getPlanWorkflowWidgetData,\r\n getWorkflowsAsync,\r\n isWorkflowAutoCreatedAsync,\r\n insertStepAsync,\r\n insertStepDocumentAsync,\r\n updateStepDocumentAsync,\r\n setStepDoneDateAsync,\r\n setStepDueDateAsync,\r\n setDocumentOrderAsync,\r\n setStepOrderAsync,\r\n updateStepAsync,\r\n processStepEventsAsync,\r\n getManualWorkflowList,\r\n getWorkFlowFormsfromPreviousPlan,\r\n copyWorkflowtemplateToRecord,\r\n getWFResponsibleParties,\r\n updateRelationshipResponsiblePartyID,\r\n getWFwithMissingResponsibleParties,\r\n getResponsiblePartyIdforThisEditStep,\r\n getResponsiblePartyClassification,\r\n };\r\n})();\r\n","const WorkflowViewerComponent = (function () {\r\n let viewerContainer;\r\n let formTemplates;\r\n let peopleId;\r\n\r\n // NEW\r\n //-----------------------------------------\r\n function buildWorkflowComponents(data) {\r\n workflowsComponent = new WorkflowsComponent(data);\r\n return workflowsComponent.render();\r\n }\r\n async function getWorkflowData(processId, referenceId) {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n peopleId = attachmentInputs.dataset.peopleId;\r\n \r\n\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '0');\r\n\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '-1');\r\n\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n\r\n const { getFormTemplatesResult: templates } = await WorkflowViewerAjax.getFormTemplatesAsync();\r\n\r\n workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n templates: templates,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n formTemplates = templates;\r\n\r\n return workflowData;\r\n }\r\n async function getWorkflowDataForRoster(processId, referenceId) {\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(referenceId, '0');\r\n\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(referenceId, '-1');\r\n\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n\r\n const { getFormTemplatesResult: templates } = await WorkflowViewerAjax.getFormTemplatesAsync();\r\n\r\n workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n templates: templates,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n formTemplates = templates;\r\n\r\n return workflowData;\r\n }\r\n\r\n // retrieves templates from function buildWorkflowComponents\r\n getTemplates = () => formTemplates;\r\n\r\n async function loadData(processId, referenceId, fromRoster) {\r\n try {\r\n const data = fromRoster ? await getWorkflowDataForRoster(processId, referenceId) : await getWorkflowData(processId, referenceId);\r\n const viewerContent = buildWorkflowComponents(data);\r\n viewerContainer.appendChild(viewerContent);\r\n } catch (error) {\r\n console.error(error);\r\n viewerContainer.innerHTML = error;\r\n }\r\n }\r\n function buildViewer() {\r\n let container = document.getElementById('workflow-viewer');\r\n\r\n if (container) {\r\n container.remove();\r\n }\r\n\r\n container = document.createElement('div');\r\n container.id = 'workflow-viewer';\r\n\r\n return container;\r\n }\r\n async function get(processId, ref_id, fromRoster) {\r\n if (Object.keys(WorkflowProcess).find(key => WorkflowProcess[key] === processId)) {\r\n viewerContainer = buildViewer();\r\n await loadData(processId, ref_id, fromRoster);\r\n return viewerContainer;\r\n } else {\r\n console.error('Invalid processId');\r\n }\r\n }\r\n\r\n // OLD\r\n //-----------------------------------------\r\n function open(processId, ref_id) {\r\n if (Object.keys(WorkflowProcess).find(key => WorkflowProcess[key] === processId)) {\r\n initializeViewer2();\r\n loadData2(processId, ref_id);\r\n } else {\r\n console.error('Invalid processId');\r\n }\r\n }\r\n\r\n function initializeViewer2() {\r\n // Destroy the workflow viewer component if it exists\r\n if (viewerContainer) {\r\n viewerContainer.remove();\r\n }\r\n viewerContainer = document.createElement('div');\r\n viewerContainer.id = 'workflow-viewer';\r\n }\r\n\r\n async function loadData2(processId, referenceId) {\r\n try {\r\n const data = await getWorkflowData2(processId, referenceId);\r\n let viewerContent = undefined;\r\n viewerContent = buildWorkflowComponents2(data);\r\n viewerContainer.appendChild(viewerContent);\r\n } catch (error) {\r\n console.error(error);\r\n viewerContainer.innerHTML = error;\r\n }\r\n // render the viewer at the top of the page\r\n const actionCenter = DOM.ACTIONCENTER;\r\n const child = actionCenter.firstChild;\r\n actionCenter.insertBefore(viewerContainer, child);\r\n }\r\n\r\n function buildWorkflowComponents2(data) {\r\n workflowsComponent = new WorkflowsComponent(data);\r\n return workflowsComponent.render();\r\n }\r\n\r\n async function getWorkflowData2(processId, referenceId) {\r\n try {\r\n const attachmentInputs = document.querySelector('.generalInfo');\r\n var peopleId = attachmentInputs.dataset.peopleId;\r\n const { getPeopleNamesResult: people } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '0');\r\n const { getPeopleNamesResult: responsiblePeople } = await WorkflowViewerAjax.getPeopleNamesAsync(peopleId, '-1');\r\n const { getWorkflowsResult: workflows } = await WorkflowViewerAjax.getWorkflowsAsync(processId, referenceId);\r\n const workflowData = {\r\n people: people,\r\n workflows: workflows,\r\n responsiblePeople: responsiblePeople,\r\n };\r\n return workflowData;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n return {\r\n get,\r\n open,\r\n getTemplates,\r\n };\r\n})();\r\n","const contactInformation = (() => {\r\n let mainCIData;\r\n let bestWayToConnectData;\r\n let peopleId;\r\n let contactId;\r\n let assessmentId;\r\n let readOnly;\r\n let uniqueFundingSources;\r\n let allFundingSources;\r\n let fundingSourceList;\r\n // Table Data\r\n let importantPeopleData, importantGroupsData, importantPlacesData, gkDemographicsData;\r\n let gkRelationships;\r\n let communicationType;\r\n //Inputs\r\n let nameInput;\r\n let prefNameInput;\r\n let addressInput;\r\n let cityStateZipInput;\r\n let countyInput;\r\n let emailInput;\r\n let phoneInput;\r\n let sexInput;\r\n let maritalStatusInput;\r\n let charLimits;\r\n\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n\r\n function populateBestWayToConnectDropdown(dropdownEle, defaultValue) {\r\n const data = communicationType.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n function buildContactInputs() {\r\n const inputSection = document.createElement('div');\r\n\r\n const dateFundingSoureContainer = document.createElement('div');\r\n dateFundingSoureContainer.classList.add('isp_ci_dateFundingSourceContainer');\r\n\r\n const ispDatesSection = document.createElement('div');\r\n ispDatesSection.classList.add('ispSpanDateContainer');\r\n const ispDatesHeader = document.createElement('h4');\r\n ispDatesHeader.innerText = 'ISP Span Dates:';\r\n ispDatesSection.appendChild(ispDatesHeader);\r\n const effStartDate = UTIL.getFormattedDateFromDate(planDates.getEffectiveStartDate());\r\n const effEndDate = UTIL.getFormattedDateFromDate(planDates.getEffectiveEndDate());\r\n const dateDisplay = document.createElement('p');\r\n dateDisplay.innerText = `${effStartDate} - ${effEndDate}`;\r\n ispDatesSection.appendChild(dateDisplay);\r\n\r\n const ispFundingSuourcesSection = document.createElement('div');\r\n ispFundingSuourcesSection.classList.add('ispFSContainer');\r\n const ispFundingSuourcesHeader = document.createElement('h4');\r\n ispFundingSuourcesSection.appendChild(ispFundingSuourcesHeader);\r\n ispFundingSuourcesHeader.innerText = 'Funding Sources:';\r\n const fsContainer = document.createElement('div');\r\n ispFundingSuourcesSection.appendChild(fsContainer);\r\n fundingSourceList = document.createElement('p');\r\n fundingSourceList.id = 'isp_ci_fundingSourcesList';\r\n fundingSourceList.innerText = uniqueFundingSources.join(', ');\r\n fsContainer.appendChild(fundingSourceList);\r\n\r\n dateFundingSoureContainer.appendChild(ispDatesSection);\r\n dateFundingSoureContainer.appendChild(ispFundingSuourcesSection);\r\n\r\n nameInput = input.build({\r\n label: 'Name',\r\n readonly: true,\r\n });\r\n prefNameInput = input.build({\r\n label: 'Preferred Name',\r\n readonly: true,\r\n });\r\n\r\n addressInput = input.build({\r\n label: 'Address',\r\n readonly: true,\r\n });\r\n\r\n cityStateZipInput = input.build({\r\n label: 'City, State, Zip',\r\n readonly: true,\r\n });\r\n\r\n countyInput = input.build({\r\n label: 'County',\r\n readonly: true,\r\n });\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n readonly: true,\r\n type: 'email',\r\n });\r\n\r\n phoneInput = input.build({\r\n label: 'Phone',\r\n readonly: true,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n ],\r\n });\r\n\r\n sexInput = input.build({\r\n label: 'Sex',\r\n readonly: true,\r\n type: '',\r\n attributes: [{ key: 'maxlength', value: '1' }],\r\n });\r\n\r\n maritalStatusInput = input.build({\r\n label: 'Marital Status',\r\n readonly: true,\r\n });\r\n // Name, Preferred Name, Address, City, State, Zip, County, Email, Phone, Sex, and Marital Status\r\n\r\n const inputContainer1 = document.createElement('div');\r\n inputContainer1.classList.add('isp_ci_inputContainer1');\r\n inputContainer1.appendChild(addressInput);\r\n inputContainer1.appendChild(cityStateZipInput);\r\n inputContainer1.appendChild(countyInput);\r\n\r\n const inputContainer2 = document.createElement('div');\r\n inputContainer2.classList.add('isp_ci_inputContainer2');\r\n inputContainer2.appendChild(emailInput);\r\n inputContainer2.appendChild(phoneInput);\r\n inputContainer2.appendChild(sexInput);\r\n inputContainer2.appendChild(maritalStatusInput);\r\n\r\n const bestWayToConnectDropdown = dropdown.build({\r\n dropdownId: 'connectDropdown',\r\n label: 'Best way to connect with the person',\r\n style: 'secondary',\r\n readonly: readOnly,\r\n callback: async (e, selectedOption) => {\r\n bestWayToConnectData.bestWayToConnect = selectedOption.value;\r\n\r\n if (bestWayToConnectData.bestWayToConnect === '7') {\r\n if (bestWayToConnectData.moreDetail === '') {\r\n otherTextInput.classList.add('error');\r\n }\r\n } else {\r\n otherTextInput.classList.remove('error');\r\n }\r\n // update dropdown value to DB\r\n await summaryAjax.updateBestWayToConnect({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n bestWayId: selectedOption.value,\r\n });\r\n\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n populateBestWayToConnectDropdown(\r\n bestWayToConnectDropdown,\r\n bestWayToConnectData.bestWayToConnect,\r\n );\r\n const otherTextInput = input.build({\r\n label: 'More Detail',\r\n type: 'textarea',\r\n style: 'secondary',\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n value: bestWayToConnectData.moreDetail,\r\n charLimit: charLimits.moreDetail,\r\n forceCharLimit: true,\r\n callback: async e => {\r\n bestWayToConnectData.moreDetail = e.target.value;\r\n\r\n if (bestWayToConnectData.bestWayToConnect === '7') {\r\n if (bestWayToConnectData.moreDetail === '') {\r\n otherTextInput.classList.add('error');\r\n } else {\r\n otherTextInput.classList.remove('error');\r\n }\r\n }\r\n await summaryAjax.updateMoreDetail({\r\n token: $.session.Token,\r\n anywAssessmentId: assessmentId,\r\n detail: e.target.value,\r\n });\r\n },\r\n });\r\n\r\n // create wrapper div for button and alert\r\n const bestWayToConnectBtnAlertDiv = document.createElement('div');\r\n bestWayToConnectBtnAlertDiv.classList.add('connectBtnAlertContainer');\r\n\r\n // create div for the alert\r\n const bestWaytoConnectAlertDiv = document.createElement('div');\r\n bestWaytoConnectAlertDiv.innerHTML = `${icons.error}`;\r\n bestWaytoConnectAlertDiv.classList.add(`bestWaytoConnectAlert`);\r\n bestWaytoConnectAlertDiv.style.display = 'none';\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'This field cannot be empty. Please select an option from the dropdown menu',\r\n bestWaytoConnectAlertDiv,\r\n );\r\n\r\n bestWayToConnectBtnAlertDiv.appendChild(bestWaytoConnectAlertDiv);\r\n bestWayToConnectBtnAlertDiv.appendChild(bestWayToConnectDropdown);\r\n\r\n let contactsValidation = planValidation.getContactValidation();\r\n\r\n if (contactsValidation.bestWayToConnect === false) {\r\n bestWaytoConnectAlertDiv.style.display = 'flex';\r\n }\r\n\r\n inputSection.appendChild(nameInput);\r\n inputSection.appendChild(prefNameInput);\r\n inputSection.appendChild(inputContainer1);\r\n inputSection.appendChild(inputContainer2);\r\n inputSection.appendChild(bestWayToConnectBtnAlertDiv);\r\n inputSection.appendChild(otherTextInput);\r\n inputSection.appendChild(dateFundingSoureContainer);\r\n\r\n return inputSection;\r\n }\r\n\r\n function cleanName(val) {\r\n const fName = val.firstName ? val.firstName.trim() : '';\r\n const mName = val.middleName ? val.middleName.trim() : '';\r\n const lName = val.lastName ? val.lastName.trim() : '';\r\n\r\n let combinedName = '';\r\n\r\n if (mName === '') {\r\n combinedName = `${fName} ${lName}`;\r\n } else {\r\n combinedName = `${fName} ${mName} ${lName}`;\r\n }\r\n return combinedName;\r\n }\r\n\r\n function cleanAddress(val, addNewLine = false) {\r\n const address1 = val.address1.trim();\r\n const address2 = val.address2.trim();\r\n let combinedAddress = '';\r\n if (addNewLine) {\r\n combinedAddress = `${address1}${address2 !== '' ? '\\n' + address2 : ''}`;\r\n } else {\r\n combinedAddress = `${address1} ${address2}`;\r\n }\r\n return combinedAddress.trim();\r\n }\r\n\r\n function cleanCityStateZip(val) {\r\n const city = val.city.trim();\r\n const state = val.state.trim();\r\n const zip = val.zip.trim();\r\n\r\n let cityStateZip = '';\r\n\r\n if (city !== '') {\r\n cityStateZip = city;\r\n }\r\n if (state !== '') {\r\n cityStateZip += `, ${state}`;\r\n }\r\n if (zip !== '') {\r\n cityStateZip += ` ${zip}`;\r\n }\r\n\r\n return cityStateZip.trim();\r\n }\r\n\r\n function updateInputsWithDeomgraphicsData() {\r\n try {\r\n const name = cleanName(gkDemographicsData);\r\n const nickName = gkDemographicsData.nickName;\r\n const address = cleanAddress(gkDemographicsData);\r\n const cityStateZip = cleanCityStateZip(gkDemographicsData);\r\n const county = gkDemographicsData.county.trim();\r\n const phone = gkDemographicsData.phone.trim();\r\n const email = gkDemographicsData.email;\r\n const sex = gkDemographicsData.sex.trim();\r\n const status = gkDemographicsData.status.trim();\r\n\r\n const ph = formatPhone(phone);\r\n\r\n let statusName;\r\n switch (status) {\r\n case 'S':\r\n statusName = 'Single';\r\n break;\r\n case 'M':\r\n statusName = 'Married';\r\n break;\r\n case 'D':\r\n statusName = 'Divorced';\r\n break;\r\n case 'P':\r\n statusName = 'Separated';\r\n break;\r\n case 'W':\r\n statusName = 'Widowed';\r\n break;\r\n case 'U':\r\n statusName = 'Unknown';\r\n break;\r\n default:\r\n statusName = '';\r\n break;\r\n }\r\n\r\n // NAME\r\n nameInput.querySelector('input').value = name;\r\n // PREF NAME\r\n prefNameInput.querySelector('input').value = nickName;\r\n // ADDRESS\r\n addressInput.querySelector('input').value = address;\r\n // CITY STATE ZIP\r\n cityStateZipInput.querySelector('input').value = cityStateZip;\r\n // COUNTY\r\n countyInput.querySelector('input').value = county;\r\n // PHONE\r\n phoneInput.querySelector('input').value = ph.disp;\r\n // EMAIL\r\n emailInput.querySelector('input').value = email;\r\n // SEX\r\n sexInput.querySelector('input').value = sex;\r\n // MARITAL STATUS\r\n maritalStatusInput.querySelector('input').value = statusName;\r\n } catch (error) {\r\n console.warn('ERROR PARSING CONTACT INFORMATION FROM GK');\r\n console.error(error);\r\n }\r\n }\r\n\r\n function validatePhone(val) {\r\n if (val === '') return true;\r\n\r\n const genTelRegEx = new RegExp(/^\\d{3}[- ]?\\d{3}[- ]?\\d{4}( x\\d{4})?|x\\d{4}$/im);\r\n return genTelRegEx.test(val);\r\n }\r\n\r\n function formatPhone(phNum) {\r\n if (phNum === '' || !validatePhone(phNum)) return { val: '', disp: '' };\r\n const phoneDigits = new RegExp(/\\d+/g);\r\n rawNumber = phNum.match(phoneDigits).join('');\r\n const pos1 = rawNumber.substr(0, 3);\r\n const pos2 = rawNumber.substr(3, 3);\r\n const pos3 = rawNumber.substr(6, 4);\r\n const pos4 = rawNumber.substr(10, 4);\r\n return {\r\n val: rawNumber,\r\n disp: `${pos1}-${pos2}-${pos3} ${pos4}`,\r\n };\r\n }\r\n\r\n async function updateFundingSources() {\r\n const allFundingSources = await contactInformationAjax.getPlanContactFundingSources({\r\n assessmentId: assessmentId,\r\n });\r\n const fsSort = allFundingSources.map(fs => {\r\n if (isNaN(parseInt(fs.fundingSource))) {\r\n return fs.fundingSource;\r\n } else return servicesSupports.getFundingSourceById(fs.fundingSource);\r\n });\r\n uniqueFundingSources = fsSort.filter(onlyUnique);\r\n fundingSourceList.innerText = uniqueFundingSources.join(', ');\r\n }\r\n\r\n function onlyUnique(value, index, self) {\r\n return self.indexOf(value) === index;\r\n }\r\n\r\n function getSectionMarkup() {\r\n const fsSort = allFundingSources.map(fs => {\r\n if (isNaN(parseInt(fs.fundingSource))) {\r\n return fs.fundingSource;\r\n } else return servicesSupports.getFundingSourceById(fs.fundingSource);\r\n });\r\n uniqueFundingSources = fsSort.filter(onlyUnique);\r\n\r\n const contactSection = document.createElement('div');\r\n contactSection.classList.add('contactInformation');\r\n contactSection.id = 'isp_contactInformationSection';\r\n\r\n const headingWrap = document.createElement('div');\r\n headingWrap.classList.add('sectionHeading', 'contactInfo');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Contact Information';\r\n\r\n const refreshWrap = document.createElement('div');\r\n refreshWrap.classList.add('refreshWrap');\r\n const refreshBtn = button.build({\r\n text: '',\r\n icon: 'refresh',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n gkDemographicsData = await contactInformationAjax.importExistingContactInfo({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n });\r\n updateInputsWithDeomgraphicsData();\r\n let now = new Date();\r\n now = now.toTimeString();\r\n now = now.split(' ');\r\n now = now[0];\r\n now = UTIL.convertFromMilitary(now);\r\n lastrefresh.innerText = `Updated: ${now}`;\r\n },\r\n });\r\n const lastrefresh = document.createElement('span');\r\n\r\n const inputSection = buildContactInputs();\r\n\r\n refreshWrap.appendChild(lastrefresh);\r\n refreshWrap.appendChild(refreshBtn);\r\n headingWrap.appendChild(heading);\r\n headingWrap.appendChild(refreshWrap);\r\n contactSection.appendChild(headingWrap);\r\n contactSection.appendChild(inputSection);\r\n\r\n updateInputsWithDeomgraphicsData();\r\n\r\n const importantPeopleSection = isp_ci_importantPeople.buildSection(\r\n importantPeopleData,\r\n contactId,\r\n readOnly,\r\n gkRelationships,\r\n );\r\n const importantGroupsSection = isp_ci_importantGroups.buildSection(\r\n importantGroupsData,\r\n contactId,\r\n readOnly,\r\n );\r\n const importantPlacesSection = isp_ci_importantPlaces.buildSection(\r\n importantPlacesData,\r\n contactId,\r\n readOnly,\r\n );\r\n\r\n contactSection.appendChild(importantPeopleSection);\r\n contactSection.appendChild(importantGroupsSection);\r\n contactSection.appendChild(importantPlacesSection);\r\n\r\n return contactSection;\r\n }\r\n\r\n function planStatusChange() {\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n const contactInformationSection = document.getElementById('isp_contactInformationSection');\r\n contactInformationSection.innerHTML = '';\r\n\r\n const contactSection = getSectionMarkup();\r\n contactInformationSection.appendChild(contactSection);\r\n }\r\n\r\n async function init(pID) {\r\n assessmentId = pID;\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n const consumer = plan.getSelectedConsumer();\r\n peopleId = consumer.id;\r\n gkRelationships = planData.getDropdownData().relationships;\r\n communicationType = planData.getDropdownData().communicationType;\r\n charLimits = planData.getISPCharacterLimits('contactInfo');\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n mainCIData = await contactInformationAjax.getPlanContactInformation({\r\n token: $.session.Token,\r\n assessmentId: pID,\r\n });\r\n const AdditionalSummaryData = await summaryAjax.getAdditionalAssessmentSummaryQuestions({\r\n anywAssessmentId: assessmentId,\r\n });\r\n if (AdditionalSummaryData) {\r\n if (AdditionalSummaryData.length > 0) {\r\n bestWayToConnectData = { ...AdditionalSummaryData[0] };\r\n if (\r\n bestWayToConnectData.bestWayToConnect === '' ||\r\n bestWayToConnectData.bestWayToConnect === '0'\r\n ) {\r\n bestWayToConnectData.bestWayToConnect = '%';\r\n }\r\n }\r\n } else {\r\n bestWayToConnectData = {\r\n moreDetail: '',\r\n bestWayToConnect: '%',\r\n };\r\n }\r\n\r\n contactId = mainCIData.contactId;\r\n\r\n const gkDemographicsDataProm = contactInformationAjax\r\n .importExistingContactInfo({\r\n token: $.session.Token,\r\n peopleId: peopleId,\r\n })\r\n .then(res => (gkDemographicsData = res));\r\n\r\n const importantPeopleDataProm = contactInformationAjax\r\n .getPlanImportantPeople({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantPeopleData = res));\r\n const importantGroupsDataProm = contactInformationAjax\r\n .getPlanImportantGroups({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantGroupsData = res));\r\n const importantPlacesDataProm = contactInformationAjax\r\n .getPlanImportantPlaces({\r\n token: $.session.Token,\r\n contactId: contactId,\r\n })\r\n .then(res => (importantPlacesData = res));\r\n\r\n const fundingSourceProm = contactInformationAjax\r\n .getPlanContactFundingSources({\r\n assessmentId: pID,\r\n })\r\n .then(res => {\r\n allFundingSources = res;\r\n });\r\n\r\n await Promise.all([\r\n gkDemographicsDataProm,\r\n importantPeopleDataProm,\r\n importantGroupsDataProm,\r\n importantPlacesDataProm,\r\n fundingSourceProm,\r\n ]);\r\n\r\n planValidation.contactsValidationCheck();\r\n }\r\n\r\n return {\r\n init,\r\n getSectionMarkup,\r\n cleanName,\r\n cleanAddress,\r\n cleanCityStateZip,\r\n formatPhone,\r\n validatePhone,\r\n planStatusChange,\r\n updateFundingSources,\r\n refreshDropdownData,\r\n };\r\n})();\r\n","const contactInformationAjax = (() => {\r\n // GET\r\n // ===============================\r\n async function getPlanContactInformation(retrieveData) {\r\n // string token, stirng assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContact/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function importExistingContactInfo(retrieveData) {\r\n // string token, stirng peopleId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/importExistingContactInfo/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.importExistingContactInfoResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getConsumerRelationships(retrieveData) {\r\n //token, consumerId, effectiveStartDate, effectiveEndDate\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerRelationshipsCI/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerRelationshipsCIResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantPeople(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantPlaces(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanImportantGroups(retrieveData) {\r\n // string token, stirng contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactImportantGroups/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactImportantGroupsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanContactFundingSources(retrieveData) {\r\n // string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanContactFundingSources/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanContactFundingSourcesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // INSERT\r\n // ===============================\r\n async function insertPlanContactImportantPeople(retrieveData) {\r\n // token, contactId, type, name, relationship, address, phone\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanContactImportantGroup(retrieveData) {\r\n // token, contactId, status, name, address, phone, meetingInfo, whoHelps\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantGroup/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantGroupResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanContactImportantPlaces(retrieveData) {\r\n // token, contactId, type, name, address, phone, schedule, acuity\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // UPDATE\r\n // ===============================\r\n async function updatePlanContactImportantPeople(retrieveData) {\r\n // token, importantPersonId, type, name, relationship, address, phone\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantPeople/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPeopleResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantGroup(retrieveData) {\r\n // token, importantGroupId, status, name, address, phone, meetingInfo, whoHelps\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantGroup/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantGroupResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantPlaces(retrieveData) {\r\n // token, importantPlacesId, type, name, address, phone, schedule, acuity\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantPlaces/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContactImportantOrder(retrieveData) {\r\n // contactId, importantId, newPos, oldPos, type\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContactImportantOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanContact(retrieveData) {\r\n // token, contactId, ohiInfo, ohiPhone, ohiPolicy\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanContact/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n // DELETE\r\n // ===============================\r\n async function deletePlanContactImportant(retrieveData) {\r\n /* token, importantId, type\r\n type: \r\n 1 = Groups\r\n 2 = People\r\n 3 = Places\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanContactImportant/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanContactImportantPlacesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n return {\r\n importExistingContactInfo,\r\n getPlanContactInformation,\r\n getConsumerRelationships,\r\n getPlanImportantPeople,\r\n getPlanImportantPlaces,\r\n getPlanImportantGroups,\r\n getPlanContactFundingSources,\r\n insertPlanContactImportantPeople,\r\n insertPlanContactImportantGroup,\r\n insertPlanContactImportantPlaces,\r\n updatePlanContactImportantPeople,\r\n updatePlanContactImportantGroup,\r\n updatePlanContactImportantPlaces,\r\n updatePlanContactImportantOrder,\r\n updatePlanContact,\r\n deletePlanContactImportant,\r\n };\r\n})();\r\n","const isp_ci_importantPeople = (() => {\r\n let cID;\r\n let rawPeopleTableData;\r\n let gkRelationships;\r\n let readOnly;\r\n let nameInput;\r\n let relationshipInput;\r\n let addressInput;\r\n let phoneInput;\r\n let phoneInput2;\r\n let phoneExt;\r\n let phone2Ext;\r\n let emailInput;\r\n let typeDropdown;\r\n let typeOtherInput;\r\n let saveBtn;\r\n\r\n function popFromRelationships() {\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'isp-ciip-importPopup',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const relationshipSection = document.createElement('div');\r\n\r\n gkRelationships.forEach(rel => {\r\n const name = contactInformation.cleanName(rel);\r\n const address = contactInformation.cleanAddress(rel, true);\r\n const cityStateZip = contactInformation.cleanCityStateZip(rel);\r\n\r\n const relationshipDisp = document.createElement('div');\r\n // relationshipDisp.innerHTML = `Name: ${name}
    Relationship: ${rel.relationship}`;\r\n relationshipDisp.innerHTML = `Name: ${name}`;\r\n relationshipDisp.classList.add('isp_ciip_gkRelationships');\r\n\r\n relationshipDisp.addEventListener('click', () =>\r\n applyGKRelationship({\r\n name: name,\r\n relationship: rel.relationship,\r\n address: address,\r\n cityStateZip: cityStateZip,\r\n phone: rel.phone,\r\n popup: importPopup,\r\n email: rel.email,\r\n }),\r\n );\r\n\r\n relationshipSection.appendChild(relationshipDisp);\r\n });\r\n\r\n importPopup.appendChild(relationshipSection);\r\n POPUP.show(importPopup);\r\n }\r\n function popFromSignatures() {\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.display = 'none';\r\n\r\n const importPopup = POPUP.build({\r\n id: 'isp-ciip-importPopup2',\r\n closeCallback: () => {\r\n overlay.show();\r\n mainPopup.style.removeProperty('display');\r\n },\r\n });\r\n const signaturesSection = document.createElement('div');\r\n\r\n const signatureNames = planConsentAndSign.getNames();\r\n signatureNames.forEach(name => {\r\n const sigDiv = document.createElement('div');\r\n sigDiv.innerHTML = `Name: ${name}`;\r\n sigDiv.classList.add('isp_ciip_gkSignautres');\r\n\r\n sigDiv.addEventListener('click', () => {\r\n POPUP.hide(importPopup);\r\n overlay.show();\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.removeProperty('display');\r\n\r\n nameInput.querySelector('input').value = name;\r\n if (name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n\r\n checkForErrors();\r\n });\r\n\r\n signaturesSection.appendChild(sigDiv);\r\n });\r\n\r\n importPopup.appendChild(signaturesSection);\r\n POPUP.show(importPopup);\r\n }\r\n\r\n function applyGKRelationship(opts) {\r\n POPUP.hide(opts.popup);\r\n overlay.show();\r\n const mainPopup = document.getElementById('isp-ciip-mainPopup');\r\n mainPopup.style.removeProperty('display');\r\n\r\n let joinedAddress = '';\r\n\r\n if (opts.address !== '') {\r\n joinedAddress = opts.address;\r\n }\r\n if (opts.cityStateZip !== '') {\r\n joinedAddress += '\\n' + opts.cityStateZip;\r\n }\r\n\r\n const phoneDisp = contactInformation.formatPhone(opts.phone.trim()).disp;\r\n // NAME\r\n nameInput.querySelector('input').value = opts.name;\r\n if (opts.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n // RELATIONSHIP\r\n // relationshipInput.querySelector('input').value = opts.relationship;\r\n // if (opts.relationship === '') {\r\n // relationshipInput.classList.add('error');\r\n // } else {\r\n // relationshipInput.classList.remove('error');\r\n // }\r\n // ADDRESS\r\n addressInput.querySelector('textarea').value = joinedAddress.trim();\r\n if (joinedAddress.trim() === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n // PHONE\r\n phoneInput.querySelector('input').value = phoneDisp;\r\n if (phoneDisp === '') {\r\n phoneInput.classList.add('error');\r\n } else {\r\n phoneInput.classList.remove('error');\r\n }\r\n\r\n checkForErrors();\r\n }\r\n\r\n function tablePopup(popupData, isNew) {\r\n const popup = POPUP.build({ id: 'isp-ciip-mainPopup' });\r\n\r\n async function saveData() {\r\n popup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n const typeDD = document.getElementById('isp-ciip-typeDropdown');\r\n const typeVal = typeDD.options[typeDD.selectedIndex].value;\r\n const nameVal = document.getElementById('isp-ciip-nameInput').value;\r\n const relationshipVal = '';\r\n const addressVal = document.getElementById('isp-ciip-addressInput').value;\r\n const phoneVal = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput').value,\r\n ).val;\r\n const phoneVal2 = contactInformation.formatPhone(\r\n document.getElementById('isp-ciip-phoneInput2').value,\r\n ).val;\r\n const extVal = document.getElementById('isp-ciip-extinput').value;\r\n const extVal2 = document.getElementById('isp-ciip-extinput2').value;\r\n const emailVal = document.getElementById('isp-ciip-emailInput').value;\r\n const typeOtherVal = document.getElementById('isp-ciip-typeOther').value;\r\n\r\n\r\n let thisPhone = (extVal !== '') ? UTIL.formatPhoneNumber(phoneVal) + ' ext. ' + extVal : UTIL.formatPhoneNumber(phoneVal);\r\n let thisPhone2 = (phoneVal2 !== '') ? UTIL.formatPhoneNumber(phoneVal2) : '';\r\n thisPhone2 = (extVal2 !== '') ? UTIL.formatPhoneNumber(phoneVal2) + ' ext. ' + extVal2 : UTIL.formatPhoneNumber(phoneVal2);\r\n\r\n\r\n if (isNew) {\r\n //Insert\r\n // UNSAVABLE NOTE TEXT IS REMOVED IN BACKEND ON INSERTS\r\n const data = {\r\n token: $.session.Token,\r\n contactId: cID,\r\n type: typeVal,\r\n name: nameVal,\r\n relationship: relationshipVal,\r\n address: addressVal,\r\n phone: phoneVal,\r\n phone2: phoneVal2,\r\n phoneExt: extVal,\r\n phone2Ext: extVal2,\r\n email: emailVal,\r\n typeOther: typeOtherVal,\r\n };\r\n const importantPersonId = await contactInformationAjax.insertPlanContactImportantPeople(\r\n data,\r\n );\r\n data.importantPersonId = importantPersonId;\r\n data.token = null;\r\n\r\n let typeValueUpdate = typeVal;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeVal + ' - ' + typeOtherVal;\r\n }\r\n\r\n table.addRows(\r\n 'isp_ci_importantPeopleTable',\r\n [\r\n {\r\n values: [typeValueUpdate, nameVal, addressVal, emailVal, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n } else {\r\n //Update\r\n\r\n // Validation check for rows with type other. places red '!' in row if no value is typeOther\r\n if (typeVal === 'Other' && typeOtherVal === '') {\r\n typeValValidated =\r\n `${icons.error} ${typeVal}`;\r\n } else {\r\n typeValValidated = typeVal;\r\n }\r\n\r\n const data = {\r\n token: $.session.Token,\r\n importantPersonId: popupData.importantPersonId,\r\n type: typeVal,\r\n name: UTIL.removeUnsavableNoteText(nameVal),\r\n relationship: UTIL.removeUnsavableNoteText(relationshipVal),\r\n address: UTIL.removeUnsavableNoteText(addressVal),\r\n phone: UTIL.removeUnsavableNoteText(phoneVal),\r\n phone2: UTIL.removeUnsavableNoteText(phoneVal2),\r\n phoneExt: extVal,\r\n phone2Ext: extVal2,\r\n email: emailVal,\r\n typeOther: UTIL.removeUnsavableNoteText(typeOtherVal),\r\n };\r\n await contactInformationAjax.updatePlanContactImportantPeople(data);\r\n data.token = null;\r\n\r\n let typeValueUpdate = typeValValidated;\r\n if (typeVal == 'Other' && typeOtherVal != '') {\r\n typeValueUpdate = typeValValidated + ' - ' + typeOtherVal;\r\n } \r\n\r\n table.updateRows(\r\n 'isp_ci_importantPeopleTable',\r\n [\r\n\r\n {\r\n\r\n values: [typeValueUpdate, nameVal, addressVal, emailVal, thisPhone + '\\n' + thisPhone2],\r\n id: `ci-impPeople-${popupData.importantPersonId}`,\r\n onClick: () => {\r\n tablePopup(data, false);\r\n },\r\n },\r\n ],\r\n true,\r\n );\r\n }\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(popup);\r\n }, 700);\r\n }\r\n\r\n async function deleteData() {\r\n const data = {\r\n token: $.session.Token,\r\n importantId: popupData.importantPersonId,\r\n type: 2,\r\n };\r\n const tableRow = document.getElementById(`ci-impPeople-${popupData.importantPersonId}`);\r\n tableRow.remove();\r\n await contactInformationAjax.deletePlanContactImportant(data);\r\n }\r\n\r\n if (isNew) {\r\n popupData = {\r\n type: '',\r\n typeOther: '',\r\n name: '',\r\n relationship: '',\r\n address: '',\r\n phone: '',\r\n email: '',\r\n };\r\n }\r\n typeDropdown = dropdown.build({\r\n dropdownId: 'isp-ciip-typeDropdown',\r\n label: 'Type',\r\n readonly: readOnly,\r\n }); \r\n if (popupData.type === '') typeDropdown.classList.add('error');\r\n const typeDropdownValues = [\r\n { text: '', value: '' },\r\n { text: 'Case Manager', value: 'Case Manager' },\r\n { text: 'Emergency Contact', value: 'Emergency Contact' },\r\n { text: 'Family', value: 'Family' },\r\n { text: 'Friend', value: 'Friend' },\r\n { text: 'Guardian of Person', value: 'Guardian of Person' },\r\n { text: 'Guardian of Estate', value: 'Guardian of Estate' },\r\n { text: 'Guardian of Person AND Estate', value: 'Guardian of Person AND Estate' },\r\n { text: 'Home Provider', value: 'Home Provider' },\r\n { text: 'Medical Provider', value: 'Medical Provider' },\r\n { text: 'Other', value: 'Other' },\r\n { text: 'Partner', value: 'Partner' },\r\n { text: 'Payee', value: 'Payee' },\r\n { text: 'Primary Doctor', value: 'Primary Doctor' },\r\n { text: 'Support Broker', value: 'Support Broker' },\r\n ];\r\n \r\n if (popupData.type.includes('Other')) {\r\n popupData.type = 'Other';\r\n }\r\n dropdown.populate(typeDropdown, typeDropdownValues, popupData.type);\r\n\r\n typeOtherInput = input.build({\r\n label: 'Type Other',\r\n value: popupData.typeOther,\r\n id: `isp-ciip-typeOther`,\r\n readonly: readOnly,\r\n type: 'textarea',\r\n charLimit: 100,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.type !== 'Other') {\r\n typeOtherInput.classList.add('disabled');\r\n } else {\r\n if (popupData.typeOther === '') typeOtherInput.classList.add('error');\r\n }\r\n\r\n const importFromRelationshipsBtn = button.build({\r\n text: 'Import from Relationships',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromRelationships();\r\n },\r\n });\r\n importFromRelationshipsBtn.style.width = '100%';\r\n const importFromSignaturesBtn = button.build({\r\n text: 'Import from Signatures',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: () => {\r\n popFromSignatures();\r\n },\r\n });\r\n importFromSignaturesBtn.style.width = '100%';\r\n\r\n nameInput = input.build({\r\n label: 'Name',\r\n value: popupData.name,\r\n id: `isp-ciip-nameInput`,\r\n readonly: readOnly,\r\n });\r\n if (popupData.name === '') nameInput.classList.add('error');\r\n\r\n addressInput = input.build({\r\n label: 'Address',\r\n value: popupData.address,\r\n type: 'textarea',\r\n id: `isp-ciip-addressInput`,\r\n readonly: readOnly,\r\n classNames: 'autosize',\r\n });\r\n if (popupData.address === '') addressInput.classList.add('error');\r\n\r\n phoneInput = input.build({\r\n label: 'Phone',\r\n value: UTIL.formatPhoneNumber(popupData.phone),\r\n id: `isp-ciip-phoneInput`,\r\n readonly: readOnly,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n if (popupData.phone === '') phoneInput.classList.add('error');\r\n\r\n phoneInput2 = input.build({\r\n label: 'Phone 2',\r\n value: UTIL.formatPhoneNumber(popupData.phone2),\r\n id: `isp-ciip-phoneInput2`,\r\n readonly: readOnly,\r\n type: 'tel',\r\n attributes: [\r\n { key: 'maxlength', value: '12' },\r\n { key: 'pattern', value: '[0-9]{3}-[0-9]{3}-[0-9]{4}' },\r\n { key: 'placeholder', value: '888-888-8888' },\r\n ],\r\n });\r\n\r\n phoneExt = input.build({\r\n label: 'Ext.',\r\n value: popupData.phoneExt,\r\n readonly: readOnly,\r\n type: 'number',\r\n id: 'isp-ciip-extinput',\r\n attributes: [{ key: 'maxlength', value: '5' }],\r\n });\r\n\r\n phone2Ext = input.build({\r\n label: 'Ext.',\r\n value: popupData.phone2Ext,\r\n readonly: readOnly,\r\n type: 'number',\r\n id: 'isp-ciip-extinput2',\r\n attributes: [{ key: 'maxlength', value: '5' }],\r\n });\r\n\r\n emailInput = input.build({\r\n label: 'Email',\r\n value: popupData.email,\r\n id: `isp-ciip-emailInput`,\r\n readonly: readOnly,\r\n type: 'email',\r\n });\r\n\r\n // Wrap up Phones w/Ext.\r\n const phoneWrap = document.createElement('div');\r\n const phoneWrap2 = document.createElement('div');\r\n phoneWrap.classList.add('phoneWrap');\r\n phoneWrap2.classList.add('phoneWrap');\r\n phoneWrap.appendChild(phoneInput);\r\n phoneWrap.appendChild(phoneExt);\r\n phoneWrap2.appendChild(phoneInput2);\r\n phoneWrap2.appendChild(phone2Ext);\r\n\r\n // Action Buttons\r\n saveBtn = button.build({\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n await saveData();\r\n await planValidation.contactsValidationCheck();\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(popup);\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n popup.style.display = 'none';\r\n UTIL.warningPopup({\r\n message: 'Are you sure you would like to delete this entry?',\r\n accept: {\r\n text: 'Yes',\r\n callback: async () => {\r\n await deleteData();\r\n POPUP.hide(popup);\r\n await planValidation.contactsValidationCheck();\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n overlay.show();\r\n popup.style.removeProperty('display');\r\n },\r\n },\r\n });\r\n },\r\n });\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n\r\n if (isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (readOnly) {\r\n btnWrap.appendChild(cancelBtn);\r\n } else if (!isNew) {\r\n btnWrap.appendChild(saveBtn);\r\n btnWrap.appendChild(deleteBtn);\r\n btnWrap2.appendChild(cancelBtn);\r\n }\r\n\r\n popup.appendChild(typeDropdown);\r\n popup.appendChild(typeOtherInput);\r\n if (!readOnly) popup.appendChild(importFromRelationshipsBtn);\r\n if (!readOnly) popup.appendChild(importFromSignaturesBtn);\r\n popup.appendChild(nameInput);\r\n // popup.appendChild(relationshipInput);\r\n popup.appendChild(addressInput);\r\n popup.appendChild(emailInput);\r\n popup.appendChild(phoneWrap);\r\n popup.appendChild(phoneWrap2);\r\n popup.appendChild(btnWrap);\r\n if (!isNew && !readOnly) popup.appendChild(btnWrap2);\r\n\r\n setupEvents();\r\n\r\n POPUP.show(popup);\r\n checkForErrors();\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n function setupEvents() {\r\n phoneInput.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n phoneInput.classList.remove('error');\r\n } else {\r\n phoneInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n\r\n phoneInput2.addEventListener('input', event => {\r\n if (event.target.value !== '' && contactInformation.validatePhone(event.target.value)) {\r\n const phnDisp = contactInformation.formatPhone(event.target.value).disp;\r\n event.target.value = phnDisp;\r\n }\r\n\r\n if (event.target.value === '' || contactInformation.validatePhone(event.target.value)) {\r\n phoneInput2.classList.remove('error');\r\n } else {\r\n phoneInput2.classList.add('error');\r\n }\r\n\r\n checkForErrors();\r\n });\r\n\r\n phoneExt.addEventListener('input', event => {\r\n if (event.target.value.length > 5) {\r\n const value = event.target.value;\r\n const slicedValue = value.slice(0, 5);\r\n event.target.value = slicedValue;\r\n }\r\n });\r\n phone2Ext.addEventListener('input', event => {\r\n if (event.target.value.length > 5) {\r\n const value = event.target.value;\r\n const slicedValue = value.slice(0, 5);\r\n event.target.value = slicedValue;\r\n }\r\n });\r\n typeDropdown.addEventListener('change', event => {\r\n if (event.target.value === '') {\r\n typeDropdown.classList.add('error');\r\n } else {\r\n typeDropdown.classList.remove('error');\r\n }\r\n\r\n if (event.target.value !== 'Other') {\r\n typeOtherInput.classList.remove('error');\r\n typeOtherInput.classList.add('disabled');\r\n typeOtherInput.querySelector('textarea').value = '';\r\n } else {\r\n typeOtherInput.classList.remove('disabled');\r\n typeOtherInput.classList.add('error');\r\n }\r\n checkForErrors();\r\n });\r\n typeOtherInput.addEventListener('input', event => {\r\n if (event.target.value.trim() === '') {\r\n typeOtherInput.classList.add('error');\r\n } else {\r\n typeOtherInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n nameInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n addressInput.addEventListener('input', event => {\r\n if (event.target.value === '') {\r\n addressInput.classList.add('error');\r\n } else {\r\n addressInput.classList.remove('error');\r\n }\r\n checkForErrors();\r\n });\r\n }\r\n\r\n function checkForErrors() {\r\n const errors = document.getElementById('isp-ciip-mainPopup').querySelectorAll('.error');\r\n if (errors.length > 0) {\r\n saveBtn.classList.add('disabled');\r\n saveBtn.disabled = true;\r\n } else {\r\n saveBtn.classList.remove('disabled');\r\n saveBtn.disabled = false;\r\n }\r\n }\r\n\r\n function buildTableMarkup() {\r\n const peopleTable = table.build({\r\n tableId: 'isp_ci_importantPeopleTable',\r\n headline: 'Important People',\r\n columnHeadings: ['Type', 'Name', 'Address', 'Email', 'Phone'],\r\n sortable: true,\r\n onSortCallback: res => {\r\n contactInformationAjax.updatePlanContactImportantOrder({\r\n contactId: cID,\r\n importantId: res.row.id.split('-')[2],\r\n newPos: res.newIndex,\r\n oldPos: res.oldIndex,\r\n type: 2,\r\n });\r\n },\r\n });\r\n\r\n 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 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 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 assessmentCard = (function () {\r\n // DOM\r\n let assessmentContainer;\r\n let assessmentMarkup;\r\n let assessmentNav;\r\n let tocMarkup;\r\n let tableOfContentsBtn;\r\n let unansweredQuestionToggleBtn;\r\n // DATA\r\n let sectionData;\r\n let subsectionData;\r\n let questionSetData;\r\n let planId;\r\n let planStatus;\r\n let readOnly;\r\n\r\n // Utils\r\n //------------------------------------\r\n function clearData() {\r\n assessmentContainer = undefined;\r\n assessmentMarkup = undefined;\r\n assessmentNav = undefined;\r\n tocMarkup = undefined;\r\n tableOfContentsBtn = undefined;\r\n unansweredQuestionToggleBtn = undefined;\r\n\r\n sectionData = undefined;\r\n subsectionData = undefined;\r\n questionSetData = undefined;\r\n planId = undefined;\r\n planStatus = undefined;\r\n\r\n mainAssessment.clearData();\r\n tableOfContents.clearData();\r\n }\r\n async function refreshAssessmentCard(assessmentGeneralInfo) {\r\n const assessmentWrap = document.getElementById('planAssessment');\r\n\r\n const loadingBar = PROGRESS.SPINNER.get('Refreshing Assessment...');\r\n assessmentWrap.innerHTML = '';\r\n assessmentWrap.appendChild(loadingBar);\r\n\r\n // * Assessment Data below... When coming from dash widget planId isn't set yet\r\n // * use 'assessmentGeneralInfo.planId' if there is no 'planId'\r\n const assessmentData = await assessment.getAssessmentData(\r\n planId || assessmentGeneralInfo.planId,\r\n );\r\n let newAssessmentMarkup;\r\n if (assessmentGeneralInfo) {\r\n newAssessmentMarkup = await build(assessmentData, {\r\n ...assessmentGeneralInfo,\r\n });\r\n }\r\n\r\n assessmentWrap.innerHTML = '';\r\n assessmentWrap.appendChild(newAssessmentMarkup);\r\n\r\n mainAssessment.markUnansweredQuestions();\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n let assessmentValidationCheck = await planValidation.getAssessmentValidation(planId);\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n }\r\n\r\n // Navigation Bar\r\n //------------------------------------\r\n async function handleNavbarEvents(e) {\r\n switch (e.target) {\r\n case tableOfContentsBtn: {\r\n tableOfContents.toggleVisibility();\r\n break;\r\n }\r\n case unansweredQuestionToggleBtn: {\r\n const innerTextValue = unansweredQuestionToggleBtn.innerText.toLowerCase();\r\n if (innerTextValue === 'show unanswered') {\r\n unansweredQuestionToggleBtn.innerText = 'Show All';\r\n mainAssessment.toggleUnansweredQuestionFilter('hide');\r\n } else {\r\n unansweredQuestionToggleBtn.innerText = 'Show Unanswered';\r\n mainAssessment.toggleUnansweredQuestionFilter('show');\r\n }\r\n\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n function buildTopNavBar() {\r\n tableOfContentsBtn = button.build({\r\n text: 'T.O.C.',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['tableOfContentsBtn', 'assessmentNavBtn'],\r\n callback: handleNavbarEvents,\r\n });\r\n unansweredQuestionToggleBtn = button.build({\r\n text: 'Show Unanswered',\r\n style: 'secondary',\r\n type: 'outlined',\r\n classNames: ['unansweredQuestionToggleBtn', 'assessmentNavBtn'],\r\n callback: handleNavbarEvents,\r\n });\r\n\r\n const tocAlertDiv = document.createElement('div');\r\n tocAlertDiv.classList.add('tocAlertDiv');\r\n tocAlertDiv.id = 'tocAlertMobile';\r\n tableOfContentsBtn.appendChild(tocAlertDiv);\r\n tocAlertDiv.innerHTML = `${icons.error}`;\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one section of the Assessment must be selected',\r\n tocAlertDiv,\r\n );\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n // planValidation.createTooltip(\r\n // 'At least one section of the Assessment must be selected',\r\n // tocAlertDiv,\r\n // );\r\n\r\n // if (assessmentValidationCheck.hasASectionApplicable === true) {\r\n // tocAlertDiv.style.display = 'none';\r\n // }\r\n\r\n const navBar = document.createElement('div');\r\n navBar.classList.add('assessmentNavigation');\r\n\r\n navBar.appendChild(tableOfContentsBtn);\r\n navBar.appendChild(unansweredQuestionToggleBtn);\r\n\r\n return navBar;\r\n }\r\n\r\n // Main\r\n //------------------------------------\r\n function addSections() {\r\n const sectionIdKeys = Object.keys(sectionData);\r\n sectionIdKeys.forEach((id, index) => {\r\n const { order, title, applicable } = sectionData[id];\r\n mainAssessment.addSection({ ...sectionData[id], id });\r\n tableOfContents.addSection({ order, title, id, index, applicable });\r\n });\r\n }\r\n function addSubSections() {\r\n const subsectionIdKeys = Object.keys(subsectionData);\r\n subsectionIdKeys.forEach(subsectionId => {\r\n const { order, title, sectionId } = subsectionData[subsectionId];\r\n mainAssessment.addSubSection(order, title, subsectionId, sectionId);\r\n tableOfContents.addSubSection(order, title, subsectionId, sectionId);\r\n });\r\n }\r\n function addQuestions() {\r\n const questionSetIdKeys = Object.keys(questionSetData);\r\n questionSetIdKeys.forEach(async qsKey => {\r\n mainAssessment.addQuestionSet(questionSetData[qsKey], readOnly);\r\n });\r\n }\r\n function buildAssessment() {\r\n assessmentContainer = document.createElement('div');\r\n assessmentContainer.classList.add('assessmentContainer');\r\n\r\n tocMarkup = tableOfContents.build();\r\n // generalInfoBar = buildGeneralInfoBar();\r\n assessmentNav = buildTopNavBar();\r\n assessmentMarkup = mainAssessment.build();\r\n\r\n const assessmentNavMarkupWrap = document.createElement('div');\r\n assessmentNavMarkupWrap.classList.add('assessmentNavMarkupWrap');\r\n assessmentNavMarkupWrap.appendChild(assessmentNav);\r\n // assessmentNavMarkupWrap.appendChild(generalInfoBar);\r\n assessmentNavMarkupWrap.appendChild(assessmentMarkup);\r\n\r\n if (readOnly || !$.session.planUpdate) {\r\n assessmentNavMarkupWrap.classList.add('readOnly');\r\n } else {\r\n assessmentNavMarkupWrap.classList.remove('readOnly');\r\n }\r\n\r\n assessmentContainer.appendChild(tocMarkup);\r\n assessmentContainer.appendChild(assessmentNavMarkupWrap);\r\n\r\n return assessmentContainer;\r\n }\r\n async function build(assessmentData, generalInfo) {\r\n ({ sectionData, subsectionData, questionSetData } = assessmentData);\r\n\r\n ({ planId, planStatus, isActive } = generalInfo);\r\n\r\n readOnly = planStatus === 'C' || !isActive ? true : false;\r\n\r\n setActiveModuleSectionAttribute('plan-questionsAndAnswers');\r\n\r\n // init markup for toc and assessment\r\n await mainAssessment.init(planId, readOnly);\r\n tableOfContents.init();\r\n\r\n // add/sort data to assessment & toc\r\n addSections();\r\n addSubSections();\r\n addQuestions();\r\n\r\n // populate/build assessment\r\n const markup = buildAssessment();\r\n return markup;\r\n }\r\n\r\n return {\r\n build,\r\n clearData,\r\n refreshAssessmentCard,\r\n };\r\n})();\r\n","const mainAssessment = (function () {\r\n const customSectionIds = [];\r\n\r\n // DOM\r\n let assessmentWrap;\r\n // DATA\r\n let sections;\r\n let subSections;\r\n let questionSectionSets;\r\n let questionSubSectionSets;\r\n let sectionQuestionCount;\r\n let assessmentId;\r\n let subSectionsWithAttachments;\r\n let additionalSummaryData;\r\n // dropdowns\r\n let assessmentDropdownData;\r\n let colNameDropdownMap = {\r\n AssessmentArea: 'assessmentAreas',\r\n ProviderName: 'serviceVendors',\r\n ServiceName: 'serviceTypes',\r\n FundingSource: 'fundingSource',\r\n NewOrExisting: 'newOrExisting',\r\n 'WhoSaidIt?': 'relationships',\r\n };\r\n\r\n let charLimits = {};\r\n let deleteRowsActive = false;\r\n let selectedRow;\r\n let isSortable;\r\n let readonly;\r\n\r\n function checkArrayConsistency(arr) {\r\n if (arr.length === 0) {\r\n return 'noMatch'; // or you can return null or undefined based on your use case\r\n }\r\n\r\n const firstElement = arr[0];\r\n for (let i = 1; i < arr.length; i++) {\r\n if (arr[i] !== firstElement) {\r\n return 'noMatch';\r\n }\r\n }\r\n\r\n return firstElement;\r\n }\r\n\r\n //* TEMP FUNCTION FOR RE-ORDERING ROWS ON DELETE\r\n function updateRowOrderAfterDelete(grid, questionSetId) {\r\n // grab all rows inside grid after delete\r\n const gridBody = grid.querySelector('.grid__body');\r\n const rows = [...gridBody.querySelectorAll('.grid__row')];\r\n rows.forEach((row, i) => {\r\n const order = parseInt(row.id.replaceAll('roworder', ''));\r\n // check row for gap in order\r\n if (order !== i + 1) {\r\n // grab inputs to gather answerIds\r\n const inputs = [...row.querySelectorAll('.input-field__input')];\r\n let answerIds = inputs.map(input => input.id);\r\n answerIds = answerIds.join('|');\r\n // update the row order in DB\r\n //assessmentAjax.updateAssessmentAnswerRowOrder({\r\n // ///\r\n // token: $.session.Token,\r\n // assessmentId: parseInt(assessmentId),\r\n // questionSetId: parseInt(questionSetId),\r\n // answerIds: answerIds,\r\n // newPos: parseInt(i + 1),\r\n // oldPos: parseInt(order),\r\n //});\r\n // update row id\r\n row.id = `roworder${i + 1}`;\r\n }\r\n // if no gap do nothing\r\n });\r\n }\r\n //* END TEMP FUNCTION\r\n\r\n // Utils\r\n //------------------------------------\r\n async function addAnswer(id, answer, answerRow, skipped) {\r\n assessmentAjax.updateConsumerAssessmentAnswer({\r\n answerId: id,\r\n answerText: answer ? answer : '',\r\n answerRow: answerRow ? answerRow : '',\r\n skipped: skipped ? skipped : 'N',\r\n });\r\n }\r\n function clearData() {\r\n sections = {};\r\n subSections = {};\r\n questionSectionSets = {};\r\n questionSubSectionSets = {};\r\n sectionQuestionCount = {};\r\n subSectionsWithAttachments = [];\r\n }\r\n function getSectionQuestionCount() {\r\n return sectionQuestionCount;\r\n }\r\n function relationshipDropdownData() {\r\n const data = planData.getDropdownData().relationships.map(dd => {\r\n return {\r\n id: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const removeDups = data => {\r\n const flag = {};\r\n const unique = [];\r\n data.forEach(el => {\r\n if (!flag[el.id]) {\r\n flag[el.id] = true;\r\n unique.push(el);\r\n }\r\n });\r\n return unique;\r\n };\r\n return removeDups(data);\r\n }\r\n function toggleIntentionallyBlankCheckbox(answerId, setID, disable) {\r\n let checkbox = document.getElementById(`intentionallyBlankCheckbox${answerId}`);\r\n checkbox = checkbox ? checkbox : document.getElementById(`intentionallyBlankCheckbox${setID}`);\r\n if (!checkbox) return;\r\n\r\n if (disable) {\r\n input.disableInputField(checkbox.parentElement);\r\n } else {\r\n input.enableInputField(checkbox.parentElement);\r\n }\r\n }\r\n // Conditional Questions\r\n function toggleConditionalQuestion(answer, type, conditionalQuestions) {\r\n if (conditionalQuestions.length === 1) {\r\n const questionId = conditionalQuestions[0].questionId;\r\n\r\n const question = document.getElementById(`question${questionId}`);\r\n const section = question.closest('.assessment__section');\r\n const questionSet = question.closest('.questionSet');\r\n const inputWrap = question.querySelector('.input-field');\r\n const inputEle = question.querySelector('.input-field__input');\r\n\r\n // check for radios\r\n if (!inputWrap) inputWrap = question.querySelector('.radioWrap');\r\n if (!inputEle) inputEle = question.querySelector('input');\r\n\r\n const sectionId = section.id.replace('section', '');\r\n const setId = questionSet.id.replace('set', '');\r\n const answerId = inputEle.id;\r\n\r\n if (conditionalQuestions[0].conditionalAnswerText !== answer) {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n input.disableInputField(inputWrap);\r\n if (type === 'checkbox') {\r\n inputEle.checked = false;\r\n } else {\r\n inputEle.value = '';\r\n const radios = [...inputWrap.querySelectorAll('input')];\r\n if (radios.length !== 0) {\r\n radios.forEach(radio => (radio.checked = false));\r\n }\r\n }\r\n addAnswer(answerId);\r\n } else {\r\n input.enableInputField(inputWrap);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n } else {\r\n conditionalQuestions.forEach(q => {\r\n const { questionId, conditionalAnswerText } = q;\r\n\r\n const question = document.getElementById(`question${questionId}`);\r\n const section = question.closest('.assessment__section');\r\n const questionSet = question.closest('.questionSet');\r\n let inputWrap = question.querySelector('.input-field');\r\n let inputEle = question.querySelector('.input-field__input');\r\n\r\n // check for radios\r\n if (!inputWrap) inputWrap = question.querySelector('.radioWrap');\r\n if (!inputEle) inputEle = question.querySelector('input');\r\n\r\n const sectionId = section.id.replace('section', '');\r\n const setId = questionSet.id.replace('set', '');\r\n const answerId = inputEle.id;\r\n\r\n if (conditionalAnswerText !== answer) {\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = false;\r\n input.disableInputField(inputWrap);\r\n if (type === 'checkbox') {\r\n inputEle.checked = false;\r\n } else {\r\n inputEle.value = '';\r\n const radios = [...inputWrap.querySelectorAll('input')];\r\n if (radios.length !== 0) {\r\n radios.forEach(radio => (radio.checked = false));\r\n }\r\n }\r\n\r\n addAnswer(answerId);\r\n } else {\r\n input.enableInputField(inputWrap);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n sectionQuestionCount[sectionId][setId][questionId].required = true;\r\n }\r\n });\r\n }\r\n\r\n markUnansweredQuestions();\r\n }\r\n // Unanswered Questions\r\n function markUnansweredQuestions() {\r\n const sectionKeys = Object.keys(sectionQuestionCount);\r\n\r\n sectionKeys.forEach(sectionKey => {\r\n const questionSetKeys = Object.keys(sectionQuestionCount[sectionKey]);\r\n let tableQuestionSets;\r\n\r\n questionSetKeys.forEach(questionSetKey => {\r\n const questionKeys = Object.keys(sectionQuestionCount[sectionKey][questionSetKey]);\r\n\r\n questionKeys.forEach(questionKey => {\r\n const { answered, required, rowOrder, leaveblank } =\r\n sectionQuestionCount[sectionKey][questionSetKey][questionKey];\r\n let questionDiv;\r\n\r\n if (!rowOrder) {\r\n // Text, Textarea, Checkbox, Radio Questions\r\n questionDiv = document.getElementById(`question${questionKey}`);\r\n if (!questionDiv) return;\r\n if (answered && required) questionDiv.classList.remove('unawnsered');\r\n if (!answered && required) questionDiv.classList.add('unawnsered');\r\n if (!answered && required && !leaveblank) questionDiv.classList.add('unawnsered');\r\n\r\n if (!required) questionDiv.classList.remove('unawnsered');\r\n } else {\r\n // Table Questions\r\n if (!tableQuestionSets) tableQuestionSets = {};\r\n if (!tableQuestionSets[questionSetKey]) tableQuestionSets[questionSetKey] = {};\r\n if (!tableQuestionSets[questionSetKey][rowOrder]) {\r\n questionDiv = document.getElementById(`question${questionKey}`);\r\n if (!questionDiv) return;\r\n const rowElement = questionDiv.closest('.grid__row');\r\n\r\n tableQuestionSets[questionSetKey][rowOrder] = {\r\n atLeastOneColumnAnswered: false,\r\n rowElement,\r\n };\r\n }\r\n if (answered || leaveblank) tableQuestionSets[questionSetKey][rowOrder].atLeastOneColumnAnswered = true;\r\n }\r\n });\r\n\r\n if (tableQuestionSets) {\r\n const tableQuestionSetsKeys = Object.keys(tableQuestionSets);\r\n if (tableQuestionSetsKeys.length > 0) {\r\n tableQuestionSetsKeys.forEach(setKey => {\r\n let tableHasAtLeastOneRowAnsered = false;\r\n let tableElement;\r\n\r\n const rowOrderKeys = Object.keys(tableQuestionSets[setKey]);\r\n rowOrderKeys.forEach((rowOrderKey, index) => {\r\n if (index === 0) {\r\n tableElement = tableQuestionSets[setKey][rowOrderKey].rowElement.closest('.grid');\r\n }\r\n\r\n if (tableQuestionSets[setKey][rowOrderKey].atLeastOneColumnAnswered) {\r\n tableQuestionSets[setKey][rowOrderKey].rowElement.classList.remove('unawnsered');\r\n tableHasAtLeastOneRowAnsered = true;\r\n } else {\r\n tableQuestionSets[setKey][rowOrderKey].rowElement.classList.add('unawnsered');\r\n }\r\n });\r\n\r\n if (!tableHasAtLeastOneRowAnsered) {\r\n tableElement.classList.add('unawnsered');\r\n tableElement.classList.remove('awnsered');\r\n } else {\r\n tableElement.classList.remove('unawnsered');\r\n tableElement.classList.add('awnsered');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n function toggleUnansweredQuestionFilter(hideOrShow) {\r\n const questions = [...document.querySelectorAll('.question')];\r\n questions.forEach(q => {\r\n if (!q.classList.contains('unawnsered')) {\r\n if (hideOrShow === 'hide') {\r\n // only show unawnsered\r\n q.style.display = 'none';\r\n } else {\r\n q.removeAttribute('style');\r\n }\r\n }\r\n });\r\n\r\n const tables = [...document.querySelectorAll('.grid')];\r\n tables.forEach(t => {\r\n if (!t.classList.contains('unawnsered')) {\r\n if (hideOrShow === 'hide') {\r\n // only show unawnsered\r\n t.style.display = 'none';\r\n } else {\r\n t.removeAttribute('style');\r\n }\r\n }\r\n });\r\n }\r\n // Events\r\n async function handleAssessmentChangeEvents(e) {\r\n if (e.target.id.includes('applicable')) {\r\n let target = e.target.id;\r\n let sectionID = target.match(/\\d+/)[0];\r\n let applied = e.target.checked ? 'Y' : 'N';\r\n\r\n planValidation.updateSectionApplicability(sectionID, applied);\r\n\r\n return;\r\n }\r\n if (e.target.id.includes('intentionallyBlankCheckbox')) {\r\n const isChecked = e.target.checked;\r\n const skipped = isChecked ? 'Y' : 'N';\r\n const isForRow = e.target.dataset.isforrow;\r\n // ids for associated textarea question/anwser\r\n let answerId = e.target.dataset.answerid;\r\n let questionId = e.target.dataset.questionid;\r\n let setId = e.target.dataset.setid;\r\n let sectionID = e.target.dataset.sectionid;\r\n\r\n if (isForRow === 'false') {\r\n addAnswer(answerId, '', '', skipped);\r\n\r\n const textAreaInput = document.getElementById(answerId);\r\n if (isChecked) {\r\n textAreaInput.value = '';\r\n input.disableInputField(textAreaInput);\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = true;\r\n } else {\r\n input.enableInputField(textAreaInput);\r\n sectionQuestionCount[sectionID][setId][questionId].leaveblank = false;\r\n }\r\n } else {\r\n const questionSet = document.getElementById(`set${setId}`);\r\n let sectionID = questionSet.parentElement.parentElement.id\r\n sectionID = sectionID.replace(/\\D/g, \"\");\r\n const questionSetGridRows = [...questionSet.querySelectorAll('.grid__row:not(.grid__rowHeader)')];\r\n const questionSetActionButtons = [...questionSet.querySelectorAll('.gridActionRow button')];\r\n let questionSetId = e.target.dataset.setid;\r\n // let sectionID = e.target.dataset.sectionid;\r\n questionSetGridRows.forEach(row => {\r\n const rowCells = row.querySelectorAll('.grid__cell');\r\n \r\n rowCells.forEach(cell => {\r\n const cellInput = cell.querySelector('.input-field__input');\r\n let questionRowId = cell.id;\r\n questionRowId = questionRowId.replace(/\\D/g, \"\");\r\n\r\n addAnswer(cellInput.id, '', '', skipped);\r\n\r\n if (isChecked) {\r\n cellInput.value = '';\r\n input.disableInputField(cellInput);\r\n //sectionQuestionCount[sectionID][setId][questionId].leaveblank = true;\r\n sectionQuestionCount[sectionID][questionSetId][questionRowId].leaveblank = true;\r\n } else {\r\n input.enableInputField(cellInput);\r\n //sectionQuestionCount[sectionID][setId][questionId].leaveblank = false;\r\n sectionQuestionCount[sectionID][questionSetId][questionRowId].leaveblank = false;\r\n }\r\n });\r\n });\r\n questionSetActionButtons.forEach(btn => {\r\n if (e.target.checked) {\r\n btn.classList.add('disabled');\r\n } else {\r\n btn.classList.remove('disabled');\r\n }\r\n });\r\n }\r\n\r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n return;\r\n }\r\n\r\n const tagName = e.target.tagName;\r\n const type = e.target.type;\r\n\r\n if (tagName === 'INPUT' || tagName === 'TEXTAREA' || tagName === 'SELECT') {\r\n let questionDiv = e.target.closest('.question');\r\n if (!questionDiv) questionDiv = e.target.closest('.grid__cell');\r\n\r\n let sectionDiv;\r\n let questionSetDiv;\r\n let sectionId;\r\n let setId;\r\n let questionId;\r\n let conditionalQuestions;\r\n\r\n if (questionDiv) {\r\n sectionDiv = e.target.closest('.assessment__section');\r\n sectionId = sectionDiv.id.replace('section', '');\r\n\r\n const isCustomSection = customSectionIds.includes(sectionId);\r\n if (isCustomSection) return;\r\n\r\n questionSetDiv = e.target.closest('.questionSet');\r\n setId = questionSetDiv.id.replace('set', '');\r\n questionId = questionDiv ? questionDiv.id.replace('question', '') : null;\r\n conditionalQuestions = questionId ? assessment.getConditionalQuestions(questionId) : null;\r\n }\r\n\r\n const answerId = e.target.id;\r\n\r\n let answer;\r\n\r\n if (type === 'checkbox') {\r\n answer = e.target.checked === true ? '1' : '0';\r\n addAnswer(answerId, answer);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = e.target.checked === true ? true : false;\r\n\r\n const questionIdCategory = planValidation.findQuestionIdCategory(questionId);\r\n\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n if (questionIdCategory !== 'Variable not found in the object' && questionIdCategory !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, questionIdCategory, e.target.checked);\r\n }\r\n\r\n if (questionIdCategory === 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, 'noSupport', true);\r\n\r\n for (const key in assessmentValidationCheck.servicesAndSupportsChecked[sectionId]) {\r\n if (key !== 'noSupport') {\r\n planValidation.updateAssessmentValidationProperty(sectionId, key, false);\r\n }\r\n }\r\n }\r\n\r\n // checks the status of the buttons and adds/removes error class if needed for specific section\r\n planValidation.servicesAndSupportsBtnCheck(sectionId);\r\n\r\n // checks entire assessments for validation errors\r\n planValidation.updatedAssessmenteValidation();\r\n }\r\n if (type === 'radio') {\r\n const radioLabelText = e.target.nextSibling.innerHTML;\r\n answer = radioLabelText === 'yes' ? '1' : '0';\r\n addAnswer(answerId, answer);\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n if (type === 'text' || type === 'textarea') {\r\n answer = e.target.value;\r\n\r\n if (answer !== '') {\r\n await addAnswer(answerId, answer);\r\n\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n } else {\r\n await addAnswer(answerId);\r\n\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n }\r\n }\r\n\r\n if (sectionId === '41') {\r\n await planValidation.updateAnswerWorkingSection(assessmentId);\r\n tableOfContents.showUnansweredQuestionCount();\r\n }\r\n }\r\n if (type === 'select-one') {\r\n if (e.target.id === 'pathDropdown') return;\r\n\r\n const selectedOption = e.target.options[e.target.selectedIndex];\r\n answer = selectedOption.value;\r\n\r\n if (answer !== '') {\r\n addAnswer(answerId, answer);\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = true;\r\n }\r\n\r\n planValidation.updateAnswerWorkingSection(assessmentId);\r\n } else {\r\n addAnswer(answerId);\r\n if (!conditionalQuestions || conditionalQuestions.length === 0) {\r\n if (!sectionQuestionCount[sectionId][setId][questionId]) return;\r\n sectionQuestionCount[sectionId][setId][questionId].answered = false;\r\n }\r\n\r\n planValidation.updateAnswerWorkingSection(assessmentId);\r\n }\r\n }\r\n if (type === 'date') {\r\n answer = e.target.value;\r\n\r\n if (answer !== '') {\r\n addAnswer(answerId, answer);\r\n } else {\r\n addAnswer(answerId);\r\n }\r\n }\r\n\r\n if (conditionalQuestions && conditionalQuestions.length > 0) {\r\n toggleConditionalQuestion(answer, type, conditionalQuestions);\r\n return;\r\n }\r\n\r\n markUnansweredQuestions();\r\n\r\n if (type === 'textarea') {\r\n if (!questionSetDiv.classList.contains('questionSet__grid')) {\r\n const hideCheckbox = answer !== '' ? true : false;\r\n toggleIntentionallyBlankCheckbox(answerId, setId, hideCheckbox);\r\n } else {\r\n const setGrid = questionSetDiv.querySelector('.grid');\r\n if (setGrid.classList.contains('awnsered')) {\r\n toggleIntentionallyBlankCheckbox(answerId, setId, true);\r\n } else {\r\n toggleIntentionallyBlankCheckbox(answerId, setId, false);\r\n }\r\n }\r\n }\r\n \r\n tableOfContents.showUnansweredQuestionCount();\r\n\r\n return;\r\n }\r\n }\r\n\r\n // Sections\r\n //------------------------------------\r\n function addSection({ order, title, id, applicable, isAssessment }) {\r\n const isCustomSection = customSectionIds.includes(id);\r\n let markup;\r\n\r\n if (!isCustomSection) {\r\n markup = buildSectionMarkup({ title, id, applicable, isAssessment });\r\n }\r\n\r\n if (!sections[order]) sections[order] = { id, markup };\r\n }\r\n function buildSectionMarkup({ title, id, applicable, isAssessment }) {\r\n const section = document.createElement('div');\r\n section.classList.add('assessment__section');\r\n section.id = `section${id}`;\r\n\r\n const sectionHeading = document.createElement('div');\r\n sectionHeading.classList.add('sectionHeading');\r\n sectionHeading.id = `sec${id}`;\r\n\r\n const sectionHeadingInner = document.createElement('div');\r\n sectionHeadingInner.classList.add('sectionHeading__inner');\r\n\r\n const applicableCheckbox = input.buildNativeCheckbox({\r\n id: `applicable${id}`,\r\n isChecked: applicable,\r\n isDisabled: false,\r\n className: 'applicableCheckbox',\r\n callback: e => {\r\n if (e.target.checked) {\r\n section.classList.remove('nonApplicable');\r\n } else {\r\n section.classList.add('nonApplicable');\r\n }\r\n\r\n assessment.toggleIsSectionApplicable(id, e.target.checked);\r\n\r\n // assessment.showApplicableWarningMessage(yesOrNo => {\r\n // if (yesOrNo === 'no') {\r\n // e.target.checked = true;\r\n // return;\r\n // }\r\n\r\n // section.classList.add('nonApplicable');\r\n // assessment.toggleIsSectionApplicable(id, e.target.checked);\r\n // });\r\n },\r\n });\r\n if (readonly || !$.session.planUpdate) {\r\n input.disableInputField(applicableCheckbox);\r\n }\r\n const sectionTitle = document.createElement('h2');\r\n sectionTitle.innerText = title;\r\n\r\n if (isAssessment === 'Y') {\r\n sectionHeadingInner.appendChild(applicableCheckbox);\r\n if (!applicable) {\r\n section.classList.add('nonApplicable');\r\n }\r\n }\r\n sectionHeadingInner.appendChild(sectionTitle);\r\n sectionHeading.appendChild(sectionHeadingInner);\r\n section.appendChild(sectionHeading);\r\n if (title === 'WORKING/ NOT WORKING') {\r\n const sectionPrompt = document.createElement('p');\r\n sectionPrompt.classList.add('sectionPrompt');\r\n sectionPrompt.innerText = 'Be sure to include Working/Not Working technology solutions.';\r\n section.appendChild(sectionPrompt);\r\n }\r\n\r\n return section;\r\n }\r\n function buildSectionFooter(id) {\r\n const footer = document.createElement('div');\r\n footer.classList.add('sectionFooter');\r\n\r\n const planStatus = plan.getPlanStatus();\r\n const planActiveStatus = plan.getPlanActiveStatus();\r\n let readOnly;\r\n\r\n if (planActiveStatus && planStatus === 'D' && $.session.planUpdate) {\r\n readOnly = false;\r\n } else {\r\n readOnly = true;\r\n }\r\n\r\n //number of paid supports attached to this section\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n let paidSupportCount = assessmentValidationCheck.servicesAndSupports.paidSupportCounts[id] || 0;\r\n let additionalSupportCount = assessmentValidationCheck.servicesAndSupports.additionalSupportCounts[id] || 0;\r\n let professionalReferralCounts = assessmentValidationCheck.servicesAndSupports.professionalReferralCounts[id] || 0;\r\n let potentialOutcomeCount = assessmentValidationCheck.servicesAndSupports.potentialOutcomeCounts[id] || 0;\r\n\r\n // returns true if the section has been checked\r\n let paidSupportChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].paidSupport;\r\n let additionalSupportChecked =\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].naturalSupport ||\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].technology ||\r\n assessmentValidationCheck.servicesAndSupportsChecked[id].communityResource;\r\n let professionalReferralChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].professionalReferral;\r\n let potentialOutcomeChecked = assessmentValidationCheck.servicesAndSupportsChecked[id].potentialOutcome;\r\n\r\n const outcomesBtn = button.build({\r\n //text: `Add Outcome (${potentialOutcomeCount})`,\r\n text: `Add Outcome`,\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `outcomesBtn${id}`,\r\n callback: () => {\r\n planOutcomes.showAddNewOutcomePopup(id, charLimits.outcomes);\r\n },\r\n });\r\n const paidSupportBtn = button.build({\r\n //text: `Add Paid Support (${paidSupportCount})`,\r\n text: 'Add Paid Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `paidSupportBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddPaidSupportPopup({\r\n popupData: { assessmentAreaId: id },\r\n isNew: true,\r\n fromAssessment: true,\r\n charLimits: charLimits.servicesSupports,\r\n });\r\n },\r\n });\r\n const additionalSupportBtn = button.build({\r\n /*text: `Add Additional Support (${additionalSupportCount})`,*/\r\n text: 'Add Additional Support',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `additionalSupportBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddAdditionalSupportPopup(\r\n { assessmentAreaId: id },\r\n true,\r\n true,\r\n charLimits.servicesSupports,\r\n );\r\n },\r\n });\r\n const profRefBtn = button.build({\r\n /*text: `Add Professional Referral (${professionalReferralCounts})`,*/\r\n text: 'Add Professional Referral',\r\n style: 'secondary',\r\n type: 'contained',\r\n id: `profRefBtn${id}`,\r\n callback: () => {\r\n servicesSupports.showAddProfessionalReferralPopup(\r\n { assessmentAreaId: id },\r\n true,\r\n true,\r\n charLimits.servicesSupports,\r\n );\r\n },\r\n });\r\n\r\n if (readOnly) {\r\n outcomesBtn.classList.add('disabled');\r\n paidSupportBtn.classList.add('disabled');\r\n additionalSupportBtn.classList.add('disabled');\r\n profRefBtn.classList.add('disabled');\r\n }\r\n\r\n //Add error class to buttons that are checked and have 0 outcomes attached to them\r\n if (paidSupportChecked && paidSupportCount === 0) {\r\n paidSupportBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (additionalSupportChecked && additionalSupportCount === 0) {\r\n additionalSupportBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (professionalReferralChecked && professionalReferralCounts === 0) {\r\n profRefBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n if (potentialOutcomeChecked && potentialOutcomeCount === 0) {\r\n outcomesBtn.classList.add('error');\r\n planValidation.updateAssessmentValidationSection('complete', false);\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(outcomesBtn);\r\n btnWrap.appendChild(paidSupportBtn);\r\n btnWrap.appendChild(additionalSupportBtn);\r\n btnWrap.appendChild(profRefBtn);\r\n\r\n footer.appendChild(btnWrap);\r\n\r\n return footer;\r\n }\r\n\r\n // Sub Sections\r\n //------------------------------------\r\n function addSubSection(order, title, id, sectionId) {\r\n const markup = buildSubSectionMarkup(title, id);\r\n\r\n if (!subSections[sectionId]) subSections[sectionId] = {};\r\n if (!subSections[sectionId][order]) subSections[sectionId][order] = { id, markup };\r\n if (title.match(/Specialized tools*/g)) subSectionsWithAttachments.push(id);\r\n }\r\n function buildSubSectionMarkup(title, id) {\r\n const subSection = document.createElement('div');\r\n subSection.classList.add('assessment__subSection');\r\n\r\n const subSectionHeading = document.createElement('h2');\r\n // subSectionHeading.innerHTML = `${title}`;\r\n subSectionHeading.innerHTML = `${title}`;\r\n subSectionHeading.classList.add('subSectionHeading');\r\n subSectionHeading.id = `subsec${id}`;\r\n\r\n subSection.appendChild(subSectionHeading);\r\n\r\n return subSection;\r\n }\r\n\r\n // Question Sets & Grids\r\n //------------------------------------\r\n // Grids\r\n //---------\r\n async function deleteSelectedRows(grid, gridBody, questionSetId) {\r\n const planId = plan.getCurrentPlanId();\r\n const successfulDelete = await assessment.deleteGridRows(planId, questionSetId, [selectedRow.id]);\r\n gridBody.removeChild(selectedRow.target);\r\n addAnswer(selectedRow.id);\r\n\r\n //* TEMP -REMOVE THIS ONCE HANDELED IN BACKEND\r\n updateRowOrderAfterDelete(grid, questionSetId);\r\n //* END TEMP\r\n }\r\n function buildGridHeaderRow() {\r\n const gridHeaderRow = document.createElement('div');\r\n gridHeaderRow.classList.add('grid__row', 'grid__rowHeader');\r\n return gridHeaderRow;\r\n }\r\n function buildGridHeaderCell(text, prompt) {\r\n const gridHeaderCell = document.createElement('div');\r\n gridHeaderCell.classList.add('grid__cell');\r\n gridHeaderCell.innerHTML = `

    ${text}

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

    ${prompt}

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

    ${answerText}

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

    ${text}

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

    ${prompt}

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

    ${text}

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

    ${prompt}

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

    ${text}

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

    ${prompt}

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

    ${text}

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

    ${prompt}

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

    ${text}

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

    ${prompt}

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

    \r\n `;\r\n\r\n const tocSectionAlertDiv = document.createElement('div');\r\n tocSectionAlertDiv.classList.add('workingAlertDiv');\r\n tocSectionAlertDiv.id = `${id}alert`;\r\n tocSectionAlertDiv.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(tocSectionAlertDiv);\r\n\r\n planValidation.createTooltip(\r\n 'This section is missing an Outcome, Support, or Referral',\r\n tocSectionAlertDiv,\r\n );\r\n\r\n tocSectionAlertDiv.style.display = 'none';\r\n\r\n if (title === 'WORKING/ NOT WORKING') {\r\n const workingAlertDivCase1 = document.createElement('div');\r\n workingAlertDivCase1.classList.add('workingAlertDivCase1');\r\n workingAlertDivCase1.id = `workingAlert1`;\r\n workingAlertDivCase1.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(workingAlertDivCase1);\r\n\r\n planValidation.createTooltip(\r\n \"There must be at least one record for What's Working/What's Not Working\",\r\n workingAlertDivCase1,\r\n );\r\n\r\n workingAlertDivCase1.style.display = 'none';\r\n\r\n const workingAlertDivCase2 = document.createElement('div');\r\n workingAlertDivCase2.classList.add('workingAlertDivCase2');\r\n workingAlertDivCase2.id = `workingAlert2`;\r\n workingAlertDivCase2.innerHTML = `${icons.error}`;\r\n sectionHeading.appendChild(workingAlertDivCase2);\r\n\r\n planValidation.createTooltip(\r\n \"Each record must include at least one 'What's Working' or 'What's Not Working', along with a 'Who Said It?' entry\",\r\n workingAlertDivCase2,\r\n );\r\n\r\n workingAlertDivCase2.style.display = 'none';\r\n\r\n if (assessmentValidationCheck.workingSectionComplete === false) {\r\n let workingSectionCaseValue = planValidation.returnWorkingSectionCaseValue();\r\n if (workingSectionCaseValue === 1) {\r\n workingAlertDivCase1.style.display = 'inline-block';\r\n }\r\n else if (workingSectionCaseValue === 2) {\r\n workingAlertDivCase2.style.display = 'inline-block';\r\n }\r\n }\r\n }\r\n\r\n section.appendChild(sectionHeading);\r\n\r\n return section;\r\n }\r\n function addSection({ order, title, id, sectionNumber, applicable }) {\r\n const markup = buildSectionMarkup(title, id, sectionNumber, applicable);\r\n\r\n if (!sections[order]) sections[order] = { id, markup };\r\n }\r\n\r\n // Sub Sections\r\n //------------------------------------\r\n function buildSubSectionMarkup(title, id) {\r\n const subSection = document.createElement('div');\r\n subSection.classList.add('tableOfContents__subSectionGroup');\r\n\r\n const subSectionHeading = document.createElement('p');\r\n subSectionHeading.classList.add('tableOfContents__subSectionHeading');\r\n subSectionHeading.innerHTML = `${title}`;\r\n\r\n subSection.appendChild(subSectionHeading);\r\n\r\n return subSection;\r\n }\r\n function addSubSection(order, title, id, sectionId) {\r\n const markup = buildSubSectionMarkup(title, id);\r\n\r\n if (!subSections[sectionId]) subSections[sectionId] = {};\r\n if (!subSections[sectionId][order]) subSections[sectionId][order] = { id, markup };\r\n }\r\n\r\n function build() {\r\n const sectionOrderKeys = Object.keys(sections);\r\n sectionOrderKeys.forEach(soKey => {\r\n const { id: sectionId, markup: sectionMarkup } = sections[soKey];\r\n tocInner.appendChild(sectionMarkup);\r\n\r\n const subSectionOrderKeys = subSections[sectionId]\r\n ? Object.keys(subSections[sectionId])\r\n : null;\r\n if (!subSectionOrderKeys) return;\r\n\r\n subSectionOrderKeys.forEach(ssoKey => {\r\n const { markup: subSectionMarkup } = subSections[sectionId][ssoKey];\r\n sectionMarkup.appendChild(subSectionMarkup);\r\n });\r\n });\r\n\r\n return toc;\r\n }\r\n\r\n function init() {\r\n toc = document.createElement('div');\r\n toc.classList.add('tableOfContents');\r\n toc.addEventListener('click', e => {\r\n if (e.target.tagName === 'A') {\r\n toc.classList.remove('visible');\r\n // document.body.style.overflow = 'auto';\r\n }\r\n });\r\n\r\n tocInner = document.createElement('div');\r\n tocInner.classList.add('tableOfContents__inner');\r\n\r\n let assessmentValidationCheck = planValidation.returnAssessmentValidationData();\r\n\r\n const tocHeader = document.createElement('h2');\r\n tocHeader.classList.add('tableOfContents__heading');\r\n tocHeader.innerHTML = `Table Of Contents`;\r\n\r\n const tocAlertDiv = document.createElement('div');\r\n tocAlertDiv.classList.add('tocAlertDiv');\r\n tocAlertDiv.id = 'tocAlert';\r\n tocHeader.appendChild(tocAlertDiv);\r\n tocAlertDiv.innerHTML = `${icons.error}`;\r\n\r\n // creates and shows a tip when hovering over the visible alert div\r\n planValidation.createTooltip(\r\n 'At least one section of the Assessment must be selected',\r\n tocAlertDiv,\r\n );\r\n\r\n if (assessmentValidationCheck.hasASectionApplicable === true) {\r\n tocAlertDiv.style.display = 'none';\r\n }\r\n\r\n const tocMain = document.createElement('div');\r\n tocMain.classList.add('tableOfContents__main');\r\n\r\n const tocToggle = document.createElement('div');\r\n tocToggle.classList.add('tableOfContents__toggle');\r\n tocToggle.setAttribute('data-toggle', 'open');\r\n tocToggle.innerHTML = icons.keyArrowLeft;\r\n tocToggle.addEventListener('click', e => {\r\n const assessmentNavMarkupWrap = document.querySelector('.assessmentNavMarkupWrap');\r\n const currToggleState = e.target.dataset.toggle === 'open' ? 'open' : 'closed';\r\n\r\n if (currToggleState === 'open') {\r\n e.target.dataset.toggle = 'closed';\r\n tocHeader.innerHTML = `TOC`;\r\n toc.classList.add('toggleClosed');\r\n assessmentNavMarkupWrap.classList.add('toggleClosed');\r\n tocToggle.innerHTML = icons.keyArrowRight;\r\n } else {\r\n e.target.dataset.toggle = 'open';\r\n tocHeader.innerHTML = `Table Of Contents`;\r\n toc.classList.remove('toggleClosed');\r\n assessmentNavMarkupWrap.classList.remove('toggleClosed');\r\n tocToggle.innerHTML = icons.keyArrowLeft;\r\n }\r\n });\r\n\r\n const tocClose = document.createElement('span');\r\n tocClose.classList.add('tableOfContents__close');\r\n tocClose.innerHTML = icons.close;\r\n\r\n tocClose.addEventListener('click', () => {\r\n toc.classList.remove('visible');\r\n });\r\n\r\n tocInner.appendChild(tocClose);\r\n\r\n tocMain.appendChild(tocInner);\r\n tocMain.appendChild(tocToggle);\r\n\r\n toc.appendChild(tocHeader);\r\n toc.appendChild(tocMain);\r\n\r\n // planValidation.tocAssessmentCheck(assessmentValidationCheck);\r\n }\r\n\r\n return {\r\n init,\r\n build,\r\n addSection,\r\n addSubSection,\r\n clearData,\r\n toggleVisibility,\r\n toggleApplicability,\r\n showUnansweredQuestionCount,\r\n };\r\n})();\r\n","var itConsumerSection = (function () {\r\n // DOM\r\n // ---------------------\r\n var section;\r\n var sectionBody;\r\n var consumerError;\r\n var consumersWrap;\r\n var consumerSections;\r\n // DATA\r\n //---------------------\r\n var activeConsumers = [];\r\n var consumersInvolved;\r\n var consumerInvolvedIdArray;\r\n // Values\r\n // ---------------------\r\n\r\n function clearData() {\r\n consumerFollowUp.clearData();\r\n consumerInjuries.clearData();\r\n consumerIntervention.clearData();\r\n consumerInvolvement.clearData();\r\n consumerReporting.clearData();\r\n consumerReview.clearData();\r\n consumerBehavior.clearData();\r\n activeConsumers = [];\r\n }\r\n function deleteConsumerData(consumerId) {\r\n consumerFollowUp.deleteConsumerData(consumerId);\r\n consumerInjuries.deleteConsumerData(consumerId);\r\n consumerIntervention.deleteConsumerData(consumerId);\r\n consumerInvolvement.deleteConsumerData(consumerId);\r\n consumerReporting.deleteConsumerData(consumerId);\r\n consumerReview.deleteConsumerData(consumerId);\r\n consumerBehavior.deleteConsumerData(consumerId);\r\n }\r\n\r\n function getConsumersInvolved() {\r\n if (consumersInvolved) return [...consumersInvolved];\r\n }\r\n function getConsumersInvolvedIds() {\r\n if (consumerInvolvedIdArray && consumerInvolvedIdArray.length > 0) {\r\n return [...consumerInvolvedIdArray];\r\n }\r\n }\r\n\r\n function showConsumersWrap() {\r\n consumersWrap.classList.add('visible');\r\n consumerSections.classList.remove('visible');\r\n }\r\n function displayCount() {\r\n var count = activeConsumers.length;\r\n var countHolder = section.querySelector('span[data-count=\"consumers\"]');\r\n countHolder.innerHTML = `( ${count} )`;\r\n }\r\n function checkForRequiredConsumer() {\r\n if (activeConsumers.length === 0) {\r\n consumerError.classList.remove('hidden');\r\n consumersWrap.classList.remove('visible');\r\n consumerSections.classList.remove('visible');\r\n\r\n incidentCard.toggleSave(true);\r\n return;\r\n }\r\n\r\n consumerError.classList.add('hidden');\r\n consumersWrap.classList.add('visible');\r\n }\r\n function removeConsumerErrors() {\r\n var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n consumerCards.forEach(card => card.classList.remove('error'));\r\n\r\n var cardHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n if (cardHasErrors) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n function showConsumerError(consumerIdArray) {\r\n incidentCard.toggleSave(true);\r\n\r\n var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n\r\n if (consumerIdArray[0] === '%') {\r\n // mark all\r\n // show error \"At least one consumer must have PPI checked.\"\r\n consumerCards.forEach(card => card.classList.add('error'));\r\n return;\r\n }\r\n\r\n consumerCards.forEach(card => {\r\n var cardId = card.dataset.consumerId;\r\n if (consumerIdArray.includes(cardId)) {\r\n card.classList.add('error');\r\n } else {\r\n card.classList.remove('error');\r\n }\r\n });\r\n }\r\n\r\n function moveConsumersToConsumersInvolved(consumers) {\r\n var initPromises = [];\r\n\r\n consumersWrap.classList.add('visible');\r\n\r\n consumers.forEach(consumer => {\r\n //If consumer is already on the selected consumer list ignore\r\n if (activeConsumers.filter(actConsumer => actConsumer.id === consumer.id).length > 0) return;\r\n consumer.card.classList.remove('highlighted');\r\n var clone = consumer.card.cloneNode(true);\r\n var card = buildConsumer(clone);\r\n consumersWrap.appendChild(card);\r\n var initPromise = consumerInvolvement.initConsumerData(consumer.id);\r\n initPromises.push(initPromise);\r\n });\r\n\r\n activeConsumers = roster2.getActiveConsumers();\r\n checkForRequiredConsumer();\r\n displayCount();\r\n\r\n Promise.all(initPromises).then(() => {\r\n consumerInvolvement.checkRequiredFields();\r\n });\r\n\r\n // Event when you add a consumer\r\n // 1. Ensure that all required fields are filled in on the details section\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n if (detailSectionHasErrors) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n function removeConsumerFromConsumersInvolved(selectedConsumerId) {\r\n var consumerCard = document.querySelector(\r\n `[data-consumer-id=\"${selectedConsumerId}\"]`,\r\n ).parentElement;\r\n consumersWrap.removeChild(consumerCard);\r\n\r\n consumerSections.classList.remove('visible');\r\n\r\n incidentCard.toggleActionBtns(false);\r\n\r\n roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n deleteConsumerData(selectedConsumerId);\r\n\r\n checkForRequiredConsumer();\r\n consumerInvolvement.checkRequiredFields();\r\n displayCount();\r\n roster2.toggleMiniRosterBtnVisible(true);\r\n\r\n // Event when you remove a consumer\r\n // 1. Ensure that at least one consumer is selected\r\n // 2. Ensure that all required fields are filled in on the details section\r\n var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n //var consumerSectionHasErrors = incidentCard.checkforRequiredConsumer();\r\n // var consumerSectionConsumers = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n if (detailSectionHasErrors || activeConsumers.length === 0) {\r\n incidentCard.toggleSave(true);\r\n } else {\r\n incidentCard.toggleSave(false);\r\n }\r\n }\r\n\r\n // Populate\r\n //-----------------------------------------------\r\n function populateConsumersWrap() {\r\n consumerInvolvedIdArray = [];\r\n\r\n consumersInvolved.forEach(c => {\r\n consumerInvolvedIdArray.push({ id: c.consumerId, involvedId: c.consumerInvolvedId });\r\n // build consumer card\r\n var consumer = roster2.buildConsumerCard({\r\n FN: c.firstName,\r\n LN: c.lastName,\r\n id: c.consumerId,\r\n });\r\n // build incident card\r\n var card = buildConsumer(consumer);\r\n consumersWrap.appendChild(card);\r\n // move consumer to avtive list\r\n roster2.addConsumerToActiveConsumers(consumer);\r\n });\r\n\r\n activeConsumers = roster2.getActiveConsumers();\r\n\r\n consumersWrap.classList.add('visible');\r\n\r\n checkForRequiredConsumer();\r\n consumerInvolvement.checkRequiredFields();\r\n displayCount();\r\n }\r\n\r\n // Consumer Card\r\n //-----------------------------------------------\r\n function buildConsumer(consumerCard) {\r\n function checkInvolvedRequirements() {\r\n const locationId = consumerInvolvement.involvementDataLookup(\r\n consumerCard.dataset.consumerId,\r\n ).locationId;\r\n\r\n const involvementSec = document.querySelector(\"[data-sectionid='5']\");\r\n\r\n if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n involvementSec.classList.add('sectionError');\r\n } else {\r\n involvementSec.classList.remove('sectionError');\r\n }\r\n }\r\n\r\n consumerCard.classList.remove('highlighted');\r\n\r\n var cardWrap = document.createElement('div');\r\n cardWrap.classList.add('incidentCard__consumer');\r\n\r\n // build card\r\n cardWrap.appendChild(consumerCard);\r\n\r\n // card event\r\n cardWrap.addEventListener('click', function (event) {\r\n if (event.target === consumerCard) {\r\n incidentCard.toggleActionBtns(true);\r\n consumersWrap.classList.remove('visible');\r\n consumerSections.classList.add('visible');\r\n consumerSubSections.showMenu(consumerCard);\r\n checkInvolvedRequirements();\r\n if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(false);\r\n }\r\n });\r\n\r\n return cardWrap;\r\n }\r\n\r\n // Section\r\n //-----------------------------------------------\r\n function buildSection(options, consumersInvolvedData) {\r\n var opts = options;\r\n consumersInvolved = consumersInvolvedData;\r\n\r\n section = document.createElement('div');\r\n section.classList.add('incidentSection', 'visible');\r\n section.setAttribute('data-card-page', 'consumers');\r\n section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n var heading = document.createElement('div');\r\n heading.classList.add('incidentSection__header');\r\n heading.innerHTML = `

    Consumers Involved

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

    Incident Details

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

    Employees Involved

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

    Other People Involved

    `;\r\n\r\n sectionBody = document.createElement('div');\r\n sectionBody.classList.add('incidentSection__body');\r\n\r\n var addPeopleBtn = button.build({\r\n text: 'Add New Person',\r\n icon: 'add',\r\n type: 'contained',\r\n style: 'secondary',\r\n callback: addNewPersonRow,\r\n });\r\n\r\n sectionBody.appendChild(addPeopleBtn);\r\n\r\n section.appendChild(heading);\r\n section.appendChild(sectionBody);\r\n\r\n if (othersInvolved) populate();\r\n\r\n return section;\r\n }\r\n\r\n return {\r\n build: buildSection,\r\n checkRequiredFields,\r\n };\r\n})();\r\n","const 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 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 // 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 _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 });\r\n \r\n // add checkbox\r\n const checkboxCheck = document.createElement('div');\r\n checkboxCheck.appendChild(includeCheckbox);\r\n const checkboxText = document.createElement('div');\r\n checkboxText.innerHTML = 'Include Important to, Important For, Skills and Abilities, and Risks in assessment';\r\n const checkboxArea = document.createElement('div');\r\n checkboxArea.classList.add('checkboxWrap');\r\n checkboxArea.appendChild(includeCheckbox);\r\n checkboxArea.appendChild(checkboxText);\r\n reportsScreen.appendChild(checkboxArea);\r\n reportsScreen.appendChild(doneBtn);\r\n \r\n morepopupmenu.appendChild(reportsScreen);\r\n ESignaturesPopup.appendChild(morepopupmenu);\r\n \r\n POPUP.show(ESignaturesPopup);\r\n }\r\n\r\n let sendDocumentToOneSpanBtn;\r\n let requestESignaturesBtn;\r\n if ($.session.oneSpan) {\r\n sendDocumentToOneSpanBtn = oneSpan.buildSendDocumentToOneSpanBtn(planId);\r\n\r\n const planStatus = plan.getPlanStatus();\r\n if (planStatus === 'C') {\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n }\r\n\r\n //initial check for digital signers to remove disabled class from one span button\r\n teamMemberData.forEach(member => {\r\n if (member.signatureType === '1') {\r\n sendDocumentToOneSpanBtn.classList.remove('disabled');\r\n }\r\n });\r\n\r\n // Checks for any changes in the team members and the signature type\r\n document.addEventListener('data-update', function (event) {\r\n oneSpan.shouldBeDisabled(sendDocumentToOneSpanBtn, event.detail.data);\r\n });\r\n } else {\r\n // requestESignaturesBtn = button.build({\r\n // id: 'sig_addMember',\r\n // text: 'REQUEST E-SIGNATURES',\r\n // style: 'secondary',\r\n // type: 'contained',\r\n // callback: async () => {\r\n // showESignaturesPopup()\r\n // }\r\n // });\r\n\r\n // // initial check for esignatures btn\r\n // const filteredTeamMemberData = teamMemberData.filter(member => member.signatureType === '4' && member.signature === '');\r\n // if (filteredTeamMemberData.length === 0) {\r\n // requestESignaturesBtn.classList.add('disabled');\r\n // }\r\n\r\n // // Checks for any changes in the team members and the signature type\r\n // document.addEventListener('data-update', function (event) {\r\n // oneSpan.shouldBeDisabled(requestESignaturesBtn, event.detail.data, '4');\r\n // });\r\n }\r\n\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('topOutcomeWrap');\r\n\r\n btnWrap.appendChild(addMemberBtn);\r\n btnWrap.appendChild(addVendorBtn);\r\n\r\n if ($.session.oneSpan) {\r\n btnWrap.appendChild(sendDocumentToOneSpanBtn);\r\n } else {\r\n //btnWrap.appendChild(requestESignaturesBtn);\r\n }\r\n\r\n tableWrap.appendChild(btnWrap);\r\n tableWrap.appendChild(teamMemberTable);\r\n\r\n if (readOnly) {\r\n teamMemberTable.classList.add('disableDrag');\r\n addMemberBtn.classList.add('disabled');\r\n addVendorBtn.classList.add('disabled');\r\n if ($.session.oneSpan) {\r\n //\r\n sendDocumentToOneSpanBtn.classList.add('disabled');\r\n }\r\n }\r\n\r\n // build it\r\n section.appendChild(heading);\r\n section.appendChild(tableWrap);\r\n\r\n return section;\r\n }\r\n\r\n function doesIdExistInVendors(vendorID) {\r\n const dropdownData = getVendorDropdownData();\r\n let mergedData = [...dropdownData.nonPaidSupport, ...dropdownData.paidSupport];\r\n const filteredValue = mergedData.filter(d => d.value === vendorID);\r\n return filteredValue.length === 0 ? false : true;\r\n }\r\n function invalidContactProviderVendorIdCheck() {\r\n const dropdownData = getVendorDropdownData();\r\n let mergedData = [...dropdownData.nonPaidSupport, ...dropdownData.paidSupport];\r\n\r\n teamMemberData.forEach((member, index) => {\r\n const filteredValue = mergedData.filter(d => d.value === member.csContactProviderVendorId);\r\n if (filteredValue.length === 0) {\r\n teamMemberData[index].csContactProviderVendorId = '';\r\n }\r\n });\r\n }\r\n\r\n async function checkOneSpan() {\r\n // Checks for new signed values or completed documents to retrieve\r\n oneSpanDocumentStatus = await oneSpanAjax.oneSpanCheckDocumentStatus({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n // Retrieves signers values and downloads document if all digital signers have signed\r\n if (oneSpanDocumentStatus[0].signedStatus !== '') {\r\n const oneSpanRetrieveData = {\r\n token: $.session.Token,\r\n packageId: oneSpanDocumentStatus[0].packageId,\r\n assessmentID: planId,\r\n };\r\n\r\n await oneSpanAjax.oneSpanGetSignedDocuments(oneSpanRetrieveData);\r\n }\r\n }\r\n\r\n async function init(data) {\r\n planId = data.planId;\r\n readOnly = data.readOnly;\r\n paidSupportProviders = servicesSupports.getSelectedVendorIds();\r\n effStartDate = planDates.getEffectiveStartDate();\r\n effEndDate = planDates.getEffectiveEndDate();\r\n selectedConsumer = plan.getSelectedConsumer();\r\n\r\n await checkOneSpan();\r\n\r\n teamMemberData = await consentAndSignAjax.getConsentAndSignData({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n vendorData = await consentAndSignAjax.getAllActiveVendors({\r\n token: $.session.Token,\r\n });\r\n\r\n if (teamMemberData && teamMemberData.length !== 0) {\r\n csSSAPeopleIdGlobal = teamMemberData[0].csChangeMindSSAPeopleId;\r\n csrVendorIdGlobal = teamMemberData[0].csContactProviderVendorId;\r\n csContactInputGlobal = teamMemberData[0].csContactInput;\r\n } else {\r\n csSSAPeopleIdGlobal = $.session.PeopleId;\r\n csrVendorIdGlobal = '';\r\n csContactInputGlobal = '';\r\n }\r\n\r\n await loadDropdownData();\r\n\r\n invalidContactProviderVendorIdCheck();\r\n }\r\n\r\n return {\r\n init,\r\n refreshTable,\r\n getMarkup: getSectionMarkup,\r\n insertNewTeamMember,\r\n updateTeamMember,\r\n deleteTeamMember,\r\n buildChangeMindQuestion,\r\n buildContactQuestion,\r\n updateSSADropdownWidth,\r\n updateVendorDropdownWidth,\r\n setSSADropdownInitialWidth,\r\n setVendorDropdownInitialWidth,\r\n getConsentGlobalValues,\r\n planStatusChange,\r\n isTeamMemberConsentable,\r\n isTeamMemberGuardian,\r\n getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds,\r\n getNames,\r\n getTeamMemberData,\r\n doesIdExistInVendors,\r\n };\r\n})();\r\n","const consentAndSignAjax = (() => {\r\n // GET\r\n //-------------------------------------\r\n async function getConsentAndSignData(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanSignatures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getSignaturesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanInformedConsentSSAs(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanInformedConsentSSAs/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanInformedConsentSSAsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getPlanInformedConsentVendors(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanInformedConsentVendors/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanInformedConsentVendorsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getAllActiveVendors(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getAllActiveVendors/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getAllActiveVendorsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function GetSalesForceId(peopleId) {\r\n // token, signatureId\r\n const retrieveData = {\r\n token: $.session.Token,\r\n consumerId: parseInt(plan.getSelectedConsumer().id),\r\n peopleId: parseInt(peopleId),\r\n };\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/GetSalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.GetSalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function getTeamMemberListFromState(retrieveData) {\r\n //peopleId should be an integer in the retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTeamMemberListFromState/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getTeamMemberListFromStateResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getStateGuardiansforConsumer(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStateGuardiansforConsumer/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getStateGuardiansforConsumerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getStateCaseManagerforConsumer(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getStateCaseManagerforConsumer/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getStateCaseManagerforConsumerResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function assignStateCaseManagertoConsumers(peopleIdData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/assignStateCaseManagertoConsumers/',\r\n data: JSON.stringify(peopleIdData),\r\n //data: '{\"peopleId\":\"' + peopleId + '\"}',\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.assignStateCaseManagertoConsumersResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getTeamMemberBySalesForceId(retrieveData) {\r\n // string salesForceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getTeamMemberBySalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getTeamMemberBySalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getConsumerOrganizationId(retrieveData) {\r\n //peopleId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerOrganizationId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerOrganizationIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getCaseManagersfromOptionsTable(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getCaseManagersfromOptionsTable/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getCaseManagersfromOptionsTableResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getConsumerswithSaleforceIds(retrieveData) {\r\n // string token\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getConsumerswithSaleforceIds/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getConsumerswithSaleforceIdsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getLocationswithSalesforceId() {\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getLocationswithSalesforceId/',\r\n data: JSON.stringify({ token: $.session.Token }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return data.getLocationswithSalesforceIdResult;\r\n } catch (error) {\r\n console.log(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //-------------------------------------\r\n async function insertTeamMember(retrieveData) {\r\n //* NO NEED TO REMOVE UNSAVABLE NOTE TEXT, THIS IS DONE IN BACKEND\r\n //*--------------------------------------------------------------------\r\n // token, assessmentId\r\n // teamMember, name, lastName, relationship, participated, parentOfMinor\r\n // signature, dateSigned, dissentAreaDisagree, dissentHowToAddress, dissentDate\r\n // contactId, peopleId, buildingNumber, dateOfBirth, planYearStart, planYearEnd\r\n // csChangeMind, csChangeMindSSAPeopleId, csContact, csContactProviderVendorId, csContactInput\r\n // csRightsReviewed, csAgreeToPlan, csFCOPExplained, csDueProcess, csResidentialOptions, csSupportsHealthNeeds, csTechnology,\r\n // useExisting, relationshipImport, consumerId, createRelationship, isVeendor(bool), email, parentOfMinor\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertTeamMember/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanTeamMemberResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //-------------------------------------\r\n async function updateTeamMember(retrieveData) {\r\n //! THIS WILL ONLY UPDATE THE FOLLOWING DATA\r\n // token, signatureId, teamMember, name, lastName, relationship, participated,\r\n // dissentAreaDisagree, dissentHowToAddress, dissentDate, signature, contactId, buildingNumber, dateOfBirth, salesForceId, consumerId\r\n //! USE updatePlanConsentStatements() FOR CS DATA\r\n\r\n //moved functionality to C# - MAT\r\n //if (retrieveData.name !== '') {\r\n // retrieveData.name = UTIL.removeUnsavableNoteText(retrieveData.name);\r\n //}\r\n //if (retrieveData.relationship !== '') {\r\n // retrieveData.relationship = UTIL.removeUnsavableNoteText(retrieveData.relationship);\r\n //}\r\n //if (retrieveData.dissentAreaDisagree !== '') {\r\n // retrieveData.dissentAreaDisagree = UTIL.removeUnsavableNoteText(\r\n // retrieveData.dissentAreaDisagree,\r\n // );\r\n //}\r\n //if (retrieveData.dissentHowToAddress !== '') {\r\n // retrieveData.dissentHowToAddress = UTIL.removeUnsavableNoteText(\r\n // retrieveData.dissentHowToAddress,\r\n // );\r\n //}\r\n\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(retrieveData.attachment);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n retrieveData.attachment = abString;\r\n\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanTeamMember/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanTeamMemberResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanConsentStatements(retrieveData) {\r\n /* token, signatureId, csChangeMind, csChangeMindSSAPeopleId, csContact,\r\n csContactProviderVendorId, csContactInput, csRightsReviewed, csAgreeToPlan, \r\n csFCOPExplained, csDueProcess, csResidentialOptions, csSupportsHealthNeeds, csTechnology\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanConsentStatements/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanConsentStatementsResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateTableRowOrder(retrieveData) {\r\n // assessmentId, signatureId, newPos\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanSignatureOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanSignatureOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //-------------------------------------\r\n async function deleteTeamMember(retrieveData) {\r\n // token, signatureId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanSignature/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanSignatureResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // OTHER\r\n //-------------------------------------\r\n async function setSalesForceIdForTeamMemberUpdate(retrieveData) {\r\n //peopleId and salesForceId both strings\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/setSalesForceIdForTeamMemberUpdate/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.setSalesForceIdForTeamMemberUpdateResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function validateConsumerForSalesForceId(retrieveData) {\r\n //cosumerId as a string in retrieveData\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/validateConsumerForSalesForceId/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.validateConsumerForSalesForceIdResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getConsentAndSignData,\r\n getPlanInformedConsentSSAs,\r\n getPlanInformedConsentVendors,\r\n getTeamMemberBySalesForceId,\r\n getConsumerOrganizationId,\r\n getCaseManagersfromOptionsTable,\r\n getConsumerswithSaleforceIds,\r\n getLocationswithSalesforceId,\r\n updateTeamMember,\r\n updatePlanConsentStatements,\r\n updateTableRowOrder,\r\n insertTeamMember,\r\n deleteTeamMember,\r\n GetSalesForceId,\r\n getTeamMemberListFromState,\r\n setSalesForceIdForTeamMemberUpdate,\r\n validateConsumerForSalesForceId,\r\n getStateGuardiansforConsumer,\r\n getStateCaseManagerforConsumer,\r\n assignStateCaseManagertoConsumers,\r\n getAllActiveVendors,\r\n };\r\n})();\r\n","const csRelationship = (() => {\r\n let selectedRelationship;\r\n let gkRelationships;\r\n // DOM\r\n let teamMemberPopup;\r\n let importPopup;\r\n let existingRelationshipPopup;\r\n let relationshipsWrap;\r\n let doneBtn;\r\n\r\n function buildExistingPopupMessage(selectedMemberData) {\r\n const message = document.createElement('div');\r\n message.classList.add('message');\r\n\r\n const name = contactInformation.cleanName({\r\n firstName: selectedMemberData.name,\r\n lastName: selectedMemberData.lastName,\r\n });\r\n\r\n message.innerHTML = `\r\n

    An existing record was found for this Team Member:

    \r\n

    ${name}

    \r\n

    ${dates.removeTimestamp(selectedMemberData.dateOfBirth)}

    \r\n

    ${selectedMemberData.buildingNumber}

    \r\n

    Would you like to select this existing record?

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

    Signature

    \r\n //
    \r\n //
    \r\n // \r\n //
    \r\n //
    \r\n // \"\r\n\r\n const sigBody = sigWrap.querySelector('.signature-pad--body');\r\n const sigCanvas = sigWrap.querySelector('.ispCanvas');\r\n\r\n if (!sigBody || !sigCanvas) return;\r\n\r\n sigCanvas.width = sigBody.offsetWidth;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MARKUP\r\n //*------------------------------------------------------\r\n\r\n function showClearConfirmationPopup() {\r\n const confirmPop = POPUP.build({\r\n id: 'clearSignConfirmPopup',\r\n hideX: true,\r\n });\r\n const message = document.createElement('p');\r\n message.innerText = `Are you sure you would like to remove this signature and any associated consent and dissenting opinions? This cannot be undone.`;\r\n\r\n const yesBtn = button.build({\r\n text: 'yes',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: async () => {\r\n yesBtn.classList.add('disabled');\r\n const planId = plan.getCurrentPlanId();\r\n const attachmentId = selectedMemberData.attachmentId;\r\n clearSignature = true;\r\n clearMemberDataOnClear();\r\n clearInputsOnSignatureClear();\r\n const updatedSignatureSection = buildSignatureSection();\r\n signaturePopup.replaceChild(updatedSignatureSection, signatureSection);\r\n signatureSection = updatedSignatureSection;\r\n resizeSigCanvas(updatedSignatureSection);\r\n await planConsentAndSign.updateTeamMember(selectedMemberData, clearSignature);\r\n if (signatureType === '2') {\r\n planAjax.deletePlanAttachment(planId, attachmentId);\r\n }\r\n yesBtn.classList.remove('disabled');\r\n DOM.ACTIONCENTER.removeChild(confirmPop);\r\n planConsentAndSign.refreshTable();\r\n },\r\n });\r\n const noBtn = button.build({\r\n text: 'no',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n DOM.ACTIONCENTER.removeChild(confirmPop);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(yesBtn);\r\n btnWrap.appendChild(noBtn);\r\n\r\n confirmPop.appendChild(message);\r\n confirmPop.appendChild(btnWrap);\r\n\r\n POPUP.show(confirmPop);\r\n }\r\n function buildSignatureSection() {\r\n const signatureWrap = document.createElement('div');\r\n signatureWrap.classList.add('signatureWrap');\r\n const signatureTitle = document.createElement('h3');\r\n signatureTitle.classList.add('h3Title');\r\n signatureTitle.innerText = 'Signature';\r\n signatureWrap.appendChild(signatureTitle);\r\n\r\n if (selectedMemberData.description) {\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('innerWrap');\r\n\r\n const attachmentDesc = document.createElement('p');\r\n attachmentDesc.innerText = selectedMemberData.description;\r\n attachmentDesc.classList.add('signAttachmentDesc');\r\n\r\n attachmentDesc.addEventListener('click', () => {\r\n var action = `${$.webServer.protocol}://${$.webServer.address}:${$.webServer.port}/${$.webServer.serviceName}/viewPlanAttachment/`;\r\n var successFunction = function (resp) {\r\n var res = JSON.stringify(response);\r\n };\r\n\r\n var form = document.createElement('form');\r\n form.setAttribute('action', action);\r\n form.setAttribute('method', 'POST');\r\n form.setAttribute('target', '_blank');\r\n form.setAttribute('enctype', 'application/json');\r\n form.setAttribute('success', successFunction);\r\n var tokenInput = document.createElement('input');\r\n tokenInput.setAttribute('name', 'token');\r\n tokenInput.setAttribute('value', $.session.Token);\r\n tokenInput.id = 'token';\r\n var attachmentInput = document.createElement('input');\r\n attachmentInput.setAttribute('name', 'attachmentId');\r\n attachmentInput.setAttribute('value', selectedMemberData.attachmentId);\r\n attachmentInput.id = 'attachmentId';\r\n var sectionInput = document.createElement('input');\r\n sectionInput.setAttribute('name', 'section');\r\n sectionInput.setAttribute('value', 'junk');\r\n sectionInput.id = 'section';\r\n\r\n form.appendChild(tokenInput);\r\n form.appendChild(attachmentInput);\r\n form.appendChild(sectionInput);\r\n form.style.position = 'absolute';\r\n form.style.opacity = '0';\r\n document.body.appendChild(form);\r\n\r\n form.submit();\r\n form.remove();\r\n });\r\n innerWrap.appendChild(attachmentDesc);\r\n\r\n // signature date\r\n let signDate = UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateSigned));\r\n const date = input.build({\r\n type: 'date',\r\n label: 'Signature Date',\r\n style: 'secondary',\r\n value: signDate,\r\n classNames: 'disabled',\r\n });\r\n if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n innerWrap.appendChild(date);\r\n }\r\n\r\n signatureWrap.appendChild(innerWrap);\r\n return signatureWrap;\r\n } else if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n selectedMemberData.hasWetSignature = false;\r\n\r\n const innerWrap = document.createElement('div');\r\n innerWrap.classList.add('innerWrap');\r\n\r\n // signature attachment\r\n const attachmentInput = document.createElement('input');\r\n attachmentInput.type = 'file';\r\n attachmentInput.classList.add('input-field__input', 'attachmentInput');\r\n attachmentInput.addEventListener('change', async e => {\r\n const attPromise = new Promise(resolve => {\r\n const target = e.target;\r\n const file = target.files.item(0);\r\n const fileName = file.name;\r\n const fileType = fileName.split('.').pop();\r\n\r\n selectedMemberData.description = fileName;\r\n selectedMemberData.attachmentType = fileType;\r\n selectedMemberData.hasWetSignature = true;\r\n\r\n new Response(file).arrayBuffer().then(res => {\r\n selectedMemberData.attachment = res;\r\n resolve();\r\n });\r\n });\r\n\r\n await Promise.all([attPromise]);\r\n });\r\n\r\n // signature date\r\n let signDate = selectedMemberData.dateSigned\r\n ? UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateSigned))\r\n : null;\r\n const date = input.build({\r\n type: 'date',\r\n label: 'Signature Date',\r\n style: 'secondary',\r\n value: signDate ? signDate : '',\r\n callback: e => {\r\n selectedMemberData.dateSigned = e.target.value;\r\n\r\n if (!selectedMemberData.dateSigned) {\r\n date.classList.add('error');\r\n if (signDate) {\r\n date.classList.remove('error');\r\n }\r\n } else {\r\n date.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n },\r\n });\r\n\r\n if (!signDate) {\r\n date.classList.add('error');\r\n }\r\n\r\n innerWrap.appendChild(attachmentInput);\r\n innerWrap.appendChild(date);\r\n\r\n signatureWrap.appendChild(innerWrap);\r\n\r\n return signatureWrap;\r\n } else {\r\n selectedMemberData.description = '';\r\n selectedMemberData.attachmentType = '';\r\n selectedMemberData.hasWetSignature = false;\r\n selectedMemberData.attachment = '';\r\n }\r\n\r\n const sigDiv = document.createElement('div');\r\n sigDiv.classList.add('signature-pad');\r\n\r\n sigBody = document.createElement('div');\r\n sigBody.classList.add('signature-pad--body');\r\n sigDiv.appendChild(sigBody);\r\n\r\n if (readOnly) {\r\n sigBody.classList.add('disabled');\r\n }\r\n\r\n if (!isSigned) {\r\n sigCanvas = document.createElement('canvas');\r\n sigCanvas.classList.add('ispCanvas');\r\n sigBody.appendChild(sigCanvas);\r\n sigPad = new SignaturePad(sigCanvas);\r\n } else {\r\n const sigImage = document.createElement('img');\r\n sigImage.src = selectedMemberData.signature;\r\n sigImage.addEventListener('contextmenu', event => {\r\n event.preventDefault();\r\n return false;\r\n });\r\n sigImage.addEventListener('mousedown', event => {\r\n event.preventDefault();\r\n return false;\r\n });\r\n sigImage.style.pointerEvents = 'none';\r\n sigBody.appendChild(sigImage);\r\n }\r\n\r\n // this clear signature button is only for the sig pad canvas\r\n const clearSignatureBtn = button.build({\r\n id: '',\r\n text: 'clear',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n sigPad.clear();\r\n },\r\n });\r\n\r\n signatureWrap.appendChild(sigDiv);\r\n if (!isSigned && !readOnly) {\r\n signatureWrap.appendChild(clearSignatureBtn);\r\n }\r\n\r\n return signatureWrap;\r\n }\r\n function buildDissentSection() {\r\n const dissentWrap = document.createElement('div');\r\n dissentWrap.classList.add('dissentWrap');\r\n const dissentTitle = document.createElement('h3');\r\n dissentTitle.classList.add('h3Title');\r\n dissentTitle.innerText = 'Dissenting Opinion';\r\n // questions\r\n dissentAreaDisagree = input.build({\r\n label: 'Area Team Member Disagrees',\r\n value: selectedMemberData.dissentAreaDisagree,\r\n type: 'textarea',\r\n readonly: isSigned || readOnly,\r\n classNames: 'autosize',\r\n charLimit: characterLimits.dissentAreaDisagree,\r\n forceCharLimit: true,\r\n callback: event => {\r\n selectedMemberData.dissentAreaDisagree = event.target.value;\r\n },\r\n });\r\n dissentHowToAddress = input.build({\r\n label: 'How to Address',\r\n value: selectedMemberData.dissentHowToAddress,\r\n type: 'textarea',\r\n readonly: isSigned || readOnly,\r\n classNames: 'autosize',\r\n charLimit: characterLimits.dissentHowToAddress,\r\n forceCharLimit: true,\r\n callback: event => {\r\n selectedMemberData.dissentHowToAddress = event.target.value;\r\n },\r\n });\r\n dissentWrap.appendChild(dissentTitle);\r\n dissentWrap.appendChild(dissentAreaDisagree);\r\n dissentWrap.appendChild(dissentHowToAddress);\r\n\r\n if (isSigned || readOnly) {\r\n dissentAreaDisagree.classList.add('disabled');\r\n dissentHowToAddress.classList.add('disabled');\r\n }\r\n\r\n return dissentWrap;\r\n }\r\n function buildStandardQuestionSet() {\r\n const standardQuestions = [\r\n {\r\n id: 'csSupportsHealthNeeds',\r\n text: 'I agree this plan contains supports to meet my health and welfare needs.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csSupportsHealthNeeds,\r\n },\r\n {\r\n id: 'csRightsReviewed',\r\n text: 'Individual rights have been reviewed with me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csRightsReviewed,\r\n },\r\n {\r\n id: 'csAgreeToPlan',\r\n text: 'I understand the purpose, benefits, and potential risks. I agree and consent to this entire plan.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csAgreeToPlan,\r\n },\r\n {\r\n id: 'csTechnology',\r\n text: 'Technology solutions have been explored with my team and me.',\r\n options: ['Yes', 'No'],\r\n defaultVal: selectedMemberData.csTechnology,\r\n },\r\n {\r\n id: 'csFCOPExplained',\r\n text: 'Free Choice Of Provider has been explained to me.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csFCOPExplained,\r\n },\r\n {\r\n id: 'csDueProcess',\r\n text: 'I have been given my due process rights.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csDueProcess,\r\n },\r\n {\r\n id: 'csResidentialOptions',\r\n text: 'I have been given information on residential options.',\r\n options: ['Yes', 'No', 'N/A'],\r\n defaultVal: selectedMemberData.csResidentialOptions,\r\n },\r\n ];\r\n\r\n const standardQuestionsWrap = document.createElement('div');\r\n standardQuestionsWrap.classList.add('standardQuestionsWrap');\r\n\r\n standardQuestions.forEach(question => {\r\n const questionContainer = document.createElement('div');\r\n questionContainer.classList.add('ic_questionContainer');\r\n const questionText = document.createElement('p');\r\n questionText.classList.add('standardQuestionText');\r\n questionText.innerText = question.text;\r\n\r\n const questionRadioContainer = document.createElement('div');\r\n questionRadioContainer.classList.add('ic_questionRadioContainer');\r\n if (readOnly || isSigned) {\r\n questionRadioContainer.classList.add('disabled');\r\n }\r\n\r\n if (question.defaultVal === '') {\r\n questionRadioContainer.classList.add('error');\r\n }\r\n\r\n question.options.forEach(option => {\r\n let checked;\r\n switch (question.defaultVal) {\r\n case 'Y':\r\n if (option === 'Yes') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n case 'N':\r\n if (option === 'No') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n case 'NA':\r\n if (option === 'N/A') {\r\n checked = true;\r\n } else checked = false;\r\n break;\r\n default:\r\n checked = false;\r\n break;\r\n }\r\n const radio = input.buildRadio({\r\n id: `${question.id}-${option}`,\r\n text: option,\r\n name: question.id,\r\n isChecked: checked,\r\n isDisabled: this.readOnly,\r\n callback: () => {\r\n let dbVal;\r\n switch (option) {\r\n case 'Yes':\r\n dbVal = 'Y';\r\n break;\r\n case 'No':\r\n dbVal = 'N';\r\n break;\r\n case 'N/A':\r\n dbVal = 'NA';\r\n break;\r\n default:\r\n dbVal = '';\r\n break;\r\n }\r\n questionRadioContainer.classList.remove('error');\r\n checkSignautrePopupForErrors();\r\n selectedMemberData[question.id] = dbVal;\r\n },\r\n });\r\n questionRadioContainer.appendChild(radio);\r\n });\r\n\r\n questionContainer.appendChild(questionText);\r\n questionContainer.appendChild(questionRadioContainer);\r\n\r\n standardQuestionsWrap.appendChild(questionContainer);\r\n });\r\n\r\n return standardQuestionsWrap;\r\n }\r\n function getChangeMindMarkup() {\r\n // get markup\r\n const changeMindQuestion = planConsentAndSign.buildChangeMindQuestion(\r\n {\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n },\r\n 'sign',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n changeMindQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'CS_Change_Mind-yes' || targetId === 'CS_Change_Mind-no') {\r\n selectedMemberData.csChangeMind = targetId === 'CS_Change_Mind-yes' ? 'Y' : 'N';\r\n target.parentNode.parentNode.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = changeMindQuestion.querySelector('select');\r\n select.value = selectedMemberData.csChangeMindSSAPeopleId;\r\n\r\n return changeMindQuestion;\r\n }\r\n function getContactMarkup() {\r\n // get markup\r\n const contactQuestion = planConsentAndSign.buildContactQuestion(\r\n {\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csContactInput: selectedMemberData.csContactInput,\r\n csContact: selectedMemberData.csContact,\r\n ssaId: selectedMemberData.csChangeMindSSAPeopleId,\r\n },\r\n 'sign',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n contactQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'CS_Contact-yes' || targetId === 'CS_Contact-no') {\r\n selectedMemberData.csContact = targetId === 'CS_Contact-yes' ? 'Y' : 'N';\r\n target.parentNode.parentNode.classList.remove('error');\r\n }\r\n\r\n checkSignautrePopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = contactQuestion.querySelector('select');\r\n select.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n return contactQuestion;\r\n }\r\n function buildConsentSection() {\r\n const consentWrap = document.createElement('div');\r\n consentWrap.classList.add('consentWrap');\r\n\r\n const consentHeader = document.createElement('h3');\r\n consentHeader.classList.add('h3Title');\r\n consentHeader.innerText = 'Consent Statements';\r\n consentWrap.appendChild(consentHeader);\r\n\r\n standardQuestions = buildStandardQuestionSet();\r\n\r\n if (showConsentStatments) {\r\n changeMindQ = getChangeMindMarkup();\r\n complaintQ = getContactMarkup();\r\n consentWrap.appendChild(changeMindQ);\r\n consentWrap.appendChild(complaintQ);\r\n }\r\n\r\n consentWrap.appendChild(standardQuestions);\r\n\r\n return consentWrap;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function showPopup({ isNewMember, isReadOnly, memberData }) {\r\n isNew = isNewMember;\r\n const prevDateSigned = memberData.dateSigned;\r\n isSigned = memberData.dateSigned !== '';\r\n clearSignature = false;\r\n signatureType = memberData.signatureType;\r\n\r\n if (memberData.signatureType === '2' && memberData.description === '') {\r\n isSigned = false;\r\n }\r\n readOnly = isReadOnly;\r\n selectedMemberData = memberData;\r\n prevDissentData = {\r\n dissentHowToAddress: selectedMemberData.dissentHowToAddress,\r\n dissentAreaDisagree: selectedMemberData.dissentAreaDisagree,\r\n };\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n characterLimits = planData.getISPCharacterLimits('consentAndSign');\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n signaturePopup = POPUP.build({\r\n id: 'sig_signPopup',\r\n hideX: true,\r\n });\r\n\r\n //* PROMPT\r\n //*------------------------------\r\n const prompt = document.createElement('p');\r\n prompt.innerText = `By checking the boxes below, I agree that this plan reflects actions, services, and supports as requested by the person listed. As a provider, I agree to the services listed in this plan for which I am named a responsible party. I understand that I may revoke my consent at any time verbally or in writing in accordance with DODD rules.`;\r\n prompt.style.marginBottom = '14px';\r\n\r\n //* SIGNATURE\r\n signatureSection = buildSignatureSection();\r\n\r\n //* DISSENT\r\n const dissentSection = buildDissentSection();\r\n\r\n //* CONSENT\r\n const consentSection = buildConsentSection();\r\n\r\n //* SAVE/CANCEL BUTTONS\r\n //*------------------------------\r\n allowSignClear = checkForAllowClearSignature(memberData.signatureType);\r\n const clearSignatureBtn = button.build({\r\n id: 'clearSigBtn',\r\n text: 'clear',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n clearSignatureBtn.classList.add('disabled');\r\n signaturePopup.classList.add('fadeInside');\r\n showClearConfirmationPopup();\r\n clearSignatureBtn.classList.remove('disabled');\r\n signaturePopup.classList.remove('fadeInside');\r\n },\r\n });\r\n saveBtn = button.build({\r\n id: 'saveSigBtn',\r\n text: allowSignClear ? 'update' : 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n let sigPadData = parseSignatureData();\r\n signaturePopup.style.display = 'none';\r\n\r\n if (\r\n selectedMemberData.signatureType === 'In-Person' ||\r\n selectedMemberData.signatureType === '2'\r\n ) {\r\n if (!selectedMemberData.description || selectedMemberData.description === '') {\r\n saveFromSignature();\r\n } else {\r\n showWarningPopup();\r\n }\r\n } else {\r\n if (sigPadData === emptySignatureDataURL || sigPadData === '') {\r\n saveFromSignature();\r\n } else {\r\n showWarningPopup(sigPadData);\r\n }\r\n }\r\n },\r\n });\r\n const cancelText = (isSigned || readOnly) && !allowSignClear ? 'close' : 'cancel';\r\n const cancelBtn = button.build({\r\n text: cancelText,\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n selectedMemberData.dissentAreaDisagree = prevDissentData.dissentAreaDisagree;\r\n selectedMemberData.dissentHowToAddress = prevDissentData.dissentHowToAddress;\r\n\r\n if (!isSigned) {\r\n selectedMemberData.dateSigned = prevDateSigned;\r\n selectedMemberData.description = '';\r\n selectedMemberData.attachmentType = '';\r\n selectedMemberData.hasWetSignature = false;\r\n selectedMemberData.attachment = '';\r\n }\r\n\r\n POPUP.hide(signaturePopup);\r\n },\r\n });\r\n\r\n const saveCancelWrap = document.createElement('div');\r\n saveCancelWrap.classList.add('btnWrap');\r\n\r\n if (allowSignClear) {\r\n saveCancelWrap.appendChild(clearSignatureBtn);\r\n saveCancelWrap.appendChild(saveBtn);\r\n } else {\r\n if (!isSigned && !readOnly) saveCancelWrap.appendChild(saveBtn);\r\n }\r\n saveCancelWrap.appendChild(cancelBtn);\r\n\r\n //* BUILD IT\r\n //*------------------------------\r\n if (!isSigned && !readOnly) {\r\n signaturePopup.appendChild(prompt);\r\n }\r\n\r\n signaturePopup.appendChild(signatureSection);\r\n\r\n if (showConsentStatments) {\r\n signaturePopup.appendChild(consentSection);\r\n\r\n planConsentAndSign.setSSADropdownInitialWidth(\r\n signaturePopup,\r\n selectedMemberData.csChangeMindSSAPeopleId,\r\n );\r\n planConsentAndSign.setVendorDropdownInitialWidth(\r\n signaturePopup,\r\n selectedMemberData.csContactProviderVendorId,\r\n );\r\n }\r\n\r\n signaturePopup.appendChild(dissentSection);\r\n signaturePopup.appendChild(saveCancelWrap);\r\n\r\n POPUP.show(signaturePopup);\r\n\r\n DOM.autosizeTextarea();\r\n\r\n checkSignautrePopupForErrors();\r\n if (allowSignClear && (isSigned || readOnly)) {\r\n saveBtn.classList.add('disabled');\r\n }\r\n\r\n if (sigCanvas) {\r\n sigCanvas.width = sigBody.offsetWidth;\r\n }\r\n }\r\n\r\n return {\r\n showPopup,\r\n };\r\n})();\r\n","const csTeamMember = (() => {\r\n let selectedMemberData;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let insertAllowed;\r\n let importedFromRelationship;\r\n let stateGuardiansObj;\r\n let selectedStateGuardian = '';\r\n let selectedStateGuardianSalesForceId = '';\r\n let DBteamMemberswithStateSalesForceId;\r\n // DOM\r\n let teamMemberPopup; // main popup\r\n let currentTeamMemberList;\r\n let linkToRelationshipBtn;\r\n let linkToSalesforceBtn;\r\n let teamMemberDropdown;\r\n let stateGuardianDropdown;\r\n let nameInput;\r\n let lNameInput;\r\n let dateOfBirthInput;\r\n let buildingNumberInput;\r\n let emailInput;\r\n let relationshipTypeInput;\r\n let signatureTypeDropdown;\r\n let radioDiv;\r\n let radioDiv2;\r\n let participatedYesRadio;\r\n let participatedNoRadio;\r\n let parentOfMinorYesRadio;\r\n let parentOfMinorNoRadio;\r\n let saveTeamMemberBtn;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkTeamMemberPopupForErrors() {\r\n const errors = teamMemberPopup.querySelectorAll('.error');\r\n const isConsentable = planConsentAndSign.isTeamMemberConsentable(selectedMemberData.teamMember);\r\n\r\n if (\r\n errors.length > 0 ||\r\n ($.session.applicationName === 'Gatekeeper' &&\r\n selectedMemberData.csContactProviderVendorId === '' &&\r\n isConsentable)\r\n ) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else {\r\n saveTeamMemberBtn.classList.remove('disabled');\r\n }\r\n }\r\n function populateTeamMemberDropdown(teamMemberDropdown, teamMember) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Person Supported', value: 'Person Supported' },\r\n { text: 'Parent/Guardian', value: 'Parent/Guardian' },\r\n { text: 'Guardian', value: 'Guardian' },\r\n { text: 'Parent', value: 'Parent' },\r\n { text: 'Home Provider', value: 'Home Provider' },\r\n { text: 'Day Provider', value: 'Day Provider' },\r\n { text: 'Case Manager', value: 'Case Manager' },\r\n { text: 'Other', value: 'Other' },\r\n ];\r\n dropdown.populate(teamMemberDropdown, dropdownData, teamMember);\r\n }\r\n function populateSignatureTypeDropdown(signatureTypeDropdown, type) {\r\n dropdown.populate(\r\n signatureTypeDropdown,\r\n [\r\n { text: '', value: '' },\r\n { text: 'Digital', value: '1' },\r\n { text: 'In-Person', value: '2' },\r\n { text: 'No Signature Required', value: '3' },\r\n //{ text: 'E-Digital', value: '4' },\r\n ],\r\n type,\r\n );\r\n }\r\n\r\n async function populateGuardiansDropDown() {\r\n var selectedConsumer = plan.getSelectedConsumer();\r\n stateGuardiansObj = await consentAndSignAjax.getStateGuardiansforConsumer({\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n let guarddata;\r\n if (stateGuardiansObj && stateGuardiansObj.length !== 0) {\r\n guarddata = stateGuardiansObj.map(dd => {\r\n return {\r\n value: dd.Id,\r\n text: dd.FirstName + ' ' + dd.LastName,\r\n };\r\n });\r\n guarddata.unshift({ value: '', text: 'SELECT MATCHING STATE GUARDIAN' });\r\n } else {\r\n guarddata = [{ value: '', text: 'NO STATE GUARDIANS FOUND' }];\r\n }\r\n\r\n dropdown.populate(stateGuardianDropdown, guarddata);\r\n }\r\n\r\n function calculateAge(dobStr) {\r\n const dob = new Date(dobStr);\r\n const today = new Date();\r\n\r\n let age = today.getFullYear() - dob.getFullYear();\r\n const monthDifference = today.getMonth() - dob.getMonth();\r\n if (monthDifference < 0 || (monthDifference === 0 && today.getDate() < dob.getDate())) {\r\n age--;\r\n }\r\n\r\n return age;\r\n }\r\n\r\n function isDateBefore1900(dateString) {\r\n // Parse the date string into a Date object\r\n const date = new Date(dateString);\r\n \r\n // Get the year from the Date object\r\n const year = date.getFullYear();\r\n \r\n // Compare the year with 1900\r\n return year < 1900;\r\n }\r\n\r\n async function applySelectedRelationship(relData) {\r\n importedFromRelationship = true;\r\n\r\n selectedMemberData.salesForceId = !relData.salesForceId ? '' : relData.salesForceId;\r\n selectedMemberData.contactId = relData.contactId;\r\n selectedMemberData.peopleId = relData.peopleId;\r\n selectedMemberData.dateOfBirth = relData.dateOfBirth;\r\n selectedMemberData.buildingNumber = relData.buildingNumber;\r\n selectedMemberData.name = relData.firstName;\r\n selectedMemberData.lastName = relData.lastName.split('|')[0];\r\n selectedMemberData.relationship = relData.relationship;\r\n selectedMemberData.email = relData.email;\r\n\r\n // update inputs with selected data\r\n nameInput.childNodes[0].value = selectedMemberData.name;\r\n lNameInput.childNodes[0].value = selectedMemberData.lastName;\r\n buildingNumberInput.childNodes[0].value = selectedMemberData.buildingNumber;\r\n emailInput.childNodes[0].value = selectedMemberData.email ?? '';\r\n if (selectedMemberData.dateOfBirth) {\r\n dateOfBirthInput.childNodes[0].value = UTIL.formatDateToIso(\r\n dates.removeTimestamp(selectedMemberData.dateOfBirth),\r\n );\r\n }\r\n\r\n // build new relationship type input\r\n relationshipTypeInput = input.build({\r\n label: 'Relationship Type',\r\n value: selectedMemberData.relationship,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.relationship = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n buildingNumberInput.after(relationshipTypeInput);\r\n emailInput.after(buildingNumberInput);\r\n\r\n // remove errors from inputs\r\n nameInput.classList.remove('error');\r\n lNameInput.classList.remove('error');\r\n buildingNumberInput.classList.remove('error');\r\n emailInput.classList.remove('error');\r\n //dateOfBirthInput.classList.remove('error');\r\n\r\n // make name and relationship readonly\r\n nameInput.classList.add('disabled');\r\n lNameInput.classList.add('disabled');\r\n relationshipTypeInput.classList.add('disabled');\r\n if (!$.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.add('disabled');\r\n }\r\n if (!$.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n if (!$.session.updateEmail) {\r\n emailInput.classList.add('disabled');\r\n }\r\n\r\n teamMemberPopup.style.removeProperty('display');\r\n\r\n if (!$.session.planInsertNewTeamMember) {\r\n // if above is false we know popup was temp disabled\r\n if ($.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.remove('disabled');\r\n }\r\n if ($.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.remove('disabled');\r\n }\r\n if ($.session.updateEmail) {\r\n emailInput.classList.remove('disabled');\r\n }\r\n teamMemberDropdown.classList.remove('disabled');\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n // set errors\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n }\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n\r\n // save team member if readOnly\r\n if (readOnly) {\r\n saveTeamMember();\r\n return;\r\n }\r\n }\r\n async function linkToSalesForce(selectedSalesforceId) {\r\n let success;\r\n\r\n pendingSave.show('Linking to Salesforce...');\r\n\r\n try {\r\n await consentAndSignAjax.setSalesForceIdForTeamMemberUpdate({\r\n peopleId: selectedMemberData.contactId,\r\n salesForceId: selectedSalesforceId,\r\n });\r\n success = true;\r\n } catch (error) {}\r\n\r\n if (success) {\r\n pendingSave.fulfill('Linked');\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n overlay.hide();\r\n planConsentAndSign.refreshTable();\r\n } else {\r\n pendingSave.reject('Failed to link, please try again.');\r\n const failPopup = document.querySelector('.failSavePopup');\r\n overlay.hide();\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n }\r\n }\r\n\r\n async function saveTeamMember() {\r\n if (\r\n (selectedMemberData.teamMember === 'Guardian' || selectedMemberData.teamMember === 'Parent/Guardian') &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n // if (selectedStateGuardianSalesForceId === '') selectedStateGuardianSalesForceId = selectedMemberData.salesForceId;\r\n if (isNew) {\r\n var continueGuardianSave = await continueSaveofGuardianTeamMember();\r\n if (!continueGuardianSave) return;\r\n }\r\n \r\n }\r\n\r\n teamMemberPopup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n let res = null;\r\n let success;\r\n\r\n // Gather Data\r\n if (isNew) {\r\n if (importedFromRelationship) {\r\n selectedMemberData.relationshipImport = 'T';\r\n selectedMemberData.createRelationship = 'F';\r\n } else {\r\n selectedMemberData.relationshipImport = 'F';\r\n selectedMemberData.createRelationship = 'T';\r\n }\r\n let rd = await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n rd = rd ? rd[0] : {};\r\n\r\n if (rd.existingPeopleId) {\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n csRelationship.showExistingPopup(selectedMemberData, async usePerson => {\r\n if (usePerson) {\r\n pendingSavePopup.style.display = 'block';\r\n selectedMemberData.peopleId = rd.existingPeopleId;\r\n await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n } else {\r\n pendingSave.hide();\r\n overlay.show();\r\n }\r\n });\r\n } else {\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n } else { //edit\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(teamMemberPopup);\r\n planConsentAndSign.refreshTable();\r\n if (\r\n selectedMemberData.teamMember === 'Guardian' ||\r\n selectedMemberData.teamMember === 'Parent/Guardian' ||\r\n selectedMemberData.teamMember === 'Case Manager'\r\n ) {\r\n //Do Nothing\r\n } else {\r\n consentAndSignAjax.GetSalesForceId(selectedMemberData.peopleId);\r\n }\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n teamMemberPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n }\r\n\r\n // Handling of selection of teamMember == Guardian or teamMember == Parent/Guardian\r\n async function continueSaveofGuardianTeamMember() {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan \r\n if (hasSalesForceIdBeenUsed(selectedStateGuardianSalesForceId) && $.session.areInSalesForce === true) {\r\n alert(\r\n `This team Member will not be saved. This State Guardian has already been used for a team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n // A -- No State Guardian in Dropdown (stateGuardianDropdown) -- you can't save\r\n if (!selectedStateGuardianSalesForceId && $.session.areInSalesForce === true) {\r\n alert(`A Guardian is not listed in Salesforce for this individual and must be entered on SalesForce Portal.`);\r\n return false;\r\n }\r\n\r\n // B -- Imported Guardian and Selected State Guardian have matching SaleForceIDs\r\n if (\r\n selectedStateGuardianSalesForceId &&\r\n selectedMemberData.salesForceId === selectedStateGuardianSalesForceId &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n return true;\r\n }\r\n\r\n // 1 -- Imported Guardian and Selected State Guardian do not have matching SaleForceIDs, BUT there is a SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n selectedMemberData.salesForceId &&\r\n selectedMemberData.salesForceId !== '' &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n selectedMemberData.salesForceId !== selectedStateGuardianSalesForceId &&\r\n DBteamMemberswithStateSalesForceId &&\r\n DBteamMemberswithStateSalesForceId.length === 1 &&\r\n $.session.areInSalesForce === true\r\n ) {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan\r\n if (hasSalesForceIdBeenUsed(DBteamMemberswithStateSalesForceId[0].salesForceId)) {\r\n alert(\r\n `This team Member will not be saved. No salesForceIds are available to be used for this team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario1ConfirmText = `The Imported Guardian and selected State Guardian do not have matching SalesForceIDs. \r\n However, the following Guardian was found in the local database that matches the SalesforceID \r\n of the selected State Guardian: ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName}.\r\n Do you wish to save ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName} \r\n as the Guardian for this particular Added Team Member?`;\r\n\r\n if (confirm(Scenario1ConfirmText)) {\r\n selectedMemberData.name = DBteamMemberswithStateSalesForceId[0].name;\r\n selectedMemberData.lastName = DBteamMemberswithStateSalesForceId[0].lastName;\r\n selectedMemberData.buildingNumber = DBteamMemberswithStateSalesForceId[0].buildingNumber;\r\n selectedMemberData.dateOfBirth = DBteamMemberswithStateSalesForceId[0].dateOfBirth;\r\n selectedMemberData.salesForceId = DBteamMemberswithStateSalesForceId[0].salesForceId;\r\n selectedMemberData.peopleId = DBteamMemberswithStateSalesForceId[0].peopleId;\r\n return true;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 2 -- Imported Guardian and Selected State Guardian do not have matching SaleForceIDs, AND there is NO SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n selectedMemberData.salesForceId &&\r\n selectedMemberData.salesForceId !== '' &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n selectedMemberData.salesForceId !== selectedStateGuardianSalesForceId &&\r\n (!DBteamMemberswithStateSalesForceId ||\r\n (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length === 0))\r\n ) {\r\n // let Scenario2ConfirmText = `The Imported Guardian and selected State Guardian do not have matching SalesForceIDs.\r\n // Do you wish to save the selected State Guardian as the Guardian for this particular Added Team Member?`\r\n\r\n // if (\r\n // confirm(Scenario2ConfirmText)\r\n // ) {\r\n // var fullName = selectedStateGuardian.split(' ');\r\n // selectedMemberData.name = fullName[0];\r\n // selectedMemberData.lastName = fullName[fullName.length - 1];\r\n // selectedMemberData.buildingNumber = '';\r\n // selectedMemberData.dateOfBirth = '';\r\n // selectedMemberData.salesForceId = selectedStateGuardianSalesForceId;\r\n // return true;\r\n // } else {\r\n alert(\r\n `Imported Guardian selected is not listed in Salesforce for this individual and must be entered on Salesforce portal.`,\r\n );\r\n return false;\r\n }\r\n // }\r\n\r\n // 3 -- Imported Guardian has NO SaleforceID, but the Selected State Guardian does have a SaleForceID, BUT there is a SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n (selectedMemberData.salesForceId === '' || !selectedMemberData.salesForceId) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n DBteamMemberswithStateSalesForceId &&\r\n DBteamMemberswithStateSalesForceId.length === 1\r\n ) {\r\n // Ensure that the same saleForceId is not added twice as a TeamMember for a Plan\r\n if (hasSalesForceIdBeenUsed(DBteamMemberswithStateSalesForceId[0].salesForceId)) {\r\n alert(\r\n `This team Member will not be saved. No salesForceIds are available to be used for this team Member in this Plan.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario3ConfirmText = `The Imported Guardian does NOT have a SalesForceID, but the selected State Guardian does. \r\n However, the following Guardian was found in the local database that matches the SalesforceID \r\n of the selected State Guardian: ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName}.\r\n Do you wish to save ${DBteamMemberswithStateSalesForceId[0].name} ${DBteamMemberswithStateSalesForceId[0].lastName} \r\n as the Guardian for this particular Added Team Member?`;\r\n\r\n if (confirm(Scenario3ConfirmText)) {\r\n selectedMemberData.name = DBteamMemberswithStateSalesForceId[0].name;\r\n selectedMemberData.lastName = DBteamMemberswithStateSalesForceId[0].lastName;\r\n selectedMemberData.buildingNumber = DBteamMemberswithStateSalesForceId[0].buildingNumber;\r\n selectedMemberData.dateOfBirth = DBteamMemberswithStateSalesForceId[0].dateOfBirth;\r\n selectedMemberData.salesForceId = DBteamMemberswithStateSalesForceId[0].salesForceId;\r\n selectedMemberData.peopleId = DBteamMemberswithStateSalesForceId[0].peopleId;\r\n return true;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // 4 --Imported Guardian has NO SaleforceID, but the Selected State Guardian does have a SaleForceID, AND there is NO SalesforceID in the People table that matches the selected State Guardian.\r\n if (\r\n (selectedMemberData.salesForceId === '' || !selectedMemberData.salesForceId) &&\r\n selectedStateGuardianSalesForceId !== '' &&\r\n (!DBteamMemberswithStateSalesForceId ||\r\n (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length === 0))\r\n ) {\r\n if (confirm('Is the selected State Guardian the same person as the Imported Guardian in the form?')) {\r\n // YES -- Continue\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n\r\n let Scenario4ConfirmText = `The Imported Guardian does NOT have a SalesForceID, but the selected State Guardian does. \r\n Do you wish to assign the selected State SalesforceID to the Imported Guardian (${selectedMemberData.name} ${selectedMemberData.lastName}) and then save\r\n ${selectedMemberData.name} ${selectedMemberData.lastName} as the Guardian for this particular Added Team Member? `;\r\n\r\n let updatesuccess;\r\n\r\n if (confirm(Scenario4ConfirmText)) {\r\n // update the imported/manually entered member with the State SaleforceID\r\n try {\r\n await consentAndSignAjax.setSalesForceIdForTeamMemberUpdate({\r\n peopleId: selectedMemberData.contactId,\r\n salesForceId: selectedStateGuardianSalesForceId,\r\n });\r\n updatesuccess = true;\r\n } catch (error) {\r\n updatesuccess = false;\r\n }\r\n\r\n if (updatesuccess) {\r\n selectedMemberData.salesForceId = selectedStateGuardianSalesForceId;\r\n return true;\r\n } else {\r\n alert(\r\n 'Assigning the selected State SalesforceID to the Imported Guardian failed; therefore, inserting this Guardian will not be attempted.',\r\n );\r\n return false;\r\n }\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n // Final Guard Clause and Message for a failed attempt to Save New team Member\r\n if (DBteamMemberswithStateSalesForceId && DBteamMemberswithStateSalesForceId.length > 1) {\r\n alert(\r\n `Unable to save Team Member. There were multiple people in your local Database with the SalesForceID: ${DBteamMemberswithStateSalesForceId[0].salesForceId}. Correct this issue before continuing.`,\r\n );\r\n return false;\r\n } else {\r\n alert(\r\n `The Imported Guardian does not match the State Guardian listed in the Salesforce and must be entered in Salesforce Portal.`,\r\n );\r\n return false;\r\n }\r\n\r\n function hasSalesForceIdBeenUsed(selectedSalesForceID) {\r\n let isSaleForceIdUsed = false;\r\n\r\n if (currentTeamMemberList && currentTeamMemberList.length > 0) {\r\n currentTeamMemberList.forEach(p => {\r\n if (selectedSalesForceID === p.salesForceId) isSaleForceIdUsed = true;\r\n });\r\n }\r\n return isSaleForceIdUsed;\r\n }\r\n }\r\n\r\n function getSignatureTypeByID(id) {\r\n switch (id) {\r\n case '1': {\r\n return 'Digital';\r\n }\r\n case '2': {\r\n return 'In-Person';\r\n }\r\n case '3': {\r\n return 'No Signature Required';\r\n }\r\n // case '4': {\r\n // return 'E-Digital';\r\n // }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function buildParticipationRadios() {\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = 'Participated in Planning?';\r\n\r\n participatedYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'Y',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'Y';\r\n radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n participatedNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'N',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'N';\r\n radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv = document.createElement('div');\r\n radioDiv.classList.add('signatures_radioDiv');\r\n radioDiv.appendChild(participatedYesRadio);\r\n radioDiv.appendChild(participatedNoRadio);\r\n\r\n if (isNew && $.session.planInsertNewTeamMember) {\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildParentOfMinorRadios() {\r\n const isNoChecked = isNew ? true : selectedMemberData.parentOfMinor === 'N';\r\n const isYesChecked = isNew ? false : selectedMemberData.parentOfMinor === 'Y';\r\n\r\n radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = 'Parent of Minor?';\r\n\r\n parentOfMinorYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pomRadioSet',\r\n isChecked: isYesChecked,\r\n isDisabled: true,\r\n callback: () => {\r\n selectedMemberData.parentOfMinor = 'Y';\r\n //radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n parentOfMinorNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pomRadioSet',\r\n isChecked: isNoChecked,\r\n isDisabled: true,\r\n callback: () => {\r\n selectedMemberData.parentOfMinor = 'N';\r\n //radioDiv.classList.remove('error');\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv2 = document.createElement('div');\r\n radioDiv2.classList.add('signatures_radioDiv');\r\n radioDiv2.appendChild(parentOfMinorYesRadio);\r\n radioDiv2.appendChild(parentOfMinorNoRadio);\r\n\r\n if (isNew) {\r\n radioContainer.style.display = 'none';\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv2);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildDateSignedDisplay() {\r\n const dateSignedDisplay = document.createElement('p');\r\n dateSignedDisplay.classList.add('ispSignature_DateSigned');\r\n dateSignedDisplay.style.marginBottom = '15px';\r\n if (isSigned) {\r\n const dateSignedParsed = selectedMemberData.dateSigned.split(' ')[0];\r\n dateSignedDisplay.innerText = `Signed off by Team Member on: ${dateSignedParsed}`;\r\n }\r\n\r\n return dateSignedDisplay;\r\n }\r\n function buildActionBtns() {\r\n const mainWrap = document.createElement('div');\r\n\r\n saveTeamMemberBtn = button.build({\r\n id: 'sigPopup_save',\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveTeamMember();\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'sigPopup_cancel',\r\n text: isSigned || readOnly ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(teamMemberPopup);\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n // Delete only visable if isNew = false\r\n const deleteBtn = button.build({\r\n id: 'sigPopup_delete',\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n planConsentAndSign.deleteTeamMember(selectedMemberData.signatureId, teamMemberPopup);\r\n },\r\n });\r\n // Button Wrap 2\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n if (!isSigned && !readOnly) {\r\n btnWrap2.appendChild(saveTeamMemberBtn);\r\n }\r\n btnWrap2.appendChild(cancelBtn);\r\n // Button Wrap 3\r\n const btnWrap3 = document.createElement('div');\r\n btnWrap3.classList.add('btnWrap', 'deleteWrap');\r\n btnWrap3.appendChild(deleteBtn);\r\n\r\n if (isNew) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n }\r\n\r\n mainWrap.appendChild(btnWrap2);\r\n if (!isSigned && !isNew && !readOnly) {\r\n mainWrap.appendChild(btnWrap3);\r\n } else if (!isNew && !readOnly && selectedMemberData.signatureType === '3') {\r\n mainWrap.appendChild(btnWrap3);\r\n }\r\n\r\n return mainWrap;\r\n }\r\n\r\n //* global consent\r\n function getChangeMindMarkup() {\r\n // get markup\r\n\r\n const changeMindQuestion = planConsentAndSign.buildChangeMindQuestion(\r\n {\r\n csChangeMindSSAPeopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n csChangeMind: selectedMemberData.csChangeMind,\r\n },\r\n 'member',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n changeMindQuestion.addEventListener('change', async event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'isp_ic_ssaDropdown') {\r\n selectedMemberData.csChangeMindSSAPeopleId = event.target.value;\r\n\r\n if (selectedMemberData.csChangeMindSSAPeopleId === '') {\r\n changeMindQuestion.classList.add('error');\r\n } else {\r\n changeMindQuestion.classList.remove('error');\r\n }\r\n\r\n planConsentAndSign.updateSSADropdownWidth(teamMemberPopup);\r\n\r\n // set vendor dropdown\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n const data = await consentAndSignAjax.getConsumerOrganizationId({\r\n peopleId: selectedMemberData.csChangeMindSSAPeopleId,\r\n });\r\n\r\n // ID check for vendors/providers\r\n const doesIdExistInVendors = planConsentAndSign.doesIdExistInVendors(data[0].orgId);\r\n const vendorDropdown = document.getElementById('isp_ic_vendorContactDropdown');\r\n if (doesIdExistInVendors) {\r\n vendorDropdown.value = data[0].orgId;\r\n selectedMemberData.csContactProviderVendorId = data[0].orgId;\r\n } else {\r\n vendorDropdown.value = '';\r\n selectedMemberData.csContactProviderVendorId = '';\r\n }\r\n }\r\n\r\n // update contact input field\r\n const contactInput = document.getElementById('CS_Contact_Input');\r\n contactInput.value = event.target.selectedOptions[0].innerText;\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = changeMindQuestion.querySelector('select');\r\n select.value = selectedMemberData.csChangeMindSSAPeopleId;\r\n\r\n return changeMindQuestion;\r\n }\r\n\r\n async function getContactMarkup() {\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n var selectedConsumer = plan.getSelectedConsumer();\r\n\r\n const data = await consentAndSignAjax.getConsumerOrganizationId({\r\n // peopleId: selectedMemberData.csChangeMindSSAPeopleId, -- this was changed to below with the idea that selectedMemberData.csChangeMindSSAPeopleId could be set to ''\r\n peopleId: selectedConsumer.id,\r\n });\r\n\r\n // ID check for vendors/providers\r\n const doesIdExistInVendors = planConsentAndSign.doesIdExistInVendors(data[0].orgId);\r\n if (doesIdExistInVendors) {\r\n selectedMemberData.csContactProviderVendorId = data[0].orgId;\r\n } else {\r\n selectedMemberData.csContactProviderVendorId = '';\r\n }\r\n }\r\n // get markup\r\n const contactQuestion = planConsentAndSign.buildContactQuestion(\r\n {\r\n csContactProviderVendorId: selectedMemberData.csContactProviderVendorId,\r\n csContactInput: selectedMemberData.csContactInput,\r\n ssaId: selectedMemberData.csChangeMindSSAPeopleId,\r\n },\r\n 'member',\r\n isSigned,\r\n );\r\n\r\n // set event\r\n contactQuestion.addEventListener('change', event => {\r\n const target = event.target;\r\n const targetId = target.id;\r\n\r\n if (targetId === 'isp_ic_vendorContactDropdown') {\r\n const contactQuestionText = teamMemberPopup.querySelector('.contactQuestionText');\r\n selectedMemberData.csContactProviderVendorId = event.target.value;\r\n\r\n if (selectedMemberData.csContactProviderVendorId === '') {\r\n contactQuestionText.classList.add('error');\r\n } else {\r\n contactQuestionText.classList.remove('error');\r\n }\r\n\r\n planConsentAndSign.updateVendorDropdownWidth(teamMemberPopup);\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n });\r\n\r\n // set default bc populatedropdown won't\r\n const select = contactQuestion.querySelector('select');\r\n select.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n // const vendorDropdown = contactQuestion.querySelector('#isp_ic_vendorContactDropdown');\r\n // vendorDropdown.value = selectedMemberData.csContactProviderVendorId;\r\n\r\n return contactQuestion;\r\n }\r\n\r\n //* link btn popups\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n async function showPopup({ isNewMember, isReadOnly, memberData, currentTeamMemberData }) {\r\n const selectedTeamMember = plan.getSelectedConsumer();\r\n const age = calculateAge(selectedTeamMember.card.dataset.dob);\r\n const isMinor = age < 18 ? true : false;\r\n isNew = isNewMember;\r\n isSigned = memberData.dateSigned !== '';\r\n readOnly = isReadOnly;\r\n importedFromRelationship = false;\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n showStateGuardians = planConsentAndSign.isTeamMemberGuardian(memberData.teamMember);\r\n selectedMemberData = { ...memberData };\r\n // TOOD 94246: IF the LIMITED NUMBER OF GUARDIANS or Parent Guardians have been reached, then REMOVE 'Guardians' from the teamMember DDL\r\n currentTeamMemberList = currentTeamMemberData;\r\n\r\n // if (!isNew && $.session.applicationName === 'Advisor') {\r\n // selectedMemberData.csChangeMindSSAPeopleId = $.session.UserId;\r\n // }\r\n\r\n let changeMindQuestion;\r\n let complaintQuestion;\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n teamMemberPopup = POPUP.build({\r\n id: 'sig_mainPopup',\r\n hideX: true,\r\n header: isNew ? 'Add Team Member' : 'Update Team Member',\r\n });\r\n\r\n //* LINK BUTTONS\r\n //*------------------------------\r\n linkToRelationshipBtn = button.build({\r\n id: 'linkToRelationshipBtn',\r\n text: isNew ? 'Import From Relationships' : 'Link To Relationship',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['linkBtn', 'relationshipLink'],\r\n callback: () => {\r\n linkToRelationshipBtn.classList.add('disabled');\r\n csRelationship.showMainPopup();\r\n },\r\n });\r\n linkToSalesforceBtn = button.build({\r\n id: 'linkToSalesforceBtn',\r\n text: 'Link To Salesforce',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: ['linkBtn', 'salesforceLink'],\r\n callback: async () => {\r\n linkToSalesforceBtn.classList.add('disabled');\r\n planSignatureUpdateDOB;\r\n await csSalesforce.showPopup();\r\n },\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n // Team Member\r\n teamMemberDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_teamMember',\r\n label: 'Team Member',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.teamMember = event.target.value;\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n setStateofPopupFields();\r\n\r\n // inserting/removing the conditional fields based on teamMemberDropdown selection\r\n insertingConditionalFieldsintoPopup();\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n teamMemberDropdown.classList.add('teamMemberDropdown');\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n function setStateofPopupFields() {\r\n if ($.session.planInsertNewTeamMember) {\r\n linkToRelationshipBtn.classList.remove('disabled');\r\n nameInput.classList.remove('disabled');\r\n lNameInput.classList.remove('disabled');\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n if ($.session.planSignatureUpdateDOB) {\r\n dateOfBirthInput.classList.remove('disabled');\r\n }\r\n if ($.session.planSignatureUpdateBuildingNumber) {\r\n buildingNumberInput.classList.remove('disabled');\r\n }\r\n if ($.session.updateEmail) {\r\n emailInput.classList.remove('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if ($.session.planInsertNewTeamMember) {\r\n const checkIfDateBefore1900 = isDateBefore1900(dateOfBirthInput.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired =\r\n teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (isNew) {\r\n if (selectedMemberData.lastName === '') {\r\n lNameInput.classList.add('error');\r\n }\r\n }\r\n }\r\n\r\n if (selectedMemberData.teamMember === 'Parent') {\r\n radioContainer.style.display = 'flex';\r\n selectedMemberData.parentOfMinor = isMinor ? 'Y' : 'N';\r\n parentOfMinorYesRadio.querySelector('input').checked = isMinor ? true : false;\r\n parentOfMinorNoRadio.querySelector('input').checked = isMinor ? false : true;\r\n } else {\r\n selectedMemberData.parentOfMinor = 'N';\r\n //parentOfMinorYesRadio.querySelector('input').checked = false;\r\n //parentOfMinorNoRadio.querySelector('input').checked = true;\r\n radioContainer.style.display = 'none';\r\n }\r\n }\r\n\r\n // inserting/removing the conditional fields based on teamMemberDropdown selection\r\n async function insertingConditionalFieldsintoPopup() {\r\n if (selectedMemberData.teamMember === '') {\r\n // team member has NOT been selected\r\n\r\n teamMemberDropdown.classList.add('error');\r\n // remove consent statements from DOM\r\n if (showConsentStatments) {\r\n changeMindQuestion.parentNode.removeChild(changeMindQuestion);\r\n complaintQuestion.parentNode.removeChild(complaintQuestion);\r\n showConsentStatments = false;\r\n }\r\n // remove guardians DDL from DOM\r\n if (showStateGuardians) {\r\n stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showStateGuardians = false;\r\n }\r\n\r\n // reset consent statement radios to default\r\n // selectedMemberData.csChangeMind = '';\r\n // selectedMemberData.csContact = '';\r\n } else {\r\n // team member has been selected\r\n\r\n teamMemberDropdown.classList.remove('error');\r\n\r\n const isSelectedTeamMemberConsentable = planConsentAndSign.isTeamMemberConsentable(\r\n selectedMemberData.teamMember,\r\n );\r\n\r\n insertingFieldsBasedonConsentable(isSelectedTeamMemberConsentable);\r\n\r\n const isSelectedTeamMemberGuardian = planConsentAndSign.isTeamMemberGuardian(selectedMemberData.teamMember);\r\n\r\n await insertingFieldsBasedonGuardian(isSelectedTeamMemberGuardian);\r\n } //end if -- team member has been selected\r\n } // end if -- function insertingConditionalFieldsintoPopup()\r\n\r\n async function insertingFieldsBasedonConsentable(isSelectedTeamMemberConsentable) {\r\n if (isSelectedTeamMemberConsentable) {\r\n // show consent statments only if they are not there\r\n if (!showConsentStatments) {\r\n showConsentStatments = true;\r\n // reset default values\r\n const globals = planConsentAndSign.getConsentGlobalValues();\r\n selectedMemberData.csChangeMindSSAPeopleId = globals.SSA;\r\n selectedMemberData.csContactProviderVendorId = globals.VENDOR;\r\n selectedMemberData.csContactInput = globals.CONTACT;\r\n // rebuild them\r\n changeMindQuestion = getChangeMindMarkup();\r\n complaintQuestion = await getContactMarkup();\r\n // show them\r\n teamMemberPopup.insertBefore(changeMindQuestion, participationRadios);\r\n teamMemberPopup.insertBefore(complaintQuestion, participationRadios);\r\n //\r\n // width them\r\n planConsentAndSign.setSSADropdownInitialWidth(teamMemberPopup, selectedMemberData.csChangeMindSSAPeopleId);\r\n planConsentAndSign.setVendorDropdownInitialWidth(\r\n teamMemberPopup,\r\n selectedMemberData.csContactProviderVendorId,\r\n );\r\n }\r\n } else {\r\n // if NOT isSelectedTeamMemberConsentable\r\n\r\n if (showConsentStatments) {\r\n changeMindQuestion.parentNode.removeChild(changeMindQuestion);\r\n complaintQuestion.parentNode.removeChild(complaintQuestion);\r\n // if (showStateGuardians) stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showConsentStatments = false;\r\n // selectedMemberData.csChangeMindSSAPeopleId = '';\r\n // selectedMemberData.csContactProviderVendorId = '';\r\n // selectedMemberData.csContactInput = '';\r\n }\r\n } // end if -- isSelectedTeamMemberConsentable///\r\n }\r\n\r\n async function insertingFieldsBasedonGuardian(isSelectedTeamMemberGuardian) {\r\n if (isSelectedTeamMemberGuardian && $.session.areInSalesForce === true) {\r\n // show guardan DDL only if it's not there\r\n if (!showStateGuardians) {\r\n showStateGuardians = true;\r\n await populateGuardiansDropDown();\r\n teamMemberPopup.insertBefore(stateGuardianDropdown, nameInput);\r\n if (selectedStateGuardian === '') stateGuardianDropdown.classList.add('error');\r\n }\r\n } else {\r\n // if NOT isSelectedTeamMemberGuardian\r\n\r\n if (showStateGuardians) {\r\n stateGuardianDropdown.parentNode.removeChild(stateGuardianDropdown);\r\n showStateGuardians = false;\r\n }\r\n } // end if -- isSelectedTeamMemberGuardian\r\n }\r\n\r\n\r\n // State Guradian\r\n stateGuardianDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_stateGuardian',\r\n label: 'State Guardian',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedStateGuardian = event.target.options[event.target.selectedIndex].innerHTML;\r\n selectedStateGuardianSalesForceId = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n stateGuardianDropdown.classList.add('error');\r\n } else {\r\n stateGuardianDropdown.classList.remove('error');\r\n }\r\n\r\n DBteamMemberswithStateSalesForceId = await consentAndSignAjax.getTeamMemberBySalesForceId({\r\n salesForceId: selectedStateGuardianSalesForceId,\r\n });\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n // Name ()\r\n nameInput = input.build({\r\n label: 'First Name',\r\n value: selectedMemberData.name,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.name = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n lNameInput = input.build({\r\n label: 'Last Name',\r\n value: selectedMemberData.lastName,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.lastName = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n lNameInput.classList.add('error');\r\n } else {\r\n lNameInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n // Date of Birth\r\n dateOfBirthInput = input.build({\r\n type: 'date',\r\n label: 'Date of Birth',\r\n //value: selectedMemberData.dateOfBirth,\r\n value: UTIL.formatDateToIso(dates.removeTimestamp(selectedMemberData.dateOfBirth)),\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.dateOfBirth = event.target.value;\r\n\r\n const checkIfDateBefore1900 = isDateBefore1900(event.target.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired =\r\n teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Building Number\r\n buildingNumberInput = input.build({\r\n label: 'Building Number',\r\n value: selectedMemberData.buildingNumber,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.buildingNumber = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n //Email\r\n emailInput = input.build({\r\n label: 'Email',\r\n value: selectedMemberData.email ?? '',\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n let validEmail = validateEmail(event.target.value);\r\n\r\n if (validEmail) {\r\n selectedMemberData.email = event.target.value;\r\n emailInput.classList.remove('error');\r\n } else {\r\n // email input is not required currently\r\n // selectedMemberData.email = '';\r\n // emailInput.classList.add('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Relationship Type\r\n relationshipTypeInput = input.build({\r\n label: 'Relationship Type',\r\n value: selectedMemberData.relationship,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.relationship = event.target.value;\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n // Participate Yes/NO\r\n const participationRadios = buildParticipationRadios();\r\n const parentOfMinorRadios = buildParentOfMinorRadios();\r\n\r\n // Signature Type\r\n signatureTypeDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_signType',\r\n label: 'Signature Type',\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.signatureType = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n checkTeamMemberPopupForErrors();\r\n },\r\n });\r\n\r\n //* GLOBAL CONSENT QUESTIONS\r\n //*------------------------------\r\n if (showConsentStatments) {\r\n changeMindQuestion = getChangeMindMarkup();\r\n complaintQuestion = await getContactMarkup();\r\n }\r\n\r\n function validateEmail(email) {\r\n const regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$/;\r\n return regex.test(email);\r\n }\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const btns = buildActionBtns();\r\n\r\n //* Date Signed Display\r\n //*------------------------------\r\n const dateSignedDisplay = buildDateSignedDisplay();\r\n\r\n //* Disabled Fields\r\n //*------------------------------\r\n if (selectedMemberData.dateOfBirth) {\r\n dateOfBirthInput.classList.add('disabled');\r\n }\r\n if (selectedMemberData.buildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n if (!isNew) {\r\n if (selectedMemberData.name !== '') {\r\n nameInput.classList.add('disabled');\r\n }\r\n if (selectedMemberData.lastName !== '') {\r\n lNameInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n // initial display of Form/popup before a teamMember designations is selected\r\n\r\n if (!$.session.planInsertNewTeamMember) {\r\n teamMemberDropdown.classList.add('disabled');\r\n nameInput.classList.add('disabled');\r\n lNameInput.classList.add('disabled');\r\n // nameInput.classList.remove('error');\r\n // lNameInput.classList.remove('error');\r\n dateOfBirthInput.classList.add('disabled');\r\n buildingNumberInput.classList.add('disabled');\r\n participatedYesRadio.classList.add('disabled');\r\n participatedNoRadio.classList.add('disabled');\r\n parentOfMinorYesRadio.classList.add('disabled');\r\n parentOfMinorNoRadio.classList.add('disabled');\r\n // radioDiv.classList.remove('error');\r\n // signatureTypeDropdown.classList.add('disabled');\r\n saveTeamMemberBtn.classList.add('disabled');\r\n emailInput.classList.add('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if ($.session.planInsertNewTeamMember) {\r\n const checkIfDateBefore1900 = isDateBefore1900(dateOfBirthInput.value);\r\n const teamMember = selectedMemberData.teamMember;\r\n const isRequired = teamMember !== 'Guardian' && teamMember !== 'Parent/Guardian' && teamMember !== 'Case Manager' && teamMember !== '';\r\n if (checkIfDateBefore1900 || (isRequired && selectedMemberData.dateOfBirth === '')) {\r\n dateOfBirthInput.classList.add('error');\r\n } else {\r\n dateOfBirthInput.classList.remove('error');\r\n }\r\n // email input is not currently required\r\n // if (selectedMemberData.email) {\r\n // emailInput.classList.remove('error');\r\n // } else {\r\n // emailInput.classList.add('error');\r\n // }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.name === '') {\r\n nameInput.classList.add('error');\r\n } else {\r\n nameInput.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (isNew) {\r\n if (selectedMemberData.lastName === '') {\r\n lNameInput.classList.add('error');\r\n }\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n participatedYesRadio.classList.remove('disabled');\r\n participatedNoRadio.classList.remove('disabled');\r\n parentOfMinorYesRadio.classList.remove('disabled');\r\n parentOfMinorNoRadio.classList.remove('disabled');\r\n // signatureTypeDropdown.classList.remove('disabled');\r\n }\r\n\r\n if (!$.session.updateEmail) {\r\n emailInput.classList.add('disabled');\r\n }\r\n }\r\n\r\n if ($.session.planUpdate) {\r\n signatureTypeDropdown.classList.remove('disabled');\r\n } else {\r\n signatureTypeDropdown.classList.add('disabled');\r\n }\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n\r\n if (isSigned) {\r\n teamMemberPopup.appendChild(dateSignedDisplay);\r\n }\r\n if (isNew) {\r\n teamMemberPopup.appendChild(linkToRelationshipBtn);\r\n } else {\r\n if (!selectedMemberData.contactId) {\r\n teamMemberPopup.appendChild(linkToRelationshipBtn);\r\n }\r\n if ($.session.areInSalesForce && !selectedMemberData.salesForceId && selectedMemberData.contactId) {\r\n teamMemberPopup.appendChild(linkToSalesforceBtn);\r\n }\r\n }\r\n teamMemberPopup.appendChild(teamMemberDropdown);\r\n teamMemberPopup.appendChild(nameInput);\r\n if (isNew) {\r\n teamMemberPopup.appendChild(lNameInput);\r\n } else {\r\n if (selectedMemberData.lastName !== '') teamMemberPopup.appendChild(lNameInput);\r\n }\r\n teamMemberPopup.appendChild(dateOfBirthInput);\r\n teamMemberPopup.appendChild(buildingNumberInput);\r\n teamMemberPopup.appendChild(emailInput);\r\n if (!isNew && selectedMemberData.relationship) {\r\n teamMemberPopup.appendChild(relationshipTypeInput);\r\n relationshipTypeInput.classList.add('disabled');\r\n }\r\n teamMemberPopup.appendChild(participationRadios);\r\n teamMemberPopup.appendChild(parentOfMinorRadios); //\r\n teamMemberPopup.appendChild(signatureTypeDropdown);\r\n\r\n if (showConsentStatments) {\r\n teamMemberPopup.appendChild(changeMindQuestion);\r\n teamMemberPopup.appendChild(complaintQuestion);\r\n\r\n planConsentAndSign.setSSADropdownInitialWidth(teamMemberPopup, selectedMemberData.csChangeMindSSAPeopleId);\r\n planConsentAndSign.setVendorDropdownInitialWidth(teamMemberPopup, selectedMemberData.csContactProviderVendorId);\r\n }\r\n\r\n teamMemberPopup.appendChild(btns);\r\n\r\n populateTeamMemberDropdown(teamMemberDropdown, selectedMemberData.teamMember);\r\n populateSignatureTypeDropdown(signatureTypeDropdown, selectedMemberData.signatureType);\r\n\r\n if (showStateGuardians) {\r\n populateGuardiansDropDown();\r\n }\r\n\r\n POPUP.show(teamMemberPopup);\r\n\r\n if ($.session.planInsertNewTeamMember) {\r\n checkTeamMemberPopupForErrors();\r\n }\r\n }\r\n\r\n return {\r\n showPopup,\r\n applySelectedRelationship,\r\n linkToSalesForce,\r\n getSignatureTypeByID,\r\n };\r\n})();\r\n","const csVendor = (() => {\r\n let selectedMemberData;\r\n let currentTeamMemberList;\r\n let isNew;\r\n let isSigned;\r\n let readOnly;\r\n let importedFromRelationship;\r\n let vendorData;\r\n\r\n // DOM\r\n let csVendorPopup; // main popup\r\n let vendorDropdown;\r\n let teamMemberDropdown;\r\n let buildingNumberInput;\r\n let signatureTypeDropdown;\r\n let radioDiv;\r\n let participatedYesRadio;\r\n let participatedNoRadio;\r\n let saveTeamMemberBtn;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n function checkcsVendorPopupForErrors() {\r\n const errors = csVendorPopup.querySelectorAll('.error');\r\n //const isConsentable = planConsentAndSign.isTeamMemberConsentable(selectedMemberData.teamMember);\r\n\r\n if (errors.length > 0) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else if (\r\n selectedMemberData.name === '' ||\r\n selectedMemberData.teamMember === '' ||\r\n selectedMemberData.signatureType === '' ||\r\n selectedMemberData.participated === ''\r\n ) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n } else {\r\n saveTeamMemberBtn.classList.remove('disabled');\r\n }\r\n }\r\n\r\n function getSelectedVendorRel(vendorData, vendorName) {\r\n const cleanedVendorName = vendorName.trim();\r\n let selectedVendorData = vendorData.find(function (vendor) {\r\n return vendor.vendorName === cleanedVendorName;\r\n });\r\n\r\n if (selectedVendorData) {\r\n return (selectedVendor = {\r\n vendorName: selectedVendorData.vendorName,\r\n vendorId: selectedVendorData.vendorId,\r\n vendorAddress: selectedVendorData.vendorAddress,\r\n });\r\n }\r\n }\r\n const removeDups = data => {\r\n const flag = {};\r\n const unique = [];\r\n data.forEach(id => {\r\n if (!flag[id]) {\r\n flag[id] = true;\r\n unique.push(id);\r\n }\r\n });\r\n return unique;\r\n };\r\n function removeV(ids) {\r\n return ids.map(id => id.replace('V', ''));\r\n }\r\n async function populateVendorDropdownData(vendorData, vendorDropdown, teamMember, clickSource) {\r\n // get vendors from the following\r\n // (Add Risk -> Who Is Responsible) on the Summary tab\r\n // (Add Experience -> Responsible Provider) on the Outcomes tab\r\n // (Add Paid Support -> Provider Name) on the Services tab\r\n const summaryVendors = planSummary.getSelectedVendors();\r\n const outcomesVendors = planOutcomes.getSelectedVendors();\r\n const servicesVendors = removeV(servicesSupports.getSelectedVendorIds());\r\n\r\n let selectedVendors = [...summaryVendors, ...outcomesVendors, ...servicesVendors];\r\n selectedVendors = removeDups(selectedVendors);\r\n \r\n // 'facilities' and 'location' are used interchangeably in vendor.js and outcomes.js \r\n const facilitiesGroup = {\r\n groupLabel: 'Facilities',\r\n groupId: 'facilitiesGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n const vendorGroup = {\r\n groupLabel: 'Plan Vendor',\r\n groupId: 'vendorGroup',\r\n dropdownValues: [],\r\n };\r\n const nonVendorGroup = {\r\n groupLabel: 'Not a Vendor on this Plan',\r\n groupId: 'nonVendorGroup',\r\n dropdownValues: [],\r\n };\r\n\r\n vendorData.forEach(vendor => {\r\n let isSelected = selectedVendors.includes(vendor.vendorId);\r\n if (isSelected) {\r\n vendorGroup.dropdownValues.push({ text: vendor.vendorName, value: vendor.vendorName });\r\n } else {\r\n nonVendorGroup.dropdownValues.push({ text: vendor.vendorName, value: vendor.vendorName });\r\n }\r\n });\r\n\r\n \r\n const locationData = await consentAndSignAjax.getLocationswithSalesforceId();\r\n\r\n // remove the locations that are already selected and displayed on the teammember screen\r\n if (locationData) {\r\n currentTeamMemberList.forEach(member => {\r\n for (let i = 0; i < locationData.length; i++) {\r\n if (member.locationId === locationData[i].ID && clickSource === 'addVendor') {\r\n locationData.splice(i,1);\r\n }\r\n }\r\n });\r\n }\r\n \r\n\r\n const groupDropdownData = [];\r\n\r\n if ($.session.applicationName !== 'Gatekeeper') { \r\n //var theseLocations = locationData.filter(member => member.locationId !== '');\r\n facilitiesGroup.dropdownValues = locationData.map(ps => {\r\n return {\r\n value: `${ps.Name}LOCATIONID:${ps.ID}L`,\r\n text: ps.Name,\r\n };\r\n });\r\n\r\n // facilitiesGroup.dropdownValues = removeDups(facilitiesGroup.dropdownValues);\r\n facilitiesGroup.dropdownValues.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n groupDropdownData.push(facilitiesGroup);\r\n }\r\n\r\n //const groupDropdownData = [];\r\n // groupDropdownData.push(facilitiesGroup);\r\n groupDropdownData.push(vendorGroup);\r\n groupDropdownData.push(nonVendorGroup);\r\n\r\n if (facilitiesGroup.dropdownValues.length > 0) {\r\n for (let i = 0; i < facilitiesGroup.dropdownValues.length; i++) {\r\n if (facilitiesGroup.dropdownValues[i].text.trim() === teamMember.trim()){\r\n teamMember = facilitiesGroup.dropdownValues[i].value;\r\n }\r\n }\r\n }\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: vendorDropdown,\r\n data: groupDropdownData,\r\n nonGroupedData: [{ value: '', text: '' }],\r\n defaultVal: teamMember.trim(),\r\n });\r\n }\r\n\r\n function populateTeamMemberDropdown(teamMemberDropdown, teamMember) {\r\n const dropdownData = [\r\n { text: '', value: '' },\r\n { text: 'Home Provider', value: 'Home Provider Vendor' },\r\n { text: 'Day Provider', value: 'Day Provider Vendor' },\r\n { text: 'Other', value: 'Other Vendor' },\r\n ];\r\n\r\n dropdown.populate(teamMemberDropdown, dropdownData, teamMember);\r\n }\r\n\r\n function populateSignatureTypeDropdown(signatureTypeDropdown, type) {\r\n dropdown.populate(\r\n signatureTypeDropdown,\r\n [\r\n { text: '', value: '' },\r\n { text: 'Digital', value: '1' },\r\n { text: 'In-Person', value: '2' },\r\n { text: 'No Signature Required', value: '3' },\r\n //{ text: 'E-Digital', value: '4' },\r\n ],\r\n type,\r\n );\r\n }\r\n\r\n async function saveTeamMember() {\r\n csVendorPopup.style.display = 'none';\r\n pendingSave.show('Saving...');\r\n\r\n let res = null;\r\n let success;\r\n\r\n // Gather Data\r\n if (isNew) {\r\n if (importedFromRelationship) {\r\n selectedMemberData.relationshipImport = 'T';\r\n selectedMemberData.createRelationship = 'F';\r\n } else {\r\n selectedMemberData.relationshipImport = 'F';\r\n selectedMemberData.createRelationship = 'T';\r\n }\r\n await planConsentAndSign.insertNewTeamMember(selectedMemberData);\r\n success = true;\r\n const pendingSavePopup = document.querySelector('.pendingSavePopup');\r\n pendingSavePopup.style.display = 'none';\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(csVendorPopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n csVendorPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n } else {\r\n await planConsentAndSign.updateTeamMember(selectedMemberData);\r\n success = true;\r\n\r\n if (success) {\r\n pendingSave.fulfill('Saved');\r\n setTimeout(() => {\r\n const savePopup = document.querySelector('.successfulSavePopup');\r\n DOM.ACTIONCENTER.removeChild(savePopup);\r\n POPUP.hide(csVendorPopup);\r\n planConsentAndSign.refreshTable();\r\n }, 700);\r\n } else {\r\n pendingSave.reject('Failed to save, please try again.');\r\n console.error(res);\r\n setTimeout(() => {\r\n const failPopup = document.querySelector('.failSavePopup');\r\n DOM.ACTIONCENTER.removeChild(failPopup);\r\n csVendorPopup.style.removeProperty('display');\r\n }, 2000);\r\n }\r\n }\r\n }\r\n\r\n function getSignatureTypeByID(id) {\r\n switch (id) {\r\n case '1': {\r\n return 'Digital';\r\n }\r\n case '2': {\r\n return 'In-Person';\r\n }\r\n case '3': {\r\n return 'No Signature Required';\r\n }\r\n // case '4': {\r\n // return 'E-Digital';\r\n // }\r\n default: {\r\n return '';\r\n }\r\n }\r\n }\r\n\r\n function buildParticipationRadios() {\r\n const radioContainer = document.createElement('div');\r\n radioContainer.classList.add('sig_radioContainer');\r\n\r\n const radioContainerTitle = document.createElement('p');\r\n radioContainerTitle.innerText = 'Participated in Planning?';\r\n\r\n participatedYesRadio = input.buildRadio({\r\n text: 'Yes',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'Y',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'Y';\r\n radioDiv.classList.remove('error');\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n participatedNoRadio = input.buildRadio({\r\n text: 'No',\r\n name: 'pipRadioSet',\r\n isChecked: selectedMemberData.participated === 'N',\r\n isDisabled: isSigned || readOnly,\r\n callback: () => {\r\n selectedMemberData.participated = 'N';\r\n radioDiv.classList.remove('error');\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n\r\n radioDiv = document.createElement('div');\r\n radioDiv.classList.add('signatures_radioDiv');\r\n radioDiv.appendChild(participatedYesRadio);\r\n radioDiv.appendChild(participatedNoRadio);\r\n\r\n if (isNew && $.session.planInsertNewTeamMember) {\r\n radioDiv.classList.add('error');\r\n }\r\n\r\n radioContainer.appendChild(radioContainerTitle);\r\n radioContainer.appendChild(radioDiv);\r\n\r\n return radioContainer;\r\n }\r\n\r\n function buildDateSignedDisplay() {\r\n const dateSignedDisplay = document.createElement('p');\r\n dateSignedDisplay.classList.add('ispSignature_DateSigned');\r\n dateSignedDisplay.style.marginBottom = '15px';\r\n if (isSigned) {\r\n const dateSignedParsed = selectedMemberData.dateSigned.split(' ')[0];\r\n dateSignedDisplay.innerText = `Signed off by Team Member on: ${dateSignedParsed}`;\r\n }\r\n\r\n return dateSignedDisplay;\r\n }\r\n function buildActionBtns() {\r\n const mainWrap = document.createElement('div');\r\n\r\n saveTeamMemberBtn = button.build({\r\n id: 'sigPopup_save',\r\n text: 'save',\r\n style: 'secondary',\r\n type: 'contained',\r\n callback: () => {\r\n saveTeamMember();\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n id: 'sigPopup_cancel',\r\n text: isSigned || readOnly ? 'close' : 'cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(csVendorPopup);\r\n selectedStateGuardian = '';\r\n },\r\n });\r\n // Delete only visable if isNew = false\r\n const deleteBtn = button.build({\r\n id: 'sigPopup_delete',\r\n text: 'delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: () => {\r\n planConsentAndSign.deleteTeamMember(selectedMemberData.signatureId, csVendorPopup);\r\n },\r\n });\r\n // Button Wrap 2\r\n const btnWrap2 = document.createElement('div');\r\n btnWrap2.classList.add('btnWrap');\r\n if (!isSigned && !readOnly) {\r\n btnWrap2.appendChild(saveTeamMemberBtn);\r\n }\r\n btnWrap2.appendChild(cancelBtn);\r\n // Button Wrap 3\r\n const btnWrap3 = document.createElement('div');\r\n btnWrap3.classList.add('btnWrap', 'deleteWrap');\r\n btnWrap3.appendChild(deleteBtn);\r\n\r\n if (isNew) {\r\n saveTeamMemberBtn.classList.add('disabled');\r\n }\r\n mainWrap.appendChild(btnWrap2);\r\n if (!isSigned && !isNew && !readOnly) {\r\n mainWrap.appendChild(btnWrap3);\r\n } else if (!isNew && !readOnly && selectedMemberData.signatureType === '3') {\r\n mainWrap.appendChild(btnWrap3);\r\n }\r\n\r\n return mainWrap;\r\n }\r\n\r\n //* link btn popups\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n async function showPopup({\r\n isNewMember,\r\n isReadOnly,\r\n memberData,\r\n currentTeamMemberData,\r\n vendorData,\r\n clickSource,\r\n }) {\r\n isNew = isNewMember;\r\n isSigned = memberData.dateSigned !== '';\r\n readOnly = isReadOnly;\r\n showConsentStatments = planConsentAndSign.isTeamMemberConsentable(memberData.teamMember);\r\n selectedMemberData = { ...memberData };\r\n currentTeamMemberList = currentTeamMemberData;\r\n\r\n // if (!isNew && $.session.applicationName === 'Advisor') {\r\n // selectedMemberData.csChangeMindSSAPeopleId = $.session.UserId;\r\n // }\r\n\r\n //*--------------------------------------\r\n //* POPUP\r\n //*--------------------------------------\r\n csVendorPopup = POPUP.build({\r\n id: 'sig_mainPopup',\r\n hideX: true,\r\n header: isNew ? 'Add Vendor' : 'Update Vendor',\r\n });\r\n\r\n //* INPUTS\r\n //*------------------------------\r\n // Vendor\r\n vendorDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_vendor',\r\n label: 'Vendor',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.name = event.target.value;\r\n\r\n\r\n if (event.target.value === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n\r\n if (selectedMemberData.name.includes('LOCATIONID:')) {\r\n \r\n arr = event.target.value.split(\"LOCATIONID:\");\r\n selectedMemberData.name = arr[0];\r\n selectedMemberData.locationId = arr[1];\r\n selectedMemberData.vendorId = arr[1];\r\n \r\n } else {\r\n\r\n const vendorRel = getSelectedVendorRel(vendorData, selectedMemberData.name);\r\n if (selectedMemberData.name === '') {\r\n selectedMemberData.buildingNumber = '';\r\n selectedMemberData.vendorId = '';\r\n } else {\r\n selectedMemberData.buildingNumber = vendorRel.vendorAddress;\r\n selectedMemberData.vendorId = vendorRel.vendorId;\r\n }\r\n\r\n }\r\n \r\n\r\n buildingNumberInput.childNodes[0].value = selectedMemberData.buildingNumber.substring(0, 4);\r\n buildingNumberInput.classList.add('disabled');\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n setStateofPopupFields();\r\n\r\n checkcsVendorPopupForErrors();\r\n }, // end callback\r\n }); // end DROP DOWN BUILD\r\n\r\n // Team Member\r\n teamMemberDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_teamMember',\r\n label: 'Team Member',\r\n readonly: isSigned || readOnly,\r\n callback: async event => {\r\n selectedMemberData.teamMember = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n\r\n checkcsVendorPopupForErrors();\r\n }, // end callback\r\n }); // end DROP DOWN BUILD\r\n\r\n // Enabling/Disabling fields depending upon teamMemberDropdown selection -- Guardian or not\r\n function setStateofPopupFields() {\r\n //* Required Fields\r\n //*------------------------------\r\n if (selectedMemberData.name === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.participated === '') {\r\n radioDiv.classList.add('error');\r\n } else {\r\n radioDiv.classList.remove('error');\r\n }\r\n }\r\n\r\n teamMemberDropdown.classList.add('teamMemberDropdown');\r\n\r\n // Building Number\r\n buildingNumberInput = input.build({\r\n label: 'Building Number',\r\n value: selectedMemberData.buildingNumber,\r\n readonly: isSigned || readOnly,\r\n callbackType: 'input',\r\n callback: event => {\r\n selectedMemberData.buildingNumber = event.target.value;\r\n\r\n checkcsVendorPopupForErrors();\r\n a;\r\n },\r\n });\r\n buildingNumberInput.classList.add('disabled');\r\n\r\n input.disableInputField(buildingNumberInput);\r\n // Participate Yes/NO\r\n const participationRadios = buildParticipationRadios();\r\n\r\n // Signature Type\r\n signatureTypeDropdown = dropdown.build({\r\n dropdownId: 'sigPopup_signType',\r\n label: 'Signature Type',\r\n readonly: isSigned || readOnly,\r\n callback: event => {\r\n selectedMemberData.signatureType = event.target.value;\r\n\r\n if (event.target.value === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n checkcsVendorPopupForErrors();\r\n },\r\n });\r\n\r\n //* BUTTONS\r\n //*------------------------------\r\n const btns = buildActionBtns();\r\n\r\n //* Date Signed Display\r\n //*------------------------------\r\n const dateSignedDisplay = buildDateSignedDisplay();\r\n\r\n //* Disabled Fields\r\n //*------------------------------\r\n if (selectedMemberData.buildingNumber) {\r\n buildingNumberInput.classList.add('disabled');\r\n }\r\n\r\n //* Required Fields\r\n //*------------------------------\r\n if (selectedMemberData.name === '') {\r\n vendorDropdown.classList.add('error');\r\n } else {\r\n vendorDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.teamMember === '') {\r\n teamMemberDropdown.classList.add('error');\r\n } else {\r\n teamMemberDropdown.classList.remove('error');\r\n }\r\n if (selectedMemberData.participated === '') {\r\n radioDiv.classList.add('error');\r\n } else {\r\n radioDiv.classList.remove('error');\r\n }\r\n if (selectedMemberData.signatureType === '') {\r\n signatureTypeDropdown.classList.add('error');\r\n } else {\r\n signatureTypeDropdown.classList.remove('error');\r\n }\r\n\r\n //* Add elements to popup\r\n //*------------------------------\r\n if (isSigned) {\r\n csVendorPopup.appendChild(dateSignedDisplay);\r\n }\r\n\r\n csVendorPopup.appendChild(vendorDropdown);\r\n csVendorPopup.appendChild(teamMemberDropdown);\r\n csVendorPopup.appendChild(buildingNumberInput);\r\n csVendorPopup.appendChild(participationRadios);\r\n csVendorPopup.appendChild(signatureTypeDropdown);\r\n csVendorPopup.appendChild(btns);\r\n\r\n populateVendorDropdownData(vendorData, vendorDropdown, selectedMemberData.name, clickSource);\r\n populateTeamMemberDropdown(teamMemberDropdown, selectedMemberData.teamMember);\r\n populateSignatureTypeDropdown(signatureTypeDropdown, selectedMemberData.signatureType);\r\n\r\n const vendorRel = getSelectedVendorRel(vendorData, selectedMemberData.name);\r\n if (vendorRel !== undefined) {\r\n buildingNumberInputValue = vendorRel.vendorAddress.substring(0, 4);\r\n buildingNumberInput.childNodes[0].value = buildingNumberInputValue;\r\n }\r\n\r\n POPUP.show(csVendorPopup);\r\n\r\n // if ($.session.planInsertNewTeamMember) {\r\n // checkcsVendorPopupForErrors();\r\n // }\r\n }\r\n\r\n return {\r\n showPopup,\r\n getSignatureTypeByID,\r\n getSelectedVendorRel,\r\n };\r\n})();\r\n","const planIntroduction = (() => {\r\n let isReadOnly;\r\n let planId;\r\n let likeAdmire;\r\n let thingsImportantTo;\r\n let thingsImportantFor;\r\n let howToSupport;\r\n let usePlanImage;\r\n let consumerIdForPhoto;\r\n let selectedConsumerId;\r\n let consumerImage;\r\n let consumerImageURL;\r\n let charLimits;\r\n\r\n async function updateIntroduction() {\r\n await planIntroductionAjax.updatePlanIntroduction(\r\n $.session.Token,\r\n planId,\r\n selectedConsumerId,\r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage,\r\n );\r\n }\r\n\r\n function buildIntroduction() {\r\n const introduction = document.createElement('div');\r\n introduction.classList.add('outcome');\r\n\r\n //photo display\r\n var img = document.createElement('img');\r\n img.classList.add('imageContainer');\r\n\r\n // No Photo radio button\r\n const noPhotoRadio = input.buildRadio({\r\n id: `noPhotoRadio`,\r\n text: 'No Photo',\r\n name: 'chkUseImage',\r\n isChecked:\r\n usePlanImage === '' || usePlanImage === null || usePlanImage === '2' ? true : false,\r\n // isDisabled: isReadOnly,\r\n callback: () => {\r\n // if (!isReadOnly) photoInput.classList.add('disabled');\r\n // Retrieve the demographics DEFAULT Picture from images folder and place it in img\r\n // var fullpath = `./images/portraits/default.png`;\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n usePlanImage = 2;\r\n updateIntroduction();\r\n },\r\n });\r\n\r\n displayNoPhoto();\r\n\r\n // Demographics radio button\r\n const demoPhotoRadio = input.buildRadio({\r\n id: `chkUsePlanImage-no`,\r\n text: 'Use Demographics Photo',\r\n name: 'chkUseImage',\r\n isChecked: usePlanImage === '0' ? true : false,\r\n isDisabled: isReadOnly,\r\n callback: () => {\r\n if (!isReadOnly) photoInput.classList.add('disabled');\r\n // Retrieve the demographics Picture from images folder and place it in img\r\n var fullpath = `./images/portraits/${selectedConsumerId}.png`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n usePlanImage = 0;\r\n updateIntroduction();\r\n\r\n displayDemographicsPhoto();\r\n },\r\n });\r\n\r\n displayDemographicsPhoto();\r\n\r\n // Custom Image (Plan) radio button\r\n const customPhotoRadio = input.buildRadio({\r\n id: `chkUsePlanImage-yes`,\r\n text: 'Use Custom Image',\r\n name: 'chkUseImage',\r\n isChecked: usePlanImage === '1' ? true : false,\r\n isDisabled: isReadOnly,\r\n callback: async () => {\r\n usePlanImage = 1;\r\n consumerImage = '';\r\n if (!isReadOnly) photoInput.classList.remove('disabled');\r\n await updateIntroduction();\r\n const planIntroductionData = await planIntroductionAjax.getPlanIntroduction({\r\n token: $.session.Token,\r\n planId: planId,\r\n consumerId: selectedConsumerId,\r\n });\r\n\r\n consumerImage = planIntroductionData.consumerImage;\r\n displayPlanIntroductionPhoto();\r\n },\r\n });\r\n\r\n displayPlanIntroductionPhoto();\r\n\r\n // File Selection Input\r\n var photoInput = input.build({\r\n id: `selectImage`,\r\n label: 'Choose Image',\r\n type: 'file',\r\n accept: 'image/*',\r\n style: 'secondary',\r\n attributes: [{ key: 'multiple', value: 'false' }],\r\n });\r\n\r\n photoInput.addEventListener('change', event => {\r\n const photoObj = {};\r\n\r\n const attPromise = new Promise(resolve => {\r\n const photoFile = event.target.files.item(0);\r\n const photoName = photoFile.name;\r\n const photoType = photoFile.name.split('.').pop();\r\n photoObj.description = photoName;\r\n photoObj.type = photoType;\r\n // new Response(file) was added for Safari compatibility\r\n new Response(photoFile).arrayBuffer().then(res => {\r\n photoObj.arrayBuffer = res;\r\n resolve();\r\n });\r\n });\r\n attPromise.then(async () => {\r\n try {\r\n consumerImage = photoObj.arrayBuffer;\r\n refreshPlanIntroductionPhoto(event);\r\n } catch (error) {\r\n throw error;\r\n }\r\n });\r\n });\r\n\r\n // build radio buttons and photo selector\r\n const imageTitle = document.createElement('h4');\r\n imageTitle.innerHTML = 'Photo';\r\n const imageContainer = document.createElement('div');\r\n const radioDiv1 = document.createElement('div');\r\n const radioDiv2 = document.createElement('div');\r\n const radioDiv3 = document.createElement('div');\r\n const imageframe = document.createElement('div');\r\n imageframe.classList.add('imageframe');\r\n const photoSelectDiv = document.createElement('div');\r\n radioDiv1.appendChild(noPhotoRadio);\r\n radioDiv2.appendChild(demoPhotoRadio);\r\n // TODOJOE: Position the image so that it is next to other elements (not so far to right)\r\n imageframe.appendChild(img);\r\n radioDiv3.appendChild(customPhotoRadio);\r\n photoSelectDiv.appendChild(photoInput);\r\n photoSelectDiv.classList.add('photoSelectorContainer');\r\n imageContainer.appendChild(imageTitle);\r\n imageContainer.appendChild(radioDiv1);\r\n imageContainer.appendChild(radioDiv2);\r\n imageContainer.appendChild(imageframe);\r\n imageContainer.appendChild(radioDiv3);\r\n imageContainer.appendChild(photoSelectDiv);\r\n imageContainer.classList.add('imageSelectionContainer');\r\n\r\n // likeAdmire textarea\r\n const likeAdmireInput = input.build({\r\n label: 'What People Like and Admire About Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: likeAdmire,\r\n charLimit: charLimits.likeAdmire,\r\n forceCharLimit: true,\r\n });\r\n likeAdmireInput.classList.add('introTextArea');\r\n likeAdmireInput.addEventListener('input', e => {\r\n likeAdmire = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // thingsImportantTo textarea\r\n const thingsImportantToInput = input.build({\r\n label: 'A Few Things That Are Important to Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: thingsImportantTo,\r\n charLimit: charLimits.thingsImportantTo,\r\n forceCharLimit: true,\r\n });\r\n thingsImportantToInput.classList.add('introTextArea');\r\n thingsImportantToInput.addEventListener('input', e => {\r\n thingsImportantTo = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // thingsImportantFor textarea\r\n const thingsImportantForInput = input.build({\r\n label: 'A Few Things That Are Important for Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: thingsImportantFor,\r\n charLimit: charLimits.thingsImportantFor,\r\n forceCharLimit: true,\r\n });\r\n thingsImportantForInput.classList.add('introTextArea');\r\n thingsImportantForInput.addEventListener('input', e => {\r\n thingsImportantFor = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n // howToSupport textarea\r\n const howToSupportInput = input.build({\r\n label: 'Here is How You Can Support Me',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: howToSupport,\r\n charLimit: charLimits.howToSupport,\r\n forceCharLimit: true,\r\n });\r\n howToSupportInput.classList.add('introTextArea');\r\n howToSupportInput.addEventListener('input', e => {\r\n howToSupport = e.target.value;\r\n usePlanImage = usePlanImage == null || usePlanImage == '' || usePlanImage == 0 ? 0 : 1;\r\n updateIntroduction();\r\n });\r\n\r\n introduction.appendChild(imageContainer);\r\n introduction.appendChild(likeAdmireInput);\r\n introduction.appendChild(thingsImportantToInput);\r\n introduction.appendChild(thingsImportantForInput);\r\n introduction.appendChild(howToSupportInput);\r\n\r\n DOM.ACTIONCENTER.appendChild(introduction);\r\n // if custom image radio button is selected, enable the file/photo select functionality\r\n let customPhotoRadio2 = document.getElementById('chkUsePlanImage-yes');\r\n if (customPhotoRadio2.checked == true) {\r\n photoInput.classList.remove('disabled');\r\n } else {\r\n photoInput.classList.add('disabled');\r\n }\r\n\r\n if (isReadOnly) {\r\n likeAdmireInput.classList.add('disabled');\r\n thingsImportantToInput.classList.add('disabled');\r\n thingsImportantForInput.classList.add('disabled');\r\n howToSupportInput.classList.add('disabled');\r\n // let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n // let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // demoPhotoRadio.disabled = true;\r\n // customPhotoRadio.disabled = true;\r\n photoInput.classList.add('disabled');\r\n }\r\n\r\n return introduction;\r\n }\r\n\r\n function getMarkup() {\r\n const section = document.createElement('div');\r\n section.classList.add('ispIntroduction');\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Introduction';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '24px';\r\n section.appendChild(heading);\r\n\r\n // let linebreak = document.createElement(\"br\");\r\n // section.appendChild(linebreak);\r\n const introduction = buildIntroduction();\r\n section.appendChild(introduction);\r\n\r\n return section;\r\n }\r\n\r\n function displayDemographicsPhoto() {\r\n // if portrait exists in image/portraits, then enable demoPhotoRadio; otherwise, disable it\r\n var id = consumerIdForPhoto;\r\n id = parseInt(id);\r\n var fullpath = `./images/portraits/${id}.png`;\r\n var myImage = new Image();\r\n myImage.src = fullpath;\r\n myImage.onload = function () {\r\n let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n demoPhotoRadio.disabled = isReadOnly;\r\n // display Demographics photo\r\n if (demoPhotoRadio.checked == true) {\r\n var fullpath = `./images/portraits/${consumerIdForPhoto}.png`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n }\r\n };\r\n myImage.onerror = function () {\r\n let demoPhotoRadio = document.getElementById('chkUsePlanImage-no');\r\n // display Silhouette photo\r\n if (demoPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n demoPhotoRadio.disabled = true;\r\n demoPhotoRadio.checked = false;\r\n };\r\n }\r\n\r\n function displayNoPhoto() {\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var myImage = new Image();\r\n myImage.src = fullpath;\r\n myImage.onload = function () {\r\n let noPhotoRadio1 = document.getElementById('noPhotoRadio');\r\n // display default photo silhouette\r\n if (noPhotoRadio1.checked == true) {\r\n var fullpath = `./images/new-icons/default.jpg`;\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', fullpath);\r\n }\r\n };\r\n }\r\n\r\n function displayPlanIntroductionPhoto() {\r\n if (consumerImage) {\r\n const binaryString = window.atob(consumerImage);\r\n const len = binaryString.length;\r\n const bytes = new Uint8Array(len);\r\n\r\n for (let i = 0; i < len; ++i) {\r\n bytes[i] = binaryString.charCodeAt(i);\r\n }\r\n\r\n const blob = new Blob([bytes], { type: 'image/jpg' });\r\n var urlCreator = window.URL || window.webkitURL;\r\n consumerImageURL = urlCreator.createObjectURL(blob);\r\n\r\n var myImage2 = new Image();\r\n myImage2.src = consumerImageURL;\r\n\r\n myImage2.onload = function () {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Plan (ie, Custom) photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', consumerImageURL);\r\n }\r\n };\r\n\r\n myImage2.onerror = function (errorMsg) {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Silhouette photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n };\r\n } else {\r\n var myImage3 = new Image();\r\n myImage3.src = '';\r\n myImage3.onerror = function (errorMsg) {\r\n let customPhotoRadio = document.getElementById('chkUsePlanImage-yes');\r\n // display Silhouette photo\r\n if (customPhotoRadio.checked == true) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', './images/new-icons/default.jpg');\r\n }\r\n };\r\n }\r\n }\r\n\r\n function refreshPlanIntroductionPhoto(event) {\r\n var imgElement = document.getElementsByClassName('imageContainer');\r\n imgElement[0].setAttribute('src', URL.createObjectURL(event.target.files[0]));\r\n usePlanImage = 1;\r\n updateIntroduction();\r\n // }\r\n }\r\n\r\n async function init(data) {\r\n isReadOnly = data.readOnly;\r\n planId = data.planId;\r\n charLimits = planData.getISPCharacterLimits('introduction');\r\n\r\n // var activeConsumers = roster2.getActiveConsumers();\r\n // selectedConsumerId = activeConsumers[activeConsumers.length - 1].id;\r\n\r\n // const selectedConsumer = plan.getSelectedConsumer();\r\n // consumerIdForPhoto =\r\n // $.session.applicationName === 'Advisor' ? selectedConsumer.consumerId : selectedConsumer.id;\r\n\r\n const selectedConsumer = plan.getSelectedConsumer();\r\n selectedConsumerId = selectedConsumer.id;\r\n\r\n if ($.session.applicationName === 'Advisor') {\r\n consumerIdForPhoto = selectedConsumer.consumerId\r\n ? selectedConsumer.consumerId\r\n : selectedConsumer.id;\r\n }\r\n\r\n if ($.session.applicationName === 'Gatekeeper') {\r\n consumerIdForPhoto = selectedConsumer.consumerId\r\n ? selectedConsumer.consumerId\r\n : selectedConsumer.id;\r\n }\r\n\r\n const planIntroductionData = await planIntroductionAjax.getPlanIntroduction({\r\n token: $.session.Token,\r\n planId: planId,\r\n consumerId: selectedConsumerId,\r\n });\r\n\r\n likeAdmire = planIntroductionData.likeAdmire;\r\n thingsImportantTo = planIntroductionData.thingsImportantTo;\r\n thingsImportantFor = planIntroductionData.thingsImportantFor;\r\n howToSupport = planIntroductionData.howToSupport;\r\n usePlanImage = planIntroductionData.usePlanImage;\r\n consumerImage = planIntroductionData.consumerImage;\r\n }\r\n\r\n return { init, getMarkup };\r\n})();\r\n","const planIntroductionAjax = (() => {\r\n\r\n // GET\r\n //------------------------------------\r\n async function getPlanIntroduction(retrieveData) {\r\n // string token, string planId, string consumerId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanIntroduction/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanIntroductionResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Update\r\n //------------------------------------\r\n async function updatePlanIntroduction(\r\n token,\r\n planId,\r\n consumerId, \r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage\r\n ) {\r\n \r\n // retrieveData.usePlanImage = parseInt(retrieveData.usePlanImage);\r\n\r\n try {\r\n var binary = '';\r\n var bytes = new Uint8Array(consumerImage);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n binary += String.fromCharCode(bytes[i]);\r\n }\r\n let abString = window.btoa(binary);\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanIntroduction/',\r\n data: JSON.stringify({\r\n token: token,\r\n planId,\r\n consumerId, \r\n likeAdmire,\r\n thingsImportantTo,\r\n thingsImportantFor,\r\n howToSupport,\r\n usePlanImage,\r\n consumerImage: abString,\r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanIntroductionResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n \r\n return {\r\n getPlanIntroduction,\r\n updatePlanIntroduction,\r\n\r\n };\r\n \r\n })();\r\n","const planOutcomes = (() => {\r\n let isReadOnly;\r\n let isSortable;\r\n let planId; // aka: assessmentId\r\n let progressSummaryId;\r\n let progressSummary;\r\n let outcomesData;\r\n let dropdownData;\r\n let outcomesWrap;\r\n let outcomesProgressSummary;\r\n let addOutcomeBtn;\r\n let addExpTableBtn;\r\n let teamMembers;\r\n let hasPreviousPlan;\r\n let charLimits;\r\n let responseIdCache = {};\r\n // Selected Vendors => Experiences/WhoResponsible\r\n let selectedVendors = {};\r\n let validationCheck;\r\n function getSelectedVendors() {\r\n return Object.values(selectedVendors);\r\n }\r\n //*------------------------------------------------------\r\n //* UTILS\r\n //*------------------------------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapOutcomesDetails(data) {\r\n if (!data || data.planOutcome.length === 0) return {};\r\n\r\n const outcomes = {};\r\n\r\n data.planOutcome.forEach(o => {\r\n if (!outcomes[o.outcomeId]) {\r\n outcomes[o.outcomeId] = {\r\n sectionId: o.sectionId,\r\n outcomeId: o.outcomeId,\r\n outcomeOrder: o.outcomeOrder,\r\n outcome: o.outcome,\r\n details: o.details,\r\n history: o.history,\r\n status: o.status,\r\n carryOverReason: o.carryOverReason,\r\n experiences: {},\r\n reviews: {},\r\n };\r\n }\r\n });\r\n data.planOutcomeExperiences.forEach(o => {\r\n const oc = outcomes[o.outcomeId];\r\n if (!oc) return 'error: outcome or outcomeId is invalid or missing';\r\n\r\n if (!oc.experiences[o.experienceId]) {\r\n oc.experiences[o.experienceId] = {\r\n experienceIds: o.experienceId,\r\n experienceOrder: o.experienceOrder,\r\n outcomeId: o.outcomeId,\r\n whatHappened: o.whatHappened,\r\n howHappened: o.howHappened,\r\n responsibilities: {},\r\n };\r\n o.planExperienceResponsibilities.forEach((resp, index) => {\r\n if (!oc.experiences[o.experienceId].responsibilities[index]) {\r\n oc.experiences[o.experienceId].responsibilities[index] = {\r\n responsibilityIds: resp.responsibilityId,\r\n responsibleContact: !resp.responsibleContact ? '%' : resp.responsibleContact,\r\n responsibleProvider: !resp.responsibleProvider ? '%' : resp.responsibleProvider,\r\n whenHowOftenValue: resp.whenValue,\r\n whenHowOftenFrequency: resp.whenFrequency,\r\n whenHowOftenText: resp.whenOther,\r\n };\r\n }\r\n });\r\n }\r\n });\r\n data.planReviews.forEach(o => {\r\n const oc = outcomes[o.outcomeId];\r\n if (!oc) return 'error: outcome or outcomeId is invalid or missing';\r\n\r\n if (!oc.reviews[o.outcomeReviewId]) {\r\n oc.reviews[o.outcomeReviewId] = {\r\n whatWillHappen: o.whatWillHappen,\r\n whenToCheckIn: o.whenToCheckIn,\r\n whoReview: o.who,\r\n reviewIds: o.outcomeReviewId,\r\n whoResponsible: o.whoResponsible,\r\n contactId: o.contactId,\r\n reviewOrder: o.reviewOrder,\r\n outcomeId: o.outcomeId,\r\n };\r\n }\r\n });\r\n\r\n return outcomes;\r\n }\r\n function sortOutcomesByOrder(outcomeData) {\r\n return [...outcomeData].sort((objA, objB) => {\r\n if (objA.outcomeOrder === objB.outcomeOrder) return 0;\r\n\r\n return objA.outcomeOrder < objB.outcomeOrder ? -1 : 1;\r\n });\r\n }\r\n function checkIfSummaryRequired() {\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n\r\n if (outcomes.length > 0 && progressSummary === '') {\r\n outcomesProgressSummary.classList.add('error');\r\n } else {\r\n outcomesProgressSummary.classList.remove('error');\r\n }\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* DROPDOWNS\r\n //*------------------------------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentAreaId,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateStatusDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.outcomeStatus.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateExperiencesHowOftenDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.howOFtenExperiences.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateReviewsWhoDropdown(dropdownEle, defaultValue) {\r\n // teamMembers = planConsentAndSign.getTeamMembersHowTheyExistOnPlanNowWhileWeWaitOnDamnStateToMakeUpTheirMinds();\r\n\r\n teamMembers = planData.getDropdownData().relationships.map(dd => {\r\n return {\r\n peopleId: dd.peopleId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n let data;\r\n if (teamMembers) {\r\n data = teamMembers.map(dd => {\r\n return {\r\n value: dd.peopleId,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n data.unshift({ value: '%', text: '' });\r\n } else {\r\n data = [{ value: '%', text: '' }];\r\n }\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n async function populateResponsibleProviderDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n // const selectedVendorIds = servicesSupports.getSelectedVendorIds();\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const nonPaidSupportData = data.filter(provider => !selectedVendorIds.includes(provider.value));\r\n const paidSupportData = data.filter(provider => selectedVendorIds.includes(provider.value));\r\n\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n nonPaidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n paidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ss_providerDropdown_paidSupportProviders',\r\n dropdownValues: paidSupportDropdownData,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ss_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: nonPaidSupportDropdownData,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (paidSupportDropdownData.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n const tempData = [...nonPaidSupportDropdownData, ...paidSupportDropdownData];\r\n if (tempData.length === 1) {\r\n defaultValue = tempData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: defaultValue,\r\n });\r\n\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.vendorId);\r\n return acc;\r\n }, []);\r\n }\r\n // data.sort((a, b) => {\r\n // const textA = a.text.toUpperCase();\r\n // const textB = b.text.toUpperCase();\r\n // return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n // });\r\n // data.unshift({ value: '%', text: '' });\r\n\r\n // dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateResponsibleContactDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.relationships.map(dd => {\r\n return {\r\n value: dd.contactId,\r\n text: `${dd.lastName}, ${dd.firstName}`,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n //-- map id to name -------\r\n function getWhenHowOFtenFrequencyById(id) {\r\n const filteredFrequency = dropdownData.howOFtenExperiences.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n function getWhoTypeById(id) {\r\n // teamMembers = planData.getDropdownData().relationships.map(dd => {\r\n // return {\r\n // peopleId: dd.peopleId,\r\n // text: `${dd.lastName}, ${dd.firstName}`,\r\n // };\r\n // });\r\n const filteredWho = dropdownData.relationships.filter(dd => dd.contactId === id);\r\n if (filteredWho && filteredWho.length > 0) {\r\n return filteredWho[0].teamMember === 'Case Manager' ? true : false;\r\n }\r\n }\r\n\r\n function isSalesforceLocationTrue(value) {\r\n // Check if value exists in dropdownData.serviceVendors array and its isSalesforceLocation is 'True'\r\n const vendor = dropdownData.serviceVendors.find(vendor => vendor.vendorId === value);\r\n return vendor ? vendor.isSalesforceLocation === 'True' : false;\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* OUTCOME, DETAILS & HISTORY\r\n //*------------------------------------------------------\r\n async function insertOutcome(saveData, fromAssessment) {\r\n if (fromAssessment) {\r\n planId = plan.getCurrentPlanId();\r\n }\r\n\r\n const outcomeId = await planOutcomesAjax.insertPlanOutcome({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcome: saveData.outcome,\r\n details: saveData.details,\r\n history: saveData.history,\r\n sectionId: saveData.sectionId,\r\n outcomeOrder: saveData.outcomeOrder,\r\n status: saveData.status,\r\n carryOverReason: saveData.carryOverReason,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n outcomesData[outcomeId] = {};\r\n outcomesData[outcomeId].outcome = saveData.outcome;\r\n outcomesData[outcomeId].details = saveData.details;\r\n outcomesData[outcomeId].history = saveData.history;\r\n outcomesData[outcomeId].sectionId = saveData.sectionId;\r\n outcomesData[outcomeId].outcomeOrder = saveData.outcomeOrder;\r\n outcomesData[outcomeId].status = saveData.status;\r\n outcomesData[outcomeId].carryOverReason = saveData.carryOverReason;\r\n\r\n return outcomeId;\r\n }\r\n async function updateOutcome(updateData) {\r\n if ($.session.planUpdate) {\r\n await planOutcomesAjax.updatePlanOutcome({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcomeId: updateData.outcomeId,\r\n outcome: updateData.outcome,\r\n details: updateData.details,\r\n history: updateData.history,\r\n sectionId: updateData.sectionId,\r\n outcomeOrder: updateData.outcomeOrder,\r\n status: updateData.status,\r\n carryOverReason: updateData.carryOverReason,\r\n });\r\n\r\n outcomesData[updateData.outcomeId].outcome = updateData.outcome;\r\n outcomesData[updateData.outcomeId].details = updateData.details;\r\n outcomesData[updateData.outcomeId].history = updateData.history;\r\n outcomesData[updateData.outcomeId].sectionId = updateData.sectionId;\r\n outcomesData[updateData.outcomeId].outcomeOrder = updateData.outcomeOrder;\r\n outcomesData[updateData.outcomeId].status = updateData.status;\r\n outcomesData[updateData.outcomeId].carryOverReason = updateData.carryOverReason;\r\n }\r\n }\r\n async function deleteOutcome(outcomeId) {\r\n await planOutcomesAjax.deletePlanOutcome({\r\n token: $.session.Token,\r\n outcomeId,\r\n });\r\n\r\n if (outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences).forEach(exp => {\r\n Object.values(exp.responsibilities).forEach(resp => {\r\n delete selectedVendors[resp.responsibilityIds];\r\n });\r\n });\r\n }\r\n\r\n if (responseIdCache[outcomeId]) {\r\n responseIdCache[outcomeId].forEach(respId => {\r\n delete selectedVendors[respId];\r\n });\r\n }\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Markup ---------\r\n function toggleAddNewOutcomePopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.newOutcomePopup .error');\r\n const doneBtn = document.querySelector('.newOutcomePopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddNewOutcomePopup(sectionId, charLimits) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n // This is only for adding outcome from inside assessment\r\n let hasInitialErros;\r\n let outcomeText = '';\r\n let detailsText = '';\r\n let historyText = '';\r\n let status = '0';\r\n let carryOverReason = '';\r\n\r\n const newOutcomePopup = POPUP.build({\r\n header: 'Add Outcome',\r\n classNames: 'newOutcomePopup',\r\n hideX: true,\r\n });\r\n\r\n // Assessment Area *for display only!!!\r\n const assessmentAreaDropdown = dropdown.build({\r\n // dropdownId: 'assessmentAreaDropdown',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n });\r\n assessmentAreaDropdown.classList.add('disabled');\r\n\r\n // Status\r\n const statusDropdown = dropdown.build({\r\n // dropdownId: 'statusDropdown',\r\n label: 'Status',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n status = selectedOption.value;\r\n\r\n // if (status === '' || status === '%') {\r\n // statusDropdown.classList.add('error');\r\n // } else {\r\n // statusDropdown.classList.remove('error');\r\n // }\r\n\r\n // toggleAddNewOutcomePopupDoneBtn();\r\n },\r\n });\r\n // Carryover\r\n const carryoverInput = input.build({\r\n label: 'Carryover Reason',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.carryOverReason,\r\n forceCharLimit: true,\r\n });\r\n carryoverInput.classList.add('carryoverTextInput');\r\n carryoverInput.addEventListener('input', e => {\r\n carryOverReason = e.target.value;\r\n if (hasPreviousPlan && status === '1' && carryOverReason === '') {\r\n carryoverInput.classList.add('error');\r\n } else {\r\n carryoverInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // Outcome\r\n const outcomeTextInput = input.build({\r\n label: 'Outcome',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.description,\r\n forceCharLimit: true,\r\n });\r\n outcomeTextInput.classList.add('outcomeTextInput');\r\n outcomeTextInput.addEventListener('input', e => {\r\n outcomeText = e.target.value;\r\n if (outcomeText === '') {\r\n outcomeTextInput.classList.add('error');\r\n } else {\r\n outcomeTextInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // Details\r\n const detailsTextInput = input.build({\r\n label: 'Details To Know',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.details,\r\n forceCharLimit: true,\r\n });\r\n detailsTextInput.classList.add('detailsTextInput');\r\n detailsTextInput.addEventListener('input', e => {\r\n detailsText = e.target.value;\r\n\r\n if (detailsText === '') {\r\n detailsTextInput.classList.add('error');\r\n } else {\r\n detailsTextInput.classList.remove('error');\r\n }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n // History\r\n const historyTextInput = input.build({\r\n label: 'Important and Relevant History',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: '',\r\n charLimit: charLimits.history,\r\n forceCharLimit: true,\r\n });\r\n historyTextInput.classList.add('historyTextInput');\r\n historyTextInput.addEventListener('input', e => {\r\n historyText = e.target.value;\r\n\r\n // if (historyText === '') {\r\n // historyTextInput.classList.add('error');\r\n // } else {\r\n // historyTextInput.classList.remove('error');\r\n // }\r\n\r\n toggleAddNewOutcomePopupDoneBtn();\r\n });\r\n\r\n const doneBtn = button.build({\r\n text: 'Save',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (!planId) {\r\n planId = plan.getCurrentPlanId();\r\n }\r\n\r\n await insertOutcome(\r\n {\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n outcome: outcomeText,\r\n details: detailsText,\r\n history: historyText,\r\n sectionId: sectionId,\r\n status: status,\r\n carryOverReason: carryOverReason,\r\n outcomeOrder: 0,\r\n },\r\n true,\r\n );\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n assessmentValidationCheck = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentValidationCheck);\r\n planValidation.updatedAssessmenteValidation(assessmentValidationCheck);\r\n\r\n const ISPAlertDiv = document.getElementById('navAlertISP');\r\n\r\n if (validationCheck.complete === true) {\r\n ISPAlertDiv.style.display = 'none';\r\n } else {\r\n ISPAlertDiv.style.display = 'flex';\r\n }\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(newOutcomePopup);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(newOutcomePopup);\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (outcomeText === '') {\r\n hasInitialErros = true;\r\n outcomeTextInput.classList.add('error');\r\n }\r\n if (detailsText === '') {\r\n hasInitialErros = true;\r\n detailsTextInput.classList.add('error');\r\n }\r\n // if (historyText === '') {\r\n // hasInitialErros = true;\r\n // historyTextInput.classList.add('error');\r\n // }\r\n if (hasPreviousPlan && status === '1' && carryOverReason === '') {\r\n hasInitialErros = true;\r\n carryoverInput.classList.add('error');\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n newOutcomePopup.appendChild(assessmentAreaDropdown);\r\n newOutcomePopup.appendChild(statusDropdown);\r\n newOutcomePopup.appendChild(carryoverInput);\r\n newOutcomePopup.appendChild(outcomeTextInput);\r\n newOutcomePopup.appendChild(detailsTextInput);\r\n newOutcomePopup.appendChild(historyTextInput);\r\n newOutcomePopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, sectionId);\r\n populateStatusDropdown(statusDropdown, status);\r\n\r\n POPUP.show(newOutcomePopup);\r\n DOM.autosizeTextarea();\r\n }\r\n\r\n //*------------------------------------------------------\r\n //* EXPERIENCES TABLE\r\n //*------------------------------------------------------\r\n async function insertOutcomeExperience(saveData, expTableWrap) {\r\n const newTableData = [];\r\n const outcomeId = saveData.outcomeId;\r\n const whatHappened = saveData.whatHappened;\r\n const howHappened = saveData.howHappened;\r\n const experienceOrder = `${saveData.experienceOrder + 1}`;\r\n\r\n //* Insert Experience\r\n //*---------------------------\r\n const experienceId = await planOutcomesAjax.insertPlanOutcomesExperience({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n experienceOrder: [experienceOrder],\r\n whatHappened: [whatHappened],\r\n howHappened: [howHappened],\r\n });\r\n saveData.experienceIds = experienceId;\r\n\r\n //* Insert Responsibilites\r\n //*---------------------------\r\n const respData = {\r\n token: $.session.Token,\r\n experienceId: experienceId,\r\n responsibleContact: [],\r\n responsibleProvider: [],\r\n whenHowOftenValue: [],\r\n whenHowOftenFrequency: [],\r\n whenHowOftenText: [],\r\n isSalesforceLocation: []\r\n };\r\n\r\n Object.values(saveData.responsibilities).forEach(resp => {\r\n if (resp.responsibleContact === '%') {\r\n respData.responsibleContact.push(0);\r\n } else {\r\n respData.responsibleContact.push(parseInt(resp.responsibleContact));\r\n }\r\n if (resp.responsibleProvider === '%') {\r\n respData.responsibleProvider.push(0);\r\n respData.isSalesforceLocation.push(false);\r\n } else {\r\n if ($.session.applicationName === 'Advisor') {\r\n resp.isSalesforceLocation = isSalesforceLocationTrue(resp.responsibleProvider);\r\n respData.isSalesforceLocation.push(resp.isSalesforceLocation);\r\n respData.responsibleProvider.push(resp.responsibleProvider);\r\n } else {\r\n respData.responsibleProvider.push(resp.responsibleProvider);\r\n respData.isSalesforceLocation.push(false);\r\n }\r\n }\r\n\r\n respData.whenHowOftenFrequency.push(parseInt(resp.whenHowOftenFrequency));\r\n respData.whenHowOftenValue.push(resp.whenHowOftenValue);\r\n respData.whenHowOftenText.push(resp.whenHowOftenText);\r\n });\r\n\r\n const respIds = await planOutcomesAjax.insertPlanOutcomeExperienceResponsibility(respData);\r\n respIds.forEach((id, index) => {\r\n saveData.responsibilities[index].responsibilityIds = id;\r\n\r\n const whoResponsible = getColTextForWhoResponsible(\r\n saveData.responsibilities[index].responsibleContact,\r\n saveData.responsibilities[index].responsibleProvider,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(\r\n saveData.responsibilities[index].whenHowOftenFrequency,\r\n saveData.responsibilities[index].whenHowOftenValue,\r\n saveData.responsibilities[index].whenHowOftenText,\r\n );\r\n\r\n const vendorID =\r\n saveData.responsibilities[index].responsibleContact === '%'\r\n ? saveData.responsibilities[index].responsibleProvider\r\n : saveData.responsibilities[index].responsibleContact;\r\n const respId = saveData.responsibilities[index].responsibilityIds;\r\n selectedVendors[respId] = vendorID;\r\n\r\n if (index === 0) {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n });\r\n\r\n //* Cache responsIDs\r\n responseIdCache[outcomeId] = [...respIds];\r\n\r\n //* New Table\r\n //*---------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${experienceId}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n callback: () => showExperiencesPopup({ ...saveData }, false),\r\n };\r\n //* Build Table\r\n const experiencesTable = table.build(tableOptions);\r\n experiencesTable.classList.add(`experiencesTable`);\r\n experiencesTable.classList.add('sortableTable');\r\n //* Populate Table\r\n table.populate(experiencesTable, newTableData, isSortable);\r\n\r\n const experiencesDummyTable = document.querySelector(`#experiencesTableDummy${outcomeId}`);\r\n\r\n // Make tables sortable\r\n Sortable.create(experiencesDummyTable, {\r\n handle: '.experiencesTable', // Set the handle to the table class\r\n draggable: '.experiencesTable', // Set the draggable elements to the table class\r\n onEnd: async sortData => {\r\n const experienceId = sortData.item.id.replace('experiencesTable', '');\r\n await planOutcomesAjax.updatePlanOutcomesExperienceOrder({\r\n token: $.session.Token,\r\n outcomeId: parseInt(outcomeId),\r\n experienceId: parseInt(experienceId),\r\n newPos: parseInt(sortData.newDraggableIndex),\r\n oldPos: parseInt(sortData.oldDraggableIndex),\r\n });\r\n },\r\n });\r\n\r\n //* Append Table\r\n experiencesDummyTable.appendChild(experiencesTable);\r\n const addExpTableBtn = expTableWrap.querySelector('.btn');\r\n expTableWrap.insertBefore(experiencesTable, addExpTableBtn);\r\n }\r\n async function updateOutcomeExperience(updateData, respPartysToDelete) {\r\n const newTableData = [];\r\n const outcomeId = updateData.outcomeId;\r\n const experienceIds = updateData.experienceIds;\r\n const experienceOrder = updateData.experienceOrder;\r\n const howHappened = updateData.howHappened;\r\n const whatHappened = updateData.whatHappened;\r\n\r\n //* Update Experience\r\n //*--------------------------------------------\r\n await planOutcomesAjax.updatePlanOutcomesExperience({\r\n token: $.session.Token,\r\n outcomeId,\r\n experienceIds: [experienceIds],\r\n experienceOrder: [experienceOrder],\r\n howHappened: [howHappened],\r\n whatHappened: [whatHappened],\r\n });\r\n\r\n //* Update/Insert/Delete Responsibilites\r\n //*--------------------------------------------\r\n const respData = {\r\n responsibilityIds: [],\r\n responsibleContact: [],\r\n responsibleProvider: [],\r\n whenHowOftenValue: [],\r\n whenHowOftenFrequency: [],\r\n whenHowOftenText: [],\r\n isSalesforceLocation: []\r\n };\r\n\r\n Object.entries(updateData.responsibilities).map(async ([key, resp]) => {\r\n const isRespPartyForDelete = respPartysToDelete.includes(key);\r\n if (isRespPartyForDelete) {\r\n delete updateData.responsibilities[key];\r\n\r\n if (resp.responsibilityIds) {\r\n await planOutcomesAjax.deletePlanOutcomeExperienceResponsibility({\r\n token: $.session.Token,\r\n responsibilityId: parseInt(resp.responsibilityIds),\r\n });\r\n\r\n const respId = resp.responsibilityIds;\r\n delete selectedVendors[respId];\r\n }\r\n }\r\n });\r\n Object.entries(updateData.responsibilities).map(async ([key, resp], index) => {\r\n const responsibleContact =\r\n resp.responsibleContact === '%' ? 0 : parseInt(resp.responsibleContact);\r\n const isSalesforceLocation = isSalesforceLocationTrue(resp.responsibleProvider);\r\n const responsibleProvider = resp.responsibleProvider === '%' ? 0 : resp.responsibleProvider;\r\n const whenHowOftenFrequency = parseInt(resp.whenHowOftenFrequency);\r\n const whenHowOftenValue = resp.whenHowOftenValue;\r\n const whenHowOftenText = resp.whenHowOftenText;\r\n\r\n //* push to new table data\r\n const whoResponsible = getColTextForWhoResponsible(\r\n `${responsibleContact}`,\r\n `${responsibleProvider}`,\r\n );\r\n const whenHowOften = getColTextForWhenHowOften(\r\n `${whenHowOftenFrequency}`,\r\n whenHowOftenValue,\r\n whenHowOftenText,\r\n );\r\n\r\n const vendorID =\r\n resp.responsibleContact === '%' ? resp.responsibleProvider : resp.responsibleContact;\r\n const respId = resp.responsibilityIds;\r\n selectedVendors[respId] = vendorID;\r\n\r\n if (index === 0) {\r\n newTableData.push({\r\n // id: `resp${id}`,\r\n attributes: [{ key: 'data-mainrow', value: 'true' }],\r\n values: [whatHappened, howHappened, whoResponsible, whenHowOften],\r\n });\r\n } else {\r\n newTableData.push({\r\n attributes: [{ key: 'data-mainrow', value: 'false' }],\r\n values: ['', '', whoResponsible, whenHowOften],\r\n });\r\n }\r\n //* end push\r\n\r\n // set respData *retrieve data\r\n if (resp.responsibilityIds) {\r\n const responsibilityIds = parseInt(resp.responsibilityIds);\r\n respData.responsibilityIds.push(responsibilityIds);\r\n respData.responsibleContact.push(responsibleContact);\r\n respData.responsibleProvider.push(responsibleProvider);\r\n respData.whenHowOftenFrequency.push(whenHowOftenFrequency);\r\n respData.whenHowOftenValue.push(whenHowOftenValue);\r\n respData.whenHowOftenText.push(whenHowOftenText);\r\n respData.isSalesforceLocation.push(isSalesforceLocation);\r\n } else {\r\n const respIds = await planOutcomesAjax.insertPlanOutcomeExperienceResponsibility({\r\n token: $.session.Token,\r\n experienceId: experienceIds,\r\n responsibleContact: [responsibleContact],\r\n responsibleProvider: [responsibleProvider],\r\n whenHowOftenValue: [whenHowOftenValue],\r\n whenHowOftenFrequency: [whenHowOftenFrequency],\r\n whenHowOftenText: [whenHowOftenText],\r\n isSalesforceLocation: [isSalesforceLocation]\r\n });\r\n updateData.responsibilities[key].responsibilityIds = respIds[0];\r\n }\r\n });\r\n\r\n //* Cache responsIDs\r\n responseIdCache[outcomeId] = [...respData.responsibilityIds];\r\n\r\n await planOutcomesAjax.updatePlanOutcomeExperienceResponsibility(respData);\r\n\r\n //* Build New Table\r\n //*---------------------------\r\n const tableOptions = {\r\n tableId: `experiencesTable${experienceIds}`,\r\n headline: `Experiences: In order to accomplish the outcome, what experiences does the person need to have?`,\r\n columnHeadings: [\r\n 'What needs to happen',\r\n 'How should it happen?',\r\n 'Who is responsible?',\r\n 'When / How Often?',\r\n ],\r\n sortable: false,\r\n callback: () => showExperiencesPopup({ ...updateData }, false),\r\n };\r\n //* Build Table\r\n const newExperiencesTable = table.build(tableOptions);\r\n newExperiencesTable.classList.add(`experiencesTable`);\r\n newExperiencesTable.classList.add('sortableTable');\r\n //* Populate Table\r\n table.populate(newExperiencesTable, newTableData, isSortable);\r\n //* Replace Old Table w/New Table\r\n const oldExperiencesTable = document.getElementById(`experiencesTable${experienceIds}`);\r\n oldExperiencesTable.parentNode.replaceChild(newExperiencesTable, oldExperiencesTable);\r\n }\r\n async function deleteOutcomeExperience(outcomeId, experienceId) {\r\n await planOutcomesAjax.deletePlanOutcomeExperience({\r\n token: $.session.Token,\r\n outcomeId: outcomeId,\r\n experienceId: experienceId,\r\n });\r\n\r\n if (outcomesData[outcomeId].experiences) {\r\n Object.values(outcomesData[outcomeId].experiences).forEach(exp => {\r\n Object.values(exp.responsibilities).forEach(resp => {\r\n delete selectedVendors[resp.responsibilityIds];\r\n });\r\n });\r\n }\r\n\r\n const outcomeDiv = document.querySelector(`.outcome${outcomeId}`);\r\n const expTableWrap = outcomeDiv.querySelector(`#experiencesTableDummy${outcomeId}`);\r\n const expTable = expTableWrap.querySelector(`#experiencesTable${experienceId}`);\r\n\r\n expTableWrap.removeChild(expTable);\r\n\r\n // grabs the review alert for this specific outcome\r\n const alertDiv = document.getElementById(`experienceAlert${outcomeId}`);\r\n\r\n // retrieves new data from database\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n // displays or removes alert for button depending on validationCheck\r\n planValidation.experiencesValidationCheck(validationCheck, outcomeId, alertDiv);\r\n\r\n // displays or removes alerts for tabs in the navs depending on validationCheck\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n //-- Helpers --------\r\n function getColTextForWhenHowOften(freq, value, text) {\r\n let whenHowOften = '';\r\n if (freq !== '3') {\r\n const frequency = getWhenHowOFtenFrequencyById(freq);\r\n whenHowOften = `${value} ${frequency}`;\r\n } else {\r\n whenHowOften = `${value} ${text}`;\r\n }\r\n\r\n return whenHowOften;\r\n }\r\n function getColTextForWhoResponsible(responsibleContact, responsibleProvider) {\r\n if (responsibleProvider !== '%' && responsibleProvider !== '0') {\r\n const filteredVendor = dropdownData.serviceVendors.filter(\r\n dd => dd.vendorId === responsibleProvider,\r\n );\r\n return filteredVendor.length > 0 ? filteredVendor[0].vendorName : '';\r\n } else {\r\n if (dropdownData.relationships) {\r\n const filteredRelationship = dropdownData.relationships.filter(\r\n dd => dd.contactId === responsibleContact,\r\n );\r\n return filteredRelationship.length > 0\r\n ? `${filteredRelationship[0].lastName}, ${filteredRelationship[0].firstName}`\r\n : '';\r\n }\r\n\r\n return '';\r\n }\r\n }\r\n //-- Markup ---------\r\n function toggleExperiencesPopupDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.experiencesPopup .error');\r\n const doneBtn = document.querySelector('.experiencesPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showExperiencesPopup(data, isNew) {\r\n let hasInitialErros;\r\n const saveUpdateData = {\r\n outcomeId: data.outcomeId,\r\n experienceOrder: data.experienceOrder,\r\n howHappened: data.howHappened ? data.howHappened : '',\r\n whatHappened: data.whatHappened ? data.whatHappened : '',\r\n responsibilities: {},\r\n };\r\n const respPartysToDelete = [];\r\n\r\n const experiencesPopup = POPUP.build({\r\n header: isNew ? 'Add Experience' : 'Edit Experience',\r\n classNames: 'experiencesPopup',\r\n hideX: true,\r\n });\r\n\r\n if (!isNew) {\r\n saveUpdateData.experienceIds = data.experienceIds;\r\n saveUpdateData.responsibilities = { ...data.responsibilities };\r\n experiencesPopup.classList.add('update');\r\n }\r\n\r\n //*--------------------------------\r\n //* MAIN\r\n //*--------------------------------\r\n const mainWrap = document.createElement('div');\r\n mainWrap.classList.add('experiencesPopup__main');\r\n // What Needs To Happen\r\n const whatHappenedInput = input.build({\r\n label: 'What needs to happen',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.whatHappened,\r\n charLimit: charLimits.whatNeedsToHappen,\r\n forceCharLimit: true,\r\n });\r\n whatHappenedInput.classList.add('whatHappenedInput');\r\n whatHappenedInput.addEventListener('input', e => {\r\n saveUpdateData.whatHappened = e.target.value;\r\n if (saveUpdateData.whatHappened === '') {\r\n whatHappenedInput.classList.add('error');\r\n } else {\r\n whatHappenedInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n // How Should It Happen\r\n const howHappenedInput = input.build({\r\n label: 'How should it happen?',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.howHappened,\r\n charLimit: charLimits.howItShouldHappen,\r\n forceCharLimit: true,\r\n });\r\n howHappenedInput.classList.add('howHappenedInput');\r\n howHappenedInput.addEventListener('input', e => {\r\n saveUpdateData.howHappened = e.target.value;\r\n if (saveUpdateData.howHappened === '') {\r\n howHappenedInput.classList.add('error');\r\n } else {\r\n howHappenedInput.classList.remove('error');\r\n }\r\n\r\n toggleExperiencesPopupDoneBtn();\r\n });\r\n\r\n //*--------------------------------\r\n //* RESPONSIBLE PARTY\r\n //*--------------------------------\r\n function buildResponsiblePartyInputs(saveUpdateDataRef, dataRefKey) {\r\n const inputsWrap = document.createElement('div');\r\n\r\n if (saveUpdateDataRef.responsibilityIds) {\r\n inputsWrap.id = `resp${saveUpdateDataRef.responsibilityIds}`;\r\n }\r\n\r\n //* BUILD INPUTS\r\n //*--------------------------------\r\n // Who Is Responsible\r\n const whoReponsibleWrap = document.createElement('div');\r\n const wrapHeading = document.createElement('div');\r\n whoReponsibleWrap.classList.add('whoResponsibleWrap');\r\n wrapHeading.innerHTML =\r\n '

    Who Is Responsible?

    Choose either a Responsible Person or Provider.

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

    ${text}

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

    ${prompt}

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

    ${outcomesUpdateData.outcomeOrder}

    `;\r\n // Assessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n // dropdownId: 'assessmentAreaDropdown',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n outcomesUpdateData.sectionId = selectedOption.value;\r\n await updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n\r\n assessmentPlanValidation = await planValidation.getAssessmentValidation(planId);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n // Status\r\n const statusDropdown = dropdown.build({\r\n // dropdownId: 'statusDropdown',\r\n label: 'Status',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n outcomesUpdateData.status = selectedOption.value;\r\n\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n // Carryover\r\n const carryoverInput = buildQuestion({\r\n text: 'Carryover Reason',\r\n awnser: outcomesUpdateData.carryOverReason,\r\n maxChars: charLimits.carryOverReason,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n carryoverInput.classList.add('carryoverTextInput');\r\n carryoverInput.addEventListener('input', e => {\r\n outcomesUpdateData.carryOverReason = e.target.value;\r\n if (\r\n hasPreviousPlan &&\r\n outcomesUpdateData.status === '1' &&\r\n outcomesUpdateData.carryOverReason === ''\r\n ) {\r\n carryoverInput.classList.add('error');\r\n } else {\r\n carryoverInput.classList.remove('error');\r\n }\r\n });\r\n // Outcome\r\n const outcomeInput = buildQuestion({\r\n text: 'Outcome',\r\n prompt: 'What does the person want to accomplish and why?',\r\n awnser: outcomesUpdateData.outcome,\r\n maxChars: charLimits.description,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n outcomeInput.classList.add('outcomeTextInput');\r\n outcomeInput.addEventListener('input', e => {\r\n outcomesUpdateData.outcome = e.target.value;\r\n if (outcomesUpdateData.outcome === '') {\r\n outcomeInput.classList.add('error');\r\n planValidation.updateOutcome(outcomeId, validationCheck, true);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n } else {\r\n outcomeInput.classList.remove('error');\r\n planValidation.updateOutcome(outcomeId, validationCheck, false);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n });\r\n // Details\r\n const detailsInput = buildQuestion({\r\n text: 'Details to Know',\r\n awnser: outcomesUpdateData.details,\r\n maxChars: charLimits.details,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n detailsInput.classList.add('detailsTextInput');\r\n detailsInput.addEventListener('input', e => {\r\n outcomesUpdateData.details = e.target.value;\r\n if (outcomesUpdateData.details === '') {\r\n detailsInput.classList.add('error');\r\n planValidation.updateOutcomeDetails(outcomeId, validationCheck, true);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n } else {\r\n detailsInput.classList.remove('error');\r\n planValidation.updateOutcomeDetails(outcomeId, validationCheck, false);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n }\r\n });\r\n // History\r\n const historyInput = buildQuestion({\r\n text: 'Important and Relevant History', //\r\n prompt:\r\n 'Remember to only include history that may impact a persons life, support and achievement of outcomes.',\r\n awnser: outcomesUpdateData.history,\r\n maxChars: charLimits.history,\r\n callback: e => {\r\n updateOutcome({\r\n status: outcomesUpdateData.status,\r\n carryOverReason: outcomesUpdateData.carryOverReason,\r\n\r\n outcome: outcomesUpdateData.outcome,\r\n details: outcomesUpdateData.details,\r\n history: outcomesUpdateData.history,\r\n outcomeOrder: outcomesUpdateData.outcomeOrder,\r\n outcomeId: outcomesUpdateData.outcomeId,\r\n sectionId: outcomesUpdateData.sectionId,\r\n });\r\n },\r\n });\r\n historyInput.classList.add('historyTextInput');\r\n historyInput.addEventListener('input', e => {\r\n outcomesUpdateData.history = e.target.value;\r\n\r\n // if (outcomesUpdateData.history === '') {\r\n // historyInput.classList.add('error');\r\n // } else {\r\n // historyInput.classList.remove('error');\r\n // }\r\n });\r\n\r\n // Tables\r\n const experiencesTable = buildExperiencesTables(outcomeId);\r\n const reviewTable = buildReviewsTable(outcomeId);\r\n\r\n // init required fields\r\n if (outcomesUpdateData.outcome === '') {\r\n outcomeInput.classList.add('error');\r\n }\r\n if (outcomesUpdateData.details === '') {\r\n detailsInput.classList.add('error');\r\n }\r\n // if (outcomesUpdateData.history === '') {\r\n // historyInput.classList.add('error');\r\n // }\r\n if (\r\n hasPreviousPlan &&\r\n outcomesUpdateData.status === '1' &&\r\n outcomesUpdateData.carryOverReason === ''\r\n ) {\r\n carryoverInput.classList.add('error');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n deleteOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n // outcome assemble!\r\n const topRow = document.createElement('div');\r\n topRow.classList.add('outcomeToprow');\r\n topRow.appendChild(orderDiv);\r\n topRow.appendChild(assessmentAreaDropdown);\r\n topRow.appendChild(statusDropdown);\r\n outcome.appendChild(topRow);\r\n outcome.appendChild(carryoverInput);\r\n outcome.appendChild(outcomeInput);\r\n outcome.appendChild(detailsInput);\r\n outcome.appendChild(experiencesTable);\r\n outcome.appendChild(reviewTable);\r\n outcome.appendChild(historyInput);\r\n outcome.appendChild(deleteOutcomeBtn);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, outcomesUpdateData.sectionId);\r\n populateStatusDropdown(statusDropdown, outcomesUpdateData.status);\r\n\r\n return outcome;\r\n }\r\n function getMarkup() {\r\n const outcomesDataValues = Object.values(outcomesData);\r\n\r\n outcomesWrap = document.createElement('div');\r\n outcomesWrap.classList.add('planOutcomes');\r\n\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Outcomes';\r\n heading.classList.add('sectionHeading');\r\n outcomesWrap.appendChild(heading);\r\n\r\n // outcome summary\r\n outcomesProgressSummary = buildQuestion({\r\n text: 'Summary of Progress Outcomes:',\r\n prompt: 'Share accomplishments, progress, how success is to be celebrated.',\r\n awnser: progressSummary,\r\n maxChars: 2500,\r\n callback: e => {\r\n progressSummary = e.target.value;\r\n checkIfSummaryRequired();\r\n const textForSave = e.target.value;\r\n planOutcomesAjax.updatePlanOutcomeProgressSummary({\r\n token: $.session.Token,\r\n progressSummary: textForSave,\r\n progressSummaryId: progressSummaryId,\r\n });\r\n\r\n if ((e.target.value === '') && (validationCheck.outcomesData.planOutcome.length > 0)) {\r\n validationCheck.planProgressSummary = false;\r\n } else {\r\n validationCheck.planProgressSummary = true;\r\n }\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n },\r\n });\r\n outcomesProgressSummary.classList.add('summaryOutcomesTextInput');\r\n outcomesWrap.appendChild(outcomesProgressSummary);\r\n\r\n // add outcome\r\n addOutcomeBtn = button.build({\r\n text: 'Add Outcome',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addRowBtn',\r\n callback: async () => {\r\n const outcomes = [...document.querySelectorAll('.outcome')];\r\n const outcomeOrder = outcomes.length + 1;\r\n\r\n const outcomeId = await insertOutcome({\r\n outcome: '',\r\n details: '',\r\n history: '',\r\n sectionId: '',\r\n status: '0',\r\n carryOverReason: '',\r\n assessmentId: planId,\r\n outcomeOrder: 0, //need this to keep from first one defaulting to 2\r\n });\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n planValidation.updatedIspOutcomesSetAlerts(validationCheck);\r\n\r\n const outcome = buildOutcome({ outcomeId, outcomeOrder, status: '0' });\r\n outcomesWrap.insertBefore(outcome, addOutcomeBtn);\r\n checkIfSummaryRequired();\r\n },\r\n });\r\n outcomesWrap.appendChild(addOutcomeBtn);\r\n if (isReadOnly) {\r\n addOutcomeBtn.classList.add('disabled');\r\n }\r\n\r\n // load existing outcomes\r\n if (outcomesDataValues.length > 0) {\r\n const sortedOutcomes = sortOutcomesByOrder(outcomesDataValues);\r\n sortedOutcomes.forEach(pyid => {\r\n const outcome = buildOutcome(pyid);\r\n outcomesWrap.insertBefore(outcome, addOutcomeBtn);\r\n });\r\n if (progressSummary === '') {\r\n outcomesProgressSummary.classList.add('error');\r\n }\r\n }\r\n\r\n return outcomesWrap;\r\n }\r\n\r\n async function init(data) {\r\n // data = { planId, readOnly }\r\n planId = data.planId;\r\n isReadOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('outcomes');\r\n\r\n if (!$.session.planUpdate) {\r\n isSortable = false;\r\n } else {\r\n isSortable = isReadOnly ? false : true;\r\n }\r\n\r\n validationCheck = await planValidation.ISPValidation(planId);\r\n\r\n const planOutcomesData = validationCheck.outcomesData;\r\n\r\n if (\r\n !planOutcomesData.planProgressSummary ||\r\n planOutcomesData.planProgressSummary.length === 0\r\n ) {\r\n let summaryId = await planOutcomesAjax.insertPlanOutcomeProgressSummary({\r\n token: $.session.Token,\r\n planId: parseInt(planId),\r\n progressSummary: '',\r\n });\r\n summaryId = summaryId.split(':');\r\n summaryId = summaryId[1];\r\n summaryId = summaryId.replace('}]', '').replace('\"', '');\r\n\r\n progressSummary = '';\r\n progressSummaryId = summaryId;\r\n } else {\r\n progressSummary = planOutcomesData.planProgressSummary[0].progressSummary;\r\n progressSummaryId = planOutcomesData.planProgressSummary[0].progressSummaryId;\r\n }\r\n\r\n dropdownData = planData.getDropdownData();\r\n outcomesData = mapOutcomesDetails(planOutcomesData);\r\n hasPreviousPlan = plan.getHasPreviousPlans();\r\n\r\n const ddData = dropdownData.serviceVendors.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n const { getPlanOutcomesPaidSupportProvidersResult: selectedVendors } =\r\n await planOutcomesAjax.getPlanOutcomesPaidSupportProviders(planId);\r\n\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.vendorId);\r\n return acc;\r\n }, []);\r\n }\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const paidSupportData = ddData.filter(provider => selectedVendorIds.includes(provider.value));\r\n\r\n validationCheck.paidSupportsProviders = paidSupportData;\r\n\r\n return validationCheck;\r\n }\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n showAddNewOutcomePopup,\r\n refreshDropdownData,\r\n getSelectedVendors,\r\n };\r\n})();\r\n","const planOutcomesAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getPlanSpecificOutcomes(retrieveData) {\r\n // string token, string assessmentId, integer targetAssessmentVersionId\r\n retrieveData.targetAssessmentVersionId = 0;\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanSpecificOutcomes/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanSpecificOutcomesResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function getPlanOutcomesPaidSupportProviders(assessmentId) {\r\n try {\r\n const result = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanOutcomesPaidSupportProviders/',\r\n data: JSON.stringify({\r\n assessmentId: assessmentId,\r\n \r\n }),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n return result;\r\n } catch (error) {\r\n throw new Error(error.responseText);\r\n }\r\n }\r\n\r\n // INSERT\r\n //------------------------------------\r\n async function insertPlanOutcomeProgressSummary(retrieveData) {\r\n // will return progress summary id\r\n // string token,\r\n // integer planId,\r\n // string progressSummary\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcome(retrieveData) {\r\n // string token,\r\n // string assessmentId,\r\n // string outcome,\r\n // string details,\r\n // string history,\r\n // string sectionId,\r\n // string outcomeOrder\r\n // int status,\r\n // string carryOverReason\r\n\r\n retrieveData.status = parseInt(retrieveData.status);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomesExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string[] howHappened,\r\n // string[] whatHappened,\r\n // string[] experienceOrder\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomesExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomesExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomeExperienceResponsibility(retrieveData) {\r\n // string token,\r\n // string experienceId,\r\n // int[] responsibleContact,\r\n // int[] responsibleProvider,\r\n // int[] whenHowOftenFrequency,\r\n // string[] whenHowOftenValue,\r\n // string[] whenHowOftenText,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function insertPlanOutcomesReview(retrieveData) {\r\n // long outcomeId,\r\n // string[] whatWillHappen,\r\n // string[] whenToCheckIn,\r\n // string[] whoReview,\r\n // string[] reviewOrder\r\n // integer[] contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanOutcomesReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanOutcomesReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // UPDATE\r\n //------------------------------------\r\n async function updatePlanOutcomeProgressSummary(retrieveData) {\r\n // string token,\r\n // integer progressSummaryId,\r\n // string progressSummary\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcome(retrieveData) {\r\n // string token,\r\n // string assessmentId,\r\n // string outcomeId, (new)\r\n // string sectionId,\r\n // string outcome,\r\n // string details,\r\n // string history,\r\n // int status,\r\n // string carryOverReason\r\n\r\n retrieveData.status = parseInt(retrieveData.status);\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string[] experienceIds,\r\n // string[] howHappened,\r\n // string[] whatHappened,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomeExperienceResponsibility(retrieveData) {\r\n // int[] responsibilityIds,\r\n // int[] responsibleContact,\r\n // int[] responsibleProvider,\r\n // string[] whenHowOftenValue,\r\n // int[] whenHowOftenFrequency,\r\n // string[] whenHowOftenText,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesReview(retrieveData) {\r\n // long outcomeId,\r\n // string[] reviewIds,\r\n // string[] whatWillHappen,\r\n // string[] whenToCheckIn,\r\n // string[] whoReview,\r\n // integer[] contactId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // DELETE\r\n //------------------------------------\r\n async function deletePlanOutcomeProgressSummary(retrieveData) {\r\n // string token,\r\n // integer progressSummaryId,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeProgressSummary/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeProgressSummaryResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcome(retrieveData) {\r\n // string token,\r\n // string outcomeId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcome/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeExperience(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string experienceId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeExperience/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeExperienceResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeExperienceResponsibility(retrieveData) {\r\n // string token,\r\n // string responsibilityId,\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeExperienceResponsibility/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeExperienceResponsibilityResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function deletePlanOutcomeReview(retrieveData) {\r\n // string token,\r\n // string outcomeId,\r\n // string reviewId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanOutcomeReview/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanOutcomeReviewResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // row re-order\r\n //------------------\r\n async function updatePlanOutcomesOrder(retrieveData) {\r\n // string token,\r\n // integer planId,\r\n // integer outcomeId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updateOutcomesReviewOrder(retrieveData) {\r\n // string token,\r\n // integer outcomeId,\r\n // integer reviewId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesReviewOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesReviewOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n async function updatePlanOutcomesExperienceOrder(retrieveData) {\r\n // string token,\r\n // integer outcomeId,\r\n // integer experienceId\r\n // integer newPos,\r\n // integer oldPos\r\n\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanOutcomesExperienceOrder/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanOutcomesExperienceOrderResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getPlanOutcomesPaidSupportProviders,\r\n getPlanSpecificOutcomes,\r\n insertPlanOutcome,\r\n insertPlanOutcomesExperience,\r\n insertPlanOutcomeExperienceResponsibility,\r\n insertPlanOutcomesReview,\r\n updatePlanOutcome,\r\n updatePlanOutcomesExperience,\r\n updatePlanOutcomeExperienceResponsibility,\r\n updatePlanOutcomesReview,\r\n deletePlanOutcome,\r\n deletePlanOutcomeExperience,\r\n deletePlanOutcomeReview,\r\n deletePlanOutcomeExperienceResponsibility,\r\n updateOutcomesReviewOrder,\r\n updatePlanOutcomesExperienceOrder,\r\n deletePlanOutcomeProgressSummary,\r\n updatePlanOutcomeProgressSummary,\r\n insertPlanOutcomeProgressSummary,\r\n updatePlanOutcomesOrder,\r\n };\r\n})();\r\n","const planRestrictiveMeasures = (() => {\r\n let readOnly;\r\n let planId; // aka: assessmentId\r\n let rmData;\r\n let rmDataArray;\r\n // DOM\r\n let rmMainWrap;\r\n let addSectionBtn;\r\n // OTHER\r\n let charLimits;\r\n\r\n //*------------------------------------------------------\r\n //* UTIL\r\n //*------------------------------------------------------\r\n async function updateRMResponse(sectionData) {\r\n // const data = {\r\n // token: $.session.Token,\r\n // informedConsentId: rmData.rmID,\r\n // rmIdentified: rmData.rmIdentified,\r\n // rmHRCDate: rmData.rmHRCDate,\r\n // rmKeepSelfSafe: rmData.rmKeepSelfSafe,\r\n // rmFadeRestriction: rmData.rmFadeRestriction,\r\n // rmOtherWayHelpGood: rmData.rmOtherWayHelpGood,\r\n // rmOtherWayHelpBad: rmData.rmOtherWayHelpBad,\r\n // rmWhatCouldHappenGood: rmData.rmWhatCouldHappenGood,\r\n // rmWhatCouldHappenBad: rmData.rmWhatCouldHappenBad,\r\n // };\r\n const res = await restrictiveMeasuresAjax.updatePlanRestrictiveMeasures(sectionData);\r\n }\r\n\r\nasync function deleteRMData(rmId) {\r\n const data = {\r\n token: $.session.Token,\r\n informedConsentId: rmId,\r\n };\r\n const res = await restrictiveMeasuresAjax.deletePlanRestrictiveMeasures(data);\r\n}\r\n\r\nasync function toggleRestrictiveMeasureQuestionsVisiblity(show) {\r\n //const add = document.querySelector('.addSectionBtn');\r\n \r\n if (show) {\r\n addSectionBtn.style.display = 'block';\r\n\r\n if (rmDataArray.length === 0) {\r\n restrictiveMeasuresSectionID = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n\r\n const newSection = createNewSection(null, false, restrictiveMeasuresSectionID.informedConsentId);\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n } else {\r\n rmDataArray.forEach((rmData, index) => {\r\n const isFirstSection = index === 0;\r\n const newSection = createNewSection(rmData, isFirstSection);\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n });\r\n }\r\n } else {\r\n const rmSections = document.querySelectorAll('.restrictiveMeasureContainer');\r\n rmSections.forEach((section, index) => {\r\n if (index === 0) {\r\n section.style.display = 'none';\r\n } else {\r\n section.remove();\r\n }\r\n });\r\n rmDataArray.forEach((rmData) => {\r\n deleteRMData(rmData.informedConsentId);\r\n });\r\n addSectionBtn.style.display = 'none';\r\n }\r\n}\r\n\r\n //*------------------------------------------------------\r\n //* RESTRICTIVE MEASURE QUESTIONS\r\n //*------------------------------------------------------\r\n function buildRestrictiveMeasureQuestions(sectionData) {\r\n const rmQuestionSection = document.createElement('div');\r\n rmQuestionSection.classList.add('rmQuestionSection');\r\n\r\n //* HRC APPROVAL DATE\r\n //*------------------------------------\r\n const rmHrcApprovalDate = input.build({\r\n label: 'Date of HRC Approval',\r\n type: 'date',\r\n value: UTIL.formatDateToIso(sectionData.rmHRCDate.split(' ')[0]),\r\n readonly: readOnly,\r\n });\r\n rmHrcApprovalDate.style.maxWidth = '200px';\r\n //* RM_KEEP_SELF_SAFE\r\n //*------------------------------------\r\n const rmKeepSelfSafeQuestion = document.createElement('div');\r\n const rmKeepSelfSafeQuestionText = document.createElement('p');\r\n rmKeepSelfSafeQuestionText.style.marginBottom = '7px';\r\n rmKeepSelfSafeQuestionText.innerText =\r\n 'What help do I need to keep myself safe? (describe restrictive strategies and why they are needed)';\r\n const rmKeepSelfSafeQuestionResp = input.build({\r\n type: 'textarea',\r\n value: sectionData.rmKeepSelfSafe,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmKeepSelfSafe,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmKeepSelfSafeQuestion.appendChild(rmKeepSelfSafeQuestionText);\r\n rmKeepSelfSafeQuestion.appendChild(rmKeepSelfSafeQuestionResp);\r\n //* RM_FADE_RESTRICTION\r\n //*------------------------------------\r\n const rmFadeRestrictionQuestion = document.createElement('div');\r\n const rmFadeRestrictionQuestionText = document.createElement('p');\r\n rmFadeRestrictionQuestionText.style.marginBottom = '7px';\r\n rmFadeRestrictionQuestionText.innerText =\r\n 'What is the plan to ensure the restriction is temporary in nature?';\r\n const rmFadeRestrictionQuestionResp = input.build({\r\n type: 'textarea',\r\n value: sectionData.rmFadeRestriction,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmFadeRestriction,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmFadeRestrictionQuestion.appendChild(rmFadeRestrictionQuestionText);\r\n rmFadeRestrictionQuestion.appendChild(rmFadeRestrictionQuestionResp);\r\n //* RM_WHAT_COULD_HAPPEN(GOOD/BAD)\r\n //*------------------------------------\r\n const rmWhatCouldHappenQuestion = document.createElement('div');\r\n const rmWhatCouldHappenQuestionText = document.createElement('p');\r\n rmWhatCouldHappenQuestionText.style.marginBottom = '10px';\r\n rmWhatCouldHappenQuestionText.innerText = 'What could happen if I allow this help?';\r\n const rmWhatCouldHappenQuestionContainer = document.createElement('div');\r\n rmWhatCouldHappenQuestionContainer.classList.add('isp_ic_rmQuestionGroup');\r\n const rmWhatCouldHappenQuestionGoodResp = input.build({\r\n type: 'textarea',\r\n label: 'Good',\r\n value: sectionData.rmWhatCouldHappenGood,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmWhatCouldHappenGood,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n const rmWhatCouldHappenQuestionBadResp = input.build({\r\n type: 'textarea',\r\n label: 'Bad',\r\n value: sectionData.rmWhatCouldHappenBad,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmWhatCouldHappenBad,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmWhatCouldHappenQuestionContainer.appendChild(rmWhatCouldHappenQuestionGoodResp);\r\n rmWhatCouldHappenQuestionContainer.appendChild(rmWhatCouldHappenQuestionBadResp);\r\n rmWhatCouldHappenQuestion.appendChild(rmWhatCouldHappenQuestionText);\r\n rmWhatCouldHappenQuestion.appendChild(rmWhatCouldHappenQuestionContainer);\r\n //* RM_OTHER_WAY_HELP(GOOD/BAD)\r\n //*------------------------------------\r\n const rmOtherWayHelpQuestion = document.createElement('div');\r\n const rmOtherWayHelpQuestionText = document.createElement('p');\r\n rmOtherWayHelpQuestionText.style.marginBottom = '10px';\r\n rmOtherWayHelpQuestionText.innerText = `If I don't allow this help, what other ways help me be safe?`;\r\n const rmOtherWayHelpQuestionContainer = document.createElement('div');\r\n rmOtherWayHelpQuestionContainer.classList.add('isp_ic_rmQuestionGroup');\r\n const rmOtherWayHelpQuestionGoodResp = input.build({\r\n type: 'textarea',\r\n label: 'Good things about these other options',\r\n value: sectionData.rmOtherWayHelpGood,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmOtherWayHelpGood,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n const rmOtherWayHelpQuestionBadResp = input.build({\r\n type: 'textarea',\r\n label: 'Bad things about these other options',\r\n value: sectionData.rmOtherWayHelpBad,\r\n readonly: readOnly,\r\n charLimit: charLimits.rmOtherWayHelpBad,\r\n forceCharLimit: true,\r\n classNames: 'autosize',\r\n });\r\n rmOtherWayHelpQuestionContainer.appendChild(rmOtherWayHelpQuestionGoodResp);\r\n rmOtherWayHelpQuestionContainer.appendChild(rmOtherWayHelpQuestionBadResp);\r\n rmOtherWayHelpQuestion.appendChild(rmOtherWayHelpQuestionText);\r\n rmOtherWayHelpQuestion.appendChild(rmOtherWayHelpQuestionContainer);\r\n\r\n //* Required Fields\r\n //*------------------------------------\r\n if (sectionData.rmHRCDate === '') {\r\n rmHrcApprovalDate.classList.add('error');\r\n }\r\n if (sectionData.rmKeepSelfSafe === '') {\r\n rmKeepSelfSafeQuestionResp.classList.add('error');\r\n }\r\n if (sectionData.rmFadeRestriction === '') {\r\n rmFadeRestrictionQuestionResp.classList.add('error');\r\n }\r\n if (sectionData.rmWhatCouldHappenGood === '') {\r\n rmWhatCouldHappenQuestionGoodResp.classList.add('error');\r\n }\r\n if (sectionData.rmWhatCouldHappenBad === '') {\r\n rmWhatCouldHappenQuestionBadResp.classList.add('error');\r\n }\r\n if (sectionData.rmOtherWayHelpGood === '') {\r\n rmOtherWayHelpQuestionGoodResp.classList.add('error');\r\n }\r\n if (sectionData.rmOtherWayHelpBad === '') {\r\n rmOtherWayHelpQuestionBadResp.classList.add('error');\r\n }\r\n\r\n //* Event Setup\r\n //*------------------------------------\r\n // HRC APPROVAL DATE\r\n rmHrcApprovalDate.addEventListener('change', event => {\r\n sectionData.rmHRCDate = event.target.value;\r\n if (event.target.value !== '') {\r\n rmHrcApprovalDate.classList.remove('error');\r\n } else {\r\n rmHrcApprovalDate.classList.add('error');\r\n }\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_KEEP_SELF_SAFE\r\n rmKeepSelfSafeQuestionResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmKeepSelfSafeQuestionResp.classList.remove('error');\r\n } else {\r\n rmKeepSelfSafeQuestionResp.classList.add('error');\r\n }\r\n });\r\n rmKeepSelfSafeQuestionResp.addEventListener('focusout', event => {\r\n sectionData.rmKeepSelfSafe = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_FADE_RESTRICTION\r\n rmFadeRestrictionQuestionResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmFadeRestrictionQuestionResp.classList.remove('error');\r\n } else {\r\n rmFadeRestrictionQuestionResp.classList.add('error');\r\n }\r\n });\r\n rmFadeRestrictionQuestionResp.addEventListener('focusout', event => {\r\n sectionData.rmFadeRestriction = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_WHAT_COULD_HAPPEN GOOD\r\n rmWhatCouldHappenQuestionGoodResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmWhatCouldHappenQuestionGoodResp.classList.remove('error');\r\n } else {\r\n rmWhatCouldHappenQuestionGoodResp.classList.add('error');\r\n }\r\n });\r\n rmWhatCouldHappenQuestionGoodResp.addEventListener('focusout', event => {\r\n sectionData.rmWhatCouldHappenGood = event.target.value;\r\n const test = sectionData;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_WHAT_COULD_HAPPEN BAD\r\n rmWhatCouldHappenQuestionBadResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmWhatCouldHappenQuestionBadResp.classList.remove('error');\r\n } else {\r\n rmWhatCouldHappenQuestionBadResp.classList.add('error');\r\n }\r\n });\r\n rmWhatCouldHappenQuestionBadResp.addEventListener('focusout', event => {\r\n sectionData.rmWhatCouldHappenBad = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_OTHER_WAY_HELP GOOD\r\n rmOtherWayHelpQuestionGoodResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmOtherWayHelpQuestionGoodResp.classList.remove('error');\r\n } else {\r\n rmOtherWayHelpQuestionGoodResp.classList.add('error');\r\n }\r\n });\r\n rmOtherWayHelpQuestionGoodResp.addEventListener('focusout', event => {\r\n sectionData.rmOtherWayHelpGood = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n // RM_OTHER_WAY_HELP BAD\r\n rmOtherWayHelpQuestionBadResp.addEventListener('input', event => {\r\n if (event.target.value !== '') {\r\n rmOtherWayHelpQuestionBadResp.classList.remove('error');\r\n } else {\r\n rmOtherWayHelpQuestionBadResp.classList.add('error');\r\n }\r\n });\r\n rmOtherWayHelpQuestionBadResp.addEventListener('focusout', event => {\r\n sectionData.rmOtherWayHelpBad = event.target.value;\r\n updateRMResponse(sectionData);\r\n });\r\n\r\n //* Build It\r\n //*------------------------------------\r\n rmQuestionSection.appendChild(rmHrcApprovalDate);\r\n rmQuestionSection.appendChild(rmKeepSelfSafeQuestion);\r\n rmQuestionSection.appendChild(rmFadeRestrictionQuestion);\r\n rmQuestionSection.appendChild(rmWhatCouldHappenQuestion);\r\n rmQuestionSection.appendChild(rmOtherWayHelpQuestion);\r\n\r\n return rmQuestionSection;\r\n}\r\n\r\n\r\n //*------------------------------------------------------\r\n //* TOGGLE QUESTION\r\n //*------------------------------------------------------\r\n //* question that decides if RM questions are visible\r\n //*------------------------------------------------------\r\n function buildToggleQuestions() {\r\n const rmSection = document.createElement('div');\r\n rmSection.classList.add('rmToggleSection');\r\n\r\n //Restriction Identified (YES SHOWS REST OF RM QUESTIONS)\r\n const rmRestrictionsIdentifiedQuestion = document.createElement('div');\r\n rmRestrictionsIdentifiedQuestion.classList.add('ic_questionContainer');\r\n\r\n const rmRestrictionsIdentifiedQuestionText = document.createElement('p');\r\n rmRestrictionsIdentifiedQuestionText.innerText =\r\n 'Were restrictions identified during the planning process?';\r\n rmRestrictionsIdentifiedQuestion.appendChild(rmRestrictionsIdentifiedQuestionText);\r\n\r\n //Radio Container\r\n const rmRestrictionsIdentifiedRadioContainer = document.createElement('div');\r\n rmRestrictionsIdentifiedRadioContainer.classList.add('ic_questionRadioContainer');\r\n //Radios\r\n const rmRestrictionsIdentifiedYesRadio = input.buildRadio({\r\n id: 'RM_Identified-yes',\r\n text: 'Yes',\r\n name: 'CS_Identified',\r\n isChecked: rmData.rmIdentified === 'Y',\r\n isDisabled: readOnly,\r\n callback: () => {\r\n rmData.rmIdentified = 'Y';\r\n updateRMResponse(rmData);\r\n toggleRestrictiveMeasureQuestionsVisiblity(true);\r\n rmRestrictionsIdentifiedRadioContainer.classList.remove('error');\r\n DOM.autosizeTextarea();\r\n },\r\n });\r\n const rmRestrictionsIdentifiedNoRadio = input.buildRadio({\r\n id: 'CS_Identified-no',\r\n text: 'No',\r\n name: 'CS_Identified',\r\n isChecked: rmData.rmIdentified === 'N',\r\n isDisabled: readOnly,\r\n callback: () => {\r\n if (rmData.rmIdentified === 'Y') {\r\n UTIL.warningPopup({\r\n message:\r\n 'Changing this question to NO will result in the restrictive measure question responses to be cleared. Do you want to proceed?',\r\n hideX: true,\r\n accept: {\r\n text: 'Yes',\r\n callback: () => {\r\n rmData.rmIdentified = 'N';\r\n rmData.rmHRCDate = '';\r\n rmData.rmKeepSelfSafe = '';\r\n rmData.rmFadeRestriction = '';\r\n rmData.rmOtherWayHelpGood = '';\r\n rmData.rmOtherWayHelpBad = '';\r\n rmData.rmWhatCouldHappenGood = '';\r\n rmData.rmWhatCouldHappenBad = '';\r\n updateRMResponse(rmData);\r\n toggleRestrictiveMeasureQuestionsVisiblity(false);\r\n\r\n // Delete data for all items in the rmDataArray\r\n rmDataArray.forEach(rmItem => {\r\n deleteRMData(rmItem.informedConsentId);\r\n });\r\n },\r\n },\r\n reject: {\r\n text: 'No',\r\n callback: () => {\r\n document.getElementById('RM_Identified-yes').checked = true;\r\n },\r\n },\r\n });\r\n } else {\r\n rmData.rmIdentified = 'N';\r\n updateRMResponse(sectionData);\r\n }\r\n\r\n rmRestrictionsIdentifiedRadioContainer.classList.remove('error');\r\n },\r\n });\r\n\r\n if (rmData.rmIdentified === '') {\r\n rmRestrictionsIdentifiedRadioContainer.classList.add('error');\r\n }\r\n rmRestrictionsIdentifiedRadioContainer.appendChild(rmRestrictionsIdentifiedYesRadio);\r\n rmRestrictionsIdentifiedRadioContainer.appendChild(rmRestrictionsIdentifiedNoRadio);\r\n\r\n rmRestrictionsIdentifiedQuestion.appendChild(rmRestrictionsIdentifiedRadioContainer);\r\n rmSection.appendChild(rmRestrictionsIdentifiedQuestion);\r\n\r\n return rmSection;\r\n }\r\n\r\n function createNewSection(rmData, isFirstSection, insertedRMID) {\r\n // Create a new section container\r\n const newSection = document.createElement('div');\r\n newSection.classList.add('restrictiveMeasureContainer');\r\n\r\n const sectionData = {\r\n token: $.session.Token,\r\n informedConsentId: rmData?.informedConsentId || insertedRMID.informedConsentId,\r\n rmIdentified: 'Y',\r\n rmHRCDate: rmData?.rmHRCDate || '',\r\n rmKeepSelfSafe: rmData?.rmKeepSelfSafe || '',\r\n rmFadeRestriction: rmData?.rmFadeRestriction || '',\r\n rmWhatCouldHappenGood: rmData?.rmWhatCouldHappenGood || '',\r\n rmWhatCouldHappenBad: rmData?.rmWhatCouldHappenBad || '',\r\n rmOtherWayHelpGood: rmData?.rmOtherWayHelpGood || '',\r\n rmOtherWayHelpBad: rmData?.rmOtherWayHelpBad || ''\r\n }; \r\n\r\n // Attach the section data to the section element\r\n newSection.sectionData = sectionData;\r\n\r\n // Create restrictive measure questions for the new section\r\n const rmQuestions = buildRestrictiveMeasureQuestions(sectionData);\r\n newSection.appendChild(rmQuestions);\r\n\r\n if (!isFirstSection) {\r\n const deleteButton = button.build({\r\n text: 'Delete Restrictive Measure',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'deleteSectionBtn',\r\n callback: () => {\r\n deleteRMData(newSection.sectionData.informedConsentId);\r\n newSection.remove();\r\n }\r\n });\r\n newSection.appendChild(deleteButton);\r\n }\r\n\r\n // Return the new section\r\n return newSection;\r\n }\r\n\r\nfunction createAddSectionButton() {\r\n return button.build({\r\n text: 'Add Restrictive Measure',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: 'addSectionBtn',\r\n callback: async () => {\r\n restrictiveMeasuresSectionID = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId\r\n });\r\n\r\n const newSection = createNewSection(null, false, restrictiveMeasuresSectionID);\r\n\r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n\r\n // Append the button to rmMainWrap if it doesn't exist\r\n if (!rmMainWrap.querySelector('.addSectionBtn')) {\r\n const addSectionBtn = createAddSectionButton();\r\n rmMainWrap.appendChild(addSectionBtn);\r\n }\r\n }\r\n });\r\n}\r\n\r\n //*------------------------------------------------------\r\n //* MAIN\r\n //*------------------------------------------------------\r\n function getMarkup() {\r\n // Section\r\n rmMainWrap = document.createElement('div');\r\n rmMainWrap.classList.add('ispRestrictiveMeasures');\r\n\r\n // Heading\r\n const heading = document.createElement('h2');\r\n heading.innerHTML = 'Restrictive Measures';\r\n heading.classList.add('sectionHeading');\r\n heading.style.marginBottom = '6px';\r\n rmMainWrap.appendChild(heading);\r\n\r\n // Toggle Question\r\n const toggleQuestion = buildToggleQuestions();\r\n rmMainWrap.appendChild(toggleQuestion);\r\n\r\n addSectionBtn = createAddSectionButton();\r\n rmMainWrap.appendChild(addSectionBtn);\r\n addSectionBtn.style.display = 'none';\r\n\r\n if (rmData.rmIdentified === 'Y') {\r\n addSectionBtn.style.display = 'block';\r\n // Create sections for each data entry\r\n rmDataArray.forEach((rmData, index) => {\r\n const isFirstSection = index === 0;\r\n const newSection = createNewSection(rmData, isFirstSection);\r\n \r\n rmMainWrap.insertBefore(newSection, addSectionBtn);\r\n });\r\n }\r\n\r\n return rmMainWrap;\r\n}\r\n\r\n async function init(data) {\r\n planId = data.planId;\r\n readOnly = data.readOnly;\r\n charLimits = planData.getISPCharacterLimits('restrictiveMeasures');\r\n let stuff;\r\n\r\n rmDataArray = await restrictiveMeasuresAjax.getPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n\r\n if (rmDataArray.length === 0) {\r\n stuff = await restrictiveMeasuresAjax.insertPlanRestrictiveMeasures({\r\n token: $.session.Token,\r\n assessmentId: planId,\r\n });\r\n }\r\n\r\n if (!Array.isArray(rmDataArray) || rmDataArray.length === 0) {\r\n rmData = [{\r\n token: $.session.Token,\r\n informedConsentId: stuff ? stuff.informedConsentId : '',\r\n rmIdentified: '',\r\n rmHRCDate: '',\r\n rmKeepSelfSafe: '',\r\n rmFadeRestriction: '',\r\n rmOtherWayHelpGood: '',\r\n rmOtherWayHelpBad: '',\r\n rmWhatCouldHappenGood: '',\r\n rmWhatCouldHappenBad: '',\r\n }];\r\n } else {\r\n const firstElement = rmDataArray[0];\r\n rmData = {\r\n token: $.session.Token,\r\n informedConsentId: firstElement.informedConsentId,\r\n rmIdentified: firstElement.rmIdentified === '' || firstElement.rmIdentified === 'N' ? 'N' : 'Y',\r\n rmHRCDate: firstElement.rmHRCDate,\r\n rmKeepSelfSafe: firstElement.rmKeepSelfSafe,\r\n rmFadeRestriction: firstElement.rmFadeRestriction,\r\n rmOtherWayHelpGood: firstElement.rmOtherWayHelpGood,\r\n rmOtherWayHelpBad: firstElement.rmOtherWayHelpBad,\r\n rmWhatCouldHappenGood: firstElement.rmWhatCouldHappenGood,\r\n rmWhatCouldHappenBad: firstElement.rmWhatCouldHappenBad,\r\n };\r\n }\r\n}\r\n\r\n return {\r\n init,\r\n getMarkup,\r\n };\r\n})();\r\n","const restrictiveMeasuresAjax = (() => {\r\n // GET\r\n //------------------------------------\r\n async function getPlanRestrictiveMeasures(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/getPlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.getPlanRestrictiveMeasuresResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Insert\r\n //--------------------------------------\r\n async function insertPlanRestrictiveMeasures(retrieveData) {\r\n // string token, string assessmentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/insertPlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.insertPlanRestrictiveMeasuresResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n // Update\r\n //--------------------------------------\r\n async function updatePlanRestrictiveMeasures(retrieveData) {\r\n /* string token, string informedConsentId, string rmIdentified, \r\n string rmHRCDate, string rmKeepSelfSafe, string rmFadeRestriction, \r\n string rmOtherWayHelpGood, string rmOtherWayHelpBad, \r\n string rmWhatCouldHappenGood, string rmWhatCouldHappenBad\r\n */\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/updatePlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.updatePlanRestrictiveMeasuresResult;\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n async function deletePlanRestrictiveMeasures(retrieveData) {\r\n // string token, string informedConsentId\r\n try {\r\n const data = await $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol +\r\n '://' +\r\n $.webServer.address +\r\n ':' +\r\n $.webServer.port +\r\n '/' +\r\n $.webServer.serviceName +\r\n '/deletePlanRestrictiveMeasures/',\r\n data: JSON.stringify(retrieveData),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json',\r\n });\r\n\r\n return data.deletePlanRestrictiveMeasuresResult[0];\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n return {\r\n getPlanRestrictiveMeasures,\r\n insertPlanRestrictiveMeasures,\r\n updatePlanRestrictiveMeasures,\r\n deletePlanRestrictiveMeasures\r\n };\r\n})();\r\n","const servicesSupports = (() => {\r\n let isReadOnly;\r\n let isSortable;\r\n let planID; // aka: assessmentId\r\n let modificationsId;\r\n let servicesSupportsData; // data\r\n let dropdownData;\r\n let selectedVendors = [];\r\n let selectedFundingSources = [];\r\n let hasPaidSupports;\r\n\r\n let paidSupportsTable;\r\n let additionalSupportsTable;\r\n let professionalReferralsTable;\r\n\r\n let enableMultiEdit = false;\r\n let selectedPaidSupportIds = [];\r\n let selectedPaidSupportRows = [];\r\n let multiEditBtn;\r\n let multiEditUpdateBtn;\r\n let multiEditCancelBtn;\r\n\r\n let fundingSourceDropdownSelectedText;\r\n let servicesDropdownSelectedText;\r\n let servicesOtherDropdownSelectedText;\r\n let providerDropdownSelectedText;\r\n\r\n let hcbsSelected;\r\n let saveUpdateProvider = '';\r\n\r\n let charLimits;\r\n\r\n // UTILS\r\n //------------------------------------------------------\r\n function refreshDropdownData(newDropdownData) {\r\n dropdownData = newDropdownData;\r\n }\r\n function mapPaidSupportDataForTable(ps) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const providerId = ps.providerId;\r\n const serviceNameId = ps.serviceNameId;\r\n const serviceNameOther = ps.serviceNameOther;\r\n const scopeOfService = ps.scopeOfService ? ps.scopeOfService : ps.scopeOfservice;\r\n const howOftenValue = ps.howOftenValue;\r\n const howOftenFrequency = ps.howOftenFrequency;\r\n const howOftenText = ps.howOftenText;\r\n const fundingSource = ps.fundingSource;\r\n const fundingSourceText = ps.fundingSourceText;\r\n const paidSupportsId = ps.paidSupportsId;\r\n let beginDate = ps.beginDate ? ps.beginDate.split(' ')[0] : '';\r\n let endDate = ps.endDate ? ps.endDate.split(' ')[0] : '';\r\n beginDate = beginDate ? UTIL.formatDateToIso(beginDate) : '';\r\n endDate = endDate ? UTIL.formatDateToIso(endDate) : '';\r\n let bDate = beginDate ? UTIL.formatDateFromIso(beginDate) : '';\r\n let eDate = endDate ? UTIL.formatDateFromIso(endDate) : '';\r\n if (bDate !== '') {\r\n const splitDate = bDate.split('/');\r\n bDate = `${splitDate[0]}/${splitDate[1]}/${splitDate[2].substring(2)}`;\r\n }\r\n if (eDate !== '') {\r\n const splitDate = eDate.split('/');\r\n eDate = `${splitDate[0]}/${splitDate[1]}/${splitDate[2].substring(2)}`;\r\n }\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[ps.assessmentAreaId]) {\r\n assessmentAreaId = ps.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const rowOrder = ps.rowOrder;\r\n\r\n const providerName = getProviderNameById(providerId);\r\n const serviceName = getServiceNameById(serviceNameId);\r\n const serviceOtherName = getOtherServiceNameById(serviceNameOther);\r\n const fundingSourceDesc = fundingSource ? getFundingSourceById(fundingSource) : '';\r\n const howOftenFrequencyText = howOftenFrequency\r\n ? getHowOftenHowMuchFrequencyById(howOftenFrequency)\r\n : '';\r\n\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n // if (howOftenFrequency && howOftenFrequency !== '4') {\r\n // howOften += ` x `;\r\n // }\r\n if (howOftenFrequency && howOftenFrequency !== '5') {\r\n howOften += ` ${howOftenFrequencyText}`;\r\n }\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n\r\n let funding = '';\r\n if (fundingSource && fundingSource !== '8') {\r\n funding = fundingSourceDesc;\r\n } else {\r\n if (fundingSourceText) {\r\n funding = fundingSourceText;\r\n }\r\n }\r\n let service = '';\r\n if (serviceNameId && serviceNameId !== '47') {\r\n service = serviceName;\r\n } else {\r\n if (serviceOtherName) {\r\n service = serviceOtherName;\r\n }\r\n }\r\n\r\n return {\r\n tableValues: [\r\n assessmentArea,\r\n funding,\r\n service,\r\n providerName,\r\n scopeOfService,\r\n howOften,\r\n bDate,\r\n eDate,\r\n ],\r\n psData: {\r\n assessmentAreaId,\r\n providerId,\r\n providerName,\r\n serviceNameId,\r\n serviceNameOther,\r\n scopeOfService,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n beginDate,\r\n endDate,\r\n fundingSource,\r\n fundingSourceText,\r\n paidSupportsId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n function mapAdditionalSupportDataForTable(as) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const whoSupports = as.whoSupports;\r\n const whoSupportsText = planData.getRelationshipNameById(whoSupports);\r\n const whatSupportLooksLike = as.whatSupportLooksLike\r\n ? as.whatSupportLooksLike\r\n : as.whatSupportsLookLike;\r\n const howOftenValue = as.howOftenValue;\r\n const howOftenFrequency = as.howOftenFrequency;\r\n const howOftenText = as.howOftenText;\r\n const additionalSupportsId = as.additionalSupportsId;\r\n const rowOrder = as.rowOrder;\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[as.assessmentAreaId]) {\r\n assessmentAreaId = as.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const whenHowOftenDesc = howOftenFrequency\r\n ? getWhenHowOftenFrequencyById(howOftenFrequency)\r\n : '';\r\n let howOften = '';\r\n if (howOftenValue) howOften += howOftenValue;\r\n if (howOftenFrequency && howOftenFrequency !== '4') {\r\n howOften += ` ${whenHowOftenDesc}`;\r\n } else {\r\n if (howOftenText) howOften += ` ${howOftenText}`;\r\n }\r\n\r\n return {\r\n tableValues: [assessmentArea, whoSupportsText, whatSupportLooksLike, howOften],\r\n asData: {\r\n assessmentAreaId,\r\n whoSupports,\r\n whatSupportLooksLike,\r\n howOftenValue,\r\n howOftenFrequency,\r\n howOftenText,\r\n additionalSupportsId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n function mapProfessionalReferralDataForTable(pr) {\r\n let assessmentAreaId;\r\n let assessmentArea;\r\n\r\n const newOrExisting = pr.newOrExisting;\r\n const whoSupports = pr.whoSupports;\r\n const whoSupportsText = planData.getRelationshipNameById(whoSupports);\r\n const reasonForReferral = pr.reasonForReferral;\r\n const professionalReferralId = pr.professionalReferralId;\r\n const rowOrder = pr.rowOrder;\r\n\r\n const a = assessment.getApplicableSections();\r\n if (a[pr.assessmentAreaId]) {\r\n assessmentAreaId = pr.assessmentAreaId;\r\n assessmentArea = getAssessmentAreaById(assessmentAreaId);\r\n } else {\r\n assessmentAreaId = '';\r\n assessmentArea = '';\r\n }\r\n\r\n const newExisting = newOrExisting === '0' ? '' : newOrExisting === '1' ? 'New' : 'Existing';\r\n\r\n return {\r\n tableValues: [assessmentArea, newExisting, whoSupportsText, reasonForReferral],\r\n prData: {\r\n assessmentAreaId,\r\n newOrExisting,\r\n whoSupports,\r\n reasonForReferral,\r\n professionalReferralId,\r\n rowOrder,\r\n },\r\n };\r\n }\r\n // Counts\r\n function getNumberOfPaidSupports() {\r\n if (paidSupportsTable) {\r\n const tableBody = paidSupportsTable.querySelector('.table__body');\r\n const tableRows = [...tableBody.querySelectorAll('.table__row')];\r\n return tableRows.length;\r\n }\r\n }\r\n function getNumberOfAdditionalSupports(sectionId) {\r\n return additionalSupportsCount;\r\n }\r\n function getNumberOfProfessionalReferrals(sectionId) {\r\n return professionalReferralsCount;\r\n }\r\n function getHasPaidSupports() {\r\n return hasPaidSupports;\r\n }\r\n // VendorId\r\n function setInitialSelectedVendorIds() {\r\n selectedVendors = servicesSupportsData.paidSupport.reduce((acc, ps) => {\r\n if (ps.providerId && ps.providerId !== '') {\r\n acc.push({\r\n providerId: ps.providerId,\r\n providerName: ps.providerName ? ps.providerName : getProviderNameById(ps.providerId),\r\n row: ps.rowOrder,\r\n });\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }\r\n function getSelectedVendors() {\r\n return selectedVendors;\r\n }\r\n function getSelectedVendorIds() {\r\n return selectedVendors.reduce((acc, vendor) => {\r\n acc.push(vendor.providerId);\r\n return acc;\r\n }, []);\r\n }\r\n // funding source names\r\n function setInitialFundingSourceNames() {\r\n selectedFundingSources = servicesSupportsData.paidSupport.reduce((acc, ps) => {\r\n if (ps.fundingSource && ps.fundingSource !== '') {\r\n acc.push({\r\n fundingSource: ps.fundingSource,\r\n row: ps.rowOrder,\r\n });\r\n }\r\n\r\n return acc;\r\n }, []);\r\n }\r\n function getSelectedFudningSourceNames() {\r\n return selectedFundingSources.reduce((acc, fs) => {\r\n if (getFundingSourceById(fs.fundingSource) == 'Other') {\r\n acc.push(servicesSupportsData.paidSupport[fs.row].fundingSourceText);\r\n } else {\r\n acc.push(getFundingSourceById(fs.fundingSource));\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n // DROPDOWNS\r\n //------------------------------------------------------\r\n //-- populate -------\r\n function populateAssessmentAreaDropdown(dropdownEle, defaultValue) {\r\n const a = assessment.getApplicableSections();\r\n\r\n const data = dropdownData.assessmentAreas\r\n .filter(dd => a[dd.assessmentAreaId])\r\n .map(dd => {\r\n return {\r\n value: dd.assessmentAreaId,\r\n text: dd.assessmentArea,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n function populateFundingSourceDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.fundingSource.map(dd => {\r\n return {\r\n value: dd.value,\r\n text: dd.text,\r\n };\r\n });\r\n\r\n // if ($.session.applicationName === 'Advisor' && defaultValue === '') {\r\n // defaultValue = '4';\r\n // hcbsSelected = true;\r\n // }\r\n\r\n if (defaultValue && defaultValue !== '')\r\n fundingSourceDropdownSelectedText = data[defaultValue].text;\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n function populateServiceNameDropdown(dropdownEle, defaultValue, fundingSourceVal) {\r\n const data = [];\r\n dropdownData.serviceTypes.forEach(dd => {\r\n if (\r\n dd.showWith.includes(fundingSourceVal) ||\r\n (fundingSourceVal === '8' && dd.value === '47')\r\n ) {\r\n data.push({\r\n value: dd.value,\r\n text: dd.text,\r\n });\r\n }\r\n });\r\n\r\n data.sort((a, b) => a.text.localeCompare(b.text));\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n return defaultValue;\r\n }\r\n\r\n function populateOtherServiceTypesDropdown(dropdownEle, defaultValue) {\r\n const data = dropdownData.serviceTypesOther.map(dd => {\r\n return {\r\n value: dd.serviceId,\r\n text: dd.serviceTypeDescription,\r\n };\r\n });\r\n\r\n data.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n data.unshift({ value: '%', text: '' });\r\n\r\n dropdown.populate(dropdownEle, data, defaultValue);\r\n }\r\n\r\n async function populateMultiSelectServiceVendorsDropdown(dropdownEle, thisSelectedArray) {\r\n var test = dropdownEle;\r\n let thisfundingSourceSelectedText;\r\n let thisServiceNameSelectedText;\r\n\r\n let completeVendorList = [];\r\n\r\n for(let i = 0; i < thisSelectedArray.length; i++) {\r\n\r\n thisfundingSourceSelectedText = thisSelectedArray[i].fundingSourceName;\r\n thisServiceNameSelectedText = thisSelectedArray[i].serviceName;\r\n\r\n const { getPaidSupportsVendorsResult: vendorNumbers } =\r\n await servicesSupportsAjax.getPaidSupportsVendors(\r\n thisfundingSourceSelectedText,\r\n thisServiceNameSelectedText,\r\n );\r\n\r\n completeVendorList.push(...vendorNumbers);\r\n };\r\n\r\n var test6 = {vendorId: \"7500002\", vendorName: \"RMS of Ohio, Inc.\"};\r\n var test7 = {vendorId: \"7500001\", vendorName: \"IHS Services\"};\r\n var test8 = {vendorId: \"7500002\", vendorName: \"XX\"};\r\n var test9 = {vendorId: \"7500001\", vendorName: \"XXXX\"};\r\n // completeVendorList.push(test6);\r\n // completeVendorList.push(test6);\r\n // completeVendorList.push(test7);\r\n //completeVendorList.push(test7);\r\n // completeVendorList.push(test8);\r\n // completeVendorList.push(test9);\r\n\r\n // Filter original concat list to just the vendors that have more than one in the list\r\n const duplicateVendors = completeVendorList.filter((item, index, self) => {\r\n return self.findIndex(t => t.vendorId === item.vendorId) !== index;\r\n });\r\n\r\n // need to get duplicateVendors list down to just the vendors with the correct number of occurances\r\n let minOccurancePaidSupports;\r\n // thisSelectedArray.length = 3\r\n if (thisSelectedArray.length > 2) {\r\n minOccurancePaidSupports = removeDuplicatesBasedOnCount(duplicateVendors, 'vendorId', thisSelectedArray.length);\r\n } else {\r\n minOccurancePaidSupports = duplicateVendors;\r\n }\r\n\r\n let minOccurancePaidSupportsFiltered = removeDuplicateObjects(minOccurancePaidSupports, 'vendorId')\r\n\r\n let vendorArray = [];\r\n // vendorArray contains the duplicate vendors data in Dropdown data formnat\r\n minOccurancePaidSupportsFiltered.forEach(row => {\r\n let thisVendorObject = {value: row.vendorId, text: row.vendorName }\r\n vendorArray.push(thisVendorObject);\r\n });\r\n\r\n vendorArray.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n if (vendorArray.length > 0) {\r\n vendorArray.unshift({ value: '', text: '[SELECT A PROVIDER]' });\r\n } else {\r\n vendorArray.unshift({ value: '', text: 'No Common Provider' });\r\n }\r\n\r\n dropdown.populate(dropdownEle, vendorArray);\r\n\r\n return;\r\n }\r\n\r\n async function populateServiceVendorsDropdown(dropdownEle, defaultValue, ignoreGuardClauses) {\r\n // const data = dropdownData.serviceVendors.map(dd => {\r\n // return {\r\n // value: dd.vendorId,\r\n // text: dd.vendorName,\r\n // };\r\n // });\r\n // let data = vendorNumbers.map(vendorNumber => ({\r\n // value: vendorNumber.vendorId,\r\n // text: vendorNumber.vendorName,\r\n // }));\r\n\r\n if (!ignoreGuardClauses) {\r\n // handles populating provider DDL when: 1. a service has just been selected 2. a service already exists for an existing record\r\n // Guard clause -- if no fundingSource selected , therefore no data in serviceVEndorDropDown\r\n if (!fundingSourceDropdownSelectedText || fundingSourceDropdownSelectedText == '') {\r\n const thisVendorDropDownData = [].map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n if (thisVendorDropDownData.length === 1) {\r\n defaultValue = thisVendorDropDownData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n thisVendorDropDownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(dropdownEle, thisVendorDropDownData, defaultValue);\r\n\r\n return;\r\n }\r\n\r\n // Guard clause --if HCBS/ICF fundingSource selected but no service selected, therefore no data in serviceVEndorDropDown\r\n if (\r\n (fundingSourceDropdownSelectedText.includes('HCBS') ||\r\n fundingSourceDropdownSelectedText.includes('ICF')) &&\r\n servicesDropdownSelectedText == '%'\r\n ) {\r\n const thisVendorDropDownData = [].map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n if (thisVendorDropDownData.length === 1) {\r\n defaultValue = thisVendorDropDownData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n thisVendorDropDownData.unshift({ value: '%', text: '' });\r\n dropdown.populate(dropdownEle, thisVendorDropDownData, defaultValue);\r\n\r\n return;\r\n }\r\n }\r\n\r\n // if guard clauses are not used (see above), then repopulate serviceVEndorDropDown\r\n const { getPaidSupportsVendorsResult: vendorNumbers } =\r\n await servicesSupportsAjax.getPaidSupportsVendors(\r\n fundingSourceDropdownSelectedText,\r\n servicesDropdownSelectedText,\r\n );\r\n\r\n const selectedVendorIds = getSelectedVendorIds();\r\n\r\n const nonPaidSupportData = vendorNumbers.filter(\r\n provider => selectedVendorIds.indexOf(provider.vendorId) < 0,\r\n );\r\n const paidSupportData = vendorNumbers.filter(\r\n provider => selectedVendorIds.indexOf(provider.vendorId) >= 0,\r\n );\r\n const nonPaidSupportDropdownData = nonPaidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n const paidSupportDropdownData = paidSupportData.map(dd => {\r\n return {\r\n value: dd.vendorId,\r\n text: dd.vendorName,\r\n };\r\n });\r\n\r\n nonPaidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n paidSupportDropdownData.sort((a, b) => {\r\n const textA = a.text.toUpperCase();\r\n const textB = b.text.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n\r\n const nonGroupedDropdownData = [{ value: '', text: '[SELECT A PROVIDER]' }];\r\n const paidSupportGroup = {\r\n groupLabel: 'Paid Support Providers',\r\n groupId: 'isp_ss_providerDropdown_paidSupportProviders',\r\n dropdownValues: paidSupportDropdownData,\r\n };\r\n const nonPaidSupportGroup = {\r\n groupLabel: 'Other Providers',\r\n groupId: 'isp_ss_providerDropdown_nonPaidSupportProviders',\r\n dropdownValues: nonPaidSupportDropdownData,\r\n };\r\n\r\n const groupDropdownData = [];\r\n if (paidSupportDropdownData.length > 0) {\r\n groupDropdownData.push(paidSupportGroup);\r\n }\r\n\r\n //if there's no default value, and only one option, make that option the default\r\n if (!defaultValue) {\r\n const tempData = [...nonPaidSupportDropdownData, ...paidSupportDropdownData];\r\n if (tempData.length === 1) {\r\n defaultValue = tempData[0].value;\r\n saveUpdateProvider = defaultValue;\r\n dropdownEle.classList.remove('error');\r\n }\r\n }\r\n\r\n groupDropdownData.push(nonPaidSupportGroup);\r\n\r\n dropdown.groupingPopulate({\r\n dropdown: dropdownEle,\r\n data: groupDropdownData,\r\n nonGroupedData: nonGroupedDropdownData,\r\n defaultVal: defaultValue,\r\n });\r\n }\r\n\r\n function populateHowOftenHowMuchFrequencyDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.howOftenHowMuchFrequency, defaultValue);\r\n }\r\n function populateWhenHowOftenFrequencyDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.whenHowOftenFrequency, defaultValue);\r\n }\r\n function populateNewOrExistingDropdown(dropdownEle, defaultValue) {\r\n dropdown.populate(dropdownEle, dropdownData.newOrExisting, defaultValue);\r\n }\r\n\r\n function getAssessmentAreaById(id) {\r\n const filteredAssessment = dropdownData.assessmentAreas.filter(\r\n dd => dd.assessmentAreaId === id,\r\n );\r\n return filteredAssessment.length > 0 ? filteredAssessment[0].assessmentArea : '';\r\n }\r\n function getProviderNameById(id) {\r\n const filteredProvider = dropdownData.serviceVendors.filter(dd => dd.vendorId === id);\r\n return filteredProvider.length > 0 ? filteredProvider[0].vendorName : '';\r\n }\r\n function getServiceNameById(id) {\r\n const filteredService = dropdownData.serviceTypes.filter(dd => dd.value === id);\r\n return filteredService.length > 0 ? filteredService[0].text : '';\r\n }\r\n function getOtherServiceNameById(id) {\r\n const filteredService = dropdownData.serviceTypesOther.filter(dd => dd.serviceId === id);\r\n return filteredService.length > 0 ? filteredService[0].serviceTypeDescription : '';\r\n }\r\n function getFundingSourceById(id) {\r\n const filteredFunding = dropdownData.fundingSource.filter(dd => dd.value === id);\r\n return filteredFunding.length > 0 ? filteredFunding[0].text : '';\r\n }\r\n function getHowOftenHowMuchFrequencyById(id) {\r\n const filteredFrequency = dropdownData.howOftenHowMuchFrequency.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n function getWhenHowOftenFrequencyById(id) {\r\n const filteredFrequency = dropdownData.whenHowOftenFrequency.filter(dd => dd.value === id);\r\n return filteredFrequency.length > 0 ? filteredFrequency[0].text : '';\r\n }\r\n\r\n // PAID SUPPORTS\r\n //------------------------------------------------------\r\n async function insertPaidSupport(saveData, fromAssessment) {\r\n const { scopeOfService, fundingSourceText, howOftenText, ...rest } = saveData;\r\n\r\n if (!planID) {\r\n planID = plan.getCurrentPlanId();\r\n }\r\n\r\n const paidSupportId = await servicesSupportsAjax.insertPaidSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n scopeOfService: scopeOfService,\r\n fundingSourceText: fundingSourceText,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n if (fromAssessment) return;\r\n\r\n const parsedId = JSON.parse(paidSupportId.replace('[', '').replace(']', ''));\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n paidSupportsId: parsedId.paidSupportsId,\r\n ...saveData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n table.addRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n providerName: psData.providerName,\r\n row: psData.rowOrder,\r\n });\r\n selectedFundingSources.push({\r\n fundingSource: psData.fundingSource,\r\n row: psData.rowOrder,\r\n });\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n // Summary questions that require paid supports\r\n const numPaidSupports = getNumberOfPaidSupports();\r\n planSummary.checkForPaidSupports(numPaidSupports);\r\n }\r\n async function updatePaidSupport(updateData) {\r\n const { scopeOfService, fundingSourceText, howOftenText, ...rest } = updateData;\r\n\r\n await servicesSupportsAjax.updatePaidSupports({\r\n token: $.session.Token,\r\n anywAssessmentId: planID,\r\n scopeOfService: scopeOfService,\r\n fundingSourceText: fundingSourceText,\r\n howOftenText: howOftenText,\r\n ...rest,\r\n });\r\n\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n ...updateData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n table.updateRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: () => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors = selectedVendors.filter(vendor => vendor.rowOrder !== psData.rowOrder);\r\n selectedFundingSources = selectedFundingSources.filter(fs => fs.rowOrder !== psData.rowOrder);\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n row: psData.rowOrder,\r\n });\r\n selectedFundingSources.push({\r\n fundingSource: psData.fundingSource,\r\n row: psData.rowOrder,\r\n });\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n }\r\n async function deletePaidSupport(paidSupportId) {\r\n await servicesSupportsAjax.deletePaidSupports({\r\n token: $.session.Token,\r\n paidSupportsId: paidSupportId,\r\n });\r\n\r\n table.deleteRow(`ps${paidSupportId}`);\r\n\r\n //Update CI Funding Sources\r\n contactInformation.updateFundingSources();\r\n // Summary questions that require paid supports\r\n const numPaidSupports = getNumberOfPaidSupports();\r\n planSummary.checkForPaidSupports(numPaidSupports);\r\n }\r\n function updatePaidSupportsRowFromMultiEdit(multiSaveUpdateData) {\r\n selectedPaidSupportRows.forEach(row => {\r\n const { rowNode, ...tableData } = row;\r\n\r\n if (multiSaveUpdateData.beginDate !== '') {\r\n tableData.beginDate = multiSaveUpdateData.beginDate;\r\n }\r\n if (multiSaveUpdateData.endDate !== '') {\r\n tableData.endDate = multiSaveUpdateData.endDate;\r\n }\r\n if (multiSaveUpdateData.providerId !== '0' && multiSaveUpdateData.providerId !== '') {\r\n tableData.providerId = multiSaveUpdateData.providerId;\r\n }\r\n\r\n const { tableValues, psData } = mapPaidSupportDataForTable({\r\n ...tableData,\r\n });\r\n const rowId = `ps${psData.paidSupportsId}`;\r\n\r\n if (multiSaveUpdateData.providerId !== '0' && multiSaveUpdateData.providerId !== '') {\r\n tableValues.providerName = multiSaveUpdateData.providerName;\r\n psData.providerName = multiSaveUpdateData.providerName;\r\n }\r\n\r\n table.updateRows(\r\n paidSupportsTable,\r\n [\r\n {\r\n id: rowId,\r\n values: tableValues,\r\n onClick: event => {\r\n if (!enableMultiEdit) {\r\n showAddPaidSupportPopup({\r\n popupData: psData,\r\n isNew: false,\r\n fromAssessment: false,\r\n isCopy: false,\r\n charLimits,\r\n });\r\n return;\r\n }\r\n\r\n const isSelected = event.target.classList.contains('selected');\r\n\r\n if (isSelected) {\r\n event.target.classList.remove('selected');\r\n selectedPaidSupportIds = selectedPaidSupportIds.filter(\r\n sr => sr !== psData.paidSupportsId,\r\n );\r\n selectedPaidSupportRows = selectedPaidSupportRows.filter(\r\n sr => sr.paidSupportsId !== psData.paidSupportsId,\r\n );\r\n } else {\r\n event.target.classList.add('selected');\r\n selectedPaidSupportIds.push(psData.paidSupportsId);\r\n selectedPaidSupportRows.push({ ...psData, rowNode: event.target });\r\n }\r\n\r\n if (selectedPaidSupportIds.length === 0) {\r\n multiEditUpdateBtn.classList.add('disabled');\r\n } else {\r\n multiEditUpdateBtn.classList.remove('disabled');\r\n }\r\n },\r\n onCopyClick: () => {\r\n if (isReadOnly) return;\r\n const copiedData = { ...psData, paidSupportsId: '' };\r\n showAddPaidSupportPopup({\r\n popupData: copiedData,\r\n isNew: true,\r\n fromAssessment: false,\r\n isCopy: true,\r\n charLimits,\r\n });\r\n },\r\n },\r\n ],\r\n isSortable,\r\n );\r\n\r\n selectedVendors = selectedVendors.filter(vendor => vendor.rowOrder !== psData.rowOrder);\r\n selectedVendors.push({\r\n providerId: psData.providerId,\r\n row: psData.rowOrder,\r\n });\r\n });\r\n }\r\n function checkForMatchingFundingSourceAndSeriviceNames(paidSupportRows) {\r\n // grab the first row to set values\r\n const fundingSource = paidSupportRows[0].fundingSource;\r\n const serviceNameId = paidSupportRows[0].serviceNameId;\r\n return paidSupportRows.every(psRow => {\r\n return psRow.fundingSource === fundingSource && psRow.serviceNameId === serviceNameId;\r\n });\r\n }\r\n //-- Markup ---------\r\n function toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn) {\r\n if (\r\n multiSaveUpdateData.beginDate !== '' ||\r\n multiSaveUpdateData.endDate !== '' ||\r\n multiSaveUpdateData.providerId !== ''\r\n ) {\r\n updateBtn.classList.remove('disabled');\r\n return;\r\n } else {\r\n updateBtn.classList.add('disabled');\r\n return;\r\n }\r\n\r\n // updateBtn.classList.remove('disabled');\r\n }\r\n function showMultiEditPopup() {\r\n let multiSaveUpdateData = {\r\n beginDate: '',\r\n endDate: '',\r\n providerId: '',\r\n providerName: '',\r\n };\r\n\r\n const multiEditPopup = POPUP.build({\r\n header: 'Update Paid Supports',\r\n classNames: 'multiEditPopup',\r\n hideX: true,\r\n });\r\n\r\n const message = document.createElement('p');\r\n message.classList.add('popupMessage');\r\n message.innerText = `Fields left blank will not be updated`;\r\n\r\n // set all multiselct data \r\n let thisSelectedPaidSupportItems = [];\r\n selectedPaidSupportRows.forEach(row => {\r\n let thisfundingSource = getFundingSourceById(row.fundingSource);\r\n let thisserviceName = getServiceNameById(row.serviceNameId);\r\n let thisSelectedObject = {fundingSourceName: thisfundingSource, serviceName: thisserviceName }\r\n thisSelectedPaidSupportItems.push(thisSelectedObject);\r\n });\r\n\r\n // set fundingSourceDropdownSelectedText & servicesDropdownSelectedText\r\n const fundingSource = getFundingSourceById(selectedPaidSupportRows[0].fundingSource);\r\n const serviceName = getServiceNameById(selectedPaidSupportRows[0].serviceNameId);\r\n fundingSourceDropdownSelectedText = fundingSource;\r\n servicesDropdownSelectedText = serviceName;\r\n\r\n // check for matching funding source and service names\r\n const matchingRows = checkForMatchingFundingSourceAndSeriviceNames(selectedPaidSupportRows);\r\n\r\n const providerNameDropdown = dropdown.build({\r\n dropdownId: 'providerNameDropdownPS',\r\n label: 'Provider Name',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n multiSaveUpdateData.providerId = selectedOption.value;\r\n multiSaveUpdateData.providerName = selectedOption.innerText;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n // if (!matchingRows) {\r\n // input.disableInputField(providerNameDropdown);\r\n // }\r\n\r\n const beginDateInput = input.build({\r\n label: 'Begin Date',\r\n type: 'date',\r\n style: 'secondary',\r\n // value: multiSaveUpdateData.beginDate,\r\n callback: e => {\r\n multiSaveUpdateData.beginDate = e.target.value;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n const endDateInput = input.build({\r\n label: 'End Date',\r\n type: 'date',\r\n style: 'secondary',\r\n // value: multiSaveUpdateData.endDate,\r\n callback: e => {\r\n multiSaveUpdateData.endDate = e.target.value;\r\n toggleMultiEditUpdateBtn(multiSaveUpdateData, updateBtn);\r\n },\r\n });\r\n\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('btnWrap');\r\n\r\n const updateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: async () => {\r\n await servicesSupportsAjax.updateMultiPaidSupports({\r\n token: $.session.Token,\r\n beginDate:\r\n multiSaveUpdateData.beginDate !== '' ? multiSaveUpdateData.beginDate : '1900-01-01',\r\n endDate: multiSaveUpdateData.endDate !== '' ? multiSaveUpdateData.endDate : '1900-01-01',\r\n providerId: multiSaveUpdateData.providerId !== '' ? multiSaveUpdateData.providerId : '0',\r\n paidSupportsId: selectedPaidSupportIds.join(','),\r\n });\r\n\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n multiEditBtn.classList.toggle('enabled');\r\n\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n\r\n updatePaidSupportsRowFromMultiEdit(multiSaveUpdateData);\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n\r\n POPUP.hide(multiEditPopup);\r\n\r\n enableMultiEdit = false;\r\n fundingSourceDropdownSelectedText = '';\r\n servicesDropdownSelectedText = '';\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(multiEditPopup);\r\n },\r\n });\r\n\r\n wrap.appendChild(updateBtn);\r\n wrap.appendChild(cancelBtn);\r\n\r\n multiEditPopup.appendChild(message);\r\n multiEditPopup.appendChild(beginDateInput);\r\n multiEditPopup.appendChild(endDateInput);\r\n multiEditPopup.appendChild(providerNameDropdown);\r\n multiEditPopup.appendChild(wrap);\r\n\r\n // populateServiceVendorsDropdown(providerNameDropdown, multiSaveUpdateData.providerId);\r\n populateMultiSelectServiceVendorsDropdown(providerNameDropdown, thisSelectedPaidSupportItems);\r\n\r\n POPUP.show(multiEditPopup);\r\n }\r\n function buildMultiRowEdit() {\r\n const wrap = document.createElement('div');\r\n wrap.classList.add('mutliEditBtnWrap');\r\n\r\n multiEditBtn = button.build({\r\n text: 'Multi Select Supports',\r\n icon: 'multiSelect',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'multiEditBtn',\r\n callback: () => {\r\n enableMultiEdit = !enableMultiEdit;\r\n\r\n multiEditBtn.classList.toggle('enabled');\r\n\r\n if (enableMultiEdit) {\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n multiEditUpdateBtn.classList.remove('hidden');\r\n multiEditCancelBtn.classList.remove('hidden');\r\n } else {\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n }\r\n },\r\n });\r\n\r\n multiEditUpdateBtn = button.build({\r\n text: 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'disabled',\r\n callback: () => {\r\n showMultiEditPopup();\r\n },\r\n });\r\n multiEditCancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n enableMultiEdit = false;\r\n multiEditBtn.classList.toggle('enabled');\r\n multiEditUpdateBtn.classList.add('disabled');\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n selectedPaidSupportIds = [];\r\n selectedPaidSupportRows = [];\r\n var highlightedRows = [].slice.call(document.querySelectorAll('.table__row.selected'));\r\n highlightedRows.forEach(row => row.classList.remove('selected'));\r\n },\r\n });\r\n multiEditUpdateBtn.classList.add('hidden');\r\n multiEditCancelBtn.classList.add('hidden');\r\n\r\n wrap.appendChild(multiEditBtn);\r\n wrap.appendChild(multiEditUpdateBtn);\r\n wrap.appendChild(multiEditCancelBtn);\r\n\r\n return wrap;\r\n }\r\n function togglePaidSupportDoneBtn() {\r\n const inputsWithErrors = document.querySelector('.paidSupportPopup .error');\r\n const doneBtn = document.querySelector('.paidSupportPopup .doneBtn');\r\n if (inputsWithErrors) {\r\n doneBtn.classList.add('disabled');\r\n } else {\r\n doneBtn.classList.remove('disabled');\r\n }\r\n }\r\n function showAddPaidSupportPopup({ popupData, isNew, fromAssessment, isCopy, charLimits }) {\r\n if (!dropdownData) {\r\n dropdownData = planData.getDropdownData();\r\n }\r\n\r\n let hasInitialErros;\r\n\r\n const saveUpdateData = {\r\n assessmentAreaId: !popupData.assessmentAreaId ? '' : popupData.assessmentAreaId,\r\n providerId: !popupData.providerId ? '' : popupData.providerId,\r\n serviceNameId: !popupData.serviceNameId ? '' : popupData.serviceNameId,\r\n serviceNameOther: !popupData.serviceNameOther ? '' : popupData.serviceNameOther,\r\n scopeOfService: !popupData.scopeOfService ? '' : popupData.scopeOfService,\r\n howOftenValue: !popupData.howOftenValue ? '' : popupData.howOftenValue,\r\n howOftenFrequency: !popupData.howOftenFrequency ? '' : popupData.howOftenFrequency,\r\n howOftenText: !popupData.howOftenText ? '' : popupData.howOftenText,\r\n beginDate: !popupData.beginDate ? '' : popupData.beginDate,\r\n endDate: !popupData.endDate ? '' : popupData.endDate,\r\n fundingSource: !popupData.fundingSource ? '' : popupData.fundingSource,\r\n fundingSourceText: !popupData.fundingSourceText ? '' : popupData.fundingSourceText,\r\n rowOrder: !popupData.rowOrder ? '' : popupData.rowOrder,\r\n };\r\n\r\n if (!isNew) {\r\n saveUpdateData.paidSupportsId = popupData.paidSupportsId;\r\n } else {\r\n if (!isCopy) {\r\n saveUpdateData.beginDate = UTIL.formatDateFromDateObj(planDates.getEffectiveStartDate());\r\n saveUpdateData.endDate = UTIL.formatDateFromDateObj(planDates.getEffectiveEndDate());\r\n }\r\n }\r\n\r\n if ($.session.applicationName === 'Advisor' && saveUpdateData.fundingSource === '') {\r\n hcbsSelected = true;\r\n saveUpdateData.fundingSource = '4';\r\n }\r\n\r\n const availableServiceTypes = [];\r\n const data = [];\r\n dropdownData.serviceTypes.forEach(dd => {\r\n if (dd.showWith.includes(saveUpdateData.fundingSource)) {\r\n availableServiceTypes.push(dd.value);\r\n data.push({\r\n value: dd.value,\r\n text: dd.text,\r\n });\r\n }\r\n });\r\n\r\n if (availableServiceTypes.includes(saveUpdateData.serviceNameId)) {\r\n let servicesDropdownSelected = data.find(e => e.value === saveUpdateData.serviceNameId);\r\n servicesDropdownSelectedText = servicesDropdownSelected.text;\r\n } else {\r\n if (saveUpdateData.fundingSource === '8') {\r\n servicesDropdownSelectedText = 'Other (please specify)';\r\n } else {\r\n saveUpdateData.serviceNameId = $.session.applicationName === 'Advisor' ? '24' : '%';\r\n }\r\n }\r\n\r\n // Popup\r\n const paidSupportPopup = POPUP.build({\r\n header: isNew ? 'Add Paid Support' : 'Edit Paid Support',\r\n classNames: 'paidSupportPopup',\r\n hideX: true,\r\n });\r\n\r\n // Asessment Area\r\n const assessmentAreaDropdown = dropdown.build({\r\n dropdownId: 'assessmentAreaDropdownPS',\r\n label: 'Assessment Area',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.assessmentAreaId = selectedOption.value;\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n } else {\r\n assessmentAreaDropdown.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n if (fromAssessment) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n }\r\n // Funding Source Drop Down\r\n const fundingSourceDropdown = dropdown.build({\r\n dropdownId: 'fundingSourceDropdownPS',\r\n label: 'Funding Source',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n saveUpdateData.fundingSource = selectedOption.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n serviceNameDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.remove('disabled');\r\n serviceNameOtherDropdown.classList.add('error');\r\n\r\n saveUpdateData.serviceNameId = populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n '47',\r\n '5',\r\n );\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, '%');\r\n } else {\r\n serviceNameDropdown.classList.remove('disabled');\r\n\r\n saveUpdateData.serviceNameId = populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n saveUpdateData.serviceNameId,\r\n selectedOption.value,\r\n );\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, '%');\r\n }\r\n\r\n // store currently selected fundingSource (fundingSourceDropdownSelectedText) for use when populating the vendor dropdown\r\n // store type of fundingSource (hcbsSelected) for use when populating service and vendor dropdowns\r\n fundingSourceDropdownSelectedText = selectedOption.innerText;\r\n if (selectedOption.innerText.includes('HCBS') || selectedOption.innerText.includes('ICF')) {\r\n hcbsSelected = true;\r\n } else {\r\n hcbsSelected = false;\r\n }\r\n\r\n if (hcbsSelected) {\r\n providerNameDropdown.classList.remove('disabled');\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n } else {\r\n // re-enable provider dropdown if it was disabled\r\n providerNameDropdown.classList.remove('disabled');\r\n providerNameDropdown.classList.add('error');\r\n\r\n // non-waver -- get all Active Providers\r\n servicesDropdownSelectedText = '%';\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n\r\n if (saveUpdateData.fundingSource === '5') {\r\n // if 'State Plan Services' is selected, disable Provider Name Dropdown\r\n providerNameDropdown.querySelector('select').selectedIndex = -1;\r\n saveUpdateData.providerId = '';\r\n providerNameDropdown.classList.remove('error');\r\n providerNameDropdown.classList.add('disabled');\r\n }\r\n\r\n // validation of fundingSource DDL\r\n if (saveUpdateData.fundingSource === '' || saveUpdateData.fundingSource === '%') {\r\n fundingSourceDropdown.classList.add('error');\r\n } else {\r\n fundingSourceDropdown.classList.remove('error');\r\n }\r\n\r\n // validation of fundingSource Input\r\n const fundingSourceInputField = fundingSourceInput.querySelector('.input-field__input');\r\n\r\n // enable/disable funding source text input\r\n if (saveUpdateData.fundingSource === '8') {\r\n fundingSourceInput.classList.remove('disabled');\r\n fundingSourceInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n fundingSourceInput.classList.add('disabled');\r\n fundingSourceInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.fundingSourceText = '';\r\n const textInput = fundingSourceInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n await validateServicesDropdown();\r\n validateProviderDropdown();\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n\r\n async function validateServicesDropdown() {\r\n // Validation of Services DDL after selecting from fundingSource DDL\r\n const servicesDropdownSelect = document.querySelector('#serviceNameDropdownPS');\r\n const servicesOtherDropdownSelect = document.querySelector('#serviceNameOtherDropdownPS');\r\n\r\n if (hcbsSelected) {\r\n if (\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex] &&\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text !== ''\r\n ) {\r\n servicesDropdownSelectedText =\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text;\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n } else {\r\n servicesDropdownSelectedText = '';\r\n saveUpdateData.providerId = '';\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n }\r\n\r\n if (servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex]) {\r\n servicesDropdownSelectedText =\r\n servicesDropdownSelect.options[servicesDropdownSelect.selectedIndex].text;\r\n } else {\r\n servicesDropdownSelectedText = '';\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n saveUpdateData.serviceNameOther = '';\r\n }\r\n\r\n // if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%' || servicesDropdownSelectedText === '') {\r\n if (servicesDropdownSelectedText === '') {\r\n serviceNameDropdown.classList.add('error');\r\n } else {\r\n serviceNameDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n function validateProviderDropdown() {\r\n // Validation of Provider DDL after selecting from fundingSource DDL\r\n const providerDropdown = document.querySelector('#providerNameDropdownPS');\r\n\r\n if (\r\n providerDropdown.options[providerDropdown.selectedIndex] &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerDropdownSelectedText =\r\n providerDropdown.options[providerDropdown.selectedIndex].text;\r\n } else {\r\n providerDropdownSelectedText = '';\r\n }\r\n\r\n // if (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%' || saveUpdateData.providerId === '[SELECT A PROVIDER]') {\r\n if (\r\n (providerDropdownSelectedText === '' ||\r\n providerDropdownSelectedText === '[SELECT A PROVIDER]') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n } else {\r\n providerNameDropdown.classList.remove('error');\r\n }\r\n }\r\n\r\n // Funding Source Other\r\n const fundingSourceInput = input.build({\r\n type: 'textarea',\r\n label: 'Funding Source Other',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.fundingSourceText,\r\n charLimit: charLimits.fundingSourceOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!fundingSourceInput.classList.contains('disabled')) {\r\n saveUpdateData.fundingSourceText = e.target.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n fundingSourceInput.classList.add('fundingSourceInput');\r\n fundingSourceInput.addEventListener('input', e => {\r\n if (!fundingSourceInput.classList.contains('disabled')) {\r\n saveUpdateData.fundingSourceText = e.target.value;\r\n\r\n if (saveUpdateData.fundingSource === '8') {\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n } else {\r\n fundingSourceInput.classList.remove('error');\r\n }\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n if (saveUpdateData.fundingSource !== '8') {\r\n const fundingSourceInputField = fundingSourceInput.querySelector('.input-field__input');\r\n fundingSourceInputField.setAttribute('tabindex', '-1');\r\n fundingSourceInput.classList.add('disabled');\r\n }\r\n // Provider Name\r\n const providerNameDropdown = dropdown.build({\r\n dropdownId: 'providerNameDropdownPS',\r\n label: 'Provider Name',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.providerId = selectedOption.value;\r\n if (\r\n (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n } else {\r\n providerNameDropdown.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Service Name\r\n const serviceNameDropdown = dropdown.build({\r\n dropdownId: 'serviceNameDropdownPS',\r\n label: 'Service Name',\r\n style: 'secondary',\r\n callback: async (e, selectedOption) => {\r\n saveUpdateData.serviceNameId = selectedOption.value;\r\n servicesDropdownSelectedText = selectedOption.text;\r\n // saveUpdateData.providerId = '';\r\n\r\n // store currently selected fundingSource (fundingSourceDropdownSelectedText) for use when populating the vendor dropdown\r\n // store type of fundingSource (hcbsSelected) for use when populating service and vendor dropdowns\r\n const fundingSourceDropdown = document.querySelector('#fundingSourceDropdownPS');\r\n fundingSourceDropdownSelectedText =\r\n fundingSourceDropdown.options[fundingSourceDropdown.selectedIndex].text;\r\n if (\r\n fundingSourceDropdownSelectedText.includes('HCBS') ||\r\n fundingSourceDropdownSelectedText.includes('ICF')\r\n ) {\r\n hcbsSelected = true;\r\n } else {\r\n hcbsSelected = false;\r\n }\r\n\r\n if (hcbsSelected) {\r\n await populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n }\r\n\r\n // Validation of Services DDL\r\n if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%') {\r\n serviceNameDropdown.classList.add('error');\r\n } else {\r\n serviceNameDropdown.classList.remove('error');\r\n }\r\n\r\n // validation of Service Name Other DDL\r\n if (saveUpdateData.serviceNameId === '47') {\r\n serviceNameOtherDropdown.classList.remove('disabled');\r\n serviceNameOtherDropdown.classList.add('error');\r\n } else {\r\n document.getElementById('serviceNameOtherDropdownPS').value = '%';\r\n saveUpdateData.serviceNameOther = '';\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.remove('error');\r\n }\r\n\r\n validateProviderDropdown();\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n }); // End -- Service Drop Down Handling\r\n\r\n // Service Name Other\r\n const serviceNameOtherDropdown = dropdown.build({\r\n dropdownId: 'serviceNameOtherDropdownPS',\r\n label: 'Service Name Other',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.serviceNameOther = selectedOption.value === '%' ? '' : selectedOption.value;\r\n if (saveUpdateData.serviceNameOther === '' || saveUpdateData.serviceNameOther === '%') {\r\n serviceNameOtherDropdown.classList.add('error');\r\n } else {\r\n serviceNameOtherDropdown.classList.remove('error');\r\n }\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Scope Of Service\r\n const scopeOfserviceInput = input.build({\r\n label: 'Scope of Service / What support looks like',\r\n type: 'textarea',\r\n style: 'secondary',\r\n classNames: 'autosize',\r\n value: saveUpdateData.scopeOfService,\r\n charLimit: charLimits.scopeOfService,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.scopeOfService = e.target.value;\r\n\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n } else {\r\n scopeOfserviceInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n scopeOfserviceInput.classList.add('scopeOfService');\r\n scopeOfserviceInput.addEventListener('input', e => {\r\n saveUpdateData.scopeOfService = e.target.value;\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n } else {\r\n scopeOfserviceInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n // How Often/How Much Value\r\n const howOftenHowMuchValueInput = input.build({\r\n type: 'textarea',\r\n label: 'How Often/How Much',\r\n style: 'secondary',\r\n value: saveUpdateData.howOftenValue,\r\n classNames: 'autosize',\r\n charLimit: charLimits.howOftenHowMuch,\r\n forceCharLimit: true,\r\n callback: e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchValueInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n howOftenHowMuchValueInput.classList.add('howOftenHowMuchValueInput');\r\n howOftenHowMuchValueInput.addEventListener('input', e => {\r\n saveUpdateData.howOftenValue = e.target.value;\r\n\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchValueInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n });\r\n // How Often/How Much Freq\r\n const howOftenHowMuchFrequencyDropdown = dropdown.build({\r\n dropdownId: 'howOftenHowMuchDropdownPS',\r\n label: 'How Often/How Much Frequency',\r\n style: 'secondary',\r\n callback: (e, selectedOption) => {\r\n saveUpdateData.howOftenFrequency = selectedOption.value;\r\n\r\n const howOftenHowMuchTextInputField =\r\n howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n howOftenHowMuchFrequencyDropdown.classList.add('error');\r\n } else {\r\n howOftenHowMuchFrequencyDropdown.classList.remove('error');\r\n }\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n howOftenHowMuchTextInput.classList.remove('disabled');\r\n howOftenHowMuchTextInputField.removeAttribute('tabindex');\r\n\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n howOftenHowMuchTextInputField.setAttribute('tabindex', '-1');\r\n saveUpdateData.howOftenText = '';\r\n const textInput = howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n textInput.value = '';\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // How Often/How Much Other\r\n const howOftenHowMuchTextInput = input.build({\r\n type: 'textarea',\r\n label: 'How Often/How Much Other',\r\n style: 'secondary',\r\n value: saveUpdateData.howOftenText,\r\n classNames: 'autosize',\r\n charLimit: charLimits.howOftenOther,\r\n forceCharLimit: true,\r\n callback: e => {\r\n if (!howOftenHowMuchTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n }\r\n },\r\n });\r\n howOftenHowMuchTextInput.classList.add('howOftenHowMuchTextInput');\r\n howOftenHowMuchTextInput.addEventListener('input', e => {\r\n if (!howOftenHowMuchTextInput.classList.contains('disabled')) {\r\n saveUpdateData.howOftenText = e.target.value;\r\n\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n } else {\r\n howOftenHowMuchTextInput.classList.remove('error');\r\n }\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n }\r\n });\r\n if (saveUpdateData.howOftenFrequency !== '5') {\r\n const howOftenHowMuchTextInputField =\r\n howOftenHowMuchTextInput.querySelector('.input-field__input');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n howOftenHowMuchTextInputField.setAttribute('tabindex', '-1');\r\n }\r\n // Begin Date\r\n const beginDateInput = input.build({\r\n label: 'Begin Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: saveUpdateData.beginDate,\r\n callback: e => {\r\n saveUpdateData.beginDate = e.target.value;\r\n if (saveUpdateData.beginDate === '') {\r\n beginDateInput.classList.add('error');\r\n } else {\r\n beginDateInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // End Date\r\n const endDateInput = input.build({\r\n label: 'End Date',\r\n type: 'date',\r\n style: 'secondary',\r\n value: saveUpdateData.endDate,\r\n callback: e => {\r\n saveUpdateData.endDate = e.target.value;\r\n if (saveUpdateData.endDate === '') {\r\n endDateInput.classList.add('error');\r\n } else {\r\n endDateInput.classList.remove('error');\r\n }\r\n\r\n togglePaidSupportDoneBtn();\r\n },\r\n });\r\n // Buttons\r\n const doneBtn = button.build({\r\n text: isCopy ? 'Save Copy' : isNew ? 'Save' : 'Update',\r\n style: 'secondary',\r\n type: 'contained',\r\n classNames: 'doneBtn',\r\n callback: async () => {\r\n doneBtn.classList.add('disabled');\r\n\r\n if (isNew) {\r\n if (fromAssessment) {\r\n saveUpdateData.rowOrder = 0;\r\n planID = plan.getCurrentPlanId();\r\n } else {\r\n const rowOrder = table.getRowCount('paidSupportsTable');\r\n saveUpdateData.rowOrder = rowOrder + 1;\r\n }\r\n await insertPaidSupport(saveUpdateData, fromAssessment);\r\n } else {\r\n await updatePaidSupport(saveUpdateData);\r\n }\r\n\r\n const vendorIds = getSelectedVendorIds();\r\n\r\n doneBtn.classList.remove('disabled');\r\n POPUP.hide(paidSupportPopup);\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n\r\n let ISPValidation = await planValidation.ISPValidation(planID);\r\n planValidation.checkExperiencesAfterAddingNewPaidSupport(ISPValidation);\r\n planValidation.updatedIspOutcomesSetAlerts(ISPValidation);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n },\r\n });\r\n const cancelBtn = button.build({\r\n text: 'Cancel',\r\n style: 'secondary',\r\n type: 'outlined',\r\n callback: () => {\r\n POPUP.hide(paidSupportPopup);\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n },\r\n });\r\n const deleteBtn = button.build({\r\n text: 'Delete',\r\n style: 'danger',\r\n type: 'contained',\r\n callback: async () => {\r\n const message = 'Do you want to delete this Paid Support?';\r\n ISP.showDeleteWarning(paidSupportPopup, message, async () => {\r\n await deletePaidSupport(saveUpdateData.paidSupportsId);\r\n\r\n let ISPValidation = await planValidation.ISPValidation(planID);\r\n planValidation.checkExperiencesAfterAddingNewPaidSupport(ISPValidation);\r\n planValidation.updatedIspOutcomesSetAlerts(ISPValidation);\r\n\r\n let assessmentPlanValidation = await planValidation.getAssessmentValidation(planID);\r\n planValidation.servicesAndSupportsBtnCheck(assessmentPlanValidation);\r\n planValidation.updatedAssessmenteValidation(assessmentPlanValidation);\r\n });\r\n\r\n fundingSourceDropdownSelectedText = undefined;\r\n servicesDropdownSelectedText = undefined;\r\n servicesOtherDropdownSelectedText = undefined;\r\n providerDropdownSelectedText = undefined;\r\n\r\n hcbsSelected = undefined;\r\n saveUpdateProvider = '';\r\n },\r\n });\r\n const btnWrap = document.createElement('div');\r\n btnWrap.classList.add('btnWrap');\r\n btnWrap.appendChild(doneBtn);\r\n if (!isNew) btnWrap.appendChild(deleteBtn);\r\n btnWrap.appendChild(cancelBtn);\r\n\r\n // init required fields\r\n if (saveUpdateData.assessmentAreaId === '' || saveUpdateData.assessmentAreaId === '%') {\r\n assessmentAreaDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (\r\n (saveUpdateData.providerId === '' || saveUpdateData.providerId === '%') &&\r\n !providerNameDropdown.classList.contains('disabled')\r\n ) {\r\n providerNameDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.serviceNameId === '' || saveUpdateData.serviceNameId === '%') {\r\n serviceNameDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.serviceNameId !== '47') {\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n } else if (saveUpdateData.serviceNameOther === '' || saveUpdateData.serviceNameOther === '%') {\r\n serviceNameOtherDropdown.classList.add('error');\r\n }\r\n if (saveUpdateData.scopeOfService === '') {\r\n scopeOfserviceInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenValue === '') {\r\n howOftenHowMuchValueInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.howOftenFrequency === '' || saveUpdateData.howOftenFrequency === '%') {\r\n howOftenHowMuchFrequencyDropdown.classList.add('error');\r\n }\r\n if (saveUpdateData.howOftenFrequency === '5') {\r\n if (saveUpdateData.howOftenText === '') {\r\n howOftenHowMuchTextInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (saveUpdateData.beginDate === '') {\r\n beginDateInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.endDate === '') {\r\n endDateInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.fundingSource === '' || saveUpdateData.fundingSource === '%') {\r\n fundingSourceDropdown.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n if (saveUpdateData.fundingSource === '8') {\r\n fundingSourceInput.classList.remove('disabled');\r\n if (saveUpdateData.fundingSourceText === '') {\r\n fundingSourceInput.classList.add('error');\r\n hasInitialErros = true;\r\n }\r\n }\r\n if (hasInitialErros) {\r\n doneBtn.classList.add('disabled');\r\n }\r\n // end required fields\r\n\r\n if (isReadOnly) {\r\n assessmentAreaDropdown.classList.add('disabled');\r\n providerNameDropdown.classList.add('disabled');\r\n serviceNameDropdown.classList.add('disabled');\r\n serviceNameOtherDropdown.classList.add('disabled');\r\n scopeOfserviceInput.classList.add('disabled');\r\n howOftenHowMuchValueInput.classList.add('disabled');\r\n howOftenHowMuchFrequencyDropdown.classList.add('disabled');\r\n howOftenHowMuchTextInput.classList.add('disabled');\r\n beginDateInput.classList.add('disabled');\r\n endDateInput.classList.add('disabled');\r\n fundingSourceDropdown.classList.add('disabled');\r\n fundingSourceInput.classList.add('disabled');\r\n doneBtn.classList.add('disabled');\r\n deleteBtn.classList.add('disabled');\r\n } else {\r\n if (saveUpdateData.fundingSource === '8') {\r\n serviceNameDropdown.classList.add('disabled');\r\n }\r\n }\r\n\r\n // popup assemble!!\r\n const left = document.createElement('div');\r\n left.classList.add('left');\r\n left.appendChild(assessmentAreaDropdown);\r\n left.appendChild(fundingSourceDropdown);\r\n left.appendChild(fundingSourceInput);\r\n left.appendChild(serviceNameDropdown);\r\n left.appendChild(serviceNameOtherDropdown);\r\n left.appendChild(providerNameDropdown);\r\n const right = document.createElement('div');\r\n right.classList.add('right');\r\n right.appendChild(scopeOfserviceInput);\r\n right.appendChild(howOftenHowMuchValueInput);\r\n right.appendChild(howOftenHowMuchFrequencyDropdown);\r\n right.appendChild(howOftenHowMuchTextInput);\r\n right.appendChild(beginDateInput);\r\n right.appendChild(endDateInput);\r\n\r\n paidSupportPopup.appendChild(left);\r\n paidSupportPopup.appendChild(right);\r\n paidSupportPopup.appendChild(btnWrap);\r\n\r\n populateAssessmentAreaDropdown(assessmentAreaDropdown, saveUpdateData.assessmentAreaId);\r\n populateOtherServiceTypesDropdown(serviceNameOtherDropdown, saveUpdateData.serviceNameOther);\r\n populateHowOftenHowMuchFrequencyDropdown(\r\n howOftenHowMuchFrequencyDropdown,\r\n saveUpdateData.howOftenFrequency,\r\n );\r\n populateFundingSourceDropdown(fundingSourceDropdown, saveUpdateData.fundingSource);\r\n\r\n if (isNew && $.session.applicationName === 'Advisor') {\r\n populateServiceNameDropdown(serviceNameDropdown, '24', '4');\r\n\r\n fundingSourceDropdown.classList.remove('error');\r\n serviceNameDropdown.classList.remove('error');\r\n } else {\r\n populateServiceNameDropdown(\r\n serviceNameDropdown,\r\n saveUpdateData.serviceNameId,\r\n saveUpdateData.fundingSource,\r\n );\r\n }\r\n\r\n populateServiceVendorsDropdown(providerNameDropdown, saveUpdateData.providerId);\r\n if (saveUpdateProvider) {\r\n saveUpdateData.providerId = saveUpdateProvider;\r\n }\r\n\r\n // if fundingSourceDropdown is set to State Plan Services, then disable providerNameDropdown\r\n if (saveUpdateData.fundingSource === '5') {\r\n providerNameDropdown.querySelector('select').selectedIndex = -1;\r\n providerNameDropdown.classList.remove('error');\r\n providerNameDropdown.classList.add('disabled');\r\n }\r\n\r\n if (saveUpdateData && saveUpdateData.providerId === '') {\r\n fundingSourceDropdownSelectedText = '';\r\n servicesDropdownSelectedText = '';\r\n providerDropdownSelectedText = '';\r\n }\r\n\r\n POPUP.show(paidSupportPopup);\r\n DOM.autosizeTextarea();\r\n }\r\n function addPaidSupportRow() {\r\n showAddPaidSupportPopup({ popupData: {}, isNew: true, charLimits });\r\n }\r\n function getPaidSupportsMarkup() {\r\n const paidSupportsDiv = document.createElement('div');\r\n paidSupportsDiv.classList.add('ispPaidSupports');\r\n paidSupportsDiv.classList.add('ispServicesSection');\r\n\r\n paidSupportsTable = table.build({\r\n tableId: 'paidSupportsTable',\r\n headline: 'Paid Supports',\r\n columnHeadings: [\r\n 'Assessment Area',\r\n 'Funding Source',\r\n 'Service Name',\r\n 'Provider Name',\r\n 'Scope of Service/ What support looks like',\r\n 'How Often / How Much',\r\n 'Begin Date',\r\n 'End Date',\r\n ],\r\n sortable: isSortable,\r\n allowCopy: isReadOnly === true ? false : true,\r\n onSortCallback: async sortData => {\r\n const supportId = sortData.row.id.replace('ps', '');\r\n sortData.newIndex = sortData.newIndex + 1;\r\n sortData.oldIndex = sortData.oldIndex + 1;\r\n await servicesSupportsAjax.updatePaidSupportsRowOrder({\r\n token: $.session.Token,\r\n assessmentId: parseInt(planID),\r\n supportId: parseInt(supportId),\r\n newPos: parseInt(sortData.newIndex),\r\n oldPos: parseInt(sortData.oldIndex),\r\n });\r\n },\r\n });\r\n\r\n 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 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 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","//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 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 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})();","const cnProductivitySettings = (function() {\r\n //DATA\r\n let CN_PRODUCTIVITY_SETTINGS = {};\r\n let showHide\r\n //HTML ELEMENTS\r\n let showHideCheckBox;\r\n let daysBackInput;\r\n let productivityThresholdPercentage;\r\n let workHoursPerDay;\r\n let saveBtn;\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('1')\r\n showHide = widgetSettings.showHide\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_PRODUCTIVITY_SETTINGS = {\r\n productivityThreshold: 60,\r\n daysBack: 7,\r\n workHoursPerDay: 7\r\n };\r\n } else {\r\n CN_PRODUCTIVITY_SETTINGS = widgetSettings.widgetConfig\r\n }\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues()\r\n const configString = JSON.stringify(CN_PRODUCTIVITY_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(1, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n const newProductivity = parseInt(productivityThresholdPercentage.firstElementChild.value);\r\n const newWorkHours = parseFloat(workHoursPerDay.firstElementChild.value);\r\n if (newDaysBack >= 1 && newDaysBack <= 14) {\r\n CN_PRODUCTIVITY_SETTINGS.daysBack = newDaysBack\r\n }\r\n if (newProductivity >= 0 && newProductivity <= 100) {\r\n CN_PRODUCTIVITY_SETTINGS.productivityThreshold = newProductivity\r\n }\r\n if (newWorkHours >= 0.1 && newWorkHours <= 24) {\r\n CN_PRODUCTIVITY_SETTINGS.workHoursPerDay = newWorkHours\r\n }\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved'\r\n saveBtn.classList.add('saved')\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved')\r\n saveBtn.innerText = 'save'\r\n }, 1600)\r\n }\r\n\r\n function buildCNProductivity() {\r\n getSettings()\r\n\r\n const section = document.getElementById(\"CN_Productivity\");\r\n section.classList.add(\"cnProductivity\");\r\n const group1 = document.createElement(\"div\");\r\n group1.classList.add(\"group1\");\r\n const group2 = document.createElement(\"div\");\r\n group2.classList.add(\"group2\");\r\n const percentSymb = document.createElement(\"p\");\r\n percentSymb.innerText = \"%\";\r\n percentSymb.style.color = \"black\";\r\n percentSymb.style.position = \"absolute\";\r\n percentSymb.style.marginLeft = \"252px\";\r\n percentSymb.style.marginTop = \"-99px\";\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: \"Show\",\r\n className: \"showHide\",\r\n style: \"secondary\",\r\n isChecked: showHide === \"Y\" ? true : false\r\n });\r\n daysBackInput = input.build({\r\n id: \"cnProductivityDaysBack\",\r\n label: \"Days Back\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.daysBack,\r\n attributes: [\r\n { key: \"min\", value: \"1\" },\r\n { key: \"max\", value: \"14\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n productivityThresholdPercentage = input.build({\r\n id: \"productivityThresholdPercentage\",\r\n label: \"Productivity Threshold\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.productivityThreshold,\r\n attributes: [\r\n { key: \"min\", value: \"0\" },\r\n { key: \"max\", value: \"100\" },\r\n {\r\n key: \"onkeypress\",\r\n value: \"return event.charCode >= 48 && event.charCode <= 57\"\r\n }\r\n ]\r\n });\r\n workHoursPerDay = input.build({\r\n id: \"cnProductivityWorkHoursPerDay\",\r\n label: \"Work Hours/Day\",\r\n type: \"number\",\r\n style: \"secondary\",\r\n value: CN_PRODUCTIVITY_SETTINGS.workHoursPerDay,\r\n attributes: [\r\n { key: \"min\", value: \"1\" },\r\n { key: \"max\", value: \"24\" }\r\n ]\r\n });\r\n saveBtn = button.build({\r\n id: 'cnProductivitySave',\r\n text: \"Save\",\r\n type: \"contained\",\r\n style: \"secondary\",\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings\r\n })\r\n\r\n // display min a max of each input?\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n group1.appendChild(daysBackInput);\r\n group1.appendChild(workHoursPerDay);\r\n group2.appendChild(productivityThresholdPercentage);\r\n section.appendChild(group1);\r\n section.appendChild(group2);\r\n section.appendChild(saveBtn);\r\n section.appendChild(percentSymb);\r\n\r\n eventListeners();\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener(\"change\", event => {\r\n if (event.target.checked) {\r\n showHide = \"Y\"\r\n } else showHide = \"N\"\r\n });\r\n }\r\n\r\n return {\r\n buildCNProductivity,\r\n setSettings\r\n };\r\n})();\r\n","//Ajax call using ASYNC AWAIT\r\nconst cnProductivitySettingsAjax = (function() {\r\n //placeholder\r\n function getCaseNoteProductivitySettings() {\r\n data = {\r\n token: $.session.Token,\r\n daysBack: daysBack,\r\n }\r\n return $.ajax({\r\n type: 'POST',\r\n url:\r\n $.webServer.protocol + '://' +\r\n $.webServer.address + ':' +\r\n $.webServer.port + '/' +\r\n $.webServer.serviceName + '/ /',\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n dataType: 'json'\r\n });\r\n }\r\n \r\n return {\r\n getCaseNoteProductivitySettings\r\n };\r\n})()","//Widget ID = 3\r\n\r\nconst cnRejectedSettings = (function () {\r\n // Data\r\n let CN_REJECTED_SETTINGS;\r\n let showHide;\r\n // HTML\r\n let showHideCheckBox, daysBackInput, saveBtn;\r\n\r\n function getSettings() {\r\n let widgetSettings = dashboard.getWidgetSettings('3');\r\n showHide = widgetSettings.showHide;\r\n if (widgetSettings.widgetConfig === null) {\r\n CN_REJECTED_SETTINGS = {\r\n daysBack: 60,\r\n };\r\n } else {\r\n CN_REJECTED_SETTINGS = widgetSettings.widgetConfig;\r\n }\r\n }\r\n\r\n function buildCNRejectedSettings() {\r\n getSettings();\r\n\r\n const section = document.getElementById('CN_Rejected');\r\n section.classList.add('cnRejected');\r\n\r\n showHideCheckBox = input.buildCheckbox({\r\n text: 'Show',\r\n style: 'secondary',\r\n isChecked: showHide === 'Y' ? true : false,\r\n });\r\n showHideCheckBox.classList.add('settingsCheckBox');\r\n\r\n daysBackInput = input.build({\r\n id: 'cnRejectedDaysBack',\r\n label: 'Rejected Notes Days Back',\r\n type: 'number',\r\n style: 'secondary',\r\n value: CN_REJECTED_SETTINGS.daysBack,\r\n attributes: [\r\n { key: 'min', value: '1' },\r\n { key: 'max', value: '60' },\r\n {\r\n key: 'onkeypress',\r\n value: 'return event.charCode >= 48 && event.charCode <= 57',\r\n },\r\n ],\r\n });\r\n saveBtn = button.build({\r\n id: 'cnRejectedSave',\r\n text: 'Save',\r\n type: 'contained',\r\n style: 'secondary',\r\n classNames: ['widgetSettingsSaveBtn'],\r\n callback: setSettings,\r\n });\r\n\r\n if ($.session.CaseNotesView) section.appendChild(showHideCheckBox);\r\n section.appendChild(showHideCheckBox);\r\n section.appendChild(daysBackInput);\r\n\r\n section.appendChild(saveBtn);\r\n\r\n eventListeners();\r\n }\r\n\r\n async function setSettings() {\r\n getInputFieldValues();\r\n const configString = JSON.stringify(CN_REJECTED_SETTINGS);\r\n styleSaveBtnOnSave();\r\n await widgetSettingsAjax.setWidgetSettingConfig(3, configString, showHide);\r\n dashboard.refreshWidgetSettings();\r\n }\r\n\r\n function getInputFieldValues() {\r\n const newDaysBack = parseInt(daysBackInput.firstElementChild.value);\r\n\r\n if (newDaysBack >= 1 && newDaysBack <= 60) {\r\n CN_REJECTED_SETTINGS.daysBack = newDaysBack;\r\n }\r\n }\r\n\r\n function styleSaveBtnOnSave() {\r\n saveBtn.innerText = 'saved';\r\n saveBtn.classList.add('saved');\r\n setTimeout(() => {\r\n saveBtn.classList.remove('saved');\r\n saveBtn.innerText = 'save';\r\n }, 1600);\r\n }\r\n\r\n function eventListeners() {\r\n showHideCheckBox.addEventListener('change', event => {\r\n if (event.target.checked) {\r\n showHide = 'Y';\r\n } else showHide = 'N';\r\n });\r\n }\r\n\r\n return {\r\n buildCNRejectedSettings,\r\n };\r\n})();\r\n","//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})()","// var itConsumerSection = (function () {\r\n// // DOM\r\n// // ---------------------\r\n// var section;\r\n// var sectionBody;\r\n// var consumerError;\r\n// var consumersWrap;\r\n// var consumerSections;\r\n// // DATA\r\n// //---------------------\r\n// var activeConsumers = [];\r\n// var consumersInvolved;\r\n// var consumerInvolvedIdArray;\r\n// // Values\r\n// // ---------------------\r\n\r\n// function clearData() {\r\n// consumerFollowUp.clearData();\r\n// consumerInjuries.clearData();\r\n// consumerIntervention.clearData();\r\n// consumerInvolvement.clearData();\r\n// consumerReporting.clearData();\r\n// consumerReview.clearData();\r\n// // consumerBehavior.clearData();\r\n// activeConsumers = [];\r\n// }\r\n// function deleteConsumerData(consumerId) {\r\n// consumerFollowUp.deleteConsumerData(consumerId);\r\n// consumerInjuries.deleteConsumerData(consumerId);\r\n// consumerIntervention.deleteConsumerData(consumerId);\r\n// consumerInvolvement.deleteConsumerData(consumerId);\r\n// consumerReporting.deleteConsumerData(consumerId);\r\n// consumerReview.deleteConsumerData(consumerId);\r\n// // consumerBehavior.deleteConsumerData(consumerId);\r\n// }\r\n\r\n// function getConsumersInvolved() {\r\n// if (consumersInvolved) return [...consumersInvolved];\r\n// }\r\n// function getConsumersInvolvedIds() {\r\n// if (consumerInvolvedIdArray && consumerInvolvedIdArray.length > 0) {\r\n// return [...consumerInvolvedIdArray];\r\n// }\r\n// }\r\n\r\n// function showConsumersWrap() {\r\n// consumersWrap.classList.add('visible');\r\n// consumerSections.classList.remove('visible');\r\n// }\r\n// function displayCount() {\r\n// var count = activeConsumers.length;\r\n// var countHolder = section.querySelector('span[data-count=\"consumers\"]');\r\n// countHolder.innerHTML = `( ${count} )`;\r\n// }\r\n// function checkForRequiredConsumer() {\r\n// if (activeConsumers.length === 0) {\r\n// consumerError.classList.remove('hidden');\r\n// consumersWrap.classList.remove('visible');\r\n// consumerSections.classList.remove('visible');\r\n\r\n// incidentCard.toggleSave(true);\r\n// return;\r\n// }\r\n\r\n// consumerError.classList.add('hidden');\r\n// consumersWrap.classList.add('visible');\r\n// }\r\n// function removeConsumerErrors() {\r\n// var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n// consumerCards.forEach(card => card.classList.remove('error'));\r\n\r\n// var cardHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n// if (cardHasErrors) {\r\n// incidentCard.toggleSave(true);\r\n// } else {\r\n// incidentCard.toggleSave(false);\r\n// }\r\n// }\r\n// function showConsumerError(consumerIdArray) {\r\n// incidentCard.toggleSave(true);\r\n\r\n// var consumerCards = [].slice.call(consumersWrap.querySelectorAll('.consumerCard'));\r\n\r\n// if (consumerIdArray[0] === '%') {\r\n// // mark all\r\n// // show error \"At least one consumer must have PPI checked.\"\r\n// consumerCards.forEach(card => card.classList.add('error'));\r\n// return;\r\n// }\r\n\r\n// consumerCards.forEach(card => {\r\n// var cardId = card.dataset.consumerId;\r\n// if (consumerIdArray.includes(cardId)) {\r\n// card.classList.add('error');\r\n// } else {\r\n// card.classList.remove('error');\r\n// }\r\n// });\r\n// }\r\n\r\n// function moveConsumersToConsumersInvolved(consumers) {\r\n// var initPromises = [];\r\n\r\n// consumersWrap.classList.add('visible');\r\n\r\n// consumers.forEach(consumer => {\r\n// //If consumer is already on the selected consumer list ignore\r\n// if (activeConsumers.filter(actConsumer => actConsumer.id === consumer.id).length > 0) return;\r\n// consumer.card.classList.remove('highlighted');\r\n// var clone = consumer.card.cloneNode(true);\r\n// var card = buildConsumer(clone);\r\n// consumersWrap.appendChild(card);\r\n// var initPromise = consumerInvolvement.initConsumerData(consumer.id);\r\n// initPromises.push(initPromise);\r\n// });\r\n\r\n// activeConsumers = roster2.getActiveConsumers();\r\n// checkForRequiredConsumer();\r\n// displayCount();\r\n\r\n// Promise.all(initPromises).then(() => {\r\n// consumerInvolvement.checkRequiredFields();\r\n// });\r\n\r\n// // Event when you add a consumer\r\n// // 1. Ensure that all required fields are filled in on the details section\r\n// var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n\r\n// if (detailSectionHasErrors) {\r\n// incidentCard.toggleSave(true);\r\n// } else {\r\n// incidentCard.toggleSave(false);\r\n// }\r\n// }\r\n// function removeConsumerFromConsumersInvolved(selectedConsumerId) {\r\n// var consumerCard = document.querySelector(\r\n// `[data-consumer-id=\"${selectedConsumerId}\"]`,\r\n// ).parentElement;\r\n// consumersWrap.removeChild(consumerCard);\r\n\r\n// consumerSections.classList.remove('visible');\r\n\r\n// incidentCard.toggleActionBtns(false);\r\n\r\n// roster2.removeConsumerFromActiveConsumers(selectedConsumerId);\r\n// activeConsumers = roster2.getActiveConsumers();\r\n\r\n// deleteConsumerData(selectedConsumerId);\r\n\r\n// checkForRequiredConsumer();\r\n// consumerInvolvement.checkRequiredFields();\r\n// displayCount();\r\n// roster2.toggleMiniRosterBtnVisible(true);\r\n\r\n// // Event when you remove a consumer\r\n// // 1. Ensure that at least one consumer is selected\r\n// // 2. Ensure that all required fields are filled in on the details section\r\n// var detailSectionHasErrors = itDetailsSection.checkRequiredFields();\r\n// //var consumerSectionHasErrors = incidentCard.checkforRequiredConsumer();\r\n// // var consumerSectionConsumers = itConsumerSection.getConsumersInvolvedIds();\r\n\r\n// if (detailSectionHasErrors || activeConsumers.length === 0) {\r\n// incidentCard.toggleSave(true);\r\n// } else {\r\n// incidentCard.toggleSave(false);\r\n// }\r\n// }\r\n\r\n// // Populate\r\n// //-----------------------------------------------\r\n// function populateConsumersWrap() {\r\n// consumerInvolvedIdArray = [];\r\n\r\n// consumersInvolved.forEach(c => {\r\n// consumerInvolvedIdArray.push({ id: c.consumerId, involvedId: c.consumerInvolvedId });\r\n// // build consumer card\r\n// var consumer = roster2.buildConsumerCard({\r\n// FN: c.firstName,\r\n// LN: c.lastName,\r\n// id: c.consumerId,\r\n// });\r\n// // build incident card\r\n// var card = buildConsumer(consumer);\r\n// consumersWrap.appendChild(card);\r\n// // move consumer to avtive list\r\n// roster2.addConsumerToActiveConsumers(consumer);\r\n// });\r\n\r\n// activeConsumers = roster2.getActiveConsumers();\r\n\r\n// consumersWrap.classList.add('visible');\r\n\r\n// checkForRequiredConsumer();\r\n// consumerInvolvement.checkRequiredFields();\r\n// displayCount();\r\n// }\r\n\r\n// // Consumer Card\r\n// //-----------------------------------------------\r\n// function buildConsumer(consumerCard) {\r\n// function checkInvolvedRequirements() {\r\n// const locationId = consumerInvolvement.involvementDataLookup(\r\n// consumerCard.dataset.consumerId,\r\n// ).locationId;\r\n\r\n// const involvementSec = document.querySelector(\"[data-sectionid='4']\");\r\n\r\n// if (locationId === '' || consumerInvolvement.checkOneHasPPI() === false) {\r\n// involvementSec.classList.add('sectionError');\r\n// } else {\r\n// involvementSec.classList.remove('sectionError');\r\n// }\r\n// }\r\n\r\n// consumerCard.classList.remove('highlighted');\r\n\r\n// var cardWrap = document.createElement('div');\r\n// cardWrap.classList.add('incidentCard__consumer');\r\n\r\n// // build card\r\n// cardWrap.appendChild(consumerCard);\r\n\r\n// // card event\r\n// cardWrap.addEventListener('click', function (event) {\r\n// if (event.target === consumerCard) {\r\n// incidentCard.toggleActionBtns(true);\r\n// consumersWrap.classList.remove('visible');\r\n// consumerSections.classList.add('visible');\r\n// consumerSubSections.showMenu(consumerCard);\r\n// checkInvolvedRequirements();\r\n// if (document.querySelector('.consumerListBtn')) roster2.toggleMiniRosterBtnVisible(false);\r\n// }\r\n// });\r\n\r\n// return cardWrap;\r\n// }\r\n\r\n// // Section\r\n// //-----------------------------------------------\r\n// function buildSection(options, consumersInvolvedData) {\r\n// var opts = options;\r\n// consumersInvolved = consumersInvolvedData;\r\n\r\n// section = document.createElement('div');\r\n// section.classList.add('incidentSection', 'visible');\r\n// section.setAttribute('data-card-page', 'consumers');\r\n// section.setAttribute('data-page-num', opts.pageNumber);\r\n\r\n// var heading = document.createElement('div');\r\n// heading.classList.add('incidentSection__header');\r\n// heading.innerHTML = `

    Consumers Involved

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